{"version":3,"sources":["images/be_banner.png","redux/actions/app_actions.ts","utility/auth_security_types.ts","utility/auth_policy_validator.ts","utility/logger_utility.ts","utility/msal_wrapper.ts","utility/query_string_util.ts","containers/auth/external_login.tsx","utility/canvas_util.ts","containers/auth/external_login_complete.tsx","containers/auth/external_login_using_token.tsx","utility/palette.ts","components/common/base_dialog.tsx","utility/common_styles.ts","utility/company_utils.ts","utility/employee_utils.ts","utility/enrollment_utility.ts","utility/enrollment_utils.ts","utility/form_utils.tsx","utility/kaiser_utility.ts","components/common/icons/icon_question.tsx","components/common/wrapped_tool_tip.tsx","components/common/icons/icon_dental_loc.tsx","components/common/icons/icon_heart.tsx","components/common/icons/icon_life_loc.tsx","components/common/icons/icon_medical_loc.tsx","components/common/icons/icon_stdltd_loc.tsx","components/common/icons/icon_vision_loc.tsx","components/common/icons/icon_voluntary_loc.tsx","components/common/icons/icon_identity_protection.tsx","components/common/icons/icon_legal_protection.tsx","components/common/icons/icon_pet.tsx","utility/simple_utils.ts","utility/loc_utils.tsx","utility/form_normalization.ts","utility/masking_helper.tsx","utility/plan_eligibility_utils.ts","utility/generator_funcs.ts","utility/plan_setup_utils.ts","utility/question_utility.ts","utility/rate_type_utility.ts","utility/scroll_utility.ts","utility/session_utility.ts","utility/time_utils.ts","utility/lookup_utils.ts","utility/telemetry.tsx","containers/auth/login_complete.tsx","utility/form_validation.ts","redux/actions/auth_actions.ts","redux/actions/employee_actions.ts","containers/auth/logout_complete.tsx","components/common/system_errors_dialog.tsx","components/common/reduxform_fields.tsx","utility/date_picker_mask.ts","components/common/save_button.tsx","components/common/change_email_form.tsx","components/common/change_email_dialog.tsx","components/common/profile_menu.tsx","redux/actions/change_email_action.ts","components/common/base_page.tsx","containers/auth/persona_selection.tsx","containers/auth/renew_token.tsx","components/forms/add_employee_fields.tsx","components/forms/add_employer_fields.tsx","components/forms/add_user_form.tsx","containers/auth/signup.tsx","redux/actions/enrollment_actions.ts","containers/common/not_found.tsx","components/common/link.tsx","components/common/breadcrumb.tsx","containers/common/abandon_changes_dialogue.tsx","components/common/message_card.tsx","components/common/left_nav.tsx","components/common/title.tsx","components/forms/employee_class_assignment_field_array.tsx","components/forms/enrollment_classes_field_array.tsx","components/forms/class_upsert_form.tsx","utility/form_formatter.ts","components/forms/company_overview_form.tsx","components/forms/company_settings_form.tsx","redux/reducers/app_reducer.ts","redux/actions/cost_calculation_actions.ts","redux/reducers/cost_calculation_reducer.ts","redux/reducers/employee_reducer.ts","redux/reducers/enrollment_reducer.ts","redux/reducers/group_submission_reducer.ts","redux/reducers/census_import_reducer.ts","redux/reducers/lookup_reducer.ts","redux/reducers/plan_reducer.ts","redux/reducers/settings_reducer.ts","redux/reducers/zipcode_reducer.ts","containers/company_info/class_upsert.tsx","components/common/icons/icon_not_started.tsx","components/common/icons/icon_in_progress.tsx","components/common/election_status.tsx","components/common/table_row_hoc.tsx","components/employee/employee_row.tsx","components/enrollment/company_contact_associate.tsx","components/enrollment/company_contact_row.tsx","containers/employee_invitations/employee_invitation_row.tsx","containers/employee_invitations/employee_ineligible_row.tsx","components/forms/add_compay_contact_dialog_form.tsx","containers/enrollment_summary/enrollment_summary_row.tsx","components/common/delete_dialog.tsx","components/common/table.tsx","components/common/table_header.tsx","containers/company_info/company_contact.tsx","containers/company_info/company_overview.tsx","containers/company_info/company_settings.tsx","containers/company_info/company_info.tsx","components/enrollment/enrollment_status_counts.tsx","containers/enrollment_summary/enrollment_summary.tsx","components/common/file_upload_button.tsx","components/plan/delete_document_dialog.tsx","components/group_applications/kit_document_card.tsx","components/group_applications/kit_document_upload_dialogue.tsx","components/group_applications/group_applications_download_agreement_dialog.tsx","components/group_applications/kit_documents.tsx","components/group_applications/submission_documents_upsert.tsx","components/group_applications/group_documents_text.tsx","components/group_applications/kit_download_card.tsx","components/group_applications/kit_downloads.tsx","components/group_applications/enrollment_checklist.tsx","components/group_applications/reference_information_upsert.tsx","components/forms/add_signature_fields.tsx","components/forms/add_signature_form.tsx","components/common/wrapper_accordion.tsx","components/group_applications/add_agent_of_record_card.tsx","components/forms/writing_agent_fields.tsx","components/group_applications/add_writing_agent_card.tsx","components/forms/writing_agent_field_array.tsx","components/forms/agent_of_record_fields.tsx","components/forms/agent_of_record_field_array.tsx","components/forms/direct_to_carrier_address_fields.tsx","components/forms/direct_to_carrier_company_fields.tsx","components/forms/direct_to_carrier_dental_prior_coverage_fields.tsx","components/forms/direct_to_carrier_eligibility_fields.tsx","components/forms/direct_to_carrier_enrollment_fields.tsx","components/forms/direct_to_carrier_broker_fields.tsx","components/forms/direct_to_carrier_binder_fields.tsx","components/forms/direct_to_carrier_form.tsx","containers/group_applications/direct_to_carrier_documents.tsx","utility/setup_complete_styles.ts","components/forms/submit_to_carrier_acknowledgement_form.tsx","components/group_applications/submit_to_carrier_acknowledgement_dialog.tsx","components/enrollment/missing_document_dialog.tsx","containers/group_applications/direct_to_carrier_update.tsx","redux/actions/group_submission_actions.ts","components/common/icons/icon_document.tsx","components/common/icons/icon_download.tsx","components/group_applications/ega_card.tsx","components/group_applications/signature_status.tsx","containers/group_applications/signatures_add.tsx","containers/group_applications/direct_to_carrier_base.tsx","components/forms/direct_to_carrier_no_groups_form.tsx","containers/group_applications/direct_to_carrier_no_groups_update.tsx","components/forms/MetLawInfoCards.tsx","containers/group_applications/group_application_instruction.tsx","containers/group_applications/group_application.tsx","containers/kaiser/kaiser_response_handler.tsx","containers/landing_pages/employee_invitation_landing.tsx","utility/browser_utils.ts","components/common/dynamic_stepper.tsx","components/common/step_circle2.tsx","components/forms/census_import_save_template_dialog_form.tsx","components/forms/census_import_setup_form.tsx","components/forms/census_import_mapping_form.tsx","redux/actions/census_import_actions.ts","components/forms/census_import_review_form.tsx","components/plan/document_upload_dialogue.tsx","components/common/icons/icon_document_link.tsx","components/plan/plan_document_card.tsx","components/forms/census_import_upload_file_form.tsx","containers/census_import/census_import.tsx","utility/export_documents_utils.ts","components/forms/quick_add_employee_form.tsx","components/employee/add_employee_dialog.tsx","containers/company_dashboard/census_export_agreement_dialog.tsx","utility/renewal_import_utility.ts","containers/company_dashboard/census_status.tsx","components/enrollment/enrollment_statuses.tsx","components/enrollment/enrollment_submission_card.tsx","components/common/dashboard_generic_action_card.tsx","components/enrollment/group_applications_card.tsx","components/enrollment/set_enrollment_dates_dialog.tsx","components/enrollment/invite_employees_card.tsx","components/enrollment/resubmit_enrollment_dialog.tsx","components/enrollment/submit_enrollment_dialog.tsx","components/common/icons/icon_shield.tsx","components/enrollment/confirm_enrollment_setup.tsx","components/enrollment/carrier_enrollment_type_field_array.tsx","components/enrollment/carrier_enrollment_type_fields.tsx","components/enrollment/carrier_enrollment_type_form.tsx","components/enrollment/setup_complete_dialog.tsx","components/enrollment/rollback_enrollment_dialog.tsx","containers/company_dashboard/enrollment_setup.tsx","components/common/pending-tasks.tsx","components/enrollment/enrollment_info.tsx","containers/company_dashboard/enrollment_dashboard.tsx","containers/company_dashboard/BenefitMallBanner.tsx","containers/company_dashboard/company_dashboard.tsx","components/common/enrollment_invitation_form.tsx","components/common/email_template_dialog.tsx","components/common/enrollment_invitation_dialog.tsx","components/common/icons/icon_circle_number.tsx","components/employee/edit_email_address_field_array.tsx","components/employee/edit_email_address_fields.tsx","components/employee/edit_email_addresses_form.tsx","components/employee/edit_email_addresses_dialog.tsx","redux/actions/enrollment_notification_actions.ts","redux/reducers/enrollment_notification_reducer.ts","components/common/enrollment_end_date_reminders_dialog.tsx","containers/employee_invitations/employee_invitations.tsx","containers/group_applications/direct_to_carrier_error_list.tsx","components/group_applications/submit_separate_row.tsx","components/group_applications/submit_separate_table.tsx","components/group_applications/submit_benefitmall_row.tsx","components/group_applications/set_digital_sign_email_form.tsx","components/group_applications/set_digital_sign_email_dialog.tsx","components/group_applications/submit_benefitmall_table.tsx","containers/group_applications/group_application_list.tsx","components/common/AbandonChangesOption.tsx","utility/enrollment_summary_util.ts","components/common/election_cost_summary.tsx","components/common/icons/icon_print.tsx","components/employee/beneficiaries_table.tsx","components/forms/beneficiaries_form.tsx","components/forms/employee_additional_fields.tsx","components/forms/employee_medicare_fields.tsx","components/forms/renewal_members_field_array.tsx","components/forms/employee_additional_info_form.tsx","components/forms/employee_document_acknowledgment_fields.tsx","components/forms/employee_document_acknowledgment_form.tsx","components/employee/add_dependent_card.tsx","components/forms/renewal_questions_fields.tsx","components/forms/renewal_questions_form.tsx","components/forms/dependent_fields.tsx","components/forms/dependent_field_array.tsx","components/forms/cobra_fields.tsx","components/forms/contact_info_fields.tsx","components/forms/contact_info_field_array.tsx","components/forms/employee_identification_fields.tsx","components/forms/employment_fields.tsx","components/forms/enrollment_fields.tsx","components/forms/marital_partner_status_fields.tsx","components/forms/salary_fields.tsx","components/forms/employee_upsert_form.tsx","containers/guided_enrollment/beneficiaries_container.tsx","components/common/step_circle.tsx","components/forms/american_public_life_form.tsx","components/forms/basic_life_previous_amount_form.tsx","components/forms/existing_coverage_vision_field_array.tsx","components/forms/existing_coverage_base_fields.tsx","components/forms/add_existing_coverage_card.tsx","components/forms/existing_coverage_carrier_info.tsx","components/forms/existing_coverage_employment_information.tsx","components/forms/existing_coverage_enrollee_field_array.tsx","components/forms/existing_coverage_policy.tsx","components/forms/existing_coverage_prescription_information.tsx","components/forms/existing_coverage_fields.tsx","components/forms/existing_coverage_field_array.tsx","components/forms/existing_coverage_form.tsx","components/forms/subscriber_id_form.tsx","components/common/document_button.tsx","components/common/metal_rate_chip.tsx","components/common/radio_paper_hoc.tsx","components/common/benefit_amount_selector.tsx","components/plan/life_disability_election_card.tsx","components/common/docs_link.tsx","components/common/expandable_card.tsx","components/plan/plan_election_card.tsx","utility/auto_enrollment.tsx","utility/eligibility_utility.ts","components/common/icons/icon_crown.tsx","components/common/icons/icon_wedding_rings.tsx","components/common/enrollee_chip_toggle.tsx","components/plan/dependent_plan_election.tsx","components/plan/dependent_plan_coverage_election.tsx","components/plan/hsa_card.tsx","components/plan/renewal_questions_section.tsx","components/forms/add_primarycare_card.tsx","components/plan/primary_care_information.tsx","containers/guided_enrollment/plan_questions_form.tsx","containers/guided_enrollment/health_knockout_questions.tsx","containers/guided_enrollment/major_medical_coverage_questions.tsx","containers/guided_enrollment/medicare_questions.tsx","containers/guided_enrollment/plan_replacement_coverage_form.tsx","containers/guided_enrollment/replacement_coverage_questions.tsx","containers/guided_enrollment/specified_disease_questions.tsx","utility/calculation_utils.ts","components/forms/educationalInfoCards.tsx","containers/guided_enrollment/election_container.tsx","containers/guided_enrollment/employee_additional_information.tsx","containers/guided_enrollment/employee_document_acknowledgment.tsx","components/enrollment/marital_status_change_dialog.tsx","components/enrollment/employee_eligibility_change_dialog.tsx","containers/guided_enrollment/employee_upsert.tsx","components/common/rtp_content.tsx","components/common/icons/icon_reopen.tsx","components/employee/contact_info_card.tsx","components/employee/dependent_info.tsx","components/employee/employee_review_card.tsx","components/plan/plan_preview_dialogue.tsx","components/plan/plan_review_card.tsx","utility/external_script_loader.ts","containers/guided_enrollment/plan_selection_summary.tsx","containers/guided_enrollment/reopen-elections.tsx","containers/guided_enrollment/guided_enrollment.tsx","containers/home/home.tsx","containers/landing_pages/employee_landing.tsx","components/plan/plan_row.tsx","components/plan/delete_plan_dialog.tsx","components/plan/copy_plan_dialog.tsx","components/common/plan_table.tsx","components/forms/plan_search_form.tsx","hooks/use_carriers.ts","hooks/use_counties.ts","redux/actions/county_actions.ts","components/plan/plan_import_table.tsx","components/plan/plan_import_dialog.tsx","redux/actions/plan_actions.ts","containers/plan_list/plan_list.tsx","components/forms/age_restrictions_field_array.tsx","components/forms/auto_enroll_card.tsx","components/common/chip_toggle.tsx","components/forms/classes_fields.tsx","components/forms/linkedplan_field_array.tsx","components/forms/new_hire_waiting_period_fields.tsx","components/forms/participant_field_array.tsx","components/plan/plan_coverage_level_message.tsx","components/plan/plan_modification_message.tsx","components/forms/eligibility_upsert_form.tsx","components/forms/age_banded_table.tsx","components/forms/composite_rate_field_array.tsx","components/forms/flat_rate_field_array.tsx","components/forms/individual_rate_field_array.tsx","components/forms/rates_upsert_form.tsx","components/plan/plan_documents.tsx","components/common/two_label_toggle.tsx","components/plan/contribution_preview_row.tsx","components/plan/contribution_preview_table.tsx","components/plan/contribution_upsert_preview.tsx","components/plan/plan_contribution_info.tsx","components/plan/plan_contribution_dialog.tsx","components/forms/contribution_field_array.tsx","components/plan/plan_same_contribution_message.tsx","components/forms/contribution_upsert_form.tsx","components/forms/age_reduction_field_array.tsx","components/forms/age_reduction_fields.tsx","components/forms/pcp_fields.tsx","components/forms/plan_benefits_field_array.tsx","components/forms/plan_features_fields.tsx","components/forms/plan_life_insurance_fields.tsx","components/forms/plan_notes_fields.tsx","components/plan/add_carrier_dialog.tsx","components/forms/plan_overview_fields.tsx","components/plan/plan_waiverform_reminder_message.tsx","components/plan/effective_date_change_warning.tsx","components/plan/plan_cyberscout_election_message.tsx","components/forms/plan_upsert_form.tsx","containers/plan_setup/plan_upsert.tsx","containers/plan_setup/plan_setup.tsx","containers/auth/override_persona_form.tsx","containers/auth/override_persona.tsx","containers/renewal_import/renewal_import_download_template.tsx","components/common/document_card.tsx","containers/renewal_import/renewal_import_upload_file.tsx","containers/renewal_import/renewal_import_acknowledgement.tsx","containers/renewal_import/renewal_import_review.tsx","containers/renewal_import/renewal_import.tsx","router/routes.ts","utility/auth.ts","utility/http.ts","redux/actions/lookup_actions.ts","redux/actions/settings_actions.ts","redux/store.ts","components/common/scroll_to_top.tsx","containers/common/unauthorized_screen.tsx","containers/common/error_screen.tsx","containers/auth/auth_route.tsx","components/common/icons/icon_circle_priority.tsx","components/common/global_snackbar.tsx","containers/app/app.tsx","index.tsx","images/sign_app_RGB_2017.svg","images/be_logo.png","images/progress_bar.png"],"names":["module","exports","__webpack_require__","p","timeoutRef","acFactory","actionCreatorFactory","toggleSnackbar","displaySnackbar","message","variant","errors","_ref","Object","asyncToGenerator","regenerator_default","a","mark","_callee","dispatch","wrap","_context","prev","next","clearTimeout","open","setTimeout","stop","_x","apply","this","arguments","cleanMessage","replace","getErrorFromResponse","httpResponse","validationErrors","length","map","da","Array","isArray","data","responseMessage","statusCode","displaySnackbarWithErrors","ex","snackbarMessage","_ref2","_callee2","messages","_context2","_unused","_x2","storeSystemErrors","updateSystemErrors","_ref3","_callee3","_context3","_x3","securityPolicyTypes","EnrollmentSuperAdministration","EnrollmentAdministration","EnrollmentManagement","EnrollmentUser","enrollmentUserType","EnrollmentSuperAdmin","EnrollmentAdmin","EnrollmentManager","authPolicyValidator","AuthPolicyValidator","classCallCheck","permissionMap","assertEnrollmentUserPolicy","assertEnrollmentManagerPolicy","assertEnrollmentAdministrationPolicy","assertEnrollmentSuperAdministrationPolicy","decodedToken","userType","enrollment_user_type","enrollmentId","enrollment_id","undefined","policyName","assertion","blockName","securityType","mapSecurityToEnrollment","toUpperCase","employeeId","enrollment_employee_id","logger","isDebugEnabled","localStorage","getItem","_console","_len","optionalParams","_key","console","log","concat","_console2","_len2","_key2","_console3","_len3","_key3","MsalService","config","app","authCallback","errorDesc","token","error","tokenType","loggerCallback","logLevel","piiLoggingEnabled","objectSpread","popup","redirectUrl","window","location","href","navigateToLoginRequestUrl","authority","instance","tenant","policy","msalLogger","Msal","clientId","storeAuthStateInCookie","redirectUri","getFullUrl","validateAuthority","cacheLocation","postLogoutRedirectUri","createClass","key","value","_this","authenticated","then","isAuthenticated","getUser","queryParameters","loginPopup","loginRedirect","_this2","Promise","resolve","reject","acquireTokenSilent","scopes","catch","acquireTokenPopup","innererror","logout","_this3","idToken","_this4","getToken","url","test","origin","protocol","hostname","port","get","t","decodeComponent","require","splitOnFirst","string","separator","TypeError","separatorIndex","indexOf","slice","getExternalToken","getQueryVariable","getRedirectUrl","variable","query","search","substring","tokenIndex","decodeURIComponent","redirectIndex","encode","options","strict","encodeURIComponent","x","charCodeAt","toString","decode","parse","input","formatter","result","arrayFormat","accumulator","exec","newValue","split","parserForArrayFormat","assign","ret","create","trim","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","param","_splitOnFirst","_splitOnFirst2","slicedToArray","err","return","keys","sort","reduce","Boolean","keysSorter","b","Number","stringify","object","index","toConsumableArray","join","encoderForArrayFormat","filter","ExternalLogin","props","possibleConstructorReturn","getPrototypeOf","call","externalToken","queryStringUtil","auth","initiateExternalLogin","setState","loginComplete","showError","state","routes","path","react_default","createElement","style","textAlign","Fragment","React","PureComponent","canvasUtil","CanvasUtil","sfdcSdk","canvasTokenStroageKey","lastAdjustedHeight","_win","Sfdc","top","canvas","client","refreshSignedRequest","status","signedRequest","payload","response","Error","canvasToken","getCanvasSignedRequest","parseCanvasToken","part","JSON","process","getCanvasToken","redirectToUrl","targetOrigin","args","oeRedirectToClients","postMessage","appendRedirectLocation","oeRedirectUrl","oeScrollToTop","size","heights","contentHeight","isCanvas","setInterval","rootElement","document","getElementById","rootElementHeight","clientHeight","setHeight","Math","max","heightInPx","resize","height","sessionStorage","encodedJWT","setItem","ExternalLoginComplete","loginStates","loginStart","currentLoginState","handleIdpResponse","isLoggedIn","externalLoginRedirectUri","urlToRedirect","startCanvasLoginProcess","match","enrollmentIdVarName","externalLoginCheck","params","userTypeVarName","redirectToLogin","react_router","to","ExternalLoginCompleteUsingToken","clearSessionStorage","hash","jwt","isCanvasLogin","palette","grey","surface","light","medium","dark","snackbar","black","tableHeader","border","lightText","text","midText","darkText","selectedTab","darkGrey","label","blue","primary","900","700","500","300","100","submit","link","lighter","green","notification","orange","warning","red","gold","silver","bronze","platinum","BaseDialog","_this$props","_this$props$classes","classes","title","onClose","children","closeDisabled","subtext","dialogProps","objectWithoutProperties","Dialog","className","container","disableBackdropClick","disableEscapeKeyDown","DialogTitle","DialogContent","noBottomPadding","IconButton","closeButton","onClick","e","Close_default","scrollToCenter","styles","color","position","right","marginTop","marginRight","paddingBottom","minHeight","withStyles","baseStyles","padding","paddingTop","fontFamily","makeStyles","createStyles","tableTitle","fontSize","fontWeight","bottomMarginText","margin","carrierCol","carrierSpinner","left","centerWithinAnother","transform","centerText","companyPaperHeader","endAdornment","paddingRight","existingCoverageHeader","formControlRightMarginClear","guidedEnrollmentButtonDiv","guidedEnrollmentButtonMargin","guiedEnrollmentButtonMarginMobile","guidedEnrollmentCancelButtonMobile","header","headerText","helpIcon","width","marginLeft","innerPaper","inputAdornment","labelText","legendText","paper","paperLargerMargin","paperBottomMargin","marginBottom","priorHeader","removeDependentButton","relative","rightIndent","radioLabel","radioGroup","paddingLeft","radioInRow","display","sectionHeader","sectionSubheader","subheaderText","subHeading","subText","tooltipHeaderText","alignItems","tooltipRightMargin","vertCenter","warningIcon","warningIconSmall","warningText","fontStyle","width100","warningRenewalFirstText","warningRenewalSecondText","gridRowStyles","capitalize","textTransform","denseCellLable","hover","backgroundColor","cursor","maxWidth","maxWith150","minWidth20","minWidth","name","globalStyles","clearRightMargin","rightMargin","footer","letterSpacing","lineHeight","footerLink","PlanSelectionSummaryStyles","agreementText","agreementGrid","justifyContent","benefitCostHeader","card","cardHeader","cardContent","checkCircleIcon","costGridText","consentBorder","consentText","cursiveContainer","borderBottom","disabledConsentText","divider","employeeCost","employeeReminderText","employerCost","emptySignature","lowerBox","messageCard","terms","reopenIcon","reminderBorder","borderRadius","saveDisclaimer","signature","statusText","submitEnrollment","submitEnrollmentText","submitHeader","timeIcon","viewAgreement","waivedElectionsHeader","warningGrid","help","verticalAlign","messageIcon","missingDataWarning","missingDataError","messageText","PlanReviewCardStyles","button","cardHeaderWaived","editButton","editIcon","editText","effectiveDate","greyContent","greyContentBoth","headerContainer","headerContent","listIcon","noRate","paymentSummary","borderTop","planDisplayName","wordBreak","transparentText","wrapper","workFlowStyles","marginTop5","subTitle","navButtonsContainer","navButton","errorText","companySettings","memoizeOne","company","settings","viewEmployeeCost","viewEmployerCost","CARRIER_RENEWAL","true","notapplicable","notsure","DROPPED_ENROLLEE","false","PLAN_RENEWAL","CONFIGURATION_TYPE_IDS","disabled","mMedicare","priorCoverage","priorCoverageDental","priorCoverageMedical","tobacco","tobacco12Months","priorCoverageEmblemHealtj","priorCoverageFlorConfigurationTypeIdaBlue","student","tobaccoOver21","priorCoverageVision","priorCoverageCollectDependentsDental","priorCoverageCollectDependentsMedical","priorCoverageCarrierInfo","priorCoveragePolicyHolder","priorCoverageMedicalRX","priorCoverageEmployer","HeightAndWeightQuestions","priorCoverageCarefirstVADC","spouseSignatureRequired","preventCustomPlan","beneficiaries","subscriberMemberID","basicLifePreviousAmount","showKnockoutQuestions","maxAge70","americanPublicLifeBrochure","groupSubmissionInstructions","SignatureRequiredCityState","minMaxDefaultAge","preventSubmissionOnBehalfOfEmployee","RiderOptionWarning","adminContactRequired","existingMember","ratesAndBenefitsReadOnly","coverageApprovalWarning","sameContributionWarning","reviewCardWarning","madienName","marriageDate","childLastNameDifferentthanEmployee","displayOnWaive","waiverFormReminder","SubmitEnrollmentWaiverFormWitnessSignature","RenewalInfoPerLOC","RenewalInfoChanges","RenewalInfoWaive","EffectiveDateLessThan10Days","UseD2CCarrierJSON","DisplayWaiveAll","maxAge80","minAge18","mismatchSicCodeWarning","tobaccoExtraRates","AllowInEligibleEmployees","AdobeSignatureAdmin","IgnoreBenefitAmountForKnockout","CheckDependentTobaccoUse","TobaccoUseDropDown","EffectiveDateLessThan14Days","D2CCompanyInformationCompanyEstablishmentDate","D2CCompanyInformationCompanyType","D2CSignatureRequired","D2CDentalPriorCoverageFields","D2CAgentsOfRecord","D2CValidateEnrollmentRequired","D2CBenefitsAdministratorFirstName","D2CBenefitsAdministratorLastName","D2CBenefitsAdministratorEmail","D2CCompanyAddressEmail","D2CCompanyAddressPhone","D2CCoverageEligibilityStartOfCoverage","D2CCoverageEligibilityIneligiblePeriodLength","D2CCoverageEligibilityDomesticPartnershipEligible","D2CCoverageEligibilityDomesticPartnerChildEligible","D2CCoverageEligibilityStandAloneProducts","D2CCoverageEligibilityTurnoverRatio","D2CCoverageEligibilityCobraRequired","D2CCoverageEligibilityHasIncapacitatedMember","D2CCoverageEligibilityHasDisabledDependents","D2CBrokerInformationFirstName","D2CBrokerInformationLastName","D2CBrokerInformationNPN","D2CBinderInformationTotalInitialPayment","D2CBinderInformationNameonAccount","D2CBinderInformationCapturePaymentDetails","D2CEnrollmentInformationTotalEmployeeCountEnabled","DEPENDENT_TYPE_IDS","DomesticPartner","Spouse","Child","StepChild","FosterChild","Other","AdoptedChild","ChildInSuitForAdoption","Son","Daughter","StepSon","StepDaughter","GrandSon","GrandDaughter","_getIdsForEmployeesWithoutSalary","employeeState","list","emp","isEmployeeWaiving","isInEligible","isSalaryMissing","id","Zones","getIdsForEmployeesWithoutSalary","getEnrolleeConfigurationTypes","plans","elections","enrolleeConfigurationTypes","forEach","election","selectedPlan","find","plan","planId","selectedIds","configurationTypeIds","isEmployeeIncluded","enrolleeSet","Set","add","dependents","dependent","getStatusCounts","employees","statuses","completed","inProgress","notStarted","submitted","total","electionStatusId","getLookupId","LOOKUP_TYPE_IDS","electionStatus","getAcknowledgmentDocuments","employee","acknowledgmentTypeId","documentType","plansInElection","planAcknowledgmentDocuments","carrierCode","item","pos","linesOfCoverage","lineOfCoverageId","cur","documents","docs","typeId","acknowledgmentDocumentId","parseInt","documentTitle","documentUrl","storageUrl","description","fileId","from","d","aTitle","bTitle","localeCompare","isChildLastNameDiff","employeeLastName","childLastName","hasConfigurations","configurationTypes","configurationTypeSet","_loop","some","i","has","hasAdditionalInfo","tobaccoUse","isSpouseFound","ischildFound","isAnychildLastNameDiff","hasTobaccoConfigurations","showTobaccoInformation","hasSpouseConfiguration","hasChildConfiguration","hasOtherConfiguration","hasRenewalAdditionalInfo","hasPersonAdditionalInfo","getEnrollees","enrollees","push","isWaived","enrollmentHasTobaccoUser","enrolleesIds","enrollmentHasSpouse","isSpouse","enrollmentHasChild","enrollmentHasChildNameDifferent","lastName","hasEmployeesElectedAnyPlan","el","hasNoElectionStartedEmployeeExists","hasElectionStartedEmployeeExists","getDaysRemaining","enrollmentState","moment","endDate","endOf","diff","startOf","companyInfoCompleteCheck","enrollment","groupSize","ein","enrollmentRequiresAuthEmployer","missingAuthorizedSignatory","actionRequired","enrollmentHasAuthEmployer","companyContacts","contact","isAuthorizedSignatory","enrollmentRequiresAdobeSignAdmin","missingAdobeSignatory","hasOptedDigitalSignature","_isEndDateInFuture","exp","expirationStatus","endDateIsInFuture","_isUserReadOnly","zone","planEnrolledEmployeeCount","isConfirmed","setupCompletedOn","endDExist","isUserEnrollmentManager","CompanyAddContact","PlanDeleteSave","PlanEligibility","PlanEligibilitySave","PlanDetail","PlanRate","PlanContribution","endDateMoreThan60Days","isUserEmployee","isUserEmployer","PlanRateSave","PlanDetailSave","PlanContributionSave","PlanDocumentsSave","PlanDelete","isUserEnrollmentSuperAdmin","isExpired","submissionMore60Days","option","isUserReadOnly","isPlanReadOnly","configurations","PlanBenefits","readOnlyConfiguration","configuration","configurationTypeId","reason","additionalInfo","toLowerCase","_isEnrollmentLockedOut","isEnrollmentLockedOut","salariesRequiredSelector","ignoreEmployeeCheck","benefitAmountTypeId","benefitAmountType","plansWithMultipleSalary","getLOCcount","reducer","loc","sum","getKeyById","locCount","medicalCount","icon","locIconSelector","count","dentalCount","visionCount","lifeCount","disabilityCount","voluntaryCount","petInsuranceCount","identityProtectionCount","legalLocCount","gapLocCount","isEnrollmentSubmitted","expiredEnrollment","openEnrollmentExpired","completedStatusId","renewalSkippedCompletedStatusId","submittedStatusId","generateLabel","kaiserUtil","domain","kaiserWindow","addEventListener","event","close","accepted","opener","Question","SvgIcon","questionIcon","withWidth","content","mobile","Tooltip","placement","disableFocusListener","disableTouchListener","icon_question","DentalLOC","viewBox","Heart","LifeLOC","MedicalLOC","StdLtdLOC","VisionLOC","VoluntaryLOC","IdentityProtectionLocIcon","data-name","LegalLocIcon","PetLocIcon","simpleCompare","descending","valA","valB","descendingModifier","val","flattenObject","obj","preKey","nestedPreKey","every","MedicalLOCIcon","DentalLOCIcon","VisionLOCIcon","STD_LTD_LOCIcon","LifeLOCIcon","VoluntaryLOCIcon","GapLocIcon","getLOCicons","hasPlans","locIcons","type","hasChildLife","hasGroupLife","hasSuppLife","hasSpouseLife","hasSTDisability","hasLTDisability","isExcelFileType","fileType","isExcel","formatCurrency","number","multiplicator","pow","parseFloat","toFixed","round","getStepIcon","LocIcon","lineOfCoverage","wrapped_tool_tip","getPlanCardIcon","carrierLogo","Grid","xs","carrierLogoContainer","carrierLogoMobile","src","alt","locIcon","maxHeight","sortedLOCs","getLOCs","availableLOCs","allLOCs","tempList","l","order","hasSpouse","hasDependent","childTypes","getChildTypeSet","spouseTypes","getSpouseTypeSet","dep","dependentTypeId","isSpouseLife","isChildLife","normalizeNumber","normalizeDigits","normalizeSSN","normalizeZIP","normalizeEIN","normalizeHeightInches","inches","normalizeHeight","digits","convertToInteger","parsedDigits","convertToNumber","convertToString","convertToMoment","convertEmptyToZero","maskSSN","mask","parsedValue","maskValue","substr","getEffectiveDateForEmployee","hireDate","planEffectiveDate","utc","local","format","eligibleDate","clone","immediate","firstOfTheMonthAfterDateOfHire","firstOfTheMonthAfterNumberOfDays","numberOfDaysAfterDateOfHire","waitingPeriodTypeId","now","firstOfNextMonth1","year","month","isAfter","waitingPeriod","firstOfNextMonth2","generateAgeRanges","ageCutoff","ranges","minAge","maxAge","age","mergeInputRatesMapCallback","inputRates","generatedRate","r","inputRate","getRateKey","rate","rateTypeId","coverageLevelId","memberLevelId","rangeMatchesRate","rangeMatchesCutoffRate","rateMatches","generateDefaultAgeBandedRates","ageBandedRateTypeId","planRateType","range","generateDefaultAgeBandedTiersRates","participants","ageBandedTiersRateTypeId","getCoverageLevels","coverageLevel","generateDefaultAgeBandedIndividualRates","ageBandedIndividualRateTypeId","getAllowedMemberLevelsForParticipants","generateDefaultCoverageLevelRates","compositeRateTypeId","lookup","matchingRate","employeeParticipantId","participationOptions","spouseParticipantArray","childParticipantId","includeEmployeeRates","participantTypeId","isAllowed","includeSpouseRates","includes","includeChildRates","EE","memberLevel","ES","EC","generateDefaultIndividualRates","individualRateTypeId","getDefaultRateTypeId","locId","flatRateTypeId","planRates","getRateTypes","getDefaultContributionLevelId","getDisabilityLOCS","getLifeLOCS","contributionLevel","generateContributionList","contributionLevelId","contributionModelType","memberLevelContributionId","memberLevelContributionTotalDependentsTypeId","coverageLevelContributionId","basePlanContributionLevelId","employeeOnly","memberLevelContributionsByTotalDependents","totalDependents","participantAllowsEmployee","participantAllowsSpouse","participantAllowsChild","contributionModelTypeId","contributions","memberLevelTotalDependentsId","generateParticipantsList","spouseId","domPartnerId","childId","medicalId","dentalId","visionId","childLifeId","spouseLifeId","accident","hospital","critical","identity","gaploc","getParticipationOptions","plansSetupCompleteCheck","plansAreChecked","plansCheck","companyIsCheck","companyInfoCheck","plansRatesCheck","ratesCheck","confirmEnrollmentCheck","missingInfoCheck","plansLevelFundedRatesCheck","lfPlans","levelFundedPlan","ratesUpdated","checks","planSetupCompleteCheck","planExistenceCheck","check","planRatesCheck","planBenefitsCheck","planValidDatesCheck","rates","amount","femaleAmount","maleAmount","benefitAmountLOCs","getBenefitAmountLOCs","benefitAmount","isBefore","filterCarriers","baseLocId","carriers","allowCustomPlans","showNonCustomPlanCarriers","otherCarrierName","isLocVoluntary","isVoluntaryLOCOrBaseLOC","_carriers","_customPlanIsAllowed","_otherCarrierName","voluntaryPlan","c","carrierName","customPlanAllowed","IsCustomCarrierPlanExist","isCustom","IsCustomCarrierPlan","getCarrierConfigurations","carrierConfigurations","len","findIndex","getCarrierConfigConfigurationTypes","filteredCarriers","showMetLifeWarning","getLookupValue","showCarrierWarningSubmission","specificCarrier","getAnswers","planQuestionAnswers","question","parentQuestionId","questionId","questionKey","questionText","questionTypeId","answers","questionFlattener","questionArray","selectedMemberLevels","savedAnswers","isChild","flattenedQuestionAnswers","savedQuestion","qa","answer","hasChildren","childQuestions","isChildQuestion","inputType","memberLevelIds","memberId","res","charAt","getRateTypeFromId","rateType","scrollUtility","scrollTo","scrollToTop","sessionUtility","lastActivityTime","sessionExpireCountDown","sessionWarningCountDown","onWarningCallBack","onExpireCallBack","refreshTokenTimeoutId","isUserActive","onExpire","onWarning","setLastActivityTime","trackSession","http","method","body","signedToken","refreshCanvasToken","refreshToken","num","per","floor","tokenExpire","unix","decodedJWT","lastActivityDuration","duration","asMinutes","notBefore","nbf","totalTime","getPercentage","clearOldTimeouts","sessionExpireDuration","asMilliseconds","logOut","sessionWarningDuration","sessionWarningDurationInMin","clearInterval","decodedMsalJWT","daysText","days","durationInDays","inputDate","today","asDays","calculateTimeFrame","startDate","currentDt","start","end","startDays","endDays","startText","endText","calculateEnrollmentTimeframe","shortHand","enrollmentTime","startDateElement","endDateElement","enrollmentStartDaysElement","enrollmentEndDaysElement","headline","calculateAge","birthday","parsedDOB","years","date","planType","carrier","planBenefit","enrollmentStatus","gender","maritalStatus","employmentStatus","payrollCycle","dependentType","waivedReason","metalLevel","cobraEvent","autoEnrollment","phoneNumberType","baseLineOfCoverage","roundingMethod","contactMethod","continuationMonths","studentStatus","medicareEligibilityStatus","relationshipToPolicyHolder","payouts","beneficiaryType","invitationStatus","existingCoverageType","workStatusType","employerType","agencyType","startOfCoverage","enrollmentType","enrollmentSubmissionType","questionType","hsaContributionMode","enrolleeType","companyType","companyMarketSegmentCode","turnOverRatio","groupApplicationSubmissionStatus","beneficiaryRelationship","dependentRelationship","planFundingType","AUTOENROLLMENT_TYPE_IDS","employeesOnly","employeesAndDependents","USER_TYPE_IDS","ENROLLMENT_SUBMISSION_MECHANISMS","eBN","autoGen","directToCarrier","directToCarrierNoGroupApp","exportOnly","filterOnType","values","parentId","returnLookup","parentIds","filterOnMultiType","typeId2","typeId3","getLookups","store","getState","keyValue","lookupTypeId","idFound","valueFound","_getById","getById","_getKeyById","_getAdditionalDataById","additionalDataJson","getAdditionalDataById","_getPlanFundingType","_getLOCs","lookupValues","_getWaitingPeriods","getWaitingPeriodsById","wait","waitingPeriodTypeName","_getBaseLOCs","getBaseLOCs","_getLOCsByBaseLOCKey","baseLOCKey","filterOnParent","getLOCsByBaseLOC","getBaseLOCforLOC","LOCId","_getPlanTypes","getPlanTypes","_getStates","getStates","_getPlanBenefits","getPlanBenefits","_getGenders","getGenders","_getTobaccoUse","getTobaccoUse","_getMaritalStatus","_getStudentStatus","_getMedicareEligibilityStatus","_getContactMethods","_getEmploymentStatus","getEmploymentStatus","_getIneligibleEmploymentStatus","_getWorkStatus","isEmployeeCobra","employmentStatusId","statusLookup","cobraStatus","lookupValue","_getPayrollCycles","getPayrollCycles","_getDependentTypes","getDependentTypes","_getDependentRelationship","getDependentRelationship","_getBeneficiaryRelationship","isAllstateOffered","checkForExistingCoverageEnforce","selectedWaiverReason","_getWaivedReasons","getWaivedReasons","_getMetalLevels","_getCobraEvents","_getRateTypes","parentLOC","_getContinuationMonths","_getCoverageLevels","_getParticipationOptions","_getMemberLevel","getMemberLevel","_getBenefitAmountType","_getRoundingMethod","_getEmployerTypes","_getCompanyTypeTypes","_getAgencyTypes","getAgencyTypes","_getStartOfCoverage","_getEnrollmentTypes","annualPayrollCycles","144","145","146","147","148","149","150","151","_getAutoEnrollments","getAutoEnrollments","getSpouseDependentTypes","pId","getChildDependentTypes","getBasicAndSupplementalLifeLOC","lifeLOCS","basicLifeId","supplementalLifeId","_isLineOfCoverageOfBase","baseName","isDisabilityLOC","isLifeLOC","voluntaryLOCOrBaseKeys","isVoluntaryLOC","isElectiveVoluntaryLOC","isDental","isCriticalLOC","isHMO","planTypeId","_getRelationshipsToPolicyHolder","getRelationshipsToPolicyHolder","_isLocTypeByKey","isPet","isLegal","isIdentity","isBasicLife","isSuppLife","isLTD","isSTD","isGAP","_getBeneficiaryTypes","_getExistingCoverageType","getExistingCoverageTypes","telemetryService","TelemetryService","instrumentationKey","appInsights","ApplicationInsights","disableFetchTracking","disableAjaxTracking","enableAutoRouteTracking","loadAppInsights","addTelemetryInitializer","envelope","tags","ai.cloud.role","trackEvent","trackDependencyData","pageName","trackPageView","trackException","userId","setAuthenticatedUserContext","TelemetryProvider","withContext","PropTypes","any","withTelemetry","getContext","LoginComplete","showPasswordResetConfirmationDialog","originalAuthPolicy","handleTokenTransformation","removeJwt","fetchTransformToken","redirectInProgress","handlePostLogin","show","getEnrollmentId","fetchEnrollment","enrollmentDto","contactInfo","contactInformation","stateName","stateId","createUserInfoGtag","getCompanyId","homePages","1","getEmployeeHomePageUrl","2","getEmployerHomePageUrl","3","handleLogin","isPasswordResetFlowStarted","forgotPassword","isPasswordResetFlowCanceled","loginUser","isPasswordResetFlowComplete","isMsalLoggedIn","tagManagerArgs","dataLayer","market","TagManager","updatedInfo","email","unique_name","goToUserHomePage","isFirstTimeLogin","updateEmployeeEmail","redirectHandler","companyId","_routes$employeeLandi","employeeLanding","_routes$companyDashbo","companyDashboard","renderLoggedInView","base_dialog","DialogActions","Button","renderErrorView","compose","connect","abrupt","transformToken","_x4","_callee6","_context6","LogoutComplete","home","errorDetail","errorDetailItem","errorHeading","_props$classes","rootContent","DialogContentText","Typography","required","matchAttr","allValues","requiredForSubmission","requiredForGroupSubmission","password","characterLimit","limit","formData","reduceValidation","phone","ssn","zip","nullOrPositiveNumber","positiveNumber","nonNegativeNumber","nonNegativeInteger","nonNegativeIntegerRounding","validPercentage","greaterThanZeroPercentage","validDate","isValid","validPastDate","parsedDate","validateEffectiveDate","allProps","valueToMoment","validAdultAge","subtract","validSpouseAge","ageToCheck","validateIfNotReducedWithMessage","TextFieldWarn","warnColor","warnOutline","borderColor","touched","visited","helperText","alwaysShowValidation","_props$labelProps","labelProps","InputProps","showValidation","errorFlagToUse","helperTextToUse","inputLabelProps","inputProps","helperTextProps","notchedOutline","shrink","focused","TextField","InputLabelProps","FormHelperTextProps","TextFormField","meta","_props$alwaysShowVali","SSNTextFormField","memo","_props$alwaysShowVali2","_React$useState","useState","_React$useState2","setFocused","useCallback","fields","onFocus","onBlur","valueToUse","asyncValidating","CircularProgress","thickness","loadingSpinner","DatePickerField","_props$alwaysShowVali3","warnTheme","defaultTheme","main","overrides","MuiOutlinedInput","adornedEnd","themeToUse","onOpen","MuiThemeProvider","theme","DatePicker","placeholder","minDate","invalidLabel","onChange","inputRef","select","inputVariant","CheckboxField","FormControlLabel","control","Checkbox","checked","SwitchField","Switch","RadioControlGroupField","radioName","compact","row","FormControl","component","FormLabel","RadioGroup","saveButton","saveSpinner","SaveButton","loading","trulyDisabled","requiredEmail","characterLimit100","form","contentText","reduxForm","onSubmit","handleSubmit","Field","fullWidth","validate","autoFocus","onCancel","save_button","invalid","pristine","submitting","ChangeEmailDialog","initialValues","getUserName","change_email_form","onDone","ProfileMenu","anchorEl","openChangeEmailDialog","handleClose","handleCancelChangeEmail","handleLogout","handleChangePassword","handleOnChangeEmailComplete","changedEmailRequest","toLocaleLowerCase","changeEmailAddress","currentTarget","aria-owns","aria-haspopup","handleClick","AccountCircle_default","Menu","bind","MenuItem","change_email_dialog","Component","changedEmail","sent","t0","employeeHelpLink","setting","helpIconUrl","systemErrors","ownProps","_maxWidth","bar","toolbarLogo","toolbarRight","flexGrow","spacing","searchInput","menuButton","canvasPadding","defineProperty","breakpoints","up","lg","_clsx","currentYear","Date","getFullYear","contentClass","clsx","AppBar","Toolbar","be_logo","target","rel","Help_default","profile_menu","Divider","system_errors_dialog","PersonaSelection","authOn","authenticating","authOff","goToEmployeeLogin","loginEmployee","goToOverrideLogin","loginOverride","goToEmployeeOverrideLogin","loginEmployeeOverride","redirectURL","base_page","Paper","RenewToken","statusMessage","validateFirstName","validateLastName","validateGender","validateDOB","validatePassword","validateConfirmPassword","nativeSelect","native","confirmPasswordValidationArray","passwordValidationArray","validateCaptcha","dummyCaptchaComponent","infoText","AddEmployeeFields","recaptchaInstance","useRef","useEffect","resetCaptcha","current","reset","md","warn","disableFuture","normalize","SelectProps","lib_es","sitekey","recaptchaKey","changeCaptcha","ref","errorMessage","fieldsDisabled","AddEmployerFields","background","backgroundImage","bottom","backgroundSize","backgroundAttachment","flexCenter","brStyle","helpText","image","cancelButton","buttonGroup","sm","Card","elevation","CardHeader","CardMedia","CardContent","isEmployer","add_employer_fields","change","formName","add_employee_fields","CardActions","storeEmployees","fetchEmployees","removeEmployee","storeEmployee","fetchEmployee","fetchEmployeeInfoStatus","addEmployee","_ref4","_callee4","_context4","updateEmployee","_ref5","_callee5","_context5","_x5","addEmployeeWToken","employeeUser","_ref9","_callee9","_context9","failureReason","_x8","storePersonalInfoStatus","storeAdditionalInfoStatus","storeLoCList","_ref11","_callee11","_context11","personalInfoStatus","personalInfoSuccess","additionalInfoStatus","additionalInfoSuccess","failedLoCIds","_x10","storeElection","reOpenEmployeeEnrollment","_ref16","_callee16","_context16","_x17","storeBeneficiaries","removeBeneficiary","SignUp","isEmployerSignUp","isEmployeeSignUp","isEmployeeWithToken","firstName","determineLogin","goToEmployerLogin","loginEmployer","formValues","_qs$parse","sig","newEmployerUser","newEmployeeUser","_newEmployeeUser","qs","tokenNotBefore","tokenExpires","tokenSignature","captchaToken","addEmployerUser","dateOfBirth","genderId","addEmployeeUser","addEmployeeWithToken","handleResponse","backToLogin","_qs$parse2","fn","ln","eId","pathname","getSignUpTokenAndStartSignUpEmployee","getSignUpTokenAndStartSignUpEmployer","getSignUpTokenAndStartSignUpEmployeeWithToken","showTokenError","progressMessage","showEnrollmentError","enrollmentExists","fetchSignUpToken","_qs$parse3","verifyEmployerToken","_qs$parse4","add_user_form","signUpToken","_x19","_ref8","_callee8","_context8","_x7","employerUser","_ref10","_callee10","_context10","_x9","employeeWithToken","expires","_x6","robbotoFont","fourFour","ohNo","pageText","numbers","numberText","dashboardButton","dashboardText","isBroker","isRedirecting","setIsRedirecting","decodedUrl","decodeURI","properties","history","Link","doNothing","handleMouseHover","isHovering","handleMouseLeave","linkDisable","linkHover","onMouseEnter","onMouseLeave","textDecoration","Breadcrumb","pages","items","ChevronRight_default","common_link","handlePageChange","breadcrumbItem","AbandonChangesDialog","cancelAndContinue","updateSavingStatus","onContinue","saveAndContinue","saveAndContinueClicked","submitForm","prevProps","prevState","isSubmitting","shouldOpen","checkForm","isDirty","hasSubmitSucceeded","locationLabel","MessageCardLevel","formLevelWarning","LeftNav","List","optionsArray","tab","ListItem","listItem","currentTab","currentListItem","handleChange","Info_default","Warning_default","abandon_changes_dialogue","onAbandonChangesCancel","onAbandonChangesContinue","borderRight","borderRightStyle","borderRightColor","root","secondary","tertiary","MessageCard","hideRibbon","greyBackground","messageLevel","information","infoRibbon","alert","alertRibbon","warningRibbon","MessageCardRibbon","ribbon","cardContentBorder","hideIcon","iconGrid","infoIcon","alertIcon","MessageCardIcon","textGrid","subtitle","defaultProps","borderLeft","borderBottomLeftRadius","borderBottomRightRadius","borderStyle","EmployeeClassAssignmentFieldArray","Table","TableHead","TableRow","TableCell","TableBody","fieldData","hasElectionStartedForEmployee","fullName","selectedInClassName","characterLimit200","EnrollmentClassesFieldArray","startEmployeeAssignment","indexBeingEdit","fieldNameBeingEdit","aClass","bClass","_class","sortedEmployees","cachedClass","dialogOpen","cancelEmployeeAssignment","saveEmployeeAssignment","updatedClasses","editClass","defaultEmployees","selected","selectedInClassId","classData","updatedClass","isSelected","addNewClass","someClass","removeClass","indexToRemove","classToRemove","inRemovedClass","deleteDialogOpen","openDeleteModal","closeDeleteModal","isSubmitted","electionStartedEmployeeExists","_this$state","classMsg","message_card","FieldArray","Selected","_this$state2","confirmDeletion","_this$props2","formInvalid","formDirty","validateRequired","validateUniqueName","Assigned","Delete_default","addButton","Add_default","renderDialog","renderDeleteDialog","assigned","dialogBottomText","acc","commonFormStyles","buttonDiv","info","moveUp","disable","toolTipDiv","alignContent","dirty","formatFullName","fName","lName","firstNameLength","lastNameLength","formatPhone","onlyNums","formatZip","previousValue","formatEIN","formatSSN","formatMoney","toLocaleString","formatAmount","factor","char","abs","sign","formatCurrencyWithShortName","absValue","CompanyOverviewForm","touch","fieldRequired","useMemo","warnReduced","fieldRequiredIfNotReduced","characterLimit50","einValidator","phoneValidator","zipValidator","payPeriodOptions","stateOptions","isUserSuperAdmin","CompanySettingsForm","SnackbarStatePropType","isRequired","initialState","storeCostCalculations","calculateCosts","calculationRequest","costCalculations","generateRequestFromStoreValues","reCalculateCosts","calcRequestModal","translateDependentType","spouseTypeIds","childTypeIds","CalcDependentType","partner","child","CalcBaseLineOfCoverage","CalcBenefitAmountType","CalcBenefitPayoutFrequency","CalcContributionLevel","CalcContributionModelType","CalcCoverageLevel","CalcLineOfCoverage","CalcMemberLevel","CalcMemberLevelTotalDependents","CalcPayrollCycle","CalcRateType","CalcRoundingPreference","getCalcPlanMapper","toCalcPlan","linkedPlanEntry","linkedPlans","linkType","LinkedPlanType","benefit","linkedPlanId","linkedPlan","linkedBasePlan","contributionBase","basePlan","checkForDependentTobaccoUse","contribution","memberLevelTotalDependents","maxAmount","tobaccoAmount","maleTobaccoAmount","femaleTobaccoAmount","benefitInfo","generateBenefitInfo","baseContributionPlan","useEmployeeAge","getCalcEmployeeBenefitAmountOverride","lifebenefitAmount","calcEmployeeBenefitAmountOverrides","newCalcBenefitAmountOverride","lifeBenefitOverrideAmount","reduxState","emd","enrolledLOCs","enrolledLinesOfCoverage","payrollCycleId","companyState","annualSalary","benefitAmountOverrides","buildCalculationRequest","planState","getRequestFromStore","benefitAmountCostUnit","costPerUnit","benefitAmountMinimum","minimumBenefit","benefitAmountMaximum","maximumBenefit","benefitAmountGuaranteedIssue","guaranteedIssueAmount","isBenefitAmountRatingTypeCoveredPayroll","roundingPreference","benefitRoundingTypeId","roundingInterval","benefitRoundingInterval","benefitPayoutFrequency","payoutId","benefitFlatAmount","flatAmount","increment","benefitAmountSalaryMultiplier","multipleOfSalary","benefitAmountLinkedBenefitPercent","linkedAmount","linkedPlanBenefitInfo","ageReductions","ageReduction","reductionPercent","AddressType","EnrolleeCostPropType","enrolleeId","totalCost","CostCalculationPropType","success","errorMessages","enrolleeCosts","ObjectState","ContactInfoPropType","streetAddress1","streetAddress2","city","county","zipCode","addressType","CoverageLevelPropType","waiverTypeId","AdditionalInfoPropTypes","disability","incapacitated","tobaccoUsedNicotine","tobaccoUsedeCigarette","tobacco21UsedTobacco","heightFeet","heightInches","weight","schoolId","schoolName","isMedicareEligible","medicareEligibility","medicarePartAEnrolled","medicarePartAIneligible","medicarePartBEnrolled","medicarePartBIneligible","medicarePartDEnrolled","medicarePartDIneligible","coordinationPeriod","disabledCurrentlyAtWork","disabilityCurrentRenalDisease","socialSecurityDisabilityInsurance","partAMedicareId","partBMedicareId","partDMedicareId","partDCarrier","eSRDOnsetDate","sSDIEffectiveDate","partAEffectiveDate","partBEffectiveDate","partDEffectiveDate","isExistingMember","PrimaryCarePropType","doctorId","doctorName","doctorZipCode","isExistingPatient","assignDoctor","viewId","isEmployee","DependentsPropType","maidenName","sameAdress","objectState","isFosterChildPlaced","isPartnerEmployedAtSameCompany","addressSameAsEmployee","differentLastNameReason","ElectionDependentPropType","waivedReasonId","PolicyHolderPropType","existingPolicyHolder","address","retirementDate","coverageUnderCobra","PolicyEnrolleePropType","PolicyPropType","floridaBlueCoverage","emblemHealthcareCoverage","policyHolder","existingCoverageEffectiveDate","existingCoverageEndDate","groupNumber","policyNumberIdNumber","typeOfCoverage","priorCoverageType","existingCoveragePayerName","rxPolicyNumber","rxMedicareId","existingCoverageCancellationDate","coverageThroughEmployer","employerName","employmentDate","priorEmployerEmploymentDate","ExistingCoveragePropType","electionCoveredByEffectiveDate","existingRxCoverage","dentalCoveredLastYear","dentalCoveredByEmployerBefore","dentalPriorOrthodontia","visionExistingCoverage","policies","RenewalPropType","carrierRenewal","pastCarrierName","planRenewal","pastPlanName","isDroppedEnrollee","CurrentEnrolleesPropType","DroppedEnrolleesPropType","RenewalInfoPropType","renewal","currentEnrollees","droppedEnrollees","ElectionAdditionalInfoPropType","subscriberId","isAmericanPublicLife","AnswerPropType","QuestionAnswerPropType","ElectionPropType","existingCoverage","questionAnswers","primaryCares","renewalInfo","BeneficiaryPropType","beneficiaryTypeId","benefitPercentage","AcknowledgedDocumentsPropType","documentLink","acknowledgedDocumentId","isAcknowledged","documentFileId","EmployeeStatusPropType","additionalInfoComplete","personalInfoComplete","RenewalChangePropType","personalInfoChanged","nameChange","contactChange","addressChange","EmployeePropType","maritalStatusId","isPartnershipRegistered","coverageLevels","jobTitle","weeklyHours","isUSCitizen","electionCompletedDate","hsaContribution","kaiserAgreementAccepted","employeeSignature","cobraEventId","cobraEventDate","cobraBeginDate","cobraEndDate","cobraLossOfCoverageDate","lengthOfContinuationInMonths","enrollmentClassId","lastUpdatedByCurrentUser","contactMethodId","mailAddressSameAsHome","invitationStatusId","invitationSentDate","acknowledgedDocuments","renewalChangeInfo","infoStatusList","enhance","employeesDTO","employeeDTO","convertEmployeeDtoToEmployee","convertAdditionalInfoDto","additionalInfoDTO","fullname","deleted","holdDependents","ben","convertAdditionalInfoToDTO","convertEmployeeToEmployeeDTO","convertDependentToDependentDTO","EnrollmentClassesPropTypes","employeeIds","CompanyContactPropType","employerSignUpBaseUrlPath","isMainContact","CompanySettingsPropType","DigitalDocumentPropType","transactionId","brokerEmail","employerEmail","digitalDocumentStatusId","statusId","started","fullTimeEmployeesCount","submissionDate","voluntaryProducts","enrollmentClasses","applyPayPeriod","sicCode","broker","displayName","primaryPhone","digitalDocument","enrollmentName","currentCoverageTemplateImported","externalReferenceId","hasEndDatePassed","endOfDayInUtc","hasDateMoreThanXDays","isDateInFuture","GroupAppSubmissionStatus","DirectToCarrierEmployerPropType","taxId","employerTypeId","establishmentDate","adminFirstName","adminLastName","adminEmail","DirectToCarrierPlanPropType","AgentsOfRecordPropType","agencyTypeId","nationalProducerNumber","commissionSplit","writingAgents","DentalPriorCoveragePropType","isTransferring","includesOrthodontia","coverageEndDate","EnrollmentKitLinkPropType","fileName","storageURL","CoverageEligibilityPropType","ineligiblePeriodUnit","ineligiblePeriodLength","domesticPartnerEligible","domesticPartnerChildEligible","isStandAloneProducts","employeeTurnoverRatio","isCobraRequired","hasIncapacitatedMember","hasDisabledDependents","SignaturePropType","userName","signedName","signedDate","DirectToCarrierPropType","isSigned","createdDate","employerInformation","memberCensusCount","medicalEnrolledCount","planCollection","agentsOfRecord","coverageEligibility","signatures","groupId","dentalPriorCoverage","isFinalized","TotalInitialPayment","CheckNumber","NameOnAccount","bankRoutingNumber","bankAccountNumber","GroupSubmissionPlanPropType","planName","GroupSubmissionDocumentsPropType","active","isDigital","AcknowledgmentDocumentsPropType","EnrollmentCheckListPropType","CheckListId","CarrierCode","StateId","BusinessType","EnrollmentType","userFriendlyCheckList","newBusinessManagerContent","EffectiveDate","TermDate","IsDeleted","GroupSubmissionPropType","enrollmentSubmissionMechanism","enrollmentTypeId","carrierCuttoffDt","planIdsIncludedInSubmission","enrollmentKitURLs","acknowledgmentDocuments","EnrollmentChecklist","salesForceDataUpdated","isDigitalDocument","digitalStatusid","groupSubmissionErrors","groupSubmissionProcessComplete","groupSubmissionsDTO","groupSubmissions","groupSubmissionDTO","convertGroupSubmissionDtoToGroupSubmission","dentalCoverage","employer","enhanceAgentsOfRecord","openEnrollmentStartDate","openEnrollmentEndDate","egaLinks","ega","agentOfRecord","writingAgentSameAsCommissionedAgent","isWritingAgentSameAsAOR","convertGroupSubmissionToGroupSubmissionDTO","groupSubmission","isFinalSubmission","isSubmitToCarrierAcknowledged","overrideTaxIdValidation","digitalStatusId","convertSignatureToSignatureDTO","enrollmentCheckList","censusTemplates","censusFields","censusUploadFileInfo","uploadDocumentInfo","xlsPreview","censusXlsColumnList","xlsColPreview","censusSaveImportResult","importErrors","loaded","BenefitsPropType","benefitId","inNetworkAmount","outOfNetworkAmount","DocumentsPropType","RatesPropType","ContributionsPropType","ParticipantPropType","AgeReductionPropType","AgeRestrictionPropType","hasDisability","isStudent","RiderPropType","RiderOptionPropType","riders","PartialPlanPropType","planids","PlanQuestionPropTypeShape","PlanQuestionPropType","configurationsPropType","configurationId","carrierId","marketId","loCId","PlanPropType","systemName","metalLevelId","eligibleForCobra","eligibleForHsa","isVoluntary","pcpInformationRequired","listedOnExchange","benefits","ageRestrictions","riderOptions","classIds","pcpurl","autoEnrollId","originalEffectiveDate","planSicCode","benefitDuration","eliminationPeriod","adAndDBenefit","otherBenefit","questions","notes","fundingType","planSearchFields","convertPlanDtoToPlan","planDTO","generateconfigurationTypeSet","configurationType","zipCountyData","ClassUpsert","deleteEnrollmentClasses","upsertEnrollmentClasses","empId","classPresent","_handleSubmit","formEnrollmentClasses","removedClasses","classIndex","classId","class_upsert_form","fetchEnrollmentClasses","promises","removeEnrollmentClass","all","NotStartedIcon","InProgressIcon","dot","whiteText","bgGrey","bgOrange","bgBlue","bgGreen","_props$chip","chip","colorClass","Icon","CompleteIcon","Chip","deleteCell","planCell","deleteButton","copyButton","withTableRow","WrappedTableRow","_React$PureComponent","viewContent","nameKey","nameLocation","deleteContent","stopPropagation","onDelete","rowType","copyContent","alwaysCopyRates","onCopy","inherits","viewOnly","noDelete","childProps","deleteIcon","deletePlanIcon","titleAccess","copyPlanIcon","FileCopy_default","hoverClass","noWrap","election_status","showRemarks","remarks","selectedId","Radio","StarBorder_default","fill","lessPadding","useStyles","onAddEmployee","onEmployeeClick","inviteStatus","locName","numEnrollees","participationLevel","DeleteDialog","nameToDelete","infoDeleted","MaterialTable","_sortContent","sortableTableHeaders","sortedContent","sortedCol","col","direction","handleSort","propTableHeaders","headersToSort","newtableHeaders","newSortedContent","tableHeaders","_event","page","pagination","handleRowSizeChange","rowsPerPage","handleDeleteConfirmed","idToDelete","handleDeleteCancelled","typeToDelete","handleDeleteOpened","generateRow","isReadOnly","employee_row","handleRowClick","company_contact_row","company_contact_associate","companyContactAssociateSelected","employee_invitation_row","handleCheckClicked","handleEmployeeClicked","employee_ineligible_row","enrollment_summary_row","tooltipTitle","addDialogOpen","deleteInfo","contents","_this$props$viewOnly","noDataFooter","showFooter","overflow","hideBlankHeader","buttonCell","hideFabForAdd","Fab","fabClick","blackFill","handleSelectAll","cell","sortDirection","tootlTip","toolTipText","TableSortLabel","noData","colSpan","align","displayCorrectError","hidePaging","TablePagination","onChangePage","onChangeRowsPerPage","delete_dialog","noBorder","whiteSpace","overflowX","addNewBtn","subheader","optionButton","headerDiv","counts","primaryActionText","_props$primaryActionE","primaryActionEnabled","handlePrimaryAction","primaryActionIcon","secondaryActions","displaySearchBar","react","idx","requiredFirstName","requiredLastName","requiredPhoneNumber","handleDummy","commonStyles","associateContactText","noAssociateFound","noRightMargin","tableParent","zIndex","tooltip","opacity","tooltipSpan","checkboxDiv","onContactChange","isMainContactFound","onMainContactChanged","showAuthorizedSignatory","authorizedSignatoryChecked","onAuthorizedSignatoryChecked","disableAssociateContactCheck","companyContactAssociateChecked","onAssociateContactChecked","showEmployeesTable","table","onAssociateContactRadioClicked","Link_Link","onDashboardClick","CompanyContactContainer","handleCompanyContactDelete","loadingOn","contacts","deleteCompanyContact","loadingOff","handleCompanyContactAdd","addCompanyContact","handleDelete","handleAddClicked","handleAddCancel","handleAssociateCheck","filteredEmployess","handleAuthorizedSignatoryCheck","handleAddCompanyContactChange","emplys","filtered","filterEmployessAlreadyAssociated","associatedContacts","handleoAssociateContactRadioClicked","handleMainContactClicked","goToDashboard","isForbidden","table_header","LinearProgress","add_compay_contact_dialog_form","tableSubheader","companyContact","employerSignUp","storeCompanyContact","removeCompanyContact","CompanyOverview","updateCompanyInfo","enrollmentPayload","company_overview_form","_ref6","storeEnrollment","CompanySettings","updateEnrollment","company_settings_form","CompanyInfo","fetchPlans","fetchCompanyContacts","setTab","_React$useState3","_React$useState4","cachedTab","setCachedTab","_React$useState5","_React$useState6","setCheckForm","_React$useState7","_React$useState8","setLoading","tabTitles","planSetup","breadCrumbs","isMissingAuthEmployer","isMissingAdobeSignatory","isMissingEmployer","tabs","tabTitle","handleBreadbrumb","route","handleMenuChange","handleAbandonChangesCancel","handleAbandonChangesContinue","common_title","breadcrumb","left_nav","rightCol","company_overview","class_upsert","company_contact","company_settings","EnrollmentStatusCounts","numberDiv","&:last-child","daysRemaining","EnrollmentSummary","companyName","breadcrumbs","handleBreadcrumbClicked","_getStatusCounts","graphData","lookups","locs","locData","inEligible","waived","pieData","locElection","Unknown","barColors","pieSegments","entries","entry","totalEmployees","completedEmployees","locCarrierTableData","tableData","locOrder","curTableData","dataRow","percentage","Hidden","smDown","statusColumn","textCenter","graphWrapper","graphTitle","es6","dataKey","innerRadius","outerRadius","isAnimationActive","startAngle","endAngle","paddingAngle","legendColumn","colorBlock","tableOverflow","flexDirection","FileUploadButton","accept","accepttype","htmlFor","DeleteDocumentDialog","documentId","boxShadow","grid","leftGrid","rightGrid","iconButton","buttonIcon","KitDocumentCard","react_placeholder_lib_default","ready","showLoadingAnimation","onDocumentClick","CloudDownload_default","allowEdit","onEdit","Edit_default","KitDocumentUploadDialogue","handleTitleChange","handleSave","onSave","handleCancel","handleEnter","ev","onKeyPress","subHeader","isChecked","setChecked","onDownloadClick","KitDownload","acceptType","docId","newSet","loadingIds","delete","doc","groupApplication","docOnDelete","deleteDialogueOpen","onEditTitle","docToEdit","uploadDoc","inputFile","files","file","saveDocument","fileUpload","addDocument","editDocument","updateDocument","deleteDocument","cancelAdd","openFileDownloadModal","docOnDownloadStorageUrl","groupApplicationAgreementDialogOpen","groupApplicationDownloadClicked","handleGroupApplicationCancel","isGroupApplicationDialogLoading","file_upload_button","kit_document_card","group_applications_download_agreement_dialog","kit_document_upload_dialogue","delete_document_dialog","SubmissionDocumentsUpsert","kit_documents","info2","GroupDocumentsText","textDecorationLine","KitDownloadCard","kits","kit","kit_download_card","checklistItem","postChecklistItem","userFriendlyCheckListItems","newBusinessManagerContentItems","checkLists","ReferenceInformationUpsert","kit_downloads","enrollment_checklist","validateSignature","AddSignatureFields","textBox","formValueSelector","AddSignatureForm","add_signature_fields","egaViewed","WrapperAccordion","ExpansionPanel","errorAccordion","ExpansionPanelSummary","expandIcon","ExpandMore_default","summary","ExpansionPanelDetails","accordionSubHeader","borderWidth","disableFields","ButtonBase","PersonAdd_default","flexDiv","removeWritingAgentButton","WritingAgentFields","aorIndex","writingAgentCount","equals100","_value","totalSplit","writingAgentsUniqueNPN","InputAdornment","WritingAgentFieldArray","setIndex","remove","writing_agent_fields","isAgency","isWritingagentAORSame","add_writing_agent_card","agentCount","onAgentSameChecked","AgentOfRecordFieldArray","handleAdd","setFirstWritingAgentValues","agent_of_record_fields","evt","aor","getAll","add_agent_of_record_card","DirectToCarrierAddressFields","DirectToCarrierCompanyFields","characterLimit4","getEmployerTypes","DirectToCarrierDentalPriorCoverageFields","isDentalTransferring","DirectToCarrierEligibilityFields","immediateLookupId","isStartOfCoverageImmediate","changeCoverageEligibility","getStartOfCoverage","hasHMOPlans","field","DirectToCarrierEnrollmentFields","DirectToCarrierBrokerFields","DirectToCarrierBinderFields","paymentModeChanged","paymentType","paymentMode","FORM_NAME","allNPNs","allNPNsPerAOR","wa","npn","DirectToCarrierForm","stringErrors","errorUrl","diretToCarrierErrors","eBnButtonClicked","getCarrierName","componentHeader","wrapper_accordion","componentTitle","smallButton","direct_to_carrier_company_fields","disableSave","direct_to_carrier_address_fields","direct_to_carrier_enrollment_fields","liveCensusCount","direct_to_carrier_eligibility_fields","direct_to_carrier_broker_fields","direct_to_carrier_binder_fields","hasDentalPlan","direct_to_carrier_dental_prior_coverage_fields","withRouter","DirectToCarrierDocuments","isAdmin","dialogActions","mainText","iconCol","tableContainer","Border","topWarningsBox","customPlanWarning","thinColumn","submissionInfoText","SubmitToCarrierAcknowledgementDialog","submit_to_carrier_acknowledgement_form","IsSubmitToCarrierAcknowledged","OverrideTaxIdValidation","MissingDocumentsDialog","onOk","DirectToCarrierUpdate","pendingStatusId","plansIncluded","updateGroupSucess","updateGroup","updateGroupFail","eBNLoadingOff","eBNLoadingOn","eBNLoading","validateLoadingOn","validateLoading","validateLoadingOff","submitOff","isSubmit","closeHorizonAcknowledgement","showSubmitToCarrierDialog","closeMissingDocumentsDialog","showMissingDocumentsDialog","handleContinueSubmit","isFinalSubmitToCarrier","processSave","newGroupSubmissionDTO","agent","Mail","isFormComplete","syncWarnings","submitGroupSubmission","updateGroupSubmission","processValidateEnrollment","processFlipToEbn","isDirectToCarrierRouteOverriden","clearDentalCoverage","showSave","isD2C","showSubmit","directToCarrierSubmitted","groupAppDocuments","saveDisabled","submitDisabled","direct_to_carrier_form","missing_document_dialog","submit_to_carrier_acknowledgement_dialog","buttonMargin","failedGroupSubmission","groupSubmissionId","isInvalid","getFormSyncWarnings","updatedGroup","storeGroupSubmission","storeGroupSubmissionsErrors","DocumentIcon","DownloadIcon","EgaCard","icon_document","textContainer","icon_download","SignatureStatus","div","brokerSigned","CheckCircle_default","checkIcon","employerSigned","SignaturesAdd","updateSignature","handleEGAViewed","hasEga","signedEga","unsignedEga","userHasntSigned","messageCardSign","ega_card","signature_status","add_signature_form","paperInfo","DirectToCarrierBase","application","handleChangeTab","nextTab","_getSignatureWarning","egas","leftNavTabs","UpdateFormName","getMissingDocumentsError","updateLeftNavTabs","getSignatureWarning","direct_to_carrier_update","direct_to_carrier_documents","signatures_add","validateAgentId","validateGroupId","validateBrokerId","rightButton","bullets","showSaveButtons","showSubmitButton","disableSaveButton","saveLoading","submitLoading","isCyberScout","isLifeSecure","isAllstate","isBrokerField","showGroupId","handleSubmitBtn","hasSyncWarnings","DirectToCarrierNoGroupsUpdate","isDirectToCarrier","saveLoadingOn","saveLoadingOff","submitLoadingOn","submitLoadingOff","carrierAgentId","resubmitEnrollment","direct_to_carrier_no_groups_form","d2c","hasAoR","messageCardLocation","GroupApplicationInstruction","instruction","borderTopWidth","borderTopColor","iconBox","InfoIcon","MetLawInfoCards","GroupApplication","renderMetLawCards","getGroupSubmission","forms_MetLawInfoCards","onLoadComplete","configs","_getInstruction","planIds","_getGroupSubmission","groupApplications","gApp","handleEnrollmentTypeChange","newGroupSubmission","_routes$groupApplicat","groupApplicationState","ga","fetchGroupSubmissions","isDigitalFormRecord","useD2cNoSubmission","d2cOverrideShowForm","isEBN","isD2CNoGroupApp","breadCrumb","group_application_instruction","direct_to_carrier_no_groups_update","group_documents_text","reference_information_upsert","addGroupSubmissionDocument","deleteGroupSubmissionDocument","submission_documents_upsert","direct_to_carrier_base","updateGroupSubmissionDocument","enrollmentKits","FormData","append","refetchGroupSubmissionDocuments","KaiserResponseHandler","acceptKey","kaiserResponse","isAccepted","EmployeeInvitationLanding","invitationTokenVarName","employeeInvitationLanding","invitationToken","employeeSignUp","_browser","Bowser","navigator","userAgent","isIE","getBrowser","DynamicStepper","stepChecks","step","activeStep","incompleteSteps","inCompleteRenewalSteps","complete","completedSteps","incomplete","inCompleteRenewal","isMobile","containerClasses","iconContainer","noneMobileBackground","iconActive","iconCompleted","iconIncomplete","IconComponent","CheckIcon","Warning","_this$props2$classes","steps","census","stepContent","warningMessages","componentBelowStepper","stepContentHeader","renderedStepContent","mobileWrapper","Stepper","orientation","hidden","_this2$stepChecks2","Step","StepLabel","StepContent","censusWrapper","ieLocked","locked","statusIcon","stepIcon","_this2$stepChecks","StepIcon","activeStepWrapper","stepWrapper","gutter","alignCenter","withStyle","circle","primatry","circleNumber","StepCircle2","TemplateCategory","validateTemplateNameRequired","CensusImportTemplateDialogForm","newTemplateNameOnChange","newTemplateName","isDuplicate","templateName","duplicateTemplateName","componentStyles","templatesContainer","greyHeaderText","isSystemTemplate","mappings","templateJson","XlsMappings","CensusImportSetUpForm","hasCustomTemplates","censusImport","savedTemplateRadioStyle","radioButton","radioButtonDisabled","addReplaceRadioStyle","hasEnrollmentStarted","handleRadGrpTemplateClick","assertThisInitialized","templateType","templateSelection","Blank","paperMargin","showAddReplaceCensus","radioGroupHeading","radioButtonSpacing","Standard","download","showHealthConnect","HealthConnect","ExistingCustom","NewCustom","template","buttonContainer","nextButton","pallette","validateXlsColumnRequired","CensusImportMappingFormComponent","setLoadingOff","setLoadingOn","setInitialState","censusMappingData","targetProperty","xlsColIndex","xlsDateFormats","dateFormatType","getXlsColumnPreview","colPreviewList","doOpenTemplateDialog","templateDialogOpen","doCancelTemplateDialog","doCloseTemplateDialog","doSaveTemplateDialog","mappingData","sheetName","uploadFileData","headerRowIndex","headerRow","saveMsg","hasHeaders","templates","updateCensusImportTemplate","addCensusImportTemplate","getCensusMappings","importColumnSelectionOnChange","selectedIndex","censusField","f","xlsColHeader","censusMap","handleMappingDataOnChange","importColumnDateFormatOnChange","newFormat","newMappings","setUpData","GetDateField","dateJsx","radioWidth","getTemplateName","templateId","msg","getCenusXlsColumnMappings","forCategory","showSection","subHeadingCenter","tableHeadingLeft","tableHeadingRight","fld","labelName","showRequiredIndicator","colIndex","colHeaderName","colRowData","census_import_save_template_dialog_form","disabledBackground","buttonText","CensusImportMappingForm","_ref7","_callee7","getXlsColumnMappingsResult","_context7","storeCensusXlsColumnMappings","storeAddCensusTemplate","storeUpdateCensusTemplate","fetchCensusTemplates","CensusImportReviewFormObj","handleSaveCensusImport","tempJson","dependentMapping","replaceCensus","addReplaceCensus","isSaving","saveCensusImport","showImportDiv","showResultDiv","showSuccessDiv","showErrorsDiv","showErrorDiv","headerInfo","reviewParagraph","showSalaryWarning","rowIdentifier","errorType","Check_default","successText","CensusImportReviewForm","storeSaveCensusImport","storeCensusUploadFileInfo","DocumentUploadDialogue","handleDescriptionChange","handleIsAcknowledgmentDocumentChange","isAcknowledgmentDocument","isDocAckDisabled","employeesElectedCurrentPlanCount","defaultValues","gutterBottom","nameCharacterLimitExceeded","descriptionCharacterLimitExceeded","DocumentLinkIcon","doclink","fileIcon","PlanDocumentCard","isSummary","fileLabel","titleStyles","icon_document_link","hideDate","xsDown","validateExcelSheet","validateHeaderRow","CensusImportFileUploadFormObj","isDocumentUploaded","isUploaded","uploadingOn","docIsUploading","uploadingOff","uploadCensusDoc","censusFileUpload","afterUploadDoc","templateList","newHeaderRowList","getHeaderRowList","headerRowList","deleteCensusDoc","deleteCensusFile","cancelEdit","okNext","valid","handleSheetSelectionOnChange","sheet","col1ValueList","browseButton","planDocsSubHeader","document_upload_dialogue","defaultFileInfo","plan_document_card","biggerDocumentTitle","fileDetailLabel","xls","rowVal","rowId","colValue","CensusImportFileUploadForm","String","showSnackbar","CensusImport","step_circle2","changeStep","activeIndex","setStepCompleted","completedStep","newCompletedSteps","jumpStep","renderStepReviewInfo","addReplace","ciSetupData","getTemplateReviewSelection","stepHelper","ciUploadFileData","mappedFields","ciMappingData","renderStep","census_import_setup_form","handleSetUpFormSubmit","census_import_upload_file_form","handleUploadFileFormSubmit","census_import_mapping_form","handleMappingFormSubmit","census_import_review_form","newMappingData","GetSystemTemplate","newCiSetupData","newCiUploadFileData","stepsLoading","importComplete","companyIdVarName","fetchCensusFields","dynamic_stepper","doShow","companyContactInfo","stateInfo","midtext","DocumentType","storeCensusFields","characterLimit16","requiredDOB","requiredGender","startAdornment","salaryRequiredValidator","isSalaryRequired","AddEmployeeDialog","quick_add_employee_form","ExportAgreementDialog","isExportCensusChecked","onCheckCensusExport","isLoading","isExportPayrollChecked","onCheckPayrollExport","onCheck","isItRenewalEnrollment","renewalId","renewalGroupApps","g","renewalPlanIds","grpApp","isRenewalEnabled","CensusStatus","tableHeadersBase","notStartedLookupId","notInvitedLookupId","onSearchTextChange","searchText","handleEmployeeDelete","deleteEmployee","handleEmployeeAdd","newEmployee","waiverReasonId","handleExportEnrollment","exportAgreementDialogOpen","handleExportAgreementCheck","ExportIsAgreed","handleCensusExportChecked","CensusExportChecked","handlePayrollExportChecked","PayrollExportChecked","handleExportAgreed","ExportClicked","isExportDialogLoading","documentTypes","CENSUS","PAYROLL","exportDocuments","handleAddDone","employeeID","redirectToProfile","_routes$guidedEnrollm","guidedEnrollment","stepId","handleImportClick","isRenewalImport","renewalImport","goToSummary","_routes$enrollmentSum","enrollmentSummary","employeeDetailsToRender","hasPlansThatNeedSalary","employeesList","plansThatNeedSalary","planWaived","isCobraEmployee","isRenewalAnswerMissing","openMenu","calculateDependents","numDependents","_plansWithMultipleSalary","_sortableTableHeaders","headers","_this$employeeDetails","showCoveragesOption","Search_default","InsertChart_default","onMouseOver","CloudUpload_default","Popover","anchorOrigin","vertical","horizontal","menuText","add_employee_dialog","census_export_agreement_dialog","types","pieDiv","pieValue","completedCount","submittedCount","countdownDiv","flexBasis","onResubmit","fixed","indicator","boxSizing","secondaryActionLabel","actionSection","primaryAction","secondaryAction","_ref$variant","sizeClass","renderData","indicatorIcon","bold","disabledText","processingText","refreshContent","errorContent","isComplete","_props$loading","groupAppsLoading","_props$disabled","missingApps","displayDigitalSignIcon","hasDigitalSignOptin","dashboard_generic_action_card","Adobeicon","Assignment_default","icon_in_progress","hasError","SetEnrollmentDatesDialog","errorMessageStartDate","errorMessageEndDate","onSetDates","handleStartDateChange","newStartDate","newEndDate","errorStartDate","errorEndDate","handleEndDateChange","isDisabled","pickers","maxDate","pickerButtonIE","copyToClipboard","&:hover","ExtraPadding","enrollmentDates","editDatesModal","editDatesLoading","sendInviteAfterSetDates","editDatesOpen","goToInvitation","_routes$employeeInvit","employeeInvitations","Mail_default","Event_default","react_copy_to_clipboard_lib_default","btoa","set_enrollment_dates_dialog","ResubmitEnrollmentDialog","newHeaderColumns","headerColumns","newSortedGroups","groupsList","sortedGroups","grp","selectGroup","updated","checkState","onGroupSubClick","updatedGroups","onResubmitClicked","numberOfSelectionFilter","lastRow","column","tableHeaderBottom","tableCell","carrierNm","stateCd","contributionWrapper","tableTop","tableParentTop","tableHeaderTop","numberOfSelectedPlans","float","employeeNames","logoImage","SubmitEnrollmentDialog","inCompleteEmployees","employeeCount","groupAppsMissing","hasInCompleteEmployees","employeesAdded","failedValidations","otherValidations","compareCarrierNm10Days","carrierName10Days","compareCarrierNm14Days","carrierName14Days","within10Days","within14Days","effectiveDateToPush10Days","effectiveDateToPush14Days","incompleteEmployee","employeeFullName","incompleteReason","carriersSelected","hasOptedDigitalSignin","d2cCarrierCodes","carrieCode","nonGACarriers","waivedElectionsEmployees","renderContent","Shield","xmlns","planRows","isCustomCarrierPlanExist","lastRowStyle","noBorderBottom","lastIconStyle","lastCarrierStyle","getLOCicon","onConfirmation","employeesCount","disableSubmit","setDisableSubmit","hasAdobeConfig","hasOptin","onCheckDigitalSignOptin","CarrierEnrollmentTypeFieldArray","fieldProps","getEnrollmentTypes","CarrierEnrollmentTypeFields","carrier_enrollment_type_fields","isEditing","SetupCompleteDialog","onEditEnrollmentType","load","displayDigitalSignOptin","carrierList","carrierWithAdobeConfig","onCarrierEnrollmentTypeChange","currentStep","editing","updateSucceeded","updateFailed","closeDialog","resetForm","handleCheckDigitalSignInCheck","digitalSignOptinChecked","confirmationStep","isCustomCarrier","array","chunkArray","carrier_enrollment_type_form","confirm_enrollment_setup","getCarriers","CARRIERENROLLMENTTYPEFORM","RollbackEnrollmentDialog","rollbackIsAgreed","isAnyElectionsExists","employeesState","isAnyGroupApplicationsExists","onRollback","EnrollmentSetup","setupCompleteDialog","setSetupCompleteDialog","rollbackEnrollmentDialog","setRollbackEnrollmentDialog","confirmSetup","digitalSignOptin","onCompleteEnrollment","finally","rollbackSetup","onRollbackEnrollment","goToPlanList","_routes$planList","planList","goToCompanyInfo","_routes$companyInfo","companyInfo","confirmationCheck","levelFundedRatesCheck","disableEnrollmentSetupIfMissingInfo","disableCompanySetup","PlanConfirming","tile","section","sectionBorder","center","bigActionButton","Store_default","clickable","getWarnings","icon_shield","locDiv","confirmation","additionalMsg","verticalCenteredText","rollback_enrollment_dialog","setup_complete_dialog","carrierEnrollmentType","TaskSeverity","EnrollmentInfo","numberDivWithoutSeperator","mainDiv","expansionPadding","task","infoColor","warningColor","errorColor","flex","alignRight","widthFull","severity","low","callToActionText","isDismissed","pendingTasks","setPendingTasks","dismissTask","newPendingTasks","taskToDismiss","esm_Info","esm_Warning","getTaskIcon","esm_Close","_routes$renewalImport","navigateTo","esm_ExpandMore","Badge","badgeContent","AssignmentTurnedInOutlined","headerIcon","EnrollmentDashboard","currentGroupAppPollingAttempt","maxGroupAppPollingAttempt","groupAppWaitBetweenPolling","loadGroupAppId","pollLoadGroupApp","trackError","maxRetriesAttempted","loadGroupApps","checkAndQueueGroupPollRequest","forceRefresh","groupAppsLoadingOn","groupAppsLoadingOff","submitDialogueOpen","closeSubmitModal","_getCarrierWithAdobeConfig","prs","carrierCodes","v","uniqueCarrierCode","isDeepEqual","getCarrierWithAdobeConfig","getGroupApplicationDBStatus","allAppsUpdated","submittingOn","resubmitDialogOpen","submittingOff","onSubmitSuccess","waivedElectionEmployees","validateWaivedElections","onEmployeesCompletionValidateFail","_getNumIncompleteApps","gsrs","carrierConfigs","isEbn","isD2CNoGroups","isAutoGen","isRenewal","isBmallAdmin","isGroupAppSubmittedToCarrier","submissionStatus","isBMallAdminActionRequired","isBrokerActionRequired","hasUnsignedEGA","hasSignedEGA","groupIdInvalid","_getD2cSubmissionCarrierCodes","getD2cSubmissionCarrierCodes","getNonGASubmissionCarriers","_getNonGASubmissionCarriers","plansResult","exportOnlyResult","getNumIncompleteApps","getNumCompleteApps","getMissingDocsNames","docNames","isHorizon","getGroupAppsStatus","getGroupSubmissionExists","getMainContact","mainContact","handleCarrierEnrollmentType","carrierEnrollmentTypeList","handleRollbackEnrollment","rollbackEnrollment","isEnrollmentSetupConfirmedJustNow","failedCompletions","validateEnrollments","numIncompleteApps","getOtherValidations","arr","handleResubmitButtonClick","handleResubmitGroups","groupsToResubmit","cancelResubmitModal","_validateEnrollments","completedId","submittedId","renewalQuestionPendingId","notCompletedEnroll","emp1","emp2","validations","handleRedirectToClientsButtonClick","redirectToAWSClientCenter","renderAWSClientsButton","ArrowBack_default","configurationtypeid","getEffectiveDateToPush","currentDate","initialDateSet","isEmployeeRequiredSalary","refreshPendingTasks","showCurrentCoverageInPendingTasks","displayGroupApps","navPlaceholder","navTracker","enrollmentStatuses","enrollment_statuses","enrollment_submission_card","enrollmentSetupContainer","pending_tasks","enrollment_setup","isFetchingEnrollment","completeEnrollment","finish","group_applications_card","completedApps","cardPadding","invite_employees_card","submit_enrollment_dialog","resubmit_enrollment_dialog","getGroupSubmissionList","_root","_rightCol","down","enrollmentBanner","AWSLink","intervalRef","tries","rej","failedDuringGroupCreation","carrierEnrollmentList","_ref14","_callee14","_context14","_x16","_ref15","_callee15","_context15","storeGroupSubmissions","_x18","banner","backgroundRepeat","bannerText","BenefitMallBanner","CompanyDashboard","NotFound","enrollment_dashboard","census_status","company_dashboard_BenefitMallBanner","emailMainText","openEnrollmentLink","characterLimit550","multiline","rowsMax","rows","brokerName","emailMain","emailMainCell","emailBody","emailTitle","emailTitleText","emailColorBar","borderSpacing","emailColorBar1","emailColorBar2","emailColorBar3","emailYourOpenEnroll","benefitMallLog","benefitMallLogLink","copyRightBox","copyRightSubBox","copyRightBoxText","EmailTemplateDialog","submitButtonText","dialogTitle","cellPadding","cellSpacing","EnrollmentInvitationDialog","onSendInvites","invitees","invite","inviting","getInvitation","employeeContacts","sendInvites","displaySnackbarWithErros","employeeSignUpBaseUrlPath","employeeWithTokenSignUp","_enrollmentStartYear","email_template_dialog","enrollment_invitation_form","enrollmentStartYear","snackbarVariant","ENROLLMENT_INVITATION_FORM","invitation","sendEmployeeInvitations","numberIcon","CircleNumber","toolTipTitle","EditEmailAddressFieldArray","EditEmailAddressFields","edit_email_address_fields","EditEmailAddressesDialog","onEditEmails","emailAddresses","firstArray","getEmployeesWithChangedEmail","removeUndefinedFromArray","updateEmails","emailAddress","newAddress","Home","onSuccess","convertToFormDate","edit_email_addresses_form","_x15","EDITEMAILADDRESSESFORM","storeEnrollmentNotifications","getEnrollmentNotifications","enrollmentNotifications","getEndDateNotification","enrollmentNotification","numberOfDays","n","enableReinitialize","EmployeeInvitations","sortableNonEnrolleeTableHeaders","convertToEmployeeNoInvitation","waivingCoverage","convertToEmployeeInvitation","employeeIdsChecked","getInviteStatus","utcOffset","handleSetDatesDialogOpen","setDatesDialog","handleSetDatesDialogCancel","handleSetDatesDialogSubmit","_dates","enroll","generateInviteURL","inviteToken","handleCheckChange","srcElement","eid","openSendImmediateReminderDialog","sendImmediateReminderEmployees","sendImmediateReminderModalOpen","closeSendImmediateReminderDialog","sendImmediateReminders","sendingImmediateReminders","openSendInvitationsDialog","sendInvitationDialog","closeSendInvitationDialog","openEditEmailDialog","editEmailDialog","closeEditEmailDialog","setRemindersDialogOpen","editRemindersDialogOpen","editRemindersNumberOfDays","setRemindersDialogClosed","isDeleted","endDateNotification","updateNotification","deleteRemindersNumberOfDays","handleCopyUrl","handleEditEmailSuccess","handleEmployeeClick","fetchEndDateNotifications","employeeNoInvitations","_this$_dates","inviteUrl","employeesChecked","enrollmentDatesAreSet","setDates","actionButton","actionContainer","InsertInvitation_default","actionIcon","actionBtnText","inviteOptions","inviteOptionLeft","icon_circle_number","inviteOptionContent","FileCopyOutlined_default","fileCopy","warningBox","or","scheduledReminders","addReminderBtn","AddAlert_default","notificationDateHeader","ListItemText","ListItemSecondaryAction","edge","aria-label","grid12","whiteBanner","employeeSubHeader","blueBanner","blueBannerInsertLabel","blueBannerInsertLinks","blueBannerInsertLink","MailOutlined_default","blueBannerIcon","notch","enrollment_end_date_reminders_dialog","isNew","enrollment_invitation_dialog","edit_email_addresses_dialog","borderTopLeftRadius","borderTopRightRadius","buttonFlex","firstRow","deletePlan","updateEnrollmentNotification","fetchEnrollmentNotifications","DirectToCarrierErrorList","greyIcon","getIcons","SubmitSeparateTable","submit_separate_row","SubmitBenefitMallRow","renewalLookup","getEarliestEffectiveDate","min","getStatusMessageDiv","hasDocuments","statusDiv","handleViewDocs","getBusinessType","multipleKits","isNewBusiness","hasAdobeConfiguration","requiredEmployerEmail","characterLimit1000","aria-multiline","SetDigitalSignEmailDialog","set_digital_sign_email_form","SubmitBenefitMallTable","setDigitalSignEmailDialog","setSetDigitalSignEmailDialog","handleEmailSubmit","emailData","onSaveEmailAddresses","submit_benefitmall_row","TableFooter","set_digital_sign_email_dialog","emailAddressInitialValues","GroupApplicationList","handleSaveEmailAddresses","openSetDigitalSignEmailDialog","saveDigitalDocEmailAddress","handleCancelSetDigitalSignEmail","authorizedSignatory","getOtherGroupApplications","getExportOnlyGroupApplications","_routes$enrollmentKit","allGroupAppsUpdated","submit_benefitmall_table","submit_separate_table","_ref13","_callee13","_context13","fetchDigitalDocuments","_ref12","_callee12","digitalSignatories","_context12","storeDigitalSignatories","_x14","AbandonChangesContext","setNextProps","AbandonChangesGuard","onGuard","abandonChanges","setAbandonChanges","setOpen","onSaveButtonClicked","onCancelButtonClicked","onDiscardButtonClicked","_React$useState6$","setDialogHandlers","Provider","action","AbandonChangesOption","enrollmentSummaryUtil","EnrollmentSummaryUtil","_getContributionSummary","costs","validElections","employeeTotal","employerTotal","cost","_getPlanCost","getPlanCost","_getWaivedElections","getWaivedElections","_getNonWaivedElections","getNonWaivedElections","_getPayPeriodDescription","ElectionCostSummary","companyLevelSetting","showEmployeeCost","showEmployerCost","isHidden","currentElections","currentElection","contributionSummary","getContributionSummary","costCalculation","employeeContribution","employerContribution","payPeriod","getPayPeriodDescription","Print","BeneficiariesTable","enrollmentSubmitted","_ref$classes","beneficiariesCount","mobileTable","BeneficiaryRow","tempId","relationship","warningCount","percentCell","nameCell","uniqueSsn","BeneficiariesForm","BeneficiariesFieldArray","buttonMarginMobile","orLineBreak","outline","&:before","&:after","setDialogOpen","isAdding","setIsAdding","editingIndex","setEditingIndex","cachedBeneficiary","setCachedBeneficiary","primaryBeneficiaryTypeId","primaryBeneficiaries","contingentBeneficiaries","rootName","primaryTooltip","contingentTooltip","handleAddClick","newBeneficiary","toTimeString","getMilliseconds","insert","handleDialogCancel","handleDeleteClick","_field","fieldNames","handleDialogOK","renderTitle","beneficiaries_table","handleDependentSelected","getBeneficiaryRelationship","getBeneficiaryTypes","EmployeeAdditionalFields","onMedicareCoveredRadio","changeIsMedicareEligible","isMedicareEligble","validateDepLastNameMismatch","marriage","isMarriageDateReqd","lastNameDependent","displayRenewal","isAnyCarrierRenewal","itemHeader","changedField","getStudentStatus","medicareError","getMedicareEligibilityStatus","toLeftLabel","changedItems","getFormSyncErrors","EmployeeMedicareFields","innerPapper","isMedicareESRD","isMedicareDisability","PlanType","isMedicareEligStatusESRD","isMedicareEligStatusDisability","EmployeeAdditionalInformationForm","touchForm","hasAdditionalInfos","person","isChildLastNameDiffFound","EmployeeAdditionalInfoFieldArray","spouseFullName","employee_additional_fields","employee_medicare_fields","medicareLookupId","medicareElectionsAnswerNO","ans","EmployeeDocumentAcknowledgmentFields","hideSection","requiredIfNotReducedChecked","boldText","smallTopMargin","negativeTopMargin","checkboxContainer","flexShrink","EmployeeDocumentAcknowledgmentForm","EmployeeDocumentAcknowledgmentFieldArray","employee_document_acknowledgment_fields","disabledIcon","depMobile","disableSpouse","spouseLookupId","childLookupId","RenewalMembersFieldArray","dependentDisable","ChildLife","SpouseLife","enrolleeFullName","groupSubmissionState","allPlans","previousYearRenewalCarrierCode","renewalSelectedCarrierPlan","previousYearSelectedCarrierName","previousYearRenewalCarrierName","newBusinessId","savedSelectedPlanId","elec","savedSelectedPlan","savedSelectedLOC","currentSelectedPlan","currentSelectedPlanId","plansInSavedSelectedLOC","isNewElection","AllstateCarrierCode","AllstatePlans","plansInSelectedLOC","carriersInSelectedLOC","isAnyConfigurationRenewalNewElection","isCurrentElectionWaived","isAnyConfigurationRenewalExistingElection","isAnyConfigurationRenewal","newBusinessGroupApps","nbCarrierCodes","uniqueRenewalCarrierInfo","renewalPlansInSelectedLOC","renewalCarrierList","uniqueRenewalCarrierList","cn","getUniqueRenewalCarrierInfo","isAnyPlanSelectedOrElectionWaived","IsRenewalPrimaryQuestionRequired","selectedLOCName","isLOCEmployeeOnly","IsRenewalSecondaryQuestionRequired","selectedCurrentCarrierCode","selectedCurrentCarrierName","isCurrentAndLastYearCarrierSame","carrierInfo","labelPlacement","DependentFieldArray","defaultAddress","homeAddress","electedDependents","currentSelectedPlanName","dependentsUniqueSsn","allDroppedEnrolleeSSNs","dependentsSSNs","allSSNs","renewal_questions_fields","validateDependentType","validateTobaccoUser","DependentFields","validateSpouseDOB","spouseMinimumAge","fosterChild","partnership","spouse","divorced","genders","states","validateUniqueSSN","employeeAndDependentsUniqueSsn","triggerValidation","isPartnership","isFosterChild","isRemoveSpousePartnerDisabled","hasDependentElected","showTobaccoUseDropDown","hardValidate","lastNameEmployee","marriedId","domesticPartnershipId","singleId","widowId","shouldAddSpouse","spouseAlreadyExists","isSingle","depType","newDep","onDependentChange","unshift","dependentId","dep1","dep2","dependent_fields","isAllstateCriticalOffered","add_dependent_card","CobraFields","changeField","lengthUpdateEndDate","parsedStartDate","startDateUpdateEndDate","getCobraEvents","getContinuationMonths","emailInputAdornment","localStyles","mobilePadding","ContactInfoFields","getContactMethods","showSameAsHome","onHomeToggleChange","ContactInfoFieldArray","handleHomeToggle","sameAsHomeCheck","initialHomeCheck","contact_info_fields","EmployeeIdentificationFields","autoComplete","dob","maxNumber168","hireDateIsRequired","EmploymentFields","newHours","getIneligibleEmploymentStatus","EnrollmentFields","isWaiverToggleEnabled","reasons","isEnrollmentConfirmed","waivingChangeEvent","onWaivingChange","enableInEligibleFlag","inEligibilityChangeEvent","onInEligibilityChange","isWaiving","enableWaiverReason","employeeWaivedReasonId","validateMartialStatus","spouseDependentTypeId","domesticPartnerDependentTypeId","isSpouseInfoRequired","MaritalPartnerStatusFields","onMaritalStatusChange","getMaritalStatus","isLifeOrDisabilityMultiSalary","SalaryFields","EmployeeUpsertForm","onEmployeeEligibilityChange","onEmployeeWaivingChange","touchFields","employee_identification_fields","enrollment_fields","employment_fields","salary_fields","cobra_fields","marital_partner_status_fields","sameasHome","asyncValidate","asyncBlurFields","BeneficiariesContainer","deleteBeneficiary","continueToNextPage","setContinueToNextPage","plansWithBeneficiaries","locNames","enrollmentSubmittedOrWaived","saveBeneficiaries","goToNextStep","formLevelWarnings","warnings","primaryPercentSum","contingentPercentSum","onGoBack","onBackButtonClicked","fullWidthButton","beneficiaries_form","endDateMessage","cancelButtonMobile","disclaimer","BENEFICIARIES","beneficiaryId","_ref18","_callee18","_context18","_x20","_x21","_ref17","_callee17","updatedBeneficiaries","_context17","updateBeneficiaries","initialize","StepCircle","requiredAmericanPublicLifeBrochure","requiredBasicLifePrevAmt","ExistingCoverageVisionFieldArray","visionEnrollee","noVertPadding","existingCoverages","arrayPush","clearPolicies","arrayRemoveAll","updateExistingCoverageFormValues","existingCoverageForm","isMedical","isMedicalRX","isVision","addFirstPolicy","policyEnrollees","handleUpdateElectionCoveredBy","handleAddFirstPolicy","isMedicalLOC","isDentalLOC","isVisionLOC","enforceCaptureOfExistingCoverage","AddExistingCoverageCard","PlaylistAdd_default","ExistingCoverageCarrierInformation","validateCarrierName","validateIdNumber","employerCoverage","requiredFlag","priorEmploymentInformation","existingCoverageTypes","priorEmployerCoverage","validateCancellationDate","validateEmployerName","validateEmploymentDate","validateCoverageType","warnCancellationDate","requiredForSubmissionIf","ExistingCoverageEnrolleeFieldArray","policyEnrollee","coveredSearch","_ownProps$employee","employmentValue","coveredEmployees","changeFirstName","changeLastName","changeGender","changeDateOfBirth","changeAddress","changeCity","changeState","changeZipCode","changeExistingPolicyHolder","priorFloridaBlue","priorEmblemHealthcare","priorCollectDependents","existingCoveragePolicyHolder","showRetirement","relationshipsToPolicyHolderTypes","updateValues","waivedEnrollees","enrollee","FormHelperText","existingCoverageFormData","getWorkStatus","ExistingCoveragePrescriptionInformation","priorEmblemHealth","existingCoverageDependentsDental","existingCoverageDependentMedical","existingCoverageCarrierInfo","existingCoverageMedicalRx","existingCoverageEmployer","medicalCovered","dentalCovered","existingCoverageSelected","removeButtonStyling","existing_coverage_policy","disabledEnrollees","existing_coverage_carrier_info","existing_coverage_prescription_information","existing_coverage_employment_information","newExistingCoverage","generateDisabledEnrollees","pol","existing_coverage_fields","showAddExistingCoverageButton","add_existing_coverage_card","medicalExistingCoverage","dentalExistingCoverage","existing_coverage_base_fields","ExistingCoverageFieldArray","requiredSubscriberID","SubscriberIDForm","DocumentButton","docButton","textOverflow","level","headerSelected","headerDisabled","radioIcon","radioIconMobile","withRadioPaper","selectedText","onSelected","disabledToolTipText","typeOfRequiredEnrollee","selectedStyle","RadioIcon","RadioButtonCheckedIcon","RadioButtonIcon","smUp","timeout","marks","setMarks","maxValue","setMax","lifeBenefitAmount","currentValue","setValue","amounts","benefitRange","benefitInterval","maxBenefitAmount","minBenefitAmount","interval","intervals","generateIntervals","mar","addLabel","midPoint","buildMarks","Slider","aria-labelledby","valueLabelFormat","valueLabelDisplay","onBenefitAmountSelected","throttleAndNotify","disableSlider","_LifeDisabilityElectionCardBase","summaryDocLookupId","otherDocsLookupId","isLife","isDisability","benAmount","lifeBenefitAmountInitialValues","isFlatAmountType","isMultipleOfSalaryType","mainBenefits","percentageOfSalary","isCoveredPayrollEligible","extraBenefits","summaryDoc","otherDocs","onBenefitAmountChanged","logo","showBothCosts","tooltipMessage","whiteContentMobile","whiteContent","metal_rate_chip","cardWrapperDiv","benefit_amount_selector","planSelected","benefitName","benefitValue","document_button","greyContentContainer","mobileGreyContentContainer","expanded","benefitDetails","benefitTitle","expandedBenefit","otherDocsContainer","overflowWrap","LifeDisabilityElectionCardBase","DocsLink","handleMenuOpen","handleMenuClose","buttonLink","docMemo","benefitsMemo","benefitLookups","bl","docShortner","benefitsDisplay","isVoluntaryOrGAP","_props$classes2","cardWrapperDivOverflow","tableRow","leftPadding","mobileBenefitRow","benefitDetailsMobile","docContainer","leftPaddingB","mobileDocContainer","noPadding","planSummary","otherDocsLookup","isGapLoc","aria-controls","PlanElectionCardBase","planSumLookup","critIllnessBenAmountLookup","benefitPayoutAmountLookup","benefitPayoutLookup","critIllnessguaranteedIssueLookup","guaranteedIssueLookup","planMemo","lb","_hideExpandable","bm","displayedBenefitsMemo","lookupId","availableBenefits","missingBenefits","calculatedValue","getBenefitValue","changeDisplay","_getCoverageLevel","getCoverageLevel","isCritIllnessBenAmount","isBenefitPayoutAmount","isBenefitPayout","isGuaranteedIssueLookup","employeeAge","ar","overflowAuto","displayedBenefits","coverageLevelValue","SecondValue","textRight","docs_link","hideExpandable","greyContentMobile","expandable_card","PlanElectionCard","getSelectedPlan","selectedPlanId","autoCoverageList","isAutoEnroll","autoCoverageWithClass","autoCoverage","isAutoEnrollEmployeeOnly","empOnlyId","isAutoEnrollEmployeeAndDependent","empAndDepId","getSelectedPlanId","getElectionOrDefaultDependents","dependentsResult","selectAllChildren","selectSpouse","getElectionOrDefaultWaived","cov","getSelectedDependents","otherDeps","selectAllDependents","childrenTypeIds","addNewDependent","deps","getAgeAtEffectiveDate","Crown","WeddingRings","fullWidthPaper","leftMargin","enrolledColor","autoEnrolledColor","&:disabled","waivedColor","waivedBackground","enrolled","onEnrolled","onWaived","isEnrolled","isAutoEnrolled","notYetElected","Grid_default","Icon_Icon","CheckCircleOutline_default","Cancel_default","HighlightOff_default","DependentPlanElection","employeeParticipantTypeId","isEmployeeAutoEnrollEnabled","onEmployeeChecked","isEmployeeAllowed","handleDependentWaivedReason","onDependentReasonSelected","handleEmployeeWaivedReason","onEmployeeWaivedReasonSelected","selectedDependents","dependentReasons","waivedDependents","disabledDependents","sortedDependents","isDependentAutoEnrolledEnabled","electionOrWaive","smallCell","enrollee_chip_toggle","isEmployeeChecked","isEmployeeWaived","isEmployeeDisabled","icon_crown","onEmployeeWaived","sel","dependentTypeKey","isSpouseOrDomesticPartner","dependentTypeReasons","isDependentAutoEnrollEnabled","icon_wedding_rings","SupervisorAccount_default","onDependentChecked","onDependentWaived","allowedCoverageLevels","allowedCoverageTypes","enrolleeTypes","isSpouseEligible","s","isChildEligible","isAnyDependentEligible","coverage","getAllowedCoverageTypes","isEmployeeEnrolled","selectedCoverage","isSpouseEnrolled","isChildEnrolled","isAnyDependentEnrolled","isEfAllowed","isEcAllowed","isEsAllowed","isEEAllowed","determineElectedCoverageLevel","setCoverageLevel","selectedCoverageLevel","isAlreadySelected","onWaive","currentViewStyles","formControl","contributionGrid","annualContribution","gridPadding","amountPadding","annualAmount","employeContribution","hsaMargin","contribTypeValue","setContribTypeValue","hsaAmountLabel","setHsaAmountLabel","contributionAmountMessagePrefix","setContributionAmountMessagePrefix","contributionAmountMessageSuffix","setContributionAmountMessageSuffix","_React$useState9","_React$useState10","contributionAmount","setContributionAmount","_React$useState11","_React$useState12","hsaFieldAmount","sethsaFieldAmount","hsaMaxValueAllowed","hsaMaxValueValidator","setContribTypeLabels","hsaAmount","annualContribValue","payPeriodName","payPeriodContribValue","hsaEligible","updateHSAMode","updateHSA","RenewalQuestionsSection","renewal_questions_form","renewalInitialValues","AddPrimaryCareCard","PrimaryCareInformationFields","primaryCareInfo","_ref2$onPrimaryCareUp","onPrimaryCareUpdated","_","_ref2$onPrimaryCareRe","onPrimaryCareRemoved","_useState","_useState2","pcpEnrolleeChecked","setPcpEnrolleeChecked","changeId","changeName","updateExistingPatient","updateAssignDoctor","checkboxControl","pcpWithAnyEnrolleesSelectedExist","isEnabled","italicText","greyText","toolTipContainer","linkDiv","PrimaryCareInformationCard","primaryCareDtos","onPrimaryCaresUpdated","initialPrimaryCare","otherPcps","pcpWithNoEnrolleesSelectedExist","allowAddPrimaryCare","pcp","primary_care_information_PrimaryCareInformationFields","removedPcp","primaryCare","updatedPcp","add_primarycare_card","reqIfNotReducedValidation","PlanQuestionsAnswersFieldArray","_levelIdToLabelMap","getMemberLevelId","levelIdToLabelMap","questionStyles","_fields$get","dependentAnswer","answerIdx","selectPlanQuestionsState","getFormValues","getFormError","employeeLevelId","spouseLevelId","checkDisqualified","answerDisqualified","employeeAnswer","_error","pure","health_knockout_questions","_ref$error","_ref$savedAnswers","selectedLOCPlans","q","flattennedQuestions","plan_questions_form","major_medical_coverage_questions","medicare_questions","reqValidation","IS_LIFESECURE_QUESTION_ID","COMPANY_NAME_QUESTION_ID","COMPANY_ADDRESS_QUESTION_ID","POLICY_NUMBER_QUESTION_ID","LIFESECURE","PlanReplacementCoverageQuestionsAnswers","displayChildren","isLifeSecureValue","tableStyles","disableCompanyName","hideCompanyAddress","displayBlock","width_1_25","justifyLeft","width_85_percent","selectPlanReplacementCoverageQuestionsState","isLifeSecureField","isLifeSecureFieldValue","companyNameField","companyNameFieldValue","companyNameIndex","companyAddressField","companyAddressFieldValue","companyAddressFieldIndex","policyNumberField","policyNumberFieldValue","policyNumberFieldIndex","ReplacementCoverageQuestions","replacementCoverageValues","updateReplacementCoverageFormValues","questionValues","flattenedQuestions","isLifeSecureQuestion","companyNameQuestion","companyNamePrevValue","companyAddressQuestion","companyAddressIndex","companyAddressPrevValue","plan_replacement_coverage_form","specified_disease_questions","getPayPeriodAmount","payPeriodFrequency","educationalPaper","educationalInfoText","EduInfoCards","filteredData","educationalInfo","HelpOutlineOutlined_default","AssignmentTurnedInOutlined_default","TrackChanges_default","KNOCKOUT_QUESTIONS","MAJOR_MEDICAL_COVERAGE_QUESTIONS","MEDICARE_QUESTIONS","SPECIFIED_DISEASE_QUESTIONS","REPLACEMENT_QUESTIONS","RENEWAL_QUESTIONS","PRIOR_COVERAGE","ElectionContainer","employeeLookupId","originalState","employeeMemberLevelLookupId","spouseMemberLevelLookupId","childMemberLevelLookupId","annual","isHorizonPlanOffered","spouseLOC","childLOC","hasStateChanged","selectedWaive","waiveReasonId","dependentWaiveReasonId","hsaamount","dependentWaivedReasons","employeePayFrequency","electionFilter","getEmployeeDisabled","getDisabledDependents","disabledCheck","getEmployeeChecked","planToCheck","employeeChecked","handleEmployeeChecked","determineIfWaiving","isSelecting","modifiedEmployee","updateEmployeeElections","notifyElectionChanges","throttleCalculateCosts","addCoverage","updatedEmployee","updateLinesOfCoverage","updateDependentElection","handleEmployeeUnchecked","holdPlanId","forceUpdate","checkIsWaiveSelectedAfterDependentAdded","newSelectedDependentList","handleAddDependent","isWaiveSelectedAfterDependentAdded","newWaivedDependentList","splice","waivedReasons","handleWaiveDependent","lastRecalculateRequest","throttleReCalculateCosts","getLinkedPlanToolTip","lps","getAppropriateLinkedPlans","matchedPlan","employeeHasDependentType","continueMatch","checkPlanDisabled","linkedPlanIds","lp","groupedMap","entryMap","set","Map","allGood","goodWithin","_loop2","j","allWaived","handlePlanSelect","employeeEligibleForSelectedPlan","updateDisabledDependents","waivedDependentReasons","waiveIndex","handleDependentsForCalcs","handleWaiveReasonSelect","handleDependentWaiveReasonSelected","depId","handleUpdateHSA","dollarAmount","payperiodAmount","handleUpdateHSAContributionMode","goToNextPage","existingCoverageValues","hasExistingCoverageValues","isHsaPlan","mapQuestionAnswer","updatedDependents","finalizedDependents","isItSameCarrier","dependentDroppedEnrollees","isCurrentEnrolleesNotSure","employeeSkippedRenewalQuestions","updatedElection","_basicLifePreviousAmount","newElection","_args","existingCoveragePoliciesSectionActive","vs","added","modified","planQuestionAnswer","majorMedicalCoverageValidation","knockoutAnswersValidation","medicareValidation","specifiedDiseaseValidation","replacementCoverageValidation","americanPublicLifeValues","lifeBenefitAmountValues","renewalQuestionsFormValues","droppedEnrollee","subscriberFormValues","basicLifePreviousAmountValues","updateElection","createElection","onExistingMemberRadio","generatePolicyEnrollees","importedRenewals","existingRenewal","importedRenewal","getInitialValuesFromImport","enrolleesArr","currentDepEnrollees","en","subscriberInitialValues","basicLifePreviousAmountInitialValues","americanPublicLifeFormInitialValues","lifeAmountInitialValues","determineSelectedMemberLevels","isEmployeeSelected","requiredEnrolleeMemberLevelId","getRequiredEnrolleeMemberLevelId","getRequiredEnrolleeMemberLevelString","requiredEnrolleeType","validateDependentsSelections","validateSubscriberID","subscriberID","eligibleForEnforcingExistingCoverage","employeeWaiveReasonId","electionPlanId","electionOrDefaultDependents","companyPayCycle","employeePayCycle","employeesPayFrequency","spouseMemberLevelId","childMemberLevelId","planParticipants","isAutoEnrollEnabled","employeeWaiving","ageCheck","dependentIsStudent","dependentHasDisability","createDisabledCheck","getMaximumEligibleParticipants","participantsEligibleOnAnyPlan","y","sPlan","empDependents","locSet","onElectionChanged","renderedWarnings","plansEffectiveDate","displayMedicaidAlert","isCriticalIllness","dependentInCurrentEnrollees","waivedenrollees","elect","visionCoverageArray","flattenedPolicies","hasOwnProperty","isExistingCoverageValid","disableSaveForNoEnrollees","validHsaValue","showHsa","participantEligibility","isDependentDisabled","majorMedicalQuestions","knockoutQuestions","replacementQuestions","medicareQuestions","specifiedDiseaseQuestions","LOC","PlanCardComponent","LifeDisabilityElectionCard","hasExistingCoverage","hasSubscriberMemberId","hasBasicLifePreviousAmount","hasAmericanPublicLifeBrochure","hasExistingMember","hasDisplayOnWaiver","selectedPlanHasWaiveDisplay","displayOnWaiveConfigLoc","displayOnWaiveConfigDental","displayOnWaiveConfigMedical","displayOnWaiveConfigVision","isLocElectiveVoluntary","displayAdditionalInfoHeader","validateSubscriberIDNumber","countDependentWaiveReasons","countWaivedDependents","electionIncomplete","isMissingLifeBenefitAmount","365","52","26","24","12","4","isDroppedEnrolleeAdded","enforceCapturingExistingCoverage","fullDisableSave","isAmericanPublicLifeValid","isExistingCoverageMissingKeyFields","fullDisableSaveReduce","educationalInfoCards","step_circle","dependentHeader","firstLetterCap","dependent_plan_coverage_election","dependent_plan_election","dependentWaivedReasonId","renderElectionWarnings","planCosts","_cost","amt","minAmt","maxAmt","hsa_card","payFrequency","primary_care_information","renewal_questions_section","dependentSubheader","existing_coverage_form","existingCoverageInitialValues","subscriber_id_form","basic_life_previous_amount_form","american_public_life_form","replacement_coverage_questions","questionMajorMedicalCoverageAnswers","questionKnockoutAnswers","questionMedicareAnswers","questionSpecifiedDiseaseAnswers","formButtons","majorMedicalCoverageQuestionsForm","knockOutQuestionsForm","medicareQuestionsForm","specifiedDiseaseQuestionsForm","_this5","_this6","_this7","_this8","saveButtonMargin","warningTitle","warningSubtext","calc","_plan","americanPublicLifeBrochureForm","subscriberForm","basicLifePreviousAmountForm","lifeBenefitAmountForm","replacementCoverageQuestionsForm","locValue","_x11","_x12","_x13","EmployeeAdditionalInformation","empRenewal","depRenewal","saveAdditionalInfo","cleanAttributes","employeeAdditionalInformation","updatedEmployeeDTO","depObj","dependentIndex","dependentAdditionalInfo","hasTobaccoUser","isRenewalAdditionalInfo","hasRenewalInfo","employee_additional_info_form","guidedEnrollmentButtonMarginMobile","syncErrors","EMPLOYEE_ADDITIONAL_INFO","EmployeeDocumentAcknowledgment","saveDocuments","employeeAcknowledgedDocuments","acknowledgedDocument","acknowledgmentId","existingDocuments","documentList","createInitialValues","employee_document_acknowledgment_form","EMPLOYEE_ACKNOWLEDGED_DOCUMENTS","MaritalStatusChangeDialog","onConfirm","EmployeeEligibilityChangeDialog","defaultHours","_isMultiSalary","lifeLocs","disabilityLocs","lifeAndDisabLoc","lifeAndDisabilityPlans","RtpContentLocation","companyPayrollCycleId","showValidationAlert","fetchPlansForEmployee","showDepElectionWarning","setShowDepElectionWarning","showEmployeeEligibilityWarning","setShowEmployeeEligibilityWarning","dependentChanged","setDependentChanged","userSubmitted","setUserSubmitted","_React$useState13","_React$useState14","currentEligibility","currentWaiving","_React$useState15","_React$useState16","isEmployeeInEligible","setIsEmployeeInEligible","_React$useState17","_React$useState18","setIsEmployeeWaiving","mailingAddress","emptyAddress","validateAndSubmit","saveContinue","processSubmit","waivingOrIneligible","seasonalOrUnion","deletedDep","deletedDepDTO","isPartnerEmployedAtSameCompnay","formDep","handleSaveClick","isMultiSalary","electionSubmittedOrCompleted","employee_upsert_form","operation","employeesNotWaived","getElectedDependents","marital_status_change_dialog","employee_eligibility_change_dialog","Reopen","groupText","forceBreak","ContactInfoCard","_contactInfo","cityStateZip","country","zipFormatted","cityStZip","addressValue","phoneFormatted","alignLeft","relType","relationshipType","birthDate","EmployeeReviewCard","genderInfo","empStatusInfo","empStatus","empBirthDate","empHireDate","payCycleInfo","payCycle","hasDependents","employeeDependents","empSSN","empSSNMask","hasContacts","otherAddresses","empAddresses","dependentTypes","canNavigateSteps","contact_info_card","depDOB","depSSN","depTypeInfo","depSSNMasked","dependent_info","PlanPreviewDialog","PlanReviewCard","displayRelationshipType","handlePreviewButtonClicked","planPreviewOpen","handleClosePreviewDialogue","handleEdit","canViewPreview","showBoth","noneWaivedDependends","displayLOC","editMode","displayWaivedReason","hasWarnings","warningMessage","plan_preview_dialogue","ListItemIcon","inset","elecDep","isNumber","ScriptLoader","scripts","failed","pending","onLoad","loadSrc","createScriptTag","resolved","errored","getElementsByTagName","tag","async","handleLoad","handleReject","onreadystatechange","readyState","appendChild","RtpContent","win","rtpAppKey","isRtpKeyConfigured","electionTop","contentId","electionBottom","electionLeft","rtp","Munchkin","completeRtpSetup","loadScripts","init","showContent","PlanSelectionSummary","reopenedStatusId","notStartedStatus","electionsSubmittedStatusId","signaturePendingStatus","renewalQuestionsPendingStatus","kaiserCarrierCode","submitOnEmployeeBehalf","submitByEmployee","submitByEmployeeInBrokerPresence","isInternalUser","californiaId","mississippiId","loadingOffSuccess","kaiserAccepted","isKaiserAgreementAccepted","changeSignature","employeeConfirmed","changeSignatureCity","signatureCity","employeeSignatureCity","isEmployeeSignatureCityDirty","employeeCityStateConfirmed","employeeSignatureState","changeSignatureState","signatureState","isEmployeeSignatureStateDirty","changeSpouseSignature","spouseSignature","spouseConfirmed","openAgreement","fetchKaiserUrl","getResponse","saveKaiserResponse","reopenEnrollment","selectedSubmitEnrollmentId","defaultSubmissionEnrollmentId","obtainedEmployeePermissionChecked","acknowledgedAndAgreedToElectionsChecked","getElectionsReviewUrl","_getConfigurationTypeIds","_enrolleeConfigurationTypes","_isSpouseIncludedInElection","anySpouseInElections","anySpouse","allTrue","finalizedElection","signatureType","electionsReviewUrl","signaturePending","spouseSignatureCity","spouseSignatureState","obtainedEmployeePermission","acknowledgedAndAgreedToElections","renewalQuestionsPending","isRenewalQuestionsPending","submitEmployeeEnrollment","confirmOnEmployeeBehalfBoxOne","confirmOnEmployeeBehalfBoxTwo","getKaiserMedicalPlans","kaiserStates","_isKaiserPlanElected","kaiserPlans","_nonQualifyingSubmissionOnBehalfOfEmployeePlan","isKaiserAgreementRequired","isKaiserPlanElected","isEmployeeCAOrMissResident","confirmedOnEmployeeBehalf","isEnrollmentMine","readyToSubmit","enrollmentEndDate","payPeriodDescription","isElectionCompletedOrReopened","isEntireScreenReadOnly","rtp_content","isElectionsCompleted","AccessTime_default","isElectionReopened","icon_reopen","employee_review_card","plan_review_card","isSignaturePending","isElectionsSubmitted","isOpenEnrollmentExpired","disableOnBehalfOfEmployee","nonQualifyingSubmissionOnBehalfOfEmployeePlan","isSubmitOnEmployeeBehalf","isSubmitByEmployee","isSubmitByEmployeeInBrokerPresence","defaultValue","electionLSICarrierExists","signatureCityValid","shouldDisableSignature","isSpouseSignatureRequired","canSubmitEnrollment","isSpouseIncludedInElection","isLsiSignatureExpected","isSpouseConfirmed","isEmployeeConfirmed","signatureLSICityStateConfirmed","hasPlan","areSignaturesRequiredAndPresent","isMissingNeccessaryKaiserAgreement","isSubmitEnrollmentSelection","employeeStateId","lsiPlanIds","masterEmployeeId","finalizedElections","_callee19","kaiserUrl","_context19","_ref20","_callee20","_context20","_x22","canReopenElections","isInEligibleEmployee","GuidedEnrollment","electionCompleteId","electionSubmittedId","ltdLOC","stdLOC","medicalLOC","visionLOC","dentalLOC","childLifeLOC","groupLifeLOC","spouseLifeLOC","suppLifeLOC","accidentLOC","criticalIllnessLOC","hospitalLOC","petLOC","identityProtectionLoc","legalLoc","gapLOC","masaLOC","lifeLOCs","primaryBeneficiary","_employee","_employeeInfoStatus","employeeStatusList","_isEnrollmentMine","compnayContacts","myEmail","beneficiarySums","sums","contingent","hasBasicSupplementalLifeElections","basicSupplementalLifeLOC","personalInfoStepId","AccountCircleIcon","blueIcon","beneficiariesStepId","PeopleIcon","documentAcknowledgmentStepId","additionalInfoStepId","InfoOutlinedIcon","reviewStepId","AssignmentTurnedInIcon","calculatePlanCosts","fetchImportedRenewals","_fetchImportedRenewals","computeStepInfo","hideAdditionalInfo","hideBeneficiaries","hideDocumentAcknowledgment","employeeInfoStatus","nextStep","stepIdVarName","getStepUrl","getWarningMessage","warningMsgs","_this$props$classes2","enrollmentSetUpMsg","backToDashboard","_getBreadCrumb","goBack","nextStepId","initialLoading","EnrollmentSteps","isSuperAdmin","_this$computeStepInfo2","showPrintIcon","electionComplete","hasDOB","hideEnrollmentCostSummary","AbandonChangesOption_AbandonChangesGuard","guard","primaryTitle","titleMobile","printIconBox","icon_print","print","printIcon","election_cost_summary","reopen_elections","employee_upsert","election_container","currentSelectedElection","beneficiaries_container","employee_document_acknowledgment","employee_additional_information","plan_selection_summary","notFound","employeeIdVarName","isNaN","CompanyContacts","paddedContent","isEmployUpsertDirty","FORM_EMPLOYEE_UPSERT","isEmployUpsertValid","isBeneficiarDirty","isAdditionalInfoDirty","isDocumentAcknowledgmentDirty","isLocalHost","personaSelection","EmployeeLanding","shouldGoToGuidedEnrollment","goToGuidedEnrollment","getLinesOfCoverage","locIds","locsPresent","baseLOCs","enrollmentYear","h4ToH6","h6ToSubtitle","currentEmployee","isIneligible","outerGrid","lightWeight","eventIcon","countdown","fullHeightPaper","locListPadding","locSpan","iconLOCMobile","iconLOC","infoList","infoListMobile","infoItem","listStyle","noLeftPadding","onlyIcon","flexIconCell","iconCell","setupComplete","hasContributions","isAutoEntoll","warningBlock","DeletePlanDialog","canDelete","dependentPlans","confirmCopy","CopyPlanDialog","isClearContents","onClickClearContents","isCopyData","onClickCopyData","isCopyRates","onClickCopyRates","isCopyDocuments","onClickCopyDocuments","isCopyContributions","onClickCopyContributions","isCopyEligibility","onClickCopyEligibility","dependentPlansToDelete","handleCopyConfirmed","idToCopy","nameToCopy","handleCopyCancelled","copyDialogOpen","handleCopyOpened","_rowType","plan_row","handleClickClearContents","_e","handleClickCopyData","handleClickCopyRates","handleClickCopyDocuments","handleClickCopyContributions","handleClickCopyEligibility","delete_plan_dialog","copy_plan_dialog","validateGroupCount999","validateGroupCount","PlanSearchForm","importLoading","loadingCarriers","counties","loadingCounties","countyName","countySpinner","submitButton","useCarriers","useCounties","zipcode","formattedCounties","storeCounties","PlanImportTable","setSearchText","setPage","setSize","searchInputProps","PlanImportRow","onPlanSelected","universalPlanId","setHover","rowStyle","PlanImportDialog","clearCarrier","clearCounties","companyZipCode","companyCounty","enrollmentstate","searchPlans","importPlan","handlePlanImported","setPlanList","setImportLoading","cachedFormValues","setFormValues","countiesState","updateCounty","countyIndex","stateCode","handlePlanSelected","stateLookup","partialPayload","newPlanId","_isCustomPlanAllowed","space","plan_search_form","plan_import_table","savePlanSearchValues","allowCustomPlansSetting","_getState","_getState2","importedPlan","storePlan","clearFields","storePlanSearchValues","PlanList","loadingPlans","planImportDialogOpen","dialogClosed","goToPlanSetup","_routes$planSetup","handleCopy","copyPlan","_routes$planSetup2","setLinesOfCoverage","sortPlans","planCount","tableContent","PlanEdit","plan_table","plan_import_dialog","getDefaultFormValues","savedPlan","AgeRestrictionsFieldArray","isMinMaxAgeDefaulted","disableField","ageRestriction","m","AutoEnrollCard","validateAutoEnrollId","toggleAuto","allowAutoEnroll","selectedClassids","locPlans","flag","disableAutoEnroll","selectedClassIds","mainStyles","toggleDiv","isFlat","fullWidthWrapper","checkedBackground","checkedBackgroundAutoEnroll","RadioButtonUnchecked_default","ClassesFields","initialToggleClasses","enabled","toggleClasses","setToggleClasses","goToClassTab","classesArray","deselectClass","PlanClassesFieldArray","classesIcon","chip_toggle","AssignmentInd_default","LinkedPlanFieldArray","selectedLinkedPlans","savedPlanClassesIds","displayWarning","matchedClassesPlans","linkPlan","orangeIcon","linkedElectionPlans","selectedLinkedPlanIds","NewHireWaitingPeriod","waitingPeriodOptions","waitingPeriodTypeIdSelected","waitingPeriodRequired","isReadyOnly","wp","warnIcon","warnMessage","ParticipantFieldArray","common_styles","eligibility","shortDisability","longDisability","basicLife","suppLife","spouseLife","childLife","pet","legal","eligible","isParticipantEligible","PlanCoverageLevelMessage","messageTitle","PlanModificationMessage","electionMessageTitle","ageResrictions","availableElectionPlans","isSetupComplete","isBrokerAndSubmitted","participant","electionPlan","plan_modification_message","plan_coverage_level_message","showCoverageApprovalWarning","coverageMessageTitle","classes_fields","ec","auto_enroll_card","selectedLocId","new_hire_waiting_period_fields","AmountField","property","subheaderAge","containerHeader","containerItem","divParent","AgeBandedRateFieldArray","showGenderRates","showTobaccoRates","showAgeBandedTierTobaccoRates","memberLevels","getLookupIdForRate","uniqueMemberLevelIds","ageRanges","rateDisplay","rateA","rateB","headerLookupsById","h","rateALookupId","rateBLookupId","getHeaderValue","ageRange","maxMin","generateAgeLabel","age_banded_table_AmountField","compositeRatesDiv","costPerUnitInfoText","CompositeRateFieldArray","showCostPerUnit","FlatRatesDiv","FlatRateFieldArray","IndividualRateFieldArray","RatesUpsertForm","rateTypes","changeRateType","showSwitcher","handleIncludeTobaccoChange","toggleTobaccoSwitcherEv","isTobaccoChecked","handleIncludeGenderChange","toggleGenderSwitcherEv","isGenderChecked","showRatesWarning","_this$props$isReadOnl","showLevelFundedWarning","validateUnitAmount","levelFundedText","rateTypeDiv","switcherHeader","AgeBandedTable","switcherText","PlanDocuments","summaryTypeId","otherTypeId","planDocumentsToolTip","goToGroupAppDocs","isGroupSubmissionExportOnly","filterSummaryDocs","filterOtherDocs","uploadSummaryDoc","upsertDocumentToPlan","uploadOtherDoc","docOnEdit","docTitle","acknowledgmentDocument","infoUri","docsHeader","docsSubHeader","summaryDocs","otherDocsHeader","TwoLabelToggle","leftLabel","rightLabel","formatColumn","fieldName","invalidRow","validRow","cellName","ContributionPreviewRow","calculationRow","cellStyle","ContributionPreviewTable","calculationRows","sortedCalculationRows","handleSortClick","newSortedCostCalculations","numeric","previewTable","cellRightAlign","contribution_preview_row","invalidCalculationRows","ContributionUpsertPreview","monthlyLookupId","getValidRows","getInvalidRows","togglePreviewAsMonthly","previewAsMonthly","updateCalculations","request","constructCalculationRequest","setReady","planFormData","basePlanId","setNotReady","planLOC","payRollCycle","displayToggle","validRows","invalidRows","two_label_toggle","scrollBox","contribution_preview_table","footnote","createCalculationRowArray","coverageLevelString","PlanContributionInfo","isFlatRate","PlanContributionDialog","newSortedPlans","sortedPlans","selectPlan","onPlanClick","updatedPlans","onCopyPlanClicked","onCopyToPlans","sortingColumn","openDialog","plan_contribution_info","getContributionLabel","ContributionFieldArray","hideAmount","PlanSameContributionMessage","ContributionsUpsertForm","memberLevelContributionTypeId","coverageLevelContributionTypeId","flatDollarContributionModelTypeId","percentContributionModelTypeId","updateContributionModelType","isFlatRateToggleEvent","filterValidPlansForCopyContributions","isMemberLevelContributions","hasEmployeeAndDependentParticipants","hasEmployee","handleCopyClicked","cancelCopy","handleCopyContribution","onCopyClick","onContributionLevelIdChange","lookupAdditional","contributionLevelDisplay","getBasePlanContribution","baseRate","calculatedContributionBasedOnBase","savedPlanRate","savedRateAmount","calculatedRate","validPlansForCopyContributions","plan_contribution_dialog","availableBasePlans","isLifeOrDisability","basePlanTypeAllowed","isBasePlanContributionType","basePlanSelectedWithContributions","hideContributionTable","headerInfoText","plan_same_contribution_message","showSameContributionWarning","contributionMessageTitle","coverageLevelRadio","memberLevelRadio","basePlanRadio","contributionAmountHeader","copyButtonDiv","copyButtonText","copyButtonHelp","contribution_upsert_preview","AgeReductionFieldArray","lastRowIndex","displayAgeReduction","updateAgeReductions","displayPCP","PlanBenefitsFieldArray","positiveNumberValidator","isNumeric","showFeatures","showPCPRequired","showHSAElegible","inputStartProps","inputEndProps","PlanLifeInsuranceFields","flatAmountId","multSalaryId","incrementAmountId","linkedAmountId","dontRoundId","guaranteedIssueInputAdornment","validateIncrementMax","minValue","validateMax","validateGuaranteedMax","validateGuaranteedMin","noReturn","benefitAmountRequired","benefitAmountTypeRequired","minimumRequired","guaranteedAmountRequired","isMultipleOfSalary","isIncrementAmount","isFlatAmount","isLinkedAmount","isPercentValue","showMinAndMaxBenefits","benefitAmountLabel","sectionHeaderText","getBenefitAmountType","secondValue","groupOrSuppPlans","getRoundingMethod","otherAmount","benefitRoundingIntervalString","groupOrSupp","characterLimit280","PlanNotesFields","AddCarrierDialog","carrierNameCharacterLimitExceeded","updateCarrier","characterLimit255","validateState","validateLineOfCoverage","validateCarrier","validatePlanType","planTypeLookup","validatePlanDisplayName","validatePlanSystemName","validateEffectiveDateList","PlanOverviewFields","cancelModal","otherValue","closeModal","addModalOpen","openModal","setModal","updateOther","updateCobraToggle","showCobraEligibility","isEdit","differentState","differentCoverage","disableLevelFunded","getPlanFundingType","getMetalLevels","add_carrier_dialog","PlanWaiverFormReminderMessage","EffectiveDateChangeMessage","showEffectiveDateChangeWarning","messageHeader","effectiveDateChangeTitle","PlanCyberScoutElectionMessage","negativeBottom","showRiderOptionWarning","effectiveDateWarning","showSicCodeWarning","awsSicCode","isBasicOrSuppLife","planConfigurations","plan_waiverform_reminder_message","showWaiverFormReminder","waiverFormReminderTitle","effective_date_change_warning","effectiveDateMessageHeader","plan_cyberscout_election_message","showGroupEligibilityWarning","groupEligibilityMessageTitle","showMetLawWarning","isCustomCarrierPlan","showEffectiveDateWarning","plan_overview_fields","plan_features_fields","pcp_fields","plan_life_insurance_fields","age_reduction_fields","plan_notes_fields","PlanUpsert","isBMallUser","compositeRateKey","AgeBandedRateKey","AgeBandedTiersRateKey","AgeBandedIndividualRateKey","coverageLevelContributionKey","basePlanLevelContributionKey","memberLevelContributionKey","memberLevelTotalDependentsContributionKey","flatRateKey","stdId","ltdId","flatDollarModelTypeId","weeklyPayoutId","monthlyPayoutId","multipleSalaryTypeId","isChangingPlan","clickedSectionIndex","warningForTabCheck","findPlan","salaryWarning","benefitAmountWarning","generateBenefitListForPlan","planBenefits","_getOtherPlans","_getDependentPlans","generateRateList","generatedRates","deleteLoadingOn","deleteLoading","deleteLoadingOff","copyLoadingOn","copyLoading","copyLoadingOff","handleSectionChange","sectionIndex","handleCloseAbandonChangesDialogue","planSwitchId","handlePlanSwitcherChange","onPlanChange","handleSectionSwitcherContinue","handlePlanSwitcherContinue","copy","newCopy","copyContribution","selectedPlanName","openCopyModal","closeCopyModal","handleSubmitInfo","selectedCarrier","isMultipleSalary","isDisablity","defaultRateTypeId","defaultContributionLevelId","defaultContributionModelType","defaultParticipants","multipleEnteredAsPercent","isLevelFunded","otherRoundingInterval","linkedBenefitPlanId","updatePlan","getEffectiveDateWarning","addPlan","handleSubmitEligibility","saveClassIds","participantsChanged","isBaseContribution","isContributionListEmpty","linkedPlanElections","updatedPlan","formPart","curPlanPart","planPart","handleSubmitRates","flatRateAmt","flatRateAmount","rl","handleSubmitContributions","plansWithIncompatibleContributions","showIncompatibleContributionsWarning","_showIncompatibleContributionsWarning","confirmed","fetchPlan","getWaiverFormReminderTitle","getLocSortOrder","getLinkedLoc","lPlan","linkLocId","getAvailablePlans","aplan","lplan","tempLocId","locsToSkip","continueLoc","iStart","newLocs","includePlans","PLAN_INFO_FORM","RATES_FORM","CONTRIBUTIONS_FORM","ELIGIBILITY_FORM","planOriginalEffectiveDate","newBenefits","filteredPlanTypes","newPlanTypeId","changeBenefits","changePlanTypeId","newRates","changeRates","newContributions","changeContributions","disableSteps","updatedTabs","warningForTab","getElementsByClassName","removePlanSearchValues","rule","rateTypeKeys","contributionLevelKeys","k","allowedContributionTypes","ratesAreReadOnly","isEligibilityReadOnly","formDataInfo","isEligibilitySaveReadOnly","filteredSortedAvailablePlans","coverageMessageWarning","orginialEffectiveDate","probableEffectiveDate","probableEffectiveDateLong","withinDays","sicCodeWarningFlag","mismatchSicCode","mainControl","noMargin","copyIcon","previewButton","planLibraryButtonText","plan_upsert_form","rates_upsert_form","formDataRates","contribution_upsert_form","formDataContributions","getOtherPlans","getAvailableBasePlans","eligibility_upsert_form","plan_documents","groupSubmissionList","ratesList","savedPlanSearchFields","sh","changePayoutId","newPayoutId","createdPlan","refetchPlanDocuments","copyContrib","copyContributions","PlanUpsertBase","handlePlanChange","handleGoBack","_routes$planList2","plan_upsert","fetchOverrideToken","tokenRequest","overrideToken","setRedirectUrl","setError","emails","given_name","family_name","override_persona_form","overridePersona","fetchRenewalImportTemplate","downloadRenewalImportTemplate","stepHeader","cardBrowseButton","DocumentCard","onFileRemoved","fileSelected","document_card","onRenewalImportFileRemoved","selectedFile","onRenewalImportFileSelected","marginTop20","marginRight10","RenewalImportAcknowledgement","acknowledged","setAcknowledgement","inProgressAndCompletedElections","onAcknowledgementChanged","centered","bigText","successIconContainer","colWidth25","colWidth30","handleRenewalImportFile","acknowledgementRequired","fileToUpload","electionRenewalSyncError","uploadAndProcessRenewalImportFile","importInProgress","setImportInProgress","importStatus","setImportStatus","errorCategory","missingFields","additionalFields","importResult","setImportResult","onImportSuccessful","renewalImportResult","onImportCompleted","notStartedView","renewalImportFile","successfulView","failedView","defaultErrorMsg","missingFieldsInTemplate","additionalFieldsInTemplate","getErrorSummary","rowNumber","memberName","errorColumn","acceptableValues","RenewalImport","downloadStepId","uploadStepId","acknowledgementStepId","initState","notStartedId","renewalQuestionsPendingId","inProgressAndCompletedElectionsCount","completedElectionsCount","includeAcknowledgementStep","renewalImportSteps","initRenewalImportSteps","handleBreadCrumbClick","disableReviewStep","renewal_import_download_template","handleNextStep","renewal_import_upload_file","renewal_import_acknowledgement","justCompletedElections","renewal_import_review","handleStepClick","company_id","includeAcknowledgement","buildStep","stepLabel","exact","OverridePersona","externalLogin","externalLoginWithToken","logoutComplete","renewToken","externalLoginComplete","permissions","PlanSetup","blocks","authPolicy","employeeSignInSignUp","employerSignInSignUp","brokerSignIn","bmallSignIn","azureAdLogin","sessionStorageKeys","externalLoginFlag","jwtToken","msalToken","authErrorCd","authErrorDescription","externalLoginRedirectUrl","currentAuthPolicy","_isSuperAdmin","hasRole","removeItem","atob","jwtDate","newUser","roleId","clear","routeParams","computedParams","assertPolicy","block","assertBlocks","assertEnrollmentId","assertEmployeeId","employee_id","ms","jwtQueryParams","getQueryParamForSignUp","idpRedirect","returnUri","parseJwtToken","enrollment_user_type_id","loginExternal","isItCavnvasLogin","errorCd","tfp","uri","msalJwt","_http","endpoint","fetchOptions","fetchHeaders","fullURL","json","uuidv4","Authorization","Accept","fetch","_overrideToken","_transformToken","storeGroupSubmissionDocuments","storeCompanyContacts","storeEnrollmentClasses","storeCensusTemplates","censusImportXlsColumnList","storeLookups","parseSecondValue","storeCarriers","storePlans","removePlan","storePlanDocuments","storeSettings","combinedReducers","combineReducers","formReducer","isType","newInfoStatusList","indexToEdit","newList","electionIndexToEdit","enrollmentDTO","convertEnrollmentDTO","_c","group","plansDTO","pl","newTemplateList","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","createStore","applyMiddleware","thunk","rawLookups","cachedLookups","rawSettings","cachedSettings","ReactGA","pageview","UnauthorizedScreen","_401","stop_right_there","you_re_not_authorize","setBackUrl","button_text","ErrorScreen","explanation","AuthRoute","timoutRef","onSessionExpireWarning","sessionExpirationDialogOpen","onSessionExpire","slideSession","unauthorizedMessage","forceLogin","setAuth","routeProps","hasPermission","authorized","error_screen","unauthorized_screen","PriorityCircle","GlobalSnackbar","snackbarState","anchor","Snackbar","SnackbarContent","myStyles","checkmark","icon_circle_priority","deletion","createMuiTheme","contrastText","inputMarginDense","MuiTooltip","wordWrap","popper","MuiStepIcon","MuiInputBase","inputMultiline","MuiStepLabel","MuiFormControl","Loader","App","autoAdjustHeight","refreshCanvasTokenPeriodically","useUtils_cfb96ac9","utils","MomentUtils","es","react_router_dom","scroll_to_top","routeKey","auth_route","global_snackbar","gtmId","ReactDOM","render"],"mappings":"8EAAAA,EAAAC,QAAiBC,EAAAC,EAAuB,yHCUpCC,2KANEC,EAAYC,MAGLC,EAAiBF,EAAyB,mBAIhD,SAASG,EAAgBC,EAAiBC,EAA0BC,GACvE,sBAAAC,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAgBC,GAAhB,OAAAJ,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACCnB,GACAoB,aAAapB,GAEjBe,EAASZ,EAAe,CAAEkB,MAAM,EAAMhB,UAASC,UAASC,YACxDP,EAAasB,WAAW,kBAAMP,EAASZ,EAAe,CAAEkB,MAAM,MAAW,KALtE,wBAAAJ,EAAAM,SAAAT,MAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAQJ,SAASC,EAAavB,GAClB,OAAOA,EAAQwB,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAGjD,SAASC,EAAqBC,GAE1B,OAAIA,EAAaC,kBAAoBD,EAAaC,iBAAiBC,OAAS,EACjEF,EAAaC,iBAAiBE,IAAI,SAAAC,GAAE,OAAIA,EAAG9B,UAGlD+B,MAAMC,QAAQN,EAAaO,MACGP,EAAaO,KAC/BJ,IAAI,SAAAC,GAAE,OAAIA,EAAG9B,UAGH,OAAtB0B,EAAaO,MAAiBP,EAAaO,KAAKL,OAAS,EAElD,CADIL,EAAaG,EAAaO,OAIJ,OAAjCP,EAAaQ,iBAA4BR,EAAaQ,gBAAgBN,OAAS,EAExE,CADIL,EAAaG,EAAaQ,kBAIf,OAAtBR,EAAaO,MAAkD,OAAjCP,EAAaO,KAAKE,WACnCV,EAAqBC,EAAaO,MAI5C,CAAC,iBAGL,SAASG,EAA0BC,EAASC,GAC/C,sBAAAC,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAgB9B,GAAhB,IAAAgB,EAAAe,EAAA,OAAAnC,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,OAEH,GADMY,EAAeW,EAGjB,IACQI,EAAWhB,EAAqBC,GACpChB,EAASX,EAAgBuC,EAAiB,QAASG,IACrD,MAAAE,GACEjC,EAASX,EAAgBuC,EAAiB,QAAS,CAAC,yBARzD,wBAAAI,EAAAxB,SAAAsB,MAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,GAcG,IAAMuB,EAAoBjD,EAAoB,uBAG9C,SAASkD,EAAmB5C,GAC/B,sBAAA6C,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwC,EAAgBtC,GAAhB,OAAAJ,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,OACHJ,EAASmC,EAAkB3C,IADxB,wBAAA+C,EAAA/B,SAAA8B,MAAP,gBAAAE,GAAA,OAAAH,EAAA3B,MAAAC,KAAAC,YAAA,+CCxES6B,EAAsB,CAC/BC,8BAA8B,gCAC9BC,yBAAyB,2BACzBC,qBAAqB,uBACrBC,eAAe,kBAINC,EAAqB,CAC9BC,qBAAqB,IACrBC,gBAAgB,IAChBC,kBAAkB,IAClBJ,eAAe,KC2EJK,EAFa,eA9ExB,SAAAC,IAAezD,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAwC,GAAAxC,KAJP0C,cAAqB,GAKzB1C,KAAK0C,cAAcZ,EAAoBI,gBAAkBlC,KAAK2C,2BAC9D3C,KAAK0C,cAAcZ,EAAoBG,sBAAwBjC,KAAK4C,8BACpE5C,KAAK0C,cAAcZ,EAAoBE,0BAA4BhC,KAAK6C,qCACxE7C,KAAK0C,cAAcZ,EAAoBC,+BAAiC/B,KAAK8C,iHAG9CC,GAC/B,IAAIC,EAAWD,EAAaE,qBACxBC,EAAeH,EAAaI,cAOhC,OALIH,IAAab,EAAmBD,gBAChCc,IAAab,EAAmBG,mBAChCU,IAAab,EAAmBE,iBAChCW,IAAab,EAAmBC,4BAEOgB,IAAjBF,wDAGQH,GAClC,IAAIC,EAAWD,EAAaE,qBACxBC,EAAeH,EAAaI,cAMhC,OAJIH,IAAab,EAAmBG,mBAChCU,IAAab,EAAmBE,iBAChCW,IAAab,EAAmBC,4BAEOgB,IAAjBF,+DAGeH,GACzC,IAAIC,EAAWD,EAAaE,qBACxBC,EAAeH,EAAaI,cAKhC,OAHIH,IAAab,EAAmBE,iBAChCW,IAAab,EAAmBC,4BAEOgB,IAAjBF,oEAGoBH,GAC9C,IAAIC,EAAWD,EAAaE,qBACxBC,EAAeH,EAAaI,cAMhC,OAHIH,IAAab,EAAmBC,2BAGOgB,IAAjBF,uCAGjBG,EAAoBN,GAE7B,OAAOO,EADStD,KAAK0C,cAAcW,IAClBN,wCAGRQ,EAAmBR,GAG5B,OAFeA,EAAaE,uBDjDG,SAACO,GAEpC,OADa1B,EAAoB0B,IAE7B,KAAK1B,EAAoBE,yBACrB,OAAOG,EAAmBE,gBAC9B,KAAKP,EAAoBG,qBACrB,OAAOE,EAAmBG,kBAC9B,KAAKR,EAAoBC,8BACrB,OAAOI,EAAmBC,qBAC9B,KAAKN,EAAoBI,eACrB,OAAOC,EAAmBD,eAC9B,QACI,QCsCkBuB,CAAwBF,8CAI/BL,EAAsBH,GAGrC,OAFsBA,EAAaI,cAAcO,gBACHR,EAAaQ,uDAI9CC,EAAoBZ,GACjC,QAAIY,GACgBZ,EAAaa,uBAAuBF,gBACdC,EAAWD,iCCnD9CG,EADF,qDAzBDC,eAAiB,WACrB,IAEI,MAAqB,SADLC,aAAaC,QAAQ,mBAGzC,MAAA1C,GACI,OAAO,oDAGX3C,GAAyC,QAAAsF,EAAAC,EAAAjE,UAAAM,OAAvB4D,EAAuB,IAAAzD,MAAAwD,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAvBD,EAAuBC,EAAA,GAAAnE,UAAAmE,GACrCpE,KAAK8D,iBACLG,EAAAI,SAAQC,IAARvE,MAAAkE,EAAA,CAAYtF,GAAZ4F,OAAwBJ,iCAG3BxF,GAAyC,QAAA6F,EAAAC,EAAAxE,UAAAM,OAAvB4D,EAAuB,IAAAzD,MAAA+D,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAvBP,EAAuBO,EAAA,GAAAzE,UAAAyE,GACtC1E,KAAK8D,iBACLU,EAAAH,SAAQC,IAARvE,MAAAyE,EAAA,CAAY7F,GAAZ4F,OAAwBJ,kCAG1BxF,GAAyC,QAAAgG,EAAAC,EAAA3E,UAAAM,OAAvB4D,EAAuB,IAAAzD,MAAAkE,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAvBV,EAAuBU,EAAA,GAAA5E,UAAA4E,GACvC7E,KAAK8D,iBACLa,EAAAN,SAAQC,IAARvE,MAAA4E,EAAA,CAAYhG,GAAZ4F,OAAwBJ,cCPvBW,EAAb,WAEI,SAAAA,EAAoBC,GAAqBhG,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA8E,GAAA9E,KAAA+E,SAAA/E,KADjCgF,SACgC,EAAAhF,KAwBhCiF,aAAe,SAACC,EAAgBC,EAAYC,EAAYC,GAC5DxB,EAAOS,IAAI,iBAAkB,CAAEY,UAAWA,EAAWC,MAAOA,EAAOC,MAAOA,EAAOC,UAAWA,KAzBxDrF,KA4BhCsF,eAAiB,SAACC,EAAe5G,EAAc6G,GACnD3B,EAAOS,IAAI,WAAa3F,EAAS,CAAE4G,SAAUA,EAAU5G,QAASA,EAAS6G,kBAAmBA,KA3B5FxF,KAAK+E,OAALhG,OAAA0G,EAAA,EAAA1G,CAAA,GACOiB,KAAK+E,OADZ,CAEIW,MAA8B,MAArB1F,KAAK+E,OAAOW,OAAiB1F,KAAK+E,OAAOW,MAClDC,YAAa3F,KAAK+E,OAAOY,YAAc3F,KAAK+E,OAAOY,YAAcC,OAAOC,SAASC,KACjFC,0BAAsE,MAAzC/F,KAAK+E,OAAOgB,2BAAqC/F,KAAK+E,OAAOgB,4BAG9F,IAAMC,EAAYjB,EAAOkB,SAAW,IAAMlB,EAAOmB,OAAS,IAAMnB,EAAOoB,OACjEC,EAAa,IAAIC,SAAYrG,KAAKsF,gBACxCtF,KAAKgF,IAAM,IAAIqB,uBAA0BtB,EAAOuB,SAAUN,EAAWhG,KAAKiF,aACtE,CACIpB,OAAQuC,EACRG,wBAAwB,EACxBR,0BAA2B/F,KAAK+E,OAAOgB,0BACvCS,YAAaxG,KAAKyG,WAAWzG,KAAK+E,OAAOY,aACzCe,mBAAmB,EACnBC,cAAe3G,KAAK+E,OAAO4B,cAC3BC,sBAAuB5G,KAAKyG,WAAWzG,KAAK+E,OAAO6B,yBArBnE,OAAA7H,OAAA8H,EAAA,EAAA9H,CAAA+F,EAAA,EAAAgC,IAAA,UAAAC,MAAA,WAkCqB,IAAAC,EAAAhH,KACb,OAAOA,KAAKiH,cAAcC,KAAK,SAAAC,GAAe,OAAIA,EAAkBH,EAAKhC,IAAIoC,UAAY,OAnCjG,CAAAN,IAAA,cAAAC,MAAA,SA8CuBM,GACf,OAAOrH,KAAK+E,OAAOW,MACf1F,KAAKsH,WAAWD,GAChBrH,KAAKuH,cAAcF,KAjD/B,CAAAP,IAAA,WAAAC,MAAA,WAoDuC,IAAAS,EAAAxH,KAC/B,OAAO,IAAIyH,QAAQ,SAACC,EAASC,GACzBH,EAAKxC,IAAI4C,mBAAmBJ,EAAKzC,OAAO8C,QACnCX,KAAK,SAAA/B,GACFuC,EAAQvC,KACT2C,MAAM,SAAA1C,GACLoC,EAAKxC,IAAI+C,kBAAkBP,EAAKzC,OAAO8C,QAClCX,KAAK,SAAA/B,GACFuC,EAAQvC,KACT2C,MAAM,SAAAE,GACLL,EAAOK,WA9DnC,CAAAlB,IAAA,SAAAC,MAAA,WAqEQ/G,KAAKgF,IAAIiD,WArEjB,CAAAnB,IAAA,aAAAC,MAAA,SAwEsBM,GAA0B,IAAAa,EAAAlI,KACxC,OAAOA,KAAKgF,IAAIsC,WAAWtH,KAAK+E,OAAO8C,OAAQR,GAAiBH,KAAK,SAACiB,GAClED,EAAKlD,IAAI4C,mBAAmBM,EAAKnD,OAAO8C,QAAQX,KAC5C,SAAC/B,GACG,OAAOsC,QAAQC,QAAQvC,IACxB,SAACC,GACA8C,EAAKlD,IAAI+C,kBAAkBG,EAAKnD,OAAO8C,QAAQX,KAC3C,SAAC/B,GACG,OAAOsC,QAAQC,QAAQvC,IACxB,SAAC6C,GAEA,OADA3D,QAAQC,IAAI,+BAAiC0D,GACtCP,QAAQC,QAAQ,SAGxC,SAACtC,GAEA,OADAf,QAAQC,IAAI,wBAA0Bc,GAC/BqC,QAAQC,QAAQ,QAxFnC,CAAAZ,IAAA,gBAAAC,MAAA,SA4F0BM,GAA0B,IAAAe,EAAApI,KAE5C,OADAA,KAAKgF,IAAIuC,cAAcvH,KAAK+E,OAAO8C,OAAQR,GACpCrH,KAAKqI,WAAWnB,KAAK,WACxBO,QAAQC,QAAQU,EAAKpD,IAAIoC,eA/FrC,CAAAN,IAAA,aAAAC,MAAA,SAmGeuB,GACP,IAAKA,EACD,MAAO,GAGX,MADY,gBACDC,KAAKD,GAAOA,EAAMtI,KAAKwI,SAAWF,IAxGrD,CAAAxB,IAAA,SAAAC,MAAA,WA4GQ,OAAQnB,OAAOC,SAAS2C,OAAU5C,OAAOC,SAAS2C,OAC9C5C,OAAOC,SAAS4C,SAAW,KAAO7C,OAAOC,SAAS6C,UAAY9C,OAAOC,SAAS8C,KAAO,IAAM/C,OAAOC,SAAS8C,KAAO,MA7G9H,CAAA7B,IAAA,gBAAA8B,IAAA,WAuCQ,OAAO5I,KAAKmF,MAAM+B,KAAK,SAAA2B,GAAC,QAAMA,MAvCtC,CAAA/B,IAAA,QAAA8B,IAAA,WA2CQ,OAAO5I,KAAKqI,eA3CpBvD,EAAA,2CCfMgE,EAAkBC,EAAQ,KAG1BC,EAAe,SAACC,EAAgBC,GAClC,GAAwB,kBAAXD,GAA4C,kBAAdC,EACvC,MAAM,IAAIC,UAAU,iDAGxB,GAAkB,KAAdD,EACA,MAAO,CAACD,GAGZ,IAAMG,EAAiBH,EAAOI,QAAQH,GAEtC,OAAwB,IAApBE,EACO,CAACH,GAGL,CACHA,EAAOK,MAAM,EAAGF,GAChBH,EAAOK,MAAMF,EAAiBF,EAAU3I,UAInCgJ,EAAmB,WAE5B,OADsBC,EAAiB,mBAI9BC,EAAiB,WAE1B,OADkBD,EAAiB,iBAKjCA,EAAmB,SAACE,GACtB,IAEIC,EAAQ/D,OAAOC,SAAS+D,OAAOC,UAAU,GACzCC,EAAaH,EAAMN,QAHN,oBAIjB,GAAiB,mBAAbK,EAEA,OADYK,mBAAmBJ,EAAME,UAAUC,EALlC,mBAKwDvJ,SAGrE,IAAIyJ,EAAgBL,EAAMN,QAPP,iBAQf7C,EAAcmD,EAAME,UAAUG,EARf,gBAQ8CzJ,OAAQuJ,GACzE,OAAOC,mBAAmBvD,IA8H5ByD,EAAS,SAAClD,EAAYmD,GACxB,OAAIA,EAAQD,OACDC,EAAQC,OA5KkBC,mBA4KOrD,GA5KiB5G,QAAQ,WAAY,SAAAkK,GAAC,UAAA9F,OAAQ8F,EAAEC,WAAW,GAAGC,SAAS,IAAI7G,iBA4KlE0G,mBAAmBrD,GAGjEA,GAGLyD,EAAS,SAACzD,EAAYmD,GACxB,OAAIA,EAAQM,OACD1B,EAAgB/B,GAGpBA,GA0BE0D,GAAQ,SAACC,EAAYR,GAM9B,IAAMS,EAxGmB,SAACT,GAC1B,IAAIU,EAEJ,OAAQV,EAAQW,aACZ,IAAK,QACD,OAAO,SAAC/D,EAAUC,EAAY+D,GAC1BF,EAAS,aAAaG,KAAKjE,GAE3BA,EAAMA,EAAI3G,QAAQ,WAAY,IAEzByK,QAKoBxH,IAArB0H,EAAYhE,KACZgE,EAAYhE,GAAO,IAGvBgE,EAAYhE,GAAK8D,EAAO,IAAM7D,GAR1B+D,EAAYhE,GAAOC,GAW/B,IAAK,UACD,OAAO,SAACD,EAAUC,EAAY+D,GAC1BF,EAAS,UAAUG,KAAKjE,GACxBA,EAAMA,EAAI3G,QAAQ,QAAS,IAEtByK,OAKoBxH,IAArB0H,EAAYhE,GAKhBgE,EAAYhE,GAAO,GAAGvC,OAAOuG,EAAYhE,GAAMC,GAJ3C+D,EAAYhE,GAAO,CAACC,GALpB+D,EAAYhE,GAAOC,GAY/B,IAAK,QACD,OAAO,SAACD,EAAUC,EAAY+D,GAC1B,IACME,EAD2B,kBAAVjE,GAAsBA,EAAMkE,MAAM,IAAI5B,QAAQ,MAAQ,EAClDtC,EAAMkE,MAAM,KAAOlE,EAC9C+D,EAAYhE,GAAOkE,GAG3B,QACI,OAAO,SAAClE,EAAUC,EAAY+D,QACD1H,IAArB0H,EAAYhE,GAKhBgE,EAAYhE,GAAO,GAAGvC,OAAOuG,EAAYhE,GAAMC,GAJ3C+D,EAAYhE,GAAOC,IAsDjBmE,CALlBhB,EAAUnL,OAAOoM,OAAO,CACpBX,QAAQ,EACRK,YAAa,QACdX,IAKGkB,EAAMrM,OAAOsM,OAAO,MAE1B,GAAqB,kBAAVX,EACP,OAAOU,EAKX,KAFAV,EAAQA,EAAMY,OAAOnL,QAAQ,SAAU,KAGnC,OAAOiL,EAlBqC,IAAAG,GAAA,EAAAC,GAAA,EAAAC,OAAArI,EAAA,IAqBhD,QAAAsI,EAAAC,EAAoBjB,EAAMO,MAAM,KAAhCW,OAAAC,cAAAN,GAAAG,EAAAC,EAAAlM,QAAAqM,MAAAP,GAAA,EAAsC,KAA3BQ,EAA2BL,EAAA3E,MAAAiF,EACfhD,EAAa+C,EAAM5L,QAAQ,MAAO,KAAM,KADzB8L,EAAAlN,OAAAmN,EAAA,EAAAnN,CAAAiN,EAAA,GAC7BlF,EAD6BmF,EAAA,GACxBlF,EADwBkF,EAAA,GAKlClF,OAAkB3D,IAAV2D,EAAsB,KAAOyD,EAAOzD,EAAOmD,GAEnDS,EAAUH,EAAO1D,EAAKoD,GAAUnD,EAAOqE,IA5BK,MAAAe,GAAAX,GAAA,EAAAC,EAAAU,EAAA,YAAAZ,GAAA,MAAAI,EAAAS,QAAAT,EAAAS,SAAA,WAAAZ,EAAA,MAAAC,GA+BhD,OAAO1M,OAAOsN,KAAKjB,GAAKkB,OAAOC,OAAO,SAAC3B,EAAQ9D,GAC3C,IAAMC,EAAQqE,EAAItE,GAQlB,OAPI0F,QAAQzF,IAA2B,kBAAVA,IAAuBrG,MAAMC,QAAQoG,GAE9D6D,EAAO9D,GA1DA,SAAb2F,EAAc/B,GAChB,OAAIhK,MAAMC,QAAQ+J,GACPA,EAAM4B,OAGI,kBAAV5B,EACA+B,EAAW1N,OAAOsN,KAAK3B,IACzB4B,KAAK,SAACpN,EAAQwN,GAAT,OAAoBC,OAAOzN,GAAKyN,OAAOD,KAC5ClM,IAAI,SAACsG,GAAD,OAAc4D,EAAM5D,KAG1B4D,EA+Ce+B,CAAW1F,GAEzB6D,EAAO9D,GAAOC,EAGX6D,GACR7L,OAAOsM,OAAO,QAGRuB,GAAY,SAACC,EAAa3C,GACnC,IAAK2C,EACD,MAAO,GASX,IAAMlC,EArNoB,SAACT,GAC3B,OAAQA,EAAQW,aACZ,IAAK,QACD,OAAO,SAAC/D,GAAD,OAAc,SAAC8D,EAAa7D,GAC/B,IAAM+F,EAAQlC,EAAOrK,OACrB,YAAc6C,IAAV2D,EACO6D,EAIP,GAAArG,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAW6L,GADD,OAAV7D,EACA,CAAmB,CAACkD,EAAOnD,EAAKoD,GAAU,IAAK4C,EAAO,KAAKE,KAAK,KAGpE,CAEI,CAAC/C,EAAOnD,EAAKoD,GAAU,IAAKD,EAAO6C,EAAO5C,GAAU,KAAMD,EAAOlD,EAAOmD,IAAU8C,KAAK,QAInG,IAAK,UACD,OAAO,SAAClG,GAAD,OAAc,SAAC8D,EAAa7D,GAC/B,YAAc3D,IAAV2D,EACO6D,EAIP,GAAArG,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAW6L,GADD,OAAV7D,EACA,CAAmB,CAACkD,EAAOnD,EAAKoD,GAAU,MAAM8C,KAAK,KAGzD,CAAmB,CAAC/C,EAAOnD,EAAKoD,GAAU,MAAOD,EAAOlD,EAAOmD,IAAU8C,KAAK,QAGtF,IAAK,QACD,OAAO,SAAClG,GAAD,OAAc,SAAC8D,EAAa7D,EAAY+F,GAC3C,OAAK/F,EAIS,IAAV+F,EACO,CAAC,CAAC7C,EAAOnD,EAAKoD,GAAU,IAAKD,EAAOlD,EAAOmD,IAAU8C,KAAK,KAG9D,CAAC,CAACpC,EAAQX,EAAOlD,EAAOmD,IAAU8C,KAAK,MAPnCpC,IAUnB,QACI,OAAO,SAAC9D,GAAD,OAAc,SAAC8D,EAAa7D,GAC/B,YAAc3D,IAAV2D,EACO6D,EAIP,GAAArG,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAW6L,GADD,OAAV7D,EACA,CAAmBkD,EAAOnD,EAAKoD,IAGnC,CAAmB,CAACD,EAAOnD,EAAKoD,GAAU,IAAKD,EAAOlD,EAAOmD,IAAU8C,KAAK,SA8JtEC,CANlB/C,EAAUnL,OAAOoM,OAAO,CACpBlB,QAAQ,EACRE,QAAQ,EACRU,YAAa,QACdX,IAGGmC,EAAOtN,OAAOsN,KAAKQ,GAMzB,OAJqB,IAAjB3C,EAAQoC,MACRD,EAAKC,KAAKpC,EAAQoC,MAGfD,EAAK7L,IAAI,SAAAsG,GACZ,IAAMC,EAAQ8F,EAAO/F,GAErB,YAAc1D,IAAV2D,EACO,GAGG,OAAVA,EACOkD,EAAOnD,EAAKoD,GAGnBxJ,MAAMC,QAAQoG,GACPA,EACFwF,OAAO5B,EAAU7D,GAAM,IACvBkG,KAAK,KAGP/C,EAAOnD,EAAKoD,GAAW,IAAMD,EAAOlD,EAAOmD,KACnDgD,OAAO,SAAA7C,GAAC,OAAIA,EAAE9J,OAAS,IAAGyM,KAAK,MC5OvBG,eAtCX,SAAAA,EAAYC,GAAc,IAAApG,EAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAmN,GACtBnG,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAoO,GAAAI,KAAAvN,KAAMoN,IAEN,IAAII,EAAgBC,IAChBjH,EAAciH,IAJI,OAMtBC,GAAKC,sBAAsBH,EAAehH,GAAaU,KAAK,WACxDF,EAAK4G,SAAS,CAAEC,eAAe,KAChC,WACC7G,EAAK4G,SAAS,CAAEE,WAAW,MAG/B9G,EAAK+G,MAAQ,CACTF,eAAe,EACfC,WAAW,EACXnI,YAAaqI,GAAOH,cAAcI,MAfhBjH,wEAqBtB,OAAIhH,KAAK+N,MAAMD,UAEPI,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,2DAMRD,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,cAhCYC,IAAMC,eCwHnBC,GADI,eArIf,SAAAC,IAAe3P,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA0O,GAAA1O,KADP2O,aACM,EAAA3O,KAKN4O,sBAAwB,qBALlB5O,KAqGN6O,mBAAqB,EApGzB,IAAIC,EAAYlJ,OAChB5F,KAAK2O,QAAUG,EAAKC,4DAiBpB,OADiBnJ,SAAWA,OAAOoJ,qDAKA,IAAAhI,EAAAhH,KACnC,OAAO,IAAIyH,QAAQ,SAACC,EAASC,GACzBX,EAAK2H,QAAQM,OAAOC,OAAOC,qBAAqB,SAACvO,GAC7C,GAAoB,MAAhBA,EAAKwO,OAAgB,CACrB,IAAIC,EAAgBzO,EAAK0O,QAAQC,SACjC7H,EAAQ2H,QAER1H,EAAO,IAAI6H,MAAM,2FAMR,IAAAhI,EAAAxH,KACrB,OAAO,IAAIyH,QAAQ,SAACC,EAASC,GACA,KAArBH,EAAKiI,YAKTjI,EAAKkI,yBAAyBxI,KAAK,SAACmI,GAChC7H,EAAKiI,YAAcJ,EACnB,IAAIlK,EAAQqC,EAAKmI,iBAAiBN,GAClC3H,EAAQvC,IACV,SAACC,GACCuC,EAAOvC,KATPsC,EAAQF,EAAKmI,iBAAiBnI,EAAKiI,yDActBJ,GACrB,IAAIO,EAAOP,EAAcpE,MAAM,KAAK,GAChClI,EAAe/C,KAAK2O,QAAQM,OAAOzE,OAAOoF,GAE9C,OADUC,KAAKpF,MAAM1H,2CAKTG,EAAsBF,GAAkB,IAAAkF,EAAAlI,KAChDsI,EAAMwH,yBAIV,OAFAxH,GADAA,EAAMA,EAAInI,QAAQ,OAAQ,KAChBA,QAAQ,MAAO,IACzBmI,EAAG,GAAA/D,OAAM+D,EAAN,wCAAA/D,OAAgDrB,EAAhD,eAAAqB,OAA0EvB,EAA1E,kBACIhD,KAAK+P,iBAAiB7I,KAAK,SAAC/B,GAC/B+C,EAAK8H,cAAc1H,GAAK,EAAMnD,EAAM+J,OAAOe,kEAIzB/M,GACtB,IAAMgN,EAAOL,KAAKjD,UAAU,CAAEuD,oBAAqBjN,IACnD,OAAOlD,KAAK+P,iBAAiB7I,KAAK,SAAC/B,GAC/BS,OAAOoJ,IAAIoB,YAAYF,EAAM/K,EAAM+J,OAAOe,sDAI5B3H,EAAa+H,EAAiCJ,GAChE,IAAMC,EAAOL,KAAKjD,UAAU,CAAEyD,uBAAwBA,EAAwBC,cAAehI,IAC7F1C,OAAOoJ,IAAIoB,YAAYF,EAAMD,yCAI7B,IAAMC,EAAOL,KAAKjD,UAAU,CAAE2D,eAAe,IAC7C,OAAOvQ,KAAK+P,iBAAiB7I,KAAK,SAAC/B,GAC/BS,OAAOoJ,IAAIoB,YAAYF,EAAM/K,EAAM+J,OAAOe,yDAK9C,IAGMjB,EAHQhP,KAAK2O,QAAQM,OAAOC,OAAOsB,OAGtBC,QAAQC,cAAgB,EAD5B,IAETR,EAAOL,KAAKjD,UAAU,CAAE2D,eAAe,EAAMvB,IAAKA,IACxD,OAAOhP,KAAK+P,iBAAiB7I,KAAK,SAAC/B,GAC/BS,OAAOoJ,IAAIoB,YAAYF,EAAM/K,EAAM+J,OAAOe,2DAQ/B,IAAA7H,EAAApI,KACVA,KAAK2Q,YAIVC,YAAY,WACR,IAAMC,EAAmBC,SAASC,eAAe,QACjD,GAAmB,MAAfF,EAAJ,CAIA,IAAMG,EAAoBH,EAAYI,aAAe,IAE/CC,EAAYC,KAAKC,IAAIJ,EADD,KAG1B,GAAIE,IAAc9I,EAAKyG,mBAIvB,OAAOzG,EAAK2H,iBAAiB7I,KAAK,SAAC/B,GAC/B,IAAIkM,EAAU,GAAA9M,OAAM2M,EAAN,MACd9I,EAAKuG,QAAQM,OAAOC,OAAOoC,OAAOnM,EAAM+J,OAAQ,CAAEqC,OAAUF,IAC5DjJ,EAAKyG,mBAAqBqC,MAE/B,yCAzHH,OADmBM,eAAexN,QAAQhE,KAAK4O,wBAC1B,iBAGT6C,GACZD,eAAeE,QAAQ1R,KAAK4O,sBAAuB6C,aCkE5CE,eA1DX,SAAAA,EAAYvE,GAAc,IAAApG,EAItB,GAJsBjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA2R,IACtB3K,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA4S,GAAApE,KAAAvN,KAAMoN,KAVFwE,YAAc,CAClBC,WAAY,EACZtK,cAAe,EACfsG,cAAe,EACfzI,MAAO,GAKe4B,EAFlB8K,kBAAoB9K,EAAK4K,YAAYC,WAIzCnE,GAAKqE,oBACYrE,GAAKsE,aACN,CAEZ,GADAhL,EAAK8K,kBAAoB9K,EAAK4K,YAAY/D,cACJ,KAAlCH,GAAKuE,yBAAiC,CACtCjL,EAAK8K,kBAAoB9K,EAAK4K,YAAYrK,cAC1C,IAAM2K,EAAgBxE,GAAKuE,yBAC3BvE,GAAKuE,yBAA2B,GAChCrM,OAAOC,SAAS1F,QAAQ+R,GAE5B,OAAAnT,OAAAsO,EAAA,EAAAtO,CAAAiI,GAZkB,OAetBA,EAAKmL,wBAAwB/E,GAfPpG,uFAkBFoG,GAAa,IACzBgF,EAAUhF,EAAVgF,MACFC,EAAsBrE,GAAOsE,mBAAmBC,OAAQrP,aAAc/C,QAAQ,IAAK,IACnFqS,EAAkBxE,GAAOsE,mBAAmBC,OAAQvP,SAAU7C,QAAQ,IAAK,IAC3E+C,EAAekP,EAAMG,OAAOF,GAC5BrP,EAAWoP,EAAMG,OAAOC,GAC9B/D,GAAWgE,gBAAgBvP,EAAcF,oCAKzC,OAAIhD,KAAK8R,oBAAsB9R,KAAK4R,YAAYxM,MAExC8I,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,iEAKRnO,KAAK8R,oBAAsB9R,KAAK4R,YAAYrK,cAExC2G,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,YAKhCrO,KAAK8R,oBAAsB9R,KAAK4R,YAAY/D,cAExCK,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3E,GAAOH,cAAcI,OAKvCC,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,0CA9DoBI,IAAMC,eC4C3BoE,eAnCX,SAAAA,EAAYxF,GAAc,IAAApG,EAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA4S,IACtB5L,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA6T,GAAArF,KAAAvN,KAAMoN,KAVFwE,YAAc,CAClBC,WAAY,EACZtK,cAAe,EACfsG,cAAe,EACfzI,MAAO,GAKe4B,EAFlB8K,kBAAoB9K,EAAK4K,YAAYC,WAIzCnE,GAAKmF,sBAEL,IAAIC,EAAOlN,OAAOC,SAASiN,KAC3B,GAAa,KAATA,EACA9L,EAAK8K,kBAAoB9K,EAAK4K,YAAYxM,UACvC,CACHsI,GAAKqF,IAAMD,EAAKjJ,UAAU,GAC1B6D,GAAKsF,eAAgB,EACrB,IAAM1K,EAAM1C,OAAOC,SAAS2C,OAASwF,GAAOH,cAAcI,KAC1DrI,OAAOC,SAAS1F,QAAQmI,GAXN,OAAAtB,wEAkBtB,OAAIhH,KAAK8R,oBAAsB9R,KAAK4R,YAAYxM,MAExC8I,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,iEAORD,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,0CAvC8BI,IAAMC,uJCqDrCyE,GAhE+C,CAC1DC,KAAM,CACFC,QAAS,UACTC,MAAO,UACPC,OAAQ,UACRC,KAAM,UACNC,SAAU,SACVC,MAAO,UACPC,YAAa,UACbC,OAAQ,qBACRC,UAAW,mBACXC,KAAM,sBACNC,QAAS,sBACTC,SAAU,mBACVC,YAAa,yBACbC,SAAU,UACVC,MAAO,oBAEXC,KAAM,CACFC,QAAS,UACTC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,OAAQ,UACRb,KAAM,UACNc,KAAM,UACNtB,MAAO,UACPuB,QAAS,WAEbC,MAAO,CACHT,QAAS,UACTU,aAAc,UACdzB,MAAO,UACPgB,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,WAETO,OAAQ,CACJX,QAAS,UACTY,QAAS,UACT3B,MAAO,WAEX4B,IAAK,CACDb,QAAS,UACTf,MAAO,WAEX6B,KAAM,CACFd,QAAS,WAEbe,OAAQ,CACJf,QAAS,WAEbgB,OAAQ,CACJhB,QAAS,WAEbiB,SAAU,CACNjB,QAAS,UACTP,KAAM,YCzCRyB,eACF,SAAAA,EAAYjI,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAqV,IACtBrO,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAsW,GAAA9H,KAAAvN,KAAMoN,KAEDW,MAAQ,GAHS/G,wEAgBjB,IAAAsO,EAC4FtV,KAAKoN,MADjGmI,EAAAD,EACGE,eADH,IAAAD,EACa,GADbA,EACiB5V,EADjB2V,EACiB3V,KAAM8V,EADvBH,EACuBG,MAAOC,EAD9BJ,EAC8BI,QAASC,EADvCL,EACuCK,SAAUC,EADjDN,EACiDM,cAAeC,EADhEP,EACgEO,QAAYC,EAD5E/W,OAAAgX,GAAA,EAAAhX,CAAAuW,EAAA,2EAEL,OACIpH,EAAAhP,EAAAiP,cAAC6H,GAAA,EAADjX,OAAAoM,OAAA,GACQ2K,EADR,CAEInW,KAAMA,EACN+V,QAASA,EACTO,UAAWT,EAAQU,UACnBC,qBAAsBP,EACtBQ,qBAAsBR,IAErBH,GACGvH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACkI,GAAA,EAAD,KACInI,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQC,OAAQA,IAEpCI,GACG3H,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAeL,UAAWT,EAAQe,iBAC9BrI,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQC,OAAQI,KAGvCD,GACE1H,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYP,UAAWT,EAAQiB,YAAaC,QAAS,SAAAC,GAAC,OAAIjB,GAAWA,EAAQiB,EAAG,mBAC5EzI,EAAAhP,EAAAiP,cAACyI,GAAA1X,EAAD,QAIfyW,sDApCmBvI,EAAcW,GAM1C,OALIU,GAAWkC,YACPvD,EAAMzN,MACN8O,GAAWoI,iBAGZ9I,SAdUQ,IAAMC,eAkDzBsI,GAA2C,CAC7CZ,UAAW,GACXT,MAAO,CACHsB,MAAO9D,GAAQC,KAAKW,SAExB4C,YAAa,CACTO,SAAU,WACVC,MAAO,GACPjI,IAAK,GACL+H,MAAO9D,GAAQC,KAAK,KACpBgE,WAAY,GACZC,aAAc,IAElBZ,gBAAiB,CACba,cAAe,EACfC,UAAW,KAIJC,QAAWR,GAAXQ,CAAmBjC,kCCnF5BkC,GACK,CACHP,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,GACXQ,WAAY,UAYPZ,IAPUa,aAAWC,aAAa,CAC3CC,WAAY,CACRC,SAAU,OACVC,WAAY,QAI0C,CAC1DC,iBAAkB,CACdC,OAAQ,aACRH,SAAU,GACVf,MAAO9D,GAAQC,KAAKY,UAExBoE,WAAY,CACRlB,SAAU,YAEdmB,eAAgB,CACZnB,SAAU,WACVhI,IAAK,MACLoJ,KAAM,OAEVC,oBAAqB,CACjBrB,SAAU,WACVhI,IAAK,MACLoJ,KAAM,MACNE,UAAW,yBAEfC,WAAY,CACRlK,UAAW,UAEfmK,mBAAoB,CAChBzB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdW,aAAc,CACVC,aAAc,IAElBC,uBAAwB,CACpB5B,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVC,WAAY,KAEhBa,4BAA6B,CACzBzB,YAAa,GAEjB0B,0BAA2B,CACvB3B,UAAW,GACX7I,UAAW,SAEfyK,6BAA8B,CAC1Bb,OAAQ,GAEZc,kCAAmC,CAC/Bd,OAAQ,YAEZe,mCAAoC,CAChCf,OAAQ,WACRS,aAAc,IAElBO,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,MAExBsF,WAAY,CACRpB,SAAU,GACVG,OAAQ,UAEZkB,SAAU,CACNpC,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACPC,WAAY,IAEhBC,WAAY,CACRtC,SAAU,WACVE,UAAW,GACXQ,WAAY,UAEhB6B,eAAgB,CACZH,MAAO,qBAEXI,UAAW,CACP1B,SAAU,GACVN,QAAS,WACTS,OAAQ,GAEZwB,WAAY,CACRxB,OAAQ,SACRP,WAAY,UAEhB5C,OAAQ,CACJiC,MAAO9D,GAAQ6B,OAAOX,SAE1BuF,MAAM3a,OAAA0G,EAAA,EAAA1G,CAAA,GACCwY,IAEPoC,kBAAkB5a,OAAA0G,EAAA,EAAA1G,CAAA,GACXwY,GADU,CAEbL,UAAW,KAEf0C,kBAAkB7a,OAAA0G,EAAA,EAAA1G,CAAA,GACXwY,GADU,CAEbsC,aAAc,KAElBC,YAAa,CACT/C,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,GACVG,OAAQ,UAEZ8B,sBAAuB,CACnB/C,SAAU,WACVhI,IAAK,EACLiI,MAAO,IAEX+C,SAAU,CACNhD,SAAU,YAEdiD,YAAa,CACTzC,QAAS,YAEb/B,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,WAExBuG,WAAY,CACRnD,MAAO9D,GAAQC,KAAKU,KACpB4D,QAAS,EACTM,SAAU,OACVJ,WAAY,UAEhByC,WAAY,CACRjD,WAAY,EACZ2C,cAAe,EACfO,YAAa,IAEjBC,WAAY,CACRC,QAAS,gBAEbC,cAAe,CACXxD,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd0C,iBAAkB,CACd1C,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExB6G,cAAe,CACX3C,SAAU,IAEd4C,WAAY,CACR5C,SAAU,GACVC,WAAY,IACZhB,MAAO9D,GAAQC,KAAKW,SAExB8G,QAAS,CACL5D,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVG,OAAQ,UAEZ2C,kBAAmB,CACf9C,SAAU,GACVG,OAAQ,SACRqC,QAAS,OACTO,WAAY,UAEhBC,mBAAoB,CAChB3D,YAAa,IAEjB4D,WAAY,CACRT,QAAS,OACTO,WAAY,UAEhBG,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,QACtB2D,SAAU,IAEdmD,iBAAkB,CACdlE,MAAO9D,GAAQ6B,OAAOX,QACtB2D,SAAU,IAEdoD,YAAa,CACTnE,MAAO9D,GAAQC,KAAKU,KACpBuH,UAAW,UAEfC,SAAU,CACNhC,MAAO,QAEXiC,wBAAyB,CACrBtE,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVJ,WAAY,UAEhB4D,yBAA0B,CACtBxD,SAAU,GACVZ,UAAW,WAINqE,GAAkD,CAC3DC,WAAY,CACRC,cAAe,cAEnBC,eAAgB,CACZlE,QAAS,EACT4C,YAAa,OAEjBuB,MAAO,CACHC,gBAAiB3I,GAAQC,KAAKC,QAC9B0I,OAAQ,WAEZC,SAAU,CACNA,SAAU,SAEdC,WAAY,CACRD,SAAU,SAEdE,WAAY,CACRC,SAAU,SAEdC,KAAM,CACFnF,MAAO9D,GAAQiB,KAAKC,SAExBP,KAAM,CACFmD,MAAO9D,GAAQC,KAAKW,UAIfsI,GAAiD,CAC1DC,iBAAkB,CACdC,YAAa,GAEjBC,OAAQ,CACJ/K,OAAQ,OACRwF,MAAO,kBACPW,WAAY,SACZI,SAAU,OACVyE,cAAe,QACfC,WAAY,OACZnO,UAAW,SACX6I,UAAW,QAEfuF,WAAY,CACR1F,MAAO,kBACP0E,cAAe,SAIViB,GAAqE,CAC9EC,cAAe,CACX5F,MAAO9D,GAAQC,KAAKU,KACpByF,WAAY,IAEhBuD,cAAe,CACXtC,QAAS,OACTuC,eAAgB,OAChBhC,WAAY,UAEhBiC,kBAAmB,CACf5F,UAAW,IAEf6F,KAAM,CACFnB,gBAAiB3I,GAAQC,KAAKG,OAC9B4E,OAAQ,QACRlB,MAAO9D,GAAQC,KAAKU,KACpB6D,WAAY,GACZL,cAAe,GACfM,WAAY,UAEhBsF,WAAY,CACR5F,cAAe,EACfyC,aAAc,SAElBoD,YAAa,CACTxF,WAAY,GAEhByF,gBAAiB,CACbpF,SAAU,GACVf,MAAO9D,GAAQ2B,MAAMT,SAEzBgJ,aAAc,CACV7C,QAAS,OACTO,WAAY,SACZgC,eAAgB,cAEpBO,cAAe,CACXhD,YAAa,GACb3C,WAAY,GACZL,cAAe,IAEnBiG,YAAa,CACTtG,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdwF,iBAAkB,CACdpG,UAAW,GACXqG,aAAc,mBAElBC,oBAAqB,CACjBzG,MAAO9D,GAAQC,KAAKQ,OACpBoE,SAAU,IAEd2F,QAAS,CACLvG,UAAW,IAEfwG,aAAc,CACV5F,SAAU,GACVJ,WAAY,SACZX,MAAO9D,GAAQC,KAAKU,KACpBiG,cAAe,IAEnB8D,qBAAsB,CAClBxC,UAAW,SACXpE,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd8F,aAAc,CACV9F,SAAU,GACVJ,WAAY,SACZX,MAAO9D,GAAQC,KAAKU,KACpBiG,cAAe,IAEnBgE,eAAgB,CACZvD,QAAS,QACT/I,OAAQ,QAEZnM,MAAO,CACHoS,QAAS,IACTM,SAAU,OACVJ,WAAY,uCAEZ8E,WAAY,IACZD,cAAe,YACfxF,MAAO,WAEXkC,OAAQ,CACJ/B,UAAW,IAEf4G,SAAU,CACN5G,UAAW,IAEf6G,YAAa,CACTrK,OAAQ,OACRmG,aAAc,IAElBmE,MAAO,CACHpC,gBAAiB,QACjB7E,MAAO9D,GAAQC,KAAKY,UAExBF,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExBuG,WAAY,CACRjD,WAAY,EACZ2C,cAAe,EACfO,YAAa,IAEjB6D,WAAY,CACRnG,SAAU,GACVf,MAAO9D,GAAQiB,KAAKC,SAExB+J,eAAgB,CACZ3M,OAAQ,IACR6H,MAAO,IACPwC,gBAAiB3I,GAAQC,KAAKE,MAC9B+K,aAAc,GACd/D,YAAa,GACb3C,WAAY,GACZL,cAAe,IAEnBgH,eAAgB,CACZjD,UAAW,SACX9M,UAAW,QACXyJ,SAAU,IAEduG,UAAW,CACPhQ,UAAW,SACXqJ,WAAY,0BACZI,SAAU,IAEdwG,WAAY,CACRlE,YAAa,IAEjBmE,iBAAkB,CACd3C,gBAAiB3I,GAAQiB,KAAKO,QAElC+J,qBAAsB,CAClBzH,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd2G,aAAc,CACV5E,aAAc,GACd3C,UAAW,GACXH,MAAO9D,GAAQC,KAAKU,MAExB8K,SAAU,CACN5G,SAAU,GACVf,MAAO9D,GAAQC,KAAKS,WAExBgL,cAAe,CACX/C,gBAAiB,QACjB7E,MAAO9D,GAAQiB,KAAKC,QACpBiF,MAAO,OACP7H,OAAQ,GACR2F,UAAW,IAEf0H,sBAAuB,CACnB1H,UAAW,IAEf2H,YAAa,CACT3H,UAAW,IAEf4H,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACRwN,cAAe,UAEnBC,YAAa,CACTlH,SAAU,GACVf,MAAO9D,GAAQ6B,OAAOX,SAE1B8K,mBAAoB,CAChBnH,SAAU,GACVf,MAAO9D,GAAQ6B,OAAOC,QACtBuF,QAAS,cACTO,WAAY,UAEhBqE,iBAAkB,CACdpH,SAAU,GACVf,MAAO9D,GAAQ+B,IAAIb,QACnBmG,QAAS,eAEb6E,YAAa,CACTrH,SAAU,GACVf,MAAO9D,GAAQC,KAAKY,SACpBwG,QAAS,cACTO,WAAY,SACZxM,UAAW,UAEf2M,YAAa,CACTlD,SAAU,GACVX,YAAa,IAIRiI,GAA+D,CACxEC,OAAQ,CACJ7H,QAAS,GAEbwF,WAAY,CACRpB,gBAAiB3I,GAAQiB,KAAKC,SAElCmL,iBAAkB,CACd1D,gBAAiB3I,GAAQC,KAAKS,WAElC4E,WAAY,CACRlK,UAAW,UAEfkR,WAAY,CACRvI,SAAU,WACVhI,KAAM,EACNiI,OAAQ,GACRqD,QAAS,QACTjM,UAAW,SACXmJ,QAAS,EACTgF,WAAY,KAEhBgD,SAAU,CACNzI,MAAO9D,GAAQC,KAAKE,MACpB0E,SAAU,IAEd2H,SAAU,CACN1I,MAAO9D,GAAQC,KAAKE,MACpB0E,SAAU,IAEd4F,aAAc,CACV3F,WAAY,IACZhB,MAAO9D,GAAQC,KAAKU,MAExB8L,cAAe,CACX3I,MAAO,kBACPW,WAAY,SACZI,SAAU,OACVC,WAAY,IACZwE,cAAe,MACfC,WAAY,OACZ3C,aAAc,OAElBqB,YAAa,CACTnE,MAAO,kBACPW,WAAY,SACZI,SAAU,OACVC,WAAY,IACZyE,WAAY,OACZ3C,aAAc,OAElB8F,YAAa,CACTnI,QAAS,qBACTT,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACV8D,gBAAiB3I,GAAQC,KAAKG,QAElCuM,gBAAiB,CACbpI,QAAS,mBACTT,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACV8D,gBAAiB3I,GAAQC,KAAKG,QAElCwM,gBAAiB,CAAE7I,SAAU,YAC7B8I,cAAe,CACX/I,MAAO9D,GAAQC,KAAKE,OAExB2M,SAAU,CACN9H,OAAQ,GAEZ+H,OAAQ,CACJ/H,OAAQ,SACRF,WAAY,IACZD,SAAU,IAEdmI,eAAgB,CACZC,UAAS,aAAA3b,OAAe0O,GAAQC,KAAKQ,SAEzCyM,gBAAiB,CACbpJ,MAAO,mBACPW,WAAY,SACZI,SAAU,OACVC,WAAY,IACZwE,cAAe,SACfC,WAAY,OACZ4D,UAAW,aACX/I,UAAW,QAGfzD,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExByM,gBAAiB,CACbtJ,MAAO,eAEXuJ,QAAS,CACLrI,OAAQ,IAKHsI,GAAsDxhB,OAAA0G,EAAA,EAAA1G,CAAA,GAC5D+X,GAD4D,CAE/D0J,WAAY,CACRtJ,UAAW,GAEfwC,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,GACXQ,WAAY,UAEhBjC,MAAO,CACHsB,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVG,OAAQ,UAEZwI,SAAU,CACN1J,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd4I,oBAAqB,CACjBrS,UAAW,QACX6I,UAAW,IAEfyJ,UAAW,CACPlF,cAAe,aAEnB1G,QAAS,CACLoG,UAAW,SACXrD,SAAU,IAEdrE,YAAa,CACTqE,SAAU,GACVf,MAAO9D,GAAQC,KAAKO,aAExBmN,UAAW,CACP9I,SAAU,GACVf,MAAO9D,GAAQC,KAAKW,WCllBfgN,GAAkBC,aAAW,SAACC,GACvC,OAAOA,EAAQC,UAAY,CACvBC,kBAAkB,EAClBC,kBAAkB,KCDbC,GAAkB,CAC3BC,KAAM,OACNC,cAAe,KACfC,QAAS,WAGAC,GAAmB,CAC5BH,KAAM,OACNI,MAAO,QACPF,QAAS,WAGAG,GAAe,CACxBL,KAAM,OACNI,MAAO,QACPF,QAAS,WAGAI,GAAyB,CAClCC,SAAU,EACVC,UAAW,EACXC,cAAe,EACfC,oBAAqB,EACrBC,qBAAsB,EACtBC,QAAS,EACTC,gBAAiB,EACjBC,0BAA2B,EAC3BC,0CAA2C,EAC3CC,QAAS,GACTC,cAAe,GACfC,oBAAqB,GACrBC,qCAAsC,GACtCC,sCAAuC,GACvCC,yBAA0B,GAC1BC,0BAA2B,GAC3BC,uBAAwB,GACxBC,sBAAuB,GACvBC,yBAA0B,GAC1BC,2BAA4B,GAC5BC,wBAAyB,GACzBC,kBAAmB,GACnBC,cAAe,GACfC,mBAAoB,GACpBC,wBAAyB,GACzBC,sBAAuB,GACvBC,SAAU,GACVC,2BAA4B,GAC5BC,4BAA6B,GAC7BC,2BAA4B,GAC5BC,iBAAkB,GAClBC,oCAAqC,GACrCC,mBAAoB,GACpBC,qBAAsB,GACtBC,eAAgB,GAChBC,yBAA0B,GAC1BC,wBAAyB,GACzBC,wBAAyB,GACzBC,kBAAmB,GACnBC,WAAY,GACZC,aAAc,GACdC,mCAAoC,GACpCC,eAAgB,GAChBC,mBAAoB,GACpBC,2CAA4C,GAC5CC,kBAAmB,GACnBC,mBAAoB,GACpBC,iBAAkB,GAClBC,4BAA6B,GAC7BC,kBAAmB,GACnBC,gBAAiB,GACjBC,SAAU,GACVC,SAAU,GACVC,uBAAwB,GACxBC,kBAAmB,GACnBC,yBAA0B,GAC1BC,oBAAqB,GACrBC,+BAAgC,GAChCC,yBAA0B,GAC1BC,mBAAoB,GACpBC,4BAA6B,GAC7BC,8CAA+C,IAC/CC,iCAAkC,IAClCC,qBAAsB,IACtBC,6BAA8B,IAC9BC,kBAAmB,IACnBC,8BAA+B,IAC/BC,kCAAmC,IACnCC,iCAAkC,IAClCC,8BAA+B,IAC/BC,uBAAwB,IACxBC,uBAAwB,IACxBC,sCAAuC,IACvCC,6CAA8C,IAC9CC,kDAAmD,IACnDC,mDAAoD,IACpDC,yCAA0C,IAC1CC,oCAAqC,IACrCC,oCAAqC,IACrCC,6CAA8C,IAC9CC,4CAA6C,IAC7CC,8BAA+B,IAC/BC,6BAA8B,IAC9BC,wBAAyB,IACzBC,wCAAyC,IACzCC,kCAAmC,IACnCC,0CAA2C,IAC3CC,kDAAmD,KAG1CC,GAAqB,CAC9BC,gBAAiB,IACjBC,OAAQ,IACRC,MAAO,IACPC,UAAW,IACXC,YAAa,IACbC,MAAO,IACPC,aAAc,IACdC,uBAAwB,IACxBC,IAAK,IACLC,SAAU,IACVC,QAAS,IACTC,aAAc,IACdC,SAAU,IACVC,cAAe,KAGbC,GAAmCpH,aAAW,SAACqH,GAEjD,OADkBA,EAAcC,KAAKlb,OAAO,SAAAmb,GAAG,OAAKA,EAAIC,oBAAsBD,EAAIE,cAAgBF,EAAIG,kBACrFhoB,IAAI,SAAAmW,GAAC,OAAIA,EAAE8R,OAezB,ICjGKC,GDiGCC,GAAkC,SAACR,GAC5C,OAAOD,GAAiCC,IAK/BS,GAAgC9H,aAAW,SAAC+H,EAAeC,EAAuBnlB,GAC3F,IAAMolB,EAAyD,GAsB/D,OArBAD,EAAUE,QAAQ,SAACC,GACf,IAAMC,EAAeL,EAAMM,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOQ,EAASI,SAC7D,GAAKH,EAAL,CACA,IAAMI,EAAcJ,EAAaK,qBACjC,GAAIN,EAASO,mBAAoB,CAC7B,IAAIC,EAAcV,EAA2BplB,IAAe,IAAI+lB,IAChEJ,EAAYN,QAAQ,SAAAP,GAChBgB,EAAYE,IAAIlB,KAEpBM,EAA2BplB,GAAc8lB,EAEzCR,EAASW,WAAWrpB,OAAS,GAC7B0oB,EAASW,WAAWZ,QAAQ,SAACa,GACzB,IAAIJ,EAAcV,EAA2Bc,EAAUpB,KAAO,IAAIiB,IAClEJ,EAAYN,QAAQ,SAAAP,GAChBgB,EAAYE,IAAIlB,KAEpBM,EAA2Bc,EAAUpB,IAAMgB,OAIhDV,IAGEe,GAAkBhJ,aAAW,SAAUiJ,GAChD,IAAMC,EAAW,CACbC,UAAW,EACXC,WAAY,EACZC,WAAY,EACZC,UAAW,EACXC,MAAO,GAeX,OAbAN,EAAUf,QAAQ,SAAAX,GACd2B,EAASK,OAAS,EACdhC,EAAIiC,mBAAqBC,GAAY,YAAaC,GAAgBC,iBAAmBpC,EAAIiC,mBAAqBC,GAAY,0BAA2BC,GAAgBC,gBACrKT,EAASC,WAAa,EACjB5B,EAAIiC,mBAAqBC,GAAY,aAAcC,GAAgBC,gBACxET,EAASG,YAAc,EAClB9B,EAAIiC,mBAAqBC,GAAY,aAAcC,GAAgBC,iBAAmBpC,EAAIiC,mBAAqBC,GAAY,mBAAoBC,GAAgBC,gBACpKT,EAASE,YAAc,EAClB7B,EAAIiC,mBAAqBC,GAAY,WAAYC,GAAgBC,gBACtET,EAASE,YAAc,EAClB7B,EAAIiC,mBAAqBC,GAAY,YAAaC,GAAgBC,kBACvET,EAASI,WAAa,KAEvBJ,IAGEU,GAA6B5J,aAAW,SAAC6J,EAAoB9B,GACtE,IAAM+B,EAAuBL,GAAY,yBAA0BC,GAAgBK,cAC7EC,EAAkBH,EAAS7B,UAC5BtoB,IAAI,SAAAyoB,GAAQ,OAAIJ,EAAMM,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOQ,EAASI,WACxDnc,OAAO,SAAAkc,GAAI,YAAahmB,IAATgmB,IACf5oB,IAAI,SAAA4oB,GAAI,OAAIA,IAgBX2B,GAdwBD,EACzBtqB,IAAI,SAAA4oB,GAAI,OAAIA,EAAK4B,cACjB9d,OAAO,SAAC+d,EAAMC,EAAK9C,GAAZ,OAAqBA,EAAK/e,QAAQ4hB,KAAUC,IACnD1qB,IAAI,SAAAwqB,GAAW,MAAK,CACjBA,YAAaA,EACbG,gBAAiBL,EACZ5d,OAAO,SAAA7O,GAAC,OAAIA,EAAE2sB,cAAgBA,IAC9BxqB,IAAI,SAAAnC,GAAC,OAAIA,EAAE+sB,sBAEnB7e,OAAO,SAAC/L,EAAK6qB,GAEV,OADA7qB,EAAI6qB,EAAIL,aAAeK,EAAIF,gBACpB3qB,GACR,IAE6BsqB,EAC/BtqB,IAAI,SAAA4oB,GAAI,OAAIA,EAAKkC,YACjB/e,OAAO,SAACgf,EAAMF,GACX,OAAOE,EAAKhnB,OAAO8mB,IACpB,IACFne,OAAO,SAAA4D,GAAQ,OAAIA,EAAS0a,SAAWZ,IACvCpqB,IAAI,SAAAsQ,GACD,MAAO,CACH2a,yBAA0BC,SAAS5a,EAAS2X,IAC5CkD,cAAe7a,EAAS2E,MACxBmW,YAAa9a,EAAS+a,WACtBC,YAAahb,EAASgb,YACtBC,OAAQjb,EAASib,WAK7B,OADiBrrB,MAAMsrB,KAAK,IAAItC,IAAIqB,EAA4BvqB,IAAI,SAAAyrB,GAAC,OAAIA,EAAEF,WAAUvrB,IAAI,SAAAioB,GAAE,OAAIsC,EAA4B5B,KAAK,SAAA8C,GAAC,OAAIA,EAAEF,QAAUtD,MAC/Hnc,KAAK,SAACpN,EAAGwN,GACvB,IAAIwf,EAAShtB,EAAGysB,cAAcjoB,cAC1ByoB,EAASzf,EAAGif,cAAcjoB,cAC9B,OAAOwoB,EAAOE,cAAcD,OAKvBE,GAAsBvL,aAAW,SAACwL,EAA0BC,GACrE,OAAID,EAAiB5oB,eAAiB6oB,EAAc7oB,gBAM3C8oB,GAAoB1L,aAAW,SAAC2L,EAAgDC,GACzF,IAAIF,GAAoB,EADoGG,EAAA,SAGnH7lB,GAEL,GADc4lB,EAAqBE,KAAK,SAAAC,GAAC,OAAIJ,EAAmB3lB,GAAKgmB,IAAID,KAGrE,OADAL,GAAoB,EACpB,SAJR,IAAK,IAAI1lB,KAAO2lB,EAAoB,cAAAE,EAA3B7lB,GAID,MAGR,OAAO0lB,IAGEO,GAAoBjM,aAAW,SAAC2L,EAAgDO,EACzFC,EAAwBC,EAAuBC,GAC/C,IAAMC,EAA2BZ,GAAkBC,EAAoB,CAAC,EAAG,EAAG,KACxEY,EAAyBL,GAAcI,EACvCE,EAAyBL,GAAiBT,GAAkBC,EAAoB,CAAC,GAAI,KACrFc,EAAwBL,GAAgBC,GAA0BX,GAAkBC,EAAoB,CAAC,KACzGe,EAAwBhB,GAAkBC,EAAoB,CAAC,EAAG,GAAI,GAAI,IAEhF,OAAOY,GAA0BC,GAA0BC,GAAyBC,IAG3EC,GAA2B3M,aAAW,SAAC2L,GAEhD,OADgCD,GAAkBC,EAAoB,CAAC,OAI9DiB,GAA0B5M,aAAW,SAAC4L,EAAmCM,EAClFC,EAAwBC,EAAuBC,GAC/C,IAAMC,EAA4B,CAAC,EAAG,EAAG,IAAIR,KAAK,SAAAC,GAAC,OAAIH,EAAqBI,IAAID,KAC1EQ,EAAyBL,GAAcI,EACvCE,EAAyBL,GAAkB,CAAC,GAAI,IAAIL,KAAK,SAAAC,GAAC,OAAIH,EAAqBI,IAAID,KACvFU,EAAwBL,GAAgBC,GAA2B,CAAC,IAAIP,KAAK,SAAAC,GAAC,OAAIH,EAAqBI,IAAID,KAC3GW,EAAyB,CAAC,EAAG,GAAI,GAAI,GAAGZ,KAAK,SAAAC,GAAC,OAAIH,EAAqBI,IAAID,KAEjF,OAAOQ,GAA0BC,GAA0BC,GAAyBC,IAG3EG,GAAe7M,aAAW,SAAC6J,GACpC,IAAIiD,EAAiC,GAIrC,OAHAjD,EAAS7B,UAAUE,QAAQ,SAAAC,GACvB2E,EAAUC,KAAV9tB,MAAA6tB,EAAS7uB,OAAAgO,EAAA,EAAAhO,CAASkqB,EAASW,WAAW1c,OAAO,SAAA+e,GAAC,OAAmB,IAAfA,EAAE6B,eAEjDF,IAGEG,GAA2BjN,aAAW,SAAC6J,EAAoBqD,GACpE,OAAOrD,EAASqC,YAAcrC,EAASf,WAAWgD,KAAK,SAAAX,GAAC,OAAI+B,EAAapB,KAAK,SAAAnE,GAAE,OAAIA,IAAOwD,EAAExD,MAAOwD,EAAEe,eAG7FiB,GAAsBnN,aAAW,SAAC8I,EAAyBoE,GACpE,OAAOpE,EAAWgD,KAAK,SAAAX,GAAC,OAAI+B,EAAapB,KAAK,SAAAnE,GAAE,OAAIA,IAAOwD,EAAExD,MAAOwD,EAAEiC,aAG7DC,GAAqBrN,aAAW,SAAC8I,EAAyBoE,GACnE,OAAOpE,EAAWgD,KAAK,SAAAX,GAAC,OAAI+B,EAAapB,KAAK,SAAAnE,GAAE,OAAIA,IAAOwD,EAAExD,OAAQwD,EAAEiC,aAG9DE,GAAkCtN,aAAW,SAAC6J,EAAoBqD,GAC3E,OAAOrD,EAASf,WAAWgD,KAAK,SAAAX,GAAC,OAAI+B,EAAapB,KAAK,SAAAnE,GAAE,OAAIA,IAAOwD,EAAExD,MAAOwD,EAAEoC,UAAY1D,EAAS0D,aAG3FC,GAA6BxN,aAAW,SAACiJ,GAClD,OAAOA,EAAU7c,OAAO,SAAAyJ,GAAC,OAAIA,EAAEmS,UAAUvoB,OAAS,GAAKoW,EAAEmS,UAAUK,KAAK,SAAAoF,GAAE,YAAkBnrB,GAAbmrB,EAAGlF,QAAoC,MAAbkF,EAAGlF,QAAkB1c,OAAO+e,SAAS6C,EAAGlF,QAAU,GACtI,IAAbkF,EAAGlF,QAAgBkF,EAAGT,aAAYvtB,OAAS,IAG1CiuB,GAAqC1N,aAAW,SAACiJ,GAC1D,OAAOA,EAAU7c,OAAO,SAAAyJ,GAAC,OAA0B,GAAtBA,EAAEmS,UAAUvoB,SAAaA,OAAS,IAGtDkuB,GAAmC3N,aAAW,SAACiJ,GACxD,OAAOA,EAAU7c,OAAO,SAAAyJ,GAAC,OAAIA,EAAEmS,UAAUvoB,OAAS,IAAGA,OAAS,IClUrDmuB,GAAmB5N,aAAW,SAAC6N,GACxC,OAAOC,IAAOD,EAAgBE,SAASC,MAAM,OAAOC,KAAKH,MAASI,QAAQ,OAAQ,UAGzEC,GAA2BnO,aAAW,SAACoO,GAChD,QAASA,EAAWnO,QAAQ7E,QAAUgT,EAAWC,aAAeD,EAAWnO,QAAQqO,MAGjFC,GAAiCvO,aAAW,SAAC4L,GAC/C,OAAOA,EAAqBI,IAAIpL,GAAuBkC,wBAG9C0L,GAA6BxO,aAAW,SAAC4L,EAAmCwC,GACrF,IAAIK,GAAiB,EAErB,GAAIF,GAA+B3C,GAAuB,CACtD,IAAI8C,GAA4B,EAChCN,EAAWO,gBAAgBzG,QAAQ,SAAA0G,GAC3BA,EAAQC,wBAAuBH,GAA4B,KAE9DA,IAA2BD,GAAiB,GAErD,OAAOA,IAGLK,GAAmC9O,aAAW,SAAC4L,GACjD,OAAOA,EAAqBI,IAAIpL,GAAuByD,uBAG9C0K,GAAwB/O,aAAW,SAAC4L,EAAmCwC,GAChF,IAAIK,GAAiB,EAErB,GAAIK,GAAiClD,IAAyBwC,EAAWY,yBAA0B,CAC/F,IAAIN,GAA4B,EAChCN,EAAWO,gBAAgBzG,QAAQ,SAAA0G,GAC3BA,EAAQC,wBAAuBH,GAA4B,KAE9DA,IAA2BD,GAAiB,GAErD,OAAOA,cAGC7G,+vBAsBZ,IAAMqH,GAAqBjP,aAAW,SAACoO,GACnC,IAAMc,EAAMd,EAAWe,iBACvB,OAAKD,GAGEA,EAAIE,oBAOTC,GAAkBrP,aAAW,SAACoO,EAAoCkB,EAAaC,GACjF,IAAML,EAAMd,EAAWe,iBACjBK,IAAgBpB,EAAWqB,iBACjC,IAAKP,EACD,OAAO,EAEX,IAAMQ,OAAmCptB,IAAvB8rB,EAAWL,QACzB3kB,EAAqB,EAAC,GAE1B,GAAIwD,GAAK+iB,0BACL,OAAQL,GACJ,KAAK1H,GAAMgI,kBACP,MACJ,KAAKhI,GAAMiI,eACPzmB,EAAQ2jB,KAAKyC,GACb,MACJ,KAAK5H,GAAMkI,gBACX,KAAKlI,GAAMmI,yBAC0BztB,GAA7BitB,GAA0CA,EAA4B,EACtEnmB,EAAQ2jB,MAAK,GAEb3jB,EAAQ2jB,MAAK,GAEjB,MACJ,KAAKnF,GAAMoI,WACX,KAAKpI,GAAMqI,SACX,KAAKrI,GAAMsI,iBACP9mB,EAAQ2jB,KAAKmC,EAAI5F,WACrB,QACIlgB,EAAQ2jB,KAAKmC,EAAI5F,WAAcoG,GAAaR,EAAIiB,uBAS5D,GALIvjB,GAAKwjB,mBACLhnB,EAAQ2jB,MAAMmC,EAAI5F,WAAaoG,IAAcR,EAAIiB,wBAA0BjB,EAAIE,mBAC/EhmB,EAAQ2jB,KAAKmC,EAAI5F,YAGjB1c,GAAKyjB,iBACL,OAAQf,GACJ,KAAK1H,GAAM0I,aACX,KAAK1I,GAAMqI,SACX,KAAKrI,GAAM2I,eACX,KAAK3I,GAAMoI,WACX,KAAKpI,GAAM4I,qBACX,KAAK5I,GAAMsI,iBACX,KAAKtI,GAAMmI,oBACX,KAAKnI,GAAMkI,gBACX,KAAKlI,GAAM6I,kBACX,KAAK7I,GAAMiI,eACX,KAAKjI,GAAM8I,WACX,KAAK9I,GAAMgI,kBACPxmB,EAAQ2jB,MAAK,GACb,MACJ,QACI3jB,EAAQ2jB,KAAKmC,EAAI5F,WAI7B,GAAI1c,GAAK+jB,6BACL,OAAQrB,GACJ,KAAK1H,GAAMgI,kBACP,MACJ,QACIxmB,EAAQ2jB,MAAMmC,EAAI5F,WAAaoG,GAAaR,EAAIiB,uBAChD/mB,EAAQ2jB,KAAKmC,EAAI5F,YAAsC,IAAzB8E,EAAWwC,WAAsB1B,EAAI2B,sBAI/E,OAAOznB,EAAQif,KAAK,SAAAyI,GAAM,OAAe,IAAXA,MAAoB,IAGzCC,GAAiB,SAAC3C,EAAoCkB,EAAaC,GAC5E,OAAOF,GAAgBjB,EAAYkB,EAAMC,IAGhCyB,GAAiB,SAACC,EAAiC3B,GAC5D,IAAKA,IAAS1H,GAAMsJ,cAAgB5B,IAAS1H,GAAMqI,WAAkD,GAArCrjB,GAAK+jB,6BAAuC,CACxG,IAAMQ,EACFF,EAAe5I,KAAK,SAAA+I,GAAa,OAAIA,EAAcC,sBAAwBzQ,GAAuBoC,2BAEtG,GAAImO,EAAuB,CACvB,IAAMG,EAASH,EAAsBI,eAAelJ,KAAK,SAAAjqB,GAAC,MAA4B,WAAxBA,EAAE4H,IAAIwrB,gBACpE,MAAO,CACHvrB,OAAO,EACPqrB,OAAQA,EAASA,EAAOrrB,WAAQ3D,IAI5C,MAAO,CAAE2D,OAAO,IAGdwrB,GAAyBzR,aAAW,SAACoO,GACvC,IAAMc,EAAMd,EAAWe,iBACvB,IAAKD,EACD,OAAO,EAEX,IAAMQ,OAAmCptB,IAAvB8rB,EAAWL,QACzB3kB,EAAqB,EAAC,GAK1B,OAJIwD,GAAKwjB,kBAAoBxjB,GAAKyjB,oBAC9BjnB,EAAQ2jB,MAAMmC,EAAI5F,WAAaoG,GAAaR,EAAIiB,uBAChD/mB,EAAQ2jB,KAAKmC,EAAI5F,YAAsC,IAAzB8E,EAAWwC,WAAsB1B,EAAI2B,uBAEhEznB,EAAQif,KAAK,SAAAzc,GAAC,OAAU,IAANA,MAAe,IAG/B8lB,GAAwB,SAACtD,GAClC,OAAOqD,GAAuBrD,IAGrBuD,GAA2B,SAAC1kB,EAAmB2kB,GACxD,IAAMC,EAAsBpI,GAAY,mBAAoBC,GAAgBoI,mBACtEC,EAA0B9kB,EAAMqb,KAAKhB,KAAKlb,OAAO,SAAA7O,GAAC,OAAIA,EAAEs0B,qBAAuBt0B,EAAEs0B,sBAAwBA,IAC/G,OAA4B,IAAxBD,EACOG,EAAwBtyB,OAAS,EAErCsyB,EAAwBtyB,OAAS,GAAKooB,GAAgC5a,EAAM4c,UAAUpqB,OAAS,GAG7FuyB,GAAchS,aAAW,SAAC+H,GACnC,IAAMkK,EAAU,SAACC,GAAD,OAAiB,SAACC,EAAa7J,GAC3C,OAAI4J,IAAQE,GAAW9J,EAAKgC,kBACjB6H,EAAM,EAENA,IAGTE,EAAsF,GAGtFC,EAAevK,EAAMtc,OAAOwmB,EAAQ,WAAY,GAClDK,GACAD,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,WAAYC,MAAOH,EAActsB,IAAK,YAEhF,IAAM0sB,EAAc3K,EAAMtc,OAAOwmB,EAAQ,UAAW,GAChDS,GACAL,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,UAAWC,MAAOC,EAAa1sB,IAAK,WAE9E,IAAM2sB,EAAc5K,EAAMtc,OAAOwmB,EAAQ,UAAW,GAChDU,GACAN,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,UAAWC,MAAOE,EAAa3sB,IAAK,WAE9E,IAAM4sB,EAAY7K,EAAMtc,OAAOwmB,EAAQ,aAAc,GAAKlK,EAAMtc,OAAOwmB,EAAQ,aAAc,GACvFlK,EAAMtc,OAAOwmB,EAAQ,YAAa,GAClClK,EAAMtc,OAAOwmB,EAAQ,cAAe,GACtCW,GACAP,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,QAASC,MAAOG,EAAW5sB,IAAK,SAE1E,IAAM6sB,EAAkB9K,EAAMtc,OAAOwmB,EAAQ,OAAQ,GAAKlK,EAAMtc,OAAOwmB,EAAQ,OAAQ,GACnFY,GACAR,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,cAAeC,MAAOI,EAAiB7sB,IAAK,eAEtF,IAAM8sB,EAAiB/K,EAAMtc,OAAOwmB,EAAQ,aAAc,GAAKlK,EAAMtc,OAAOwmB,EAAQ,YAAa,GAC3FlK,EAAMtc,OAAOwmB,EAAQ,mBAAoB,GACzClK,EAAMtc,OAAOwmB,EAAQ,YAAa,GACpCa,GACAT,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,aAAcC,MAAOK,EAAgB9sB,IAAK,cAGpF,IAAM+sB,EAAoBhL,EAAMtc,OAAOwmB,EAAQ,gBAAiB,GAC5Dc,GACAV,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,OAAQC,MAAOM,EAAmB/sB,IAAK,iBAGjF,IAAMgtB,EAA0BjL,EAAMtc,OAAOwmB,EAAQ,sBAAuB,GACxEe,GACAX,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,sBAAuBC,MAAOO,EAAyBhtB,IAAK,uBAGtG,IAAMitB,EAAgBlL,EAAMtc,OAAOwmB,EAAQ,SAAU,GACjDgB,GACAZ,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,SAAUC,MAAOQ,EAAejtB,IAAK,UAG/E,IAAMktB,EAAcnL,EAAMtc,OAAOwmB,EAAQ,UAAW,GAQpD,OAPIiB,GACAb,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,UAAWC,MAAOS,EAAaltB,IAAK,WAEzD+hB,EAAMtc,OAAOwmB,EAAQ,QAAS,IAE/CI,EAAStF,KAAK,CAAEwF,KAAMC,GAAgB,QAASC,MAAOS,EAAaltB,IAAK,SAErEqsB,ICpQEc,GAAwB,SAACtJ,EAAoBuE,GACtD,IAAMgF,EAAoBhF,EAAWiF,wBAAyB,EACxDC,EAAoB7J,GAAY,YAAaC,GAAgBC,gBAC7D4J,EAAkC9J,GAAY,0BAA2BC,GAAgBC,gBACzF6J,EAAoB/J,GAAY,YAAaC,GAAgBC,gBAEnE,OADkB,IAAIf,IAAI,CAAC0K,EAAmBC,EAAiCC,IAC9DxH,IAAInC,EAASL,mBAAqB4J,GCV1CK,GAAgB,SAAC3gB,GAC1B,OAAO1F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0C,WAAY5F,ICoB5B4gB,GADI,wGApBHlsB,GACR,OAAO,IAAIb,QAAQ,SAACC,EAASC,GACzB,IAAI8sB,EAAS7uB,OAAOC,SAAS2C,OACzBksB,EAAmB9uB,OAAOjG,KAAK80B,EAASnsB,EAAK,SAAU,uBAC3D1C,OAAO+uB,iBAAiB,UAAW,SAAUC,GACzC,GAAIA,EAAMpsB,SAAW5C,OAAOC,SAAS2C,OAArC,CACA,IAAIoC,EAASiF,KAAKpF,MAAMmqB,EAAMh0B,MAC9B8G,EAAQkD,GACR8pB,EAAaG,WACd,4CAIIC,GACQlvB,OAAOmvB,OACb3kB,YAAY0kB,EAAUlvB,OAAOC,SAAS2C,6DCN5CwsB,GATE,SAAC5nB,GACd,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAAY7nB,EACTc,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,0WCyBdnV,GAA2C,CAC7Coe,aAAc,CACV3jB,OAAQ,OACR6H,MAAO,OACPC,WAAY,QAIL8b,kBAAY7d,KAAWR,GAAXQ,CA1BJ,SAAClK,GAAiB,IAC7BgM,EAA0BhM,EAA1BgM,MAAO3D,EAAmBrI,EAAnBqI,MAAO2f,EAAYhoB,EAAZgoB,QAChBC,EAAmB,OAAVjc,GAA4B,OAAVA,EACjC,OACIlL,EAAAhP,EAAAiP,cAACmnB,GAAA,EAAD,CACI7f,MAAOA,EACP8f,UAAWF,EAAS,aAAe,MACnCG,sBAAoB,EACpBC,sBAAoB,GAEnBL,GAEGlnB,EAAAhP,EAAAiP,cAACunB,GAAD,CAActnB,MAAO0I,GAAOoe,mBCd7BS,GARG,SAACvoB,GACf,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,gBACxB1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,8sBCKL4J,GARD,SAACzoB,GACX,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,cACxB1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,oiECKL6J,GARC,SAAC1oB,GACb,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,gBACxB1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,wpBCKL8J,GARI,SAAC3oB,GAChB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,gBACxB1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,weCKL+J,GARG,SAAC5oB,GACf,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,gBACxB1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,6qBCKLgK,GARG,SAAC7oB,GACf,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,gBACxB1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,mlBCKLiK,GARM,SAAC9oB,GAClB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,gBACxB1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,sjBCMLkK,GATmB,SAAC/oB,GAC/B,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBgM,MAAM,UAAU7H,OAAO,UAAUqkB,QAAQ,wBACzD1nB,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,WAAW2N,YAAU,WAAWnK,EAAE,6OAA6O3T,UAAU,gCAClSpK,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,WAAW2N,YAAU,WAAWnK,EAAE,0oBAA0oB3T,UAAU,8BCU5rB+d,GAdM,SAACjpB,GAClB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBgM,MAAM,UAAU7H,OAAO,UAAUqkB,QAAQ,wBACzD1nB,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,QAAQwD,EAAE,6JAA6J3T,UAAU,4BAC1LpK,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,UAAU2N,YAAU,QAAQnK,EAAE,wFAAwF3T,UAAU,6BACzIpK,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,UAAU2N,YAAU,QAAQnK,EAAE,mHAAmH3T,UAAU,wBACpKpK,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,UAAU2N,YAAU,QAAQnK,EAAE,8TAA8T3T,UAAU,uBAC/WpK,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,UAAU2N,YAAU,QAAQnK,EAAE,8TAA8T3T,UAAU,2BAC/WpK,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,UAAU2N,YAAU,QAAQnK,EAAE,qKAAqK3T,UAAU,wBACtNpK,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,UAAU2N,YAAU,QAAQnK,EAAE,oKAAoK3T,UAAU,+BCAlNge,GATI,SAAClpB,GAChB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBgM,MAAM,UAAU7H,OAAO,QAAQqkB,QAAQ,sBACvD1nB,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,WAAW2N,YAAU,WAAWnK,EAAE,8IAA8I3T,UAAU,wBACnMpK,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,WAAW2N,YAAU,WAAWnK,EAAE,+rBAA+rB3T,UAAU,+CCQnvBie,GAAgB,SAACzvB,EAAa0vB,GAAd,OAAuC,SAACt3B,EAAQwN,GACzE,IAAI+pB,EACAC,EAKJ,IAHAD,EAAO/1B,MAAMC,QAAQzB,EAAE4H,IAAQ5H,EAAE4H,GAAKvG,OAAS+xB,GAAYpzB,EAAE4H,QAC7D4vB,EAAOh2B,MAAMC,QAAQ+L,EAAE5F,IAAQ4F,EAAE5F,GAAKvG,OAAS+xB,GAAY5lB,EAAE5F,KAE1C,OAAO,EACrB,QAAa1D,IAATszB,EACL,OAAQ,EAEP,QAAatzB,IAATqzB,EACL,OAAO,EAGP,IAAME,EAAqBH,GAAc,EAAI,EAC7C,OAAIC,EAAOC,EACqB,EAArBC,EACFF,EAAOC,GACiB,EAAtBC,EAEA,IAIZ,SAASrE,GAAYsE,GACxB,IACI,OAAOA,EAAItE,cACb,MAAO3b,GACL,OAAOigB,GAIR,SAASC,GAAcC,EAAUC,GAQpC,IAPyBxuB,EAOrB8D,EAAiB,GAoBrB,QA3ByB9D,EAQLuuB,KAPC/3B,OAAOwJ,IAAS7H,MAAMC,QAAQ4H,KAQ/CxJ,OAAOsN,KAAKyqB,GAAK9N,QAAQ,SAAAliB,GACrB,GAAIpG,MAAMC,QAAQm2B,EAAIhwB,IACJgwB,EAAIhwB,GACZkiB,QAAQ,SAACiC,EAAWne,GACtB,IAAMkqB,EAAeD,EAAM,GAAAxyB,OAAMwyB,EAAN,KAAAxyB,OAAgBuC,EAAhB,KAAAvC,OAAuBuI,EAAvB,QAAAvI,OAAqCuC,EAArC,KAAAvC,OAA4CuI,EAA5C,KAC3BT,EAAOA,EAAK9H,OAAOsyB,GAAc5L,EAAM+L,WAExC,GAAIF,EAAIhwB,IAA4B,kBAAbgwB,EAAIhwB,IAAqB/H,OAAOsN,KAAKyqB,EAAIhwB,IAAMmwB,MAAM,SAAA7yB,GAAI,OAbnEmE,EAa0FuuB,EAAIhwB,GAAK1C,MAZ1GrF,OAAOwJ,IAAS7H,MAAMC,QAAQ4H,GADnD,IAA4BA,IAa4G,CAC5H,IAAMyuB,EAAeD,EAAM,GAAAxyB,OAAMwyB,EAAN,KAAAxyB,OAAgBuC,GAAQA,EACnDuF,EAAOA,EAAK9H,OAAOsyB,GAAcC,EAAIhwB,GAAMkwB,SAEvCD,EACA1qB,EAAKwhB,KAAL,GAAAtpB,OAAawyB,EAAb,KAAAxyB,OAAuBuC,IAEvBuF,EAAKwhB,KAAK/mB,KAInBuF,EAGJ,SAASinB,GAAgBN,GAC5B,OAAQA,GACJ,IAAK,cACL,IAAK,UACD,OAAOkE,GACX,IAAK,aACL,IAAK,SACD,OAAOC,GACX,IAAK,aACL,IAAK,SACD,OAAOC,GACX,IAAK,MACL,IAAK,MACL,IAAK,iBACL,IAAK,aACD,OAAOC,GACX,IAAK,YACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACD,OAAOC,GACX,IAAK,gBACL,IAAK,YACL,IAAK,eACL,IAAK,sBACL,IAAK,eACL,IAAK,WACL,IAAK,kBACL,IAAK,WACD,OAAOC,GACX,IAAK,MACD,OAAOjB,GACX,IAAK,qBACD,OAAOH,GACX,IAAK,QACD,OAAOE,GACX,IAAK,SACD,OAAOmB,KACX,QACI,OAAO3B,IAIZ,SAAS4B,GAAY5O,GACxB,IAAM6O,EAAW,SAAC1E,GACd,OAAOnK,EAAM+D,KAAK,SAAAxD,GAAI,OAAI4J,IAAQE,GAAW9J,EAAKgC,qBAEhDuM,EAA2D,GAE9CD,EAAS,YAExBC,EAAS9J,KAAK,CAAE+J,KAAM,UAAWvE,KAAMC,GAAgB,aAEzCoE,EAAS,WAEvBC,EAAS9J,KAAK,CAAE+J,KAAM,SAAUvE,KAAMC,GAAgB,YAExCoE,EAAS,WAEvBC,EAAS9J,KAAK,CAAE+J,KAAM,SAAUvE,KAAMC,GAAgB,YAE1D,IAAMuE,EAAeH,EAAS,aACxBI,EAAeJ,EAAS,aACxBK,EAAcL,EAAS,YACvBM,EAAgBN,EAAS,eACjBG,GAAgBC,GAAgBC,GAAeC,IAEzDL,EAAS9J,KAAK,CAAE+J,KAAM,OAAQvE,KAAMC,GAAgB,UAExD,IAAM2E,EAAkBP,EAAS,OAC3BQ,EAAkBR,EAAS,OA+BjC,OA9BIO,GAAmBC,IACnBP,EAAS9J,KAAK,CAAE+J,KAAM,aAAcvE,KAAMC,GAAgB,gBAE1CoE,EAAS,aAEzBC,EAAS9J,KAAK,CAAE+J,KAAM,WAAYvE,KAAMC,GAAgB,cAEjCoE,EAAS,oBAEhCC,EAAS9J,KAAK,CAAE+J,KAAM,kBAAmBvE,KAAMC,GAAgB,qBAE/CoE,EAAS,aAEzBC,EAAS9J,KAAK,CAAE+J,KAAM,WAAYvE,KAAMC,GAAgB,cAEvCoE,EAAS,iBAE1BC,EAAS9J,KAAK,CAAE+J,KAAM,eAAgBvE,KAAMC,GAAgB,SAErCoE,EAAS,uBAEhCC,EAAS9J,KAAK,CAAE+J,KAAM,qBAAsBvE,KAAMC,GAAgB,wBAEhDoE,EAAS,UAE3BC,EAAS9J,KAAK,CAAE+J,KAAM,QAASvE,KAAMC,GAAgB,WAE1CoE,EAAS,WAEpBC,EAAS9J,KAAK,CAAE+J,KAAM,UAAWvE,KAAMC,GAAgB,YACpDqE,EAGJ,SAASQ,GAAgBC,GAC5B,IAAIC,GAAmB,EAIvB,MAHiB,6BAAbD,GAAwD,sEAAbA,IAC3CC,GAAU,GAEPA,EAGJ,IAAMC,GAAiB,SAACC,GAC3B,QAAen1B,IAAXm1B,EAAsB,MAAO,GACjC,IAAIC,EAAgBrnB,KAAKsnB,IAAI,GAAI,GAGjC,OAFAF,EAASG,YAAYH,EAASC,GAAeG,QAAQ,KAE9C,KADIxnB,KAAKynB,MAAML,GAAUC,GAChBG,QAAQ,GAAGpuB,WAAWpK,QAAQ,wBAAyB,MC7L9D04B,GAAc,SAAC7F,EAAa5kB,GACrC,IAAI0qB,EACJ,OAAQ9F,GAEJ,KAAKzI,GAAY,UAAWC,GAAgBuO,gBAExC,OADAD,EAAUxF,GAAgB,WACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,UAAU2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MACpE,KAAKmc,GAAY,SAAUC,GAAgBuO,gBAEvC,OADAD,EAAUxF,GAAgB,UACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,SAAS2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MACnE,KAAKmc,GAAY,SAAUC,GAAgBuO,gBAEvC,OADAD,EAAUxF,GAAgB,UACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,SAAS2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MACnE,KAAKmc,GAAY,YAAaC,GAAgBuO,gBAC9C,KAAKxO,GAAY,aAAcC,GAAgBuO,gBAC/C,KAAKxO,GAAY,YAAaC,GAAgBuO,gBAC9C,KAAKxO,GAAY,WAAYC,GAAgBuO,gBAEzC,OADAD,EAAUxF,GAAgB,QACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,OAAO2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MACjE,KAAKmc,GAAY,MAAOC,GAAgBuO,gBACxC,KAAKxO,GAAY,MAAOC,GAAgBuO,gBAEpC,OADAD,EAAUxF,GAAgB,cACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,aAAa2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MACvE,KAAKmc,GAAY,eAAgBC,GAAgBuO,gBACjD,KAAKxO,GAAY,sBAAuBC,GAAgBuO,gBACxD,KAAKxO,GAAY,eAAgBC,GAAgBuO,gBACjD,KAAKxO,GAAY,WAAYC,GAAgBuO,gBAC7C,KAAKxO,GAAY,kBAAmBC,GAAgBuO,gBACpD,KAAKxO,GAAY,WAAYC,GAAgBuO,gBAEzC,OADAD,EAAUxF,GAAgB,aACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,YAAY2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MACtE,KAAKmc,GAAY,eAAgBC,GAAgBuO,gBAE7C,OADAD,EAAUxF,GAAgB,OACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,eAAe2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MACzE,KAAKmc,GAAY,qBAAsBC,GAAgBuO,gBAEnD,OADAD,EAAUxF,GAAgB,sBACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,sBAAsB2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MAChF,KAAKmc,GAAY,QAASC,GAAgBuO,gBAEtC,OADID,EAAUxF,GAAgB,SACvBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,iBAAiB2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MAC3E,KAAKmc,GAAY,SAAUC,GAAgBuO,gBAEvC,OADAD,EAAUxF,GAAgB,UACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,MAAM2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,CAAS1qB,MAAOA,MAChE,QACI,SAIC6qB,GAAkB,SAACjG,EAAakG,EAAsB7D,GAC/D,GAAI6D,EACA,OACIhrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAO0I,GAAOuiB,sBAC5BnrB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOinB,EAASve,GAAOwiB,kBAAoBxiB,GAAOoiB,YAAaK,IAAKL,EAAaM,IAAI,MAIlG,IAAMC,EAAUZ,GAAY7F,EAAKlc,GAAO2iB,SACxC,OACIvrB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACflrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACVK,KAOf3iB,GAAiD,CACnD2iB,QAAS,CACLrgB,MAAO,GACP7H,OAAQ,GACR2F,UAAW,GACXH,MAAO9D,GAAQC,KAAKU,MAExBylB,qBAAsB,CAClBhrB,UAAW,SAEf6qB,YAAa,CACT9f,MAAO,IACPsgB,UAAW,OACXxiB,UAAW,IAEfoiB,kBAAmB,CACfxd,SAAU,OACV4d,UAAW,OACXxiB,UAAW,KAINyiB,GAAa7Y,aAAW,kBAAM8Y,KAAUttB,KAAKiqB,GAAc,SAE3DsD,GAAgB/Y,aAAW,SAACsH,EAAcuC,GACnD,IAAMmP,EAAUH,KACZI,EAGE,GACND,EAAQ9Q,QAAQ,SAAAgK,GAEZ,GADW5K,EAAKe,KAAK,SAAA6Q,GAAC,OAAIA,EAAE5O,mBAAqB4H,EAAIvK,KAC3C,CACN,IAAIwR,EAAQjH,EAAIiH,MAChBF,EAASlM,KAAK,CAAEmF,IAAKA,EAAIvK,GAAIwR,MAAOA,OAI5C,IAAIC,GAAY,EACZC,GAAe,EACnB,GAAIxP,GAAYA,EAASf,WAAWrpB,OAAS,EAAG,CAC5C,IAAM65B,EAAaC,KACbC,EAAcC,KACpB5P,EAASf,WAAWZ,QAAQ,SAAAwR,GACpBF,EAAYxN,IAAI0N,EAAIC,mBAAkBP,GAAY,GAClDE,EAAWtN,IAAI0N,EAAIC,mBAAkBN,GAAe,KAchE,OAVAJ,EAAWA,EAAS7sB,OAAO,SAAA+d,GACvB,SAAIyP,GAAazP,EAAK+H,OAAQkH,QAG1BS,GAAY1P,EAAK+H,OAAQmH,KAGpBO,GAAazP,EAAK+H,OAAS2H,GAAY1P,EAAK+H,QAGlDtyB,MAAMsrB,KAAK,IAAItC,IAAYqQ,EAASztB,KAAK,SAACpN,EAAGwN,GAAJ,OAAUxN,EAAE+6B,MAAQvtB,EAAEutB,QAAOz5B,IAAI,SAAAqsB,GAAC,OAAIA,EAAEmG,UCtI/E4H,GAAkB,SAAC7zB,GAC5B,OAAKA,EAEEA,EAAM5G,QAAQ,WAAY,IAFd4G,GAeV8zB,GAAkB,SAAC9zB,GAC5B,OAAKA,EAEEA,EAAM5G,QAAQ,SAAU,IAFZ4G,GAKV+zB,GAAe,SAAC/zB,GACzB,OAAKA,EAEe8zB,GAAgB9zB,GACjBuC,MAAM,EAAG,GAHTvC,GAMVg0B,GAAe,SAACh0B,GACzB,OAAKA,EAEe8zB,GAAgB9zB,GACjBuC,MAAM,EAAG,GAHTvC,GAMVi0B,GAAe,SAACj0B,GACzB,OAAOg0B,GAAah0B,IASXk0B,GAAwB,SAACl0B,GAClC,IAAIm0B,EAASC,GAAgBp0B,GAE7B,OADIm0B,EAAS,KAAIA,EAAS,IACnBA,GAGEC,GAAkB,SAACp0B,GAC5B,IAAKA,EAAO,OAAOA,EAEnB,IAAMq0B,EAASC,GAAiBt0B,GAC1Bu0B,EAAY,GAAA/2B,OAAM62B,GACxB,OAAIE,EAAa/6B,OAAS,EACfoM,OAAO2uB,EAAahyB,MAAM,EAAG,IAE7B8xB,GAGFG,GAAkB,SAACx0B,GAAD,OAAmBA,GAAS4F,OAAO5F,IACrDs0B,GAAmB,SAACt0B,GAAD,OAAmBA,GAAS4F,OAAOA,OAAO5F,GAAO4xB,QAAQ,KAC5E6C,GAAkB,SAACz0B,GAAD,YAA6B3D,IAAV2D,EAAA,GAAAxC,OAAyBwC,GAAU,IACxE00B,GAAkB,SAAC10B,GAAD,OAAmCA,GAAS6nB,IAAO7nB,IACrE20B,GAAqB,SAAC30B,GAAD,OAAoBA,GAAS4F,OAAO5F,IAAW,GCpEpE40B,GAAU,SAAC50B,GAAkC,IAAtB60B,EAAsB37B,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAP,GACzC47B,EAAchB,GAAgB9zB,GACpC,IAAK80B,GAAeA,EAAYt7B,OAAS,EAAG,OAAOs7B,EAEnD,IAAMC,EAAaF,GAAO,IAE1B,MADe,CAAC,UAAW70B,EAAMg1B,OAAOh1B,EAAMxG,OAAS,IAAI2M,OAAOV,SAASQ,KAAK,IAClE7M,QAAQ,OAAQ27B,ICuDrBE,GAA8Blb,aAAW,SAACsI,EAAa6S,GAEhE,IAAK7S,IAASA,EAAK1J,cAAe,MAAO,cACzC,IAAMwc,EAAoB9S,EAAK1J,cAAcyc,MAAMC,OAAM,GAAOpN,QAAQ,OAAOqN,OAAO,cAChFC,EAAiBL,EAAWA,EAASM,aAAUn5B,EACrD,IAAKk5B,EAAc,OAAOJ,EAE1B,IAAMM,EAAYjS,GAAY,YAAa,IACrCkS,EAAiClS,GAAY,iCAAkC,IAC/EmS,EAAmCnS,GAAY,mCAAoC,IACnFoS,EAA8BpS,GAAY,8BAA+B,IAEzEqS,EAAsBxT,EAAKwT,qBAAuBJ,EAClDK,EAAMjO,MAASE,MAAM,OAC3B,OAAQ8N,GACJ,KAAKH,EACDH,EAAc3S,IAAI,EAAG,SACrB,IAAMmT,EAAoBlO,IAAM,GAAArqB,OAAI+3B,EAAaS,OAAjB,KAAAx4B,OAA2B+3B,EAAaU,QAAU,EAAlD,OAEhC,OADmBF,EAAkBG,QAAQJ,IAAQC,EAAkBG,QAAQf,GAC3DY,EAAkBT,OAAO,cAAgBH,EACjE,KAAKQ,EACDJ,EAAc3S,IAAIP,EAAK8T,cAAe,OACtCZ,EAAa3S,IAAI,EAAG,SACpB,IAAMwT,EAAoBvO,IAAM,GAAArqB,OAAI+3B,EAAaS,OAAjB,KAAAx4B,OAA2B+3B,EAAaU,QAAU,EAAlD,OAEhC,OADmBG,EAAkBF,QAAQJ,IAAQM,EAAkBF,QAAQf,GAC3DiB,EAAkBd,OAAO,cAAgBH,EACjE,KAAKS,EAGD,OAFAL,EAAc3S,IAAIP,EAAK8T,cAAe,OACnBZ,EAAaW,QAAQJ,IAAQP,EAAaW,QAAQf,GACjDI,EAAaD,OAAO,cAAgBH,EAC5D,QACI,OAAOA,KCrFbkB,GAA4E,WAA2F,IAA1FC,EAA0Fp9B,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAtE,GAAI8kB,EAAkE9kB,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,IAAAA,UAAA,GACnKq9B,GADmKr9B,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,IAAAA,UAAA,GAC1J,IACf,IAAI8kB,EAAS,CACTuY,EAAOzP,KAAK,CAAE0P,OAAQ,EAAGC,OAAQ,KACjC,IAAK,IAAIC,EAAM,GAAIA,EAAM,GAAIA,IACzBH,EAAOzP,KAAK,CACR0P,OAAQE,EACRD,OAAQC,IAIpB,IAAK,IAAIA,EAAM,GAAIA,EAAMJ,EAAWI,IAChCH,EAAOzP,KAAK,CACR0P,OAAQE,EACRD,OAAQC,IAOhB,OAJAH,EAAOzP,KAAK,CACR0P,OAAQF,EACRG,OAAQ,MAELF,GAuBLI,GAA6B,SAACC,GAAD,IAAqBN,EAArBp9B,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAyC,GAAzC,OAAgD,SAAC29B,GAAD,OAAA7+B,OAAA0G,EAAA,EAAA1G,CAAA,GAC5E4+B,EAAWxU,KAAK,SAAA0U,GAAC,OARJ,SAACC,EAAiBF,EAAqBP,GACvD,IAAMU,EAAa,SAACC,GAAD,SAAAz5B,OAAmBy5B,EAAKC,WAAxB,cAAA15B,OACby5B,EAAKE,iBAAmB,GADX,cAAA35B,OAEby5B,EAAKG,eAAiB,KAC5B,OAAOJ,EAAWD,KAAeC,EAAWH,KAjBvB,SAACE,EAAiBF,EAAyBP,GAChE,OAAIS,EAAUP,SAAWF,OACYj6B,IAAzBw6B,EAAcJ,QAAwBI,EAAcJ,QAAUH,EAG7DO,EAAcL,QAAUO,EAAUP,aAAqCn6B,IAAzBw6B,EAAcJ,QAAwBI,EAAcJ,QAAUM,EAAUN,OAYpEY,CAAiBN,EAAWF,EAAeP,IAR/E,SAACS,EAAiBF,GAC7C,OAAOA,EAAcL,QAAUO,EAAUP,QAAUK,EAAcL,SAAWO,EAAUN,QAAU,GAOwBa,CAAuBP,EAAWF,IAIlIU,CAAYT,EAAGD,EAAeP,KACnDO,KAGA,SAASW,GAA8BZ,EAAoBN,EAAmBtY,GACjF,IAAMyZ,EAAsBjU,GAAY,YAAaC,GAAgBiU,cAErE,OAAOrB,GAAkBC,EAAWtY,GAAUvkB,IAAI,SAAAk+B,GAC9C,OAAO3/B,OAAA0G,EAAA,EAAA1G,CAAA,GACA2/B,EADP,CAEIjW,GAAI,GACJwV,WAAYO,MAGnBh+B,IAAIk9B,GAA2BC,EAAYN,IAGzC,SAASsB,GAAmChB,EAAoB5Y,EAAmBE,EAA4B2Z,EAA8BvB,GAChJ,IAAMwB,EAA2BtU,GAAY,iBAAkBC,GAAgBiU,cAC/E,OAAOrB,GAAkBC,EAAWtY,GAAUvkB,IAAI,SAAAk+B,GAC9C,OAAOI,KAAoBt+B,IAAI,SAAAu+B,GAC3B,OAAOhgC,OAAA0G,EAAA,EAAA1G,CAAA,GACA2/B,EADP,CAEIjW,GAAI,GACJyV,gBAAiBa,EAActW,GAC/BwV,WAAYY,QAKnBtyB,OAAO,SAAC/M,EAAM6rB,GAAP,OAAe7rB,EAAK+E,OAAO8mB,IAAM,IACxC7qB,IAAIk9B,GAA2BC,EAAYN,IAG7C,SAAS2B,GAAwCrB,EAAoBiB,EAA8BvB,GACtG,IAAM4B,EAAgC1U,GAAY,sBAAuBC,GAAgBiU,cACzF,OAAOrB,GAAkBC,GAAW78B,IAAI,SAAAk+B,GACpC,OAAOQ,GAAsCN,GAAcp+B,IAAI,SAAA29B,GAC3D,OAAOp/B,OAAA0G,EAAA,EAAA1G,CAAA,CACH0pB,GAAI,IACDiW,EAFP,CAGIP,cAAeA,EACfF,WAAYgB,QAInB1yB,OAAO,SAAC/M,EAAM6rB,GAAP,OAAe7rB,EAAK+E,OAAO8mB,IAAM,IACxC7qB,IAAIk9B,GAA2BC,EAAYN,IAG7C,SAAS8B,GAAkCxB,GAC9C,IAAMyB,EAAsB7U,GAAY,YAAaC,GAAgBiU,cACrE,OAAOK,KACFt+B,IAAI,SAAC6+B,GACF,IAAMC,EAAe3B,EAAWxU,KAAK,SAAA9e,GAAC,OAAIA,EAAE6zB,kBAAoBmB,EAAO5W,KACvE,OAAI6W,GAGG,CACH7W,GAAI,GACJwV,WAAYmB,EACZlB,gBAAiBmB,EAAO5W,GACxB8U,OAAQ,EACRC,OAAQ,KAKxB,IAAM0B,GAAwC,SAACN,GAC3C,IAAMW,EAAwBhV,GAAY,WAAYC,GAAgBgV,sBAChEC,EAAyB,CAAClV,GAAY,SAAUC,GAAgBgV,sBAAuBjV,GAAY,kBAAmBC,GAAgBgV,uBACtIE,EAAqBnV,GAAY,QAASC,GAAgBgV,sBAE1DG,GAAwBf,GAAgBA,EAAahS,KAAK,SAAAhd,GAAI,OAAIA,EAAKgwB,oBAAsBL,GAAyB3vB,EAAKiwB,YAC3HC,GAAsBlB,GAAgBA,EAAahS,KAAK,SAAAhd,GAAI,OAAI6vB,EAAuBM,SAASnwB,EAAKgwB,oBAAsBhwB,EAAKiwB,YAChIG,GAAqBpB,GAAgBA,EAAahS,KAAK,SAAAhd,GAAI,OAAIA,EAAKgwB,oBAAsBF,GAAsB9vB,EAAKiwB,YAErHI,EAAK1V,GAAY,WAAYC,GAAgB0V,aAC7CC,EAAK5V,GAAY,SAAUC,GAAgB0V,aAC3CE,EAAK7V,GAAY,WAAYC,GAAgB0V,aACnD,MAAO,CAACD,EAAIE,EAAIC,GAAIlzB,OAAO,SAAAgzB,GAAW,OACjCA,IAAgBD,GAAMN,GACtBO,IAAgBC,GAAML,GACtBI,IAAgBE,GAAMJ,KAIxB,SAASK,GAA+B1C,EAAoBiB,GAC/D,IAAM0B,EAAuB/V,GAAY,aAAcC,GAAgBiU,cAEvE,OAAOS,GAAsCN,GAAcp+B,IAAI,SAAA29B,GAC3D,IAAMmB,EAAe3B,EAAWxU,KAAK,SAAA9e,GAAC,OAAIA,EAAE8zB,gBAAkBA,IAC9D,OAAImB,GAGO,CACH7W,GAAI,GACJwV,WAAYqC,EACZnC,cAAeA,EACfZ,OAAQ,EACRC,OAAQ,KAmCjB,SAAS+C,GAAqBC,GACjC,IAAMhC,EAAsBjU,GAAY,YAAaC,GAAgBiU,cAC/DI,EAA2BtU,GAAY,iBAAkBC,GAAgBiU,cACzEgC,EAAiBlW,GAAY,OAAQC,GAAgBiU,cAEvDiC,EAAYC,GAAaH,GAAOhgC,IAAI,SAAAq9B,GAAC,OAAIA,EAAEpV,KAM/C,OAJIiY,EAAUvX,KAAK,SAAA0D,GAAC,OAAIA,IAAM4T,KAC1BC,EAAUvX,KAAK,SAAA0D,GAAC,OAAIA,IAAM2R,KAC1BkC,EAAUvX,KAAK,SAAA0D,GAAC,OAAIA,IAAMgS,KAC1BL,EAKD,SAASoC,GAA8BJ,GAC1C,OAAOK,KAAoBt8B,OAAOu8B,MAC7BtgC,IAAI,SAAA6+B,GAAM,OAAIA,EAAO5W,KACrBsX,SAASS,GAASjW,GAAY,cAAeC,GAAgBuW,mBAAqBxW,GAAY,gBAAiBC,GAAgBuW,mBAGjI,SAASC,GAAyBC,EAA6BC,EAA+BtC,GACjG,IAAMuC,EAA4B5W,GAAY,cAAeC,GAAgBuW,mBACvEK,EAA+C7W,GAAY,6BAA8BC,GAAgBuW,mBACzGM,EAA8B9W,GAAY,gBAAiBC,GAAgBuW,mBAC3EO,EAA8B/W,GAAY,gBAAiBC,GAAgBuW,mBAE3ExB,EAAwBhV,GAAY,WAAYC,GAAgBgV,sBAChEC,EAAyB,CAAClV,GAAY,SAAUC,GAAgBgV,sBAAuBjV,GAAY,kBAAmBC,GAAgBgV,uBACtIE,EAAqBnV,GAAY,QAASC,GAAgBgV,sBAE1DS,EAAK1V,GAAY,WAAYC,GAAgB0V,aAC7CC,EAAK5V,GAAY,SAAUC,GAAgB0V,aAC3CE,EAAK7V,GAAY,WAAYC,GAAgB0V,aAE7CqB,EAAehX,GAAY,sBAAuBC,GAAgBgX,2CAClEC,EAAkBlX,GAAY,6BAA8BC,GAAgBgX,2CAE5EE,GAA6B9C,GAAgBA,EAAahS,KAAK,SAAAhd,GAAI,OAAIA,EAAKgwB,oBAAsBL,GAAyB3vB,EAAKiwB,YAChI8B,GAA2B/C,GAAgBA,EAAahS,KAAK,SAAAhd,GAAI,OAAI6vB,EAAuBM,SAASnwB,EAAKgwB,oBAAsBhwB,EAAKiwB,YACrI+B,GAA0BhD,GAAgBA,EAAahS,KAAK,SAAAhd,GAAI,OAAIA,EAAKgwB,oBAAsBF,GAAsB9vB,EAAKiwB,YAEhI,GAAIoB,IAAwBK,EACxB,MAAO,GAEN,GAAIL,IAAwBI,EAC7B,OAAOvC,KACFt+B,IAAI,SAAA6+B,GAAM,MAAK,CACZ5W,GAAI,GACJoZ,wBAAyBX,EACzBD,oBAAqBA,EACrB/C,gBAAiBmB,EAAO5W,MAE7B,GAAIwY,IAAwBE,EAA2B,CAC1D,IAAMW,EAAgC,GA6BtC,OA3BIJ,GACAI,EAAcjU,KAAK,CACfpF,GAAI,GACJoZ,wBAAyBX,EACzBD,oBAAqBA,EACrB9C,cAAe8B,IAInB0B,GACAG,EAAcjU,KAAK,CACfpF,GAAI,GACJoZ,wBAAyBX,EACzBD,oBAAqBA,EACrB9C,cAAegC,IAInByB,GACAE,EAAcjU,KAAK,CACfpF,GAAI,GACJoZ,wBAAyBX,EACzBD,oBAAqBA,EACrB9C,cAAeiC,IAIhB0B,EACJ,GAAIb,IAAwBG,EAA8C,CAC7E,IAAMU,EAAgC,GAoBtC,OAlBIJ,GAEAI,EAAcjU,KAAK,CACfpF,GAAI,GACJoZ,wBAAyBX,EACzBD,oBAAqBA,EACrBc,6BAA8BR,KAGlCK,GAA0BD,IAC1BG,EAAcjU,KAAK,CACfpF,GAAI,GACJoZ,wBAAyBX,EACzBD,oBAAqBA,EACrBc,6BAA8BN,IAI/BK,EAEP,MAAO,GAIR,SAASE,GAAyB5W,GACrC,IAAMznB,EAAa4mB,GAAY,WAAYC,GAAgBgV,sBACrDyC,EAAW1X,GAAY,SAAUC,GAAgBgV,sBACjD0C,EAAe3X,GAAY,kBAAmBC,GAAgBgV,sBAC9D2C,EAAU5X,GAAY,QAASC,GAAgBgV,sBAC/C4C,EAAY7X,GAAY,UAAWC,GAAgBuO,gBACnDsJ,EAAW9X,GAAY,SAAUC,GAAgBuO,gBACjDuJ,EAAW/X,GAAY,SAAUC,GAAgBuO,gBACjDwJ,EAAchY,GAAY,YAAaC,GAAgBuO,gBACvDyJ,EAAejY,GAAY,aAAcC,GAAgBuO,gBAGzD0J,GAFkBlY,GAAY,MAAOC,GAAgBuO,gBACpCxO,GAAY,MAAOC,GAAgBuO,gBACzCxO,GAAY,WAAYC,GAAgBuO,iBACnD2J,EAAWnY,GAAY,WAAYC,GAAgBuO,gBACnD4J,EAAWpY,GAAY,kBAAmBC,GAAgBuO,gBAC1D6J,EAAWrY,GAAY,qBAAsBC,GAAgBuO,gBAC5D8J,EAAStY,GAAY,SAAUC,GAAgBuO,gBAItD,OAH6B3N,IAAqBgX,GAAahX,IAAqBiX,GAAYjX,IAAqBkX,GACjHlX,IAAqBqX,GAAYrX,IAAqBsX,GAAYtX,IAAqBuX,GAAYvX,IAAqBwX,GACtHxX,IAAqByX,EAEhBC,KACFtiC,IAAI,SAAA6+B,GAAM,MAAK,CACZ5W,GAAI,GACJmX,kBAAmBP,EAAO5W,GAC1BoX,WAAW,KAEZzU,IAAqBmX,EACrBO,KACFtiC,IAAI,SAAA6+B,GAAM,MAAK,CACZ5W,GAAI,GACJmX,kBAAmBP,EAAO5W,GAC1BoX,UAAWR,EAAO5W,KAAO0Z,KAE1B/W,IAAqBoX,EACrBM,KACFtiC,IAAI,SAAA6+B,GAAM,MAAK,CACZ5W,GAAI,GACJmX,kBAAmBP,EAAO5W,GAC1BoX,UAAWR,EAAO5W,KAAOwZ,GAAY5C,EAAO5W,KAAOyZ,KAGpDY,KACFtiC,IAAI,SAAA6+B,GAAM,MAAK,CACZ5W,GAAI,GACJmX,kBAAmBP,EAAO5W,GAC1BoX,UAAWR,EAAO5W,KAAO9kB,KClVlC,IAAMo/B,GAA0BjiB,aAAW,SAAC+H,EAAekB,EAAiCmF,GAC/F,IAAM8T,EAAkBC,GAAWpa,GAC7Bqa,EAAiBC,GAAiBjU,GAClCkU,EAAkBC,GAAWxa,GACnC,MAAO,CACHoa,WAAYD,EACZK,WAAYD,EACZD,iBAAkBD,EAClBI,uBAAwBN,GAAmBE,EAC3CK,iBAAkBP,GAAmBI,KAIhCI,GAA6B1iB,aAAW,SAAC+H,GAElD,IAAI4a,EAAU5a,EAAM3b,OAAO,SAAAkc,GAAI,OAAIA,EAAKsa,kBACxC,OAAuB,IAAnBD,EAAQljC,QACAkjC,EAAQxM,MAAM,SAAA7N,GAAI,OAAIA,EAAKua,iBAK9BR,GAAmBriB,aAAW,SAACoO,GACxC,QAASA,EAAWnO,QAAQ7E,QAAUgT,EAAWC,aAAeD,EAAWnO,QAAQqO,MAG1E6T,GAAaniB,aAAW,SAAC+H,GAClC,IAAI+a,EAAoB,GAGxB,OAFAA,EAAO/V,KAAKhF,EAAMoO,MAAM,SAAA7N,GAAI,OAAIya,GAAuBza,MACvDwa,EAAO/V,KAAKiW,GAAmBjb,IACxB+a,EAAO3M,MAAM,SAAA8M,GAAK,OAAIA,MAGpBV,GAAaviB,aAAW,SAAC+H,GAClC,OAAOA,EAAMoO,MAAM,SAAA7N,GAAI,OAAI4a,GAAe5a,OAGjCya,GAAyB/iB,aAAW,SAACsI,GAC9C,OAAO6a,GAAkB7a,IAAS8a,GAAoB9a,KAG7C4a,GAAiBljB,aAAW,SAACsI,GACtC,IAAIoU,EAAS,GACTzY,GAAW,EAMf,OAJIqE,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuBqD,YAAWA,GAAW,GAC7GqE,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuBuD,qBAAwC,EAC/HmE,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuB2B,YAAWma,EAAS,IAC3GpU,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuBoD,YAAW0Y,EAAS,IAC3GpU,EAAK6U,aAAe1T,GAAY,YAAaC,GAAgBiU,cACvCF,GAA8BnV,EAAK+a,MAAO3G,EAAQzY,GACnDkS,MAAM,SAAA+G,GAAI,MAA2B,kBAAhBA,EAAKoG,QAAqD,kBAAtBpG,EAAKqG,cAAwD,kBAApBrG,EAAKsG,aAEvHlb,EAAK6U,aAAe1T,GAAY,YAAaC,GAAgBiU,eAAiBrV,EAAK6U,aAAe1T,GAAY,OAAQC,GAAgBiU,cACrHU,GAAkC/V,EAAK+a,OACxClN,MAAM,SAAA+G,GAAI,MAA2B,kBAAhBA,EAAKoG,SAE1Chb,EAAK6U,aAAe1T,GAAY,aAAcC,GAAgBiU,cAC7C4B,GAA+BjX,EAAK+a,MAAO/a,EAAKwV,cACjD3H,MAAM,SAAA+G,GAAI,MAA2B,kBAAhBA,EAAKoG,SAE1Chb,EAAK6U,aAAe1T,GAAY,iBAAkBC,GAAgBiU,cACjDE,GAAmCvV,EAAK+a,MAAOpf,EAAUE,EAAmBmE,EAAKwV,aAAcpB,GAChGvG,MAAM,SAAA+G,GAAI,MAA2B,kBAAhBA,EAAKoG,SAE1Chb,EAAK6U,aAAe1T,GAAY,sBAAuBC,GAAgBiU,eACtDO,GAAwC5V,EAAK+a,MAAO/a,EAAKwV,aAAcpB,GACxEvG,MAAM,SAAA+G,GAAI,MAA2B,kBAAhBA,EAAKoG,WAK1CH,GAAoBnjB,aAAW,SAACsI,GACzC,IAAMmb,EAAoBC,KAC1B,QAAWpb,EAAKuJ,uBAAyBvJ,EAAKqb,oBAA+ErhC,IAA7DmhC,EAAkBpb,KAAK,SAAA9e,GAAC,OAAIA,IAAM+e,EAAKgC,qBAG9F8Y,GAAsBpjB,aAAW,SAACsI,GAC3C,QAASA,EAAK1J,gBAAkB0J,EAAK1J,cAAcglB,SAAS9V,MAASI,QAAQ,OAAOrF,KAAK,GAAI,WAGpFma,GAAqBhjB,aAAW,SAACsI,GAC1C,OAAOA,EAAK7oB,OAAS,IAOZokC,IAJ0B7jB,aAAW,SAACiJ,GAC/C,OAAOA,EAAUxpB,OAAS,IAGAugB,aAAW,SAAC8jB,EAAmBC,EAAyBhc,EAAeic,EAA2BC,EAAoCC,GAChK,GAAIJ,GAAa,EAAG,MAAO,GAC3B,IAAMK,EAAiBC,GAAwBN,GAC3CO,EAA2BN,EAASv7B,QACpC87B,EAAuBN,EACvBO,EAAoBL,EACxB,GAAIC,EAAgB,CAChB,IAAMK,EAAgBzc,EAAMM,KAAK,SAAA9qB,GAAC,OAAI6mC,GAAwB7mC,EAAE+sB,oBAChE+Z,EAAcG,EAAgBH,EAAUj4B,OAAO,SAAAq4B,GAAC,OAAIA,EAAEva,cAAgBsa,EAActa,cAAema,EACnGE,EAAuBC,GAA+C,WAA9BA,EAActa,YAA4Bsa,EAAcE,YAAYrlC,QAAQ,SAAU,IAAImL,OAAS+5B,EAC3ID,IAAyBE,GAA+C,WAA9BA,EAActa,cAA6B8Z,EAiBzF,OAbIK,EADAJ,EACYI,EAAUj4B,OAAO,SAAAq4B,GAAC,MAAsB,UAAlBA,EAAEva,cAExBma,EAAUj4B,OAAO,SAAAq4B,GAAC,MAAsB,UAAlBA,EAAEva,aAA2Bua,EAAEE,oBAGjEL,GACAD,EAAUtX,KAAK,CACX7C,YAAa,QACbkO,YAAa,GACbsM,YAAaH,EAAiB,UAAA9gC,OAAa8gC,GAAsB,QACjEI,mBAAmB,IAGpBN,KAGEO,GAA2B5kB,aAAW,SAAC+H,GAEhD,OAAOA,EAAM3b,OAAO,SAAA7O,GAAC,OAAIA,EAAEsnC,UAA4C,WAAhCtnC,EAAE2sB,YAAYtnB,gBAA4BnD,OAAS,IAGjFqlC,GAAsB9kB,aAAW,SAACsI,GAE3C,OAAQA,EAAKuc,UAA+C,WAAnCvc,EAAK4B,YAAYtnB,gBAGjCmiC,GAA2B,SAACzd,GAErC,IADA,IAAI0d,EAAiD,GADCnZ,EAAA,SAE7CtiB,EAAO07B,GACZ,IAAM3c,EAAOhB,EAAK/d,IACgE,IAA9Ey7B,EAAsBE,UAAU,SAAA/Z,GAAC,OAAIA,EAAEjB,cAAgB5B,EAAK4B,eAC5D8a,EAAsBjY,KAAK,CACvB7C,YAAa5B,EAAK4B,YAClBzB,qBAAsBH,EAAKG,wBAL9Blf,EAAI,EAAG07B,EAAM3d,EAAK7nB,OAAQ8J,EAAI07B,EAAK17B,IAAKsiB,EAAxCtiB,GAST,OAAOy7B,GAIEG,GAAqC,SAACjb,EAAqB8a,GACpE,IAAMI,EAAmBJ,EAAsB54B,OAAO,SAACq4B,GACnD,OAAOA,EAAEva,cAAgBA,IAG7B,OAAIkb,EAAiB3lC,OAAS,EACnB2lC,EAAiB,GAAG3c,qBAGxB,IAGE4c,GAAqB,SAAC/c,GAE/B,OADkBA,GAAQA,EAAK4B,cAAgBob,GAAe,uBAAwB5b,GAAgBQ,cAG7Fqb,GAA+B,SAACnqB,EAAc2M,GAAkD,IAAjCyd,EAAiCrmC,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAP,GAElG,MAAuB,IAAnBqmC,EACOzd,EAAMkX,SAAS7jB,GAEjBA,GAAQoqB,GAENzd,EAAMkX,SAAS7jB,ICxJjBqqB,GAAa,SAACC,GACvB,GAAKA,EACL,OAAOA,EAAoBhmC,IAAI,SAAAimC,GAAQ,MACnC,CACIC,iBAAkBD,EAASC,iBAC3BC,WAAYF,EAASE,WACrBC,YAAaH,EAASG,YACtBC,aAAcJ,EAASI,aACvBC,eAAgB,EAChBC,QAASN,EAASM,YAKjBC,GAAoB,SAApBA,EAAqBC,EAA+BC,EAAmCC,EAAgCC,GAChI,IAAIC,EAAkD,GA6BtD,OA5BAJ,EAAcje,QAAQ,SAACyd,GACnB,IAAIa,EAAgBH,EAAahe,KAAK,SAAAoe,GAAE,OACpCA,EAAGZ,aAAeF,EAASE,YAAcY,EAAGX,cAAgBH,EAASG,cACrEY,EAA8B,CAC9Bb,WAAYF,EAASE,WACrBC,YAAaH,EAASG,YACtBC,aAAcJ,EAASI,aACvBY,eAAahB,EAASiB,gBAAkBjB,EAASiB,eAAennC,OAAS,GACzEonC,iBAA6B,IAAZP,EACjBQ,UAAWnB,EAASmB,UACpBb,QAASN,EAASoB,eACb36B,OAAO,SAAAub,GAAE,OAAIye,EAAqBpa,IAAIrE,KACtCjoB,IAAI,SAAA29B,GAAa,MAAK,CACnB2J,SAAU3J,EACVp3B,MAAOugC,GACAA,EAAcP,QAAQ75B,OAAO,SAAAhO,GAAC,OAAIA,EAAE4oC,WAAa3J,IAAe39B,IAAI,SAAAtB,GAAC,OAAIA,EAAE6H,QAAOoiB,KAAK,SAAAjqB,GAAC,OAAI,QAI/G,GADAmoC,EAAyBxZ,KAAK2Z,GAC1Bf,EAASiB,gBAAqD,IAAnCjB,EAASiB,eAAennC,OAAc,CACjE,IAAIqK,EAAgCo8B,EAAkBP,EAASiB,eAAgBR,EAAsBC,GACrGE,EAA2BA,EAAyB9iC,OAAOqG,EAAOpK,IAAI,SAAAunC,GAAG,OAAAhpC,OAAA0G,EAAA,EAAA1G,CAAA,GAClEgpC,EADkE,CAErEJ,iBAAiB,EACjBjB,iBAAkBD,EAASE,mBAIhCU,GAGE7rB,GAAa,SAACvS,GACvB,MAAsB,kBAAXA,EAA4B,GAChCA,EAAO++B,OAAO,GAAGtkC,cAAgBuF,EAAOK,MAAM,ICpElD,SAAS2+B,GAAkBhK,GAS9B,MAR8B,CAC1B,YACA,YACA,aACA,iBACA,sBACA,QAEa9U,KAAK,SAAA+e,GAAQ,OAAI3d,GAAY2d,EAAU1d,GAAgBiU,gBAAkB/S,UAAUuS,GAAc,IAAI1zB,kBCC3G49B,GADO,0GAPdviC,OAAOwiC,SAAS,EAAG,GAChB35B,GAAWkC,YACVlC,GAAW45B,wBC8HRC,GADM,qDA7HjBC,iBAAwB3Z,IAAOuN,WAC/BqM,mCACAC,oCACAC,8BACAC,6BAGQC,0GACyB,IAAA5hC,EAAAhH,KACzByO,GAAWkC,aACX3Q,KAAK4oC,sBAAwBh4B,YAAY,WACjC5J,EAAK6hC,eACLp6B,GAAWiB,yBAAyBxI,KAAK,SAACmI,GACtCxL,EAAOS,IAAI,gDAGfT,EAAOS,IAAI,oDAEhB,oDAKPtE,KAAKuoC,iBAAmB3Z,IAAOuN,2CAItB2M,EAAeC,GACxB/oC,KAAKgpC,sBACLhpC,KAAK0oC,kBAAoBK,EACzB/oC,KAAK2oC,iBAAmBG,EACxB9oC,KAAKipC,kGAGwB55B,6GAEV65B,wBAAU,CAAEC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAU,CAAEy8B,YAAah6B,aAA7EzO,SACN8M,GAAKqF,IAAMnS,EAAKuE,MAChBtB,EAAOS,IAAI,iCACXtE,KAAKipC,yJAGc,IAAAzhC,EAAAxH,KACnB,GAAIyO,GAAWkC,WACXlC,GAAWiB,yBAAyBxI,KAAK,SAACmI,GACtC7H,EAAK8hC,mBAAmBj6B,SAG3B,CACD,IAAKrP,KAAK6oC,eAEN,YADA7oC,KAAK0oC,oBAITh7B,GAAK67B,eAAeriC,KAAK,WACrBM,EAAKyhC,eACLplC,EAAOS,IAAI,+DAKDklC,EAAaC,GAC/B,OAAOt4B,KAAKu4B,MAAOF,EAAM,IAAOC,0CAUhC,IAAME,EAAc/a,IAAOgb,KAAK5pC,KAAK6pC,WAAW7Z,KAC5C8Z,EAAuBlb,IAAOmb,SAASnb,IAAOuN,MAAMpN,KAAK/uB,KAAKuoC,mBAAmByB,YAC/EC,EAAYrb,IAAOgb,KAAK5pC,KAAK6pC,WAAWK,KAC1CC,EAAYvb,IAAOmb,SAASJ,EAAY5a,KAAKkb,IAAYD,YAG7D,OAFAG,EAAYnqC,KAAKoqC,cAAcD,EAAW,IAC1CtmC,EAAOS,IAAP,4CAAAC,OAAuDulC,EAAvD,yBAAAvlC,OAAmG4lC,KAExF,6CAMPnqC,KAAKwoC,wBACL9oC,aAAaM,KAAKwoC,wBAGlBxoC,KAAKyoC,yBACL/oC,aAAaM,KAAKyoC,gEAIH,IAAAvgC,EAAAlI,KACnBA,KAAKqqC,mBACL,IAAMV,EAAc/a,IAAOgb,KAAK5pC,KAAK6pC,WAAW7Z,KAC1Csa,EAAwB1b,IAAOmb,SAASJ,EAAY5a,KAAKH,IAAOuN,QAAQoO,iBAE9E,GAAID,EAAwB,EACxB58B,GAAK88B,aADT,CAKA,IACIC,EAAyBH,EADA,KAGzBI,EAA8BD,EAAyB,IAC3D5mC,EAAOS,IAAP,gCAAAC,OAA2CmmC,IAG3C1qC,KAAKyoC,wBAA0B7oC,WAAW,WACtCsI,EAAKqhC,gBACNkB,GAEHzqC,KAAKwoC,uBAAyB5oC,WAAW,WACrCsI,EAAKygC,mBACDzgC,EAAK0gC,uBACL+B,cAAcziC,EAAK0gC,wBAExB0B,uCAtDH,OAAI77B,GAAWkC,WACJjD,GAAKm8B,WAETn8B,GAAKk9B,yBCxEdC,GAAW,SAACC,GACd,OAAQA,EAAO,EAAI,IAAM,MAGhBC,GAAiB,SAACC,EAA0BC,GACrD,OAAO95B,KAAKynB,MAAMhK,IAAOmb,SAASiB,EAAUjc,KAAKkc,IAAQC,WAGhDC,GAAqBrqB,aAAW,SAACsqB,EAA0Bvc,GACpE,IAAMwc,EAAYzc,MAASI,QAAQ,OAC7Bsc,EAAQP,GAAeK,EAAWC,GAClCE,EAAMR,GAAelc,EAASwc,GAEpC,MAAO,CACHJ,MAAOI,EACPG,UAAWF,EACXG,QAASF,EACTG,UAAWb,GAASS,GACpBK,QAASd,GAASU,MAIbK,GAA+B9qB,aAAW,SAACsqB,EAA0Bvc,EAAwBgd,GACtG,IAAMC,EAAiBX,GAAmBC,EAAWvc,GAC/Ckd,EAAmBx9B,IAAMJ,cAAc,IAAK,KAAMi9B,EAAU/O,OAAO,OACnE2P,EAAiBz9B,IAAMJ,cAAc,IAAK,KAAM0gB,EAAQwN,OAAO,OAC/D4P,EAA6B19B,IAAMJ,cAAc,IAAK,KAAM29B,EAAeN,WAC3EU,EAA2B39B,IAAMJ,cAAc,IAAK,KAAM29B,EAAeL,SAC/E,OAAI7c,IAAOC,GAASC,MAAM,OAAO4V,SAASoH,EAAeb,OACjDY,EACO,CACHM,SAAU59B,IAAMJ,cAAcI,IAAMD,SAAU,KAApC,aAAwD09B,IAG/D,CACHG,SAAU59B,IAAMJ,cAAcI,IAAMD,SAAU,KAApC,wBAAmE09B,GAC7E5C,KAAM76B,IAAMJ,cAAc,WAAY,KAAhC,6BAAoE49B,EAApE,OAA8FC,IAErGpd,IAAOwc,GAAWpc,QAAQ,OAAOiO,QAAQ6O,EAAeb,QAAuC,IAA7Ba,EAAeN,UACpFK,EACO,CACHM,SAAU59B,IAAMJ,cAAcI,IAAMD,SAAU,KAAM29B,EAA1C,OAAA1nC,OAA6EunC,EAAeJ,WAAa,GAAzG,kBAGP,CACHS,SAAU59B,IAAMJ,cAAcI,IAAMD,SAAU,KAAM29B,EAA1C,OAAA1nC,OAA6EunC,EAAeJ,WAAa,GAAzG,sBACVtC,KAAM76B,IAAMJ,cAAc,WAAY,KAAhC,8BAAqE49B,EAArE,OAA+FC,IAGzGH,EACO,CACHM,SAAU59B,IAAMJ,cAAcI,IAAMD,SAAU,KAAM49B,EAA1C,OAAA3nC,OAA2EunC,EAAeH,SAAW,GAArG,gBAGP,CACHQ,SAAU59B,IAAMJ,cAAcI,IAAMD,SAAU,KAAM49B,EAA1C,OAAA3nC,OAA2EunC,EAAeH,SAAW,GAArG,eACVvC,KAAM76B,IAAMJ,cAAc,WAAY,KAAhC,uBAA8D49B,EAA9D,OAAwFC,EAAxF,qCAKTI,GAAetrB,aAAW,SAACurB,EAAyB3sB,GAC7D,IAAM4sB,EAAYD,EAASrd,QAAQ,OAC7B6N,GAAOnd,GAAiBkP,OAAUI,QAAQ,OAE5CyO,EADgB7O,IAAOmb,SAASlN,EAAI9N,KAAKud,IACvBC,QAGtB,OAFID,EAAUE,SAAW3P,EAAI2P,QAAUF,EAAUtP,UAAYH,EAAIG,SAC7DS,IACGA,ICnEEjT,GAAkB,CAC3BiiB,SAAU,EACVC,QAAS,EACT3+B,MAAO,EACP4+B,YAAa,EACbC,iBAAkB,EAClB7T,eAAgB,EAChB8T,OAAQ,EACRC,cAAe,EACfC,iBAAkB,GAClBC,aAAc,GACdC,cAAe,GACfC,aAAc,GACdC,WAAY,GACZ1iB,eAAgB,GAChB2iB,WAAY,GACZt8B,SAAU,GACV2tB,aAAc,GACdM,cAAe,GACfsO,eAAgB,GAChBC,gBAAiB,GACjBpM,sBAAuB,GACvBH,kBAAmB,GACnBb,YAAa,GACbqN,mBAAoB,GACpB3a,kBAAmB,GACnB4a,eAAgB,GAChBhO,qBAAsB,GACtBiO,cAAe,GACfC,mBAAoB,GACpBC,cAAe,GACfC,0BAA2B,GAC3BC,2BAA4B,GAC5BC,QAAS,GACTC,gBAAiB,GACjBC,iBAAkB,GAClBC,qBAAsB,GACtBC,eAAgB,GAChBC,aAAc,GACdC,WAAY,GACZC,gBAAiB,GACjBC,eAAgB,GAChBC,yBAA0B,GAC1BvjB,YAAa,GACbwjB,aAAc,GACd3jB,aAAc,GACdqS,cAAe,GACfsE,0CAA2C,GAC3CiN,oBAAqB,GACrBC,aAAc,GACdC,YAAa,GACbC,yBAA0B,GAC1BC,cAAe,GACfC,iCAAkC,GAClCC,wBAAyB,GACzBC,sBAAuB,GACvBhiB,WAAY,GACZiiB,gBAAiB,IAGRC,GAA0B,CACnCC,cAAe,MACfC,uBAAwB,OAGfC,GAEU,IAFVA,GAGQ,IAIRC,GAAmC,CAC5CC,IAAK,MACLC,QAAS,UACTC,gBAAiB,kBACjBC,0BAA2B,4BAC3BC,WAAY,cAGhB,SAASC,GAAaC,EAAgBrkB,EAAgBskB,GAClD,IAAMC,EAA4B,GAClC,IAAK,IAAItnB,KAAMonB,EAAQ,CACnB,IAAM9oC,EAAQ8oC,EAAOpnB,GACjB1hB,EAAMykB,SAAWA,GAAWskB,GAAY/oC,EAAMipC,UAAUzvC,OAAS,KAAIwG,EAAMipC,UAAU3mC,QAAQymC,IAAa,IAC1GC,EAAaliB,KAAb9uB,OAAA0G,EAAA,EAAA1G,CAAA,CACI0pB,GAAI9b,OAAO8b,IACR1hB,IAYf,OATAgpC,EAAazjC,KAAK,SAACpN,EAAGwN,GAClB,OAAIxN,EAAE+6B,MAAQvtB,EAAEutB,OAAe,EACtB/6B,EAAE+6B,MAAQvtB,EAAEutB,MAAc,EAE3B/6B,EAAE6H,MAAQ2F,EAAE3F,OAAe,EACtB7H,EAAE6H,MAAQ2F,EAAE3F,MAAc,EACvB,IAGbgpC,EAGX,SAASE,GAAkBJ,EAAgBrkB,EAAgB0kB,EAAiBC,EAAiBL,GACzF,IAAMC,EAA4B,GAClC,IAAK,IAAItnB,KAAMonB,EAAQ,CACnB,IAAM9oC,EAAQ8oC,EAAOpnB,GAChB1hB,EAAMykB,SAAWA,GAAUzkB,EAAMykB,SAAW0kB,IAAsB,IAAVC,GAAeppC,EAAMykB,SAAW2kB,IAAcL,GAAY/oC,EAAMipC,UAAUzvC,OAAS,KAAIwG,EAAMipC,UAAU3mC,QAAQymC,IAAa,IACrLC,EAAaliB,KAAb9uB,OAAA0G,EAAA,EAAA1G,CAAA,CACI0pB,GAAI9b,OAAO8b,IACR1hB,IAYf,OATAgpC,EAAazjC,KAAK,SAACpN,EAAGwN,GAClB,OAAIxN,EAAE+6B,MAAQvtB,EAAEutB,OAAe,EACtB/6B,EAAE+6B,MAAQvtB,EAAEutB,MAAc,EAE3B/6B,EAAE6H,MAAQ2F,EAAE3F,OAAe,EACtB7H,EAAE6H,MAAQ2F,EAAE3F,MAAc,EACvB,IAGbgpC,EAiBJ,IAAMK,GAAa,kBAAMC,GAAMC,WAAWjR,OAAOwQ,QAE3CtlB,GAAczJ,aAAW,SAACyvB,EAAkBC,GACrD,IAAMX,EAASO,KACXK,GAAW,EACf,IAAK,IAAIhoB,KAAMonB,EAAQ,CACnB,IAAMjZ,EAAMiZ,EAAOpnB,GACfmO,EAAIpL,SAAWglB,GAAiB5Z,EAAI9vB,IAAIwrB,gBAAkBie,EAASje,eAAiBsE,EAAI7vB,MAAMurB,gBAAkBie,EAASje,gBACzHme,EAAU9jC,OAAO8b,IAEzB,OAAOgoB,IAGErK,GAAiBtlB,aAAW,SAACha,EAAa0pC,GACnD,IACIE,EADEb,EAASO,KAEf,IAAK,IAAI3nB,KAAMonB,EAAQ,CACnB,IAAMjZ,EAAMiZ,EAAOpnB,GACfmO,EAAIpL,SAAWglB,GAAiB5Z,EAAI9vB,IAAIwrB,gBAAkBxrB,EAAIwrB,gBAC9Doe,EAAa9Z,EAAI7vB,OAEzB,OAAO2pC,IAGLC,GAAW7vB,aAAW,SAAC+uB,EAAgBpnB,GACzC,IAAI4W,EAASwQ,EAAOpnB,GACpB,OAAO4W,EAASA,EAAOt4B,WAAQ3D,IAEtBwtC,GAAU,SAACnoB,GACpB,OAAOkoB,GAASP,KAAc3nB,IAG5BooB,GAAc/vB,aAAW,SAAC+uB,EAAgBpnB,GAC5C,IAAI4W,EAASwQ,EAAOpnB,GACpB,OAAO4W,EAASA,EAAOv4B,SAAM1D,IAEpB8vB,GAAa,SAACzK,GACvB,OAAOooB,GAAYT,KAAc3nB,IAG/BqoB,GAAyBhwB,aAAW,SAAC+uB,EAAgBpnB,GACvD,IAAI4W,EAASwQ,EAAOpnB,GACpB,OAAO4W,EAASxvB,KAAKpF,MAAM40B,EAAO0R,yBAAsB3tC,IAE/C4tC,GAAwB,SAACvoB,GAClC,OAAOqoB,GAAuBV,KAAc3nB,IAG1CwoB,GAAsBnwB,aAAW,SAAC+uB,GACpC,OAAOD,GAAaC,EAAQrlB,GAAgBykB,mBAQ1CiC,GAAWpwB,aAAW,SAAC+uB,GACzB,OAAOD,GAAaC,EAAQrlB,GAAgBuO,kBAEnCa,GAAU,WACnB,IAAMuX,EAAef,KACrB,OAAOc,GAASC,IAGdC,GAAqBtwB,aAAW,SAAC+uB,GACnC,OAAOD,GAAaC,EAAQrlB,GAAgB0S,iBAEnCmU,GAAwB,WACjC,IAAMF,EAAef,KAQrB,OAPegB,GAAmBD,GACE3wC,IAAI,SAAC8wC,GACrC,MAAO,CACH1U,oBAAqB0U,EAAK7oB,GAC1B8oB,sBAAuBD,EAAKvqC,UAMlCyqC,GAAe1wB,aAAW,SAAC+uB,GAC7B,OAAOD,GAAaC,EAAQrlB,GAAgB+iB,sBAEnCkE,GAAc,WACvB,IAAMN,EAAef,KACrB,OAAOoB,GAAaL,IAGlBO,GAAuB5wB,aAAW,SAAC+uB,EAAgB8B,GAErD,OAvGJ,SAAwB9B,EAAgBC,GACpC,IAAMC,EAA4B,GAClC,IAAK,IAAItnB,KAAMonB,EAAQ,CACnB,IAAM9oC,EAAQ8oC,EAAOpnB,GACjB1hB,EAAMipC,UAAU3mC,QAAQymC,IAAa,GACrCC,EAAaliB,KAAb9uB,OAAA0G,EAAA,EAAA1G,CAAA,CACI0pB,GAAI9b,OAAO8b,IACR1hB,IAGf,OAAOgpC,EA6FA6B,CAAe/B,EADJtlB,GAAYonB,EAAYnnB,GAAgB+iB,uBAGjDsE,GAAmB,SAACF,GAC7B,IAAMR,EAAef,KACrB,OAAOsB,GAAqBP,EAAcQ,IAGjCnN,GAAuB1jB,aAAW,WAC3C,OAAO+wB,GAAiB,cAActtC,OAAOstC,GAAiB,SAASrxC,IAAI,SAAA6J,GAAC,OAAIA,EAAEoe,OAGzEqpB,GAAmBhxB,aAAW,SAACixB,GAGxC,OAFqB3B,KACU2B,GACd/B,UAAU,KAGzBgC,GAAgBlxB,aAAW,SAAC+uB,GAC9B,OAAOD,GAAaC,EAAQrlB,GAAgBiiB,YAEnCwF,GAAe,WACxB,IAAMd,EAAef,KACrB,OAAO4B,GAAcb,IAWnBe,IARepxB,aAAW,SAAC+uB,GAC7B,OAAOD,GAAaC,EAAQrlB,GAAgBkiB,WAO7B5rB,aAAW,SAAC+uB,GAC3B,OAAOD,GAAaC,EAAQrlB,GAAgBzc,UAEnCokC,GAAY,WACrB,IAAMhB,EAAef,KACrB,OAAO8B,GAAWf,IAGhBiB,GAAmBtxB,aAAW,SAAC+uB,GACjC,OAAOD,GAAaC,EAAQrlB,GAAgBmiB,eAEnC0F,GAAkB,WAC3B,IAAMlB,EAAef,KACrB,OAAOgC,GAAiBjB,IAGtBmB,GAAcxxB,aAAW,SAAC+uB,GAC5B,OAAOD,GAAaC,EAAQrlB,GAAgBqiB,UAEnC0F,GAAa,WACtB,IAAMpB,EAAef,KACrB,OAAOkC,GAAYnB,IAGjBqB,GAAiB1xB,aAAW,SAAC+uB,GAC/B,OAAOD,GAAaC,EAAQrlB,GAAgBwC,cAEnCylB,GAAgB,WACzB,IAAMtB,EAAef,KACrB,OAAOoC,GAAerB,IAGpBuB,GAAoB5xB,aAAW,SAAC+uB,GAClC,OAAOD,GAAaC,EAAQrlB,GAAgBsiB,iBAM1C6F,GAAoB7xB,aAAW,SAAC+uB,GAClC,OAAOD,GAAaC,EAAQrlB,GAAgBmjB,iBAM1CiF,GAAgC9xB,aAAW,SAAC+uB,GAC9C,OAAOD,GAAaC,EAAQrlB,GAAgBojB,6BAO1CiF,GAAqB/xB,aAAW,SAAC+uB,GACnC,OAAOD,GAAaC,EAAQrlB,GAAgBijB,iBAO1CqF,GAAuBhyB,aAAW,SAAC+uB,GACrC,OAAOD,GAAaC,EAAQrlB,GAAgBuiB,kBAAkB7/B,OAAO,SAAAkC,GAAM,MAAmB,UAAfA,EAAOtI,KAAkC,aAAfsI,EAAOtI,QAEvGisC,GAAsB,WAC/B,IAAM5B,EAAef,KACrB,OAAO0C,GAAqB3B,IAG1B6B,GAAiClyB,aAAW,SAAC+uB,GAC/C,OAAOD,GAAaC,EAAQrlB,GAAgBuiB,oBAO1CkG,GAAiBnyB,aAAW,SAAC+uB,GAC/B,OAAOD,GAAaC,EAAQrlB,GAAgB0jB,kBAMnCgF,GAAkBpyB,aAAW,SAACqyB,GACvC,IAAMC,EAAehD,KAAa+C,GAC9BE,GAAc,EAClB,GAAID,EAAc,CACd,IAAIE,EAAcF,EAAarsC,MAAMurB,eACjCghB,EAAYvT,SAAS,UAAYuT,EAAYvT,SAAS,aAAWsT,GAAc,GAEvF,OAAOA,IAGLE,GAAoBzyB,aAAW,SAAC+uB,GAClC,OAAOD,GAAaC,EAAQrlB,GAAgBwiB,gBAEnCwG,GAAmB,WAC5B,IAAMrC,EAAef,KACrB,OAAOmD,GAAkBpC,IAGvBsC,GAAqB3yB,aAAW,SAAC+uB,GACnC,OAAOD,GAAaC,EAAQrlB,GAAgByiB,iBAEnCyG,GAAoB,WAC7B,IAAMvC,EAAef,KACrB,OAAOqD,GAAmBtC,IAIxBwC,GAA4B7yB,aAAW,SAAC+uB,GAE1C,OAD4BI,GAAkBJ,EAAQrlB,GAAgByiB,cAAeziB,GAAgBwkB,sBAAuB,KAGnH4E,GAA2B,WACpC,IAAMzC,EAAef,KACrB,OAAOuD,GAA0BxC,IAI/B0C,GAA8B/yB,aAAW,SAAC+uB,EAAgBiE,GAC5D,OAAIA,EACO7D,GAAkBJ,EAAQrlB,GAAgByiB,cAAeziB,GAAgBwkB,sBAAuBxkB,GAAgBukB,yBAEhH0E,GAAmB5D,KAQrBkE,GAAkC,SAACC,GAC5C,IAAM7C,EAAef,KAKrB,OAJoB6D,GAAkB9C,GAEAjkC,OAAO,SAAA2wB,GAAC,MAAc,uBAAVA,EAAE/2B,KAA0C,uBAAV+2B,EAAE/2B,KAA0C,UAAV+2B,EAAE/2B,KAA6B,cAAV+2B,EAAE/2B,MACxIoG,OAAO,SAAA2wB,GAAC,OAAIA,EAAEpV,IAAMurB,KAIvBC,GAAoBnzB,aAAW,SAAC+uB,GAClC,OAAOD,GAAaC,EAAQrlB,GAAgB0iB,gBAEnCgH,GAAmB,WAC5B,IAAM/C,EAAef,KAIrB,OAHoB6D,GAAkB9C,GAEAjkC,OAAO,SAAAklB,GAAM,MAAmB,uBAAfA,EAAOtrB,KAA+C,uBAAfsrB,EAAOtrB,OAInGqtC,GAAkBrzB,aAAW,SAAC+uB,GAChC,OAAOD,GAAaC,EAAQrlB,GAAgB2iB,cAO1CiH,GAAkBtzB,aAAW,SAAC+uB,GAChC,OAAOD,GAAaC,EAAQrlB,GAAgB4iB,cAO1CiH,GAAgBvzB,aAAW,SAAC+uB,EAAgBC,GAC9C,OAAOF,GAAaC,EAAQrlB,GAAgBiU,aAAcqR,KAEjDnP,GAAe,SAAC2T,GACzB,IAAMnD,EAAef,KACrB,OAAOiE,GAAclD,EAAcmD,IAGjCC,GAAyBzzB,aAAW,SAAC+uB,GACvC,OAAOD,GAAaC,EAAQrlB,GAAgBkjB,sBAO1C8G,GAAqB1zB,aAAW,SAAC+uB,GACnC,OAAOD,GAAaC,EAAQrlB,GAAgBuU,iBAEnCD,GAAoB,WAC7B,IAAMqS,EAAef,KACrB,OAAOoE,GAAmBrD,IAGxBsD,GAA2B3zB,aAAW,SAAC+uB,GACzC,OAAOD,GAAaC,EAAQrlB,GAAgBgV,wBAEnCsD,GAA0B,WACnC,IAAMqO,EAAef,KACrB,OAAOqE,GAAyBtD,IAmB9BuD,IAhB4B5zB,aAAW,SAAC+uB,GAC1C,OAAOD,GAAaC,EAAQrlB,GAAgB0W,yBAOlBpgB,aAAW,SAAC+uB,GACtC,OAAOD,GAAaC,EAAQrlB,GAAgBuW,qBAOxBjgB,aAAW,SAAC+uB,GAChC,OAAOD,GAAaC,EAAQrlB,GAAgB0V,gBAEnCyU,GAAiB,WAC1B,IAAMxD,EAAef,KACrB,OAAOsE,GAAgBvD,IAGrByD,GAAwB9zB,aAAW,SAAC+uB,EAAgBC,GACtD,OAAOF,GAAaC,EAAQrlB,GAAgBoI,kBAAmBkd,KAO7D+E,GAAqB/zB,aAAW,SAAC+uB,GACnC,OAAOD,GAAaC,EAAQrlB,GAAgBgjB,kBAe1CsH,IARch0B,aAAW,SAAC+uB,GAC5B,OAAOD,GAAaC,EAAQrlB,GAAgBsjB,WAOtBhtB,aAAW,SAAC+uB,GAClC,OAAOD,GAAaC,EAAQrlB,GAAgB2jB,iBAE1C4G,GAAuBj0B,aAAW,SAAC+uB,GACrC,OAAOD,GAAaC,EAAQrlB,GAAgBmkB,eAU1CqG,GAAkBl0B,aAAW,SAAC+uB,GAChC,OAAOD,GAAaC,EAAQrlB,GAAgB4jB,cAEnC6G,GAAiB,WAC1B,IAAM9D,EAAef,KACrB,OAAO4E,GAAgB7D,IAGrB+D,GAAsBp0B,aAAW,SAAC+uB,GACpC,OAAOD,GAAaC,EAAQrlB,GAAgB6jB,mBAO1C8G,GAAsBr0B,aAAW,SAAC+uB,GACpC,OAAOD,GAAaC,EAAQrlB,GAAgB8jB,kBAOnC8G,GAAsB,SAACruC,GAWhC,MAVwB,CACpBsuC,IAAK,IACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,EACLC,IAAK,EACLC,IAAK,GAEc7uC,IAiBrB8uC,GAAsB/0B,aAAW,SAAC+uB,GACpC,OAAOD,GAAaC,EAAQrlB,GAAgB6iB,kBAEnCyI,GAAqB,WAC9B,IAAM3E,EAAef,KACrB,OAAOyF,GAAoB1E,IAGlB4E,GAA0B,WAEnC,OADuBrC,KACDxmC,OAAO,SAAA7C,GAAC,OAE1B,IAF8BA,EAAE2lC,UAC/B9iC,OAAO,SAAA8oC,GAAG,OAAIA,IAAQzrB,GAAY,QAASC,GAAgBgV,wBAAuBj/B,UAI9Eg6B,GAAmB,WAC5B,IAAMD,EAAcyb,KACdnrC,EAAS,IAAI8e,IAEnB,OADA4Q,EAAYtR,QAAQ,SAAA4O,GAAI,OAAIhtB,EAAO+e,IAAIiO,EAAKnP,MACrC7d,GAGEqrC,GAAyB,WAElC,OAFmEh2C,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,IAAAA,UAAA,GAC/B2zC,KAA6BF,MAC3CxmC,OAAO,SAAA7C,GAAC,OAAIA,EAAE2lC,UAC/B9iC,OAAO,SAAA8oC,GAAG,OAAIA,IAAQzrB,GAAY,QAASC,GAAgBgV,wBAAuBj/B,OACnF,KAGK85B,GAAkB,WAC3B,IAAMD,EAAa6b,IAAuB,GACpCrrC,EAAS,IAAI8e,IAEnB,OADA0Q,EAAWpR,QAAQ,SAAA4O,GAAI,OAAIhtB,EAAO+e,IAAIiO,EAAKnP,MACpC7d,GAGEk2B,GAAc,WAEvB,OADiBlH,KACD1sB,OAAO,SAAA7C,GAAC,OAAIA,EAAE2lC,UAAU9iC,OAAO,SAAA8oC,GAAG,OAAIA,IAAQzrB,GAAY,WAAYC,GAAgB+iB,sBAAqBhtC,OAAS,KAG3H21C,GAAiC,WAC1C,IAAMC,EAAWvc,KACXwc,EAAc7rB,GAAY,YAAaC,GAAgBuO,gBACvDsd,EAAqB9rB,GAAY,WAAYC,GAAgBuO,gBACnE,OAAOod,EAASjpC,OAAO,SAAA7C,GAAC,OAAIA,EAAEoe,KAAO2tB,GAAe/rC,EAAEoe,KAAO4tB,KAGpDxV,GAAoB,WAE7B,OADuBjH,KACD1sB,OAAO,SAAA7C,GAAC,OAAIA,EAAE2lC,UAAU9iC,OAAO,SAAA8oC,GAAG,OAAIA,IAAQzrB,GAAY,iBAAkBC,GAAgB+iB,sBAAqBhtC,OAAS,KAG9I+1C,GAA0Bx1B,aAAW,SAACy1B,EAAkB/V,GAC1D,OAAO5G,KAAU1sB,OAAO,SAAA7C,GAAC,OAAIA,EAAEoe,KAAO+X,GAASn2B,EAAE2lC,UAAU9iC,OAAO,SAAA8oC,GAAG,OAAIA,IAAQzrB,GAAYgsB,EAAU/rB,GAAgB+iB,sBAAqBhtC,OAAS,IAAGA,OAAS,IAExJi2C,GAAkB,SAAChW,GAC5B,QAASA,GAAS8V,GAAwB,iBAAkB9V,IAGnDiW,GAAY,SAACjW,GACtB,QAASA,GAAS8V,GAAwB,WAAY9V,IAO7CkW,GAAyB,CAAC,eAAgB,sBAAuB,eAAgB,WAAY,kBAAmB,YAChHxR,GAA0B,SAAC1E,GAEpC,QADY,GAAAj8B,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAI66B,MAAJ76B,OAAAgO,EAAA,EAAAhO,CAAkB0yC,OAAetoB,KAAK,SAAA9e,GAAC,OAAIqsC,GAAuB9pB,KAAK,SAAA9lB,GAAG,OAAIA,IAAQuD,EAAEvD,OAAQuD,EAAEoe,KAAO+X,KAI5GmW,GAAiB,SAACnW,GAC3B,OAAQ8V,GAAwB,eAAgB9V,IAAU8V,GAAwB,sBAAuB9V,IAAU8V,GAAwB,eAAgB9V,IACpJ8V,GAAwB,WAAY9V,IAAU8V,GAAwB,kBAAmB9V,IAAU8V,GAAwB,WAAY9V,IACvI8V,GAAwB,mBAAoB9V,IAC5C8V,GAAwB,yBAA0B9V,IAClD8V,GAAwB,YAAa9V,IAGnCoW,GAAyB,SAACpW,GACnC,OAAQ8V,GAAwB,mBAAoB9V,IAC7C8V,GAAwB,YAAa9V,IACrC8V,GAAwB,yBAA0B9V,IAoBhDqW,GAAW,SAACrW,GACrB,OAAO8V,GAAwB,aAAc9V,IAGpCsW,GAAgB,SAACtW,EAAekM,GACzC,QAASlM,IAAU8V,GAAwB,sBAAuB9V,IAAU8V,GAAwB,kBAAmB9V,KAG9GuW,GAAQ,SAACC,GAElB,OADiB/E,KAAe/kC,OAAO,SAAAhO,GAAC,OAAIA,EAAEupB,KAAOuuB,IAAY,GAAGlwC,IACpDi5B,SAAS,QAGvBkX,GAAkCn2B,aAAW,SAAC+uB,GAChD,OAAOD,GAAaC,EAAQrlB,GAAgBqjB,8BAEnCqJ,GAAiC,WAC1C,IAAM/F,EAAef,KACrB,OAAO6G,GAAgC9F,IAErCgG,GAAkBr2B,aAAW,SAAC0f,EAAe15B,GAC/C,IACMu4B,EADe+Q,KACO5P,GAC5B,OAAOnB,GAAUA,EAAOv4B,MAAQA,IAGvBswC,GAAQ,SAAC5W,GAClB,OAAO2W,GAAgB3W,EAAO,iBAGrB6W,GAAU,SAAC7W,GACpB,OAAO2W,GAAgB3W,EAAO,UAGrB8W,GAAa,SAAC9W,GACvB,OAAO2W,GAAgB3W,EAAO,uBAGrB9F,GAAe,SAAC8F,GACzB,OAAO2W,GAAgB3W,EAAO,eAGrB7F,GAAc,SAAC6F,GACxB,OAAO2W,GAAgB3W,EAAO,cAGrB+W,GAAc,SAAC/W,GACxB,OAAO2W,GAAgB3W,EAAO,cAGrBgX,GAAa,SAAChX,GACvB,OAAO2W,GAAgB3W,EAAO,aAGrBiX,GAAQ,SAACjX,GAClB,OAAO2W,GAAgB3W,EAAO,QAGrBkX,GAAQ,SAAClX,GAClB,OAAO2W,GAAgB3W,EAAO,QAGrBmX,GAAQ,SAACnX,GAClB,OAAO2W,GAAgB3W,EAAO,WAG5BoX,GAAuB92B,aAAW,SAAC+uB,GACrC,OAAOD,GAAaC,EAAQrlB,GAAgBujB,mBAO1C8J,GAA2B/2B,aAAW,SAAC+uB,GACzC,OAAOD,GAAaC,EAAQrlB,GAAgByjB,wBAEnC6J,GAA2B,WACpC,IAAM3G,EAAef,KACrB,OAAOyH,GAAyB1G,QAGkBrwB,aAAW,SAAC+uB,GAC9D,OAAOD,GAAaC,EAAQrlB,GAAgBgX,kFC5rBnCuW,GAAmB,IAjEhC,WAII,SAAAC,IAAej5C,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAg4C,GAAAh4C,KAHPi4C,wBAGM,EAAAj4C,KAFNk4C,iBAEM,EACVl4C,KAAKi4C,mBAAqBnoC,wBAErB9P,KAAKi4C,qBAGVj4C,KAAKk4C,YAAc,IAAIC,KAAoB,CACvCpzC,OAAQ,CACJkzC,mBAAoBj4C,KAAKi4C,mBACzBG,sBAAsB,EACtBC,qBAAqB,EACrBC,yBAAyB,KAIjCt4C,KAAKk4C,YAAYK,kBACjBv4C,KAAKk4C,YAAYM,wBAAwB,SAACC,GACtCA,EAASC,KAAO,CAAC,CAAEC,gBAAiB,gBArBhD,OAAA55C,OAAA8H,EAAA,EAAA9H,CAAAi5C,EAAA,EAAAlxC,IAAA,aAAAC,MAAA,SAyBe6tB,GACF50B,KAAKk4C,aAGVl4C,KAAKk4C,YAAYU,WAAWhkB,KA7BpC,CAAA9tB,IAAA,kBAAAC,MAAA,SAgCoB6tB,GACP50B,KAAKk4C,aAGVl4C,KAAKk4C,YAAYW,oBAAoBjkB,KApC7C,CAAA9tB,IAAA,gBAAAC,MAAA,SAuCkB+xC,GACL94C,KAAKk4C,aAGVl4C,KAAKk4C,YAAYa,cAAc,CAAE78B,KAAM48B,MA3C/C,CAAAhyC,IAAA,aAAAC,MAAA,SA8Ce3B,GACFpF,KAAKk4C,aAGVl4C,KAAKk4C,YAAYc,eAAe,CAAE5zC,MAAOA,MAlDjD,CAAA0B,IAAA,8BAAAC,MAAA,SAqDgCkyC,GACnBj5C,KAAKk4C,aAGVl4C,KAAKk4C,YAAYgB,4BAA4BD,OAzDrDjB,EAAA,IAuEamB,GAAoBC,aAA0C,CACvErB,iBAAkBsB,KAAUC,KAC7B,SAAAp4C,GAAA,MAA2B,CAAE62C,iBAA7B72C,EAAG62C,mBAF2BqB,CAVhB,SAAAt6C,GAAA,IAAG6W,EAAH7W,EAAG6W,SAAH,OAAuBzH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACnCqH,KAaQ4jC,GAAgBC,aAA0B,CACnDzB,iBAAkBsB,KAAUC,MC7C1BG,eAMF,SAAAA,EAAYrsC,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAy5C,IACtBzyC,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA06C,GAAAlsC,KAAAvN,KAAMoN,KALVssC,qCAAsC,EAIZ1yC,EAH1B2yC,mBAAqB,GAGK3yC,EA0ClB4yC,0BAA4B,WAChClsC,GAAKmsC,YACL7yC,EAAKoG,MAAM0sC,sBAAsB5yC,KAAK,SAACtG,GACnC8M,GAAKqF,IAAMnS,EAAKuE,MAChB6B,EAAK4G,SAAS,CAAEmsC,oBAAoB,IACpC/yC,EAAKgzC,mBACP,WACEhzC,EAAK4G,SAAS,CAAExI,MAAO,CAAE60C,MAAM,EAAMt7C,QAAS,SAjD5BqI,EAqDlBgzC,gBAAkB,WAEtB,IAAM92C,EAAewK,GAAKwsC,kBAC1BlzC,EAAKoG,MAAM+sC,gBAAgBj3C,GACtBgE,KAAK,SAACkzC,GACH,IAAIC,EAAcD,EAAcr5B,QAAQu5B,mBAAmB,GACrDC,EAAYF,EAAYG,QAAUpK,KAAaiK,EAAYG,SAASzzC,WAAQ3D,EAClF4D,EAAKyzC,mBAAmBF,GACxBvzC,EAAK0zC,aAAaN,IACnB,WACCpzC,EAAK4G,SAAS,CAAExI,MAAO,CAAE60C,MAAM,EAAMt7C,QAAS,SA/DhCqI,EAmElB2zC,UAAY,CAChBC,EAAK5zC,EAAK6zC,uBACVC,EAAK9zC,EAAK+zC,uBACVC,EAAKh0C,EAAK+zC,wBApEV/zC,EAAKi0C,cAFiBj0C,6EAMtB0G,GAAKqE,oBACL,IAAIC,EAAatE,GAAKsE,aAClB+nC,GAAqB,EACrB/nC,EACAhS,KAAKg6C,kBACGtsC,GAAKwtC,4BACbnB,GAAqB,EACrBrsC,GAAKytC,kBACEztC,GAAK0tC,6BACZrB,GAAqB,EACrBrsC,GAAK2tC,UAAU3tC,GAAKisC,qBACbjsC,GAAK4tC,6BACZt7C,KAAK05C,qCAAsC,EAC3C15C,KAAK25C,mBAAqBjsC,GAAKisC,mBAC/BjsC,GAAKmF,uBAEAnF,GAAK6tC,kBACVvpC,GAAa,EACbhS,KAAK45C,6BAGLlsC,GAAK88B,SAGTxqC,KAAK+N,MAAQ,CACTpI,YAAa,GACbP,MAAO,CACH60C,MAAM,EACNt7C,QAAS,IAEbo7C,mBAAoBA,EACpB/nC,WAAYA,8CAqCOuoC,GACvB,IAAMiB,EAAiB,CACnBC,UAAW,CACP7mB,MAAO,QACPqkB,OAAQvrC,GAAKm8B,WAAWjmC,uBACxBZ,SAAU0K,GAAKm8B,WAAW5mC,qBAC1By4C,OAAQnB,IAGhBoB,KAAWF,UAAUD,wCAIJpB,GACjB,IAAMl3C,EAAewK,GAAKwsC,kBACpBl3C,EAAW0K,GAAKm8B,WAAW5mC,qBAC3BU,EAAa+J,GAAKm8B,WAAWjmC,uBAG7Bg4C,EAAkD,CACpDC,MAHUnuC,GAAKm8B,WAAWiS,aAMzB1B,EAAcr5B,SAGf/gB,KAAK+7C,iBAAiB3B,EAAep3C,EAAUW,GAC3C+J,GAAKsuC,kBAAoBr4C,GACzB3D,KAAKoN,MAAM6uC,oBAAoB7B,EAAcr5B,QAAQ0H,GAAIvlB,EAAcS,EAAYi4C,IAJvF57C,KAAK4N,SAAS,CAAExI,MAAO,CAAE60C,MAAM,EAAMt7C,QAAS,8EAS7By7C,EAA8Bp3C,EAAkBW,GACrE,IAAIu4C,EAAkBl8C,KAAK26C,UAAU33C,QACbI,IAApB84C,IAEAA,EAAkBl8C,KAAK+6C,wBAG3B,IAAIzyC,EAAM4zC,EAAgB9B,EAAcr5B,QAAQ0H,GAAI2xB,EAAc3xB,GAAI9kB,GACtE3D,KAAK4N,SAAS,CAAEjI,YAAa2C,mDAGF6zC,EAAmBj5C,EAAsBS,GAAoB,IAAAy4C,EAC/DpuC,GAAOquC,gBAAxBpuC,EADgFmuC,EAChFnuC,KAAMsE,EAD0E6pC,EAC1E7pC,OAEd,OADkBtE,EAAK9N,QAAQoS,EAAQ4pC,UAAYA,GAAWh8C,QAAQoS,EAAQrP,aAAeA,GAAc/C,QAAQoS,EAAQ5O,WAAaA,kDAI7Gw4C,EAAmBj5C,GAAsB,IAAAo5C,EAC3CtuC,GAAOuuC,iBAAxBtuC,EAD4DquC,EAC5DruC,KAAMsE,EADsD+pC,EACtD/pC,OAEd,OADoBtE,EAAK9N,QAAQoS,EAAQ4pC,UAAYA,GAAWh8C,QAAQoS,EAAQrP,aAAeA,gDAM/F,OACIgL,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,sFAMR,OACID,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,+DAKH,IAAA3G,EAAAxH,KACL,OAAIA,KAAK+N,MAAM3I,MAAM60C,KAEb/rC,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,UAAKnO,KAAK+N,MAAM3I,MAAMzG,QAAQ4B,OAAS,EAAIP,KAAK+N,MAAM3I,MAAMzG,QAAU,qDAI9EqB,KAAK+N,MAAMiE,WACoB,KAA3BhS,KAAK+N,MAAMpI,YAEPuI,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3S,KAAK+N,MAAMpI,cAG1B3F,KAAKw8C,qBAEZx8C,KAAK05C,oCAEDxrC,EAAAhP,EAAAiP,cAACsuC,GAAD,CACI98C,KAAMK,KAAK05C,oCACXhkC,QAAS,kBAAMhI,GAAK2tC,UAAU7zC,EAAKmyC,qBACnClkC,MAAM,2BAENvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,6FAGApI,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS,kBAAMhJ,GAAK2tC,UAAU7zC,EAAKmyC,qBAAqB5iC,MAAM,WAAtE,aAKZ/W,KAAK+N,MAAMgsC,mBACH7rC,EAAAhP,EAAAiP,cAAA,6BAELnO,KAAK48C,yBA5LQruC,IAAMC,eAyMnBquC,ICxMgBl+C,GDwMhBk+C,gBACXtD,GACAuD,YAAQ,KAVZ,SAA4Bz9C,GACxB,MAAO,CACH86C,gBAAiB,SAACj3C,GAAD,OAAkB7D,EAAS86C,GAAgBj3C,KAC5D42C,oBAAqB,kBAAMz6C,EEtN/B,eAAA6B,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA07C,OAAA,SACIC,MADJ,wBAAA37C,EAAAxB,SAAAsB,MAAP,gBAAA87C,GAAA,OAAA/7C,EAAAnB,MAAAC,KAAAC,YAAA,KFuNIg8C,oBAAqB,SAACE,EAAWj5C,EAAcS,EAAYi4C,GAAtC,OAAsDv8C,EGzI5E,SAA6B88C,EAAmBj5C,EAAsBS,EAAoBi4C,GAC7F,OAAA78C,OAAAC,EAAA,GAAAC,EAAAC,EAAAC,KAAO,SAAA+9C,IAAA,OAAAj+C,EAAAC,EAAAI,KAAA,SAAA69C,GAAA,cAAAA,EAAA39C,KAAA29C,EAAA19C,MAAA,cAAA09C,EAAA19C,KAAA,EACGypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiEZ,EAAjE,yBAAoG,CAC1GwlC,OAAQ,MACRC,KAAMv5B,KAAKjD,UAAUgvC,KAHtB,wBAAAuB,EAAAt9C,SAAAq9C,MHwIiFjB,CAAoBE,EAAWj5C,EAAcS,EAAYi4C,QAItIiB,CAGbpD,IIpNa2D,eAhBX,SAAAA,EAAYhwC,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAo9C,GACtBp2C,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAq+C,GAAA7vC,KAAAvN,KAAMoN,IACNM,GAAKqE,oBACLrE,GAAKmF,sBAHiB7L,wEAOtB,OACIkH,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,8DACED,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3E,GAAOqvC,KAAKpvC,eAXfM,IAAMC,4JCyB7BsI,GAA2C,CAC7CwmC,YAAa,GAEbC,gBAAiB,CACbzlC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExB4pC,aAAc,CACV1lC,SAAU,GACVZ,UAAW,EACXH,MAAO9D,GAAQ+B,IAAIb,UAIZmD,gBAAWR,GAAXQ,CAtCY,SAAClK,GAAiB,IAAAqwC,EAChBrwC,EAAjBoI,eADiC,IAAAioC,EACvB,GADuBA,EAGzC,OACIvvC,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMsI,QAASD,MAAM,iBACxDvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAeL,UAAWT,EAAQkoC,aAC9BxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,wCAEIzvC,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ8nC,aACpBpvC,EAAAhP,EAAAiP,cAAA,UACKf,EAAMvO,QAAUuO,EAAMvO,OAAO2B,IAAI,SAACmW,EAAW7J,GAAZ,OAC9BoB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAK6P,GACNzI,EAAAhP,EAAAiP,cAAA,UAAID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ+nC,iBAAkB5mC,4EJpB5EknC,GAAW,SAACl/C,GAAD,OAAqB,SAACoI,GAAD,OAAgBA,GAAmB,IAAVA,OAAc3D,EAAYzE,IAOnFyT,GAAQ,SAAC0rC,EAAmBn/C,GAApB,OAAwC,SAACoI,EAAeg3C,GAAhB,OAAmCh3C,IAAUg3C,EAAUD,QAAa16C,EAAYzE,IAChIq/C,GAAwBH,GAAS,2BAGjCI,GAA6BJ,GAAS,2BAE7Cz1B,GACF7Z,IAAMJ,cAAc,KAAM,CAAErH,IAAK,WAAYsH,MAAO,CAAEiL,YAAa,GAAIQ,cAAe,IAClF,CACItL,IAAMJ,cAAc,KAAM,CAAErH,IAAK,cAAgB,2BACjDyH,IAAMJ,cAAc,KAAM,CAAErH,IAAK,QAAU,mCAC3CyH,IAAMJ,cAAc,KAAM,CAAErH,IAAK,WAC7B,CACIyH,IAAMJ,cAAc,KAAM,CAAErH,IAAK,aAAe,wBAChDyH,IAAMJ,cAAc,KAAM,CAAErH,IAAK,aAAe,wBAChDyH,IAAMJ,cAAc,KAAM,CAAErH,IAAK,UAAY,gBAC7CyH,IAAMJ,cAAc,KAAM,CAAErH,IAAK,qBAAuB,0BAM/Do3C,GAAW,SAACn3C,GAAD,OACpBA,IAAU,8NAA8NwB,KAAKxB,GACzOqhB,QAAOhlB,GAKF+6C,IAHkBx/C,GAC2B,0BAE5B,SAACy/C,GAAD,OAAmB,SAACr3C,EAAes3C,GAAhB,OAA+E,IAA9BA,EAASC,kBAA8Bv3C,GAASA,EAAMxG,OAAS69C,EAAS,OAASA,EAAQ,mBAAgBh7C,KAE9Ly4C,GAAQ,SAAC90C,GAAD,OACjBA,IAAU,6EAAwEwB,KAAKxB,GACnF,2CAAwC3D,GAEnCm7C,GAAQ,SAACx3C,GAAD,OACjBA,IAAU,mFAAmFwB,KAAKxB,GAC9F,yCAAsC3D,GAEjCo7C,GAAM,SAACz3C,GAAD,OACfA,IAAU,gEAAgEwB,KAAKxB,GAC3E,mDAAgD3D,GAE3Cq7C,GAAM,SAAC13C,GAChB,OAAOA,IAAU,qBAAqBwB,KAAKxB,GACvC,qCAAkC3D,GAG7BgsB,GAAM,SAACroB,GAChB,OAAOA,GAA0B,IAAjBA,EAAMxG,OAClB,uCAAoC6C,GAE/BkF,GAAM,SAACvB,GAChB,OAAIA,EAEQ,yHAAyHwB,KAAKxB,QAC5E3D,EAAtD,yDAEJ,GAIKs7C,GAAuB,SAAC33C,GACjC,IAAM80B,EAAclvB,OAAO5F,GAC3B,OAAQ80B,GAAeA,EAAc,OAAIz4B,EAAY,uCAG5Cu7C,GAAiB,SAAC53C,GAE3B,OADoB4F,OAAO5F,GACN,OAAI3D,EAAY,uCAG5Bw7C,GAAoB,SAAC73C,GAE9B,OADoB4F,OAAO5F,GAAS,IACd,OAAI3D,EAAY,iCAG7By7C,GAAqB,SAAC93C,GAC/B,IAAM80B,EAAclvB,OAAO5F,GAAS,GACpC,OAAO80B,GAAe,GAAKA,EAAc,IAAM,OAAIz4B,EAAY,wCAEtD07C,GAA6B,SAAC/3C,GACvC,IAAM80B,EAAclvB,OAAO5F,GAAS,GACpC,OAAO80B,GAAe,GAAKA,EAAc,IAAM,OAAIz4B,EAAY,oEAEtD27C,GAAkB,SAACh4C,GAC5B,IAAM80B,EAAclvB,OAAO5F,GAAS,GACpC,OAAO80B,GAAe,KAAOA,GAAe,GAAKA,EAAc,IAAM,OAAIz4B,EAAY,8CAG5E47C,GAA4B,SAACj4C,GACtC,IAAMpI,EAAU,6CAChB,GAAc,IAAVoI,EAAa,OAAOpI,EACxB,IAAMk9B,EAAclvB,OAAO5F,GAAS,GACpC,OAAO80B,GAAe,KAAOA,GAAe,GAAKA,EAAc,IAAM,OAAIz4B,EAAYzE,GAG5EsgD,GAAY,SAACl4C,GACtB,GAAKA,EAGL,OADmB6nB,IAAO7nB,GACVm4C,eAAhB,EAAkC,gBAKzBC,GAAgB,SAACp4C,EAAYs3C,GACtC,GAAKt3C,EAAL,CAEA,IAAM81B,EAAMjO,MAASE,MAAM,OACrBswB,EAAaxwB,IAAO7nB,GAE1B,GAAIA,EAAO,CACP,IAAKq4C,EAAWF,UAAW,MAAO,eAElC,GAAIE,EAAWniB,QAAQJ,GAAM,MAAO,2BAEpC,GAAIuiB,EAAW1a,SAAS9V,IAAO,eAAgB,MAAO,2CACpD,IAAK7nB,GAASs3C,EAASC,iBACzB,SAMKe,GAAwB,SAACt4C,EAAeu4C,GAEjD,IAAIA,IAA0C,IAA9BA,EAAShB,iBAAzB,CAEA,IAAKv3C,EAAO,MAAO,6BACnB,IAAMw4C,EAAgB3wB,IAAO7nB,GAC7B,OAAKw4C,EACgBA,EAAc7a,SAAS9V,MAASI,QAAQ,OAAOrF,KAAK,GAAI,SACvD,8DAA2DvmB,EAFtD,iBAKlBo8C,GAAgB,SAACz4C,EAAes3C,GACzC,IAAIA,IAA0C,IAA9BA,EAASC,iBAAzB,CAUA,IAAKv3C,IAAUs3C,EAASC,iBAAkB,MAAO,gCACjD,IAAIiB,EAAgB3wB,IAAO7nB,GAC3B,OAAKw4C,EACkBA,EAAc7a,SAAS9V,MAASI,QAAQ,OAAOywB,SAAS,GAAI,eAC3Dr8C,EAAY,yCAFT,eAXvB,GAAI2D,EAAO,CACP,IAAIw4C,EAAgB3wB,IAAO7nB,GAC3B,OAAKw4C,EACkBA,EAAc7a,SAAS9V,MAASI,QAAQ,OAAOywB,SAAS,GAAI,eAC3Dr8C,EAAY,yCAFT,iBAc1Bs8C,GAAiB,SAACtB,GAAD,OAAoB,SAACr3C,EAAes3C,GAC9D,IAAIsB,OAAoBv8C,GAAPg7C,EAAiB,EAAEA,EACpC,IAAIC,IAA0C,IAA9BA,EAASC,iBAAzB,CAUA,IAAKv3C,IAAUs3C,EAASC,iBAAkB,MAAO,gCACjD,IAAIiB,EAAgB3wB,IAAO7nB,GAC3B,OAAKw4C,EACkBA,EAAc7a,SAAS9V,MAASI,QAAQ,OAAOywB,SAASE,EAAY,eAEnEv8C,EAAH,2BAAAmB,OAA0Co7C,EAA1C,cAHM,eAXvB,GAAI54C,EAAO,CACP,IAAIw4C,EAAgB3wB,IAAO7nB,GAC3B,OAAKw4C,EACkBA,EAAc7a,SAAS9V,MAASI,QAAQ,OAAOywB,SAASE,EAAY,eACnEv8C,EAAH,2BAAAmB,OAA2Co7C,EAA3C,cAFM,kBAgB1BC,GAAkC,SAACjhD,GAAD,OAAqB,SAACoI,EAAYu4C,GAC7E,IAAKA,EAAShB,mBAA+B,OAAVv3C,QAA4B3D,IAAV2D,GAAiC,KAAVA,GACxE,OAAOpI,uGKjKTkhD,GAAgBvoC,KAAW,CAC7BwoC,UAAW,CACP/oC,MAAK,GAAAxS,OAAK0O,GAAQ6B,OAAOX,QAApB,gBAET4rC,YAAa,CACTC,YAAW,GAAAz7C,OAAK0O,GAAQ6B,OAAOX,QAApB,iBALGmD,CAOnB,SAAClK,GAA2C,IACnCoI,EAAwHpI,EAAxHoI,QAAST,EAA+G3H,EAA/G2H,QAAS3P,EAAsGgI,EAAtGhI,MAAO66C,EAA+F7yC,EAA/F6yC,QAASC,EAAsF9yC,EAAtF8yC,QAASC,EAA6E/yC,EAA7E+yC,WAAYC,EAAiEhzC,EAAjEgzC,qBADpBC,EACqFjzC,EAA3CkzC,kBAD1C,IAAAD,EACuD,GADvDA,EAC2DE,EAA0BnzC,EAA1BmzC,WAAex7C,EAD1EhG,OAAAgX,GAAA,EAAAhX,CACqFqO,EADrF,iHAErCozC,EAAiBP,GAAWC,GAAWE,EACzCK,EAAiBr7C,GAASo7C,EAC1BE,EAAmBt7C,GAASo7C,GAAoBzrC,GAAWyrC,EAAkBL,OAAa/8C,EAC1Fu9C,EAAgC5hD,OAAA0G,EAAA,EAAA1G,CAAA,GAAQuhD,GACxCM,EAAuE7hD,OAAA0G,EAAA,EAAA1G,CAAA,GACpEwhD,GAEHM,EAAgD,GAkCpD,OA/BI9rC,GAAWyrC,IAAmBp7C,IAE9Bq7C,EAAiB1rC,EACjB4rC,EAAe5hD,OAAA0G,EAAA,EAAA1G,CAAA,GACR4hD,EADQ,CAEXnrC,QAAS,CACLpQ,MAAOoQ,EAAQsqC,aAGvBe,EAAe9hD,OAAA0G,EAAA,EAAA1G,CAAA,GACR8hD,EADQ,CAEXrrC,QAAS,CACLpQ,MAAOoQ,EAAQsqC,aAGvBc,EAAU7hD,OAAA0G,EAAA,EAAA1G,CAAA,GACH6hD,EADG,CAENprC,QAAS,CACLsrC,eAAgBtrC,EAAQuqC,gBAKhCW,GAAmBF,IACnBG,EAAe5hD,OAAA0G,EAAA,EAAA1G,CAAA,GACR4hD,EADQ,CAEXI,QAAQ,EACRC,SAAS,KAKb9yC,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAADliD,OAAAoM,OAAA,GAAepG,EAAf,CACIm8C,gBAAiBP,EACjBJ,WAAYK,EACZx7C,MAAOq7C,EACPN,WAAYO,EACZS,oBAAqBN,OAMpBO,GAAgB,SAACh0C,GAA8B,IAChD1C,EAAyD0C,EAAzD1C,MAAO22C,EAAkDj0C,EAAlDi0C,KADyCC,EACSl0C,EAA5CgzC,4BADmC,IAAAkB,KACFv8C,EADEhG,OAAAgX,GAAA,EAAAhX,CACSqO,EADT,yCAExD,OACIc,EAAAhP,EAAAiP,cAAC0xC,GAAD9gD,OAAAoM,OAAA,GACQpG,EACA2F,EAFR,CAGI01C,qBAAsBA,EACtBh7C,QAASi8C,EAAKj8C,MACd86C,UAAWmB,EAAKnB,QAChBnrC,UAAWssC,EAAKtsC,QAChBorC,WAAYkB,EAAKj8C,OAASi8C,EAAKtsC,QAC/BkrC,QAASoB,EAAKpB,QACdl5C,WAAuB3D,IAAhBsH,EAAM3D,OAAuC,OAAhB2D,EAAM3D,MAAiB,GAAK2D,EAAM3D,QAErEqG,EAAMuI,WAMN4rC,GAAmBhzC,IAAMizC,KAAK,SAACp0C,GAAiC,IACjE1C,EAAyD0C,EAAzD1C,MAAO22C,EAAkDj0C,EAAlDi0C,KAD0DI,EACRr0C,EAA5CgzC,4BADoD,IAAAqB,KACnB18C,EADmBhG,OAAAgX,GAAA,EAAAhX,CACRqO,EADQ,yCAAAs0C,EAG3CnzC,IAAMozC,UAAS,GAH4BC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAGlEV,EAHkEY,EAAA,GAGzDC,EAHyDD,EAAA,GAKnEhmB,EAAOrtB,IAAMuzC,YAAY,SAACluC,GAC5B,GAAoB,KAAhBA,EAAKrT,OAAe,CACpB,IAAMwhD,EAASnuC,EAAK3I,MAAM,KAE1B,MADY,UAAA1G,OAAaw9C,EAAOA,EAAOxhD,OAAS,IAGpD,OAAOqT,GACR,IAEGouC,EAAUzzC,IAAMuzC,YAAY,SAACltB,GAC/BitB,GAAW,GACXn3C,EAAMs3C,QAAQptB,IACf,CAAClqB,IAEEu3C,EAAS1zC,IAAMuzC,YAAY,SAACltB,GAC9BitB,GAAW,GACXn3C,EAAMu3C,OAAOrtB,IACd,CAAClqB,IAEAw3C,OAA6B9+C,IAAhBsH,EAAM3D,OAAuC,OAAhB2D,EAAM3D,MAAiB,GAAK2D,EAAM3D,MAKhF,OAJKi6C,IACDkB,EAAatmB,EAAKsmB,IAIlBh0C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAE4I,SAAU,aACpB9I,EAAAhP,EAAAiP,cAAC0xC,GAAD9gD,OAAAoM,OAAA,GACQpG,EACA2F,EAFR,CAGI01C,qBAAsBA,EACtBr5C,MAAOm7C,EACP98C,QAASi8C,EAAKj8C,MACd2P,UAAWssC,EAAKtsC,QAChBorC,WAAYkB,EAAKj8C,OAASi8C,EAAKtsC,QAC/BkrC,QAASoB,EAAKpB,QACdC,UAAWmB,EAAKnB,QAChB8B,QAASA,EACTC,OAAQA,EACRtgC,SAAU0/B,EAAKc,mBAElBd,EAAKc,iBAAmBj0C,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,CAAkB5xC,KAAM,GAAI6xC,UAAW,EAAGj0C,MAAO0I,GAAOwrC,eAAgBvrC,MAAM,iBAMtGwrC,GAAkB,SAACn1C,GAAgC,IACpD1C,EAAyD0C,EAAzD1C,MAAO22C,EAAkDj0C,EAAlDi0C,KAD6CmB,EACKp1C,EAA5CgzC,4BADuC,IAAAoC,KACNz9C,EADMhG,OAAAgX,GAAA,EAAAhX,CACKqO,EADL,yCAEtDq1C,EAAgB1jD,OAAA0G,EAAA,EAAA1G,CAAA,GACf2jD,GADe,CAElBzvC,QAAQlU,OAAA0G,EAAA,EAAA1G,CAAA,GACD2jD,GAAazvC,QADb,CAEH7N,MAAMrG,OAAA0G,EAAA,EAAA1G,CAAA,GACC2jD,GAAazvC,QAAQ7N,MADvB,CAEDu9C,KAAM1vC,GAAQ6B,OAAOX,cAIjCsuC,EAAUG,UAAWC,iBAAkBC,WAAa,CAChDpqC,aAAc,GAGlB,IAAM8nC,EAAiBa,EAAKpB,SAAWG,EACnC2C,EAAaL,GACbjC,IAAmBY,EAAKj8C,OAASo7C,EACjCE,EAAqBW,EAAKj8C,OAASo7C,GAAsBa,EAAKtsC,SAAWyrC,EAAmBa,EAAKj8C,OAASi8C,EAAKtsC,aAAW3R,EAExHi+C,EAAKtsC,SAAWyrC,IAAmBa,EAAKj8C,QAC1C29C,EAAaN,EACbhC,IAAmBY,EAAKtsC,SAG5B,IAAMiuC,EAASv0C,GAAWkC,WAAa,kBAAMlC,GAAWoI,uBAAmBzT,EAE3E,OACI8K,EAAAhP,EAAAiP,cAAC80C,EAAA,EAAD,CAAkBC,MAAOH,GACrB70C,EAAAhP,EAAAiP,cAACg1C,GAAA,EAADpkD,OAAAoM,OAAA,CACIsd,GAAI/d,EAAMwR,KACVmgB,OAAO,IACP+mB,YAAY,aACZxnB,KClMe,aDmMfynB,QAAQ,WACRC,aAAa,IACTv+C,EACA2F,EARR,CASIs3C,QAAS,SAAArrC,GACAjM,EAAM3D,OAAU6nB,IAAOlkB,EAAM3D,OAAOm4C,WACrCx0C,EAAM64C,SAAS30B,MAASjF,IAAI,EAAG,SAASqF,QAAQ,UACpDtkB,EAAMs3C,QAAQrrC,GACd/W,WAAW,WAEP,IAAM4jD,EAAgB1yC,SAASC,eAAerG,EAAMwR,MACpDsnC,GAAYA,EAASC,UACtB,MAEPr+C,MAAOq7C,EACPN,WAAYO,EACZsC,OAAQA,EACRU,aAAa,gBAMvB5sC,GAAiD,CACnDwrC,eAAgB,CACZtrC,SAAU,WACVhI,IAAK,MACLoJ,KAAM,MACNiB,YAAa,GACbnC,WAAY,KAMPysC,GAA8C,SAACv2C,GAA8B,IAC9E6G,EAAkC7G,EAAlC6G,MAAOvJ,EAA2B0C,EAA3B1C,MAAgB3F,GAAWqI,EAApBi0C,KADgEtiD,OAAAgX,GAAA,EAAAhX,CAC5CqO,EAD4C,2BAEtF,OACIc,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD/kD,OAAAoM,OAAA,CAAU4L,MAAM,aAAgBhS,EAAhC,CAAwCg/C,QAASr5C,EAAM3D,MAAOw8C,SAAU74C,EAAM64C,YACvFtvC,MAAOA,KAMN+vC,GAAc,SAAC52C,GAAgD,IAChE6G,EAAkC7G,EAAlC6G,MAAOvJ,EAA2B0C,EAA3B1C,MAAgB3F,GAAWqI,EAApBi0C,KADkDtiD,OAAAgX,GAAA,EAAAhX,CAC9BqO,EAD8B,2BAExE,OACIc,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QAAS31C,EAAAhP,EAAAiP,cAAC81C,GAAA,EAADllD,OAAAoM,OAAA,CAAQ4L,MAAM,aAAgBhS,EAA9B,CAAsCg/C,QAASr5C,EAAM3D,MAAOw8C,SAAU74C,EAAM64C,YACrFtvC,MAAOA,KAONiwC,GAAyB,SAAC92C,GAA2D,IACtF6G,EAAkE7G,EAAlE6G,MAAOkwC,EAA2D/2C,EAA3D+2C,UAAWC,EAAgDh3C,EAAhDg3C,QAASC,EAAuCj3C,EAAvCi3C,IAAK35C,EAAkC0C,EAAlC1C,MAAO22C,EAA2Bj0C,EAA3Bi0C,KAAMjzC,EAAqBhB,EAArBgB,MAAUrJ,EAD+BhG,OAAAgX,GAAA,EAAAhX,CACpBqO,EADoB,8DAE9F,OACIc,EAAAhP,EAAAiP,cAACm2C,GAAA,EAADvlD,OAAAoM,OAAA,CAAao5C,UAAW,WAAqBn/C,QAASi8C,EAAKj8C,OAAWL,GACjEkP,GAAS/F,EAAAhP,EAAAiP,cAACq2C,GAAA,EAAD,CAAWD,UAAW,UAAqBtwC,GACpDA,IAAUmwC,GAAWl2C,EAAAhP,EAAAiP,cAAA,WACtBD,EAAAhP,EAAAiP,cAACs2C,GAAA,EAAD,CACIvoC,KAAMioC,EACNp9C,MAAO2D,EAAM3D,MACbw8C,SAAU74C,EAAM64C,SAChBc,IAAKA,EACLj2C,MAAOA,GAENhB,EAAMuI,YEtPjBmB,GAAiD,CACnD4tC,WAAY,CACR1tC,SAAU,YAEd2tC,YAAa,CACT3tC,SAAU,aAIH4tC,GApBI,SAACx3C,GAAiB,IACzBy3C,EAA2Cz3C,EAA3Cy3C,QAASljC,EAAkCvU,EAAlCuU,SAAUhM,EAAwBvI,EAAxBuI,SAAa5Q,EADPhG,OAAAgX,GAAA,EAAAhX,CACkBqO,EADlB,mCAE3B03C,EAAgBD,GAAWljC,EACjC,OACIzT,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD59C,OAAAoM,OAAA,CAAQwW,SAAUmjC,GAAmB//C,GAChC4Q,EACAkvC,GAAW32C,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,CAAkBrrC,MAAM,YAAY3I,MAAO0I,GAAO6tC,YAAan0C,KAAM,GAAI6xC,UAAW,MCItG0C,GAAgBlH,GAAS,qBACzBmH,GAAoB7G,GAAe,KAkCnCrnC,GAAiD,CACnDmuC,KAAM,CACFxtC,WAAY,GACbytC,YAAa,CACZ9tC,cAAe,KAIR+tC,gBAA+C,CAC1DF,KAxDqB,gBAuDVE,CAzCS,SAAC/3C,GACrB,OACIc,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAClBn3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOmuC,MACzB/2C,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,CAAmBvvC,MAAO0I,GAAOouC,aAAjC,uEAGAh3C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,QACLqoC,UAAWnD,GACXntC,MAAM,gBACNsxC,WAAS,EACTC,SAAU,CAACT,GAAelJ,GAAOmJ,IACjCnH,UAAQ,EACRj/C,QAAQ,WACR6mD,WAAS,KAGjBv3C,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UACA7I,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,iBACH9G,SAAUvU,EAAMw4C,SAAWx4C,EAAMy4C,SACjCnvC,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM04C,YAJnB,oBCjBDC,GAXW,SAAC34C,GACvB,IAAM44C,EAAqC,CACvCnK,MAAOnuC,GAAKu4C,eAEhB,OACI/3C,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,wBACzDvH,EAAAhP,EAAAiP,cAAC+3C,GAAD,CAAiBF,cAAeA,EAAeZ,SAAUh4C,EAAM+4C,OAAQT,SAAUt4C,EAAMs4C,aCE7FU,8MAEFr4C,MAAQ,CACJs4C,SAAU,KACVC,uBAAuB,KAO3BC,YAAc,WACVv/C,EAAK4G,SAAS,CAAEy4C,SAAU,UAG9BG,wBAA0B,WACtBx/C,EAAK4G,SAAS,CAAE04C,uBAAuB,OAG3CG,aAAe,WACX/4C,GAAK88B,YAGTkc,qBAAuB,WACnBh5C,GAAKytC,oBAGTwL,4BAA8B,SAACC,GAC3B,OAAO,IAAIn/C,QAAQ,SAACC,EAASC,GACJ+F,GAAKu4C,cACTY,oBAAoBv7C,SAAWs7C,EAAoB/K,MAAMgL,oBAAoBv7C,OAC1FtE,EAAKoG,MAAM05C,mBAAmBF,EAAoB/K,OAAO30C,KAAK,SAAC0D,GAC3DlD,IACAgG,GAAK88B,YAGTxjC,EAAKw/C,0BACL9+C,UAKZ4+C,sBAAwB,WACpBt/C,EAAK4G,SAAS,CAAE04C,uBAAuB,EAAMD,SAAU,mFApC/CzxB,GACR50B,KAAK4N,SAAS,CAAEy4C,SAAUzxB,EAAMmyB,iDAsC3B,IAAAv/C,EAAAxH,KACGqmD,EAAarmD,KAAK+N,MAAlBs4C,SACR,OAAI34C,GAAKsE,aAED9D,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CACIwwC,YAAWX,EAAW,iBAAcjjD,EACpC6jD,gBAAc,OACdvwC,QAAS,SAACke,GAAiBptB,EAAK0/C,YAAYtyB,IAC5C7d,MAAM,WACN7I,EAAAhP,EAAAiP,cAACg5C,GAAAjoD,EAAD,OAGJgP,EAAAhP,EAAAiP,cAACi5C,GAAA,EAAD,CACI3+B,GAAG,YACH49B,SAAUA,EACV1mD,KAAM6M,QAAQ65C,GACd3wC,QAAS1V,KAAKumD,YAAYc,KAAKrnD,OAE/BkO,EAAAhP,EAAAiP,cAACm5C,GAAA,EAAD,CAAU5wC,QAAS1W,KAAKsmD,uBAAxB,wBACAp4C,EAAAhP,EAAAiP,cAACm5C,GAAA,EAAD,CAAU5wC,QAAS1W,KAAK0mD,sBAAxB,mBACAx4C,EAAAhP,EAAAiP,cAACm5C,GAAA,EAAD,CAAU5wC,QAAS1W,KAAKymD,cAAxB,WAGJv4C,EAAAhP,EAAAiP,cAACo5C,GAAD,CACI5nD,KAAMK,KAAK+N,MAAMu4C,sBACjBZ,SAAU1lD,KAAKwmD,wBACfL,OAAQnmD,KAAK2mD,+BAMjBz4C,EAAAhP,EAAAiP,cAAA,mBA/EMI,IAAMi5C,WAwFjB1K,mBAAQ,KALvB,SAA4Bz9C,GACxB,MAAO,CACHynD,mBAAoB,SAACW,GAAD,OAA0BpoD,ECjG/C,SAA4BooD,GAC/B,sBAAA3oD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAiJ,EAAA1H,EAAAqpB,EAAA,OAAAhrB,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAEK8I,EAFL,4BAAA/D,OAEuCkjD,GAFvCloD,EAAAE,KAAA,EAGoBypC,GAAK5gC,EAAK,CAAE6gC,OAAQ,QAHxC,cAGOvoC,EAHPrB,EAAAmoD,KAIKz9B,EAAYrpB,EAAKqpB,UAJtB1qB,EAAAw9C,OAAA,SAKQ9yB,GALR,aAAA1qB,EAAAC,KAAA,EAAAD,EAAAooD,GAAApoD,EAAA,SAOCF,EAAS0B,EAAyBxB,EAAAooD,GAAK,gDAPxCpoD,EAAAooD,GAAA,yBAAApoD,EAAAM,SAAAT,EAAA,iBAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GDgG2D6mD,CAAmBW,OAGnE3K,CAAkCsJ,IE6ClCtJ,mBAhBf,SAAyB/uC,GACrB,IAAM65C,EACF7oD,OAAO8wC,OAAO9hC,EAAMiT,SAAS6uB,QAAQ1mB,KAAK,SAAA0+B,GAAO,MAAoB,uBAAhBA,EAAQ/gD,MAEjE,MAAO,CACHghD,YAAaF,GAAoBA,EAAiB7gD,MAClDghD,aAAch6C,EAAM/I,IAAI+iD,eAIhC,SAA4B1oD,EAAe2oD,GACvC,MAAO,CACHvmD,mBAAoB,kBAAMpC,EAASoC,EAAmB,QAI/Cq7C,CAA6C3nB,eAAY7d,aA5EzD,SAAC4rC,GAAD,IAAA+E,EAAA,OAAkBrwC,aAAa,CAC1CswC,IAAK,CACDnxC,MAAO9D,GAAQC,KAAKE,MACpBwI,gBAAiB3I,GAAQiB,KAAK,MAElCi0C,YAAa,CACT52C,OAAQ,GACRyF,SAAU,WACVhI,KAAM,GAEVo5C,aAAc,CACVC,SAAU,GAEd5qC,QAAS,CACLvG,UAAWgsC,EAAMoF,QAAQ,IAE7B1+C,OAAQ,CACJgS,gBAAiB3I,GAAQiB,KAAKC,QAC9BmG,QAAS,cACTO,WAAY,SACZsD,aAAc,EACd3G,QAAS,GAEb+wC,YAAa,CACTxxC,MAAO,UACP2B,aAAc,EACd0B,YAAa,GAEjBgb,QAAS,CACLle,UAAWgsC,EAAMoF,QAAQ,GACzBzuC,aAAcqpC,EAAMoF,QAAQ,IAEhCE,WAAY,CACRnvC,WAAY6pC,EAAMoF,SAAS,KAC3BnxC,YAAa+rC,EAAMoF,QAAQ,MAE/BG,cAAe,CACXruC,YAAa8oC,EAAMoF,QAAQ,IAE/BxsC,UAAQmsC,EAAA,GAAAlpD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EACH/E,EAAMyF,YAAYC,GAAG,MAAQ,CAC1B9sC,SAAUonC,EAAMyF,YAAY9Y,OAAOgZ,KAFnC9pD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EAAA,QAIG,QAJHlpD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EAAA,aAKQ,QALRlpD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EAAA,YAMO,cANPlpD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EAAA,cAOS,QAPTlpD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EAAA,cAQS/E,EAAMoF,QAAQ,IARvBvpD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EAAA,eASU/E,EAAMoF,QAAQ,IATxBvpD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EAUH/E,EAAMyF,YAAYC,GAAG,MAAQ,CAC1BxuC,YAAa8oC,EAAMoF,QAAQ,GAC3B5vC,aAAcwqC,EAAMoF,QAAQ,KAZ5BvpD,OAAA2pD,GAAA,EAAA3pD,CAAAkpD,EAcH/E,EAAMyF,YAAYC,GAAG,MAAQ,CAC1BxuC,YAAa8oC,EAAMoF,QAAQ,GAC3B5vC,aAAcwqC,EAAMoF,QAAQ,KAhB5BL,MAqC4D3wC,CA3HvD,SAAClK,GAAiB,IAAA07C,EAAArL,EACOrwC,EAA9BoI,eADuB,IAAAioC,EACb,GADaA,EACTqK,EAAgB16C,EAAhB06C,YAChB52B,EAAiBxjB,GAAKwjB,iBACtBvgB,EAAWlC,GAAWkC,WACtBo4C,GAAc,IAAIC,MAAOC,cACzBC,EAAeC,mBACjB3zC,EAAQ4f,SADa0zB,EAAA,GAAA/pD,OAAA2pD,GAAA,EAAA3pD,CAAA+pD,EAGhBtzC,EAAQsG,UAAYnL,GAHJ5R,OAAA2pD,GAAA,EAAA3pD,CAAA+pD,EAIhBtzC,EAAQizC,cAAgB93C,GAJRm4C,IAOzB,OACI56C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACMqC,GAAYzC,EAAAhP,EAAAiP,cAACi7C,GAAA,EAAD,CAAQpyC,SAAS,SAASf,UAAW,YAC/C/H,EAAAhP,EAAAiP,cAACk7C,GAAA,EAAD,CAASpzC,UAAWT,EAAQ0yC,IAAKnxC,MAAM,WACnC7I,EAAAhP,EAAAiP,cAAA,OAAKorB,IAAK+vB,KAASrzC,UAAWT,EAAQ2yC,YAAa3uB,IAAI,qBACvDtrB,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ4yC,eACxBN,GAAe52B,GAAkBhjB,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAC9B+tC,UAAU,IACVz+C,KAAMgiD,EACNyB,OAAO,SACPC,IAAI,sBACJzyC,MAAM,WACN7I,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,OAEJgP,EAAAhP,EAAAiP,cAACu7C,GAAD,QAGRx7C,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWizC,GACX97C,EAAMuI,UACLhF,GAAYzC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACVJ,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,CAAS1zC,UAAWT,EAAQiI,UAC5BvP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO+N,GAAaG,QAAzB,QACYysC,EADZ,8VACmX76C,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO+N,GAAaM,WAAY3W,KAAK,6CAAxC,kBADnX,MAC4doI,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO+N,GAAaM,WAAY3W,KAAK,qCAAxC,YAIpeoI,EAAAhP,EAAAiP,cAACy7C,GAAD,CACIjqD,OAAQyN,EAAM26C,cAAgB36C,EAAM26C,aAAaxnD,OAAS,EAC1DmV,QAAStI,EAAM3L,mBACf5C,OAAQuO,EAAM26C,oBCpDxB8B,eACF,SAAAA,EAAYz8C,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA6pD,IACtB7iD,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA8qD,GAAAt8C,KAAAvN,KAAMoN,KASV08C,OAAS,kBAAM9iD,EAAK4G,SAAS,CAAEm8C,gBAAgB,KAVrB/iD,EAY1BgjD,QAAU,kBAAMhjD,EAAK4G,SAAS,CAAEm8C,gBAAgB,KAZtB/iD,EAe1BijD,kBAAoB,WAChBjjD,EAAK8iD,SACLp8C,GAAKmF,sBACLnF,GAAKw8C,gBAAgBhjD,KAAKF,EAAKgjD,QAAShjD,EAAKgjD,UAlBvBhjD,EAqB1BmjD,kBAAoB,WAChBnjD,EAAK8iD,SACLp8C,GAAKmF,sBACLnF,GAAK08C,gBAAgBljD,KAAKF,EAAKgjD,QAAShjD,EAAKgjD,UAxBvBhjD,EA2B1BqjD,0BAA4B,WACxBrjD,EAAK8iD,SACLp8C,GAAKmF,sBACLnF,GAAK48C,wBAAwBpjD,KAAKF,EAAKgjD,QAAShjD,EAAKgjD,UA3BrDhjD,EAAK+G,MAAQ,CACTpI,YAAa,GACbokD,gBAAgB,GALE/iD,wEAmCtB,GAA+B,KAA3BhH,KAAK+N,MAAMpI,YACX,OACIuI,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3S,KAAK+N,MAAMpI,cAIjC,GADmB+H,GAAKsE,aACR,CACZ,IAAIu4C,EAAcv8C,GAAOH,cAAcI,KACvC,OACIC,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI43C,IAGlB,OACIr8C,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,cACID,EAAAhP,EAAAiP,cAAA,4DACAD,EAAAhP,EAAAiP,cAAA,oEAEJD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,MAApB,gBACAsP,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ/9C,QAAQ,YAAYmY,MAAM,UAAUL,QAAS1W,KAAKmqD,mBAA1D,qBAOZj8C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,MAApB,iCACAsP,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ/9C,QAAQ,YAAYmY,MAAM,UAAUL,QAAS1W,KAAKiqD,mBAA1D,sCAvET17C,IAAMC,eAmF/BsI,GAAiD,CACnD4C,MAAO,CACHlC,QAAS,YACToE,gBAAiB3I,GAAQC,KAAKI,KAC9B+D,UAAW,MAMJwyC,MCnFAa,eAdX,SAAAA,EAAYt9C,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA0qD,IACtB1jD,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA2rD,GAAAn9C,KAAAvN,KAAMoN,KAFFu9C,cAAgB,gBAGpBj9C,GAAKqE,oBAFiB/K,wEAMtB,OACIkH,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,UAAKnO,KAAK2qD,uBAVDp8C,IAAMC,gFCezBo8C,GAAoB/M,GAAS,0BAC7BgN,GAAmBhN,GAAS,yBAC5BiN,GAAiBjN,GAAS,sBAC1BkN,GAAc,CAAClN,GAAS,6BAA8BsB,IACtD6L,GAAmBnN,GAAS,wBAC5BoN,GAA0BpN,GAAS,gCACnCqN,GAAe,CAAEC,QAAQ,GAEzBC,GAAiC,CAACH,GADT74C,GAAM,WAAY,gCACwC8rC,IACnFmN,GAA0B,CAACL,GAAkB9M,IAC7C8G,GAAoB7G,GAAe,KACnCmN,GAAkBzN,GAAS,IAC3B0N,GAAwB,kBAAMr9C,EAAAhP,EAAAiP,cAAA,cA6H9B2I,GAAiD,CACnD00C,SAAU,CACN1zC,SAAU,GACVzJ,UAAW,UAEf0zC,OAAQ,CACJloC,aAAc,GAElB3D,UAAW,CACPkE,YAAa,GACb1B,aAAc,KAIP+yC,GAzIW,SAACr+C,GACvB,IAAMs+C,EAAoBn9C,IAAMo9C,OAAO,MAMvC,OALAp9C,IAAMq9C,UAAU,WACTx+C,EAAMy+C,cAAgBH,EAAkBI,SACvCJ,EAAkBI,QAAQC,SAE/B,CAAC3+C,EAAMy+C,eAEN39C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO0I,GAAOZ,WACtChI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,qDAIJt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,YACNqoC,UAAWnD,GACXntC,MAAM,aACNsxC,WAAS,EACTC,SAAUoF,GACVqB,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,WACNqoC,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACTC,SAAUqF,GACVoB,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,cACNqoC,UAAWhC,GACXtuC,MAAM,gBACNsxC,WAAS,EACT2G,eAAa,EACbC,UAAW1wB,GACX+pB,SAAUuF,GACVkB,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLqoC,UAAWnD,GACXntC,MAAM,SACNwvC,QAAM,EACN8B,WAAS,EACTC,SAAUsF,GACVsB,YAAalB,GACbiB,UAAW5wB,GACXntB,MAAO0I,GAAOirC,QAEd7zC,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbwrC,KAAa/xC,IAAI,SAAAo2B,GAAG,OACjB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,QACJqoC,UAAWnD,GACXntC,MAAM,gBACNsxC,WAAS,EACTC,SAAU,CAAC3J,GAAOmJ,IAClBiH,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,WACJqoC,UAAWnD,GACXntC,MAAM,WACN2jB,KAAK,WACL2tB,WAAS,EACTC,SAAU6F,GACVY,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,kBACJqoC,UAAWnD,GACXntC,MAAM,mBACN2jB,KAAK,WACL2tB,WAAS,EACTC,SAAU4F,GACVa,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWgH,GACX/F,SAAU8F,KAEdp9C,EAAAhP,EAAAiP,cAACk+C,GAAA,EAAD,CACIC,QAASl/C,EAAMm/C,aACfhJ,SAAUn2C,EAAMo/C,cAChBC,IAAKf,OAGVt+C,EAAMs/C,cACLx+C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACVhsB,EAAMs/C,gBCtIrB9B,GAAoB/M,GAAS,0BAC7BgN,GAAmBhN,GAAS,yBAC5BmN,GAAmBnN,GAAS,wBAG5BuN,GAAiC,CAFPvN,GAAS,gCACVzrC,GAAM,WAAY,gCACwC8rC,IACnFmN,GAA0B,CAACL,GAAkB9M,IAC7CoN,GAAkBzN,GAAS,IAC3B0N,GAAsB,kBAAMr9C,EAAAhP,EAAAiP,cAAA,cA8F5B2I,GAAiD,CACnD00C,SAAU,CACN1zC,SAAU,GACVzJ,UAAW,UAEf0zC,OAAQ,CACJloC,aAAc,GAElB8yC,eAAgB,CACZ9yC,aAAc,EACd9C,MAAO9D,GAAQC,KAAKU,MAExBsC,UAAW,CACPkE,YAAa,GACb1B,aAAc,KAIPk0C,GA/GW,SAACx/C,GACvB,IAAMs+C,EAAoBn9C,IAAMo9C,OAAO,MAMvC,OALAp9C,IAAMq9C,UAAU,WACTx+C,EAAMy+C,cAAgBH,EAAkBI,SACvCJ,EAAkBI,QAAQC,SAE/B,CAAC3+C,EAAMy+C,eAEN39C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO0I,GAAOZ,WACtChI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,qDAIJt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,QACJqoC,UAAWnD,GACXntC,MAAM,iBACNsxC,WAAS,EACT5jC,UAAQ,EACR6jC,SAAU3J,GACVoQ,KAAMjO,GACN5vC,MAAO0I,GAAO61C,kBAGtBz+C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,YACNqoC,UAAWnD,GACXntC,MAAM,aACNsxC,WAAS,EACTC,SAAUoF,GACVqB,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,WACNqoC,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACTC,SAAUqF,GACVoB,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,WACJqoC,UAAWnD,GACXntC,MAAM,WACN2jB,KAAK,WACL2tB,WAAS,EACTC,SAAU6F,GACVY,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,kBACJqoC,UAAWnD,GACXntC,MAAM,mBACN2jB,KAAK,WACL2tB,WAAS,EACTC,SAAU4F,GACVa,KAAMjO,GACN5vC,MAAO0I,GAAOirC,UAGtB7zC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWgH,GACX/F,SAAU8F,KAEdp9C,EAAAhP,EAAAiP,cAACk+C,GAAA,EAAD,CACIC,QAASl/C,EAAMm/C,aACfhJ,SAAUn2C,EAAMo/C,cAChBC,IAAKf,OAGVt+C,EAAMs/C,cACLx+C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACVhsB,EAAMs/C,gBC5BrB51C,GAAiD,CACnD+1C,WAAY,CACRC,gBAAiB,2BACjBz1C,UAAW,IACXL,SAAU,WACVhI,IAAK,KACL+9C,OAAQ,KACR30C,KAAM,KACNnB,MAAO,KACP+1C,eAAgB,QAChBC,qBAAsB,SAE1BC,WAAY,CACR5yC,QAAS,OACTO,WAAY,SACZgC,eAAgB,UAEpBswC,QAAS,CACLj2C,UAAW,GAGfk2C,SAAU,CACN/+C,UAAW,SACXwL,aAAc,GACd/B,SAAU,IAEdiF,KAAM,CACF3D,MAAO,QAEX4D,WAAY,CACRzL,OAAQ,GACRqK,gBAAiB3I,GAAQiB,KAAK,MAElC+I,YAAa,CACD/F,UAAW,IAEvBs0C,SAAU,CACN1zC,SAAU,IAEdrC,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,WAExB05C,MAAO,CACH97C,OAAQ,GACR6H,MAAO,IACPlC,WAAY,GACZmC,WAAY,IAEhBi0C,aAAc,CACVv2C,MAAO9D,GAAQiB,KAAKC,SAExBo5C,YAAa,CACT1zC,aAAc,GACdS,QAAS,OACTO,WAAY,SACZgC,eAAgB,SAChBzC,YAAa,GACb1B,aAAc,KAKPysC,gBAAoC,CAAEF,KAjJ5B,YAiJVE,CAxHK,SAAC/3C,GAGjB,OACIc,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAO+1C,YAC1B3+C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,EAAGxB,GAAI,EAAGnD,GAAI,IACpC36C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,EAAGxB,GAAI,EAAGnD,GAAI,EAAGz6C,MAAO0I,GAAOo2C,YAClDh/C,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,KAAM2wC,UAAW,GACjCx/C,EAAAhP,EAAAiP,cAACw/C,GAAA,EAAD,CAAYv/C,MAAO0I,GAAOkG,aAC1B9O,EAAAhP,EAAAiP,cAACy/C,GAAA,EAAD,CACIP,MAAM,oBACN53C,MAAM,oBACNrH,MAAO0I,GAAOu2C,QAElBn/C,EAAAhP,EAAAiP,cAAC0/C,GAAA,EAAD,CAAaz/C,MAAO0I,GAAOmG,aACvB/O,EAAAhP,EAAAiP,cAAA,YACKf,EAAM0gD,WACH5/C,EAAAhP,EAAAiP,cAAC4/C,GAAD,CAAmBlC,aAAcz+C,EAAMy+C,aAAcW,cAAe,SAACrnD,GAAD,OAAWiI,EAAM4gD,OAAO,eAAgB7oD,GAAS,KAAKonD,aApBvIz8C,6BAoBmK+rC,MAAOzuC,EAAMyuC,MAAQoS,SA1ClL,WA0CuMvB,aAAct/C,EAAMs/C,eAEpNx+C,EAAAhP,EAAAiP,cAAC+/C,GAAD,CAAmBrC,aAAcz+C,EAAMy+C,aAAcW,cAAe,SAACrnD,GAAD,OAAWiI,EAAM4gD,OAAO,eAAgB7oD,GAAS,KAAKonD,aAtBvIz8C,6BAsBmKm+C,SA5C7J,WA4CkLvB,aAAct/C,EAAMs/C,iBAK3Mx+C,EAAAhP,EAAAiP,cAACggD,GAAA,EAAD,CAAa//C,MAAO0I,GAAOy2C,aACvBr/C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,aACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM04C,WACfnkC,SAAUvU,EAAMw4C,QAChBp1C,KAAK,QACL+0C,WAAW,GARf,mBAaJr3C,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOs2C,UAA1B,4BAC6Bl/C,EAAAhP,EAAAiP,cAAA,WACzBD,EAAAhP,EAAAiP,cAACw3C,GAAD,CAAYv3C,MAAO0I,GAAOq2C,QACd1kC,GAAG,eACH7pB,QAAQ,WACRmY,MAAM,UACNvG,KAAK,QACLkG,QAAStJ,EAAMs4C,UAL3B,wCAYZx3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,EAAGxB,GAAI,EAAGnD,GAAI,OfhF1CtqD,GAAYC,MAGL4vD,GAAiB7vD,GAAyB,mBAGhD,SAAS8vD,GAAelS,EAAmBj5C,GAC9C,sBAAApE,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAA0qB,EAAA,OAAA9qB,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACoCypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eADxC,OACG6mB,EADHxqB,EAAAmoD,KAEHroD,EAAS+uD,GAAerkC,IAFrB,wBAAAxqB,EAAAM,SAAAT,MAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAOG,IAAMquD,GAAiB/vD,GAAkB,mBAiBzC,IAAMgwD,GAAgBhwD,GAAuB,kBAG7C,SAASiwD,GAAcrS,EAAmBj5C,EAAsBulB,GACnE,sBAAA/mB,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwC,EAAOtC,GAAP,IAAAsrB,EAAA,OAAA1rB,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cAAAmC,EAAAnC,KAAA,EAEiCypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiEkkB,IAFtG,cAEGkC,EAFH/oB,EAAA8lD,KAAA9lD,EAAAnC,KAAA,EAGGJ,EAASovD,GAAwBtS,EAAWj5C,EAAcynB,EAASlC,KAHtE,OAIHppB,EAASkvD,GAAc5jC,IAJpB,wBAAA/oB,EAAA/B,SAAA8B,MAAP,gBAAAE,GAAA,OAAAH,EAAA3B,MAAAC,KAAAC,YAAA,GASG,SAASyuD,GAAYvS,EAAmBj5C,EAAsBynB,GACjE,sBAAAgkC,EAAA5vD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAyvD,EAAOvvD,GAAP,IAAAuB,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAAuvD,GAAA,cAAAA,EAAArvD,KAAAqvD,EAAApvD,MAAA,cAAAovD,EAAArvD,KAAA,EAAAqvD,EAAApvD,KAAA,EAEoBypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,cAAiE,CACpFimC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAU+d,KAJ1B,cAEO/pB,EAFPiuD,EAAAnH,KAMC/8B,EAASlC,GAAK7nB,EAAK6nB,GAEnBppB,EAASkvD,GAAc5jC,IARxBkkC,EAAApvD,KAAA,EASOJ,EAASovD,GAAwBtS,EAAWj5C,EAAcynB,EAASlC,KAT1E,cAUCppB,EAASX,EAAgB,iBAAkB,YAV5CmwD,EAAA9R,OAAA,SAWQn8C,EAAK6nB,IAXb,cAAAomC,EAAArvD,KAAA,GAAAqvD,EAAAlH,GAAAkH,EAAA,SAaCxvD,EAAS0B,EAAyB8tD,EAAAlH,GAAK,+BAbxCkH,EAAAlH,GAAA,yBAAAkH,EAAAhvD,SAAA+uD,EAAA,kBAAP,gBAAA3R,GAAA,OAAA0R,EAAA5uD,MAAAC,KAAAC,YAAA,GAoBG,SAAS6uD,GAAe3S,EAAmBj5C,EAAsBynB,EAAuBhsB,GAC3F,sBAAAowD,EAAAhwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA6vD,EAAO3vD,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA2vD,GAAA,cAAAA,EAAAzvD,KAAAyvD,EAAAxvD,MAAA,cAAAwvD,EAAAzvD,KAAA,EAAAyvD,EAAAxvD,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiEomB,EAASlC,IAAM,CACtF0gB,OAAQ,MACRC,KAAMv5B,KAAKjD,UAAU+d,KAJ1B,cAAAskC,EAAAxvD,KAAA,EAWOJ,EAASmvD,GAAcrS,EAAWj5C,EAAcynB,EAASlC,KAXhE,OAYK9pB,GACAU,EAASX,EAAgBC,EAAS,YAbvCswD,EAAAxvD,KAAA,sBAAAwvD,EAAAzvD,KAAA,EAAAyvD,EAAAtH,GAAAsH,EAAA,SAeC5vD,EAAS0B,EAAyBkuD,EAAAtH,GAAK,iCAfxCsH,EAAAtH,GAAA,yBAAAsH,EAAApvD,SAAAmvD,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAAhvD,MAAAC,KAAAC,YAAA,GAiCgC1B,GAAoB,yBA2DjD,SAAS4wD,GAAkBC,GAC9B,sBAAAC,EAAAtwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAmwD,EAAOjwD,GAAP,IAAAgB,EAAA,OAAApB,EAAAC,EAAAI,KAAA,SAAAiwD,GAAA,cAAAA,EAAA/vD,KAAA+vD,EAAA9vD,MAAA,cAAA8vD,EAAA/vD,KAAA,EAAA+vD,EAAA9vD,KAAA,EAEOypC,GAAI,qBAAuB,CAC7BC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUwiD,KAJ1B,cAAAG,EAAAxS,OAAA,SAMQ,WANR,cAAAwS,EAAA/vD,KAAA,EAAA+vD,EAAA5H,GAAA4H,EAAA,SAQOlvD,EARPkvD,EAAA5H,GAAA4H,EAAAxS,OAAA,SASQ18C,EAAaO,MAAQP,EAAaO,KAAK4uD,cAAgBnvD,EAAaO,KAAK4uD,cAAgBnvD,EAAaC,iBAAmBD,EAAaC,iBAAiB,GAAG3B,aAAUyE,GAT5K,yBAAAmsD,EAAA1vD,SAAAyvD,EAAA,iBAAP,gBAAAG,GAAA,OAAAJ,EAAAtvD,MAAAC,KAAAC,YAAA,GAuCG,IAAMyvD,GAA0BnxD,GAA+D,8BAGzFoxD,GAA4BpxD,GAAiE,gCAG7FqxD,GAAerxD,GAA0D,kBA+B/E,SAASkwD,GAAwBtS,EAAmBj5C,EAAsBS,GAC7E,sBAAAksD,EAAA9wD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA2wD,EAAOzwD,GAAP,IAAAuL,EAAA,OAAA3L,EAAAC,EAAAI,KAAA,SAAAywD,GAAA,cAAAA,EAAAvwD,KAAAuwD,EAAAtwD,MAAA,cAAAswD,EAAAtwD,KAAA,EACoCypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiEZ,EAAjE,gBAA2F,CAAEwlC,OAAQ,SAD7I,OACGv+B,EADHmlD,EAAArI,KAGHroD,EAASqwD,GAAwB,CAAE/rD,aAAYqsD,mBAAoBplD,EAAOqlD,uBAC1E5wD,EAASswD,GAA0B,CAAEhsD,aAAYusD,qBAAsBtlD,EAAOulD,yBAC9E9wD,EAASuwD,GAAa,CAAEjsD,aAAYysD,aAAcxlD,EAAOwlD,gBALtD,wBAAAL,EAAAlwD,SAAAiwD,MAAP,gBAAAO,GAAA,OAAAR,EAAA9vD,MAAAC,KAAAC,YAAA,GASG,IAAMqwD,GAAgB/xD,GAAoB,mBA4E1C,SAASgyD,GAAyBpU,EAAmBj5C,EAAsBS,GAC9E,sBAAA6sD,EAAAzxD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAsxD,EAAOpxD,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAoxD,GAAA,cAAAA,EAAAlxD,KAAAkxD,EAAAjxD,MAAA,cAAAixD,EAAAlxD,KAAA,EAAAkxD,EAAAjxD,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiEZ,EAAjE,WAAsF,CAAEwlC,OAAQ,SAF3G,cAAAunB,EAAAjxD,KAAA,EAGOJ,EAASmvD,GAAcrS,EAAWj5C,EAAcS,IAHvD,OAICtE,EAASX,EAAgB,uBAAwB,YAJlDgyD,EAAAjxD,KAAA,sBAAAixD,EAAAlxD,KAAA,EAAAkxD,EAAA/I,GAAA+I,EAAA,SAMCrxD,EAAS0B,EAAyB2vD,EAAA/I,GAAK,qCANxC+I,EAAA/I,GAAA,yBAAA+I,EAAA7wD,SAAA4wD,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAAzwD,MAAAC,KAAAC,YAAA,GAaG,IAAM2wD,GAAqBryD,GAAmE,uBAGxFsyD,GAAoBtyD,GAAkB,0BgBvT7CuyD,eAUF,SAAAA,EAAY1jD,GAAc,IAAApG,EAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA8wD,IACtB9pD,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA+xD,GAAAvjD,KAAAvN,KAAMoN,KATV2jD,kBAAmB,EAQO/pD,EAP1BgqD,kBAAmB,EAOOhqD,EAN1BiqD,qBAAsB,EAMIjqD,EAL1B60C,MAAQ,GAKkB70C,EAJ1BkqD,UAAY,GAIclqD,EAH1BqnB,SAAW,GAGernB,EAF1B9D,aAAe,GAEW8D,EA6E1BmqD,eAAiB,WACTnqD,EAAK+pD,iBACL/pD,EAAKoqD,qBAEApqD,EAAKgqD,kBAAoBhqD,EAAKiqD,sBACnCjqD,EAAKijD,qBAlFajjD,EAsF1BijD,kBAAoB,WAChBv8C,GAAKw8C,iBAvFiBljD,EA0F1BoqD,kBAAoB,WAChB1jD,GAAK2jD,iBA3FiBrqD,EA8F1Bq+C,aA9F0B,eAAAvmD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KA8FX,SAAAC,EAAOkyD,GAAP,IAAA/hD,EAAAgiD,EAAArnB,EAAAla,EAAAwhC,EAAAC,EAAAC,EAAAC,EAAA,OAAA1yD,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UACXuH,EAAK4G,SAAS,CAAEi+C,cAAc,EAAOa,aAAc,OADxC6E,EAGeK,GAAS5qD,EAAKoG,MAAMvH,SAAS+D,OAAQ,CAAEY,QAAQ,IAAjE0/B,EAHGqnB,EAGHrnB,IAAKla,EAHFuhC,EAGEvhC,IAAKwhC,EAHPD,EAGOC,KACdxqD,EAAK+pD,iBAJE,CAAAxxD,EAAAE,KAAA,eAKDgyD,EAAgC,CAClCvuD,aAAcouD,EAAWpuD,aACzBguD,UAAWI,EAAWJ,UACtB7iC,SAAUijC,EAAWjjC,SACrBwtB,MAAOyV,EAAWzV,MAClBqC,SAAUoT,EAAWpT,SACrB2T,eAAgB3nB,EAChB4nB,aAAc9hC,EACd+hC,eAAgBP,EAChBQ,aAAcV,EAAWU,cAdtBzyD,EAAAE,KAAA,EAgBUuH,EAAKoG,MAAM6kD,gBAAgBR,GAhBrC,OAgBPliD,EAhBOhQ,EAAAmoD,KAAAnoD,EAAAE,KAAA,oBAiBAuH,EAAKgqD,iBAjBL,CAAAzxD,EAAAE,KAAA,gBAkBDiyD,EAAgC,CAClCvsD,MAAOmsD,EAAWpuD,aAClBguD,UAAWI,EAAWJ,UACtB7iC,SAAUijC,EAAWjjC,SACrBwtB,MAAOyV,EAAWzV,MAClBqC,SAAUoT,EAAWpT,SACrBgU,YAAaZ,EAAWY,YACxBC,SAAUb,EAAWa,SACrBH,aAAcV,EAAWU,cA1BtBzyD,EAAAE,KAAA,GA4BUuH,EAAKoG,MAAMglD,gBAAgBV,GA5BrC,QA4BPniD,EA5BOhQ,EAAAmoD,KAAAnoD,EAAAE,KAAA,qBA6BAuH,EAAKiqD,oBA7BL,CAAA1xD,EAAAE,KAAA,gBA8BDiyD,EAAqC,CACvCxuD,aAAcouD,EAAWpuD,aACzBguD,UAAWI,EAAWJ,UACtB7iC,SAAUijC,EAAWjjC,SACrBwtB,MAAOyV,EAAWzV,MAClBqC,SAAUoT,EAAWpT,SACrB2T,eAAgB3nB,EAChB4nB,aAAc9hC,EACd+hC,eAAgBP,EAChBQ,aAAcV,EAAWU,cAvCtBzyD,EAAAE,KAAA,GAyCUuH,EAAKoG,MAAMilD,qBAAqBX,GAzC1C,QAyCPniD,EAzCOhQ,EAAAmoD,KAAA,QA2CX1gD,EAAKsrD,eAAe/iD,GA3CT,yBAAAhQ,EAAAM,SAAAT,MA9FW,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAAA+G,EA8I1BsrD,eAAiB,SAAC/iD,GACG,YAAbA,GACAvI,EAAK4G,SAAS,CAAE8+C,kBAActpD,IAC9B4D,EAAKoG,MAAM1O,gBAAgB,mBAAoB,WAC/CsI,EAAKmqD,kBACe,uCAAb5hD,GAAkE,kCAAbA,GAC5DvI,EAAK4G,SAAS,CAAEi+C,cAAc,IAC9B7kD,EAAKoG,MAAM1O,gBAAgB,qFAAsF,UAE/F,yBAAb6Q,GAAoD,wCAAbA,GAC5CvI,EAAK4G,SAAS,CAAEi+C,cAAc,IAC9B7kD,EAAKoG,MAAM1O,gBAAgB,oHAAqH,UAE9H,sBAAb6Q,GAAiD,qCAAbA,GACzCvI,EAAK4G,SAAS,CAAEi+C,cAAc,IAC9B7kD,EAAKoG,MAAM1O,gBAAgB,6GAA8G,UAEvH,6BAAb6Q,GAAwD,iCAAbA,EAChDvI,EAAK4G,SAAS,CAAEi+C,cAAc,EAAMa,aAAcx+C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO8J,WAA1B,qJAC9B,sBAAbrR,GAAiD,wBAAbA,GAC3CvI,EAAK4G,SAAS,CAAEi+C,cAAc,IAC9B7kD,EAAKoG,MAAM1O,gBAAgB,qDAAsD,UAC7D,iCAAb6Q,GAA4D,4CAAbA,GAAuE,iCAAbA,GAChHvI,EAAK4G,SAAS,CAAEi+C,cAAc,IAC9B7kD,EAAKoG,MAAM1O,gBAAgB,0GAA2G,UAClH,mBAAb6Q,GAA8C,sBAAbA,EACxCvI,EAAK4G,SAAS,CAAEi+C,cAAc,EAAMa,aAAcx+C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO8J,WAA1B,+BAElD5Z,EAAK4G,SAAS,CAAEi+C,cAAc,IAC9B7kD,EAAKoG,MAAM1O,gBAAgB,qEAAsE,WA3K/EsI,EA+K1BurD,YAAc,WACNvrD,EAAK+pD,iBACLrjD,GAAK2jD,gBAEL3jD,GAAKw8C,iBAnLa,IAAAsI,EAESZ,GAAS5qD,EAAKoG,MAAMvH,SAAS+D,QAApDiyC,EAFc2W,EAEd3W,MAAO4W,EAFOD,EAEPC,GAAIC,EAFGF,EAEHE,GAAIC,EAFDH,EAECG,IAFD,OAGtB3rD,EAAK60C,MAAQA,GAA0B,GACvC70C,EAAKkqD,UAAYuB,GAAoB,GACrCzrD,EAAKqnB,SAAWqkC,GAAoB,GACpC1rD,EAAK9D,aAAeyvD,GAAsB,GAE1C3rD,EAAK+pD,iBAAmB/pD,EAAKoG,MAAMvH,SAAS+sD,SAASvpD,QAAQ,YAAc,EAC3ErC,EAAKgqD,iBAAmBhqD,EAAKoG,MAAMvH,SAAS+sD,SAASvpD,QAAQ,YAAc,EAC3ErC,EAAKiqD,oBAAsBjqD,EAAKoG,MAAMvH,SAAS+sD,SAASvpD,QAAQ,gBAAkB,EAE9ErC,EAAKgqD,iBACLhqD,EAAK6rD,uCACE7rD,EAAK+pD,iBACZ/pD,EAAK8rD,uCACE9rD,EAAKiqD,oBACZjqD,EAAK+rD,gDAEL/rD,EAAK4G,SAAS,CAAEolD,gBAAgB,IAGpChsD,EAAK+G,MAAQ,CACTklD,gBAAiB,0BACjBD,gBAAgB,EAChBE,qBAAqB,EACrBrO,SAAS,EACTgH,cAAc,GA3BI7kD,sGA0CqB,IAAAQ,EAAAxH,KAC3CA,KAAKoN,MAAM+lD,iBAAiBnzD,KAAKkD,cAC5BgE,KACG,WACIM,EAAK4F,MAAMgmD,iBAAiB5rD,EAAKtE,cAC5BgE,KAAK,SAAC/B,GACHqC,EAAKoG,SAAS,CAAEqlD,gBAAiB,8CAA+CpO,SAAS,KAC1F,WACCr9C,EAAKoG,SAAS,CAAEolD,gBAAgB,EAAMnO,SAAS,OAExD,WACCr9C,EAAKoG,SAAS,CAAEslD,qBAAqB,EAAMrO,SAAS,qEAIrB,IAAA38C,EAAAlI,KAAAqzD,EACjBzB,GAAS5xD,KAAKoN,MAAMvH,SAAS+D,OAAQ,CAAEY,QAAQ,IAAjE0/B,EADmCmpB,EACnCnpB,IAAKla,EAD8BqjC,EAC9BrjC,IAAKwhC,EADyB6B,EACzB7B,IAClBxxD,KAAKoN,MAAMkmD,oBAAoBtzD,KAAKkD,aAAclD,KAAK67C,MAAO3R,EAAgBla,EAAgBwhC,GACzFtqD,KAAK,WACFgB,EAAK0F,SAAS,CAAEqlD,gBAAiB,8CAA+CpO,SAAS,KAC1F,WACC38C,EAAK0F,SAAS,CAAEolD,gBAAgB,EAAMnO,SAAS,8EAGH,IAAAz8C,EAAApI,KAAAuzD,EAC1B3B,GAAS5xD,KAAKoN,MAAMvH,SAAS+D,OAAQ,CAAEY,QAAQ,IAAjE0/B,EAD4CqpB,EAC5CrpB,IAAKla,EADuCujC,EACvCvjC,IAAKwhC,EADkC+B,EAClC/B,IAClBxxD,KAAKoN,MAAMkmD,oBAAoBtzD,KAAKkD,aAAclD,KAAK67C,MAAO3R,EAAgBla,EAAgBwhC,GACjFtqD,KAAK,WACFkB,EAAKwF,SAAS,CAAEqlD,gBAAiB,8CAA+CpO,SAAS,KAC1F,WACCz8C,EAAKwF,SAAS,CAAEolD,gBAAgB,EAAMnO,SAAS,uCAgH/D,OAAI7kD,KAAK+N,MAAM82C,QAEP32C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAEC,UAAW,WACrBH,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGDpiD,KAAK+N,MAAMmlD,oBAEdhlD,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,6BACAD,EAAAhP,EAAAiP,cAAA,+EAGDnO,KAAK+N,MAAMilD,eAEd9kD,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,6BACAD,EAAAhP,EAAAiP,cAAA,uGAGFnO,KAAK+wD,kBAAoB/wD,KAAKgxD,kBAAoBhxD,KAAKixD,oBAEzD/iD,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqlD,GAAD,CACI3H,aAAc7rD,KAAK+N,MAAM89C,aACzB7F,cAAehmD,KAAKgmD,cACpBZ,SAAUplD,KAAKqlD,aACfyI,WAAY9tD,KAAK+wD,kBAAoB/wD,KAAKixD,oBAC1CpV,MAAO77C,KAAK67C,MACZ6J,SAAU1lD,KAAKuyD,YACf7F,aAAc1sD,KAAK+N,MAAM2+C,gBAMjCx+C,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,mEAvLZ,MAPyC,CACrCjL,aAAclD,KAAKkD,aACnB24C,MAAQ77C,KAAK+wD,kBAAoB/wD,KAAKixD,oBAAuBjxD,KAAK67C,WAAQz4C,EAC1E8tD,UAAYlxD,KAAK+wD,kBAAoB/wD,KAAKixD,oBAAuBjxD,KAAKkxD,eAAY9tD,EAClFirB,SAAWruB,KAAK+wD,kBAAoB/wD,KAAKixD,oBAAuBjxD,KAAKquB,cAAWjrB,UA9CvEmL,IAAMC,eA+OrBsI,GAAiD,CACnD8J,UAAW,CACPlJ,WAAY,SACZK,WAAY,IACZhB,MAAO9D,GAAQ+B,IAAIb,QACnB9F,UAAW,WAgBJyuC,mBAAQ,KAZvB,SAA4Bz9C,GACxB,MAAO,CACH+zD,iBAAkB,SAAClwD,GAAD,OAAkB7D,EjB7PrC,SAA0B6D,EAAsB24C,GACnD,sBAAAn6C,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwC,EAAOtC,GAAP,IAAAiJ,EAAA1H,EAAAuE,EAAA,OAAAlG,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cACC6I,EADD,2BAAA/D,OACkCrB,QAEvBE,IAAVy4C,IACAvzC,EAAG,2BAAA/D,OAA8BrB,EAA9B,KAAAqB,OAA8Cs3C,IAJlDj6C,EAAAnC,KAAA,EAOgBypC,GAAK5gC,GAPrB,cAOG1H,EAPHgB,EAAA8lD,KAQCviD,EAAQvE,EAAKuE,MAEjB9F,EAASo0D,GAAYtuD,IAVlBvD,EAAAm7C,OAAA,SAWI53C,GAXJ,wBAAAvD,EAAA/B,SAAA8B,MAAP,gBAAAutD,GAAA,OAAAxtD,EAAA3B,MAAAC,KAAAC,YAAA,GiB4PiDmzD,CAAiBlwD,KAC9DiwD,iBAAkB,SAACjwD,GAAD,OAAkB7D,GC9BXopB,ED8BqCvlB,EC7BlE,eAAAstD,EAAAzxD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAsxD,EAAOpxD,GAAP,IAAAuB,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAAoxD,GAAA,cAAAA,EAAAlxD,KAAAkxD,EAAAjxD,MAAA,cAAAixD,EAAAlxD,KAAA,EAAAkxD,EAAAjxD,KAAA,EAEoBypC,GAAI,yBAAA3kC,OAA0BkkB,IAFlD,cAEO7nB,EAFP8vD,EAAAhJ,KAAAgJ,EAAA3T,OAAA,SAGQn8C,GAHR,aAAA8vD,EAAAlxD,KAAA,EAAAkxD,EAAA/I,GAAA+I,EAAA,SAKCrxD,EAAS0B,EAAyB2vD,EAAA/I,GAAK,4BALxC+I,EAAA/I,GAAA,yBAAA+I,EAAA7wD,SAAA4wD,EAAA,iBAAP,gBAAAiD,GAAA,OAAAlD,EAAAzwD,MAAAC,KAAAC,YAAA,KADG,IAA0BwoB,GD+BzB2pC,gBAAiB,SAAChD,GAAD,OAAkB/vD,EhBxIpC,SAAyB+vD,GAC5B,sBAAAuE,EAAA50D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAy0D,EAAOv0D,GAAP,IAAAgB,EAAA,OAAApB,EAAAC,EAAAI,KAAA,SAAAu0D,GAAA,cAAAA,EAAAr0D,KAAAq0D,EAAAp0D,MAAA,cAAAo0D,EAAAr0D,KAAA,EAAAq0D,EAAAp0D,KAAA,EAEOypC,GAAI,gBAAkB,CACxBC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUwiD,KAJ1B,cAAAyE,EAAA9W,OAAA,SAMQ,WANR,cAAA8W,EAAAr0D,KAAA,EAAAq0D,EAAAlM,GAAAkM,EAAA,SAQOxzD,EARPwzD,EAAAlM,GAAAkM,EAAA9W,OAAA,SASQ18C,EAAaO,MAAQP,EAAaO,KAAK4uD,cAAgBnvD,EAAaO,KAAK4uD,cAAgBnvD,EAAaC,iBAAmBD,EAAaC,iBAAiB,GAAG3B,aAAUyE,GAT5K,yBAAAywD,EAAAh0D,SAAA+zD,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAA5zD,MAAAC,KAAAC,YAAA,GgBuIgDmyD,CAAgBhD,KAC5D6C,gBAAiB,SAAC8B,GAAD,OAAkB10D,EhBlGpC,SAAyB00D,GAC5B,sBAAAC,EAAAj1D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA80D,EAAO50D,GAAP,IAAAgB,EAAA,OAAApB,EAAAC,EAAAI,KAAA,SAAA40D,GAAA,cAAAA,EAAA10D,KAAA00D,EAAAz0D,MAAA,cAAAy0D,EAAA10D,KAAA,EAAA00D,EAAAz0D,KAAA,EAEOypC,GAAI,gBAAkB,CACxBC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUmnD,KAJ1B,cAAAG,EAAAnX,OAAA,SAMQ,WANR,cAAAmX,EAAA10D,KAAA,EAAA00D,EAAAvM,GAAAuM,EAAA,SAQO7zD,EARP6zD,EAAAvM,GAAAuM,EAAAnX,OAAA,SASQ18C,EAAaO,MAAQP,EAAaO,KAAK4uD,cAAgBnvD,EAAaO,KAAK4uD,cAAgBnvD,EAAaC,iBAAmBD,EAAaC,iBAAiB,GAAG3B,aAAUyE,GAT5K,yBAAA8wD,EAAAr0D,SAAAo0D,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAAj0D,MAAAC,KAAAC,YAAA,GgBiGgDgyD,CAAgB8B,KAC5D1B,qBAAsB,SAAC+B,GAAD,OAAuB/0D,EAAS8vD,GAAkBiF,KACxEd,oBAAqB,SAACpwD,EAAc24C,EAAO3R,EAAKmqB,EAAS7C,GAApC,OAA4CnyD,EjBjPlE,SAA6B6D,EAAsB24C,EAAe3R,EAAala,EAAawhC,GAC/F,sBAAA7C,EAAA5vD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAyvD,EAAOvvD,GAAP,IAAAiJ,EAAA1H,EAAAuE,EAAA,OAAAlG,EAAAC,EAAAI,KAAA,SAAAuvD,GAAA,cAAAA,EAAArvD,KAAAqvD,EAAApvD,MAAA,cAEC6I,EAFD,wCAAA/D,OAE+CrB,EAF/C,WAAAqB,OAEqEs3C,EAFrE,SAAAt3C,OAEkF2lC,EAFlF,SAAA3lC,OAE6FyrB,EAF7F,SAAAzrB,OAEwGitD,GAFxG3C,EAAApvD,KAAA,EAGgBypC,GAAK5gC,GAHrB,cAGG1H,EAHHiuD,EAAAnH,KAICviD,EAAQvE,EAAKuE,MACjB9F,EAASo0D,GAAYtuD,IALlB0pD,EAAA9R,OAAA,SAMI53C,GANJ,wBAAA0pD,EAAAhvD,SAAA+uD,MAAP,gBAAA0F,GAAA,OAAA3F,EAAA5uD,MAAAC,KAAAC,YAAA,GiBgP8EqzD,CAAoBpwD,EAAc24C,EAAO3R,EAAKmqB,EAAS7C,KACjI9yD,gBAAiB,SAACC,EAASC,GAAV,OAAsBS,EAASX,EAAgBC,EAASC,OAIlEk+C,CAAkCgU,IE7N3Ch6C,GAAiD,CACnDy9C,YAAa,CACT78C,WAAY,UAEhB88C,SAAU,CACN18C,SAAU,GACVf,MAAO9D,GAAQiB,KAAKC,QACpB9F,UAAW,SACXwL,aAAc,EACd3C,UAAW,IAEfu9C,KAAM,CACF38C,SAAU,GACVf,MAAO9D,GAAQiB,KAAKC,QACpB9F,UAAW,SACX6I,UAAW,EACX2C,aAAc,EACd9B,WAAY,KAEhB28C,SAAU,CACN58C,SAAU,GACVf,MAAO9D,GAAQC,KAAKiB,QACpB9F,UAAW,SACX6I,UAAW,OACX2C,aAAc,QAElB86C,QAAS,CACLr6C,QAAS,OACTuC,eAAgB,UAEpB+3C,WAAY,CACR98C,SAAU,GACVf,MAAO9D,GAAQC,KAAKiB,QACpB0F,aAAc,IAElBg7C,gBAAiB,CACbtjD,OAAQ,OACR6H,MAAO,QACPwC,gBAAiB3I,GAAQiB,KAAKC,QAC9B4C,MAAO,QACPsC,WAAY,MACZQ,aAAc,QACd3C,UAAW,QAGf49C,cAAe,CACXp9C,WAAY,SACZI,SAAU,GACVC,WAAY,IACZwE,cAAe,QAIRg9B,MAnHE,SAACnsC,GAMd,IAAM2nD,EAAWrnD,GAAK+jB,6BANSiwB,EAOWnzC,IAAMozC,UAAS,GAP1BC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAOxBsT,EAPwBpT,EAAA,GAOTqT,EAPSrT,EAAA,GAuC/B,OA9BArzC,IAAMq9C,UAAU,WACZ,IAAMtjD,EAAM1C,OAAOC,SAASC,KACtBovD,EAAaC,UAAU7sD,GAG7B,GAFwB4sD,IAAe5sD,EAanC,OAVA8E,EAAM2qC,iBAAiBa,WAAW,CAC9B18B,KAAM,cACNk5C,WAAY,CACRxC,SAAUxlD,EAAMioD,QAAQxvD,SAAS+sD,SACjCtqD,IAAKA,UAGb1I,WAAW,WACPgG,OAAOC,SAAS1F,QAAQ+0D,IACzB,KAIPD,GAAiB,GAEjB7nD,EAAM2qC,iBAAiBa,WAAW,CAC9B18B,KAAM,MACNk5C,WAAY,CACRxC,SAAUxlD,EAAMioD,QAAQxvD,SAAS+sD,SACjCtqD,IAAKA,MAGd,CAAC8E,EAAMioD,QAAQxvD,SAAS+sD,WAGvB1kD,EAAAhP,EAAAiP,cAACq8C,GAAD,MACMwK,GACE9mD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOy9C,aACfrmD,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO09C,UAAUtmD,EAAAhP,EAAAiP,cAAA,iBAC3BD,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO29C,MAAjB,UACAvmD,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO49C,UAAjB,qCACAxmD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO69C,SACfzmD,EAAAhP,EAAAiP,cAAA,UACID,EAAAhP,EAAAiP,cAAA,MAAIC,MAAO0I,GAAO89C,YAAlB,+BACA1mD,EAAAhP,EAAAiP,cAAA,MAAIC,MAAO0I,GAAO89C,YAAlB,kDACA1mD,EAAAhP,EAAAiP,cAAA,MAAIC,MAAO0I,GAAO89C,YAAlB,yCAGR1mD,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QApDxB,WAA2B,IACfzI,EAASD,GAAOqvC,KAAhBpvC,KACRb,EAAMioD,QAAQxnC,KAAK5f,IAkD2BG,MAAO0I,GAAO+9C,iBAC5C3mD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOg+C,eAApB,WAAAvwD,OAA+CwwD,EAAW,gBAAkB,uDCpD9FO,eACF,SAAAA,EAAYloD,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAs1D,IACtBtuD,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAu2D,GAAA/nD,KAAAvN,KAAMoN,KAMVmoD,UAAY,aAPcvuD,EAW1BwuD,iBAAmB,WACfxuD,EAAK4G,SAAS,CAAE6nD,YAAY,KAZNzuD,EAe1B0uD,iBAAmB,WACf1uD,EAAK4G,SAAS,CAAE6nD,YAAY,KAb5BzuD,EAAK+G,MAAQ,CACT0nD,YAAY,GAJMzuD,wEAoBtB,OACIkH,EAAAhP,EAAAiP,cAAA,QACIuI,QAAU1W,KAAKoN,MAAMuU,SAAgC3hB,KAAKu1D,UAA1Bv1D,KAAKoN,MAAMsJ,QAC3CtI,MAAQpO,KAAKoN,MAAMuU,UAEZ3hB,KAAK+N,MAAM0nD,WAAa3+C,GAAO6+C,aADjC31D,KAAK+N,MAAM0nD,WAAa3+C,GAAO8+C,UAAY9+C,GAAOpC,KAEvDmhD,aAAe71D,KAAKoN,MAAMuU,SAAmC3hB,KAAKu1D,UAA7Bv1D,KAAKw1D,iBAC1CM,aAAe91D,KAAKoN,MAAMuU,SAAmC3hB,KAAKu1D,UAA7Bv1D,KAAK01D,kBAEzC11D,KAAKoN,MAAMuI,iBA9BTpH,IAAMC,eAoCnBsI,GAA2C,CAC7CpC,KAAM,CACFqC,MAAO9D,GAAQiB,KAAKC,QACpBuD,WAAY,UAEhBk+C,UAAW,CACP7+C,MAAO9D,GAAQiB,KAAKC,QACpB4hD,eAAgB,YAChBl6C,OAAQ,UACRnE,WAAY,UAEhBi+C,YAAa,CACT5+C,MAAO9D,GAAQC,KAAKU,KACpB8D,WAAY,WAIL49C,MCrDTU,GAAaznD,IAAMizC,KAAK,SAACp0C,GAAiB,IAAAqwC,EACZrwC,EAAxBoI,eADoC,IAAAioC,EAC1B,GAD0BA,EAEtCwY,EAD0B7oD,EAAV8oD,MACF31D,OACpB,OACI2N,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ8K,QAAb,KAAA/b,OAAwBiR,EAAQqE,eACzCzM,EAAM8oD,MAAM11D,IAAI,SAACyqB,EAAMne,GACpB,OACIoB,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ8K,QAASxZ,IAAKmkB,GACxB,IAAVne,GAAeoB,EAAAhP,EAAAiP,cAACgoD,GAAAj3D,EAAD,MACf4N,IAAUmpD,EAAQ,EACf/nD,EAAAhP,EAAAiP,cAACioD,GAAD,CAAM1/C,QAAS,kBAAMtJ,EAAMipD,iBAAiBvpD,KACxCoB,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ8gD,gBAAiBrrC,IAG9C/c,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ5B,MAAOqX,SAStDnU,GAA2C,CAC7CwJ,QAAS,CACLhG,QAAS,OACTO,WAAY,UAEhBhB,aAAc,CACVA,aAAc,IAElBy8C,eAAgB,CACZx+C,SAAU,GACVC,WAAY,KAEhBnE,KAAM,CACFmD,MAAO9D,GAAQC,KAAKc,SACpB8D,SAAU,GACVC,WAAY,IACZL,WAAY,WAILJ,QAAWR,GAAXQ,CAAmB0+C,+FCpB5BO,eACF,SAAAA,EAAYnpD,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAu2D,IACtBvvD,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAw3D,GAAAhpD,KAAAvN,KAAMoN,KAcVopD,kBAAoB,WAChBxvD,EAAKoG,MAAMqpD,oBAAsBzvD,EAAKoG,MAAMqpD,oBAAmB,GAC/DzvD,EAAKoG,MAAMspD,cAjBW1vD,EAoB1B2vD,gBAAkB,WACd3vD,EAAK4G,SAAS,CAAEgpD,wBAAwB,IACxC5vD,EAAKoG,MAAMypD,cAnBX7vD,EAAK+G,MAAQ,CACT6oD,wBAAwB,GAJN5vD,kFAQP8vD,EAAkBC,GAC7BA,EAAUH,wBAA0BE,EAAUE,cAAgBh3D,KAAKoN,MAAM4pD,eACzEh3D,KAAKoN,MAAMqpD,oBAAsBz2D,KAAKoN,MAAMqpD,oBAAmB,GAC/Dz2D,KAAKoN,MAAMspD,+CAef,IAAMO,EAAaj3D,KAAKoN,MAAM8pD,WAAal3D,KAAKoN,MAAM+pD,UAAYn3D,KAAKoN,MAAMgqD,mBAK7E,OAJKH,GACDj3D,KAAKoN,MAAMspD,aAIXxoD,EAAAhP,EAAAiP,cAACsuC,GAAD,CACI98C,KAAMs3D,EACNvhD,QAAS1V,KAAKoN,MAAMs4C,SACpBjwC,MAAOzV,KAAKoN,MAAM8xC,QAAU,kBAAoB,oBAEhDhxC,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,KACK39C,KAAKoN,MAAM8xC,QACRhxC,EAAAhP,EAAAiP,cAAA,uCAA+BnO,KAAKoN,MAAMiqD,eAAiBnpD,EAAAhP,EAAAiP,cAAA,kBAASD,EAAAhP,EAAAiP,cAAA,kBAAUnO,KAAKoN,MAAMiqD,gBAAzF,yBAA8InpD,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WAApJ,kDAEAD,EAAAhP,EAAAiP,cAAA,uCAA+BnO,KAAKoN,MAAMiqD,eAAiBnpD,EAAAhP,EAAAiP,cAAA,kBAASD,EAAAhP,EAAAiP,cAAA,kBAAUnO,KAAKoN,MAAMiqD,gBAAzF,gCAIZnpD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,MACM18C,KAAKoN,MAAM8xC,SACThxC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIjmC,QAAS1W,KAAKoN,MAAMs4C,SACpB3uC,MAAM,WAFV,UAOJ7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIjmC,QAAS1W,KAAKw2D,kBACdz/C,MAAM,WAEL/W,KAAKoN,MAAM8xC,QAAU,aAAe,mBAExCl/C,KAAKoN,MAAM8xC,SACRhxC,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,qBACH/R,QAAS1W,KAAK22D,gBACd9R,QAAS7kD,KAAKoN,MAAM4pD,aACpBr1C,UAAW3hB,KAAKoN,MAAM8xC,QACtBnoC,MAAM,WALV,iBA/DWxI,IAAMC,eA+FzC,IC7HY8oD,GD6HNxgD,GAA2C,GAGlCgmC,eAnBf,SAAyB/uC,EAAmBi6C,GACxC,IAAMuP,KAAmBvP,EAASiG,WAAYlgD,EAAMk3C,KAAK+C,EAASiG,YAAYlgD,EAAMk3C,KAAK+C,EAASiG,UAAUl5C,QAC5G,MAAO,CACHoiD,UAASnP,EAASiG,UAAWkJ,aAAQnP,EAASiG,SAAjBkJ,CAA2BppD,GACxDmxC,UAAS8I,EAASiG,UAAW/O,aAAQ8I,EAASiG,SAAjB/O,CAA2BnxC,KAAWwpD,EACnEP,eAAchP,EAASiG,UAAW+I,aAAahP,EAASiG,SAAtB+I,CAAgCjpD,GAClEqpD,oBAAoBpP,EAASiG,UAAWmJ,aAAmBpP,EAASiG,SAA5BmJ,CAAsCrpD,KAItF,SAA4B1O,EAAe2oD,GACvC,MAAO,CACH6O,WAAY,kBAAMx3D,EAASoV,aAAOuzC,EAASiG,cAOpCnR,CAA6CyZ,IE5GtDiB,GAAUjpD,IAAMizC,KAAK,SAACp0C,GAAiB,IAAAqwC,EAChBrwC,EAAjBoI,eADiC,IAAAioC,EACvB,GADuBA,EAEzC,OACIvvC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAWT,EAAQkE,OACtBxL,EAAAhP,EAAAiP,cAACspD,GAAA,EAAD,CAAMxhD,UAAWT,EAAQ4S,MACpBhb,EAAMsqD,aAAal3D,IAAI,SAACm3D,EAAK7qD,GAAN,OACpBoB,EAAAhP,EAAAiP,cAACypD,GAAA,EAAD,CACI9wD,IAAK6wD,EAAIliD,MACT4J,QAAM,EACNpJ,UAAS,GAAA1R,OAAKiR,EAAQqiD,SAAb,KAAAtzD,OAAyB6I,EAAM0qD,aAAehrD,EAAQ0I,EAAQuiD,gBAAkB,IACzFrhD,QAAS,kBAAMtJ,EAAM4qD,aAAalrD,IAClC6U,SAAUg2C,EAAIh2C,UAEdzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACVu+B,EAAIliD,OAGRkiD,IAAQA,EAAI5iD,SAAW4iD,EAAIvyD,QACxB8I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACVu+B,GAAOA,EAAI5iD,QAAU7G,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQyJ,oBAAoB/Q,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAU+W,UAAWT,EAAQwF,cAA1E,qBAA+G5X,EACpIu0D,GAAOA,EAAIvyD,MAAQ8I,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ0J,kBAAkBhR,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAa+W,UAAWT,EAAQwF,cAA3E,qBAAgH5X,SAQ/JgK,EAAM8pD,WACHhpD,EAAAhP,EAAAiP,cAACgqD,GAAD,CACId,cAAejqD,EAAMiqD,cACrBpJ,SAAU7gD,EAAMsqD,aAAatqD,EAAM0qD,YAAY7J,SAC/CiJ,UAAW9pD,EAAM8pD,UACjBxR,SAAUt4C,EAAMgrD,uBAChB1B,WAAYtpD,EAAMirD,8BAOhCvhD,GAASc,aAAa,CACxBmgD,gBAAiB,CACbn8C,gBAAiB3I,GAAQC,KAAKa,YAC9BukD,YAAa,EACbC,iBAAkB,QAClBC,iBAAkBvlD,GAAQiB,KAAKQ,MAEnC0T,KAAM,CACFvO,aAAc,IAElBg+C,SAAU,CACNngD,WAAY,SACZ6F,aAAc,gCACdzF,SAAU,GACVf,MAAO9D,GAAQiB,KAAKQ,KACpB8H,WAAY,OAEhByC,mBAAoB,CAChBnH,SAAU,GACVf,MAAO9D,GAAQ6B,OAAOC,QACtBuF,QAAS,cACTO,WAAY,UAEhBqE,iBAAkB,CACdpH,SAAU,GACVf,MAAO9D,GAAQ+B,IAAIb,QACnBmG,QAAS,cACTO,WAAY,UAEhBnB,MAAO,CACHxC,UAAW,GAEfnC,QAAS,CACLgC,MAAO9D,GAAQ6B,OAAOX,QACtB2D,SAAU,GACVuB,WAAY,IAEhB2B,YAAa,CACTlD,SAAU,GACVX,YAAa,KAING,QAAWR,GAAXQ,CAAmBkgD,ICpEnBlgD,gBApBA,SAAC4rC,GAAD,OAAkBtrC,aAAa,CAC1C6gD,KAAM,CACF1hD,MAAO9D,GAAQC,KAAKU,KACpB8D,WAAY,wCAEhBvD,QAAS,CACL2D,SAAU,GACVyE,cAAe,IACfC,WAAY,KAEhBk8C,UAAW,CACP5gD,SAAU,GACV0E,WAAY,KAEhBm8C,SAAU,CACN7gD,SAAU,GACV0E,WAAY,MAILlF,CAhCD,SAAAxY,GAA2C,IAAAgqD,EAAxCtzC,EAAwC1W,EAAxC0W,QAAS5W,EAA+BE,EAA/BF,QAAS+W,EAAsB7W,EAAtB6W,SAC/B,OACIzH,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWkzC,mBAAK3zC,EAAQijD,MAAT3P,EAAA,GAAA/pD,OAAA2pD,GAAA,EAAA3pD,CAAA+pD,EAChBtzC,EAAQrB,QAAsB,YAAZvV,GADFG,OAAA2pD,GAAA,EAAA3pD,CAAA+pD,EAEhBtzC,EAAQkjD,UAAwB,cAAZ95D,GAFJG,OAAA2pD,GAAA,EAAA3pD,CAAA+pD,EAGhBtzC,EAAQmjD,SAAuB,aAAZ/5D,GAHHkqD,KAKhBnzC,kEFbD2hD,gGAkDZ,IAAMsB,GAAc,SAACxrD,GACjB,IAAMyrD,EAAazrD,EAAMyrD,aAAc,EACjCC,EAAiB1rD,EAAM0rD,eAAiBhiD,GAAOgiD,eAAiB,GACtE,OACI5qD,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMC,UAAWtgD,EAAMsgD,UAAWt/C,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOiG,KAAS3P,EAAMgB,MAAU0qD,GAAkBpiD,QAAStJ,EAAMsJ,UACzGmiD,GApCd,SAA2BE,GACvB,OAAQA,GACJ,KAAKzB,GAAiB0B,YAClB,OAAO9qD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmiD,aAC9B,KAAK3B,GAAiB4B,MAClB,OAAOhrD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOqiD,cAC9B,KAAK7B,GAAiBviD,QAClB,OAAO7G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsiD,gBAC9B,QACI,OAAOlrD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmiD,cA2BVI,CAAkBjsD,EAAM2rD,cACxC7qD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwiD,SACnBprD,EAAAhP,EAAAiP,cAAC0/C,GAAA,EAAD,CAAaz/C,MAA2B,IAApBhB,EAAMsgD,UAAkB52C,GAAOyiD,kBAAoBziD,GAAOmG,aAC1E/O,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,IACnBl7C,EAAMosD,UACJtrD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,EAAGp/C,MAAO0I,GAAO2iD,UA5B/D,SAAyBV,EAAgC1lC,GACrD,GAAIA,EACA,OAAOA,EAGP,OAAQ0lC,GACJ,KAAKzB,GAAiB0B,YAClB,OAAO9qD,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAO4iD,WACnC,KAAKpC,GAAiB4B,MAClB,OAAOhrD,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAO6iD,YAClC,KAAKrC,GAAiBviD,QAClB,OAAO7G,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAOkE,cACnC,QACI,OAAO9M,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAO4iD,YAgBlBE,CAAgBxsD,EAAM2rD,aAAc3rD,EAAMimB,OAGnDnlB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GAAIp/C,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GACzB+X,GAAO+iD,SACLzsD,EAAM0sD,SAEP,GAFkB,CAClBx/C,QAAS,UAGbpM,EAAAhP,EAAAiP,cAAA,OAAKC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GACH+X,GAAOrB,MACLrI,EAAM0sD,SAEP,GAFkB,CAClB7hD,OAAQ,KAEZ7K,EAAMqI,OACTrI,EAAM0sD,UAAY5rD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOgjD,UAAW1sD,EAAM0sD,eAQ/ElB,GAAYmB,aAAe,CACvBhB,aAAczB,GAAiB0B,aAGnC,IAAMliD,GAAiD,CACnDiG,KAAM,CACFnB,gBAAiB3I,GAAQC,KAAKE,MAC9B6E,OAAQ,QACRlB,MAAO9D,GAAQC,KAAKU,KACpB6D,WAAY,GACZL,cAAe,GACfM,WAAY,UAEhBohD,eAAgB,CACZl9C,gBAAiB3I,GAAQC,KAAKG,QAElCkmD,kBAAmB,CACf9hD,WAAY,MACZL,cAAe,MACf4iD,WAAY,EACZz8C,aAAc,EACd+6C,YAAa,EACbp4C,UAAW,EACX+5C,uBAAwB,EACxBC,wBAAyB,EACzBC,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,QAE9BuJ,YAAa,CACTxF,WAAY,MACZL,cAAe,MACfgD,YAAa,GAEjB6+C,WAAY,CACR1nD,OAAQ,GACRqK,gBAAiB3I,GAAQiB,KAAKQ,MAElCykD,YAAa,CACT5nD,OAAQ,GACRqK,gBAAiB3I,GAAQ+B,IAAIb,SAEjCilD,cAAe,CACX7nD,OAAQ,GACRqK,gBAAiB3I,GAAQ6B,OAAOX,SAEpCslD,SAAU,CACNprD,UAAW,OAEfqrD,SAAU,CACN3iD,MAAO9D,GAAQiB,KAAKQ,MAExBilD,UAAW,CACP5iD,MAAO9D,GAAQ+B,IAAIb,SAEvB6G,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,SAE1B0lD,SAAU,CACN9iD,MAAO9D,GAAQC,KAAKU,KACpBiH,WAAY,UAEhBpF,MAAO,CACH+G,WAAY,OACZD,cAAe,GACfxE,WAAY,IACZ8B,aAAc,IAElBigD,SAAU,CACNt9C,WAAY,OACZD,cAAe,GACfzE,SAAU,KAIH8gD,6DGlHAwB,GAhCyD,SAAChtD,GACrE,OACIc,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWhjD,QAAQ,aACnBtJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,sBACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,wBAGRtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKrtD,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,GACrB,IAAM4tD,EAAYttD,EAAM20C,OAAOn5C,IAAIkE,GACnC,OACIoB,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUzzD,IAAKoV,GACXhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWhjD,QAAQ,YACftJ,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,aACJqoC,UAAWZ,GACXhiC,SAAU+4C,EAAUC,iCAG5BzsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAYE,EAAUE,UACtB1sD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAYE,EAAUG,qBAAuB,YCHnEC,GAAoB3c,GAAe,KAEnC4c,eACF,SAAAA,EAAY3tD,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA+6D,IACtB/zD,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAg8D,GAAAxtD,KAAAvN,KAAMoN,KAQV4tD,wBAA0B,SAACC,EAAwBC,GAC/C,IACIC,EACAC,EAFEC,EAASr0D,EAAKoG,MAAM20C,OAAOn5C,IAAIqyD,GAG/BK,EAAkBD,EAAOtxC,UAAUzd,KAAK,SAACpN,EAAQwN,GAGnD,OAFAyuD,EAASj8D,EAAE27D,qBAAuB,GAClCO,EAAS1uD,EAAEmuD,qBAAuB,GAC9BM,EAASC,GACD,EACRD,EAASC,EACF,EACJ,IAELG,EAAsBx8D,OAAA0G,EAAA,EAAA1G,CAAA,GACrBs8D,EADqB,CAExBtxC,UAAWuxC,EAAgB96D,IAAI,SAAA6nB,GAAG,OAAAtpB,OAAA0G,EAAA,EAAA1G,CAAA,GAAUspB,OAGhDrhB,EAAK4G,SAAS,CAAE4tD,YAAY,EAAMP,iBAAgBC,qBAAoBK,iBA3BhDv0D,EA8B1By0D,yBAA2B,WACvBz0D,EAAK4G,SAAS,CACV4tD,YAAY,EACZP,oBAAgB73D,EAChB83D,wBAAoB93D,EACpBm4D,iBAAan4D,KAnCK4D,EAuC1B00D,uBAAyB,WACrB,IAAMC,EAA8B,GAC9BC,EAAY50D,EAAKoG,MAAM20C,OAAOn5C,IAAI5B,EAAK+G,MAAMktD,gBAC7CY,EAAmBD,EAAU7xC,UAAUvpB,IAAI,SAAA6nB,GAC7C,MAAO,CACHI,GAAIJ,EAAII,GACRmyC,SAAUvyC,EAAIuyC,SACdkB,UAAU,EACVC,kBAAmB1zC,EAAIyzC,SAAWF,EAAUnzC,GAAKJ,EAAI0zC,oBAAsBH,EAAUnzC,GAAKJ,EAAI0zC,uBAAoB34D,EAClHy3D,oBAAqBxyC,EAAIyzC,SAAWF,EAAU1/C,KAAOmM,EAAIwyC,sBAAwBe,EAAU1/C,KAAOmM,EAAIwyC,yBAAsBz3D,EAC5Hu3D,8BAA+BtyC,EAAIsyC,iCAI3C3zD,EAAKoG,MAAM20C,OAAO/4B,QAAQ,SAAC9M,EAAMpP,EAAOi1C,GACpC,IAAMia,EAAYja,EAAOn5C,IAAIkE,GACvBmvD,EAAYl9D,OAAA0G,EAAA,EAAA1G,CAAA,GAAQi9D,GAC1BC,EAAalyC,UAAY8xC,EAAiBr7D,IAAI,SAAA6nB,GAC1C,IAAM6zC,IAAe7zC,EAAI0zC,mBAAqB1zC,EAAI0zC,oBAAsBC,EAAUvzC,KAAOJ,EAAIwyC,sBAAwBmB,EAAU9/C,KAC/H,OAAOnd,OAAA0G,EAAA,EAAA1G,CAAA,GACAspB,EADP,CAEIyzC,SAAUI,EACVH,kBAAmB1zC,EAAI0zC,kBACvBlB,oBAAqBxyC,EAAIwyC,oBACzBF,8BAA+BtyC,EAAIsyC,kCAG3CgB,EAAe9tC,KAAKouC,KAGxB5rB,GAAMhxC,SAAS2uD,aAAOhnD,EAAKoG,MAAM6gD,SAAU,UAAW0N,IACtD30D,EAAK4G,SAAS,CACV4tD,YAAY,EACZP,oBAAgB73D,EAChB83D,wBAAoB93D,EACpBm4D,iBAAan4D,KA1EK4D,EA8E1Bm1D,YAAc,WACV,IAAMC,EAAYp1D,EAAKoG,MAAM20C,OAAOn5C,IAAI,GACpCizD,EAA6C,GAC7CO,EACAP,EAAmBO,EAAUryC,UAAUvpB,IAAI,SAAA6nB,GAAG,OAAAtpB,OAAA0G,EAAA,EAAA1G,CAAA,GACvCspB,EADuC,CAE1CyzC,UAAU,EACVC,kBAAmB1zC,EAAIyzC,SAAWM,EAAU3zC,GAAKJ,EAAI0zC,kBACrDlB,oBAAqBxyC,EAAIyzC,SAAWM,EAAUlgD,KAAOmM,EAAIwyC,oBACzDF,8BAA+BtyC,EAAIsyC,kCAIvCkB,EADqBxrB,GAAMC,WAAW3lB,SAASvC,KACf5nB,IAAI,SAAA6nB,GAAG,MAAK,CACxCI,GAAIJ,EAAII,GACRmyC,SAAUvyC,EAAIuyC,SACdkB,UAAU,EACVC,uBAAmB34D,EACnBy3D,yBAAqBz3D,EACrBu3D,8BAA+BtyC,EAAIS,WAAaT,EAAIS,UAAUvoB,OAAS,KAG/EyG,EAAKoG,MAAM20C,OAAOl0B,KAAK,CACnBpF,GAAI,GACJvM,KAAM,GACN6N,UAAW8xC,KAvGO70D,EA2G1Bq1D,YAAc,WACV,IAAMC,EAAgBt1D,EAAK+G,MAAMktD,eAC3BU,EAA8B,GACpC,QAAsBv4D,IAAlBk5D,EAA6B,CAC7B,IAAMC,EAAgBv1D,EAAKoG,MAAM20C,OAAOn5C,IAAI0zD,GAC5Ct1D,EAAKoG,MAAM20C,OAAO/4B,QAAQ,SAAC9M,EAAMpP,EAAOi1C,GACpC,IAAMia,EAAYja,EAAOn5C,IAAIkE,GAC7B,GAAKkvD,EAAUvzC,KAAO8zC,EAAc9zC,KAASuzC,EAAUvzC,IAAMuzC,EAAU9/C,OAASqgD,EAAcrgD,KAAO,CACjG,IAAM+/C,EAAYl9D,OAAA0G,EAAA,EAAA1G,CAAA,GAAQi9D,GAC1BC,EAAalyC,UAAYiyC,EAAUjyC,UAAUvpB,IAAI,SAAA6nB,GAC7C,IAAMm0C,EAAiBn0C,EAAI0zC,oBAAsBQ,EAAc9zC,IAAMJ,EAAIwyC,sBAAwB0B,EAAcrgD,KAC/G,OAAOnd,OAAA0G,EAAA,EAAA1G,CAAA,GACAspB,EADP,CAEIyzC,UAAUU,GAAyBn0C,EAAIyzC,SACvCC,kBAAmBS,OAAiBp5D,EAAYilB,EAAI0zC,kBACpDlB,oBAAqB2B,OAAiBp5D,EAAYilB,EAAIwyC,oBACtDF,+BAA+B6B,GAAyBn0C,EAAIsyC,kCAGpEgB,EAAe9tC,KAAKouC,MAIhC5rB,GAAMhxC,SAAS2uD,aAAOhnD,EAAKoG,MAAM6gD,SAAU,UAAW0N,IACtD30D,EAAK4G,SAAS,CACVqtD,oBAAgB73D,EAChBq5D,kBAAkB,KArIAz1D,EAyI1B01D,gBAAkB,SAACJ,GACft1D,EAAK4G,SAAS,CACVqtD,eAAgBqB,EAChBG,kBAAkB,KA5IAz1D,EAgJ1B21D,iBAAmB,WACf31D,EAAK4G,SAAS,CACVqtD,oBAAgB73D,EAChBq5D,kBAAkB,KAhJtBz1D,EAAK+G,MAAQ,CACTytD,YAAY,EACZiB,kBAAkB,GALAz1D,8EAuJX,IAAAsO,EACwFtV,KAAKoN,MAAhG20C,EADGzsC,EACHysC,OAAQ6a,EADLtnD,EACKsnD,YAAapuC,EADlBlZ,EACkBkZ,mCAAoCquC,EADtDvnD,EACsDunD,8BADtDC,EAEgD98D,KAAK+N,MAAxDytD,EAFGsB,EAEHtB,WAAYP,EAFT6B,EAES7B,eAAgBC,EAFzB4B,EAEyB5B,mBACpC,QAAuB93D,IAAnB63D,EAA8B,CAC9B,IAAMP,EAAY3Y,EAAOn5C,IAAIqyD,GAIvB8B,EAAW7uD,EAAAhP,EAAAiP,cAAA,wHAA+GD,EAAAhP,EAAAiP,cAAA,WAA/G,IAAsHD,EAAAhP,EAAAiP,cAAA,WAAtH,IAA8H0uD,EADxH,kFACyK,GAA/K,KAEjB,OACI3uD,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAM67D,EAAY9lD,QAAS1V,KAAKy7D,yBAA0BhmD,MAAOilD,EAAUx+C,MACnFhO,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,wDAGE39C,KAAKoN,MAAMwvD,aACT1uD,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,mBACVqkD,SAAUiD,EACNrP,UAAW,IAGnBx/C,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAI,GAAA3X,OAAK22D,EAAL,cACJ3W,UAAW6V,KAEflsD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOppC,KAAMg/C,EAAqB3W,UAAW2Y,GAAUv7C,SAAUi7C,KAErE1uD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAKy7D,yBAA0B1kD,MAAM,WAAtD,UACA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,qBACH/R,QAAS1W,KAAK07D,uBACd3kD,MAAM,UACN4K,UAAW6M,GAJf,oEAeC,IACTuzB,EAAW/hD,KAAKoN,MAAhB20C,OADSob,EAE4Bn9D,KAAK+N,MAA1C0uD,EAFSU,EAETV,iBAAkBxB,EAFTkC,EAESlC,eAC1B,QAAuB73D,IAAnB63D,EAA8B,CAC9B,IAAMP,EAAY3Y,EAAOn5C,IAAIqyD,GAC7B,OACI/sD,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAM88D,EAAkB/mD,QAAS1V,KAAKy7D,yBAA0BhmD,MAAM,iBAC9EvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,qBACiBzvC,EAAAhP,EAAAiP,cAAA,cAASusD,EAAUx+C,MADpC,+EAGAhO,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,CAAmBvvC,MAAO0I,GAAOsmD,iBAAjC,2BAEJlvD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAK28D,iBAAkB5lD,MAAM,WAA9C,UACA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,iBAAiB/R,QAAS1W,KAAKq8D,YAAatlD,MAAM,WAA7D,oDAQX,IAAAvP,EAAAxH,KAAAq9D,EACmHr9D,KAAKoN,MAArH20C,EADHsb,EACGtb,OAAQub,EADXD,EACWC,YAAaC,EADxBF,EACwBE,UAAWX,EADnCS,EACmCT,YAAapuC,EADhD6uC,EACgD7uC,mCAAoCF,EADpF+uC,EACoF/uC,2BACzF,OACIpgB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKyzC,EAAOvhD,IAAI,SAAC0b,EAAMpP,GACf,OACIoB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACpP,IAAKoV,EAAM9N,MAAO0I,GAAOZ,UAAW2E,WAAW,SAASytC,QAAS,GAC7Ep6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,SACJqoC,UAAWnD,GACXntC,MAAK,eAAA1P,OAAiBuI,EAAQ,GAC9By4C,WAAS,EACT3mD,QAAQ,WACR4mD,SAAU,CAACgY,GAAkBC,GAAoB3C,IACjDrV,UAAW34C,IAAUi1C,EAAOxhD,OAAS,GAAKg9D,EAC1C57C,SAAUi7C,GAAetuC,KAGjCpgB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,cACJqoC,UAAWmZ,GACX/7C,SAAUi7C,GAAetuC,KAGjCpgB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,qBAAqB7pB,QAAQ,WAAWmY,MAAM,UAAUwuC,WAAS,EAAC7uC,QAAS,kBAAMlP,EAAKwzD,wBAAwBluD,EAAOoP,IAAOyF,SAAU27C,GAC5I9uC,EAAqC,mBAAqB,mBAGnEtgB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYmL,SAAUi7C,GAAetuC,EAA4BvX,MAAM,UAAUL,QAAS,kBAAMlP,EAAKk1D,gBAAgB5vD,KACjHoB,EAAAhP,EAAAiP,cAACwvD,GAAAz+D,EAAD,WAMpBgP,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,cAAc1R,MAAM,UAAU3I,MAAO0I,GAAO8mD,UAAWlnD,QAAS1W,KAAKm8D,YAAax6C,SAAU27C,GAAeV,GAAetuC,GACjIpgB,EAAAhP,EAAAiP,cAAC0vD,GAAA3+D,EAAD,MADJ,aAICc,KAAK89D,eACL99D,KAAK+9D,6BAzQoBxvD,IAAMC,eA+Q1CsI,GAAiD,CACnDZ,UAAW,CACPgB,UAAW,IAEf8mD,SAAU,CACNjnD,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVzJ,UAAW,UAEfuvD,UAAW,CACP1mD,UAAW,IAEfkmD,gBAAiB,CACb3lD,WAAY,QAEhBwmD,iBAAkB,CACd/mD,UAAW,GACX2C,aAAc,GACdxL,UAAW,UAIJ0sD,MAMT2C,GAAW,SAACtwD,GAAD,OACbc,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOknD,UAAW5wD,EAAM1C,MAAM3D,MAAMmG,OAAO,SAAC2f,GAAD,OAAYA,EAAEivC,WAAUv7D,OAA/E,cAEE28D,GAAW,SAAC9vD,GAAD,OACbc,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,CAAmBvvC,MAAO0I,GAAOmnD,kBAC5B7wD,EAAM1C,MAAM3D,MAAMmV,KADvB,KAC+B9O,EAAM1C,MAAM3D,MAAMgjB,UAAU7c,OAAO,SAAC2f,GAAD,OAAYA,EAAEivC,WAAUv7D,OAD1F,wBAKEi9D,GAAmB3f,GAAS,0BAE5B4f,GAAqB,SAAC12D,EAAeg3C,GACvC,OAAIh3C,GACwBg3C,EAAUvoC,QAAQjJ,OAAO,SAAC2xD,EAAKtnC,GACnD,OAAIA,EAAI1a,OAASnV,EACNm3D,EAAM,EAENA,GACZ,IACuB,EAAI,sCAE9B,GCvRFpnD,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7Co/D,GAD6C,CAEhDzkD,MAAO,CACHlC,QAAS,YACTN,UAAW,GAEfknD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEfm9C,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExByqD,KAAM,CACFxkD,aAAc,IAElBZ,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBykD,OAAO,CACHpnD,UAAW,SAEfqnD,QAAS,CACLzmD,SAAU,GACVqD,UAAW,SACXhE,YAAa,OACbJ,MAAO9D,GAAQC,KAAKU,MAExB4qD,WAAY,CACR3jD,WAAY,SACZP,QAAS,OACTmkD,aAAc,SACd5kD,aAAc,IAElBiF,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,MAIA+rC,gBAAoC,CAAEF,KAnH5B,gBAmHVE,CAnGS,SAAC/3C,GAErB,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,oBACC7L,EAAMkhB,4BACFpgB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0nD,YAChBtwD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOynD,SAA1B,sCACArwD,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MARA,4HASA2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,UAIzC5Q,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOunD,MACfnwD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,qKAGJt9C,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO+vD,GAAiBzkD,OAC3BxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO+vD,GAAiBjlD,YAA3B,YAEJhL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwnD,QACfpwD,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,UACLqoC,UAAWwW,GACX9M,SAAU7gD,EAAM63C,KAChBqY,YAAalwD,EAAMw4C,QACnB2X,UAAWnwD,EAAMsxD,MACjB9B,YAAaxvD,EAAMwvD,YACnBtsC,YAAaljB,EAAMkjB,YACnBusC,8BAA+BzvD,EAAMyvD,8BACrCruC,mCAAoCphB,EAAMohB,mCAC1CF,2BAA4BlhB,EAAMkhB,gCAKlDpgB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsnD,WACflwD,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,iBACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM04C,WACfnkC,SAAUvU,EAAMw4C,SAAWx4C,EAAMwvD,aAAgBxvD,EAAMkjB,cAAgBljB,EAAMohB,oCANjF,uBCzDHmwC,GAAiB,SAACzN,EAAmB7iC,GAC9C,IAAMusC,EAAW1J,EAAY,IAAM7iC,EACnC,GAAIusC,EAASr6D,QAAU,GACnB,OAAOq6D,EAGP,IAAIgE,EACAC,EACEC,EAAkB5N,EAAU3wD,OAC5Bw+D,EAAiB1wC,EAAS9tB,OAahC,OAZIw+D,GAAkB,IAClBF,EAAQxwC,EAERuwC,EAAQE,EAAkB,GAAK5N,EAAUrnD,UAAU,EAAG,GAAKk1D,GAAkB,MAAQ7N,GAC9E4N,GAAmB,IAC1BF,EAAQ1N,EAER2N,EAAQE,EAAiB,GAAK1wC,EAASxkB,UAAU,EAAG,GAAKi1D,GAAmB,MAAQzwC,IAEpFuwC,EAAQE,EAAkB,GAAK5N,EAAUrnD,UAAU,EAAG,IAAM,MAAQqnD,EACpE2N,EAAQE,EAAiB,GAAK1wC,EAASxkB,UAAU,EAAG,IAAM,MAAQwkB,GAE/DuwC,EAAQ,IAAMC,GAIhBG,GAAc,SAACj4D,GACxB,IAAKA,EAAO,OAAOA,EACnB,IAAIk4D,EAAWl4D,EAAM5G,QAAQ,SAAU,IACvC,OAAI8+D,EAAS1+D,QAAU,EACZ0+D,EAEPA,EAAS1+D,QAAU,EACnB,IAAAgE,OAAW06D,EAAS31D,MAAM,EAAG,GAA7B,MAAA/E,OAAoC06D,EAAS31D,MAAM,IAEvD,IAAA/E,OAAW06D,EAAS31D,MAAM,EAAG,GAA7B,MAAA/E,OAAoC06D,EAAS31D,MAAM,EAAG,GAAtD,KAAA/E,OAA4D06D,EAAS31D,MAAM,EAAG,MAGrE41D,GAAY,SAACn4D,EAAeo4D,GACrC,IAAKp4D,EAAO,OAAOA,EACnB,IAAM03C,EAAM5jB,GAAgB9zB,GAC5B,OAAI03C,EAAIl+C,QAAU,EAAUk+C,EACvB,GAAAl6C,OAAUk6C,EAAIn1C,MAAM,EAAG,GAAvB,KAAA/E,OAA6Bk6C,EAAIn1C,MAAM,EAAG,KAGtC81D,GAAY,SAACr4D,GACtB,IAAKA,EAAO,OAAOA,EACnB,IAAMqoB,EAAMyL,GAAgB9zB,GAC5B,OAAIqoB,EAAI7uB,QAAU,EAAU6uB,EACvB,GAAA7qB,OAAU6qB,EAAI9lB,MAAM,EAAG,GAAvB,KAAA/E,OAA6B6qB,EAAI9lB,MAAM,EAAG,KAGtC+1D,GAAY,SAACt4D,GACtB,IAAKA,EAAO,OAAOA,EAEnB,IAAM80B,EAAchB,GAAgB9zB,GACpC,OAAI80B,EAAYt7B,QAAU,EACfwG,EACF80B,EAAYt7B,QAAU,EAC3B,GAAAgE,OAAUwC,EAAMuC,MAAM,EAAG,GAAzB,KAAA/E,OAA+BwC,EAAMuC,MAAM,IAE3C,GAAA/E,OAAUwC,EAAMuC,MAAM,EAAG,GAAzB,KAAA/E,OAA+BwC,EAAMuC,MAAM,EAAG,GAA9C,KAAA/E,OAAoDwC,EAAMuC,MAAM,EAAG,KAG9Dg2D,GAAc,SAACv4D,GACxB,YAAc3D,IAAV2D,EAA4B,GAEhC,IAAAxC,OAAWoI,OAAO5F,GAAS,GAAGw4D,mBAGlC,SAASC,GAAah2B,EAAai2B,EAAgBC,GAC/C,IACIxgE,GADWiS,KAAKwuD,IAAIn2B,GACCi2B,GAAQ9mC,QAAQ,GAEzC,MAAO,IADMxnB,KAAKyuD,KAAKp2B,GAAOtqC,EACRwgE,EAGnB,SAASG,GAA4Br2B,GACxC,IAAIs2B,EAAW3uD,KAAKwuD,IAAIn2B,GACxB,OAAIs2B,EAAW,KAAOA,EAAW,OACtBN,GAAah2B,EAAK,IAAM,KAE1Bs2B,EAAW,QAAUA,EAAW,UAC9BN,GAAah2B,EAAK,IAAS,KAE7Bs2B,EAAW,UACTN,GAAah2B,EAAK,IAAY,KAGlCg2B,GAAah2B,EAAK,EAAG,IClFzB,IACD0hB,GAAe,CAAEC,QAAQ,GAoBzB4U,GAAsBxxD,IAAMizC,KAAK,SAACp0C,GAAiB,IAC7C4yD,EAAU5yD,EAAV4yD,MACFC,EAAgB1xD,IAAM2xD,QAAQ,kBAAMriB,GAAS,2BAA2B,IACxEsiB,EAAc5xD,IAAM2xD,QAAQ,kB/ByJRvhE,E+BzJ4B,0B/ByJR,SAACoI,EAAYs3C,GAC3D,GAAIA,EAASC,mBAA+B,OAAVv3C,QAA4B3D,IAAV2D,GAAiC,KAAVA,GACvE,OAAOpI,GAFc,IAACA,G+BzJwD,IAC5EyhE,EAA4B7xD,IAAM2xD,QAAQ,kBAAMtgB,GAAgC,2BAA2B,IAC3GygB,EAAmB9xD,IAAM2xD,QAAQ,kBAAM/hB,GAAe,KAAK,IAC3D6G,EAAoBz2C,IAAM2xD,QAAQ,kBAAM/hB,GAAe,MAAM,IAC7DmiB,EAAe/xD,IAAMuzC,YAAY1yB,GAAK,IACtCmxC,EAAiBhyD,IAAMuzC,YAAYvD,GAAO,IAC1CiiB,EAAejyD,IAAMuzC,YAAYrD,GAAK,IACtCgiB,EAAmBlyD,IAAM2xD,QAAQ1sB,GAAkB,IACnDktB,EAAenyD,IAAM2xD,QAAQ/tB,GAAW,IACxCxwB,EAAWpT,IAAM2xD,QAAQ,WAC3B,OAAO9yD,EAAMwvD,cAAgBlvD,GAAK+jB,8BACnC,CAACrkB,EAAMwvD,cAGVruD,IAAMq9C,UAAU,WACZoU,EAAM,OAAQ,cACf,CAACA,IAEJ,IAAMW,EAAmBpyD,IAAM2xD,QAAQ,WACnC,OAAQxyD,GAAK+jB,8BACd,IAEH,OACIvjB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,oBACA/K,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOunD,MACfnwD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,oDACAt9C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAAUt9C,EAAAhP,EAAAiP,cAAA,+DAApC,MAEJD,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO+vD,GAAiBzkD,OAC3BxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO+vD,GAAiBjlD,YAA3B,wBAEJhL,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,OACLjI,MAAM,eACNswC,UAAWnD,GACXoE,SAAU,CAACya,EAAeI,GAC1BxiB,UAAQ,EACR0H,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUA,KAGlBzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,MACLjI,MAAM,MACNswC,UAAWnD,GACX+K,UAAWnxB,GACXqB,OAAQ+iC,GACR5Z,SAAU,CAAC4a,EAA2BE,EAActb,GACpDiH,KAAMkU,EACN5a,WAAS,EACTnF,sBAAsB,EACtBxhD,QAAQ,WACRwkD,YAAY,kBACZzhC,SAAUg/C,KAGlBzyD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,YACLjI,MAAM,aACNswC,UAAWnD,GACXoE,SAAU4a,EACVnU,KAAMkU,EACN5a,WAAS,EACT3mD,QAAQ,WACR6kD,QAAM,EACN2I,YAAalB,GACbvpC,SAAUA,GAEVzT,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACdmH,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,SAAd,SACAmH,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,SAAd,WAGRmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oCACLjI,MAAM,UACNswC,UAAWnD,GACXmE,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUA,KAGlBzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,0BACLjI,MAAM,OACNswC,UAAWnD,GACXmE,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUA,KAGlBzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,4BACLjI,MAAM,SACNswC,UAAWnD,GACXmE,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUA,KAGlBzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,6BACLjI,MAAM,QACNswC,UAAWnD,GACX+K,UAAW5wB,GACXgqB,WAAS,EACT3mD,QAAQ,WACR6kD,QAAM,EACN2I,YAAalB,GACbvpC,UAAU,GAEVzT,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb25D,EAAalgE,IAAI,SAAAo2B,GAAG,OACjB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,6BACLjI,MAAM,WACNswC,UAAWnD,GACX+K,UAAWpxB,GACXsB,OAAQ6iC,GACR1Z,SAAUgb,EACVjb,WAAS,EACT3mD,QAAQ,WACRwkD,YAAY,kBACZzhC,SAAUA,KAGlBzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,2BACLjI,MAAM,QACNswC,UAAWnD,GACX/kB,OAAQ2iC,GACR7S,UAAWtxB,GACX2qB,SAAU,CAAC+a,EAAgBF,GAC3B9a,WAAS,EACT3mD,QAAQ,WACRwkD,YAAY,sBACZzhC,SAAUA,KAGlBzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iBACLjI,MAAM,aACNswC,UAAWnD,GACXoE,SAAU4a,EACVjU,UAAW5wB,GACX0wB,KAAMjO,GACNuH,WAAS,EACT3mD,QAAQ,WACR6kD,QAAM,EACN2I,YAAalB,GACbvpC,SAAUA,GAET8+C,EAAiBjgE,IAAI,SAAAo2B,GAAG,OACrB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iBACLjI,MAAM,yCACNswC,UAAWZ,SAQ/Bz1C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsnD,WACflwD,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,qBACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM04C,WACfnkC,SAAUvU,EAAMw4C,SAAWjkC,GAN/B,6BAeV7K,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7Co/D,GAD6C,CAEhDzkD,MAAO,CACHxC,UAAW,EACXM,QAAS,aAEb4mD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEfm9C,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExByqD,KAAM,CACFxkD,aAAc,IAElBZ,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,MAIPsrC,gBAAoC,CAAEF,KA5P5B,oBA4PVE,CAAyD4a,ICpPlEa,GAAsBryD,IAAMizC,KAAK,SAACp0C,GAAiB,IAC7C4yD,EAAU5yD,EAAV4yD,MACFr+C,EAAWpT,IAAM2xD,QAAQ,WAC3B,OAAO9yD,EAAMwvD,cAAgBlvD,GAAK+jB,8BACnC,CAACrkB,EAAMwvD,cAQV,OALAruD,IAAMq9C,UAAU,WAEZoU,EAAM,OAAe,cACtB,CAACA,IAGA9xD,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,uBACA/K,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO+vD,GAAiBzkD,OAC3BxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO+vD,GAAiBjlD,YAA3B,kBAEJhL,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,mBACLqoC,UAAWP,GACX/vC,MAAM,oCACN0N,SAAUA,KAIlBzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,mBACLqoC,UAAWP,GACX/vC,MAAM,oCACN0N,SAAUA,QAO9BzT,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsnD,WACflwD,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,qBACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM04C,WACfnkC,SAAUvU,EAAMw4C,SAAWjkC,GAN/B,gCAeV7K,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7Co/D,GAD6C,CAEhDzkD,MAAO,CACHxC,UAAW,EACXM,QAAS,aAEb4mD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEf4K,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,MAIPsrC,gBAAoC,CAAEF,KAxF5B,oBAwFVE,CAAyDyb,ICtF3DC,GAAwBxnB,SAAgB,CACjD15C,KAAM05C,QAAeynB,WACrBniE,QAAS06C,UACTz6C,QAASy6C,UACTx6C,OAAQw6C,WAAkBA,aAWxB0nB,IAJiC1nB,SAAgB,CACnD9lC,SAAUstD,KAGwB,CAClCttD,SAAU,CACN5T,MAAM,GAEVooD,aAAc,KCxBlB,IAEaiZ,GAFKxiE,KAEmBD,CAA6B,2BAG3D,SAAS0iE,GAAeC,GAC3B,sBAAApiE,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,EAAeixC,GAAtB,IAAA6wB,EAAA,OAAAliE,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACEyhE,IACDA,EAAqBE,GAA+B9wB,SAAYltC,IAFjE7D,EAAAE,KAAA,EAI+CypC,GAAI,eAAiB,CAAEC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAUs0D,KAJ3G,OAIGC,EAJH5hE,EAAAmoD,KAKHroD,EAAS2hE,GAAsBG,IAL5B,wBAAA5hE,EAAAM,SAAAT,MAAP,gBAAAU,EAAAyB,GAAA,OAAAzC,EAAAiB,MAAAC,KAAAC,YAAA,GASG,SAASohE,GAAiBC,GAE7B,sBAAApgE,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,EAAeixC,GAAtB,IAAA4wB,EAAAC,EAAA,OAAAliE,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cACCyhE,EAAqBE,GAA+B9wB,IAAYgxB,GADjEjgE,EAAA5B,KAAA,EAG+CypC,GAAI,eAAiB,CAAEC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAUs0D,KAH3G,OAGGC,EAHH9/D,EAAAqmD,KAKHroD,EAAS2hE,GAAsBG,IAL5B,wBAAA9/D,EAAAxB,SAAAsB,MAAP,gBAAAU,EAAAo7C,GAAA,OAAA/7C,EAAAnB,MAAAC,KAAAC,YAAA,GAUG,SAASshE,GAAuB/1C,EAAgBg2C,EAAyBC,GAC5E,OAAuC,IAAnCD,EAAcn4D,QAAQmiB,GACfk2C,GAAkBC,SAES,IAAlCF,EAAap4D,QAAQmiB,GACdk2C,GAAkBE,OAErB,EAIL,IAqSKC,GAYAC,GAOAC,GAKAC,GAMAC,GAKAC,GAOAR,GAKAS,GAeAC,GAOAC,GAKAC,GAWAC,GASAC,GAnYCC,GAAoB,SAAC55C,GAmD9B,OAlDmB,SAAb65C,EAAct5C,GAChB,IAAMu5C,EAAkBv5C,EAAKw5C,YAAYz5C,KAAK,SAAA9e,GAAC,OAAIA,EAAEw4D,WAAaC,GAAeC,UAC3EC,EAAeL,EAAkBA,EAAgBl6C,QAAKrlB,EACtD6/D,EAAaD,EAAen6C,EAAMM,KAAK,SAAA9e,GAAC,OAAIA,EAAEoe,KAAOu6C,SAAiB5/D,EAEtE8/D,EAAiB95C,EAAKw5C,YAAYz5C,KAAK,SAAA9qB,GAAC,OAAIA,EAAEwkE,WAAaC,GAAeK,mBAC1EC,EAAWF,GAAkBr6C,EAAMM,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAOy6C,EAAez6C,KACrE46C,EAA8Bj6C,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuB2D,0BAyC3H,MAvC2B,CACvBoD,GAAIW,EAAKX,GACT/I,cAAe0J,EAAK1J,cAAgB0J,EAAK1J,cAAc2c,SAAW,GAClEkR,mBAAoBuE,GAAiB1oB,EAAKgC,kBAC1C2N,eAAgB3P,EAAKgC,iBACrB2V,kBAAmBp0B,OAAOyc,EAAK6X,qBAC/BC,sBAAuB9X,EAAK0Y,cAAcvhC,OACpCoM,OAAOyc,EAAK0Y,cAAc,GAAGD,8BAC7Bz+B,EACN0+B,cAAe1Y,EAAK0Y,cAAc50B,OAAO,SAAA7C,GAAC,OAAiB,OAAbA,EAAE+5B,SAAiB5jC,IAAI,SAAA8iE,GACjE,MAAO,CACHvkC,cAAeukC,EAAaplC,gBAC5BgC,YAAaojC,EAAanlC,cAC1BolC,2BAA4BD,EAAavhC,6BACzCqC,OAAQk/B,EAAal/B,OACrBo/B,UAAWF,EAAaE,aAGhCt7B,SAAUv7B,OAAOyc,EAAK6U,YACtBkG,MAAO/a,EAAK+a,MAAM3jC,IAAI,SAAAw9B,GAClB,MAAO,CACHe,cAAef,EAAKE,gBACpBgC,YAAalC,EAAKG,cAClBZ,OAAQS,EAAKT,OACbC,OAAQQ,EAAKR,OACb4G,OAAQpG,EAAKoG,OACbq/B,cAAezlC,EAAKylC,cACpBn/B,WAAYtG,EAAKsG,WACjBo/B,kBAAmB1lC,EAAK0lC,kBACxBr/B,aAAcrG,EAAKqG,aACnBs/B,oBAAqB3lC,EAAK2lC,uBAGlCC,YAAaC,GAAoBz6C,EAAM65C,GACvCa,qBAAsBV,GAAYV,EAAWU,GAC7CW,eAAgB36C,EAAK26C,eACrBV,4BAA6BA,KAmFzC,SAASW,GAAqCl7C,EAAsBw4C,GAIhE,GAFqBA,GAA2D,OAAvCA,EAAiB2C,wBAAqE7gE,IAAvCk+D,EAAiB2C,kBAEvF,CAEd,IAAIC,EAA0E,GAC1EC,EAAkE,CAClE//B,OAAOk9B,EAAkB2C,kBACzB56C,OAAOi4C,EAAkBj4C,QAG7B,OADA66C,EAAmCr2C,KAAKs2C,GACjCD,EAGP,OAAOp7C,EAAU5b,OAAO,SAAA+e,GAAC,OAAGA,EAAE6B,WAAUttB,IAAI,SAACyoB,GAEzC,MAAQ,CACJmb,OAAOnb,GAAYA,EAASoJ,eAAiBpJ,EAASoJ,eAAe+xC,0BAA4B9C,GAAoBA,EAAiB2C,kBACtI56C,OAAOJ,GAAYA,EAASI,OAASJ,EAASI,OAASi4C,GAAoBA,EAAiBj4C,UAM5G,SAAS+3C,GAA+BiD,EACpC/C,GAIA,OA9EJ,SACIvzD,EACAuzD,GAGA,IAAMoB,EAAaD,GAAkB10D,EAAM8a,OACrCy1B,EAAmBvwC,EAAMuwC,iBACzBz1B,EAAQ9a,EAAM8a,MAAMroB,IAAI,SAAA4oB,GAAI,OAAIs5C,EAAWt5C,KAsCjD,MANoC,CAChCW,UAhCchc,EAAMgc,UAAUvpB,IAAI,SAAC8jE,GACnC,IAAIj8C,EAAGtpB,OAAA0G,EAAA,EAAA1G,CAAA,GAAQulE,GACXhD,GAAoBA,EAAiB32C,UAAYtC,EAAII,KAAO64C,EAAiB32C,SAASlC,KACtFJ,EAAGtpB,OAAA0G,EAAA,EAAA1G,CAAA,GACIspB,EACAi5C,EAAiB32C,WAG5B,IAAI45C,EAAel8C,EAAIm8C,wBACvB,MAAO,CACH/7C,GAAIJ,EAAII,GACRypC,YAAa7pC,EAAI6pC,YAAc7pC,EAAI6pC,YAAY71B,cAAWj5B,EAC1D4pC,aAAc3kB,EAAIo8C,gBAAkB12D,EAAM22D,aAAaD,eACvDz3C,WAAY3E,EAAI2E,WAChB6f,OAAQxkB,EAAI8pC,SACZqS,wBAAyBD,EACzBI,aAAct8C,EAAIs8C,aAClBC,uBAAuBZ,GAAqC37C,EAAIS,UAAUw4C,GAC1E13C,WAAYvB,EAAIuB,WAAWppB,IAAI,SAAAqpB,GAC3B,MAAO,CACHpB,GAAIoB,EAAUpB,GACdypC,YAAaroC,EAAUqoC,YAAcroC,EAAUqoC,YAAY71B,cAAWj5B,EACtE6pC,cAAes0B,GAAuB13C,EAAU4Q,gBAAiB1sB,EAAMyzD,cAAezzD,EAAM0zD,cAC5F+C,wBAAyB36C,EAAU26C,wBACnCx3C,WAAYnD,EAAUmD,WACtB6f,OAAQhjB,EAAUsoC,eAQ9BtpC,QACAy1B,oBAoCGumB,CAhGX,SAA6BR,GACzB,IAAMl8C,EAAgBk8C,EAAW15C,SAC3Bm6C,EAAYT,EAAWj7C,KAAKhB,KAC5Bs8C,EAAeL,EAAWn1C,WAAWnO,QACrCygD,EAAgBzrB,KAA0Bv1C,IAAI,SAAA6J,GAAC,OAAIA,EAAEoe,KACrDg5C,EAAexrB,IAAuB,GAAMz1C,IAAI,SAAA6J,GAAC,OAAIA,EAAEoe,KACvD61B,EAAmB+lB,EAAWn1C,WAAWovB,iBAE/C,MAAO,CACHv0B,UAAW5B,EAAcC,KACzBS,MAAOi8C,EACPJ,eACAlD,gBACAC,eACAnjB,oBAgFQymB,CAAoBV,GAEM/C,GAKnC,SAASuC,GAAoBz6C,EAAY65C,GAC5C,MAAO,CACH55C,OAAQD,EAAKX,GACbu8C,sBAAuB57C,EAAK67C,YAC5BC,qBAAsB97C,EAAK+7C,eAC3BC,qBAAsBh8C,EAAKi8C,eAC3BC,6BAA8Bl8C,EAAKm8C,sBACnCC,wCAA0Cp8C,EAAKo8C,wCAC/CC,mBAAoBr8C,EAAKs8C,sBACzBC,iBAAkBv8C,EAAKw8C,wBACvBhzC,kBAAmBxJ,EAAKuJ,oBACxBkzC,uBAAwBz8C,EAAK08C,SAC7BC,kBAAoB38C,EAAKuJ,sBAAwBmvC,GAAsBkE,YACnE58C,EAAKuJ,sBAAwBmvC,GAAsBmE,UAAa78C,EAAKqb,mBAAgBrhC,EACzF8iE,8BAA+B98C,EAAKuJ,sBAAwBmvC,GAAsBqE,iBAAmB/8C,EAAKqb,mBAAgBrhC,EAC1HgjE,kCAAmCh9C,EAAKuJ,sBAAwBmvC,GAAsBuE,aAAej9C,EAAKqb,mBAAgBrhC,EAC1HkjE,sBAAuBrD,EAAaY,GAAoBZ,OAAY7/D,QAAaA,EACjFmjE,cAAen9C,EAAKm9C,cAAgBn9C,EAAKm9C,cAAc/lE,IAAI,SAAAgmE,GACvD,MAAO,CACHhpC,OAAQgpC,EAAahpC,OACrBD,OAAQipC,EAAajpC,OACrBkpC,iBAAkBD,EAAapiC,eAElChhC,aA0GDy+D,iSAYAC,4KAOAC,8EAKAC,2IAMAC,4FAKAC,wMAOAR,wEAKAS,4bAeAC,gIAOAC,8IAKAC,sQAWAC,0OASAC,mJCpaZ,ICNYkE,GDMNC,GAAuBttB,SAAgB,CACzCutB,WAAYvtB,UACZ37B,aAAc27B,UACdz7B,aAAcy7B,UACdwtB,UAAWxtB,YAcFytB,GAA0BztB,SAAgB,CACnDutB,WAAYvtB,UACZ37B,aAAc27B,UACdz7B,aAAcy7B,UACdwtB,UAAWxtB,UACXhwB,OAAQgwB,UACR0tB,QAAS1tB,QACT2tB,cAAe3tB,WAAkBA,WACjC4tB,cAAe5tB,YAAmBstB,IAClC5nC,cAAesa,UACf5U,cAAe4U,YAWb0nB,IAJ6C1nB,SAAgB,CAC/DjxB,KAAMixB,WAAkBytB,MAGuB,CAC/C1+C,KAAM,eC9CEs+C,gFAgBL,IA6IKQ,GA7ICC,GAAsB9tB,SAAgB,CAC/C+tB,eAAgB/tB,UAChBguB,eAAgBhuB,UAChBiuB,KAAMjuB,UACNkuB,OAAQluB,UACRmB,QAASnB,UACTmuB,QAASnuB,UACTwC,MAAOxC,UACPkF,MAAOlF,UACPouB,YAAapuB,SAAgB,CAAC,EAAG,EAAG,MAQlCquB,GAAwBruB,SAAgB,CAC1CjuB,iBAAkBiuB,UAClBnb,gBAAiBmb,UACjBsuB,aAActuB,YA+CLuuB,GAA0BvuB,SAAgB,CACnDwuB,WAAYxuB,QACZyuB,cAAezuB,QACf0uB,oBAAqB1uB,QACrB2uB,sBAAuB3uB,QACvB4uB,qBAAsB5uB,QACtB6uB,WAAY7uB,UACZ8uB,aAAc9uB,UACd+uB,OAAQ/uB,UACRj3B,QAASi3B,UACTgvB,SAAUhvB,UACVivB,WAAYjvB,UACZkvB,mBAAoBlvB,QACpBmvB,oBAAqBnvB,UACrBovB,sBAAuBpvB,QACvBqvB,wBAAyBrvB,QACzBsvB,sBAAuBtvB,QACvBuvB,wBAAyBvvB,QACzBwvB,sBAAuBxvB,QACvByvB,wBAAyBzvB,QACzB0vB,mBAAoB1vB,QACpB2vB,wBAAyB3vB,QACzB4vB,8BAA+B5vB,QAC/B6vB,kCAAmC7vB,QACnC8vB,gBAAiB9vB,UACjB+vB,gBAAiB/vB,UACjBgwB,gBAAiBhwB,UACjBiwB,aAAcjwB,UACdkwB,cAAelwB,UACfmwB,kBAAmBnwB,UACnBowB,mBAAoBpwB,UACpBqwB,mBAAoBrwB,UACpBswB,mBAAoBtwB,UACpBuwB,iBAAkBvwB,UAyBTwwB,GAAsBxwB,SAAgB,CAC/CywB,SAAUzwB,UACV0wB,WAAY1wB,UACZ2wB,cAAe3wB,UACf4wB,kBAAmB5wB,QACnB6wB,aAAc7wB,QACd8wB,OAAQ9wB,UACRzrB,UAAWyrB,WAAkBA,SAAgB,CACzC5wB,GAAI4wB,UACJ+wB,WAAY/wB,QACZxZ,UAAWwZ,QACX8wB,OAAQ9wB,UACRuhB,SAAUvhB,yBAIN6tB,uHA8BL,IAAMmD,GAAqBhxB,WAAkBA,SAAgB,CAChE5wB,GAAI4wB,UAAiBynB,WACrB5P,UAAW7X,UAAiBynB,WAC5BwJ,WAAYjxB,UACZhrB,SAAUgrB,UAAiBynB,WAC3BlG,SAAUvhB,UACV8Y,SAAU9Y,UACV6Y,YAAa7Y,UACbmF,IAAKnF,UACLrsB,WAAYqsB,QAAeynB,WAC3BrmC,gBAAiB4e,UACjBiB,mBAAoBjB,WAAkB8tB,IACtC3C,wBAAyBnrB,WAAkBA,WAC3CkxB,WAAYlxB,QACZmxB,YAAanxB,SAAgB,CAAC,EAAG,EAAG,EAAG,IACvCnrB,SAAUmrB,QACVoxB,oBAAqBpxB,QACrBqxB,+BAAgCrxB,QAChChnB,eAAgBu1C,GAChB+C,sBAAuBtxB,QACvBuxB,wBAAyBvxB,aAevBwxB,GAA4BxxB,SAAgB,CAC9C5wB,GAAI4wB,UAAiBynB,WACrB5P,UAAW7X,UACXhrB,SAAUgrB,UACVvrB,SAAUurB,QACVyxB,eAAgBzxB,YA4IP0xB,GAAuB1xB,SAAgB,CAChD2xB,qBAAsB3xB,UACtB6X,UAAW7X,UACXhrB,SAAUgrB,UACV8Y,SAAU9Y,UACV6Y,YAAa7Y,UACb4xB,QAAS5xB,UACTiuB,KAAMjuB,UACNmB,QAASnB,UACTmuB,QAASnuB,UACTlG,mBAAoBkG,UACpB6xB,eAAgB7xB,UAChB8xB,mBAAoB9xB,QACpBxL,2BAA4BwL,YAGnB+xB,GAAyB/xB,SAAgB,CAClD5wB,GAAI4wB,UACJuhB,SAAUvhB,UACV+wB,WAAY/wB,UAGHgyB,GAAiBhyB,SAAgB,CAC1CzrB,UAAWyrB,WAAkB+xB,IAC7BE,oBAAqBjyB,UACrBkyB,yBAA0BlyB,UAC1BmyB,aAAcT,GAEdvlC,YAAa6T,UACboyB,8BAA+BpyB,UAC/BqyB,wBAAyBryB,UACzBsyB,YAAatyB,UACbuyB,qBAAsBvyB,UACtBwyB,eAAgBxyB,UAChByyB,kBAAmBzyB,UAEnB0yB,0BAA2B1yB,UAC3B2yB,eAAgB3yB,UAChB4yB,aAAc5yB,UAEd6yB,iCAAkC7yB,UAClC8yB,wBAAyB9yB,QACzB+yB,aAAc/yB,UACdgzB,eAAgBhzB,UAChBizB,4BAA6BjzB,UAC7BpL,qBAAsBoL,YAGbkzB,GAA2BlzB,SAAgB,CACpDmzB,+BAAgCnzB,QAChCozB,mBAAoBpzB,QACpBqzB,sBAAuBrzB,QACvBszB,8BAA+BtzB,QAC/BuzB,uBAAwBvzB,QACxBwzB,uBAAwBxzB,WAAkB+xB,IAC1C0B,SAAUzzB,WAAkBgyB,MAInB0B,GAAkB1zB,SAAgB,CAC3C2zB,eAAgB3zB,QAChB4zB,gBAAiB5zB,UACjB6zB,YAAa7zB,QACb8zB,aAAc9zB,UACd+zB,kBAAmB/zB,UAEVg0B,GAA2Bh0B,SAAgB,CACpDutB,WAAYvtB,UACZ3K,aAAc2K,YAGLi0B,GAA2Bj0B,SAAgB,CACpD6X,UAAW7X,UACXhrB,SAAUgrB,UACV8Y,SAAU9Y,UACV6Y,YAAa7Y,UACbiB,mBAAoBjB,WAAkB8tB,IACtC1sC,gBAAiB4e,YAGRk0B,GAAsBl0B,SAAgB,CAC/Cm0B,QAAST,GACTU,iBAAkBJ,GAClBK,iBAAkBJ,KAGTK,GAAiCt0B,SAAgB,CAC1Du0B,aAAcv0B,UACdl2B,wBAAyBk2B,UACzBw0B,qBAAsBx0B,QACtBuwB,iBAAkBvwB,QAClB+qB,0BAA2B/qB,YAElBy0B,GAAiBz0B,SAAgB,CAC1CvR,SAAUuR,UACVtyC,MAAOsyC,YAGE00B,GAAyB10B,SAAgB,CAClD3S,iBAAkB2S,UAClB1S,WAAY0S,UACZzS,YAAayS,UACbvS,eAAgBuS,UAChBtS,QAASsS,WAAkBy0B,MAGlBE,GAAmB30B,SAAgB,CAC5C5wB,GAAI4wB,UAAiBynB,WACrBn9D,WAAY01C,UAAiBynB,WAC7Bz3C,OAAQgwB,UACR7vB,mBAAoB6vB,QAAeynB,WACnC59D,aAAcm2C,UAAiBynB,WAC/B11C,iBAAkBiuB,UAAiBynB,WACnChzC,SAAUurB,QACVyxB,eAAgBzxB,UAChBzvB,WAAYyvB,WAAkBwxB,IAC9Bf,SAAUzwB,UACV0wB,WAAY1wB,UACZ2wB,cAAe3wB,UACf40B,iBAAkB1B,GAClB2B,gBAAiB70B,WAAkB00B,IACnC9D,kBAAmB5wB,QACnB6wB,aAAc7wB,QACdhnB,eAAgBs7C,GAChBQ,aAAc90B,WAAkBwwB,IAChCuE,YAAab,KAqBXc,GAAsBh1B,SAAgB,CACxC5wB,GAAI4wB,UAAiBynB,WACrB5P,UAAW7X,UAAiBynB,WAC5BzyC,SAAUgrB,UAAiBynB,WAC3BlG,SAAUvhB,UACVmF,IAAKnF,UACLiB,mBAAoBjB,WAAkB8tB,IACtC1sC,gBAAiB4e,UAAiBynB,WAClCwN,kBAAmBj1B,UAAiBynB,WACpCyN,kBAAmBl1B,UAAiBynB,WACpC5O,YAAa7Y,YAUJm1B,GAAgCn1B,WAAkBA,SAAgB,CAC3Eo1B,aAAcp1B,UAAiBynB,WAC/B4N,uBAAwBr1B,UAAiBynB,WACzC6N,eAAgBt1B,QAChBu1B,eAAgBv1B,aAUPw1B,GAAyBx1B,SAAgB,CAClD5wB,GAAI4wB,UAAiBynB,WACrBgO,uBAAwBz1B,QACxB01B,qBAAsB11B,QACtB+W,aAAc/W,WAAkBA,aAkDvB21B,GAAwB31B,WAAkBA,SAAgB,CACnEutB,WAAYvtB,UACZ3K,aAAc2K,UACd41B,oBAAqB51B,QACrB61B,WAAY71B,QACZ81B,cAAe91B,QACf+1B,cAAe/1B,WAyBNg2B,GAAmBh2B,SAAgB,CAC5CuhB,SAAUvhB,UACVtsB,kBAAmBssB,QAAeynB,WAClC5O,YAAa7Y,UACb5b,IAAK4b,UACLzvB,WAAYygD,GACZ5hD,GAAI4wB,UAAiBynB,WACrB5P,UAAW7X,UAAiBynB,WAC5BzyC,SAAUgrB,UAAiBynB,WAC3B3O,SAAU9Y,UACVmF,IAAKnF,UACLi2B,gBAAiBj2B,UACjBl1B,aAAck1B,UACdk2B,wBAAyBl2B,QACzBiB,mBAAoBjB,WAAkB8tB,IAAqBrG,WAC3D0O,eAAgBn2B,WAAkBquB,IAAuB5G,WACzD0D,wBAAyBnrB,WAAkBA,WAAkBynB,WAC7D2O,SAAUp2B,UACVlG,mBAAoBkG,UACpBpd,SAAUod,UACVq2B,YAAar2B,UACborB,eAAgBprB,UAChBrsB,WAAYqsB,QAAeynB,WAC3B6O,YAAat2B,QAAeynB,WAC5Bx2C,iBAAkB+uB,UAAiBynB,WACnC8O,sBAAuBv2B,UACvBvwB,UAAWuwB,WAAkB20B,IAAkBlN,WAC/C+O,gBAAiBx2B,UACjB5K,oBAAqB4K,UACrBy2B,wBAAyBz2B,QACzB02B,kBAAmB12B,UACnB22B,aAAc32B,UACd42B,eAAgB52B,UAChB62B,eAAgB72B,UAChB82B,aAAc92B,UACd+2B,wBAAyB/2B,UACzBg3B,6BAA8Bh3B,UAC9Bi3B,kBAAmBj3B,UACnBk3B,yBAA0Bl3B,QAC1Bp2B,cAAeo2B,WAAkBg1B,IAAqBvN,WACtD0P,gBAAiBn3B,UACjBhnB,eAAgBu1C,GAChBjD,aAActrB,UACdo3B,sBAAuBp3B,QACvBq3B,mBAAoBr3B,UACpBs3B,mBAAoBt3B,UACpBu3B,sBAAuBpC,GACvBqC,kBAAmB7B,KAoDjBjO,IALsC1nB,SAAgB,CACxDjxB,KAAMixB,WAAkBg2B,IACxByB,eAAgBz3B,WAAkBw1B,MAGK,CACvCzmD,KAAM,GACN0oD,eAAgB,KAqGpB,SAASC,GAAQC,GACb,IAAMjnD,EAAwB,GAI9B,OAHAinD,EAAahoD,QAAQ,SAAAioD,GACjBlnD,EAAU8D,KAAKqjD,GAA6BD,MAEzClnD,EAGX,SAASonD,GAAyBC,GAC9B,OAAOryE,OAAA0G,EAAA,EAAA1G,CAAA,GACAqyE,EADP,CAEIjI,gBAAiBiI,EAAkBjI,sBAAmB/lE,EACtDgmE,gBAAiBgI,EAAkBhI,sBAAmBhmE,EACtDkmE,aAAc8H,EAAkB9H,mBAAgBlmE,EAChDimE,gBAAiB+H,EAAkB/H,sBAAmBjmE,EACtDmmE,cAAe6H,EAAkB7H,cAAgB36C,IAAOwiD,EAAkB7H,oBAAiBnmE,EAC3FqmE,mBAAoB2H,EAAkB3H,mBAAqB76C,IAAOwiD,EAAkB3H,yBAAsBrmE,EAC1GsmE,mBAAoB0H,EAAkB1H,mBAAqB96C,IAAOwiD,EAAkB1H,yBAAsBtmE,EAC1GumE,mBAAoByH,EAAkBzH,mBAAqB/6C,IAAOwiD,EAAkBzH,yBAAsBvmE,EAC1GomE,kBAAmB4H,EAAkB5H,kBAAoB56C,IAAOwiD,EAAkB5H,wBAAqBpmE,IAG/G,SAAS8tE,GAA6BD,GAClC,IAAMzP,EAAgB,CAAC,IAAK,KACtB6P,EAAQ,GAAA9sE,OAAM0sE,EAAY/f,UAAY+f,EAAY/f,UAAY,IAAM,IAA5D3sD,OAAiE0sE,EAAY5iD,SAAW4iD,EAAY5iD,SAAW,IACzHoP,EAAMwzC,EAAY/e,YAAc9lB,GAAaxd,IAAOqiD,EAAY/e,mBAAgB9uD,EA6CpF,OA5CKq6B,GAAOwzC,EAAYxzC,MACpBA,EAAMwzC,EAAYxzC,KAEE1+B,OAAA0G,EAAA,EAAA1G,CAAA,GACjBkyE,EADiB,CAEpBrW,SAAUyW,EACVtkD,kBAAmBhuB,OAAOsN,KAAK4kE,EAAY5+C,gBAAkB,IAAI9xB,OAAS,EAC1E2xD,YAAa+e,EAAY/e,YAActjC,IAAOqiD,EAAY/e,kBAAe9uD,EACzEq6B,IAAKA,EACL6c,mBAAoB22B,EAAY32B,mBAAmBhuC,KAAK,SAAUpN,EAAGwN,GACjE,OAAOxN,EAAEuoE,YAAc/6D,EAAE+6D,eACvB,GACN79C,WAAYqnD,EAAYrnD,WAAW1c,OAAO,SAAAstB,GAAG,OAAIA,EAAIgwC,cAAgBtD,GAAYoK,UAAS9wE,IAAI,SAAAg6B,GAAG,OAAAz7B,OAAA0G,EAAA,EAAA1G,CAAA,GAC1Fy7B,EAD0F,CAE7FogC,SAAQ,GAAAr2D,OAAKi2B,EAAI02B,UAAT,KAAA3sD,OAAsBi2B,EAAInM,UAClC6jC,YAAa13B,EAAI03B,YAActjC,IAAO4L,EAAI03B,kBAAe9uD,EACzDk3C,mBAAoB9f,EAAI8f,oBAAsB,GAC9CpsB,UAA0D,IAAhDszC,EAAcn4D,QAAQmxB,EAAIC,iBACpCpI,eAAgBmI,EAAInI,eAAiB8+C,GAAyB32C,EAAInI,qBAAkBjvB,MAExFmuE,eAAgBN,EAAYM,eAAgBN,EAAYM,eAAerkE,OAAO,SAAAstB,GAAG,OAAIA,EAAIgwC,cAAgBtD,GAAYoK,UAAS9wE,IAAI,SAAAg6B,GAAG,OAAAz7B,OAAA0G,EAAA,EAAA1G,CAAA,GAC9Hy7B,EAD8H,CAEjIogC,SAAQ,GAAAr2D,OAAKi2B,EAAI02B,UAAT,KAAA3sD,OAAsBi2B,EAAInM,UAClC6jC,YAAa13B,EAAI03B,YAActjC,IAAO4L,EAAI03B,kBAAe9uD,EACzDk3C,mBAAoB9f,EAAI8f,oBAAsB,GAC9CpsB,UAA0D,IAAhDszC,EAAcn4D,QAAQmxB,EAAIC,iBACpCpI,eAAgBmI,EAAInI,eAAiB8+C,GAAyB32C,EAAInI,qBAAkBjvB,WACpFA,EAEJ0lB,UAAWmoD,EAAYnoD,WAAa,GACpCmT,SAAUg1C,EAAYh1C,SAAWrN,IAAOqiD,EAAYh1C,eAAY74B,EAChE+gB,aAAc8sD,EAAY9sD,aAAeyK,IAAOqiD,EAAY9sD,mBAAgB/gB,EAC5E6sE,eAAgBgB,EAAYhB,eAAiBrhD,IAAOqiD,EAAYhB,qBAAkB7sE,EAClF8sE,eAAgBe,EAAYf,eAAiBthD,IAAOqiD,EAAYf,qBAAkB9sE,EAClF+sE,aAAcc,EAAYd,aAAevhD,IAAOqiD,EAAYd,cAAch0C,MAAMC,OAAM,QAASh5B,EAC/FgtE,wBAAyBa,EAAYb,wBAA0BxhD,IAAOqiD,EAAYb,yBAAyBj0C,MAAMC,OAAM,QAASh5B,EAChIwsE,sBAAuBqB,EAAYrB,sBAAwBhhD,IAAOuN,IAAI80C,EAAYrB,uBAAuBxzC,aAAUh5B,EACnH6f,cAAeguD,EAAYhuD,cAAcziB,IAAI,SAAAgxE,GAAG,OAAAzyE,OAAA0G,EAAA,EAAA1G,CAAA,GAAUyyE,EAAV,CAAe5W,SAAQ,GAAAr2D,OAAKitE,EAAItgB,UAAT,KAAA3sD,OAAsBitE,EAAInjD,UAAa6jC,YAAasf,EAAItf,YAActjC,IAAO4iD,EAAItf,kBAAe9uD,MACvKivB,eAAgB4+C,EAAY5+C,eAAiB8+C,GAAyBF,EAAY5+C,qBAAkBjvB,EACpGutE,mBAAoBM,EAAYN,mBAAqB/hD,IAAOqiD,EAAYN,yBAAsBvtE,EAC9FstE,mBAAoBO,EAAYP,mBAChCD,sBAAuBQ,EAAYR,sBACnCjoD,kBAAiByoD,EAAYzoD,iBAAkByoD,EAAYzoD,kBAK5D,SAASipD,GAA2Bp/C,GACvC,IAAMk2C,GAA2D,IAAtCl2C,EAAek2C,mBAC1C,OAAOxpE,OAAA0G,EAAA,EAAA1G,CAAA,GACAszB,EADP,CAEIk3C,cAAgBhB,GAAsBl2C,EAAek3C,cAAiBl3C,EAAek3C,cAAcltC,cAAWj5B,EAC9GqmE,mBAAqBlB,GAAsBl2C,EAAeo3C,mBAAsBp3C,EAAeo3C,mBAAmBptC,cAAWj5B,EAC7HsmE,mBAAqBnB,GAAsBl2C,EAAeq3C,mBAAsBr3C,EAAeq3C,mBAAmBrtC,cAAWj5B,EAC7HumE,mBAAqBpB,GAAsBl2C,EAAes3C,mBAAsBt3C,EAAes3C,mBAAmBttC,cAAWj5B,EAC7HomE,kBAAoBjB,GAAsBl2C,EAAem3C,kBAAqBn3C,EAAem3C,kBAAkBntC,cAAWj5B,EAC1HqlE,sBAAuBF,EAAqBl2C,EAAeo2C,2BAAwBrlE,EACnFslE,wBAAyBH,EAAqBl2C,EAAeq2C,6BAA0BtlE,EACvFulE,sBAAuBJ,EAAqBl2C,EAAes2C,2BAAwBvlE,EACnFwlE,wBAAyBL,EAAqBl2C,EAAeu2C,6BAA0BxlE,EACvFylE,sBAAuBN,EAAqBl2C,EAAew2C,2BAAwBzlE,EACnF0lE,wBAAyBP,EAAqBl2C,EAAey2C,6BAA0B1lE,EACvF8lE,kCAAmCX,EAAqBl2C,EAAe62C,uCAAoC9lE,EAC3G+lE,gBAAiBZ,EAAqBl2C,EAAe82C,qBAAkB/lE,EACvEgmE,gBAAiBb,EAAqBl2C,EAAe+2C,qBAAkBhmE,EACvEkmE,aAAcf,EAAqBl2C,EAAei3C,kBAAelmE,EACjEimE,gBAAiBd,EAAqBl2C,EAAeg3C,qBAAkBjmE,EACvE2lE,mBAAoBR,EAAqBl2C,EAAe02C,wBAAqB3lE,EAC7EwmE,iBAAkBv3C,EAAeu3C,iBAAmBv3C,EAAeu3C,sBAAmBxmE,IAKvF,SAASsuE,GAA6B/mD,GACzC,OAAO5rB,OAAA0G,EAAA,EAAA1G,CAAA,GACA4rB,EADP,CAEIwoB,mBAAoBxoB,EAASwoB,mBAAqBxoB,EAASwoB,mBAAqB,IAChFvpB,WAAYe,EAASf,WAAWppB,IAAI,SAAAg6B,GAAG,OAAIm3C,GAA+Bn3C,KAC1E+2C,eAAgB5mD,EAAS4mD,eAAe5mD,EAAS4mD,eAAe/wE,IAAI,SAAAg6B,GAAG,OAAIm3C,GAA+Bn3C,UAAMp3B,EAChHwsE,sBAAuBjlD,EAASilD,sBAAwBjlD,EAASilD,sBAAsBzzC,MAAME,cAAWj5B,EACxG8uD,YAAavnC,EAASunC,YAAcvnC,EAASunC,YAAYljC,QAAQ,OAAOqN,SAAW,GACnFJ,SAAUtR,EAASsR,SAAWtR,GAAYA,EAASsR,SAASjN,QAAQ,OAAOqN,cAAWj5B,EACtF+gB,aAAcwG,EAASxG,aAAewG,GAAYA,EAASxG,aAAa6K,QAAQ,OAAOqN,cAAWj5B,EAClG6sE,eAAgBtlD,EAASslD,eAAiBtlD,GAAYA,EAASslD,eAAe5zC,cAAWj5B,EACzF8sE,eAAgBvlD,EAASulD,eAAiBvlD,GAAYA,EAASulD,eAAelhD,QAAQ,OAAOqN,cAAWj5B,EACxG+sE,aAAcxlD,EAASwlD,aAAexlD,GAAYA,EAASwlD,aAAah0C,MAAMC,OAAM,GAAOC,cAAWj5B,EACtGgtE,wBAAyBzlD,EAASylD,wBAA0BzlD,GAAYA,EAASylD,wBAAwBj0C,MAAMC,OAAM,GAAOC,cAAWj5B,EACvI6f,cAAe0H,EAAS1H,cAAcziB,IAAI,SAAAgxE,GAAG,OAAAzyE,OAAA0G,EAAA,EAAA1G,CAAA,GAAUyyE,EAAV,CAAe5W,SAAQ,GAAAr2D,OAAKitE,EAAItgB,UAAT,KAAA3sD,OAAsBitE,EAAInjD,UAAY6jC,YAAasf,EAAItf,aAAesf,EAAItf,YAAYhT,UAAYsyB,EAAItf,YAAY71B,SAAW,OACjMhK,eAAgB1H,EAAS0H,gBAAkBo/C,GAA2B9mD,EAAS0H,gBAC/Eo+C,sBAAuB9lD,EAAS8lD,sBAChCC,mBAAoB/lD,EAAS+lD,mBAC7BC,mBAAoBhmD,EAASgmD,mBAAqBhmD,EAASgmD,mBAAmB3hD,QAAQ,OAAOqN,SAAW,GACxGoS,oBAAqB9jB,EAAS8jB,oBAC9BohC,gBAAiBllD,EAASklD,gBACxBgB,kBAAmBlmD,EAASkmD,oBAG/B,SAASc,GAA+B9nD,GAC3C,OAAO9qB,OAAA0G,EAAA,EAAA1G,CAAA,GACA8qB,EADP,CAEIqoC,YAAaroC,EAAUqoC,YAAcroC,EAAUqoC,YAAY71B,SAAW,GACtEhK,eAAgBxI,EAAUwI,gBAAkBo/C,GAA2B5nD,EAAUwI,kBCx7BlF,IAAMu/C,GAA6Bv4B,WAAkBA,SAAgB,CACxE5wB,GAAI4wB,UAAiBynB,WACrB7qD,UAAWojC,UAAiBynB,WAC5B59D,aAAcm2C,UAAiBynB,WAC/B+Q,YAAax4B,WAAkBA,WAC/BmxB,YAAanxB,aAiBJy4B,GAAyBz4B,SAAgB,CAClD5wB,GAAI4wB,UAAiBynB,WACrB5P,UAAW7X,UAAiBynB,WAC5BzyC,SAAUgrB,UAAiBynB,WAC3BlG,SAAUvhB,UACVwC,MAAOxC,UAAiBynB,WACxB4P,mBAAoBr3B,UACpB11C,WAAY01C,UACZ5jC,MAAO4jC,UACP04B,0BAA2B14B,UAC3B1pB,sBAAuB0pB,QACvB24B,cAAe34B,UASN44B,GAA0B54B,SAAgB,CACnDp4B,iBAAkBo4B,QAClBn4B,iBAAkBm4B,QAClB5wB,GAAI4wB,YA8CK64B,GAA0B74B,SAAgB,CACnD5wB,GAAI4wB,UACJn2C,aAAcm2C,UACd84B,cAAe94B,UACf+4B,YAAa/4B,UACbg5B,cAAeh5B,UACfi5B,wBAAyBj5B,YAwFvB0nB,IAhDwC1nB,SAAgB,CAC1D5wB,GAAI4wB,UACJ35B,cAAe25B,UACfjO,UAAWiO,UACXxqB,QAASwqB,UACTk5B,SAAUl5B,UACVm5B,QAASn5B,QACTllB,sBAAuBklB,QACvBo5B,uBAAwBp5B,UACxBppB,iBAAkBopB,SAAgB,CAC9BjvB,UAAWivB,QACX1nB,qBAAsB0nB,QACtBpoB,sBAAuBooB,QACvBnpB,kBAAmBmpB,UAEvB9oB,iBAAkB8oB,UAClBq5B,eAAgBr5B,UAChB3nB,UAAW2nB,QACXs5B,kBAAmBt5B,WAAkBA,WACrCu5B,kBAAmBhB,GACnB7wD,QAASs4B,SAAgB,CACrB5wB,GAAI4wB,UAAiBynB,WACrB5kD,KAAMm9B,UACNorB,eAAgBprB,UAChBjqB,IAAKiqB,UACLiB,mBAAoBjB,WAAkB8tB,IACtCnmD,SAAUixD,GACVY,eAAgBx5B,QAChBy5B,QAASz5B,YAEblqB,UAAWkqB,UACX5pB,gBAAiB4pB,WAAkBy4B,IACnCvoD,qBAAsB8vB,WAAkBA,WACxCiF,iBAAkBjF,QAClB05B,OAAQ15B,SAAgB,CACpB5wB,GAAI4wB,UACJ25B,YAAa35B,UACbwC,MAAOxC,UACP45B,aAAc55B,YAElBvpB,yBAA0BupB,QAC1B+4B,YAAa/4B,UACbg5B,cAAeh5B,UACf65B,gBAAiBhB,GACjBiB,eAAgB95B,UAChB+5B,gCAAiC/5B,UAGQ,CACzC5wB,GAAI,GACJ0qD,eAAgB,GAChBE,oBAAqB,GACrBtyD,QAAS,CACL0H,GAAI,GACJ6xB,mBAAoB,GACpBt5B,SAAU,CACNC,kBAAkB,EAClBC,kBAAkB,EAClBuH,GAAI,IAERoqD,gBAAgB,GAEpBD,kBAAmB,GACnBnjD,gBAAiB,GACjBsjD,OAAQ,CACJC,YAAa,GACbn3B,MAAO,GACPo3B,aAAc,IAElBnjD,0BAA0B,EAC1BsiD,YAAa,GACbC,cAAe,GACfa,gBAAiB,CACbzqD,GAAG,GACHvlB,aAAc,GACdivE,cAAe,GACfG,6BAAyBlvE,EACzBgvE,YAAY,GACZC,cAAe,IAEnBe,iCAAiC,IA8DrC,SAASE,GAAiB9mC,GACtB,GAAIA,EAAM,CACN,IAAI+mC,EAAgB3kD,MAASE,MAAM,OAEnC,OADiBF,IAAO4d,GACJ9H,SAAS6uC,EAAc,OAE3C,OAAO,EAGf,SAASC,GAAqBnpE,EAAWmiC,GACrC,QAAIA,GACO5d,MAASE,MAAM,OAAOnF,KAAKtf,EAAG,OAAO4yB,QAAQrO,IAAO4d,GAAM1d,MAAM,QAK/E,SAAS2kD,GAAejnC,GACpB,QAAIA,GACO5d,IAAOA,IAAOiO,OAAO6H,SAAS9V,IAAO4d,GAAM1d,MAAM,QC7RzD,IA6TK4kD,GA7TCC,GAAkCt6B,SAAgB,CAC3D5wB,GAAI4wB,UACJn9B,KAAMm9B,UACNu6B,MAAOv6B,UACPw6B,eAAgBx6B,UAChBy6B,kBAAmBz6B,UACnB06B,eAAgB16B,UAChB26B,cAAe36B,UACf46B,WAAY56B,YASH66B,GAA8B76B,WAAkBA,SAAgB,CACzE5wB,GAAI4wB,UAAiBynB,WACrBz3C,OAAQgwB,UACRjuB,iBAAkBiuB,aAsBT86B,GAAyB96B,WAAkBA,SAAgB,CACpE5wB,GAAI4wB,UAAiBynB,WACrBsT,aAAc/6B,UACdn9B,KAAMm9B,UACNu6B,MAAOv6B,UACPg7B,uBAAwBh7B,UACxBi7B,gBAAiBj7B,UACjBgB,YAAahB,UACbk7B,cAAel7B,YAqBNm7B,IAlBqBn7B,SAAgB,CAC9C5wB,GAAI4wB,UAAiBynB,WACrBsT,aAAc/6B,UACdn9B,KAAMm9B,UACNu6B,MAAOv6B,UACPg7B,uBAAwBh7B,UACxBi7B,gBAAiBj7B,UACjBgB,YAAahB,UACbk7B,cAAel7B,WAUwBA,WAAkBA,SAAgB,CACzE5wB,GAAI4wB,UACJo7B,eAAgBp7B,QAChBq7B,oBAAqBr7B,QACrB7T,YAAa6T,UACbs7B,gBAAiBt7B,cAkBRu7B,GAA4Bv7B,WAAkBA,SAAgB,CACvE5wB,GAAI4wB,UACJw7B,SAAUx7B,UACVy7B,WAAYz7B,UACZjO,UAAWiO,aAiBF07B,GAA8B17B,SAAgB,CACvD5wB,GAAI4wB,UACJ27B,qBAAsB37B,UACtB47B,uBAAwB57B,UACxBhL,gBAAiBgL,UACjB67B,wBAAyB77B,QACzB87B,6BAA8B97B,QAC9B+7B,qBAAsB/7B,QACtBg8B,sBAAuBh8B,UACvBi8B,gBAAiBj8B,QACjBk8B,uBAAwBl8B,QACxBm8B,sBAAuBn8B,UAkBdo8B,GAAoBp8B,WAAkBA,SAAgB,CAC/D5wB,GAAI4wB,UAAiBynB,WACrB4U,SAAUr8B,UAAiBynB,WAC3B6U,WAAYt8B,UAAiBynB,WAC7B99D,SAAUq2C,UAAiBynB,WAC3B8U,WAAYv8B,UAAiBynB,cAuEpB+U,IArDkBx8B,WAAkBA,SAAgB,CAC7D5wB,GAAI4wB,UACJw7B,SAAUx7B,UACVy7B,WAAYz7B,UACZy8B,SAAUz8B,QACV08B,YAAa18B,aAgDsBA,SAAgB,CACnD5wB,GAAI4wB,UAAiBynB,WACrBkV,oBAAqBrC,GACrBsC,kBAAmB58B,UACnB68B,qBAAsB78B,UACtB4xB,QAAS9D,GACTgP,eAAgBjC,GAChBkC,eAAgBjC,GAChBkC,oBAAqBtB,GACrBuB,WAAYb,GACZc,QAASl9B,UACT84B,cAAe94B,UACfm9B,oBAAqBhC,GACrBiC,YAAap9B,QACbq9B,oBAAqBr9B,UACrBs9B,YAAat9B,UACbu9B,cAAev9B,UACfw9B,kBAAmBx9B,UACnBy9B,kBAAmBz9B,aAkBV09B,GAA8B19B,WAAkBA,SAAgB,CACzE5wB,GAAI4wB,UAAiBynB,WACrBkW,SAAU39B,UACVjuB,iBAAkBiuB,UAClB35B,cAAe25B,UACf7T,YAAa6T,aAcJ49B,GAAmC59B,WAAkBA,SAAgB,CAC9E5wB,GAAI4wB,UAAiBynB,WACrBj1C,WAAYwtB,UAAiBynB,WAC7BrrD,MAAO4jC,UACPw7B,SAAUx7B,UACVjhB,SAAUihB,UACVvtB,YAAautB,UACb08B,YAAa18B,UACb69B,OAAQ79B,QACR89B,UAAW99B,WAYF+9B,GAAkC/9B,WAAkBA,SAAgB,CAC7EztB,YAAaytB,UAAiBynB,WAC9B11C,iBAAkBiuB,UAClB1tB,cAAe0tB,UACf5tB,yBAA0B4tB,UAC1BttB,OAAQstB,aAGCg+B,GAA8Bh+B,WAAkBA,SAAgB,CACzEi+B,YAAaj+B,UACbk+B,YAAal+B,UACbm+B,QAASn+B,UACTo+B,aAAcp+B,UACdq+B,eAAgBr+B,UAChBs+B,sBAAuBt+B,UACvBu+B,0BAA2Bv+B,UAC3Bw+B,cAAex+B,UACfy+B,SAAUz+B,UACV0+B,UAAW1+B,qBAGHq6B,qFA6DL,IAAMsE,GAA0B3+B,SAAgB,CACnD5wB,GAAI4wB,UACJmB,QAASnB,UACTruB,YAAaquB,UACb7T,YAAa6T,UACb4+B,8BAA+B5+B,UAC/B6+B,iBAAkB7+B,UAAiBynB,WACnCqX,iBAAkB9+B,UAClB++B,4BAA6B/+B,WAAkBA,WAC/Cg/B,kBAAmBzD,GACnBtpD,UAAW2rD,GACXpuD,MAAOkuD,GACPtnC,gBAAiBomC,GACjByC,wBAAyBlB,GACzBmB,oBAAqBlB,GACrBmB,sBAAuBn/B,QACvBo/B,kBAAmBp/B,QACnBq/B,gBAAiBr/B,YAgBf0nB,IAJ6C1nB,SAAgB,CAC/DjxB,KAAMixB,WAAkB2+B,MAGsB,CAC9C5vD,KAAM,GACNuwD,sBAAuB,GACvBC,gCAAgC,IAkDpC,SAAS7H,GAAQ8H,GACb,IAAMC,EAAsC,GAI5C,OAHAD,EAAoB7vD,QAAQ,SAAA+vD,GACxBD,EAAiBjrD,KAAKmrD,GAA2CD,MAE9DD,EAGX,SAASE,GAA2CD,GAChD,IAsDwDE,EAOtBC,EAvBczpC,EA7BhD,OATsC1wC,OAAA0G,EAAA,EAAA1G,CAAA,GAC/Bg6E,EAD+B,CAElCtpC,gBAAiBspC,EAAmBtpC,iBAoCQA,EApCqDspC,EAAmBtpC,gBAqCjH1wC,OAAA0G,EAAA,EAAA1G,CAAA,GACA0wC,EADP,CAEI2mC,eAAkD,MAAlC3mC,EAAgB2mC,qBAA4DhzE,GAAlCqsC,EAAgB2mC,eAA8B+C,GAAsB1pC,EAAgB2mC,qBAAkBhzE,EAChK4yE,oBAAqBvmC,EAAgBumC,qBAmBPkD,EAnB0DzpC,EAAgBumC,oBAoBrGj3E,OAAA0G,EAAA,EAAA1G,CAAA,GACAm6E,EADP,CAEIpF,kBAAmBoF,EAASpF,kBAAoBllD,IAAOsqD,EAASpF,wBAAqB1wE,UAtB0CA,EAC/Hsc,cAAe+vB,EAAgB/vB,cAAgBkP,IAAO6gB,EAAgB/vB,oBAAiBtc,EACvFg2E,wBAAyB3pC,EAAgB2pC,wBAA0BxqD,IAAO6gB,EAAgB2pC,8BAA2Bh2E,EACrHi2E,sBAAuB5pC,EAAgB4pC,sBAAwBzqD,IAAO6gB,EAAgB4pC,4BAAyBj2E,EAC/GkzE,WAAY7mC,EAAgB6mC,WAAW91E,IAAI,SAAA6d,GAAS,OAAAtf,OAAA0G,EAAA,EAAA1G,CAAA,GAAUsf,EAAV,CAAqBu3D,WAAYhnD,IAAOvQ,EAAUu3D,gBACtG0D,SAAU7pC,EAAgB6pC,SAAS94E,IAAI,SAAA+4E,GAAG,OAAAx6E,OAAA0G,EAAA,EAAA1G,CAAA,GAAUw6E,EAAV,CAAexD,YAAannD,IAAO2qD,EAAIxD,iBACjFH,WAAYnmC,EAAgBmmC,WAAahnD,IAAO6gB,EAAgBmmC,iBAAcxyE,EAC9EozE,oBAAqB/mC,EAAgB+mC,qBAKeyC,EAL0DxpC,EAAgB+mC,oBAM3Hz3E,OAAA0G,EAAA,EAAA1G,CAAA,GACAk6E,EADP,CAEItE,gBAAiBsE,EAAetE,gBAAkB/lD,IAAOqqD,EAAetE,sBAAmBvxE,UAR0DA,UA/CdA,EACvI+0E,iBAAkBY,EAAmBZ,iBAAmBvpD,IAAOmqD,EAAmBZ,uBAAoB/0E,EACtGylB,MAAOkwD,EAAmBlwD,MAAMroB,IAAI,SAAA4oB,GAAI,OAAArqB,OAAA0G,EAAA,EAAA1G,CAAA,GACjCqqB,EADiC,CAEpC1J,cAAekP,IAAOxF,EAAK1J,qBAMvC,SAASy5D,GAAsB/C,GAc3B,OAbAA,EAAiBA,EAAe51E,IAAI,SAACg5E,GACjC,OAAOz6E,OAAA0G,EAAA,EAAA1G,CAAA,GACAy6E,EADP,CAEIC,oCAAqCC,GAAwBF,GAC7DjF,cAAgBiF,EAAcjF,eAAiBiF,EAAcjF,cAAch0E,OAAS,EAAKi5E,EAAcjF,cAAgB,CAAC,UAKhF,IAA1B6B,EAAe71E,SACjC61E,EAAevoD,KAAK,IACpBuoD,EAAe,GAAG7B,cAAgB,CAAC,KAEhC6B,EAGX,SAASsD,GAAwBF,GAC7B,SAAIA,GAAiBA,EAAcjF,eAAiBiF,EAAcjF,cAAch0E,OAAS,GACjFi5E,EAAcnF,yBAA2BmF,EAAcjF,cAAc,GAAGF,wBAqC7E,SAASsF,GAA2CC,GAGjC,IA4CkCX,EAPtBC,EAtBczpC,EAjBhDoqC,EAEsB55E,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,IAAAA,UAAA,GAFc65E,EAEd75E,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,IAAAA,UAAA,GAFqD85E,EAErD95E,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,IAAAA,UAAA,GADpBw4E,EACoBx4E,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,IAAAA,UAAA,GADO+5E,EACP/5E,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,QADyBmD,EAE/C,OAAOrE,OAAA0G,EAAA,EAAA1G,CAAA,GACA66E,EADP,CAEInqC,gBAAiBmqC,EAAgBnqC,iBAYWA,EAZkDmqC,EAAgBnqC,gBAa3G1wC,OAAA0G,EAAA,EAAA1G,CAAA,GACA0wC,EADP,CAEIumC,oBAAqBvmC,EAAgBumC,qBAmBPkD,EAnB0DzpC,EAAgBumC,oBAoBrGj3E,OAAA0G,EAAA,EAAA1G,CAAA,GACAm6E,EADP,CAEIpF,kBAAmBoF,EAASpF,kBAAoBoF,EAASpF,kBAAkB9kD,QAAQ,OAAOqN,cAAWj5B,UAtB0BA,EAC/Hsc,cAAe+vB,EAAgB/vB,cAAgB+vB,EAAgB/vB,cAAcsP,QAAQ,OAAOqN,cAAWj5B,EACvGg2E,wBAAyB3pC,EAAgB2pC,wBAA0B3pC,EAAgB2pC,wBAAwBpqD,QAAQ,OAAOqN,cAAWj5B,EACrIi2E,sBAAuB5pC,EAAgB4pC,sBAAwB5pC,EAAgB4pC,sBAAsBrqD,QAAQ,OAAOqN,cAAWj5B,EAC/HkzE,WAAY7mC,EAAgB6mC,WAAW91E,IAAI,SAAA6d,GAAS,OAQrD,SAAwCA,GAC3C,OAAOtf,OAAA0G,EAAA,EAAA1G,CAAA,GACAsf,EADP,CAEIu3D,WAAYv3D,EAAUu3D,WAAW5mD,QAAQ,OAAOqN,WAXS49C,CAA+B57D,KACxFi7D,SAAU7pC,EAAgB6pC,SAAS94E,IAAI,SAAA+4E,GAAG,OAAAx6E,OAAA0G,EAAA,EAAA1G,CAAA,GAAUw6E,EAAV,CAAexD,YAAawD,EAAIxD,YAAY/mD,QAAQ,OAAOqN,aACrGu5C,WAAYnmC,EAAgBmmC,WAAanmC,EAAgBmmC,WAAW5mD,QAAQ,OAAOqN,cAAWj5B,EAC9FozE,oBAAqB/mC,EAAgB+mC,qBAmBeyC,EAnB0DxpC,EAAgB+mC,oBAoB3Hz3E,OAAA0G,EAAA,EAAA1G,CAAA,GACAk6E,EADP,CAEItE,gBAAiBsE,EAAetE,gBAAkBsE,EAAetE,gBAAgB3lD,QAAQ,OAAOqN,cAAWj5B,UAtB0CA,UAtBpBA,EACjI+0E,iBAAkByB,EAAgBzB,iBAAmByB,EAAgBzB,iBAAiBnpD,QAAQ,OAAOqN,cAAWj5B,EAChHylB,MAAO+wD,EAAgB/wD,MAAMroB,IAAI,SAAA4oB,GAAI,OAAArqB,OAAA0G,EAAA,EAAA1G,CAAA,GAAUqqB,EAAV,CAAgB1J,cAAe0J,EAAK1J,cAAcsP,QAAQ,OAAOqN,aACtG69C,oBAAqBN,EAAgBM,oBACrCL,kBAAmBA,EACnBC,8BAA+BA,EAC/BC,wBAAyBA,EACzBtB,kBAAmBA,EACnBuB,gBAAiBA,IC7fzB,IAAMjZ,GAAyC,CAC3CoZ,gBAAiB,GACjBC,aAAc,GACdC,qBAAsB,CAClBC,mBAAoB,CAChB1iD,KAAM,SACNnP,GAAI,GACJ+C,OAAQ,EACRK,WAAY,GACZgpD,SAAU,GACVqC,QAAQ,GAEZqD,WAAY,IAEhBC,oBAAqB,CACjBC,cAAe,IAEnBC,uBAAwB,CACpBC,aAAc,GACd3T,cAAe,KClEvB,IAAMjG,GAAmC,CACrC6Z,QAAQ,EACR/1C,SAAU,GACVgL,OAAQ,IClBL,IA+KKizB,GA/KC+X,GAAmBxhC,WAAkBA,SAAgB,CAC9DyhC,UAAWzhC,UAAiBynB,WAC5Bia,gBAAiB1hC,UACjB2hC,mBAAoB3hC,aAeX4hC,GAAoB5hC,WAAkBA,SAAgB,CAC/D5wB,GAAI4wB,UAAiBynB,WACrBt1C,OAAQ6tB,UAAiBynB,WACzBlpC,KAAMyhB,UACNxtB,WAAYwtB,UAAiBynB,WAC7BrrD,MAAO4jC,UACPw7B,SAAUx7B,UACVttB,OAAQstB,UACRvtB,YAAautB,UACb08B,YAAa18B,UACb69B,OAAQ79B,WAiBC6hC,GAAgB7hC,WAAkBA,SAAgB,CAC3D5wB,GAAI4wB,UAAiBynB,WACrB7iC,WAAYob,UAAiBynB,WAC7B18B,OAAQiV,UACRoqB,cAAepqB,UACf/U,WAAY+U,UACZqqB,kBAAmBrqB,UACnBhV,aAAcgV,UACdsqB,oBAAqBtqB,UACrBnb,gBAAiBmb,UACjBlb,cAAekb,UACf9b,OAAQ8b,UACR7b,OAAQ6b,aAaC8hC,GAAwB9hC,WAAkBA,SAAgB,CACnE5wB,GAAI4wB,UAAiBynB,WACrBj/B,wBAAyBwX,UAAiBynB,WAC1C7/B,oBAAqBoY,UAAiBynB,WACtC5iC,gBAAiBmb,UACjBlb,cAAekb,UACftX,6BAA8BsX,UAC9BjV,OAAQiV,UACRmqB,UAAWnqB,aAQF+hC,GAAsB/hC,WAAkBA,SAAgB,CACjE5wB,GAAI4wB,UAAiBynB,WACrBlhC,kBAAmByZ,UAAiBynB,WACpCjhC,UAAWwZ,QAAeynB,cAUjBua,GAAuBhiC,WAAkBA,SAAgB,CAClE5wB,GAAI4wB,UAAiBynB,WACrBvjC,OAAQ8b,UAAiBynB,WACzBtjC,OAAQ6b,UAAiBynB,WACzB18B,OAAQiV,aAWCiiC,GAAyBjiC,WAAkBA,SAAgB,CACpElb,cAAekb,UAAiBynB,WAChCya,cAAeliC,QAAeynB,WAC9B0a,UAAWniC,QAAeynB,WAC1BvjC,OAAQ8b,UACR7b,OAAQ6b,aASCoiC,GAAgBpiC,SAAgB,CACzC5wB,GAAI4wB,UAAiBynB,WACrB5kD,KAAMm9B,UAAiBynB,WACvB5E,WAAY7iB,QAAeynB,aASlB4a,GAAsBriC,WAAkBA,SAAgB,CACjEynB,WAAYznB,QAAeynB,WAC3B5kD,KAAMm9B,UACNsiC,OAAQtiC,WAAkBoiC,OAOjBG,GAAsBviC,SAAgB,CAC/C5wB,GAAI4wB,UAAiBynB,WACrB9pB,WAAYqC,UAAiBynB,aAOOznB,SAAgB,CACpDvX,cAAeq5C,GACfU,QAASxiC,WAAkBuiC,gBAcnB9Y,gHA0BZ,IAAMgZ,GAAiC,CACnCn1C,WAAY0S,UAAiBynB,WAC7Bl6B,YAAayS,UAAiBynB,WAC9Bh6B,eAAgBuS,UAAiBynB,WACjCj6B,aAAcwS,UAAiBynB,WAC/B7mC,MAAOof,UACPxR,eAAgBwR,WAAkBA,WAClC3S,iBAAkB2S,UAClBzR,UAAWyR,WAEF0iC,GAAuB1iC,SAAgByiC,IACpDA,GAA0Bp0C,eAAiB2R,WAAkB0iC,IAiB7D,IAAMC,GAAyB3iC,SAAgB,CAC3C5wB,GAAI4wB,UACJ4iC,gBAAiB5iC,UACjB6iC,UAAW7iC,UACX8iC,SAAU9iC,UACV+iC,MAAO/iC,UACPrC,WAAYqC,UACZlnB,oBAAqBknB,UACrBhnB,eAAgBgnB,WAAkBA,SAAgB,CAC9C5wB,GAAI4wB,UACJvyC,IAAKuyC,UACLtyC,MAAOsyC,eAgFFgjC,GAAehjC,SAAgB,CACxC5wB,GAAI4wB,UAAiBynB,WACrBtmB,QAASnB,UAAiBynB,WAC1B11C,iBAAkBiuB,UAAiBynB,WACnCt7B,YAAa6T,UAAiBynB,WAC9B91C,YAAaquB,UAAiBynB,WAC9B5nC,YAAamgB,UACbrC,WAAYqC,UAAiBynB,WAC7B7iC,WAAYob,UACZpY,oBAAqBoY,UACrBl5B,gBAAiBk5B,UAAiBynB,WAClCwb,WAAYjjC,UACZkjC,aAAcljC,UAAiBynB,WAC/B0b,iBAAkBnjC,QAClBojC,eAAgBpjC,QAChBqjC,YAAarjC,QACb1T,SAAU0T,QACVsjC,uBAAwBtjC,QACxBujC,iBAAkBvjC,QAClB0qB,eAAgB1qB,QAChBwjC,SAAUhC,GACVvvD,UAAW2vD,GACX92C,MAAO+2C,GACPp5C,cAAeq5C,GACfv8C,aAAcw8C,GACd7U,cAAe8U,GACfyB,gBAAiBxB,GACjByB,aAAcrB,GACdsB,SAAU3jC,WAAkBA,WAC5B4jC,OAAQ5jC,UACR6jC,aAAc7jC,UACd35B,cAAe25B,UACf8jC,sBAAuB9jC,UACvB+jC,YAAa/jC,UACb4rB,YAAa5rB,UACb1mB,oBAAqB0mB,UACrB5U,cAAe4U,UACf8rB,eAAgB9rB,UAChBgsB,eAAgBhsB,UAChBksB,sBAAuBlsB,UACvBgkC,gBAAiBhkC,UACjBikC,kBAAmBjkC,UACnBkkC,cAAelkC,UACfmkC,aAAcnkC,UACdqsB,sBAAuBrsB,UACvBusB,wBAAyBvsB,UACzBysB,SAAUzsB,UACV9vB,qBAAsB8vB,WAAkBA,WACxCupB,YAAavpB,WAAkBA,SAAgB,CAC3C5wB,GAAI4wB,UAAiBynB,WACrB+B,SAAUxpB,UAAiBynB,cAE/BlkC,oBAAqByc,UACrBnc,cAAemc,UACfokC,UAAWpkC,WAAkB0iC,IAC7BhqD,eAAgBsnB,WAAkB2iC,IAClC0B,MAAOrkC,UACPmsB,wCAAyCnsB,QACzC3V,gBAAiB2V,QACjB1V,aAAc0V,QACdskC,YAAatkC,YAuBX0nB,IAdkC1nB,SAAgB,CACpDjxB,KAAMixB,WAAkBgjC,IACxB3vD,qBAAsB2sB,UACtBukC,iBAAkBvkC,SAAgB,CAC9BmB,QAASnB,UACTjuB,iBAAkBiuB,UAClBruB,YAAaquB,UACb7T,YAAa6T,UACb35B,cAAe25B,UACfmuB,QAASnuB,UACTkuB,OAAQluB,cAIuB,CACnCjxB,KAAM,GACNsE,qBAAsB,IAAIhD,IAC1Bk0D,iBAAkB,CACdpjC,aAASp3C,EACTgoB,sBAAkBhoB,EAClB4nB,iBAAa5nB,EACboiC,iBAAapiC,EACbsc,mBAAetc,EACfokE,aAASpkE,EACTmkE,YAAQnkE,KAmFhB,SAASy6E,GAAqBC,GAC1B,OAAO/+E,OAAA0G,EAAA,EAAA1G,CAAA,GACA++E,EADP,CAEIp+D,cAAeo+D,EAAQp+D,cAAgBkP,IAAOkvD,EAAQp+D,eAAeyc,MAAMC,OAAM,QAASh5B,EAC1F+5E,sBAAuBW,EAAQX,sBAAwBvuD,IAAOkvD,EAAQX,4BAAyB/5E,EAC/Fq6E,UAAWK,EAAQL,WAAa,GAChC37C,cAAeg8C,EAAQh8C,cAAcx1B,KAAK,SAACpN,EAAGwN,GAAJ,OACrCxN,EAAEg/B,iBAAmBxxB,EAAEwxB,gBAAoBh/B,EAAEg/B,gBAAkBxxB,EAAEwxB,gBAC7Dh/B,EAAEi/B,eAAiBzxB,EAAEyxB,cAAkBj/B,EAAEi/B,cAAgBzxB,EAAEyxB,cACxD,IAEZgG,MAAO25C,EAAQ35C,MAAM73B,KAAK,SAACpN,EAAGwN,GAAJ,OACrBxN,EAAEg/B,iBAAmBxxB,EAAEwxB,gBAAoBh/B,EAAEg/B,gBAAkBxxB,EAAEwxB,gBAC7Dh/B,EAAEi/B,eAAiBzxB,EAAEyxB,cAAkBj/B,EAAEi/B,cAAgBzxB,EAAEyxB,cACxD,MAKpB,SAAS4/C,GAA6Bl1D,GAClC,IAAI6D,EAAuB,IAAIhD,IAM/B,OALAb,EAAMG,QAAQ,SAAAI,GACVA,EAAKG,qBAAqBP,QAAQ,SAAAg1D,GAC9BtxD,EAAqB/C,IAAIq0D,OAG1BtxD,EC/fX,IAAMq0C,GAAqC,CACvC6Z,QAAQ,EACR/qC,OAAQ,IClBZ,IAAMkxB,GAAoC,CACtCkd,cAAe,ICmBnB,IAAMC,GAAc3vE,IAAMizC,KAAK,SAACp0C,GAAiB,IACrCwlE,EAAkHxlE,EAAlHwlE,kBAAmB7oD,EAA+F3c,EAA/F2c,UAAW7mB,EAAoFkK,EAApFlK,aAAci7E,EAAsE/wE,EAAtE+wE,wBAAyBC,EAA6ChxE,EAA7CgxE,wBAAyBzvD,EAAoBvhB,EAApBuhB,gBAChGiuC,IAAcjuC,EAAgB+jD,eAC9BpiD,IAAc3B,EAAgB4B,iBAE9By1B,EAAgBz3C,IAAM2xD,QAAQ,WAChC,MAAO,CACH1qD,QAASo9D,EAAkBpyE,IAAI,SAAA66D,GAC3B,MAAO,CACH5yC,GAAI4yC,EAAO5yC,GACXvM,KAAMm/C,EAAOplD,UACb8T,UAAWA,EAAUvpB,IAAI,SAAA6nB,GACrB,IAAMyzC,EAAWT,EAAOwW,YAAYjlD,KAAK,SAAAyxD,GAAK,OAAIA,IAAUh2D,EAAII,KAC1D61D,EAAe1L,EAAkBzpD,KAAK,SAAA0D,GAAC,OAAIA,EAAEglD,YAAYjlD,KAAK,SAAAyxD,GAAK,OAAIA,IAAUh2D,EAAII,OAC3F,MAAO,CACHA,GAAIJ,EAAII,GACRmyC,SAAUvyC,EAAIuyC,SACdkB,WACAC,kBAAmBuiB,EAAeA,EAAa71D,QAAKrlB,EACpDy3D,oBAAqByjB,EAAeA,EAAaroE,eAAY7S,EAC7Du3D,8BAAgCtyC,EAAIS,WAAaT,EAAIS,UAAUvoB,OAAS,UAM7F,CAACqyE,EAAmB7oD,IAEjBs7B,EAAe92C,IAAMuzC,YAAN,eAAAy8B,EAAAx/E,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KACjB,SAAAC,EAA4BkyD,GAA5B,IAAAktB,EAAAC,EAAA,OAAAx/E,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UACU++E,EAA2CltB,EAAW97C,QAAQhV,IAAI,SAAA66D,GACpE,IAAMqjB,EAAa9L,EAAkB5sC,UAAU,SAAAT,GAAC,OAAIA,EAAEtvB,YAAcolD,EAAOn/C,OACrEyiE,EAAUD,GAAc,EAAI9L,EAAkB8L,GAAYj2D,GAAK4yC,EAAO5yC,GAC5E,MAAO,CACHA,GAAIk2D,EACJ1oE,UAAWolD,EAAOn/C,KAClBhZ,aAAcA,EACd2uE,YAAaxW,EAAOtxC,UAAU7c,OAAO,SAAAmb,GAAG,OAAIA,EAAIyzC,WAAUt7D,IAAI,SAAA6nB,GAAG,OAAIA,EAAII,KACzE+hD,YAAamU,EAAU,EAAI,QAG7BF,EAAiB7L,EAAkB1lE,OAAO,SAAAmuD,GAAM,YAA4Dj4D,IAAxDo7E,EAAsBr1D,KAAK,SAAA0D,GAAC,OAAIA,EAAEpE,KAAO4yC,EAAO5yC,OAAmBjoB,IAAI,SAAAqsB,GAAC,OAAIA,EAAEpE,MACrHloB,OAAS,GAbhC,CAAAhB,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EAcc0+E,EAAwBM,GAdtC,cAAAl/E,EAAAE,KAAA,EAgBU2+E,EAAwBI,GAhBlC,wBAAAj/E,EAAAM,SAAAT,MADiB,gBAAAU,GAAA,OAAAy+E,EAAAx+E,MAAAC,KAAAC,YAAA,GAmBjB,CAAC2yE,EAAmB1vE,EAAci7E,EAAyBC,IAG/D,OACIlwE,EAAAhP,EAAAiP,cAACywE,GAAD,CACI54B,cAAeA,EACfZ,SAAUC,EACVuX,YAAaA,EACbtsC,YAAaA,EACbusC,8BAA+BpuC,GAAiC1E,GAChEyE,mCAAoCA,GAAmCzE,GACvEuE,2BAA4BA,GAA2BvE,OAmBpD+yB,mBAff,SAAyB/uC,GACrB,MAAO,CACHgc,UAAWhc,EAAM4c,SAASvC,KAC1BwqD,kBAAmB7kE,EAAMmhB,WAAW0jD,kBACpCjkD,gBAAiB5gB,EAAMmhB,aAI/B,SAA4B7vB,EAAe2oD,GACvC,MAAO,CACHo2B,wBAAyB,SAACxL,GAAD,OAAuBvzE,EzBoBjD,SAAiC88C,EAAmBj5C,EAAsB0vE,GAC7E,sBAAAjf,EAAA50D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAy0D,EAAOv0D,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAu0D,GAAA,cAAAA,EAAAr0D,KAAAq0D,EAAAp0D,MAAA,cAAAo0D,EAAAr0D,KAAA,EAAAq0D,EAAAp0D,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,YAA+D,CAAEimC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAUgmE,KAFjH,cAAA/e,EAAAp0D,KAAA,EAGOJ,EAASw/E,GAAuB1iC,EAAWj5C,IAHlD,OAIC7D,EAASX,EAAgB,yBAA0B,YAJpDm1D,EAAAp0D,KAAA,sBAAAo0D,EAAAr0D,KAAA,EAAAq0D,EAAAlM,GAAAkM,EAAA,SAMCx0D,EAAS0B,EAAyB8yD,EAAAlM,GAAK,uCANxCkM,EAAAlM,GAAA,yBAAAkM,EAAAh0D,SAAA+zD,EAAA,iBAAP,gBAAAnE,GAAA,OAAAkE,EAAA5zD,MAAAC,KAAAC,YAAA,GyBrB6Dm+E,CAAwBp2B,EAAS7L,UAAW6L,EAAS9kD,aAAc0vE,KAC5HuL,wBAAyB,SAACnB,GAAD,OAAc39E,EzBoCxC,SAAiC88C,EAAmBj5C,EAAsB85E,GAC7E,sBAAA3tB,EAAAtwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAmwD,EAAOjwD,GAAP,IAAAy/E,EAAA,OAAA7/E,EAAAC,EAAAI,KAAA,SAAAiwD,GAAA,cAAAA,EAAA/vD,KAAA+vD,EAAA9vD,MAAA,cACGq/E,EAA2B,GACjC9B,EAASh0D,QAAQ,SAAA21D,GACbG,EAASjxD,KAAKqb,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,aAAAqB,OAA+Do6E,GAAW,CAAEx1C,OAAQ,YACtG9pC,EAAS0/E,GAAsBJ,MAJhCpvB,EAAA/vD,KAAA,EAAA+vD,EAAA9vD,KAAA,EAOOgI,QAAQu3E,IAAIF,GAPnB,OAQCz/E,EAASX,EAAgB,2BAA4B,aARtD6wD,EAAA9vD,KAAA,sBAAA8vD,EAAA/vD,KAAA,EAAA+vD,EAAA5H,GAAA4H,EAAA,SAUClwD,EAAS0B,EAAyBwuD,EAAA5H,GAAK,yCAVxC4H,EAAA5H,GAAA,yBAAA4H,EAAA1vD,SAAAyvD,EAAA,iBAAP,gBAAA6E,GAAA,OAAA9E,EAAAtvD,MAAAC,KAAAC,YAAA,GyBrCoDk+E,CAAwBn2B,EAAS7L,UAAW6L,EAAS9kD,aAAc85E,OAI5GlgC,CAA6CohC,+EC7F7Ce,GARQ,SAAC7xE,GACtB,OACEc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,cAC1B1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,2vFCKCizD,GARQ,SAAC9xE,GACtB,OACEc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,cAC1B1nB,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,guDCyERnV,GAASc,aAAa,CACxB0I,QAAS,CACLhG,QAAS,cACTO,WAAY,SACZgC,eAAgB,UAEpBsiE,IAAK,CACD/lE,MAAO,GACP7H,OAAQ,GACR4F,YAAa,EACbgH,aAAc,OAElBihE,UAAW,CACProE,MAAO9D,GAAQC,KAAKE,OAExBF,KAAM,CACF6D,MAAO9D,GAAQC,KAAKU,MAExBkB,OAAQ,CACJiC,MAAO9D,GAAQ6B,OAAOX,SAE1BD,KAAM,CACF6C,MAAO9D,GAAQiB,KAAK,MAExBU,MAAO,CACHmC,MAAO9D,GAAQ2B,MAAM,MAEzByqE,OAAQ,CACJxyB,WAAY55C,GAAQC,KAAKE,OAE7BksE,SAAU,CACNzyB,WAAY55C,GAAQ6B,OAAOX,SAE/BorE,OAAQ,CACJ1yB,WAAY55C,GAAQiB,KAAK,MAE7BsrE,QAAS,CACL3yB,WAAY55C,GAAQ2B,MAAM,MAE9B0J,WAAY,CACRxG,SAAU,MAIHR,QAAWR,GAAXQ,CAzGQ,SAAClK,GAAiB,IAC7BgC,EAAkChC,EAAlCgC,OAD6BqwE,EACKryE,EAA1BsyE,YADqB,IAAAD,KACPjqE,EAAYpI,EAAZoI,QAC1B8I,EAAa,GACbqhE,EAAa,GACbC,OAAsDx8E,EAE1D,OAAQgM,GACJ,KAAKmb,GAAY,aAAcC,GAAgBC,gBAC3CnM,EAAa,cACbqhE,EAAaD,EAAOlqE,EAAQ6pE,OAAS7pE,EAAQtC,KAC7C0sE,EAAOX,GACP,MACJ,KAAK10D,GAAY,aAAcC,GAAgBC,gBAC3CnM,EAAa,cACbqhE,EAAaD,EAAOlqE,EAAQ+pE,OAAS/pE,EAAQtB,KAC7C0rE,EAAOV,GACP,MACJ,KAAK30D,GAAY,mBAAoBC,GAAgBC,gBACjDnM,EAAa,oBACbqhE,EAAaD,EAAOlqE,EAAQ+pE,OAAS/pE,EAAQtB,KAC7C0rE,EAAOV,GACP,MACJ,KAAK30D,GAAY,0BAA2BC,GAAgBC,gBACxDnM,EAAa,YACbqhE,EAAaD,EAAOlqE,EAAQgqE,QAAUhqE,EAAQZ,MAC9CgrE,EAAOC,KACP,MACJ,KAAKt1D,GAAY,WAAYC,GAAgBC,gBACzCnM,EAAa,YACbqhE,EAAaD,EAAOlqE,EAAQ+pE,OAAS/pE,EAAQtB,KAC7C0rE,EAAOV,GACP,MACJ,KAAK30D,GAAY,YAAaC,GAAgBC,gBAC1CnM,EAAa,YACbqhE,EAAaD,EAAOlqE,EAAQgqE,QAAUhqE,EAAQZ,MAC9CgrE,EAAOC,KACP,MACJ,KAAKt1D,GAAY,YAAaC,GAAgBC,gBAC1CnM,EAAa,YACbqhE,EAAaD,EAAOlqE,EAAQgqE,QAAUhqE,EAAQZ,MAC9CgrE,EAAOC,KACP,MACJ,IAAK,iBACDvhE,EAAa,iBAIrB,OAAIohE,EAEIxxE,EAAAhP,EAAAiP,cAAC2xE,GAAA,EAAD,CAAM7rE,MAAOqK,EAAYrI,UAAWkzC,mBAAK3zC,EAAQ4pE,UAAWO,KAI5DzxE,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ8K,SACnBs/D,EAAO1xE,EAAAhP,EAAAiP,cAACyxE,EAAD,CAAM3pE,UAAWkzC,mBAAK3zC,EAAQ2pE,IAAKQ,UAAkBv8E,EAC7D8K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ8I,YAAaA,2BC8CtDxH,GAASc,aAAa,CACxB+D,MAAO,CACHC,gBAAiB3I,GAAQC,KAAKC,QAC9B0I,OAAQ,WAEZkkE,WAAY,CACR9jE,SAAU,IAEd+jE,SAAU,CACNlkE,SAAU,GACV1B,YAAa,EACb1B,aAAc,GAElBunE,aAAc,CACVlpE,MAAO9D,GAAQ+B,IAAIb,SAEvB+rE,WAAY,KAKDC,GA9GM,SAAwB34B,GAA+C,IAClF44B,EADkF,SAAAC,GAEpF,SAAAD,EAAYhzE,GAAuD,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAogF,IAC/Dp5E,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAqhF,GAAA7yE,KAAAvN,KAAMoN,KAOVkzE,YAAc,WACV,IAAMC,EAAUv5E,EAAKoG,MAAMozE,aAC3Bx5E,EAAKoG,MAAMsJ,QAAQ1P,EAAKoG,MAAMgoB,QAAQ3M,IAAMzhB,EAAKoG,MAAMgoB,QAAQmrD,KAVAv5E,EAanEy5E,cAAgB,SAAC7rD,GACbA,EAAM8rD,kBACN,IAAMH,EAAUv5E,EAAKoG,MAAMozE,aAC3Bx5E,EAAKoG,MAAMuzE,UAAY35E,EAAKoG,MAAMuzE,SAAS35E,EAAKoG,MAAMgoB,QAAQ3M,GAAIzhB,EAAKoG,MAAMgoB,QAAQmrD,IAAY,GAAIv5E,EAAKoG,MAAMwzE,UAhBjD55E,EAkBnE65E,YAAc,SAACjsD,GACXA,EAAM8rD,kBACN,IAAMH,EAAUv5E,EAAKoG,MAAMozE,aACrBM,EAAkB95E,EAAKoG,MAAMgoB,QAAQ7L,qBAAqBwW,SAASre,GAAuBoC,0BAChG9c,EAAKoG,MAAM2zE,QAAU/5E,EAAKoG,MAAM2zE,OAAO/5E,EAAKoG,MAAMgoB,QAAQ3M,GAAIzhB,EAAKoG,MAAMgoB,QAAQmrD,IAAY,GAAIv5E,EAAKoG,MAAMwzE,QAASE,IAtBtD95E,EAyBnEwuD,iBAAmB,WACfxuD,EAAK4G,SAAS,CAAE6nD,YAAY,KA1BmCzuD,EA6BnE0uD,iBAAmB,WACf1uD,EAAK4G,SAAS,CAAE6nD,YAAY,KA3B5BzuD,EAAK+G,MAAQ,CACT0nD,YAAY,GAJ+CzuD,EAFiB,OAAAjI,OAAAiiF,EAAA,EAAAjiF,CAAAqhF,EAAAC,GAAAthF,OAAA8H,EAAA,EAAA9H,CAAAqhF,EAAA,EAAAt5E,IAAA,SAAAC,MAAA,WAoC3E,IAAAuO,EACmGtV,KAAKoN,MAArGoI,EADHF,EACGE,QAAgByrE,GADnB3rE,EACY8D,MADZ9D,EACmB2rE,UAAkCL,GADrDtrE,EAC6BkrE,aAD7BlrE,EAC2C4rE,SAD3C5rE,EACqDsrE,SAA+BO,GADpF7rE,EAC8DoB,QAD9DpB,EACuEqrE,SADvE5hF,OAAAgX,GAAA,EAAAhX,CAAAuW,EAAA,0FAEC8rE,EAAaphF,KAAK+N,MAAM0nD,WAC1BvnD,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYE,QAAS1W,KAAKygF,cAAexqE,UAAWT,EAAQyqE,aAAczvE,KAAK,SAC3EtC,EAAAhP,EAAAiP,cAACwvD,GAAAz+D,EAAD,OACY,KACdmiF,EAAiBrhF,KAAK+N,MAAM0nD,WAC9BvnD,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYE,QAAS1W,KAAKygF,cAAexqE,UAAWT,EAAQyqE,aAAczvE,KAAK,SAC3EtC,EAAAhP,EAAAiP,cAACwvD,GAAAz+D,EAAD,CAAYoiF,YAAY,iBACZ,KACdC,EAAevhF,KAAK+N,MAAM0nD,WAC5BvnD,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYO,MAAM,UAAUL,QAAS1W,KAAK6gF,YAAa5qE,UAAWT,EAAQ0qE,WAAY1vE,KAAK,SACvFtC,EAAAhP,EAAAiP,cAACqzE,GAAAtiF,EAAD,CAAcoiF,YAAY,eACd,KAEdG,EAAazhF,KAAK+N,MAAM0nD,WAAajgD,EAAQmG,MAAQ,GAC3D,MACc,SAAVilE,EACI1yE,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CACA1E,aAAc71D,KAAKw1D,iBACnBM,aAAc91D,KAAK01D,iBACnBh/C,QAAS1W,KAAKsgF,YACdrqE,UAAWwrE,GAEXvzE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAYvkD,UAAWT,EAAQwqE,WACrBiB,GAAYI,GAEtBnzE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQwqE,WACpBiB,GAAYM,GAEtBrzE,EAAAhP,EAAAiP,cAACq5C,EAADzoD,OAAAoM,OAAA,GAAeg2E,EAAf,CAAyCF,SAAUA,MAGnD/yE,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CACI1E,aAAc71D,KAAKw1D,iBACnBM,aAAc91D,KAAK01D,iBACnBh/C,QAAS1W,KAAKsgF,YACdrqE,UAAWwrE,GAEfvzE,EAAAhP,EAAAiP,cAACq5C,EAADzoD,OAAAoM,OAAA,GAAeg2E,EAAf,CAAyCF,SAAUA,MACjDjhF,KAAKoN,MAAM8zE,UACThzE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWhjD,QAAQ,OAAOvB,UAAWT,EAAQuqE,aACvCkB,GAAYG,QA9EkDhB,EAAA,CAC1D7xE,IAAMC,eAqFpC,OAAO8I,KAAWR,GAAXQ,CAAmB6d,eAAYirD,KC3DpCtpE,GAASc,aAAa2D,IAEb4kE,MAAa7oE,KAAWR,GAAXQ,CArCR,SAAClK,GAAiB,IAC1BoI,EAAYpI,EAAZoI,QAOR,OACItH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOmN,GAAcO,UAC5B5N,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAS,GAAA1R,OAAKiR,EAAQ0G,KAAb,KAAA3X,OAAqBiR,EAAQgG,YAAckmE,QAAQ,GAAO/iB,GAAevxD,EAAMgoB,QAAQ87B,UAAW9jD,EAAMgoB,QAAQ/G,YAEzIngB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY8jC,QAAQ,GAAOt0E,EAAMgoB,QAAQ88B,aAAe9kD,EAAMgoB,QAAQ88B,YAAYhT,UAAY9xC,EAAMgoB,QAAQ88B,YAAY71B,OAAO,MAAQ,QAE3InuB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQgG,YAflCpO,EAAMgoB,QAAQ+8B,SACH/hB,KACDhjC,EAAMgoB,QAAQ+8B,UAAUprD,MAFH,KAiBhCmH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAaxwC,EAAMgoB,QAAQxL,WAAWrpB,SAE1C2N,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACwzE,GAAD,CAAgBvyE,OAAQhC,EAAMgoB,QAAQ9K,iBAAkBo1D,MAAM,KAEjEtyE,EAAMw0E,aACH1zE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAaxwC,EAAMgoB,QAAQysD,QAAQrhF,IAAI,SAAA69D,GAAI,OAAInwD,EAAAhP,EAAAiP,cAAA,WAAMkwD,sBCH1D8hB,MAAa7oE,KAAWiE,GAAXjE,CA5BO,SAAClK,GAAiB,IAAAqwC,EACxBrwC,EAAjBoI,eADyC,IAAAioC,EAC/B,GAD+BA,EAQjD,OACIvvC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQkG,gBAC1BxN,EAAAhP,EAAAiP,cAACs2C,GAAA,EAAD,CAAY19C,MAAOqG,EAAM00E,WAAYv+B,SAAUn2C,EAAMm2C,UACjDr1C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOh7E,MAAOqG,EAAMgoB,QAAQ3M,GAAIA,GAAIrb,EAAMgoB,QAAQ3M,GAAIxS,UAAWT,EAAQkG,eAAgB3E,MAAM,gBAGvG7I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAS,GAAA1R,OAAKiR,EAAQ5B,KAAb,KAAArP,OAAqBiR,EAAQgG,aAAepO,EAAMgoB,QAAQwlC,WAEnF1sD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAS,GAAA1R,OAAKiR,EAAQ5B,OAhBrCxG,EAAMgoB,QAAQ+8B,SACH/hB,KACDhjC,EAAMgoB,QAAQ+8B,UAAUprD,MAFH,KAkBhCmH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAS,GAAA1R,OAAKiR,EAAQ5B,OAASxG,EAAMgoB,QAAQ88B,aAAe9kD,EAAMgoB,QAAQ88B,YAAYhT,UAAY9xC,EAAMgoB,QAAQ88B,YAAY71B,OAAO,MAAQ,iCCQxJ8jD,MAAa7oE,KAAWiE,GAAXjE,CAlCF,SAAClK,GAAiB,IAAAqwC,EACfrwC,EAAjBoI,eADgC,IAAAioC,EACtB,GADsBA,EAQxC,OACIvvC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACKptD,EAAMgoB,QAAQ48C,eACX9jE,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACAvjB,MAAO,eACP2f,QAASlnB,EAAAhP,EAAAiP,cAAC6zE,GAAA9iF,EAAD,CAAgBkP,MAAO,CAAE6zE,KAAM,cAIhD/zE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAS,GAAA1R,OAAKiR,EAAQ5B,KAAb,KAAArP,OAAqBiR,EAAQgG,aAAepO,EAAMgoB,QAAQwlC,WAEnF1sD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAS,GAAA1R,OAAKiR,EAAQ5B,OAASorD,GAAY5xD,EAAMgoB,QAAQmpB,SAEzErwC,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAS,GAAA1R,OAAKiR,EAAQ5B,OAASxG,EAAMgoB,QAAQymB,QAE7D3tC,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ5B,MAzBlCxG,EAAMgoB,QAAQs7C,mBACHtgC,KACDhjC,EAAMgoB,QAAQs7C,oBAAoB3pE,MAFH,oBCChD+P,GAASc,aAAa,CACxBsqE,YAAa,CACT1qE,QAAS,YAEb8G,WAAY,CACRxG,SAAU,UAIZqqE,GAAYxqE,aAAWb,IA2B7B,IA8BeqpE,MA9Be,SAAC/yE,GAC3B,IAAMoI,EAAU2sE,GAAU/0E,GACpBzJ,EAAayJ,EAAMgoB,SAAWhoB,EAAMgoB,QAAQ3M,GAAKrb,EAAMgoB,QAAQ3M,GAAK,GACpE3M,EAAQ/c,OAAA0G,EAAA,EAAA1G,CAAA,GAAQwc,GAAcO,SAAahF,GAAOorE,aACxD,OACIh0E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,aAC1Bh0E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KACI1vC,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUniC,SAAUvU,EAAM6zE,SAAUl6E,MAAOqG,EAAMgoB,QAAQ3M,GAAIA,GAAIrb,EAAMgoB,QAAQ3M,GAAI1R,MAAM,YAAYgtC,QAAS32C,EAAMgoB,QAAQ2uB,QAASR,SAAUn2C,EAAMg1E,kBAG7Jl0E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0N,EAAUpF,QAAS,kBAAMtJ,EAAMi1E,gBAAgB1+E,KAC7DuK,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY8jC,QAAQ,GArCpC,SAAwBr5D,GAEpB,GADuBA,EAAIuyC,SAASr6D,QACd,GAClB,OAAO8nB,EAAIuyC,SAEX,IAAI1J,EACA7iC,EACEywC,EAAkBz2C,EAAI6oC,UAAU3wD,OAChCw+D,EAAiB12C,EAAIgG,SAAS9tB,OAapC,OAZIw+D,GAAkB,IAClB1wC,EAAWhG,EAAIgG,SAEf6iC,EAAY4N,EAAkB,GAAKz2C,EAAI6oC,UAAUrnD,UAAU,EAAG,GAAKk1D,GAAkB,MAAQ12C,EAAI6oC,WAC1F4N,GAAmB,IAC1B5N,EAAY7oC,EAAI6oC,UAEhB7iC,EAAW0wC,EAAiB,GAAK12C,EAAIgG,SAASxkB,UAAU,EAAG,GAAKi1D,GAAmB,MAAQz2C,EAAIgG,WAE/F6iC,EAAY4N,EAAkB,GAAKz2C,EAAI6oC,UAAUrnD,UAAU,EAAG,IAAM,MAAQwe,EAAI6oC,UAChF7iC,EAAW0wC,EAAiB,GAAK12C,EAAIgG,SAASxkB,UAAU,EAAG,IAAM,MAAQwe,EAAIgG,UAE1E6iC,EAAY,IAAM7iC,EAgBUswC,CAAevxD,EAAMgoB,WAEpDlnB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,aAC1Bh0E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY8jC,QAAM,GAAEt0E,EAAMgoB,QAAQymB,QAEtC3tC,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,aAC1Bh0E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAaxwC,EAAMgoB,QAAQktD,eAE/Bp0E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,aAC1Bh0E,EAAAhP,EAAAiP,cAACwzE,GAAD,CAAgBvyE,OAAQhC,EAAMgoB,QAAQwX,iBAAkB8yC,MAAM,EAAOlqE,QAAS,CAC1E8I,WAAY9I,EAAQ8I,eAG5BpQ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,iBC9DpCprE,GAASc,aAAa,CACxBsqE,YAAa,CACT1qE,QAAS,YAEb8G,WAAY,CACRxG,SAAU,UAIZqqE,GAAYxqE,aAAWb,IA2B7B,ICSIo6C,GACA7iC,GDYW8xD,MAtBe,SAAC/yE,GAC3B,IAAMoI,EAAU2sE,GAAU/0E,GACpBzJ,EAAayJ,EAAMgoB,SAAWhoB,EAAMgoB,QAAQ3M,GAAKrb,EAAMgoB,QAAQ3M,GAAK,GACpE3M,EAAQ/c,OAAA0G,EAAA,EAAA1G,CAAA,GAAQwc,GAAcO,SAAahF,GAAOorE,aACxD,OACIh0E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,cAE9Bh0E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0N,EAAUpF,QAAS,kBAAMtJ,EAAMi1E,gBAAgB1+E,KAC7DuK,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY8jC,QAAQ,GAlCpC,SAAwBr5D,GAEpB,GADuBA,EAAIuyC,SAASr6D,QACd,GAClB,OAAO8nB,EAAIuyC,SAEX,IAAI1J,EACA7iC,EACEywC,EAAkBz2C,EAAI6oC,UAAU3wD,OAChCw+D,EAAiB12C,EAAIgG,SAAS9tB,OAapC,OAZIw+D,GAAkB,IAClB1wC,EAAWhG,EAAIgG,SAEf6iC,EAAY4N,EAAkB,GAAKz2C,EAAI6oC,UAAUrnD,UAAU,EAAG,GAAKk1D,GAAkB,MAAQ12C,EAAI6oC,WAC1F4N,GAAmB,IAC1B5N,EAAY7oC,EAAI6oC,UAEhB7iC,EAAW0wC,EAAiB,GAAK12C,EAAIgG,SAASxkB,UAAU,EAAG,GAAKi1D,GAAmB,MAAQz2C,EAAIgG,WAE/F6iC,EAAY4N,EAAkB,GAAKz2C,EAAI6oC,UAAUrnD,UAAU,EAAG,IAAM,MAAQwe,EAAI6oC,UAChF7iC,EAAW0wC,EAAiB,GAAK12C,EAAIgG,SAASxkB,UAAU,EAAG,IAAM,MAAQwe,EAAIgG,UAE1E6iC,EAAY,IAAM7iC,EAaUswC,CAAevxD,EAAMgoB,WAEpDlnB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,aAC1Bh0E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY8jC,QAAM,GAAEt0E,EAAMgoB,QAAQymB,QAEtC3tC,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,aAC1Bh0E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAaxwC,EAAMgoB,QAAQktD,eAE/Bp0E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0sE,iBEtC3B/B,MAAa7oE,KAAWiE,GAAXjE,CAlBE,SAAClK,GACOA,EAA1BoI,QADoC,IACtB4f,EAAYhoB,EAAZgoB,QACtB,OACIlnB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAWtsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAaxoB,EAAQmtD,UAChCr0E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAWtsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAaxoB,EAAQoQ,cAChCt3B,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAWtsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAaxoB,EAAQotD,eAChCt0E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAWtsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAaxoB,EAAQqtD,yBCwBtC3rE,GAAiD,CACnDsmD,gBAAiB,CACb3lD,WAAY,SAILirE,GAnCM,SAACt1E,GAClB,OACIc,EAAAhP,EAAAiP,cAACsuC,GAAD,CACIhnC,MAAK,UAAAlR,OAAY6I,EAAMu1E,aAAlB,KACLhjF,KAAMyN,EAAMzN,KACZ+V,QAAStI,EAAMs4C,UAEfx3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,iBACazvC,EAAAhP,EAAAiP,cAAA,cAASf,EAAM8O,MAD5B,gBACwD9O,EAAMw1E,YAD9D,KAGA10E,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,CAAmBvvC,MAAO0I,GAAOsmD,iBAAjC,2BAEJlvD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,YACH/R,QAAStJ,EAAM+4C,OACfpvC,MAAM,WAHV,UAKY3J,EAAMu1E,iBCgC5BE,eAEF,SAAAA,EAAYz1E,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA6iF,IACtB77E,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA8jF,GAAAt1E,KAAAvN,KAAMoN,KAcV01E,aAAehiE,aAAW,SAACsU,EAAgB2tD,GACvC,IAAIC,EAAgB5tD,EAAQ9rB,QACtB25E,EAAYF,EAAqB55D,KAAK,SAAA+5D,GAAG,OAAsB,IAAlBA,EAAIC,YAKvD,OAJIF,GACAD,EAAc12E,KAAKiqB,GAAc0sD,EAAUx6D,GAA4B,SAAxBw6D,EAAUE,YAGtDH,IAtBeh8E,EA4B1Bo8E,WAAa,SAACt8E,EAAasuB,GACvB,IAAMiuD,EAAmBr8E,EAAKoG,MAAM21E,sBAAwB,GAC5D/7E,EAAK4G,SAAS,SAAAmpD,GACV,IAAIusB,EAAgBvsB,EAAUgsB,qBAC1BM,EAAiB9iF,OAASw2D,EAAUgsB,qBAAqBxiF,SAAQ+iF,EAAgBD,GACrF,IAAME,EAAkBD,EAAch6E,QAChCk6E,EAAmBpuD,EAezB,OAdAmuD,EAAgBv6D,QAAQ,SAAAk6D,GAChBA,EAAIz6D,KAAO3hB,GACW,IAAlBo8E,EAAIC,WAAyC,SAAlBD,EAAIC,WAC/BD,EAAIC,UAAY,MAChBK,EAAiBl3E,KAAKiqB,GAAczvB,GAAK,KAChB,QAAlBo8E,EAAIC,YACXD,EAAIC,UAAY,OAChBK,EAAiBl3E,KAAKiqB,GAAczvB,GAAK,KAG7Co8E,EAAIC,WAAY,IAIjBpkF,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEI0sB,aAAcF,EACdP,cAAeQ,OApDDx8E,EAyD1BqvD,iBAAmB,SAACqtB,EAAaC,GAC7B38E,EAAK4G,SAAS,SAAAmpD,GAAS,OAAAh4D,OAAA0G,EAAA,EAAA1G,CAAA,GAChBg4D,EADgB,CAEnB6sB,WAAW7kF,OAAA0G,EAAA,EAAA1G,CAAA,GACJg4D,EAAU6sB,WADP,CAEND,cA9Dc38E,EAmE1B68E,oBAAsB,SAACjvD,GACnB,IAAMkvD,EAAclvD,EAAM20B,OAAOxiD,MACjCC,EAAK4G,SAAS,SAAAmpD,GAAS,OAAAh4D,OAAA0G,EAAA,EAAA1G,CAAA,GAChBg4D,EADgB,CAEnB6sB,WAAW7kF,OAAA0G,EAAA,EAAA1G,CAAA,GACJg4D,EAAU6sB,WADP,CAENpzE,KAAMszE,EACNH,KAAM,SA1EQ38E,EA+E1B+8E,sBAAwB,WACpB/8E,EAAK+G,MAAMi2E,YAAch9E,EAAKoG,MAAMuzE,SAAS35E,EAAK+G,MAAMi2E,WAAYh9E,EAAK+G,MAAM40E,cAAgB,IAC/F37E,EAAKi9E,yBAjFiBj9E,EAoF1Bi9E,sBAAwB,WACpBj9E,EAAK4G,SAAS,CAAE6uD,kBAAkB,EAAOunB,gBAAY5gF,EAAWu/E,kBAAcv/E,EAAW8gF,kBAAc9gF,KArFjF4D,EAwF1Bm9E,mBAAqB,SAAC17D,EAAYvM,EAAc0b,GAC5C5wB,EAAK4G,SAAS,CAAE6uD,kBAAkB,EAAMunB,WAAYv7D,EAAIk6D,aAAczmE,EAAMgoE,aAActsD,KAzFpE5wB,EA6F1Bo9E,YAAc,SAACxD,EAAiBxrD,EAAc3M,EAAY47D,GACtD,MAAgB,WAAZzD,EAEI1yE,EAAAhP,EAAAiP,cAACm2E,GAAD,CACIx9E,IAAK2hB,EACL2M,QAASA,EACTorD,aAAa,WACb9pE,QAAS1P,EAAKoG,MAAMm3E,eACpB5D,SAAU0D,EAAa,aAAYr9E,EAAKm9E,mBACxCvC,aAAwC,IAA3B56E,EAAKoG,MAAMw0E,YACxBhB,QAAQ,WAEG,mBAAZA,EAEH1yE,EAAAhP,EAAAiP,cAACq2E,GAAD,CACI19E,IAAK2hB,EACL2M,QAASA,EACTorD,aAAa,WACb9pE,QAAS1P,EAAKoG,MAAMm3E,eACpB5D,SAAU35E,EAAKm9E,mBACfvD,QAAQ,iBACRM,SAAUl6E,EAAKoG,MAAM6zE,WAGV,4BAAZL,EAEH1yE,EAAAhP,EAAAiP,cAACs2E,GAAD,CACI39E,IAAK2hB,EACL2M,QAASA,EACTorD,aAAa,WACb9pE,QAAS1P,EAAKoG,MAAMm3E,eACpB3D,QAAQ,0BACRM,UAAU,EACVY,WAAY96E,EAAKoG,MAAMs3E,gCACvBnhC,SAAU,SAAC3uB,GACP5tB,EAAKoG,MAAMm3E,eAAe3vD,EAAM20B,OAAOxiD,UAIhC,gBAAZ65E,EAEH1yE,EAAAhP,EAAAiP,cAACw2E,GAAD,CACI79E,IAAK2hB,EACL2M,QAASA,EACTorD,aAAa,WACb4B,cAAep7E,EAAKoG,MAAMw3E,mBAC1BluE,QAAS1P,EAAKoG,MAAMm3E,eACpBlC,gBAAiBr7E,EAAKoG,MAAMy3E,sBAC5BjE,QAAQ,cACRK,UAAkC,IAAxBj6E,EAAKoG,MAAM6zE,SACrBC,UAAQ,IAGG,eAAZN,EAEH1yE,EAAAhP,EAAAiP,cAAC22E,GAAD,CACIh+E,IAAK2hB,EACL2M,QAASA,EACTorD,aAAa,WACb4B,cAAep7E,EAAKoG,MAAMw3E,mBAC1BluE,QAAS1P,EAAKoG,MAAMm3E,eACpBlC,gBAAiBr7E,EAAKoG,MAAMy3E,sBAC5BjE,QAAQ,aACRK,UAAU,EACVC,UAAQ,IAGG,gBAAZN,EAEH1yE,EAAAhP,EAAAiP,cAAC42E,GAAD,CACIj+E,IAAK2hB,EACL2M,QAASA,EACTorD,aAAa,WACbI,QAAQ,cACRK,UAAU,EACVC,UAAQ,SAIf,GA5KiBl6E,EA+K1Bg+E,aAAelkE,aAAW,SAAC8/D,GACvB,MAAgB,mBAAZA,EAAqC,wBACpB,WAAZA,EAA6B,mBAC1B,KA/KZ55E,EAAK+G,MAAQ,CACT61E,WAAY,CACRD,KAAM,EACNnzE,KAAM,IAEVisD,kBAAkB,EAClBwoB,eAAe,EACflC,qBAAsB31E,EAAM21E,sBAAwB,GACpDC,cAAe51E,EAAMgoB,QAAQ9rB,SAXXtC,wEAqLjB,IAAAQ,EAAAxH,KAAA88D,EACgC98D,KAAK+N,MAAlC40E,EADH7lB,EACG6lB,aAAciB,EADjB9mB,EACiB8mB,WACdD,EAAeC,EAAfD,KAAMnzE,EAASozE,EAATpzE,KACRuyE,EAAuB/iF,KAAKoN,MAAM21E,sBAAwB/iF,KAAK+N,MAAMg1E,qBACvEmC,EAAa,CAAC,GAAI,IAChBC,EAAWnlF,KAAKgjF,cALjBoC,EAMwBplF,KAAKoN,MAA1B6zE,gBANH,IAAAmE,KAQDplF,KAAK+N,MAAMm2E,eACqB,WAA5BlkF,KAAK+N,MAAMm2E,aACXgB,EAAa,CAAC,WAAY,uCACS,mBAA5BllF,KAAK+N,MAAMm2E,eAClBgB,EAAa,CAAC,gBAAiB,0FAIvC,IAAMF,EAAehlF,KAAKglF,aAAahlF,KAAKoN,MAAMwzE,SAC5C6C,EAAezjF,KAAKoN,MAAMq2E,cAAgB,GAC1C4B,EAAe74E,QAAQxM,KAAKoN,MAAMk4E,YAAkC,IAApBH,EAAS5kF,QAC/D,OACI2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyuE,UACfr3E,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAO7iD,QAAQ,WACXtJ,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,MACMv6D,KAAKoN,MAAMo4E,iBACTt3E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAO2uE,aACnBxE,IAAajhF,KAAKoN,MAAMs4E,eACtBx3E,EAAAhP,EAAAiP,cAACw3E,GAAA,EAAD,CACIn1E,KAAK,QACLuG,MAAM,YACNL,QAAS1W,KAAKoN,MAAMw4E,UAEpB13E,EAAAhP,EAAAiP,cAACmnB,GAAA,EAAD,CAASC,UAAW,YAAa9f,MAAOuvE,GAAc92E,EAAAhP,EAAAiP,cAAC0vD,GAAA3+D,EAAD,CAASkP,MAAO0I,GAAO+uE,eAM5F7lF,KAAK+N,MAAMg1E,qBAAqBxiF,OAAS,EACtCwiF,EAAqBviF,IAAI,SAAAyY,GACrB,MAAqB,cAAdA,EAAOwP,GACVva,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUniC,SAAUs/D,EAAU19B,SAAU/7C,EAAK4F,MAAM04E,mBAErD53E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOivE,KAAMj/E,IAAKmS,EAAOwP,GAAI/R,QAAS,kBAAMlP,EAAK47E,WAAWnqE,EAAOwP,GAAI08D,IAAWa,cAAe/sE,EAAOkqE,YACnG,IAApBlqE,EAAOgtE,SACJ/3E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,YAAMD,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACFvjB,MAAOwD,EAAOitE,aAAe,GAC7B9wD,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,UAGjC5Q,EAAAhP,EAAAiP,cAACg4E,GAAA,EAAD,CACIjP,QAA6B,IAArBj+D,EAAOkqE,UACfA,WAAgC,IAArBlqE,EAAOkqE,eAAsB//E,EAAY6V,EAAOkqE,WAE1DlqE,EAAOhF,QAKhB/F,EAAAhP,EAAAiP,cAACg4E,GAAA,EAAD,CACIjP,QAA6B,IAArBj+D,EAAOkqE,UACfA,WAAgC,IAArBlqE,EAAOkqE,eAAsB//E,EAAY6V,EAAOkqE,WAE1DlqE,EAAOhF,UAM5BjU,KAAKoN,MAAMq2E,aAAezjF,KAAKoN,MAAMq2E,aAAajjF,IAAI,SAAAyY,GAAM,OAAK/K,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOivE,KAAMj/E,IAAKmS,GAASA,KAAwB/K,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MAEzIx6D,KAAKoN,MAAMo4E,iBAAmBt3E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,QAGvCtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACK0qB,EAAS77E,MAAMq6E,EAAOnzE,EAAMmzE,EAAOnzE,EAAOA,GAAMhQ,IAAI,SAAC40B,EAAc3M,GAChE,OAAOjhB,EAAK48E,YAAY58E,EAAK4F,MAAMwzE,QAASxrD,EAAS3M,EAAIw4D,KAG5DoE,GACGn3E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOsvE,OAAQC,QAASrmF,KAAK+N,MAAMg1E,qBAAqBxiF,OAAS,EAAIP,KAAK+N,MAAMg1E,qBAAqBxiF,OAAS,EAAIkjF,EAAaljF,OAAS,EAAG+lF,MAAM,UAC/JtmF,KAAKoN,MAAMm5E,oBAAsBvmF,KAAKoN,MAAMm5E,oBAAsBr4E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY0oC,MAAM,UAAlB,0BAMrFtmF,KAAKoN,MAAMo5E,YACTt4E,EAAAhP,EAAAiP,cAACs4E,GAAA,EAAD,CACIliC,UAAU,MACVhxB,MAAOvzB,KAAKoN,MAAMgoB,QAAQ70B,OAC1BojF,KAAM3jF,KAAK+N,MAAM61E,WAAWD,KAC5BG,YAAa9jF,KAAK+N,MAAM61E,WAAWpzE,KACnCk2E,aAAc1mF,KAAKq2D,iBACnBswB,oBAAqB3mF,KAAK6jF,uBAItC31E,EAAAhP,EAAAiP,cAACy4E,GAAD,CACI1qE,KAAMymE,GAAgB,GACtBA,aAAcuC,EAAW,GACzBtC,YAAasC,EAAW,GACxBvlF,KAAMK,KAAK+N,MAAM0uD,iBACjB/W,SAAU1lD,KAAKikF,sBACf99B,OAAQnmD,KAAK+jF,+DAxQzB,OAAO/jF,KAAK8iF,aAAa9iF,KAAKoN,MAAMgoB,QAASp1B,KAAK+N,MAAMg1E,6BA3BpCx0E,IAAMC,eA0S5BsI,GAAiD,CACnD+uE,UAAW,CACP5D,KAAM,SAEV4E,SAAU,CACNnzE,OAAQ,OACR+D,WAAY,IAEhB2uE,OAAQ,CACJ1yE,OAAQ,OACR+D,WAAY,IAEhBguE,WAAY,CACRrsE,MAAO,GACP3B,WAAY,GACZL,cAAe,GACfsB,aAAc,GACd0B,YAAa,IAEjB2rE,KAAM,CACFe,WAAY,UAEhBvuE,WAAY,CACRlK,UAAW,UAEfyQ,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACRwN,cAAe,UAEnBwmE,SAAU,CACNwB,UAAW,QAEfhyE,QAAS,CACL+C,SAAU,GACV+B,cAAe,EACf9C,MAAO9D,GAAQ6B,OAAOX,UAIf0uE,MChVT/rE,GAASc,aAAa,CACxB21C,YAAa,CACTl/C,UAAW,SAEf24E,UAAW,CACPntE,aAAc,IAElBZ,OAAQ,CACJvB,WAAY,SACZI,SAAU,GACVC,WAAY,KAEhBkvE,UAAW,CACPlwE,MAAO9D,GAAQC,KAAKU,MAExBszE,aAAc,CACV9sE,YAAa,IAEjBmZ,MAAO,CACHxc,MAAO9D,GAAQC,KAAKM,MACpBsE,SAAU,WAEdqvE,UAAW,CACP1vE,WAAY,GACZL,cAAe,GACfsB,aAAc,GACd0B,YAAa,MAIN9C,gBAAWR,GAAXQ,CAtFK,SAAClK,GAAiB,IAE9BoI,EASApI,EATAoI,QACAC,EAQArI,EARAqI,MACA2xE,EAOAh6E,EAPAg6E,OACAC,EAMAj6E,EANAi6E,kBAL8BC,EAW9Bl6E,EALAm6E,4BAN8B,IAAAD,KAO9BE,EAIAp6E,EAJAo6E,oBACAC,EAGAr6E,EAHAq6E,kBACAC,EAEAt6E,EAFAs6E,iBACAC,EACAv6E,EADAu6E,iBAEJ,OAAOC,EAAA,qBAAK3xE,UAAWT,EAAQ2xE,WAC3BS,EAAA,cAACzuD,GAAA,EAAD,CAAMjjB,WAAS,GACX0xE,EAAA,cAACzuD,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB47B,EAAA,cAACzuD,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB47B,EAAA,cAAChqC,GAAA,EAAD,CAAY7mC,MAAM,cAAcd,UAAWT,EAAQyD,QAC9CxD,IAITmyE,EAAA,cAACzuD,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IAClBo7B,EACGQ,EAAA,cAAChqC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYqX,UAAWT,EAAQyxE,WAAYG,EAAO5mF,IAAI,SAAC+yB,EAAOs0D,GAAR,OAAgBD,EAAA,cAACA,EAAA,SAAD,CAAgB9gF,IAAK+gF,GAC3GD,EAAA,mBAAG3xE,UAAWT,EAAQ+d,OAAQA,EAAM6Q,QADkD,IACrC7Q,EAAMqE,KAAMwvD,EAAO7mF,OAAS,GAAKsnF,IAAST,EAAO7mF,OAAO,EAAK,UAAO6C,WAEvHA,GAEVwkF,EAAA,cAACzuD,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IAClB27B,QAAsCvkF,IAG/CwkF,EAAA,cAACzuD,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB47B,EAAA,cAACzuD,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GAAI/1C,UAAWT,EAAQ+3C,kBACpBnqD,IAAtBikF,EACAO,EAAA,cAACjrC,GAAA,EAAD,CACIh7B,UAAW4lE,EACXxwE,MAAM,YACNnY,QAAQ,YACR8X,QAAS8wE,EACTvxE,UAAWT,EAAQwxE,WAEtBS,EAAoBG,EAAA,cAAAA,EAAA,cAAGH,EAAH,aAAiCrkF,EAAWikF,QAEjEjkF,GAEJwkF,EAAA,cAACzuD,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GAAI/1C,UAAWT,EAAQ+3C,aAC1Cm6B,QAAsCtkF,KAIlDwkF,EAAA,sBAAM3xE,UAAWT,EAAQ+3C,uCJb3Bu6B,GAAoBjqC,GAAS,0BAC7BkqC,GAAmBlqC,GAAS,yBAC5BmqC,GAAsBnqC,GAAS,4BAC/BkH,GAAgBlH,GAAS,6BAGzBmH,GAAoB7G,GAAe,KAKnCslC,GAAe,CAAC,gBAAiB,SAAU,iBAE3CwE,GAAc,aAgKdnxE,GAAwC/X,OAAA0G,EAAA,EAAA1G,CAAA,GACvCmpF,GADuC,CAE1CC,qBAAsB,CAClBpxE,MAAO9D,GAAQC,KAAKY,SACpBgE,SAAU,WACVC,WAAY,IACZyE,WAAY,aAEhB4hD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEfyQ,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACPC,WAAY,QAEhB3E,KAAM,CACFmH,OAAQ,WAEZusE,iBAAkB,CACd72E,OAAQ,OACRwF,MAAO9D,GAAQC,KAAKU,KACpB8D,WAAY,SACZI,SAAU,OACVyE,cAAe,SACfC,WAAY,OACZnO,UAAW,SACX4J,OAAQ,QAEZowE,cAAe,CACXlxE,YAAa,GAEjBuC,MAAO,CACHxC,UAAW,EACXM,QAAS,aAEb8wE,YAAa,CACT50E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BqzE,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,OACP+E,aAAc,EACd7D,QAAS,eACTpD,UAAW,GACXwiB,UAAW,KAEfjkB,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,WAExB60E,QAAS,CACLC,QAAS,GACTl3E,OAAQ,GACR6H,MAAO,IAEXsvE,YAAa,CACTpuE,QAAS,OACTO,WAAY,UAEhB8tE,YAAa,CACTzxE,UAAW,KAMJ2lC,gBACXsI,aAAoC,CAAEF,KAtRjB,oBAuRrB3tC,aAAWR,IAFA+lC,CAnOoB,SAACzvC,GAAiB,IAAAqwC,EACxBrwC,EAAjBoI,eADyC,IAAAioC,EAC/B,GAD+BA,EAEjD,OACIvvC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,wBAAwBI,QAAQ,gDACzF3H,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAClBn3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAeL,UAAWT,EAAQyvC,MAC9B/2C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,YACLqoC,UAAWnD,GACXntC,MAAM,aACNsxC,WAAS,EACTC,SAAUsiC,GACVjqC,UAAQ,EACRj/C,QAAQ,WACR6mD,WAAS,EACTlC,SAAU,SAACx8C,GACPmqD,GAAYnqD,EAAMwiD,OAAOxiD,MACzBqG,EAAMw7E,gBAAgB13B,GAAW7iC,QAI7CngB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLqoC,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACTC,SAAUuiC,GACVlqC,UAAQ,EACRj/C,QAAQ,WACR2kD,SAAU,SAACx8C,GACPsnB,GAAWtnB,EAAMwiD,OAAOxiD,MACxBqG,EAAMw7E,gBAAgB13B,GAAW7iC,QAI7CngB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,QACLqoC,UAAWnD,GACXntC,MAAM,eACNsxC,WAAS,EACTC,SAAUwiC,GACVppF,QAAQ,WACRi/C,UAAQ,EACRxhB,OAAQ2iC,GACR7S,UAAWtxB,GACXuoB,YAAY,yBAGpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,QACLqoC,UAAWnD,GACXntC,MAAM,gBACNsxC,WAAS,EACTC,SAAU,CAAC3J,GAAOkJ,GAAeC,IACjCnH,UAAQ,EACRj/C,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,QACLqoC,UAAWnD,GACXntC,MAAM,mBACNsxC,WAAS,EACT3mD,QAAQ,eAIpBsP,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO6xE,YACd9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUniC,SAAUvU,EAAMy7E,mBAAoB9kC,QAAS32C,EAAM4kE,cAAezuB,SAAUn2C,EAAM07E,uBACrG70E,MACI/F,EAAAhP,EAAAiP,cAAA,KAAG8H,UAAWT,EAAQuF,YAClB7M,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO4xE,aAApB,+BAGAx6E,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MA9Fb,0DA+Fa2f,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,gBAMvC/L,EAAM27E,yBACH76E,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO6xE,YACd9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAAS32C,EAAM47E,2BAA4BzlC,SAAUn2C,EAAM67E,+BAC9Eh1E,MACI/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO4xE,aAApB,sLAKZx6E,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUniC,SAAUvU,EAAM87E,6BAA8BnlC,QAAS32C,EAAM+7E,+BAAgC5lC,SAAUn2C,EAAMg8E,4BAChIn1E,MACI/F,EAAAhP,EAAAiP,cAAA,KAAG8H,UAAWT,EAAQuF,YAClB7M,EAAAhP,EAAAiP,cAAA,6DAAsDf,EAAM2T,QAAQ7E,MACpEhO,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAvHR,kHAwHQ2f,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,cAKpC3D,QAAS,CACLijD,KAAMjjD,EAAQ6yE,iBAGrBj7E,EAAMi8E,qBAAuBj8E,EAAM87E,8BAAgC97E,EAAM+7E,gCACtEj7E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM2c,UAAUxpB,OAAS,EACtB2N,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ8yE,aACpBp6E,EAAAhP,EAAAiP,cAACm7E,GAAD,CACI1D,SAAUqC,GACVtH,SAAUsH,GACVxE,aAAcA,GACdruD,QAAShoB,EAAM2c,UACfw6D,eAAgBn3E,EAAMm8E,+BACtB3I,QAAQ,0BACR8E,eAAe,EACfc,YAAY,EACZ9B,gCAAiCt3E,EAAMs3E,iCAAmCt3E,EAAM2c,UAAU,GAAGtB,MAIrGva,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAWT,EAAQkE,OACtBxL,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ4yE,kBAAxB,kDACmDl6E,EAAAhP,EAAAiP,cAAA,WADnD,8CAE+CD,EAAAhP,EAAAiP,cAACq7E,GAAA,EAAD,CAAM9yE,QAAStJ,EAAMq8E,kBAAkBv7E,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQd,MAAzB,cAFtF,QAQpBxG,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UACA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,uBAAuBmP,KAAK,SAASjW,SAAUvU,EAAMw4C,SAAYx4C,EAAMi8E,oBAAiD,IAA3Bj8E,EAAM2c,UAAUxpB,OAAewW,MAAM,WAA7I,mBKlKlB2yE,eAGF,SAAAA,EAAYt8E,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA0pF,IACtB1iF,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA2qF,GAAAn8E,KAAAvN,KAAMoN,KAHV+jB,gBAAiB,EAESnqB,EAD1By8E,aAAyB,GACCz8E,EAsB1B2iF,2BAA6B,SAAClhE,GAC1BzhB,EAAK4G,SAAS,CAAEq3E,eAAe,IAC/Bj+E,EAAK4iF,YACL,IACI1tE,EADUlV,EAAKoG,MAAMy8E,SAAS1gE,KAAK,SAAAoc,GAAC,OAAIA,EAAE9c,KAAOA,IACjCmyC,UAAY,kBAChC5zD,EAAKoG,MAAM08E,qBAAqBrhE,EAAIvM,GAAMhV,KAAKF,EAAK+iF,WAAY/iF,EAAK+iF,aA3B/C/iF,EA8B1BgjF,wBAA0B,SAAC14B,GACvBtqD,EAAK4iF,YACL,IACI,IAAMl6D,EAA0B,CAC5BwhC,UAAWI,EAAWJ,UACtB7iC,SAAUijC,EAAWjjC,SACrBwtB,MAAOyV,EAAWzV,MAClB0C,MAAO+S,EAAW/S,MAClB9oC,MAAO67C,EAAW77C,MAClBgT,GAAI,GACJ9kB,WAAY2tD,EAAW3tD,WACvBquE,cAAehrE,EAAK+G,MAAMikE,cAC1BriD,sBAAuB3oB,EAAK+G,MAAMi7E,2BAClCtY,mBAAoBnmD,GAAY,UAAWC,GAAgBwjB,mBAE/DhnC,EAAKoG,MAAM68E,kBAAkBv6D,GAASxoB,KAAKF,EAAK+iF,WAAY/iF,EAAK+iF,YAErE,MAAAzoF,GACI0F,EAAK+iF,eAhDa/iF,EAoD1BkjF,aAAe,SAACzhE,GACZzhB,EAAK2iF,2BAA2BlhE,IArDVzhB,EAwD1BmjF,iBAAmB,WACfnjF,EAAK4G,SAAS,CAAEq3E,eAAe,EAAMoE,oBAAoB,EAAO3E,qCAAiCthF,KAzD3E4D,EA4D1BojF,gBAAkB,WACdpjF,EAAK4G,SAAS,CAAEq3E,eAAe,EAAO+D,4BAA4B,EAAOG,gCAAgC,EAAOzE,qCAAiCthF,EAAW8lF,8BAA8B,KA7DpKliF,EAgE1Bq+C,aAAe,SAACxV,GACZA,EAAOlsC,WAAaqD,EAAK+G,MAAMo7E,+BAAiCniF,EAAK+G,MAAM22E,qCAAkCthF,EAC7G4D,EAAKgjF,wBAAwBn6C,GAC7B7oC,EAAKojF,mBAnEiBpjF,EAsE1Bu9E,eAAiB,aAtESv9E,EAwE1BqjF,qBAAuB,SAAC3/E,EAAY3D,GAChCC,EAAK4G,SAAS,CAAEy7E,mBAAoBtiF,IACpCC,EAAK4G,SAAS,CAAEu7E,+BAAgCpiF,EAAO29E,gCAAkC39E,GAAiD,IAAxCC,EAAK+G,MAAMu8E,kBAAkB/pF,OAA2ByG,EAAK+G,MAAMu8E,kBAAkB,GAAG7hE,QAA5CrlB,KA1ExH4D,EA6E1BujF,+BAAiC,SAAC7/E,EAAY3D,GAC1CC,EAAK4G,SAAS,CAAEo7E,2BAA4BjiF,KA9EtBC,EAiF1BwjF,8BAAgC,SAACt5B,EAAmB7iC,GAChD,IAAM1M,OAAyBve,IAAd8tD,GAAgD,KAArBA,EAAU5lD,aAA8BlI,IAAbirB,GAA8C,KAApBA,EAAS/iB,OACpGm/E,EAAU9oE,EAA2M,GAAhM3a,EAAKoG,MAAM2c,UAAU7c,OAAO,SAAAyJ,GAAC,OAAKA,EAAEu6C,WAAav6C,EAAEu6C,UAAUxtD,gBAAkBwtD,EAAU5lD,OAAO5H,eAAmBiT,EAAE0X,UAAY1X,EAAE0X,SAAS3qB,gBAAkB2qB,EAAS/iB,OAAO5H,gBACnMgnF,EAAW1jF,EAAK2jF,iCAAiCF,EAAQzjF,EAAKoG,MAAMy8E,UACpE9lC,GAAUpiC,GAAmB3a,EAAK+G,MAAMo7E,+BAC9CniF,EAAK4G,SAAS,CAAEs7E,6BAA8BvnE,EAAUwnE,+BAAgCplC,EAASumC,kBAAmBI,EAAUhG,gCAAiCgG,EAASnqF,OAAS,EAAIkqF,EAAO,GAAGhiE,QAAKrlB,KAtF9K4D,EAyF1B2jF,iCAAmC7pE,aAAW,SAACiJ,EAAuB8/D,GAClE,IAAMe,EAAqBf,EAAS38E,OAAO,SAAAq4B,GAAC,YAAqBniC,IAAjBmiC,EAAE5hC,aAA0BnD,IAAI,SAAA+kC,GAAC,OAAIA,EAAE5hC,aAEvF,OADgBomB,EAAU7c,OAAO,SAAAyJ,GAAC,OAAKi0E,EAAmB7qD,SAASppB,EAAE8R,QA3F/CzhB,EA+F1B6jF,oCAAsC,SAACpiE,GAAiBzhB,EAAK4G,SAAS,CAAE82E,gCAAiCj8D,KA/F/EzhB,EAiG1B8jF,yBAA2B,SAACpgF,EAAY3D,GAAiBC,EAAK4G,SAAS,CAAEokE,cAAejrE,KAjG9DC,EAmG1B+jF,cAAgB,WACZ/jF,EAAK4G,SAAS,CAAEm9E,eAAe,KApGT/jF,EAuG1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAvGjB79C,EAwG1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KArGxC79C,EAAK+G,MAAQ,CACT82C,SAAS,EACTogC,eAAe,EACfoE,oBAAoB,EACpBrX,eAAe,EACf6W,mBAAoBz7E,EAAMy8E,SAAS7jD,UAAU,SAAAT,GAAC,OAAwB,IAApBA,EAAEysC,iBAA2B,EAC/EkX,8BAA8B,EAC9BoB,kBAAmB,GACnBS,eAAe,EACf5B,gCAAgC,EAChCH,4BAA4B,GAGhChiF,EAAKmqB,eAAiBzjB,GAAKyjB,iBAC3BnqB,EAAKy8E,aAAe,CAAC,OAAQ,uBAAwB,QAAS,iBACzDz8E,EAAKmqB,gBACNnqB,EAAKy8E,aAAa51D,KAAK,IAnBL7mB,wEA0GjB,IAAAsO,EAC+CtV,KAAKoN,MAAjDy8E,EADHv0E,EACGu0E,SADHt0E,EAAAD,EACaE,eADb,IAAAD,EACuB,GADvBA,EAC2BoZ,EAD3BrZ,EAC2BqZ,gBACxBk2B,EAAY7kD,KAAK+N,MAAjB82C,QACFmmC,EAAcn5D,GAAelD,EAAiBjG,GAAMgI,mBAC1D,OAAI1wB,KAAK+N,MAAMg9E,cAEP78E,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3E,GAAOH,cAAcI,OAInCC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,kBACA/K,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ5B,KAAb,KAAArP,OAAqBiR,EAAQyxE,YAA3C,kKAIA/4E,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAWT,EAAQkE,OACtBxL,EAAAhP,EAAAiP,cAAC88E,GAAD,CACIx1E,MAAM,SACNgyE,kBAAmBv5E,EAAAhP,EAAAiP,cAAC0vD,GAAA3+D,EAAD,MACnBmoF,kBAAkB,YAClBE,sBAAuByD,EACvBxD,oBAAqBxnF,KAAKmqF,iBAC1B/C,OAAQ,CACJ,CAAEhjD,OAAQylD,EAAStpF,OAAQq3B,KAA0B,IAApBiyD,EAAStpF,OAAe,SAAW,aAG3EskD,GAAW32C,EAAAhP,EAAAiP,cAAC+8E,GAAA,EAAD,MACZh9E,EAAAhP,EAAAiP,cAACm7E,GAAD,CACI5D,eAAe,EACf/E,SAAU3gF,KAAKkqF,aACfzG,aAAczjF,KAAKyjF,aACnBruD,QAASy0D,EACTtF,eAAgBvkF,KAAKukF,eACrB3D,QAAQ,iBACR4F,YAAY,EACZvF,SAAUjhF,KAAKmxB,eACfm0D,YAAU,KAGjBtlF,KAAK+N,MAAMk3E,eACR/2E,EAAAhP,EAAAiP,cAACg9E,GAAD,CACIxrF,KAAMK,KAAK+N,MAAMk3E,cACjBlkE,QAAS/gB,KAAKoN,MAAM2T,QACpBgJ,UAAW/pB,KAAK+N,MAAMu8E,kBACtB5kC,SAAU1lD,KAAKoqF,gBACfhlC,SAAUplD,KAAKqlD,aACf2sB,cAAehyE,KAAK+N,MAAMikE,cAC1B6W,mBAAoB7oF,KAAK+N,MAAM86E,mBAC/BC,qBAAsB9oF,KAAK8qF,yBAC3B1B,0BAA2BppF,KAAKqqF,qBAChChB,mBAAoBrpF,KAAK+N,MAAMs7E,mBAC/BH,6BAA8BlpF,KAAK+N,MAAMm7E,6BACzCN,gBAAiB5oF,KAAKwqF,8BACtBjB,+BAAgCvpF,KAAK6qF,oCACrC5B,6BAA8BjpF,KAAKuqF,+BACnC7F,gCAAiC1kF,KAAK+N,MAAM22E,gCAC5C+E,iBAAkBzpF,KAAK+qF,cACvB5B,+BAAgCnpF,KAAK+N,MAAMo7E,+BAC3CH,2BAA4BhpF,KAAK+N,MAAMi7E,2BACvCD,wBAAyB/oF,KAAKoN,MAAMkiB,qCAzK1B/gB,IAAMC,eAkM5C,IAAMsI,GAA2C,CAC7C4C,MAAO,CACHzB,OAAQ,SACRT,QAAS,IAEb5D,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExBqF,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBpG,YAAa,CACTiE,WAAY,SACZI,SAAU,GACVC,WAAY,KAEhBkvE,UAAW,CACPnvE,SAAU,GACV+B,aAAc,IAElBuxE,eAAgB,CACZtzE,SAAU,GACVZ,UAAW,GAEfknD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,UAIJwuC,eACXvlC,KAAWR,IACXgmC,YAlDJ,SAAyB/uC,GACrB,MAAO,CACH87E,SAAU97E,EAAMmhB,WAAWO,gBAC3B1O,QAAShT,EAAMmhB,WAAWnO,QAC1BgJ,UAAWhc,EAAM4c,SAASvC,KAC1BuG,gBAAiB5gB,EAAMmhB,aAI/B,SAA4B7vB,EAAe2oD,GACvC,MAAO,CACHiiC,kBAAmB,SAACoB,GAAD,OAAoBhsF,ExCxLxC,SAA2B88C,EAAmBj5C,EAAsBmoF,GACvE,sBAAA18B,EAAA5vD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAyvD,EAAOvvD,GAAP,IAAAopB,EAAA,OAAAxpB,EAAAC,EAAAI,KAAA,SAAAuvD,GAAA,cAAAA,EAAArvD,KAAAqvD,EAAApvD,MAAA,cAAAovD,EAAArvD,KAAA,EAEC6rF,EAAetZ,0BAA4BnsE,OAAOC,SAAS2C,OAASwF,GAAOs9E,eAAer9E,KAF3F4gD,EAAApvD,KAAA,EAIkBypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,oBAAuE,CAAEimC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAUy+E,KAJpI,OAIO5iE,EAJPomC,EAAAnH,KAKC2jC,EAAezwB,SAAWywB,EAAen6B,UAAY,IAAMm6B,EAAeh9D,SAC1Eg9D,EAAe5iE,GAAKA,EACpBppB,EAASksF,GAAoBF,IAC7BhsF,EAASX,EAAgB,wBAAyB,YARnDmwD,EAAApvD,KAAA,uBAAAovD,EAAArvD,KAAA,GAAAqvD,EAAAlH,GAAAkH,EAAA,SAUCxvD,EAAS0B,EAAyB8tD,EAAAlH,GAAK,sCAVxCkH,EAAAlH,GAAA,yBAAAkH,EAAAhvD,SAAA+uD,EAAA,kBAAP,gBAAA3R,GAAA,OAAA0R,EAAA5uD,MAAAC,KAAAC,YAAA,GwCuLoDgqF,CAAkBjiC,EAAS7L,UAAW6L,EAAS9kD,aAAcmoF,KAC7GvB,qBAAsB,SAACrhE,EAAIvM,GAAL,OAAc7c,ExCxMrC,SAA8B88C,EAAmBj5C,EAAsBulB,EAAYvM,GACtF,sBAAAxa,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwC,EAAOtC,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cAAAmC,EAAApC,KAAA,EAAAoC,EAAAnC,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,qBAAAqB,OAAuEkkB,GAAM,CAAE0gB,OAAQ,WAFlG,cAGC9pC,EAASmsF,GAAqB/iE,IAC9BppB,EAASX,EAAe,GAAA6F,OAAI2X,EAAJ,YAAoB,aAJ7Cta,EAAAm7C,OAAA,SAKQt0B,GALR,aAAA7mB,EAAApC,KAAA,EAAAoC,EAAA+lD,GAAA/lD,EAAA,SAOCvC,EAAS0B,EAAyBa,EAAA+lD,GAAK,wCAPxC/lD,EAAA+lD,GAAA,yBAAA/lD,EAAA/B,SAAA8B,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAA3B,MAAAC,KAAAC,YAAA,GwCuMiD6pF,CAAqB9hC,EAAS7L,UAAW6L,EAAS9kD,aAAculB,EAAIvM,QAoC1G2gC,CAGb6sC,ICxQI+B,GAAkBl9E,IAAMizC,KAAK,SAACp0C,GAAiB,IACzCuhB,EAAuCvhB,EAAvCuhB,gBAAiB+8D,EAAsBt+E,EAAtBs+E,kBACjB3qE,EAAuB4N,EAAvB5N,QAASoO,EAAcR,EAAdQ,UACXytC,IAAcjuC,EAAgB+jD,eAE9B1sB,EAAgBz3C,IAAM2xD,QAAQ,WAChC,MAAO,CACH5hB,iBAAkB3vB,EAAgB2vB,iBAClCpiC,KAAM6E,EAAQ7E,KACduoD,eAAgB1jD,EAAQ0jD,gBAAkBl6C,GAAY,WAAYC,GAAgBwiB,cAClF5d,IAAKrO,EAAQqO,IACbkrB,mBAAoBv5B,EAAQu5B,mBAAmB,GAC/CnrB,UAAWA,GAAaA,EAAUmD,cAClCugD,gBAAgB,IAErB,CAAC9xD,EAASoO,IAEPk2B,EAAe92C,IAAMuzC,YAAN,eAAAhjD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAkB,SAAAC,EAAOkyD,GAAP,IAAAniC,EAAAjT,EAAAkT,EAAAq1C,EAAAnqB,EAAAu4B,EAAA8Y,EAAA,OAAA1sF,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAC3B0vB,EAA6EmiC,EAA7EniC,UAAWjT,EAAkEo1C,EAAlEp1C,KAAMkT,EAA4DkiC,EAA5DliC,IAAKq1C,EAAuDnT,EAAvDmT,eAAgBnqB,EAAuCgX,EAAvChX,mBAAoBu4B,EAAmBvhB,EAAnBuhB,gBAE5D8Y,EAH6B5sF,OAAA0G,EAAA,EAAA1G,CAAA,GAI5B4vB,EAJ4B,CAK/Byc,UAAWzc,EAAgByc,WAAazc,EAAgByc,UAAU/O,SAClExN,QAASF,EAAgBE,SAAWF,EAAgBE,QAAQwN,SAC5D3c,cAAeiP,EAAgBjP,cAAgBiP,EAAgBjP,mBAAgBtc,EAC/EmtB,iBAAkB5B,EAAgB4B,kBAAoB5B,EAAgB4B,iBAAiB4L,MAAME,SAC7Fq2C,eAAgB/jD,EAAgB+jD,gBAAkB/jD,EAAgB+jD,eAAev2C,MAAME,YAGzElN,UAAYA,EAC9Bw8D,EAAkB5qE,QAAlBhiB,OAAA0G,EAAA,EAAA1G,CAAA,GACO4sF,EAAkB5qE,QADzB,CAEI7E,OACAkT,MACAq1C,iBACAnqB,mBAAoBA,EAAqB,CAACA,GAAsB,GAChEu4B,mBAnB+BtzE,EAAAE,KAAA,EAsB7BisF,EAAkBC,GAtBW,wBAAApsF,EAAAM,SAAAT,MAAlB,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAuBlB,CAAC0uB,EAAiB+8D,IAErB,OACIx9E,EAAAhP,EAAAiP,cAACy9E,GAAD,CAAqB5lC,cAAeA,EAAeZ,SAAUC,EAAcuX,YAAaA,MAgBjF9f,mBAZf,SAAyB/uC,GACrB,MAAO,CACH4gB,gBAAiB5gB,EAAMmhB,aAI/B,SAA4B7vB,GACxB,MAAO,CACHqsF,kBAAmB,SAAAx8D,GAAU,OAAI7vB,EzCmBlC,SAA2B6vB,GAC9B,sBAAA28D,EAAA9sF,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA+9C,EAAO79C,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA69C,GAAA,cAAAA,EAAA39C,KAAA29C,EAAA19C,MAAA,cAAA09C,EAAA39C,KAAA,EAAA29C,EAAA19C,KAAA,EAEOypC,GAAI,eAAA3kC,OAAgB2qB,EAAWzG,IAAM,CAAE0gB,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUsiB,KAFlF,OAGC7vB,EAASysF,GAAgB58D,IACzB7vB,EAASX,EAAgB,qBAAsB,YAJhDy+C,EAAA19C,KAAA,sBAAA09C,EAAA39C,KAAA,EAAA29C,EAAAwK,GAAAxK,EAAA,SAMC99C,EAAS0B,EAAyBo8C,EAAAwK,GAAK,qCANxCxK,EAAAwK,GAAA,yBAAAxK,EAAAt9C,SAAAq9C,EAAA,iBAAP,gBAAAoX,GAAA,OAAAu3B,EAAA9rF,MAAAC,KAAAC,YAAA,GyCpB8CyrF,CAAkBx8D,OAIrD4tB,CAA6C2uC,IC9DtDM,GAAkBx9E,IAAMizC,KAAK,SAACp0C,GAAiB,IACzCuhB,EAAsCvhB,EAAtCuhB,gBAAiBq9D,EAAqB5+E,EAArB4+E,iBACnB/qE,EAAmB0N,EAAgB5N,QAAQC,SAASC,iBACpDC,EAAmByN,EAAgB5N,QAAQC,SAASE,iBACpD07C,IAAcjuC,EAAgB+jD,eAE9B1sB,EAAgBz3C,IAAM2xD,QAAQ,WAChC,MAAO,CACHj/C,mBACAC,qBAEL,CAACD,EAAkBC,IAEhBmkC,EAAe92C,IAAMuzC,YAAN,eAAAhjD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAkB,SAAAC,EAAOkyD,GAAP,IAAArwC,EAAAC,EAAAyqE,EAAA,OAAA1sF,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAC3BwhB,EAAuCqwC,EAAvCrwC,iBAAkBC,EAAqBowC,EAArBpwC,kBACpByqE,EAF6B5sF,OAAA0G,EAAA,EAAA1G,CAAA,GAG5B4vB,EAH4B,CAI/BjP,cAAeiP,EAAgBjP,cAAgBiP,EAAgBjP,mBAAgBtc,EAC/EgoC,UAAWzc,EAAgByc,WAAazc,EAAgByc,UAAU/O,SAClExN,QAASF,EAAgBE,SAAWF,EAAgBE,QAAQwN,SAC5D9L,iBAAkB5B,EAAgB4B,kBAAoB5B,EAAgB4B,iBAAiB4L,MAAME,SAC7Fq2C,eAAgB/jD,EAAgB+jD,gBAAkB/jD,EAAgB+jD,eAAev2C,MAAME,YAGzEtb,QAAlBhiB,OAAA0G,EAAA,EAAA1G,CAAA,GACO4sF,EAAkB5qE,QADzB,CAEIC,SAAU,CACNC,mBACAC,mBACAuH,GAAIkG,EAAgB5N,QAAQ0H,MAhBDlpB,EAAAE,KAAA,EAmB7BusF,EAAiBL,GAnBY,wBAAApsF,EAAAM,SAAAT,MAAlB,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAoBlB,CAAC0uB,EAAiBq9D,IAErB,OACI99E,EAAAhP,EAAAiP,cAAC89E,GAAD,CAAqBjmC,cAAeA,EAAeZ,SAAUC,EAAcuX,YAAaA,MAgBjF9f,mBAZf,SAAyB/uC,GACrB,MAAO,CACH4gB,gBAAiB5gB,EAAMmhB,aAI/B,SAA4B7vB,GACxB,MAAO,CACH2sF,iBAAkB,SAAA98D,GAAU,OAAI7vB,EAAS2sF,GAAiB98D,OAInD4tB,CAA6CivC,IC5BtDG,GAAc39E,IAAMizC,KAAK,SAACp0C,GAAiB,IACrC03D,EAAyI13D,EAAzI03D,UAAWn2C,EAA8HvhB,EAA9HuhB,gBAAiBxG,EAA6G/a,EAA7G+a,cAAe02D,EAA8FzxE,EAA9FyxE,uBAAwBsN,EAAsE/+E,EAAtE++E,WAAY99B,EAA0DjhD,EAA1DihD,eAAgBlU,EAA0C/sC,EAA1C+sC,gBAAiBiyC,EAAyBh/E,EAAzBg/E,qBAD3E1qC,EAEhBnzC,IAAMozC,SAASh1C,OAAOS,EAAMgF,MAAMG,OAAZ,MAA8B,GAFpCqvC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAEtCoW,EAFsClW,EAAA,GAE1ByqC,EAF0BzqC,EAAA,GAAA0qC,EAGX/9E,IAAMozC,SAASmW,GAHJy0B,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAGtCE,EAHsCD,EAAA,GAG3BE,EAH2BF,EAAA,GAAAG,EAIXn+E,IAAMozC,UAAS,GAJJgrC,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAItCx1B,EAJsCy1B,EAAA,GAI3BC,EAJ2BD,EAAA,GAAAE,EAKft+E,IAAMozC,UAAS,GALAmrC,EAAA/tF,OAAAmN,EAAA,EAAAnN,CAAA8tF,EAAA,GAKtChoC,EALsCioC,EAAA,GAK7BC,EAL6BD,EAAA,GAMvCE,EACoB,mBADpBA,EAEoB,mBAFpBA,EAGiB,iBAHjBA,EAIsB,sBAGtB7wC,EAAY5tC,IAAM2xD,QAAQ,WAC5B,OAAO9yD,EAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQ4pC,UAAWh8C,QAAQ,IAAK,MAC5E,CAACiN,EAAMgF,QAEJlP,EAAeqL,IAAM2xD,QAAQ,WAC/B,OAAO9yD,EAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQrP,aAAc/C,QAAQ,IAAK,MAC/E,CAACiN,EAAMgF,QAEJ86E,EAAc3+E,IAAM2xD,QAAQ,iBAAM,CAAC,YAAa,iBAAiB,IAYjEitB,EAAwB79D,GAA2BliB,EAAM03D,UAAUp4C,qBAAsBiC,GACzFy+D,EAA0Bv9D,GAAsBziB,EAAM03D,UAAUp4C,qBAAsBiC,GACtF0+D,EAAoBD,GAA2BD,EAE/CG,EAAO/+E,IAAM2xD,QAAQ,iBAAmB,CAC1C,CAAEzqD,MAAOu3E,EAAgC5nF,OAfzBmoF,EAe2CP,EAdvDO,IAAaP,IACgD,OAAtC5/E,EAAMuhB,gBAAgB5N,QAAQqO,UACRhsB,IAAtCgK,EAAMuhB,gBAAgB5N,QAAQqO,KACe,IAA7ChiB,EAAMuhB,gBAAgB5N,QAAQqO,IAAI7uB,SAW+C0tD,S/B/D3E,oB+BgEjB,CAAEx4C,MAAOu3E,EAAgC/+B,SjCtExB,gBiCuEjB,CAAEx4C,MAAOu3E,EAA6Bj4E,QAASs4E,GAC/C,CAAE53E,MAAOu3E,EAAkC/+B,S9BvE1B,qB8BqDF,IAACs/B,GAmBjB,CAACngF,EAAMuhB,gBAAgB5N,QAAQqO,IAAKhiB,EAAMuhB,gBAAgBc,gBAAiBriB,EAAM03D,UAAUp4C,uBAE9Fne,IAAMq9C,UAAU,WACZmhC,GAAW,GACX,IAAMjO,EAA2B,GAC5BnwD,EAAgBlG,IACjBq2D,EAASjxD,KAAKssB,EAAgBj3C,IAKlC47E,EAASjxD,KAAKgxD,EAAuB1iC,EAAWj5C,IAEd,IAA9BilB,EAAcC,KAAK7nB,QACnBu+E,EAASjxD,KAAKwgC,EAAelS,EAAWj5C,IAGG,IAA3CyrB,EAAgBc,gBAAgBlvB,QAChCu+E,EAASjxD,KAAKu+D,EAAqBjwC,EAAWj5C,IAGpB,IAA1B4hE,EAAU18C,KAAK7nB,QACfu+E,EAASjxD,KAAKs+D,EAAWhwC,EAAWj5C,IAGxCuE,QAAQu3E,IAAIF,GAAU53E,KAAK,kBAAM6lF,GAAW,IAAQ,kBAAMA,GAAW,MACtE,CAAC5kE,EAAcC,KAAK7nB,OAAQouB,EAAgBc,gBAAgBlvB,OAAQouB,EAAgBikD,kBAAkBryE,OAAQouB,EAAgBlG,GAAI2jE,EAAsB/9B,EAAgBlU,EAAiB0kC,EAAwB1iC,EAAWj5C,IAE/N,IAAMsqF,EAAmBj/E,IAAMuzC,YAAY,SAACh1C,GACxC,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYA,GAAWh8C,QAAQoS,EAAQrP,aAAeA,GACzFkK,EAAMioD,QAAQxnC,KAAK4/D,KAExB,CAACrgF,EAAMioD,QAASlZ,EAAWj5C,IAExBwqF,EAAmBn/E,IAAMuzC,YAAY,SAACh1C,GACxC2/E,EAAa3/E,GACb8/E,GAAa,IACd,IAEGe,EAA6Bp/E,IAAMuzC,YAAY,WACjD8qC,GAAa,IACd,IAEGgB,EAA+Br/E,IAAMuzC,YAAY,WACnD8qC,GAAa,GACbP,EAAOG,IACR,CAACA,IAIJ,OACIt+E,EAAAhP,EAAAiP,cAACq8C,GAAD,KACK3F,EACG32C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO+tC,SACf32C,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGJl0C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAWwO,EAAMuhB,gBAAgB5N,QAAQ7E,MAAahO,EAAAhP,EAAAiP,cAAA,WACrED,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAOg3B,EACP72B,iBAAkBm3B,IAEtBt/E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG4yB,GAAI,GAClB99C,EAAAhP,EAAAiP,cAAC4/E,GAAD,CACIj2B,WAAYA,EACZE,aAAc01B,EACdh2B,aAAc41B,EACdp2B,UAAWA,EACXG,cAAei2B,EAAKx1B,GAAYriD,MAAM6c,cACtC8lC,uBAAwBu1B,EACxBt1B,yBAA0Bu1B,IAEd,IAAf91B,GAAoBu1B,GACjBn/E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC2E,WAAW,UACvB3M,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAGlrB,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO85E,GAAaltE,eAC/C9M,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAO85E,GAAahtE,aAAvC,qHAEKiyE,IAA0BC,GAA2Bl/E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,qCAGpD6+E,GAAyBC,GAA4Bl/E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,oCAGtD6+E,GAAyBC,GAA4Bl/E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,mEAQtEJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAOk3E,UACpB,IAAfl2B,GAAoB5pD,EAAAhP,EAAAiP,cAAC8/E,GAAD,MACL,IAAfn2B,GAAoB5pD,EAAAhP,EAAAiP,cAAC+/E,GAAD,CAAa/xC,UAAWA,EAAWj5C,aAAcA,IACtD,IAAf40D,GAAoB5pD,EAAAhP,EAAAiP,cAACggF,GAAD,CAAyBhyC,UAAWA,EAAWj5C,aAAcA,EAAcosB,2BAA4B+9D,IAC5G,IAAfv1B,GAAoB5pD,EAAAhP,EAAAiP,cAACigF,GAAD,YAS3Ct3E,GAAiD,CACnD+tC,QAAS,CACLx2C,UAAW,UAEf2/E,SAAU,CACN5zE,YAAa,KA8BN0iC,mBAlBf,SAAyB/uC,GACrB,MAAO,CACH4gB,gBAAiB5gB,EAAMmhB,WACvB/G,cAAepa,EAAM4c,SACrBm6C,UAAW/2D,EAAMqb,OAIzB,SAA4B/pB,GACxB,MAAO,CACH86C,gBAAiB,SAAAj3C,GAAY,OAAI7D,EAAS86C,GAAgBj3C,KAC1D27E,uBAAwB,SAAC1iC,EAAWj5C,GAAZ,OAA6B7D,EAASw/E,GAAuB1iC,EAAWj5C,KAChGmrD,eAAgB,SAAClS,EAAWj5C,GAAZ,OAA6B7D,EAASgvD,GAAelS,EAAWj5C,KAChFkpF,qBAAsB,SAACjwC,EAAWj5C,GAAZ,OAA6B7D,EAAS+sF,GAAqBjwC,EAAWj5C,KAC5FipF,WAAY,SAAChwC,EAAWj5C,GAAZ,OAA6B7D,EAAS8sF,GAAWhwC,EAAWj5C,OAIjE45C,CAA6CovC,eC5L/CmC,GAAyB/2E,aAvBvB,kBAAMM,aAAa,CAC9B02E,UAAW,CACPh0E,QAAS,eACTjM,UAAW,SACXyJ,SAAU,GACVG,OAAQ,QACRT,QAAS,SACT8gD,YAAa,EACbC,iBAAkB,QAClBC,iBAAkBvlD,GAAQC,KAAKQ,OAC/B66E,eAAgB,CACZj2B,YAAa,EACb5/C,aAAc,EACdvB,YAAa,IAGrBy9C,WAAY,CACR98C,SAAU,GACVC,WAAY,OACZhB,MAAO,YAIuBO,CAAmB/I,IAAMizC,KAAK,SAACp0C,GACjE,OACIc,EAAAhP,EAAAiP,cAACmnB,GAAA,EAAD,CAAS7f,MAAM,4BAA4B8f,UAAU,WACjDrnB,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQ84E,WAC1BpgF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQo/C,YAAaxnD,EAAM+c,YACjDjc,EAAAhP,EAAAiP,cAACwzE,GAAD,CAAgBvyE,OAAQmb,GAAY,aAAcC,GAAgBC,mBAEtEvc,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQ84E,WAC1BpgF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQo/C,YAAaxnD,EAAM8c,YACjDhc,EAAAhP,EAAAiP,cAACwzE,GAAD,CAAgBvyE,OAAQmb,GAAY,aAAcC,GAAgBC,mBAEtEvc,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQ84E,WAC1BpgF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQo/C,YAAaxnD,EAAM6c,WACjD/b,EAAAhP,EAAAiP,cAACwzE,GAAD,CAAgBvyE,OAAQmb,GAAY,YAAaC,GAAgBC,mBAErEvc,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQ84E,WAC1BpgF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQo/C,YAAaxnD,EAAMohF,eACjDtgF,EAAAhP,EAAAiP,cAACwzE,GAAD,CAAgBvyE,OAAQ,mCCVtCq/E,GAAoBlgF,IAAMizC,KAAK,SAACp0C,GACmFA,EAA7GoI,QAD2C,IAC7Bk5E,EAA+FthF,EAA/FshF,YAAa3kE,EAAkF3c,EAAlF2c,UAAWlB,EAAuEzb,EAAvEyb,MAAOwsC,EAAgEjoD,EAAhEioD,QAASjjD,EAAuDhF,EAAvDgF,MAAO+nC,EAAgD/sC,EAAhD+sC,gBAAiBkU,EAA+BjhD,EAA/BihD,eAAgB89B,EAAe/+E,EAAf++E,WAGhGhwC,EAAY5tC,IAAM2xD,QAAQ,kBAAM9tD,EAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQ4pC,UAAWh8C,QAAQ,IAAK,MAAM,CAACiS,IACrGlP,EAAeqL,IAAM2xD,QAAQ,kBAAM9tD,EAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQrP,aAAc/C,QAAQ,IAAK,MAAM,CAACiS,IAL9DsvC,EASrBnzC,IAAMozC,UAAS,GATMC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAS5CmD,EAT4CjD,EAAA,GASnCmrC,EATmCnrC,EAAA,GAAA0qC,EAUP/9E,IAAMozC,UAAS,GAVR4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAAAC,EAAA,GAAAA,EAAA,GAcnDh+E,IAAMq9C,UAAU,WACZ,IAAMkzB,EAA2B,GAE5B4P,GACD5P,EAASjxD,KAAKssB,EAAgBj3C,IAGT,IAArB6mB,EAAUxpB,QACVu+E,EAASjxD,KAAKwgC,EAAelS,EAAWj5C,IAG5C47E,EAASjxD,KAAKs+D,EAAWhwC,EAAWj5C,IAEpC6pF,GAAW,GACXtlF,QAAQu3E,IAAIF,GAAU53E,KAAK,kBAAM6lF,GAAW,IAAQ,kBAAMA,GAAW,MACtE,CAAC5wC,EAAWj5C,EAAcwrF,EAAa3kE,EAAUxpB,OAAQ8tD,EAAgBlU,EAAiBgyC,IAI7F,IAAMwC,EAAcpgF,IAAM2xD,QAAQ,iBAAM,CAAC,YAAa,uBAAuB,IACvE0uB,EAA0BrgF,IAAMuzC,YAAY,SAACh1C,GAC/C,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYA,GAAWh8C,QAAQoS,EAAQrP,aAAeA,GACzFmyD,EAAQxnC,KAAK4/D,KAElB,CAACp4B,EAASlZ,EAAWj5C,IAxC2B2rF,EA4CM/kE,GAAgBC,GAAjEE,EA5C2C4kE,EA4C3C5kE,UAAWG,EA5CgCykE,EA4ChCzkE,UAAWF,EA5CqB2kE,EA4CrB3kE,WAAYC,EA5CS0kE,EA4CT1kE,WAKpC2kE,EAAYvgF,IAAM2xD,QAAQ,WAE5B,IAAM6uB,EAAU3+C,KACV4+C,EAAOn1D,GAAchR,GACrBjoB,EAAkB,GAwCxB,OAtCAouF,EAAKhmE,QAAQ,SAAAwX,GACT,IACMyuD,EAAmB,CAAE1M,QADXwM,EAAQvuD,GAAOz5B,MACKmoF,WAAY,EAAGC,OAAQ,EAAGhlE,WAAY,EAAGtB,MAAO,GAAIumE,QAAS,IAEjGvmE,EAAM3b,OAAO,SAAA7O,GAAC,OAAIA,EAAE+sB,mBAAqBoV,IAAOxX,QAAQ,SAAA3qB,GAAO4wF,EAAQpmE,MAAMxqB,EAAE8hB,iBAAmB,IAElG4J,EAAUf,QAAQ,SAAAX,GACd,IAAMgnE,EAAchnE,EAAIS,UAAUK,KAAK,SAAAoF,GAAE,OAAIA,EAAGnD,mBAAqBoV,IAErE,GAAInY,EAAIE,aACJ0mE,EAAQC,kBAEP,GAAIG,EACL,GAAIA,EAAYvhE,SACZmhE,EAAQE,aACP,CACD,IAAM/lE,EAAOP,EAAMM,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAO4mE,EAAYhmE,SAC9CD,EACA6lE,EAAQpmE,MAAMO,EAAKjJ,mBAGnB8uE,EAAQpmE,MAAMymE,QAAUL,EAAQpmE,MAAMymE,QAAUL,EAAQpmE,MAAMymE,QAAU,EAAI,OAIpFL,EAAQ9kE,eAGhB,IAAMolE,EAAY,CAACt8E,GAAQ2B,MAAMxB,MAAOH,GAAQiB,KAAKS,QAAS1B,GAAQ+B,IAAI5B,MAAOH,GAAQiB,KAAKQ,KAAMzB,GAAQiB,KAAKd,OAC3Go8E,EAAczwF,OAAO0wF,QAAQR,EAAQpmE,OAAOroB,IAAI,SAACkvF,EAAO5iF,GAAR,MAAmB,CAAEoP,KAAMwzE,EAAM,GAAI3oF,MAAO2oF,EAAM,GAAI34E,MAAOw4E,EAAUziF,EAAQ,MACrI0iF,EAAY3hE,KAAK,CAAE3R,KAAM,aAAcnV,MAAOkoF,EAAQC,WAAYn4E,MAAO9D,GAAQC,KAAKM,QACtFg8E,EAAY3hE,KAAK,CAAE3R,KAAM,SAAUnV,MAAOkoF,EAAQE,OAAQp4E,MAAO9D,GAAQC,KAAKM,QAC9Eg8E,EAAY3hE,KAAK,CAAE3R,KAAM,cAAenV,MAAOkoF,EAAQ9kE,WAAYpT,MAAO9D,GAAQ6B,OAAOX,UACzF86E,EAAQG,QAAUI,EAAYtiF,OAAO,SAAAwiF,GAAK,OAAIA,EAAM3oF,MAAQ,IAE5DnG,EAAKitB,KAAKohE,KAGPruF,GACR,CAACioB,EAAOkB,IAIL4lE,EAAiB5lE,EAAUxpB,OAK3BqvF,EAAqBrhF,IAAM2xD,QAC7B,kBAAMn2C,EAAU7c,OACZ,SAAAyJ,GAAC,MAAI,CAAC4T,GAAY,YAAaC,GAAgBC,gBAAiBF,GAAY,YAAaC,GAAgBC,iBAAiBsV,SAASppB,EAAE2T,oBACvI/pB,QACA,CAACwpB,IAED8lE,EAAsBthF,IAAM2xD,QAAQ,WAUtC,IAAM6uB,EAAU3+C,KACV0/C,EAAiC,GAgCvC,OA9BAjnE,EAAMG,QAAQ,SAAAI,GACV,IAAMoX,EAAQpX,EAAKgC,iBACbm3D,EAAUwM,EAAQvuD,GAAOz5B,MACzBgpF,EAAWhB,EAAQvuD,GAAOvG,MAC1BuL,EAAcpc,EAAKoc,aAGN,IADDsqD,EAAU9pD,UAAU,SAAA/Z,GAAC,OAAIA,EAAEuU,QAAUA,GAASvU,EAAEuZ,cAAgBA,KAE9EsqD,EAAUjiE,KAAK,CACX2S,QACA+hD,UACAwN,WACAvqD,cACAg9C,aAAc,EACdC,mBAAoB,OAKhC14D,EAAUf,QAAQ,SAAAX,GAAG,OAAIA,EAAIS,UAAU5b,OAAO,SAAAqhB,GAAE,OAAKA,EAAGT,WAAU9E,QAAQ,SAAAuF,GACtE,IAAMiS,EAAQjS,EAAGnD,iBACX/B,EAASkF,EAAGlF,OACZD,EAAOP,EAAMM,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOY,IACtCmc,EAAcpc,EAAOA,EAAKoc,iBAAcpiC,EAExC4sF,EAAeF,EAAU3mE,KAAK,SAAA8C,GAAC,OAAIA,EAAEuU,QAAUA,GAASvU,EAAEuZ,cAAgBA,IAChFwqD,GAAgBA,EAAaxN,mBAI1BsN,EACFtvF,IAAI,SAAAyvF,GACD,IAAMC,GAAeD,EAAQzN,aAAemN,EAAkB,KAAKh3D,UACnE,OAAO55B,OAAA0G,EAAA,EAAA1G,CAAA,GACAkxF,EADP,CAEIxN,mBAAkB,GAAAl+E,OAAK2rF,EAAL,SAGzB5jF,KAAK,SAAUpN,EAAGwN,GACf,OAAOxN,EAAE6wF,SAAWrjF,EAAEqjF,WAAa7wF,EAAEsmC,cAAgB94B,EAAE84B,YAAc,EAAItmC,EAAEsmC,YAAc94B,EAAE84B,aAAe,EAAI,MAGvH,CAACzb,EAAWlB,IAcf,OACI3a,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAW8vF,GAAoBxgF,EAAAhP,EAAAiP,cAAA,YAElDD,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAOy4B,EACPt4B,iBAAkBu4B,KAG1B1gF,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQC,QAAM,GACVliF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAO0I,GAAOu5E,cAC5BniF,EAAAhP,EAAAiP,cAACkgF,GAAD,CACIpkE,UAAWA,EAAYG,EACvBF,WAAYA,EACZC,WAAYA,EACZqkE,cAAephF,EAAMohF,mBAKpC3pC,EACG32C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOw5E,YACfpiF,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGJl0C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOe,YAA1B,mCAEJ3J,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACV44E,EAAUtuF,IAAI,SAACyuF,EAASniF,GAAV,OACXoB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMryB,IAAKgG,EAAOme,MAAI,EAACmO,GAAI,GACvBlrB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAKmoF,EAAQ1M,QAASn0E,MAAO0I,GAAOy5E,cACrCriF,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO05E,YAAavB,EAAQ1M,QAAzC,UAEAr0E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACsiF,GAAA,EAAD,CAAUr3E,MAAO,IAAK7H,OAAQ,IAAK3Q,KAAMquF,EAAQG,SAE7ClhF,EAAAhP,EAAAiP,cAACsiF,GAAA,EAAD,CAAK7vF,KAAMquF,EAAQG,QAASsB,QAAQ,QAAQC,YAAY,MAAMC,YAAY,MAAMC,mBAAmB,EAAOC,WAAY,GAAIC,SAAU,IAAKC,aAAc,GAE/I/B,EAAQG,QAAQ5uF,IAAI,SAACkvF,EAAO5iF,GAAR,OAChBoB,EAAAhP,EAAAiP,cAACsiF,GAAA,EAAD,CAAM3pF,IAAG,QAAAvC,OAAUuI,GAASm1E,KAAMyN,EAAM34E,aAM5D7I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAO0I,GAAOm6E,cAC3BhC,EAAQG,QAAQ5uF,IAAI,SAACkvF,EAAO5iF,GAAR,OACjBoB,EAAAhP,EAAAiP,cAAA,KAAGrH,IAAKgG,EAAOsB,MAAO85E,GAAazuE,YAC/BvL,EAAAhP,EAAAiP,cAAA,eAAA5J,OAAUmrF,EAAM3oF,MAAhB,OAtIhCgQ,EAuI4C24E,EAAM34E,MAtI3D7I,EAAAhP,EAAAiP,cAAA,QAAMC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOo6E,WAAd,CAA0Bt1E,gBAAiB7E,OAuIb7I,EAAAhP,EAAAiP,cAAA,oBAAA5J,OAAYmrF,EAAMxzE,QAxInD,IAACnF,YAqJJ7I,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAOq6E,eACjBjjF,EAAAhP,EAAAiP,cAAC88E,GAAD,CACIx1E,MAAM,wBACN2xE,OAAQ,CACJ,CAAEhjD,OAAQurD,EAAgB/3D,KAAM,aAChC,CAAEwM,OAAQwrD,EAAoBh4D,KAAM,gBAG5C1pB,EAAAhP,EAAAiP,cAACm7E,GAAD,CACI1D,SAAU,aACVjF,SAAU,aACVoC,qBAzFlB,CACE,CAAEt6D,GAAI,QAAS06D,UAAW,MAAOlvE,MAAO,oBACxC,CAAEwU,GAAI,cAAe06D,WAAW,EAAOlvE,MAAO,WAC9C,CAAEwU,GAAI,eAAgB06D,WAAW,EAAOlvE,MAAO,sBAC/C,CAAEwU,GAAI,qBAAsB06D,WAAW,EAAOlvE,MAAO,sBAAuBgyE,UAAU,EAAMC,YAAa,+JAsFzF9wD,QAASy6D,EACThL,sBAAuB,aACvBN,eAAgB,aAChBK,mBAAoB,aACpBY,iBAAiB,EACjB5E,QAAQ,cACR8E,eAAe,EACfI,gBAAiB,aACjB7E,UAAU,EACVuF,WAAYqJ,EAAoBtvF,OAAS,GACzC+kF,YAAY,SASlCxuE,GAA2C,CAC7Co6E,WAAY,CACR3/E,OAAQ,GACR6H,MAAO,GACPC,WAAY,GACZiB,QAAS,gBAEbi2E,aAAc,CACV94E,WAAY,IAEhB+4E,WAAY,CACRz5E,MAAO9D,GAAQC,KAAKc,SACpB8D,SAAU,GACVC,WAAY,KAEhBk5E,aAAc,CACV32E,QAAS,OACT82E,cAAe,SACfv0E,eAAgB,YAEpBnD,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTN,UAAW,IAEfm5E,aAAc,CACV/1E,QAAS,cACTuC,eAAgB,WAChB3F,UAAW,IAEfi6E,cAAe,CACXpK,UAAW,OACXvvE,QAAS,GACTN,UAAW,IAEfW,WAAY,CACRC,SAAU,GACVC,WAAY,IACZL,WAAY,UAEhB44E,WAAY,CACRjiF,UAAW,WAqBJyuC,mBAjBf,SAAyB/uC,GACrB,MAAO,CACH2gF,YAAa3gF,EAAMmhB,WAAWnO,QAAQ7E,KACtC6N,UAAWhc,EAAM4c,SAASvC,KAC1BS,MAAO9a,EAAMqb,KAAKhB,KAClBomE,cAAe9/D,GAAiB3gB,EAAMmhB,cAI9C,SAA4B7vB,GACxB,MAAO,CACH86C,gBAAiB,SAAAj3C,GAAY,OAAI7D,EAAS86C,GAAgBj3C,KAC1DmrD,eAAgB,SAAClS,EAAWj5C,GAAZ,OAA6B7D,EAASgvD,GAAelS,EAAWj5C,KAChFipF,WAAY,SAAChwC,EAAWj5C,GAAZ,OAA6B7D,EAAS8sF,GAAWhwC,EAAWj5C,OAIjE45C,CAA6CxlC,KAAWR,GAAXQ,CAAmBm3E,yBCpWhE4C,GAxBU,SAACjkF,GAIaA,EAA3Bqb,GAJ+B,IAI3B/R,EAAuBtJ,EAAvBsJ,QAAY3R,EAJehG,OAAAgX,GAAA,EAAAhX,CAIJqO,EAJI,kBAKvC,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACMlB,EAAMuU,UACJzT,EAAAhP,EAAAiP,cAAA,SACImjF,OAAQlkF,EAAMmkF,WACd9oE,GAAIrb,EAAMqb,GACV86B,SAAU7sC,EACVA,QAXhB,SAAsBke,GAClBA,EAAM20B,OAAOxiD,MAAQ,IAWT6wB,KAAK,OACLxpB,MAAO,CAAEkM,QAAS,UAG1BpM,EAAAhP,EAAAiP,cAAA,SAAOqjF,QAASpkF,EAAMqb,IAClBva,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD59C,OAAAoM,OAAA,GAAYpG,EAAZ,CAAoBw/C,UAAU,aCaxCztC,GAAiD,CACnDsmD,gBAAiB,CACb3lD,WAAY,SAILg6E,GA/Bc,SAACrkF,GAC1B,OACIc,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,oBACzDvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,iBACazvC,EAAAhP,EAAAiP,cAAA,cAASf,EAAMynE,UAD5B,oCAGA3mE,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,CAAmBvvC,MAAO0I,GAAOsmD,iBAAjC,2BAEJlvD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,oBACH/R,QAAS,kBAAMtJ,EAAM+4C,OAAO/4C,EAAMskF,aAClC36E,MAAM,WAHV,gECiBHD,GAAiD,CAC1DiG,KAAM,CACF40E,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BwD,UAAW,GACX3F,OAAQ,GACRyF,SAAU,YAEd46E,KAAM,CACFrgF,OAAQ,OACR6I,YAAa,GAEjBy3E,SAAU,CACNv3E,QAAS,OACTO,WAAY,SACZgC,eAAgB,OAChBtL,OAAQ,IAEZugF,UAAW,CACPx3E,QAAS,OACTO,WAAY,SACZgC,eAAgB,QAChBtL,OAAQ,IAEZ8hB,KAAM,CACFtc,MAAO9D,GAAQiB,KAAKC,QACpB2D,SAAU,IAEd+8D,SAAU,CACN99D,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,IACZD,SAAU,GACVsI,UAAW,YACXlJ,UAAW,OACX2C,aAAc,QAElBk4E,WAAY,CACRh7E,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdy1C,YAAa,CACTv2C,SAAU,WACV+1C,OAAQ,GACR91C,MAAO,EACP2E,gBAAiB,SAErByD,OAAQ,CACJ9N,OAAQ,GACR6H,MAAO,GACPpC,SAAU,YAEdg7E,WAAY,CACRh7E,SAAU,aAIHi7E,GApFS,SAAC7kF,GACrB,OACIc,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,MAChB7O,EAAAhP,EAAAiP,cAAC+jF,GAAAhzF,EAAD,CAAkBizF,OAAQ/kF,EAAMy3C,QAASutC,sBAAoB,EAACx6D,KAAK,QAC/D1pB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAO86E,MAC1B1jF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC7c,MAAO0I,GAAO+6E,SAAUz4D,GAAI,IACnClrB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOowE,aAAcnwE,MAAM,UAAUL,QAAS,kBAAMtJ,EAAMilF,iBAAmBjlF,EAAMilF,gBAAgBjlF,EAAMqb,MACpHva,EAAAhP,EAAAiP,cAACmkF,GAAApzF,EAAD,MADJ,OAC2BkO,EAAMqI,OAEjCvH,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOy2C,aACfngD,EAAMmlF,WACHrkF,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYpI,MAAO0I,GAAOuI,OAAQsC,SAAUvU,EAAMmxD,QAAS7nD,QAAS,kBAAMtJ,EAAMolF,QAAUplF,EAAMolF,OAAOplF,EAAMqb,MACzGva,EAAAhP,EAAAiP,cAACskF,GAAAvzF,EAAD,CAAUkP,MAAO0I,GAAOk7E,WAAYl6E,SAAS,WAGrD5J,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYmL,SAAUvU,EAAMmxD,QAAS7nD,QAAS,kBAAMtJ,EAAMuzE,SAASvzE,EAAMqb,MACrEva,EAAAhP,EAAAiP,cAACwvD,GAAAz+D,EAAD,CAAYkP,MAAO0I,GAAOk7E,WAAYl6E,SAAS,iBCnBzE46E,eACF,SAAAA,EAAYtlF,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA0yF,IACtB1rF,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA2zF,GAAAnlF,KAAAvN,KAAMoN,KAaVulF,kBAAoB,SAAC/9D,GACjB5tB,EAAK4G,SAAS,CAAE6H,MAAOmf,EAAM20B,OAAOxiD,SAfdC,EAkB1B4rF,WAAa,WACL5rF,EAAK+G,MAAM0H,QACXzO,EAAKoG,MAAMylF,OAAO7rF,EAAK+G,MAAM0H,OAC7BzO,EAAK8rF,iBArBa9rF,EAyB1B8rF,aAAe,WACX9rF,EAAK4G,SAAS,CACV6H,WAAOrS,IAEX4D,EAAKoG,MAAMs4C,YA7BW1+C,EAgC1B+rF,YAAc,SAACC,GACI,UAAXA,EAAGlsF,KAAoBE,EAAK2a,UAC5B3a,EAAK4rF,cA/BT5rF,EAAK+G,MAAQ,CACT0H,MAAOzO,EAAKoG,MAAMynE,UAJA7tE,wEAsCtB,OACIkH,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMzN,KAAM+V,QAAS1V,KAAK8yF,aAAcr9E,MAAM,iBACjEvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAe28E,WAAYjzF,KAAK+yF,aAC3B/yF,KAAKoN,MAAMynE,UACR3mE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOo8E,WAA9C,kBACoBlzF,KAAKoN,MAAMynE,UAGnC3mE,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIhtC,MAAM,wBACNsxC,WAAS,EACTx+C,MAAO/G,KAAK+N,MAAM0H,OAAS,GAC3B8tC,SAAUvjD,KAAK2yF,kBACf16E,OAAO,SACPrZ,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAK8yF,aAAc/7E,MAAM,WAA1C,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,oBACH/R,QAAS1W,KAAK4yF,WACdjxE,SAAU3hB,KAAK2hB,SACf5K,MAAM,WAJV,2CAlDZ,MACyB,KAArB/W,KAAK+N,MAAM0H,QAAiBzV,KAAK+N,MAAM0H,aAXXlH,IAAMC,eA0EjCsI,GAAiD,CAC1DmC,OAAQ,CACJnB,SAAU,IAEdo7E,UAAW,CACPn8E,MAAO9D,GAAQC,KAAKU,OAIb8+E,MCzCAp7E,QALkC,CAC7C2tC,KAAM,CACFxtC,WAAY,KAGLH,CA5CkC,SAAClK,GAAiB,IAAAqwC,EACtCrwC,EAAjBoI,eADuD,IAAAioC,EAC7C,GAD6CA,EAAAiE,EAE/BnzC,IAAMozC,UAAS,GAFgBC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAExDyxC,EAFwDvxC,EAAA,GAE7CwxC,EAF6CxxC,EAAA,GAI/D,OACI1zC,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,sCACzDvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAeL,UAAWT,EAAQyvC,MAC9B/2C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAASovC,EACT5vC,SAAU,kBAAM6vC,GAAYD,IAC5Bp8E,MAAM,cAGd9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ5B,MAAzB,qKAKvB1F,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UAEA7I,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,wCACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAStJ,EAAMimF,gBACf1xE,UAAWwxE,GALf,gBCAVG,eACF,SAAAA,EAAYlmF,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAszF,IACtBtsF,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAu0F,GAAA/lF,KAAAvN,KAAMoN,KAUVmmF,WAAa,CAAC,0EAA2E,0EAA2E,mDAAoD,mDAAoD,kBAAmB,qBAAsB,UAX3RvsF,EAa1B4iF,UAAY,SAAC4J,GAAD,OAAmBxsF,EAAK4G,SAAS,SAAAmpD,GACzC,IAAM08B,EAAS,IAAI/pE,IAAIqtC,EAAU28B,YAEjC,OADAD,EAAO9pE,IAAI6pE,GACJ,CACHE,WAAYD,MAjBMzsF,EAqB1B+iF,WAAa,SAACyJ,GAAD,OAAmBxsF,EAAK4G,SAAS,SAAAmpD,GAC1C,IAAM08B,EAAS,IAAI/pE,IAAIqtC,EAAU28B,YAEjC,OADAD,EAAOE,OAAOH,GACP,CACHE,WAAYD,MAzBMzsF,EA6B1B01D,gBAAkB,SAAC82B,GACf,IAAMI,EAAM5sF,EAAKoG,MAAMymF,iBAAiBvoE,UAAUnC,KAAK,SAAAyqE,GAAG,OAAIA,EAAInrE,KAAO+qE,IACzExsF,EAAK4G,SAAS,CACVkmF,YAAaN,EACb/9E,MAAOm+E,EAAIn+E,OAASm+E,EAAI/e,SACxBkf,oBAAoB,KAlCF/sF,EAsC1BgtF,YAAc,SAACR,GACX,IAAMI,EAAM5sF,EAAKoG,MAAMymF,iBAAiBvoE,UAAUnC,KAAK,SAAAyqE,GAAG,OAAIA,EAAInrE,KAAO+qE,IACzExsF,EAAK4G,SAAS,CACV6H,MAAOm+E,EAAIn+E,MACX+lD,YAAY,EACZqZ,SAAU+e,EAAIn+E,MACdw+E,UAAWL,KA5CO5sF,EAgD1B21D,iBAAmB,WACf31D,EAAK4G,SAAS,CACVkmF,iBAAa1wF,EACbqS,WAAOrS,EACP2wF,oBAAoB,KApDF/sF,EAwD1BktF,UAAY,SAACt/D,GACT,IAAMu/D,EAAav/D,EAAM20B,OAAe6qC,MAAM,GAC1CD,GAAantF,EAAKusF,WAAWrmF,OAAO,SAAA0qB,GAAI,OAAIA,IAASu8D,EAAUv8D,OAAMr3B,OAAS,EAC9EyG,EAAK4G,SAAS,CACVymF,KAAMF,EACN34B,YAAY,EACZqZ,SAAUsf,EAAUj4E,OAGxBlV,EAAKoG,MAAM1O,gBAAgB,8EAA+E,YAjExFsI,EAqE1BstF,aAAe,SAAC7+E,GACZ,GAAIzO,EAAK+G,MAAMsmF,KAAM,CACjBrtF,EAAK4iF,UAAL,gBACA,IAAM2K,EAAwC,CAC1CF,KAAMrtF,EAAK+G,MAAMsmF,KACjB5+E,MAAOA,EACP2iB,SAAUpxB,EAAK+G,MAAMsmF,KAAKz8D,MAE9B5wB,EAAKoG,MAAMonF,YAAYxtF,EAAKoG,MAAM+uC,UAAWn1C,EAAKoG,MAAMlK,aAAc8D,EAAKoG,MAAMymF,iBAAiBprE,GAAI8rE,GACjGrtF,KAAK,kBAAMF,EAAK+iF,WAAW,iBAAiB,kBAAM/iF,EAAK+iF,WAAW,oBA9ErD/iF,EAkF1BytF,aAAe,SAACh/E,GACZ,GAAIzO,EAAK+G,MAAMkmF,UAAW,CACtB,GAAIjtF,EAAKoG,MAAMsnF,eAAgB,CAC3B,IAAMH,EAAavtF,EAAK+G,MAAMkmF,UAC9BM,EAAW9+E,MAAQA,EACnBzO,EAAKoG,MAAMsnF,eAAe1tF,EAAKoG,MAAM+uC,UAAWn1C,EAAKoG,MAAMlK,aAAc8D,EAAKoG,MAAMymF,iBAAiBprE,GAAI8rE,GAE7GvtF,EAAK4G,SAAS,CAAEqmF,eAAW7wF,MAzFT4D,EA6F1B2tF,eAAiB,SAAClsE,GACdzhB,EAAK4iF,UAAUnhE,GACf,IAAIosD,EAAW7tE,EAAK+G,MAAM0H,OAAS,GACnCzO,EAAKoG,MAAMunF,eAAe3tF,EAAKoG,MAAM+uC,UAAWn1C,EAAKoG,MAAMlK,aAAc8D,EAAKoG,MAAMymF,iBAAiBprE,GAAIA,EAAIosD,GACxG3tE,KAAK,kBAAMF,EAAK+iF,WAAWthE,IAAK,kBAAMzhB,EAAK+iF,WAAWthE,KAC3DzhB,EAAK21D,oBAlGiB31D,EAqG1B4tF,UAAY,WACR5tF,EAAK4G,SAAS,CACV4tD,YAAY,EACZ/lD,WAAOrS,EACPixF,UAAMjxF,EACNyxE,cAAUzxE,KA1GQ4D,EA+G1B6tF,sBAAwB,SAACrB,GACrB,IAAMI,EAAM5sF,EAAKoG,MAAMymF,iBAAiBvoE,UAAUnC,KAAK,SAAAyqE,GAAG,OAAIA,EAAInrE,KAAO+qE,IACzExsF,EAAK4G,SAAS,CACVknF,wBAAyBlB,EAAI/nE,WAC7BkpE,qCAAqC,KAnHnB/tF,EAuH1BguF,gCAAkC,WAC9BpvF,OAAOjG,KAAKqH,EAAK+G,MAAM+mF,wBAAyB,SAAU,uBAC1D9tF,EAAKiuF,gCAzHiBjuF,EA4H1BiuF,6BAA+B,WAC3BjuF,EAAK4G,SAAS,CAAEmnF,qCAAqC,KA1HrD/tF,EAAK+G,MAAQ,CACTgmF,oBAAoB,EACpBv4B,YAAY,EACZk4B,WAAY,IAAIhqE,IAChBqrE,qCAAqC,EACrCG,iCAAiC,GARfluF,wEAiIjB,IAAAQ,EAAAxH,KACL,OACIkO,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,oBACA/K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOo8E,WAA1B,4EACAhlF,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,MAChB7O,EAAAhP,EAAAiP,cAAC+jF,GAAAhzF,EAAD,CAAkBkP,MAAO0I,GAAOssC,YAAa+uC,OAAQnyF,KAAK+N,MAAM2lF,WAAW5mE,IAAI,gBAAiBslE,sBAAoB,EAACx6D,KAAK,QACtH1pB,EAAAhP,EAAAiP,cAACgnF,GAAD,CACI1sE,GAAG,aACH8oE,WAAYvxF,KAAKuzF,WAAWhpF,WAC5BmM,QAAS1W,KAAKk0F,UACdvyE,SAAU3hB,KAAKoN,MAAMmxD,QACrBxnD,MAAM,WALV,iBAWP/W,KAAKoN,MAAMymF,iBAAiBvoE,UAAU9qB,IAAI,SAAAozF,GACvC,OAAO1lF,EAAAhP,EAAAiP,cAACinF,GAAD,CACHtuF,IAAK8sF,EAAInrE,GACTA,GAAImrE,EAAInrE,GACRhT,MAAOm+E,EAAIn+E,OAASm+E,EAAI/e,SACxB0d,UAAW/qF,EAAK4F,MAAMmlF,UACtBh0B,QAAS/2D,EAAK4F,MAAMmxD,QACpB1Z,QAASr9C,EAAKuG,MAAM2lF,WAAW5mE,IAAI8mE,EAAInrE,IACvC4pE,gBAAiB7qF,EAAKqtF,sBACtBlU,SAAUn5E,EAAKk1D,gBACf81B,OAAQhrF,EAAKwsF,gBAKpBh0F,KAAK+N,MAAMgnF,qCACR7mF,EAAAhP,EAAAiP,cAACknF,GAAD,CACI11F,KAAMK,KAAK+N,MAAMgnF,oCACjB1B,gBAAiBrzF,KAAKg1F,gCACtBtvC,SAAU1lD,KAAKi1F,+BAGtBj1F,KAAK+N,MAAMytD,YACRttD,EAAAhP,EAAAiP,cAACmnF,GAAD,CACI31F,KAAMK,KAAK+N,MAAMytD,WACjBqZ,SAAU70E,KAAK+N,MAAM8mE,SACrBnvB,SAAU1lD,KAAK40F,UACf/B,OAAQ7yF,KAAK+N,MAAMkmF,UAAYj0F,KAAKy0F,aAAez0F,KAAKs0F,eAG/Dt0F,KAAK+N,MAAM+lF,aACR5lF,EAAAhP,EAAAiP,cAAConF,GAAD,CACI51F,KAAMK,KAAK+N,MAAMgmF,mBACjBlf,SAAU70E,KAAK+N,MAAM0H,MACrBi8E,WAAY1xF,KAAK+N,MAAM+lF,YACvB3tC,OAAQnmD,KAAK20F,eACbjvC,SAAU1lD,KAAK28D,2BAxLbpuD,IAAMC,eAgM1BsI,GAAiD,CACnDmC,OAAQ,CACJvB,WAAY,SACZI,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExBs/E,UAAW,CACPx7E,WAAY,SACZX,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd4B,MAAO,CACHjC,WAAY,GACZiB,aAAc,GACd0B,YAAa,GACbhD,cAAe,GACf1D,OAAQ,GAEZqJ,KAAM,CACF40E,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BwD,UAAW,GACX3F,OAAQ,GACR+I,QAAS,OACTuC,eAAgB,SAChBhC,WAAY,UAEhBuoC,YAAa,CACTjsC,YAAa,IAINm8E,MClNAkC,IAdAviF,GAAQC,KAAKU,KAGbX,GAAQC,KAAKU,KAKbX,GAAQC,KAAKU,KAjCM,SAACxG,GAC/B,OACQc,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACsnF,GAAD,CACIt5C,UAAW/uC,EAAM+uC,UACjBj5C,aAAckK,EAAMlK,aACpB2wF,iBAAkBzmF,EAAMymF,iBACxBW,YAAapnF,EAAMonF,YACnBG,eAAgBvnF,EAAMunF,eACtBj2F,gBAAiB0O,EAAM1O,sBCTzCoY,GAAiD,CACnDqwE,UAAW,CACPjwE,UAAW,EACXE,cAAe,IAEnB6B,OAAQ,CACJnB,SAAU,GACVJ,WAAY,SACZX,MAAO9D,GAAQC,KAAKU,MAExB8hF,MAAO,CACH3+E,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,KAIH69E,GA7BY,WACvB,OACQznF,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOqwE,WACfj5E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,sBAGA/K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAO4+E,OAA9C,gJCSH5+E,GAAiD,CAC1DiG,KAAM,CACF40E,UAAW,OACXj+E,OAAQ,GAEZm+E,SAAU,CACNv3E,QAAS,OACTO,WAAY,SACZgC,eAAgB,OAChBtL,OAAQ,IAEZugF,UAAW,CACPx3E,QAAS,OACTO,WAAY,SACZgC,eAAgB,QAChBtL,OAAQ,IAEZ8hB,KAAM,CACFtc,MAAO9D,GAAQiB,KAAKC,QACpB2D,SAAU,IAEd+8D,SAAU,CACN99D,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,IACZD,SAAU,GACVsI,UAAW,YACXlJ,UAAW,OACX2C,aAAc,QAElBk4E,WAAY,CACRh7E,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdpD,KAAM,CACFqC,MAAO,OACPe,SAAU,GACV89E,mBAAoB,cAIbC,GAlDS,SAACzoF,GACrB,OACIc,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,MACR7O,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAY+tC,UAAU,IAAIz+C,KAAMsH,EAAM9E,IAAKihD,OAAO,SAASC,IAAI,uBAC3Dt7C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOpC,MAAOtH,EAAMynE,aC4BhDye,IAhBArgF,GAAQC,KAAKU,KAGbX,GAAQC,KAAKU,KASPX,GAAQC,KAAKQ,OA3Bd,SAACtG,GACjB,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM0oF,KAAKt1F,IAAI,SAACu1F,EAAKjpF,GAClB,OAAOoB,EAAAhP,EAAAiP,cAAC6nF,GAAD,CAAiBlvF,IAAKivF,EAAIttE,GAAIngB,IAAKytF,EAAIjhB,WAAYD,SAAUkhB,EAAIlhB,gBC2ClF/9D,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7CmpF,GAD6C,CAEhD+N,cAAe,CACXl/E,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,OACVsC,YAAa,GACb3C,WAAY,IAEhBy+E,kBAAmB,CACf9+E,cAAe,MAIRmhE,GA3Da,SAACnrE,GACzB,IAAIuqE,EACAwe,EAEAC,EASJ,OAPwB,MAApBhpF,EAAMipF,aAENF,EAAsD,KADtDxe,EAAwBvqE,EAAMipF,WAAW,GAAG1e,4BACev0E,EAAYu0E,EAAsB1sE,MAAM,KAEnGmrF,EAD4BhpF,EAAMipF,WAAW,GAAGze,0BACW3sE,MAAM,MAGjEyC,GAAKwjB,kBAAoBxjB,GAAKyjB,kBAAoBzjB,GAAK+iB,2BAA6B0lE,EAEhFjoF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAa3tE,eAAhC,wBACArM,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAa1tE,kBAAhC,yCACAtM,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO0I,GAAOo/E,mBACtChoF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACV+8D,GAA8BA,EAA2B31F,IAAI,SAACyqB,GAC3D,OAAO/c,EAAAhP,EAAAiP,cAAA,MAAIC,MAAO0I,GAAOm/E,eAAgBhrE,QAO7Dvd,GAAK+jB,8BAAgC2kE,EAEjCloF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAa3tE,eAAhC,gCACArM,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAa1tE,kBAAhC,yCACAtM,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO0I,GAAOo/E,mBACtChoF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACVg9D,GAAkCA,EAA+B51F,IAAI,SAACyqB,GACnE,OAAO/c,EAAAhP,EAAAiP,cAAA,MAAIC,MAAO0I,GAAOm/E,eAAgBhrE,QAO1D,MCPIqrE,GA9BoB,SAAClpF,GAChC,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACM5N,MAAMC,QAAQyM,EAAMymF,iBAAiBxb,oBAAsBjrE,EAAMymF,iBAAiBxb,kBAAkB93E,OAAS,GAC3G2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACQJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAa3tE,eAAhC,sBAGArM,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAa1tE,kBAAhC,mEAGJtM,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACooF,GAAD,CAAcT,KAAM1oF,EAAMymF,iBAAiBxb,qBAE/CnqE,EAAAhP,EAAAiP,cAAA,YAGNzN,MAAMC,QAAQyM,EAAMymF,iBAAiB3Z,sBAAwB9sE,EAAMymF,iBAAiB3Z,oBAAoB35E,OAAS,GAC/G2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACqoF,GAAD,CACIH,WAAYjpF,EAAMymF,iBAAiB3Z,oCCjBzDuc,GAAoB54C,GAAS,yBAE7B64C,GAAqBnoF,IAAMizC,KAAK,SAACp0C,GACnC,OACIc,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAO6/E,SACpCzoF,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,aACNqoC,UAAWnD,GACXntC,MAAM,iBACNrV,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACR2H,SAAUixC,MAGlBvoF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOlD,MAA1B,4FAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwG,kBACfpP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOhB,EAAMuoE,WAAa7+D,GAAOuH,UAAYvH,GAAO+G,gBAAiBzQ,EAAMuoE,iBAcpG,IAAM7+D,GAAiD,CACnDlD,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd+F,eAAgB,CACZvD,QAAS,QACT/I,OAAQ,IAEZ+L,iBAAkB,CACdpG,UAAW,GACX2C,aAAc,GACd0D,aAAc,mBAElBc,UAAW,CACP/D,QAAS,OACTuC,eAAgB,SAChBhC,WAAY,WACZnD,WAAY,0BACZI,SAAU,GACVvG,OAAQ,IAEZolF,QAAS,CACLz/E,UAAW,GACX2C,aAAc,KAIPijC,eAnCf,SAAyB/uC,EAAmBi6C,GAExC,MAAO,CACH2tB,WAFeihB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,gBAkCpD+uC,CAAyB45C,ICnElCG,GAAmBtoF,IAAMizC,KAAK,SAACp0C,GACjC,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAAC2oF,GAAD,CAAoB7oC,SAjBX,mBAmBb//C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAEC,UAAW,WACnBjB,EAAM2pF,WAAa7oF,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOsO,GAA2B0B,gBAAxC,sCACrBlQ,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,kBACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM04C,WACfnkC,SAAUvU,EAAMw4C,UAAYx4C,EAAM2pF,WAAa3pF,EAAMmxD,SANzD,aAgBLpZ,gBAAoC,CAAEF,KAtC5B,iBAsCVE,CAAyD0xC,0DC9BlEG,GAAmBzoF,IAAMizC,KAAK,SAACp0C,GACjC,OACIc,EAAAhP,EAAAiP,cAAC8oF,GAAA,EAAD,CAAgBvpC,UAAW,EAAGt/C,MAAO0I,GAAOogF,gBACxChpF,EAAAhP,EAAAiP,cAACgpF,GAAA,EAAD,CAAuBC,WAAYlpF,EAAAhP,EAAAiP,cAACkpF,GAAAn4F,EAAD,OAC/BgP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO4C,OACdtM,EAAMkqF,UAGfppF,EAAAhP,EAAAiP,cAACopF,GAAA,EAAD,KACIrpF,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAEgL,MAAO,SACjBlL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0gF,oBACdpqF,EAAM8lF,WAEXhlF,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOnB,UACdvI,EAAMuI,eAQzBmB,GAAiD,CACnD4C,MAAO,CACHU,YAAa,QAEjB88E,eAAgB,CACZxjF,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQ+B,IAAIb,SAE7BqjF,mBAAoB,CAChBzgF,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVyE,cAAe,GACfnD,MAAO,OACPlC,WAAY,GACZmC,WAAY,IAEhB1D,SAAU,CACNyD,MAAO,SAGA49E,qCC3BTlgF,GAA2C,CAC7CsyB,KAAM,CACFxtB,gBAAiB3I,GAAQC,KAAKI,KAC9BmkF,YAAa,EACbt9B,YAAa,SACbna,YAAa/sC,GAAQC,KAAKU,KAC1B4D,QAAS,SACT4B,MAAO,OACP/K,UAAW,UAEfgR,OAAQ,CACJnI,UAAW,EACXkC,MAAO,QAEXia,KAAM,CACFtc,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdlE,KAAM,CACFmD,MAAO9D,GAAQiB,KAAKC,QACpBsH,cAAe,cAIRohC,eACXvlC,KAAWR,IADA+lC,CAxCc,SAACzvC,GAAiB,IAAAqwC,EACMrwC,EAAzCoI,eADmC,IAAAioC,EACzB,GADyBA,EACrB/mC,EAA2BtJ,EAA3BsJ,QAASghF,EAAkBtqF,EAAlBsqF,cAC/B,OACQxpF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACMopF,GACExpF,EAAAhP,EAAAiP,cAACwpF,GAAA,EAAD,CAAYjhF,QAASA,EAAS+R,GAAG,cAAc87B,UAAU,MAAMtuC,UAAWT,EAAQ6J,OAAQsC,SAAUvU,EAAMsqF,eACtGxpF,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EAAGz3C,UAAWT,EAAQ4zB,MACpCl7B,EAAAhP,EAAAiP,cAACypF,GAAA14F,EAAD,CAAW+W,UAAWT,EAAQ6d,OAC9BnlB,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ5B,MAAxB,4DCWtBs3C,GAAe,CAAEC,QAAQ,GA+MzBr0C,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,EACXM,QAAS,aAEb/B,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdsmD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEfwpF,QAAS,CACLv9E,QAAS,OACTuC,eAAgB,iBAEpBpE,aAAc,CACVC,aAAc,IAElBo/E,yBAA0B,CACtB9gF,SAAU,WACVhI,IAAK,EACLiI,MAAO,KAIA8gF,GAxOY,SAAC3qF,GAAiB,IAEjC8O,EAAuD9O,EAAvD8O,KAAM87E,EAAiD5qF,EAAjD4qF,SAAUlrF,EAAuCM,EAAvCN,MAAO6zE,EAAgCvzE,EAAhCuzE,SAAUsX,EAAsB7qF,EAAtB6qF,kBAEnCC,EAAY3pF,IAAMuzC,YAAY,SAAUq2C,EAAap6C,GAEvD,IAAMq6C,EAAar6C,EAAUq4B,eAAe4hB,IAAaj6C,EAAUq4B,eAAe4hB,GAAUzjB,cAAch0E,OAAS,GAC5Gw9C,EAAUq4B,eAAe4hB,GAAUzjB,cAAchoE,OAAO,SAAC2xD,EAAat9D,GACrE,OAAOs9D,GAAQvxD,OAAO/L,EAAK0zE,kBAAoB,IAChD,GAEP,OAAK8jB,GAA6B,MAAfA,EAIR,6CAHP,GAKL,IAEGpzC,EAAoBz2C,IAAM2xD,QAAQ,kBAAM/hB,GAAe,MAAM,IAGnE,OACIjwC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OAEjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO+gF,SACf3pF,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,iBAAgDwiF,EAAoB,GAApB,IAAA1zF,OAA6BuI,EAAQ,EAArC,MAC/CmrF,EAAoB,GAAKnrF,EAAQ,GAC9BoB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,iBAAiB1R,MAAM,UAAUL,QAAS,kBAAMiqE,EAAS7zE,KAApE,yBAKRoB,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GAErBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,SACJqoC,UAAWnD,GACXntC,MAAM,uBACN0N,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,iBACJqoC,UAAWnD,GACXntC,MAAM,cACNwvC,QAAM,EACN7kD,QAAQ,WACR+iB,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT0G,KAAMhO,GACNmO,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbkuC,KAAiBz0C,IAAI,SAAAo2B,GAAG,OACrB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,UACJjI,MAAM,MACNswC,UAAWnD,GACX+K,UAAWrxB,GACXuB,OAAQgjC,GACR7Z,SAAU,CAAChH,GAAKwG,GAChBiH,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT3mD,QAAQ,WACRwkD,YAAY,qBAGpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,2BACJqoC,UAAWnD,GACXntC,MAAM,2BACN0N,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAU,CAAC6yC,IACXpsC,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,sBACJqoC,UAAWnD,GACXntC,MAAM,eACNrV,QAAQ,WACR2mD,WAAS,EACT5jC,SAAUvU,EAAMsqF,cAChBlyC,SAAUjH,GACVliB,OAAQ2iC,GACR7S,UAAWtxB,GACXoxB,KAAMhO,GACNmF,YAAY,yBAGpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,oBACJqoC,UAAWnD,GACXntC,MAAM,mBACNsxC,WAAS,EACTC,SAAU,CAACzG,GAAiBm5C,GAC5Bt5F,QAAQ,WACR2hD,WAAY,CACR9nC,aAAevK,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBlqF,MAAO0I,GAAO2B,aAAczB,SAAS,OAArD,MAEnBi1C,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,+BACJqoC,UAAWnD,GACXz/B,SAAUvU,EAAMsqF,cAChBzjF,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACRqtD,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,+BACJqoC,UAAWnD,GACXz/B,SAAUvU,EAAMsqF,cAChBzjF,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,qBACJqoC,UAAWnD,GACXntC,MAAM,OACNsxC,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,uBACJqoC,UAAWnD,GACXntC,MAAM,SACNrV,QAAQ,WACR2mD,WAAS,EACT5jC,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,MAId/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,wBACJqoC,UAAWnD,GACXntC,MAAM,QACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT0G,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChBtrC,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,wBACJqoC,UAAWnD,GACXntC,MAAM,WACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU/G,GACV0N,UAAWpxB,GACXsB,OAAQ6iC,GACRv9C,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,GACNmF,YAAY,wBCzM9BtsC,GAA2C,CAC7CsyB,KAAM,CACFxtB,gBAAiB3I,GAAQC,KAAKI,KAC9BmkF,YAAa,EACbt9B,YAAa,SACbna,YAAa/sC,GAAQC,KAAKU,KAC1B4D,QAAS,QACT4B,MAAO,OACP/K,UAAW,UAEfgR,OAAQ,CACJnI,UAAW,EACXkC,MAAO,QAEXia,KAAM,CACFtc,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdlE,KAAM,CACFmD,MAAO9D,GAAQiB,KAAKC,QACpBsH,cAAe,cAIRohC,eACXvlC,KAAWR,IADA+lC,CAxCa,SAACzvC,GAAiB,IAAAqwC,EACRrwC,EAA1BoI,eADkC,IAAAioC,EACxB,GADwBA,EACpB/mC,EAAYtJ,EAAZsJ,QACtB,OACIxI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACElB,EAAMsqF,eACRxpF,EAAAhP,EAAAiP,cAACwpF,GAAA,EAAD,CAAYjhF,QAASA,EAAS+R,GAAG,qBAAqB87B,UAAU,MAAMtuC,UAAWT,EAAQ6J,OAAQsC,SAAUvU,EAAMsqF,eAC7GxpF,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EAAGz3C,UAAWT,EAAQ4zB,MACpCl7B,EAAAhP,EAAAiP,cAACypF,GAAA14F,EAAD,CAAW+W,UAAWT,EAAQ6d,OAC9BnlB,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ5B,MAAxB,kCC4BD2kF,GA7B8ChqF,IAAMizC,KAAK,SAACp0C,GAAiB,IAC9E20C,EAAW30C,EAAX20C,OAD8EL,EAE5DnzC,IAAMozC,SAAS,GAF6CC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAExE82C,GAFwE52C,EAAA,GAAAA,EAAA,IAIhFsoC,EAAe37E,IAAMuzC,YAAY,SAACh1C,GACpC0rF,EAAU1rF,EAAQ,EAAK,EAAI,EAAKA,EAAQ,GACxCi1C,EAAO02C,OAAO3rF,IACf,CAACi1C,IACJ,OACI7zC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKyzC,EAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GACtB,OACI7zC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACuqF,GAAD,CAAoBhB,eAAgBtqF,EAAMurF,UAAsB,IAAV7rF,GAAeM,EAAMwrF,sBAAuB3qC,SAAU7gD,EAAM6gD,SAAU/xC,KAAMA,EAAM87E,SAAU5qF,EAAM4qF,SAAUlrF,MAAOA,EAAOmrF,kBAAmBl2C,EAAOxhD,OAAQogF,SAAUuJ,OAIxOh8E,EAAAhP,EAAAiP,cAAC0qF,GAAD,CAAqBniF,QAAS,WAAQqrC,EAAOl0B,KAAK,KAAO6pE,cAAe31C,EAAOxhD,QAAU,QCa/F2qD,GAAe,CAAEC,QAAQ,GA2N/B,IAAMr0C,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEb/B,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdsmD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEfwpF,QAAS,CACLv9E,QAAS,OACTuC,eAAgB,iBAEpBpE,aAAc,CACVC,aAAc,IAElBo/E,yBAA0B,CACtB9gF,SAAU,WACVhI,IAAK,EACLiI,MAAO,KAKA6lC,eAtCf,SAAyB/uC,EAAmBi6C,GACxC,IAAIosB,EAAewiB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS9rC,KAAxD,kBAGnB,MAAO,CACHy8E,SAF4B,MAAjBvkB,GAAyC,KAAjBA,EAGnCwkB,sBAJwBhC,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS9rC,KAAxD,2CAoCjB4gC,CArPa,SAAC1vC,GAEzB,IAAM8qF,EAAY3pF,IAAMuzC,YAAY,SAAUq2C,EAAap6C,GACvD,IAAMq6C,GAAsBr6C,EAAUq4B,gBAAkB,IAAI7pE,OAAO,SAAC2xD,EAAat9D,GAC7E,OAAOs9D,GAAQvxD,OAAO/L,EAAK0zE,kBAAoB,IAChD,GACH,GAAK8jB,GAA6B,MAAfA,EAGnB,MAAO,yCACR,IACGpzC,EAAoBz2C,IAAM2xD,QAAQ,kBAAM/hB,GAAe,MAAM,IAE3DjiC,EAAsC9O,EAAtC8O,KAAMpP,EAAgCM,EAAhCN,MAAO6zE,EAAyBvzE,EAAzBuzE,SAAUmY,EAAe1rF,EAAf0rF,WAC/B,OACI5qF,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO+gF,SACf3pF,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,gCAA+DqjF,EAAa,GAAb,IAAAv0F,OAAsBuI,EAAQ,EAA9B,MAC9DgsF,EAAa,GAAKhsF,EAAQ,GACvBoB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,kBAAkB1R,MAAM,UAAUL,QAAS,kBAAMiqE,EAAS7zE,KAArE,iBAKRoB,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,SACJqoC,UAAWnD,GACXntC,MAAM,uBACN0N,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,iBACJqoC,UAAWnD,GACXntC,MAAM,cACNwvC,QAAM,EACN7kD,QAAQ,WACR+iB,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT0G,KAAMhO,GACNmO,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbkuC,KAAiBz0C,IAAI,SAAAo2B,GAAG,OACrB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,UACJjI,MAAO7G,EAAMurF,SAAW,SAAW,MACnCp0C,UAAWnD,GACX+K,UAAW/+C,EAAMurF,SAAW39D,GAAeF,GAC3CuB,OAAQjvB,EAAMurF,SAAWv5B,GAAYC,GACrC7Z,SAAUp4C,EAAMurF,SAAW,CAACvpE,GAAK41B,GAAqB,CAACxG,GAAKwG,GAC5DiH,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT3mD,QAAQ,WACRwkD,YAAah2C,EAAMurF,SAAW,kBAAoB,sBAG1DzqF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,2BACJqoC,UAAWnD,GACXntC,MAAM,2BACN0N,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT3mD,QAAQ,WACRqtD,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,sBACJqoC,UAAWnD,GACXntC,MAAM,eACNrV,QAAQ,WACR2mD,WAAS,EACT5jC,SAAUvU,EAAMsqF,cAChBlyC,SAAUjH,GACVliB,OAAQ2iC,GACR7S,UAAWtxB,GACXoxB,KAAMhO,GACNmF,YAAY,yBAGpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,oBACJqoC,UAAWnD,GACXntC,MAAM,mBACN0N,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACTC,SAAU,CAACzG,GAAiBm5C,GAC5Bt5F,QAAQ,WACR2hD,WAAY,CACR9nC,aAAevK,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBlqF,MAAO0I,GAAO2B,aAAczB,SAAS,OAArD,MAEnBi1C,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,+BACJqoC,UAAWnD,GACXz/B,SAAUvU,EAAMsqF,cAChBzjF,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACRqtD,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,+BACJqoC,UAAWnD,GACXz/B,SAAUvU,EAAMsqF,cAChBzjF,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,qBACJqoC,UAAWnD,GACXntC,MAAM,OACNsxC,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,uBACJqoC,UAAWnD,GACXntC,MAAM,SACNrV,QAAQ,WACR2mD,WAAS,EACT5jC,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,MAId/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,wBACJqoC,UAAWnD,GACXntC,MAAM,QACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT0G,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChBtrC,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,wBACJqoC,UAAWnD,GACXntC,MAAM,WACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU/G,GACV0N,UAAWpxB,GACXsB,OAAQ6iC,GACRv9C,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,GACNmF,YAAY,sBAKxBl1C,EAAAhP,EAAAiP,cAAA,WAEAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,wCACJqoC,UAAWZ,GACX1vC,MAAM,mDACNsvC,SAAU,SAAC5sC,GAAavJ,EAAM2rF,mBAAmBpiF,EAAG7J,IACpD6U,SAAUvU,EAAMurF,YAGxBzqF,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAI,GAAA3X,OAAK6I,EAAM8O,KAAX,kBAAiCqoC,UAAWg0C,GAAwBP,SAAU5qF,EAAMN,MAAOkhD,OAAQ5gD,EAAM4gD,OAAQC,SAAU7gD,EAAM6gD,SAAUypC,cAAetqF,EAAMsqF,cAAeiB,SAAUvrF,EAAMurF,SAAUC,sBAAuBxrF,EAAMwrF,2BC9KnPI,GA/D+CzqF,IAAMizC,KAAK,SAACp0C,GAAiB,IAC/E20C,EAAW30C,EAAX20C,OAEFk3C,EAAY1qF,IAAMuzC,YAAY,WAEhCC,EAAOl0B,KADQ,CAAC0mD,cAAc,CAAC,OAEhC,CAACxyB,IAEEmoC,EAAe37E,IAAMuzC,YAAY,SAACh1C,GACpCi1C,EAAO02C,OAAO3rF,IACf,CAACi1C,IAGEm3C,EAA6B,SAACpsF,EAAalM,GAC7CwM,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,0BAAmDlM,EAAOA,EAAKsb,KAAO,MACnF9O,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,kCAA2DlM,EAAOA,EAAKwzE,aAAe,MACnGhnE,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,2BAAoDlM,EAAOA,EAAKgzE,MAAQ,MACrFxmE,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,4CAAqElM,EAAOA,EAAKyzE,uBAAyB,MACvHjnE,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,qCAA8DlM,EAAOA,EAAK0zE,gBAAkB,MACzGlnE,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,uCAAgElM,EAAQA,EAAKy5C,aAAez5C,EAAKy5C,YAAakE,MAAS,MACpInxC,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,gDAAyElM,EAAQA,EAAKy5C,aAAez5C,EAAKy5C,YAAa+sB,eAAkB,MACtJh6D,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,gDAAyElM,EAAQA,EAAKy5C,aAAez5C,EAAKy5C,YAAagtB,eAAkB,MACtJj6D,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,sCAA+DlM,EAAQA,EAAKy5C,aAAez5C,EAAKy5C,YAAaitB,KAAQ,MAClIl6D,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,wCAAiElM,EAAQA,EAAKy5C,aAAez5C,EAAKy5C,YAAaktB,OAAU,MACtIn6D,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,yCAAkElM,EAAQA,EAAKy5C,aAAez5C,EAAKy5C,YAAaG,QAAW,MACxIptC,EAAM4gD,OAAO,kBAAkBlhD,EAAlB,yCAAkElM,EAAQA,EAAKy5C,aAAez5C,EAAKy5C,YAAamtB,QAAW,OAiB5I,OACIt5D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKyzC,EAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GACtB,OACI7zC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrF,GAAD,CAAqBnrC,OAAQ5gD,EAAM4gD,OAAQt3C,QAASuiF,EAAYnyF,IAAKoV,EAAMA,KAAMA,EAAMykE,SAAUuJ,EACzFp9E,MAAOA,EAAOisF,mBAAoB,SAACpiF,IAlBpC,SAACyiF,EAAUtsF,GAClC,IAAIusF,EAAMjsF,EAAM20C,OAAOu3C,SAEpBF,EAAI7vC,OAAOxF,QAEVm1C,EAA2BpsF,EAAMusF,EAAIvsF,IAGrCosF,EAA2BpsF,EAAM,MAUkCisF,CAAmBpiF,EAAG7J,IACrEgsF,WAAY/2C,EAAOxhD,OAAQ0tD,SAAU7gD,EAAM6gD,SAAUypC,cAAetqF,EAAMsqF,oBAI5FtqF,EAAMsqF,eACJxpF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACorF,GAAD,CAAsB7iF,QAASuiF,EAAWvB,cAAqC,WAAtBtqF,EAAM4d,aAA8C,IAAlB+2B,EAAOxhD,aCvChH2qD,GAAe,CAAEC,QAAQ,GACzBnG,GAAoB7G,GAAe,KA2HnCrnC,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEb/B,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdsmD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,UAIJmrF,GAxIsB,SAACpsF,GAClC,OACIc,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,mBACAvH,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,yBACNqoC,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,yBACNqoC,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACT5jC,SAAUvU,EAAMsqF,cAChB94F,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,eACNqoC,UAAWnD,GACXntC,MAAM,OACNsxC,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,MAGd/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,iBACNqoC,UAAWnD,GACXntC,MAAM,SACNrV,QAAQ,WACR2mD,WAAS,EACT5jC,SAAUvU,EAAMsqF,cAChBzrC,KAAMhO,MAId/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,kBACNqoC,UAAWnD,GACXntC,MAAM,QACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT0G,KAAMhO,GACNmO,YAAalB,GACbvpC,SAAUvU,EAAMsqF,cAChBvrC,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,kBACNqoC,UAAWnD,GACXntC,MAAM,WACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU/G,GACV0N,UAAWpxB,GACXsB,OAAQ6iC,GACRjT,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChBt0C,YAAY,qBAInBh2C,EAAMmc,qBAAqBwW,SAASre,GAAuBwE,yBACxDhY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,gBACNqoC,UAAWnD,GACXntC,MAAM,eACNrV,QAAQ,WACR2mD,WAAS,EACTlpB,OAAQ2iC,GACR/S,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChBt0C,YAAY,uBAKvBh2C,EAAMmc,qBAAqBwW,SAASre,GAAuBuE,yBACxD/X,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gBACLqoC,UAAWnD,GACXntC,MAAM,gBACNsxC,WAAS,EACTC,SAAU,CAAC3J,GAAOmJ,IAClBiH,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChB94F,QAAQ,iBCvI9BssD,GAAe,CAAEC,QAAQ,GAsBzBsuC,GAA+BlrF,IAAMizC,KAAK,SAACp0C,GAC7C,IAAMssF,EAAkBnrF,IAAM2xD,QAAQ,kBAAM/hB,GAAe,IAAI,IACzDkiB,EAAmB9xD,IAAM2xD,QAAQ,kBAAM/hB,GAAe,KAAK,IAC3D6G,EAAoBz2C,IAAM2xD,QAAQ,kBAAM/hB,GAAe,MAAM,IAEnE,OACIjwC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,uBACAvH,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,2BACLjI,MAAM,eACNswC,UAAWnD,GACXoE,SAAU6a,EACV9a,WAAS,EAET0G,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChB94F,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,0BACLjI,MAAM,yBACNswC,UAAWnD,GACXoE,SAAUk0C,EACVztC,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChBnyC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,4BACLjI,MAAM,SACNswC,UAAWnD,GACX+K,UAAWnxB,GACXqB,OAAQ+iC,GACRnT,KAAMhO,GACNuH,SAAU,CAACp2B,GAAK41B,GAChBO,WAAS,EACT5jC,SAAUvU,EAAMsqF,cAChB94F,QAAQ,WACRwkD,YAAY,qBAGnBh2C,EAAMmc,qBAAqBwW,SAASre,GAAuB8D,gDACxDtX,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,wCACLqoC,UAAWhC,GACXtuC,MAAM,6BACNsxC,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACbC,UAAW1wB,GACX9Z,SAAUvU,EAAMsqF,cAChBlyC,SAAUrG,GACV8M,KAAMhO,MAIlB/vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,qCACNqoC,UAAWnD,GACXntC,MAAM,eACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT0G,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChBtrC,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,K1FuZN,SAACwiB,GAC7B,IAAM4nB,EAAef,KACrB,OAAI7mB,EAAqBwW,SAASre,GAAuB+D,kCAC9CsvB,GAAqB5D,GAErB2D,GAAkB3D,G0F3ZRwoD,CAAiBvsF,EAAMmc,sBAAsB/oB,IAAI,SAAAo2B,GAAG,OACjD1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIpDqG,EAAMmc,qBAAqBwW,SAASre,GAAuBoE,oCACxD5X,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,qCACLjI,MAAM,oCACNswC,UAAWnD,GACXoE,SAAU6a,EACV9a,WAAS,EACT0G,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChB94F,QAAQ,cAInBwO,EAAMmc,qBAAqBwW,SAASre,GAAuBqE,mCACxD7X,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oCACLjI,MAAM,mCACNswC,UAAWnD,GACXoE,SAAU6a,EACV9a,WAAS,EACT0G,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChB94F,QAAQ,cAInBwO,EAAMmc,qBAAqBwW,SAASre,GAAuBsE,gCACxD9X,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iCACLjI,MAAM,+BACNswC,UAAWnD,GACXoE,SAAU,CAAC6a,EAAkBxkB,IAC7B0J,WAAS,EACT0G,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,cAChB94F,QAAQ,kBAS9BkY,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEb/B,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdsmD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,UAIJorF,MCrJTG,GAA2CrrF,IAAMizC,KAAK,SAACp0C,GACzD,IAAMizD,EAAmB9xD,IAAM2xD,QAAQ,kBAAM/hB,GAAe,KAAK,IACjE,OACIjwC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,yBACAvH,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,qCACLqoC,UAAWZ,GACX1vC,MAAM,6DACN0N,SAAUvU,EAAMsqF,iBAGvBtqF,EAAMysF,sBACH3rF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,0CACLqoC,UAAWZ,GACX1vC,MAAM,6CACN0N,SAAUvU,EAAMsqF,gBAAkBtqF,EAAMysF,yBAKvDzsF,EAAMysF,sBACH3rF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,kCACLjI,MAAM,eACNswC,UAAWnD,GACXoE,SAAU6a,EACV9a,WAAS,EACT0G,KAAMhO,GACNt8B,SAAUvU,EAAMsqF,gBAAkBtqF,EAAMysF,qBACxCj7F,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sCACLqoC,UAAWhC,GACXtuC,MAAM,6BACNsxC,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACbC,UAAW1wB,GACX9Z,SAAUvU,EAAMsqF,gBAAkBtqF,EAAMysF,qBACxC5tC,KAAMhO,WAUhCnnC,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEb/B,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdsmD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,UAYJyuC,mBARf,SAAyB/uC,EAAmBi6C,GAGxC,MAAO,CACH6xC,qBAHyBjD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,wCAO9D+uC,CAAyB88C,ICvGlC1uC,GAAe,CAAEC,QAAQ,GA4CzB2uC,GAAmCvrF,IAAMizC,KAAK,SAACp0C,GACjD,IAAMizD,EAAmB9xD,IAAM2xD,QAAQ,kBAAM/hB,GAAe,KAAK,IAC3D47C,EAAoBxvE,GAAY,YAAaC,GAAgB6jB,iBAC7D2rD,IAA+B5sF,EAAMipE,qBAAsBjpE,EAAMipE,oBAAoBhoC,kBAAoB0rD,EAU/G,OANAxrF,IAAMq9C,UAAU,WACRx+C,EAAMipE,sBAAkF,IAA3DjpE,EAAMipE,oBAAoBlB,8BACvD/nE,EAAM6sF,0BAA0B,+CAA+C,IAEpF,IAGC/rF,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,wBACAvH,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACpBl7C,EAAMmc,qBAAqBwW,SAASre,GAAuByE,wCACxDjY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sCACLqoC,UAAWnD,GACXntC,MAAM,oBACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT0G,KAAMhO,GACNmO,YAAalB,GACbvpC,SAAUvU,EAAMsqF,cAChBvrC,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,K5FicR,WAC9B,IAAMoqC,EAAef,KACrB,OAAO8E,GAAoB/D,G4FlcF+oD,GAAqB15F,IAAI,SAAAo2B,GAAG,OACzB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAKxDqG,EAAMmc,qBAAqBwW,SAASre,GAAuB0E,+CACxDlY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,6CACLjI,MAAM,2BACNswC,UAAWnD,GACXqC,QAAM,EACN+B,SAAU,CAAC6a,EAAkBxhB,IAC7B0G,WAAS,EACT0G,KAAO+tC,OAA0D52F,EAA7B66C,GACpCmO,YAAalB,GACbtzB,KAAK,SACLh5B,QAAQ,WACR+iB,SAAUvU,EAAMsqF,eAAiBsC,GAEjC9rF,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbqG,EAAM+sF,YAnDF,CAAC,EAAG,GAAI,IAoDY35F,IAAI,SAAAo2B,GAAG,OACxB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAK7vB,MAAO6vB,GAAMA,EAA/B,WApDA,CAAC,EAAG,GAAI,GAAI,IAuDQp2B,IAAI,SAAAo2B,GAAG,OAC3B1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAK7vB,MAAO6vB,GAAMA,EAA/B,aAKnBxpB,EAAMmc,qBAAqBwW,SAASre,GAAuB2E,oDACxDnY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,8CACLqoC,UAAWZ,GACX1vC,MAAM,6DACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbvpC,UAAU,IAGdzT,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,gMACPinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,UAIxC1R,EAAMmc,qBAAqBwW,SAASre,GAAuB4E,qDACxDpY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,mDACLqoC,UAAWZ,GACX1vC,MAAM,mEACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbvpC,UAAU,KAKrBvU,EAAMmc,qBAAqBwW,SAASre,GAAuB6E,2CACxDrY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,2CACLqoC,UAAWZ,GACX1vC,MAAM,8CACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbvpC,SAAUvU,EAAMsqF,gBAGpBxpF,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,uMACPinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,UAIxC1R,EAAMmc,qBAAqBwW,SAASre,GAAuB+E,sCACxDvY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sCACLqoC,UAAWZ,GACX1vC,MAAM,0BACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbvpC,UAAU,IAGdzT,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,kQACPinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,UAIxC1R,EAAMmc,qBAAqBwW,SAASre,GAAuBgF,+CACxDxY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAEXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,6CACLqoC,UAAWZ,GACX1vC,MAAM,oCACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbvpC,UAAU,KAKrBvU,EAAMmc,qBAAqBwW,SAASre,GAAuBiF,8CACxDzY,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAEXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,4CACLqoC,UAAWZ,GACX1vC,MAAM,kCACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbvpC,UAAU,SAUhC7K,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEb/B,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdsmD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEfyQ,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACPnB,QAAS,IAkBF6kC,mBAdf,SAAyB/uC,EAAmBi6C,GAGxC,MAAO,CACHquB,oBAHwBugB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,yBAO5E,SAA4B1O,EAAe2oD,GACvC,MAAO,CACHiyC,0BAA2B,SAACG,EAAerzF,GAAhB,OAA+B1H,EAAS2uD,aAAOhG,EAASiG,SAAUmsC,EAAOrzF,OAI7F+1C,CAA6Cg9C,ICrPtDO,GAAkC9rF,IAAMizC,KAAK,SAACp0C,GAChD,IAAMizD,EAAmB9xD,IAAM2xD,QAAQ,kBAAM/hB,GAAe,KAAK,IAChD/wC,EAAMmc,qBAAqBwW,SAASre,GAAuBwF,mDAE5E,OACIhZ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,0BACAvH,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oBACLjI,MAAM,sBACNswC,UAAWnD,GACXmE,WAAS,EACT3tB,KAAK,SACL4tB,SAAU,CAAC5G,GAAmByhB,GAC9B1+C,UAAU,EACV/iB,QAAQ,kBAQ1BkY,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEb/B,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdsmD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEf2M,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,SAE1B+G,YAAa,CACTnE,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,KAIHuiF,MCvCTC,GAA8B/rF,IAAMizC,KAAK,SAACp0C,GAC5C,IAAMizD,EAAmB9xD,IAAM2xD,QAAQ,kBAAM/hB,GAAe,KAAK,IAEjE,OAEIjwC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,sBACAvH,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACpBl7C,EAAMmc,qBAAqBwW,SAASre,GAAuBkF,gCACxD1Y,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACAppC,KAAK,uBACLjI,MAAM,aACNswC,UAAWnD,GACXoE,SAAU6a,EACV9a,WAAS,EACT0G,KAAMhO,GACNr/C,QAAQ,WACR+iB,UAAU,KAIjBvU,EAAMmc,qBAAqBwW,SAASre,GAAuBmF,+BACxD3Y,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sBACLjI,MAAM,YACNswC,UAAWnD,GACXoE,SAAU6a,EACV9a,WAAS,EACT0G,KAAMhO,GACNr/C,QAAQ,WACR+iB,UAAU,KAIrBvU,EAAMmc,qBAAqBwW,SAASre,GAAuBoF,0BACxD5Y,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oCACLjI,MAAM,2BACNswC,UAAWnD,GACXoE,SAAU6a,EACV9a,WAAS,EACT0G,KAAMhO,GACNr/C,QAAQ,WACR+iB,SAAUvU,EAAMsqF,qBAStC5gF,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEbqgF,QAAS,CACLv9E,QAAS,OACTuC,eAAgB,iBAEpBpH,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,KAIHwiF,MCvETC,GAA8BhsF,IAAMizC,KAAK,SAACp0C,GAC5C,IAAMizD,EAAmB9xD,IAAM2xD,QAAQ,kBAAM/hB,GAAe,KAAK,IAWjE,OAEIjwC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOrB,OAA1B,sBACAvH,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACpBl7C,EAAMmc,qBAAqBwW,SAASre,GAAuBsF,oCACxD9Y,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gBACLjI,MAAM,sCACNswC,UAAWnD,GACXoE,SAAU6a,EACV9a,WAAS,EACT0G,KAAMhO,GACNr/C,QAAQ,WACR+iB,SAAUvU,EAAMsqF,iBAI3BtqF,EAAMmc,qBAAqBwW,SAASre,GAAuBqF,0CACxD7Y,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sBACLjI,MAAM,wBACNswC,UAAWnD,GACXoE,SAAU,CAAC5G,GAAmByhB,GAC9B9a,WAAS,EACT3tB,KAAK,SACLq0B,KAAMhO,GACNr/C,QAAQ,WACR+iB,SAAUvU,EAAMsqF,iBAI3BtqF,EAAMmc,qBAAqBwW,SAASre,GAAuBuF,4CACxD/Y,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWL,GACXC,UAAU,cACVlwC,MAAM,eACNsvC,SApDC,SAACmgC,EAAa38E,GAC1B,UAAVA,GACCqG,EAAMotF,mBAAmB,oBAAqB,MAC9CptF,EAAMotF,mBAAmB,oBAAqB,OAC/B,QAATzzF,GACNqG,EAAMotF,mBAAmB,cAAe,OAgDpBj1C,WAAS,GAETr3C,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO2jF,YACd1zF,MAAM,QACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MAAM,UAEV/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO2jF,YACd1zF,MAAM,MACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MAAM,UAIK,UAAtB7G,EAAMstF,aACHxsF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAO2jF,aACpCvsF,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLjI,MAAM,eACNswC,UAAWnD,GACXoE,SAAU,CAAC5G,GAAmByhB,GAC9B9a,WAAS,EACT0G,KAAMhO,GACNr/C,QAAQ,WACR+iB,SAAUvU,EAAMsqF,iBAIL,QAAtBtqF,EAAMstF,aACHxsF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oBACLjI,MAAM,iBACNswC,UAAWnD,GACXoE,SAAU,CAAC5G,GAAmByhB,GAC9B9a,WAAS,EACT0G,KAAMhO,GACNr/C,QAAQ,WACR+iB,SAAUvU,EAAMsqF,iBAGxBxpF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oBACLjI,MAAM,iBACNswC,UAAWnD,GACXoE,SAAU,CAAC5G,GAAmByhB,GAC9B9a,WAAS,EACT0G,KAAMhO,GACNr/C,QAAQ,WACR+iB,SAAUvU,EAAMsqF,uBAYlD5gF,GAAiD,CACnD4C,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEbqgF,QAAS,CACLv9E,QAAS,OACTuC,eAAgB,iBAEpBpH,MAAO,CACHsB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEd2iF,YAAa,CACTzjF,SAAU,WACVE,WAAY,KAkBL4lC,mBAdf,SAAyB/uC,EAAmBi6C,GAGxC,MAAO,CACH0yC,YAHgB9D,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,iBAOpE,SAA4B1O,EAAe2oD,GACvC,MAAO,CACHwyC,mBAAoB,SAACJ,EAAerzF,GAAhB,OAA+B1H,EAAS2uD,aAAOhG,EAASiG,SAAUmsC,EAAOrzF,OAItF+1C,CAA6Cy9C,ICjK/CI,GAAY,oBAmBZtC,GAAyB,SAACF,EAAa7mC,GAChD,QAAeluD,IAAX+0F,EAAJ,CAGA,IAEIyC,EAAiB,GAWrB,OATAtpC,EAAW8kB,eAAeptD,QAAQ,SAACqwE,GAC/B,IAAIwB,EAAgBxB,EAAI9kB,cAAcrnE,OAAO,SAAA4tF,GAAE,YAAkC13F,IAA9B03F,EAAGzmB,wBAAsE,OAA9BymB,EAAGzmB,wBAAiE,KAA9BymB,EAAGzmB,yBAClI7zE,IAAI,SAAAs6F,GAAE,OAAIA,EAAGzmB,yBAElBumB,EAAUA,EAAQr2F,OAAOs2F,KAEdD,EAAQ1tF,OAAO,SAAA6tF,GAAG,OAAIA,IAAQ5C,IAAQ53F,OAAS,EAGxC,kDAA+C6C,IAGnE43F,GAAsBzsF,IAAMizC,KAAK,SAACp0C,GAAiB,IAAAqwC,EACfrwC,EAA9BoI,eAD6C,IAAAioC,EACnC,GADmCA,EAC/BzyB,EAAgB5d,EAAhB4d,YAChBmvE,EAAc/sF,EAAM+sF,YA2C1B,IAAMc,EAAerpC,GAAa,CAAE/yD,OAAUuO,EAAMvO,SAC9Cq8F,EAAQ,GAAA32F,OAAMyJ,GAAOmtF,qBAAqBltF,KAAlC,KAAA1J,OAA0C02F,GAExD,OACI/sF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAMguF,kBACHltF,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,wBACNqkD,SAAU5rD,EAAAhP,EAAAiP,cAAA,wIACVu/C,UAAW,EACXt/C,MAAO0I,GAAOiH,eAGpBiN,EAAYtnB,gBAAkB0iC,GAAe,qBAAsB5b,GAAgBQ,cAClFA,EAAYtnB,gBAAkB0iC,GAAe,oBAAqB5b,GAAgBQ,gBAAkB5d,EAAMgd,WACzGlc,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,cACNqkD,SAAU5rD,EAAAhP,EAAAiP,cAAA,0IA3D1B,WACI,IAAIq3B,EAMJ,MALiB,WAAdxa,EACCwa,EAAYY,GAAe,oBAAqB5b,GAAgBkiB,SAC7C,aAAd1hB,GAA0C,eAAdA,IACjCwa,EAAYY,GAAe,kBAAmB5b,GAAgBkiB,UAE3DlH,EAoDiJ61D,GAAlI,KACV3tC,UAAW,EACXt/C,MAAO0I,GAAOiH,cAGL,WAAhBiN,GACG9c,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,WACNqkD,SAAS,kOACTpM,UAAW,EACXt/C,MAAO0I,GAAOiH,cAGtB7P,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ8lF,iBAA/B,mCACAptF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ6oD,MACpBnwD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQgF,kBAA/B,qDACAtM,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQgF,kBAA/B,0EAGHpN,EAAMvO,QAAUuO,EAAMvO,OAAO0B,OAAS,GACnC2N,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACotF,GAAD,CAAkBjE,QAlDzBlqF,EAAMvO,QAAUuO,EAAMvO,OAAO0B,OAAS,EACjC2N,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC2E,WAAW,SAASytC,QAAS,GAC3Cp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,EAAGv3C,UAAWT,EAAQikD,UACxCvrD,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAU+W,UAAWT,EAAQ6d,QAEjCnlB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GAAIv3C,UAAWT,EAAQyD,QAC1C/K,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQgmF,gBAAxB,eAAqDpuF,EAAMvO,OAAO0B,OAAlE,SAAgF6M,EAAMvO,OAAO0B,OAAS,EAAI,IAAM,MAGtH2N,EAAAhP,EAAAiP,cAAA,aAyCiD+kF,UAAW,8EACtDhlF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ8nC,aAAclwC,EAAMvO,OAAQ2B,IAAI,SAACmW,EAAG7J,GAAJ,OACpDoB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAK6P,GACK,IAAV7J,GACGoB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,MAEJz7C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQgoC,cAA/B,SAAoD1wC,EAAQ,GAC5DoB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ+nC,iBAAkB5mC,QAI7DzI,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ+3C,aACpBr/C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,eACH1R,MAAM,WAEN7I,EAAAhP,EAAAiP,cAAA,KAAG8H,UAAWT,EAAQimF,YAAalyC,OAAO,SAASC,IAAI,sBAAsB1jD,KAAMo1F,GAAnF,uBAKhBhtF,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACutF,GAAD,CAA8BhE,cAAetqF,EAAMuuF,YAAapyE,qBAAsBnc,EAAMmc,uBAC5Frb,EAAAhP,EAAAiP,cAACytF,GAAD,CAA8BlE,cAAetqF,EAAMuuF,YAAapyE,qBAAsBnc,EAAMmc,uBAC5Frb,EAAAhP,EAAAiP,cAAC0tF,GAAD,CAAiCnE,cAAetqF,EAAMuuF,YAAa3wE,YAAa5d,EAAM4d,YAAazB,qBAAsBnc,EAAMmc,qBAAsBuyE,gBAAiB1uF,EAAM0uF,kBAC5K5tF,EAAAhP,EAAAiP,cAAC4tF,GAAD,CAAkCrE,cAAetqF,EAAMuuF,YAAa1tC,SAAU0sC,GAAWR,YAAaA,EAAa5wE,qBAAsBnc,EAAMmc,0BA9FnJnc,EAAMmc,qBAAqBwW,SAASre,GAAuBkF,gCAC3DxZ,EAAMmc,qBAAqBwW,SAASre,GAAuBmF,+BAC3DzZ,EAAMmc,qBAAqBwW,SAASre,GAAuBoF,2BA8FnD5Y,EAAAhP,EAAAiP,cAAC6tF,GAAD,CAA6BtE,cAAetqF,EAAMuuF,YAAapyE,qBAAsBnc,EAAMmc,0BAvFnGnc,EAAMmc,qBAAqBwW,SAASre,GAAuBsF,oCAC3D5Z,EAAMmc,qBAAqBwW,SAASre,GAAuBqF,0CAC3D3Z,EAAMmc,qBAAqBwW,SAASre,GAAuBuF,6CAwFnD/Y,EAAAhP,EAAAiP,cAAC8tF,GAAD,CAA6BvE,cAAetqF,EAAMuuF,YAAa1tC,SAAU0sC,GAAWpxE,qBAAsBnc,EAAMmc,uBAEnHnc,EAAMmc,qBAAqBwW,SAASre,GAAuBiE,+BAAiCvY,EAAM8uF,eAC/FhuF,EAAAhP,EAAAiP,cAACguF,GAAD,CACIzE,cAAetqF,EAAMuuF,YACrB1tC,SAAU0sC,KAEjBvtF,EAAMmc,qBAAqBwW,SAASre,GAAuBkE,oBACxD1X,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,iBAAiB8xC,OAAQ5gD,EAAM4gD,OAAQzJ,UAAWy0C,GAAyB/qC,SAAU0sC,GAAWjD,cAAetqF,EAAMuuF,YAAa3wE,YAAa5d,EAAM4d,kBAOpLlU,GAAwC/X,OAAA0G,EAAA,EAAA1G,CAAA,GACvCmpF,GADuC,CAE1C36B,YAAa,CACTr2C,UAAW,GACX7I,UAAW,SAEfitF,gBAAiB,CACbxjF,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElB2hF,eAAgB,CACZzjF,WAAY,IACZsB,WAAY,IAEhBikC,YAAa,CACThjC,QAAS,QACTjB,WAAY,IAEhBkkC,gBAAiB,CACbzlC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,GAElB2jC,aAAc,CACV1lC,SAAU,GACVZ,UAAW,EACXH,MAAO9D,GAAQ+B,IAAIb,SAEvBkqD,KAAM,CACFxkD,aAAc,IAElB4/C,SAAU,CACNprD,UAAW,UAEfglB,KAAM,CACFtc,MAAO9D,GAAQ+B,IAAIb,SAEvBsnF,YAAa,CACT1lC,eAAgB,OAChBh/C,MAAO9D,GAAQC,KAAKY,UAExB+lD,SAAU,CACN9iD,MAAO9D,GAAQC,KAAKU,QAIbipC,gBACXsI,aAAoC,CAAEF,KAAM01C,KAC5CrjF,KAAWR,IACXslF,IAHWv/C,CAIbm+C,IClOIqB,8MACFvuC,WAAapgD,GAAKyjB,mBAClB4jC,SAAWrnD,GAAK+iB,4BAChB6rE,QAAU5uF,GAAK+jB,qGAGX,OACIvjB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACsnF,GAAD,CACIt5C,UAAWn8C,KAAKoN,MAAM+uC,UACtBj5C,aAAclD,KAAKoN,MAAMlK,aACzB2wF,iBAAkB7zF,KAAKoN,MAAMymF,iBAC7Bt1B,QAASv+D,KAAKoN,MAAMmxD,QACpBg0B,WAAW,EACXiC,YAAax0F,KAAKoN,MAAMonF,YACxBE,eAAgB10F,KAAKoN,MAAMsnF,eAC3BC,eAAgB30F,KAAKoN,MAAMunF,eAC3Bj2F,gBAAiBsB,KAAKoN,MAAM1O,4BAnBjB6P,IAAMC,eAyC9B6tF,IATAppF,GAAQC,KAAKU,KAGbX,GAAQC,KAAKU,KAMbyoF,wBCrCFvlF,IAPUa,aAAWC,aAAa,CAC3CC,WAAY,CACRC,SAAU,OACVC,WAAY,QAI0C,CAC1D7B,UAAW,CACPa,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAGd2F,QAAS,CACL5D,aAAc,GACd9C,MAAO9D,GAAQC,KAAKM,OAExBm1E,YAAa,CACTzxE,UAAW,EACX2C,aAAa,IAEjB0iF,cAAe,CACX1iF,aAAc,GACdR,WAAY,GACZlC,YAAa,IAEjBw0B,QAAS,CACLz0B,UAAW,IAEfslF,SAAU,CACN3iF,aAAc,IAElB4iF,QAAS,CACLjlF,QAAS,EACTT,MAAO9D,GAAQC,KAAKS,WAExBuE,WAAY,CACRV,QAAS,GAEbklF,eAAgB,CACZzkF,OAAQ,GACRT,QAAS,SACT9D,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1ByK,aAAc,EACdrG,SAAS,IAEb6kF,OAAQ,CACJjpF,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQiB,KAAKR,OAC1B6J,aAAc,QAElBq/E,eAAgB,CACZxlF,cAAe,QAEnB0H,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACPC,WAAY,QAEhBF,SAAU,CACNpC,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACPC,WAAY,IAGhBga,KAAM,CACFvb,SAAU,GACV+B,cAAe,GAEnB9E,QAAS,CACLgC,MAAO9D,GAAQ6B,OAAOX,SAE1B6G,YAAa,CACTlD,SAAU,GACVf,MAAO9D,GAAQ6B,OAAOC,QACtBoC,YAAa,EACb0C,cAAe,GAEnB8/C,UAAW,CACP5iD,MAAO9D,GAAQ+B,IAAIb,SAEvB/O,MAAO,CACH0S,SAAU,GACV+B,cAAe,EACfnB,aAAc,EACd3B,MAAO9D,GAAQ+B,IAAIb,SAEvB0oF,kBAAmB,CACf/kF,SAAU,GACVwC,QAAS,cACTT,aAAc,IAElBijF,WAAY,CACRtlF,QAAS,GAEb6H,OAAQ,CACJlI,YAAY,IAEhBgxC,YAAa,CACT52C,OAAQ,GACR+I,QAAS,mBACTtL,KAAM,EACNoL,YAAa,IAGjB2iF,mBAAoB,CAChBtlF,WAAY,GACZC,WAAY,SACZI,SAAU,MCpDHqtC,gBAAkE,CAC7EF,KAnEqB,qCAkEVE,CArD4B,SAAC/3C,GAAiB,IAAAs0C,EAC3BnzC,IAAMozC,UAAS,GADYC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAClDqC,EADkDnC,EAAA,GACzCwxC,EADyCxxC,EAAA,GAMzD,OACI1zC,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAClBn3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOZ,WACzBhI,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0lF,UACftuF,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAakP,MAAO0I,GAAO6iD,YAD/B,kDAEQzrD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOimF,oBAAoB7uF,EAAAhP,EAAAiP,cAAA,kFAEtDD,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,CAASv7C,MAAO0I,GAAO2G,UAEvBvP,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gCACLqoC,UAAWZ,GACXJ,SAhBa,SAAC5sC,GAC1By8E,EAAWz8E,EAAE4yC,OAAOxF,UAgBR9vC,MAAM,oIACNrV,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,IAGZ3vC,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,0BACLqoC,UAAWZ,GACX1vC,MAAM,6DACNrV,QAAQ,WACR2mD,WAAS,KAKjBr3C,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,CAAetuC,MAAO0I,GAAOylF,eACzBruF,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIvuC,MAAO0I,GAAOuI,OACdzgB,QAAQ,WACRmY,MAAM,UACNL,QAAStJ,EAAMsI,SAJnB,UAMAxH,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACI/kB,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACN4K,UAAWoiC,GAJf,gBC1CDi5C,GAZ8B,SAAC5vF,GAK1C,OACIc,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMsI,QAASD,MAAM,gCACxDvH,EAAAhP,EAAAiP,cAAC8uF,GAAD,CAAoCj3C,cANkB,CAC1Dk3C,+BAA+B,EAC/BC,yBAAyB,GAI6C/3C,SAAUh4C,EAAM+4C,OAAQzwC,QAAStI,EAAMsI,YCatG0nF,GApBgB,SAAChwF,GAAiB,IAEtCzN,EAAcyN,EAAdzN,KAAM09F,EAAQjwF,EAARiwF,KAEb,OACInvF,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMA,EAAM+V,QAAStI,EAAMiwF,KAAM5nF,MAAM,qBAC/CvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,4HAIJzvC,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ5lC,MAAM,UAAUL,QAAS2mF,GAAjC,SCuCVC,eAKF,SAAAA,EAAYlwF,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAs9F,IACtBt2F,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAu+F,GAAA/vF,KAAAvN,KAAMoN,KALVmwF,gBAAkBhzE,GAAY,oBAAqBC,GAAgBoiB,kBAIzC5lC,EAH1B8mD,WAAapgD,GAAKyjB,iBAGQnqB,EAF1B+tD,SAAWrnD,GAAK+iB,0BAEUzpB,EAD1Bs1F,QAAU5uF,GAAK+jB,6BACWzqB,EAsC1Bk1F,cAAgBp7E,aAAW,SAACgkD,GACxB,IAAM04B,EAAgBx2F,EAAKoG,MAAMymF,iBAAiBzb,4BAA4B53E,IAAI,SAAAnC,GAAC,OAAIA,EAAEkM,aAEzF,OADcu6D,EAAU18C,KAAKlb,OAAO,SAAA7O,GAAC,OAAIm/F,EAAcz9D,SAAS1hC,EAAEoqB,KAAOouB,GAASx4C,EAAE+sB,oBACvE7qB,OAAS,IAzCAyG,EA4C1BmzF,YAAcr5E,aAAW,SAACgkD,GACtB,IAAM04B,EAAgBx2F,EAAKoG,MAAMymF,iBAAiBzb,4BAA4B53E,IAAI,SAAAnC,GAAC,OAAIA,EAAEkM,aAEzF,OADcu6D,EAAU18C,KAAKlb,OAAO,SAAA7O,GAAC,OAAIm/F,EAAcz9D,SAAS1hC,EAAEoqB,KAAOsuB,GAAM14C,EAAE24C,cACpEz2C,OAAS,IA/CAyG,EAkD1B4iF,UAAY,WACR5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAnDH79C,EAsD1B+iF,WAAa,WACT/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAvDH79C,EA0D1By2F,kBAAoB,WAChBz2F,EAAK4G,SAAS,CAAE8vF,aAAa,KA3DP12F,EA8D1B22F,gBAAkB,WACd32F,EAAK4G,SAAS,CAAE8vF,aAAa,IAC7B12F,EAAK42F,iBAhEiB52F,EAmE1B62F,aAAe,WACX72F,EAAK4G,SAAS,CAAEkwF,YAAY,KApEN92F,EAuE1B42F,cAAgB,WACZ52F,EAAK4G,SAAS,CAAEkwF,YAAY,KAxEN92F,EA2E1B+2F,kBAAoB,WAChB/2F,EAAK4G,SAAS,CAAEowF,iBAAiB,KA5EXh3F,EA+E1Bi3F,mBAAqB,WACjBj3F,EAAK4G,SAAS,CAAEowF,iBAAiB,KAhFXh3F,EAmF1Bk3F,UAAY,WACRl3F,EAAK4G,SAAS,CAAEuwF,UAAU,GAASn3F,EAAK+iF,aApFlB/iF,EAuF1Bo3F,4BAA8B,WAC1Bp3F,EAAK4G,SAAS,CAAEywF,2BAA2B,KAxFrBr3F,EA0F1Bs3F,4BAA8B,WAC1Bt3F,EAAK4G,SAAS,CAAE2wF,4BAA4B,KA3FtBv3F,EA8F1Bw3F,qBAAuB,SAACltC,GACpBtqD,EAAK4G,SAAS,CACVuwF,UAAU,EACVM,wBAAwB,EACxBJ,2BAA2B,EAC3BvkB,8BAA+BxoB,EAAW4rC,8BAC1CnjB,wBAAyBzoB,EAAW6rC,yBACrCn2F,EAAKoG,MAAMypD,aArGQ7vD,EAwG1Bq+C,aAxG0BtmD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAwGX,SAAAC,IAAA,IAAAw6E,EAAA,OAAA36E,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,QACPm6E,EAAkB5yE,EAAKoG,MAAMymF,kBAGb7oE,YAAYtnB,gBAAkB0iC,GAAe,qBAAsB5b,GAAgBQ,aAC3D,GAApC4uD,EAAgBtuD,UAAU/qB,OAC1ByG,EAAK4G,SAAS,CAAE2wF,4BAA4B,IAG5Cv3F,EAAK4G,SAAS,CAAEywF,2BAA2B,IAI/Cr3F,EAAK4G,SAAS,CACVuwF,UAAU,EACVM,wBAAwB,GACzBz3F,EAAKoG,MAAMypD,YAhBP,wBAAAt3D,EAAAM,SAAAT,MAxGW4H,EA4H1B4rF,WAAa,WACT5rF,EAAKoG,MAAMypD,cA7HW7vD,EAgI1B03F,YAhI0B,eAAAx9F,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAgIZ,SAAAgC,EAAOmwD,GAAP,IAAAsoB,EAAApD,EAAAmoB,EAAA,OAAA1/F,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,UACNm6E,EAAkB5yE,EAAKoG,MAAMymF,iBAE7Brd,EAAsBllB,EAAWklB,sBAAwBllB,EAAWklB,oBAAoB/B,eAAiB,CACzGhsD,QAAIrlB,EACJoiC,iBAAapiC,EACbuxE,qBAAiBvxE,EACjBsxE,qBAAqB,EACrBD,gBAAgB,GAChBnjB,EAAWklB,oBAEfoD,EAAgBnqC,gBAAhB1wC,OAAA0G,EAAA,EAAA1G,CAAA,GACOuyD,EADP,CAEI7oC,GAAIzhB,EAAKoG,MAAMymF,iBAAiBpkD,gBAAiBhnB,GACjD0tD,eAAgBnvE,EAAKoG,MAAMymF,iBAAiBpkD,gBAAiB0mC,eAC7DC,eAA8C,MAA7B9kB,EAAW8kB,gBAA0D,MAAhC9kB,EAAW8kB,eAAe,GAAc9kB,EAAW8kB,eAAe51E,IAAI,SAAAo+F,GACxH,IAAMtkD,EAA2Cv7C,OAAA0G,EAAA,EAAA1G,CAAA,GAC1C6/F,EAAMvkD,YADoC,CAE7CotB,YAAaf,GAAYm4B,OAE7B,OAAO9/F,OAAA0G,EAAA,EAAA1G,CAAA,GACA6/F,EADP,CAEIn2E,GAAIm2E,EAAMn2E,IAAM,GAChB4xB,YAAaC,WAEhBl3C,EACLkzE,WAAYtvE,EAAKoG,MAAMymF,iBAAiBpkD,gBAAiB6mC,WACzDgD,SAAUtyE,EAAKoG,MAAMymF,iBAAiBpkD,gBAAiB6pC,SACvDwlB,eAAgE,IAAhD//F,OAAOsN,KAAKrF,EAAKoG,MAAM2xF,cAAcx+F,OACrDi2E,sBACArE,cAAeyH,EAAgBnqC,gBAAiB0iC,cAChDoE,QAASqD,EAAgBnqC,gBAAiB8mC,QAC1CE,YAAazvE,EAAKoG,MAAMymF,iBAAiBpkD,gBAAiBgnC,cAE1DkoB,EAAwBhlB,GAA2CC,EACnE5yE,EAAK+G,MAAM0wF,uBAAwBz3F,EAAK+G,MAAM+rE,8BAA+B9yE,EAAK+G,MAAMgsE,yBAC5F/yE,EAAK4iF,aACD5iF,EAAK+G,MAAMowF,SArCL,CAAA98F,EAAA5B,KAAA,gBAAA4B,EAAA5B,KAAA,EAsCAuH,EAAKoG,MAAM4xF,sBAAsBL,GAtCjC,OAuCN33F,EAAKk3F,YAvCC78F,EAAA5B,KAAA,wBAAA4B,EAAA5B,KAAA,GA0CAuH,EAAKoG,MAAM6xF,sBAAsBN,GAAuBz3F,KAAKF,EAAK+iF,WAAY/iF,EAAK+iF,YA1CnF,QA6CV5hD,GAAcE,cA7CJ,yBAAAhnC,EAAAxB,SAAAsB,MAhIY,gBAAArB,GAAA,OAAAoB,EAAAnB,MAAAC,KAAAC,YAAA,GAAA+G,EAgL1Bk4F,0BAhL0BngG,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAgLE,SAAAwC,IAAA,OAAA1C,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,OACxBuH,EAAK4G,SAAS,CACVuwF,UAAU,EACVM,wBAAwB,GACzBz3F,EAAKoG,MAAMypD,YAJU,wBAAAj1D,EAAA/B,SAAA8B,MAhLFqF,EAuL1Bm4F,iBAvL0BpgG,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAuLP,SAAAyvD,IAAA,IAAAgrB,EAAA+kB,EAAA,OAAA1/F,EAAAC,EAAAI,KAAA,SAAAuvD,GAAA,cAAAA,EAAArvD,KAAAqvD,EAAApvD,MAAA,cACXm6E,EAAkB5yE,EAAKoG,MAAMymF,kBACjBuL,iCAAkC,EAClDxlB,EAAgB3B,8BAAgC3oC,GAAiCC,IACjFvoC,EAAK62F,eACDc,EAAwBhlB,GAA2CC,GALxD/qB,EAAApvD,KAAA,EAOTuH,EAAKoG,MAAM6xF,sBAAsBN,GAAuBz3F,KAAKF,EAAKy2F,kBAAmBz2F,EAAK22F,iBAPjF,WASX32F,EAAK+G,MAAM2vF,YATA,CAAA7uC,EAAApvD,KAAA,gBAAAovD,EAAApvD,KAAA,GAULuH,EAAKoG,MAAMmR,iBAAiB,kDAAkDrX,KAAKF,EAAK42F,cAAe52F,EAAK42F,eAVvG,yBAAA/uC,EAAAhvD,SAAA+uD,MArLf5nD,EAAK+G,MAAQ,CACT82C,SAAS,EACT64C,aAAa,EACbI,YAAY,EACZE,iBAAiB,EACjBG,UAAU,EACVM,wBAAwB,EACxB1kB,yBAAyB,EACzBslB,qBAAqB,EACrBhB,2BAA2B,EAC3BE,4BAA4B,EAC5BzkB,+BAA+B,GAbb9yE,mFAkBtB,IAAM83E,EAA2B,GAEQ,IAArC9+E,KAAKoN,MAAM03D,UAAU18C,KAAK7nB,QAC1Bu+E,EAASjxD,KAAK7tB,KAAKoN,MAAM++E,cAGgB,IAAzCnsF,KAAKoN,MAAM+a,cAAcC,KAAK7nB,QAC9Bu+E,EAASjxD,KAAK7tB,KAAKoN,MAAMihD,kBAG7B5mD,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAK+pF,WAAY/pF,KAAK+pF,6CA0KjD,IAAM91D,IAA0Bj0B,KAAKoN,MAAMuhB,gBAAgB+jD,eACrD4sB,IAAct/F,KAAK+0D,UAAY/0D,KAAK8tD,cAAgB75B,GAA0Bj0B,KAAKs8F,UAAYt8F,KAAKoN,MAAMmyF,MAC1GC,EAAaF,GAAYt/F,KAAKs8F,SAAWroE,EACzCwrE,EAA2Bz/F,KAAKoN,MAAMymF,iBAAiBpkD,gBAAiB6pC,SAAS/4E,OAAS,EAC1Fm/F,EAAoB1/F,KAAKoN,MAAMymF,iBAAiBvoE,UAAU/qB,OAAS,EACnEo/F,EAAe3/F,KAAKoN,MAAMkwD,aAAet9D,KAAK+N,MAAM82C,SAAW7kD,KAAK+N,MAAM+vF,WAC1E8B,EAAiBD,GAAgB5gG,OAAOsN,KAAKrM,KAAKoN,MAAM2xF,cAAcx+F,OAAS,EAC/EyqB,EAAchrB,KAAKoN,MAAMymF,iBAAmB7zF,KAAKoN,MAAMymF,iBAAiB7oE,YAAc,GAEtFowE,EAAmF,GAA/Dp7F,KAAKoN,MAAMymF,iBAAiBuL,iCAA2Cp/F,KAAKoN,MAAMymF,iBAAiB5b,+BAAiC3oC,GAAiCC,IAC/L,OACIrhC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC0xF,GAAD,CACI75C,cAAehmD,KAAKgmD,cACpBZ,SAAUplD,KAAK0+F,YACf7/F,OAAQmB,KAAKoN,MAAMvO,OACnB88F,aAAc2D,EACdpD,cAAel8F,KAAKk8F,cAAcl8F,KAAKoN,MAAM03D,WAC7Cq1B,YAAan6F,KAAKm6F,YAAYn6F,KAAKoN,MAAM03D,WACzC95C,YAAaA,EACbzB,qBAAsBvpB,KAAKoN,MAAMymF,iBAAiBtqE,qBAClDuyE,gBAAiB97F,KAAKoN,MAAM+a,cAAcC,KAAK7nB,OAC/C66F,iBAAkBA,EAClBhxE,UAAW6J,IAEf/lB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOy2C,aACdiyC,GACGtxF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,WArBP,iOAsBAinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,SAGjC5Q,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,eACH/R,QAAS1W,KAAKm/F,iBACdpoF,MAAM,UACN8tC,QAAS7kD,KAAK+N,MAAM+vF,WACpBl/F,QAAQ,WACRwP,MAAO0I,GAAO2kF,YACd95E,SAAUg+E,IAAiBD,GAP/B,iBAaPF,GAAcx/F,KAAKoN,MAAMymF,iBAAiBtqE,qBAAqBwW,SAASre,GAAuBmE,iCAAmC7lB,KAAK+N,MAAMowF,UAC1IjwF,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,oBACH/R,QAAS1W,KAAKk/F,0BACdnoF,MAAM,UACNnY,QAAQ,WACRimD,QAAS7kD,KAAK+N,MAAMiwF,gBACpB5vF,MAAO0I,GAAO2kF,YACd95E,SAAUi+E,GAPd,gBAYHN,GACGpxF,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,qBACH/R,QAAS1W,KAAK4yF,WACdh0F,QAAQ,WACRmY,MAAM,UACN8tC,QAAS7kD,KAAK+N,MAAM82C,UAAY7kD,KAAK+N,MAAMowF,SAC3Cx8E,SAAUg+E,EACVvxF,MAAO0I,GAAO2kF,aAPlB,aAYH+D,GACGtxF,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,2BACH/R,QAAS1W,KAAKqlD,aACdzmD,QAAQ,YACRmY,MAAM,UACN8tC,QAAS7kD,KAAK+N,MAAM82C,SAAW7kD,KAAK+N,MAAMowF,SAC1C/vF,MAAO0I,GAAO2kF,YACd95E,SAAUi+E,GAETH,EAA2B,UAAOr8F,EATvC,iCAYJpD,KAAK+N,MAAMwwF,4BACRrwF,EAAAhP,EAAAiP,cAAC2xF,GAAD,CACKngG,KAAMK,KAAK+N,MAAMwwF,2BACjBlB,KAAMr9F,KAAKs+F,8BAIlBt+F,KAAK+N,MAAMswF,2BACRnwF,EAAAhP,EAAAiP,cAAC4xF,GAAD,CACIpgG,KAAMK,KAAK+N,MAAMswF,0BACjB3oF,QAAS1V,KAAKo+F,4BACdj4C,OAAQnmD,KAAKw+F,+DAnQjC,OAH+Bz/F,OAAA0G,EAAA,EAAA1G,CAAA,GACxBiB,KAAKoN,MAAMymF,iBAAiBpkD,wBAtCPlhC,IAAMC,eAqTpCsI,GAAiD,CACnDkpF,aAAc,CACV7oF,YAAa,OAEjBkI,OAAQ,CACJjG,MAAO,OACPlC,UAAW,IAEfukF,YAAa,CACTpiF,WAAY,GAEhBk0C,YAAa,CACTr2C,UAAW,GACX7I,UAAW,SAEfyQ,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACPnB,QAAS,IAmCF6kC,mBAxBf,SAAyB/uC,EAAmBi6C,GACxC,IAAMi4C,EAAwBlyF,EAAM6rE,gBAAgBjB,sBAAsBxvD,KAAK,SAAAxS,GAAC,OAAIA,EAAEupF,oBAAsBl4C,EAAS6rC,iBAAiBprE,KAEtI,MAAO,CACH60C,YAAa6iC,aAAUxF,GAAVwF,CAAqBpyF,GAClCgxF,aAAcqB,aAAoBzF,GAApByF,CAA+BryF,GAC7C4gB,gBAAiB5gB,EAAMmhB,WACvB/G,cAAepa,EAAM4c,SACrBm6C,UAAW/2D,EAAMqb,KACjBvqB,OAAQohG,EAAwBA,EAAsBphG,OAAS,KAIvE,SAA4BQ,EAAe2oD,GACvC,MAAO,CACH6O,WAAY,kBAAMx3D,EAASoV,aAAOkmF,MAClCp8E,iBAAkB,SAAC5f,GAAD,OAAaU,EAASkf,GAAiB5f,KACzDwtF,WAAY,kBAAM9sF,EAAS8sF,GAAWnkC,EAAS7L,UAAW6L,EAAS9kD,gBACnEmrD,eAAgB,kBAAMhvD,EAASgvD,GAAerG,EAAS7L,UAAW6L,EAAS9kD,gBAC3E+7F,sBAAuB,SAACrlB,GAAD,OAAqBv6E,EAAS4/F,GAAsBj3C,EAAS7L,UAAW6L,EAAS9kD,aAAc02E,KACtHolB,sBAAuB,SAACplB,GAAD,OAAqBv6E,EC3R7C,SAA+B88C,EAAmBj5C,EAAsB02E,GAC3E,sBAAAvqB,EAAAtwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAmwD,EAAOjwD,GAAP,IAAAghG,EAAAhgG,EAAA,OAAApB,EAAAC,EAAAI,KAAA,SAAAiwD,GAAA,cAAAA,EAAA/vD,KAAA+vD,EAAA9vD,MAAA,cAAA8vD,EAAA/vD,KAAA,EAAA+vD,EAAA9vD,KAAA,EAEgDypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,sBAAAqB,OAAwEq1E,EAAgBnxD,GAAxF,WAAqG,CAAE0gB,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUgtE,KAF/L,OAEOymB,EAFP9wC,EAAA7H,KAGCroD,EAASihG,GAAqBD,IAC9BhhG,EAASX,EAAgB,kBAAmB,YAC5CW,EAASkhG,GAA4B,CAAC93E,GAAImxD,EAAgBnxD,GAAI5pB,OAAQ,MALvE0wD,EAAA9vD,KAAA,gBAAA8vD,EAAA/vD,KAAA,EAAA+vD,EAAA5H,GAAA4H,EAAA,SAOClwD,EAAS0B,EAAyBwuD,EAAA5H,GAAK,iCACjCtnD,EARPkvD,EAAA5H,KASqBtnD,EAAaO,MAAQP,EAAaO,KAAKL,QACvDlB,EAASkhG,GAA4B,CAAC93E,GAAImxD,EAAgBnxD,GAAI5pB,OAAQwB,EAAaO,QAVxF,yBAAA2uD,EAAA1vD,SAAAyvD,EAAA,iBAAP,gBAAA6E,GAAA,OAAA9E,EAAAtvD,MAAAC,KAAAC,YAAA,GD0RyD++F,CAAsBh3C,EAAS7L,UAAW6L,EAAS9kD,aAAc02E,OAI/G98B,CAA6CwgD,IE/Z7CkD,GARM,SAACpzF,GAClB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAAY7nB,EACTc,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,sICKLw0E,GARM,SAACrzF,GAClB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAAY7nB,EACTc,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,6JCQdy0E,GAAUnyF,IAAMizC,KAAK,SAACp0C,GACxB,OACIc,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,MAChB7O,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAO86E,MAC1B1jF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC7c,MAAO0I,GAAO+6E,SAAUz4D,GAAI,IACnClrB,EAAAhP,EAAAiP,cAACwyF,GAAD,CAAcvyF,MAAO0I,GAAOuc,OAC5BnlB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO8pF,eACf1yF,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO+9D,UAAWznE,EAAMynE,UAC3C3mE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO01B,MAA1B,gBAA8Cp/B,EAAMo/B,KAAKnQ,OAAO,QAGxEnuB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC7c,MAAO0I,GAAOg7E,UAAW14D,GAAI,GACpClrB,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAY+tC,UAAU,IAAIz+C,KAAMsH,EAAM9E,IAAKihD,OAAO,SAASC,IAAI,sBAAsB9yC,QAAStJ,EAAMsJ,SAChGxI,EAAAhP,EAAAiP,cAAC0yF,GAAD,CAAczyF,MAAO0I,GAAOi7E,mBAQvCj7E,GAAiD,CAC1DiG,KAAM,CACF40E,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BwD,UAAW,GACX3F,OAAQ,GACR6I,YAAa,GAEjBw3E,KAAM,CACFrgF,OAAQ,QAEZqvF,cAAe,CACX5pF,SAAU,WACV8vE,WAAY,SACZ1tE,MAAO,QAEXy4E,SAAU,CACNv3E,QAAS,OACTuC,eAAgB,OAChBhC,WAAY,SACZtJ,OAAQ,IAEZugF,UAAW,CACPx3E,QAAS,OACTO,WAAY,SACZgC,eAAgB,SAChBtL,OAAQ,IAEZ8hB,KAAM,CACFtc,MAAO9D,GAAQiB,KAAKC,QACpB2D,SAAU,IAEd+8D,SAAU,CACN99D,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,IACZD,SAAU,GACVsI,UAAW,YACXpJ,SAAU,WACVhI,KAAM,IAEVw9B,KAAM,CACFz1B,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,IACZD,SAAU,GACVyE,cAAe,IACf6D,UAAW,YACXpJ,SAAU,WACV+1C,QAAS,IAEbglC,WAAY,CACRh7E,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,KAIH4oF,MCjFTI,GAAkBvyF,IAAMizC,KAAK,SAACp0C,GAChC,OACIc,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOiqF,KACd3zF,EAAM4zF,aACH9yF,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,CAAakP,MAAO0I,GAAOoqF,YAE3BhzF,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAOkE,cAE3B9M,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOlD,MAApB,oBACCxG,EAAM+zF,eACHjzF,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,CAAakP,MAAO0I,GAAOoqF,YAE3BhzF,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAOhC,SAE3B5G,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOlD,MAApB,yBAKNkD,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7CmpF,GAD6C,CAEhD6Y,IAAK,CACD7pF,UAAW,GACXoD,QAAS,OACTO,WAAY,UAEhBqmF,UAAW,CACPnqF,MAAO9D,GAAQ2B,MAAMT,SAEzBP,KAAM,CACFyF,WAAY,EACZlC,YAAa,GACbW,SAAU,GACVC,WAAY,IACZwE,cAAe,IACf7E,WAAY,SACZX,MAAO9D,GAAQC,KAAKU,QAIbktF,MClBTM,eAGF,SAAAA,EAAYh0F,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAohG,IACtBp6F,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAqiG,GAAA7zF,KAAAvN,KAAMoN,KAHV2nD,SAAWrnD,GAAK+iB,0BAEUzpB,EAD1B8mD,WAAapgD,GAAKyjB,iBACQnqB,EAQ1Bq+C,aAR0B,eAAAvmD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAQX,SAAAC,EAAOkyD,GAAP,OAAAryD,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACLuH,EAAKoG,MAAMi0F,gBAAgB/vC,EAAWqkB,YADjC,wBAAAp2E,EAAAM,SAAAT,MARW,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAAA+G,EAY1Bs6F,gBAAkB,WACdt6F,EAAK4G,SAAS,CAAEmpF,WAAW,KAV3B/vF,EAAK+G,MAAQ,CACTgpF,WAAW,GAJO/vF,wEAkBtB,IAAMu6F,EAASvhG,KAAKoN,MAAMqiC,gBAAgB6pC,SAAS/4E,OAAS,EACtDihG,EAAYxhG,KAAKoN,MAAMqiC,gBAAgB6pC,SAASnwD,KAAK,SAAA9e,GAAC,OAAIA,EAAEyrE,WAC5D2rB,EAAczhG,KAAKoN,MAAMqiC,gBAAgB6pC,SAASnwD,KAAK,SAAA9e,GAAC,OAAKA,EAAEyrE,WAC/DqrB,EAAiBnhG,KAAKoN,MAAMqiC,gBAAgB6mC,WAAWppE,OAAO,SAAA7C,GAAC,OAAIA,EAAErH,WAAaqsC,KAAiC9uC,OAAS,EAC5HygG,EAAehhG,KAAKoN,MAAMqiC,gBAAgB6mC,WAAWppE,OAAO,SAAA7C,GAAC,OAAIA,EAAErH,WAAaqsC,KAA+B9uC,OAAS,EACxHmhG,EAAmB1hG,KAAK+0D,WAAaisC,GAAkBhhG,KAAK8tD,aAAeqzC,EACjF,OACIjzF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,cAEIsoF,EACIrzF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmwE,WAA1B,2EAGEjnF,KAAK+N,MAAMgpF,WAAa2K,GACtBxzF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,gBACNqkD,SAAS,sFACTpM,UAAW,EACXqL,aAAc,EACdF,YAAY,EACZzqD,MAAO0I,GAAO6qF,oBAIxBH,GACEtzF,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,2CACNqkD,SAAS,sHACTpM,UAAW,EACXt/C,MAAO0I,GAAOiH,cAGtB7P,EAAAhP,EAAAiP,cAACyzF,GAAD,CACIt5F,IAAKk5F,EAAYA,EAAU1sB,WAAa2sB,EAAY3sB,WACpDD,SAAU2sB,EAAYA,EAAU3sB,SAAW4sB,EAAY5sB,SACvDroC,KAAMg1D,EAAYA,EAAUzrB,YAAc0rB,EAAY1rB,YACtDr/D,QAAS1W,KAAKshG,kBAElBpzF,EAAAhP,EAAAiP,cAAC0zF,GAAD,CAAiBb,aAAcA,EAAcG,eAAgBA,IAC5DO,GACGxzF,EAAAhP,EAAAiP,cAAC2zF,GAAD,CACIvjC,QAASv+D,KAAKoN,MAAMmxD,QACpBnZ,SAAUplD,KAAKqlD,aACf0xC,UAAW/2F,KAAK+N,MAAMgpF,aAKlC7oF,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOirF,WACrB/hG,KAAKoN,MAAMmxD,QACR,sDAEA,qHA7ERhwD,IAAMC,eAuF5BsI,GAAiD,CACnDmC,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBotE,UAAW,CACPnvE,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpB2I,cAAe,KAEnBwB,YAAa,CACT7G,UAAW,GACX2C,aAAc,IAElB8nF,gBAAiB,CACbjuF,OAAQ,OACRmG,aAAc,IAElBH,MAAO,CACHxC,UAAW,GACXM,QAAS,aAEbuqF,UAAW,CACPhrF,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVC,WAAY,IACZ1J,UAAW,WAUJyuC,wBAAQ15C,EANvB,SAA4B/D,EAAe2oD,GACvC,MAAO,CACHq5C,gBAAiB,SAAC1rB,GAAD,OAAgBt2E,ELIlC,SAAyB88C,EAAmBj5C,EAAsBg9F,EAA2BvqB,GAChG,sBAAA3hB,EAAAj1D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA80D,EAAO50D,GAAP,IAAAghG,EAAA,OAAAphG,EAAAC,EAAAI,KAAA,SAAA40D,GAAA,cAAAA,EAAA10D,KAAA00D,EAAAz0D,MAAA,cAAAy0D,EAAA10D,KAAA,EAAA00D,EAAAz0D,KAAA,EAEgDypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,sBAAAqB,OAAwE27F,EAAxE,cAAuG,CAAE/2D,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAU+oE,KAFjM,OAEO0qB,EAFPnsC,EAAAxM,KAGCroD,EAASihG,GAAqBD,IAC9BhhG,EAASX,EAAgB,kBAAmB,YAJ7Cw1D,EAAAz0D,KAAA,sBAAAy0D,EAAA10D,KAAA,EAAA00D,EAAAvM,GAAAuM,EAAA,SAMC70D,EAAS0B,EAAyBmzD,EAAAvM,GAAK,gCANxCuM,EAAAvM,GAAA,yBAAAuM,EAAAr0D,SAAAo0D,EAAA,iBAAP,gBAAA5D,GAAA,OAAA2D,EAAAj0D,MAAAC,KAAAC,YAAA,GKL8CohG,CAAgBr5C,EAAS7L,UAAW6L,EAAS9kD,aAAc8kD,EAASk4C,kBAAmBvqB,OAI1H74B,CAAuCskD,IC7HhDY,eAMF,SAAAA,EAAY50F,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAgiG,IACtBh7F,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAijG,GAAAz0F,KAAAvN,KAAMoN,KANF4/E,UAAY,CAChBiV,YAAa,cACb32E,UAAW,YACXgrD,WAAY,cAEUtvE,EAqD1Bk7F,gBAAkB,SAACp1F,GACe,IAA1B9F,EAAK+G,MAAM+pD,WACX9wD,EAAK4G,SAAS,CAAEu0F,QAASr1F,EAAOoqD,WAAW,IAE3ClwD,EAAK4G,SAAS,CAAEkqD,WAAYhrD,KAzDV9F,EA6D1B2mF,2BAA6B,WACzB3mF,EAAK4G,SAAS,CAAEspD,WAAW,EAAOirC,aAAS/+F,KA9DrB4D,EAiE1B4mF,6BAA+B,gBACAxqF,IAAvB4D,EAAK+G,MAAMo0F,SACXn7F,EAAK4G,SAAS,CAAEkqD,WAAY9wD,EAAK+G,MAAMo0F,QAASjrC,WAAW,EAAOirC,aAAS/+F,KAnEzD4D,EAsE1Bo7F,qBAAuBthF,aAAW,SAACuhF,GAC/B,OAAoB,IAAhBA,EAAK9hG,SAEF8hG,EAAKl5E,KAAK,SAAAxS,GAAC,OAAIA,EAAEm/D,aAtExB9uE,EAAK+G,MAAQ,CACTmpD,WAAW,EACXY,WAAY,EACZwqC,YAAa,CAAC,CAAE7sF,MAAOzO,EAAKgmF,UAAUiV,YAAah0C,SAAUs0C,IACrD,CAAE9sF,MAAOzO,EAAKgmF,UAAU1hE,UAAWlmB,MAAO4B,EAAKw7F,4BAPrCx7F,mFAYtB,GAAIhH,KAAKoN,MAAMymF,iBAAiBtqE,qBAAqBwW,SAASre,GAAuBgE,sBAAuB,CACpG,IAAI+8E,EAAoB,CACpB,CAAEhtF,MAAOzV,KAAKgtF,UAAUiV,YAAah0C,SAAUs0C,IAC/C,CAAE9sF,MAAOzV,KAAKgtF,UAAU1hE,WACxB,CAAE7V,MAAOzV,KAAKgtF,UAAU1W,WAAYroB,S5BhD/B,gB4BgD2Dl5C,QAAS/U,KAAK0iG,sBAElF1iG,KAAK4N,SAAS,CAAE00F,YAAaG,gDAItB3rC,GACf,IAUQ/hD,EAVJ0tF,EAAoB,CACpB,CAAEhtF,MAAOzV,KAAKgtF,UAAUiV,YAAah0C,SAAUs0C,IAC/C,CAAE9sF,MAAOzV,KAAKgtF,UAAU1hE,UAAWlmB,MAAOpF,KAAKwiG,4BAG/C1rC,EAAU+8B,iBAAiBvoE,UAAU/qB,SAAWP,KAAKoN,MAAMymF,iBAAiBvoE,UAAU/qB,QACtFP,KAAK4N,SAAS,CAAE00F,YAAaG,IAG7B3rC,EAAU+8B,iBAAiBpkD,gBAAiB6pC,WAAat5E,KAAKoN,MAAMymF,iBAAiBpkD,gBAAiB6pC,YAGlGvkE,EADA/U,KAAKoN,MAAMymF,iBAAiBpkD,gBAAiB6pC,SAAS/4E,OAAS,IACrDP,KAAKoN,MAAMymF,iBAAiBpkD,gBAAiB6pC,SAASnwD,KAAK,SAAAxS,GAAC,OAAIA,EAAEm/D,WAI5E91E,KAAKoN,MAAMymF,iBAAiBtqE,qBAAqBwW,SAASre,GAAuBgE,wBACjF+8E,EAAkB50E,KACd,CACIpY,MAAOzV,KAAKgtF,UAAU1W,WACtBroB,S5B3EC,gB4B4EDl5C,QAASA,IAIjB/U,KAAK4N,SAAS,CAAE00F,YAAaG,uCAyCrC,IAAMlD,EAAQv/F,KAAKoN,MAAMymF,iBAAiB5b,gCAAkC3oC,GAAiCG,gBAC7G,OACIvhC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAOZ,WAC1BhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC4/E,GAAD,CACIj2B,WAAY93D,KAAK+N,MAAM+pD,WACvBJ,aAAc13D,KAAK+N,MAAMu0F,YACzBprC,UAAWl3D,KAAK+N,MAAMmpD,UACtBc,aAAch4D,KAAKkiG,gBACnB9pC,uBAAwBp4D,KAAK2tF,2BAC7Bt1B,yBAA0Br4D,KAAK4tF,gCAGvC1/E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAO0I,GAAOk3E,UACD,IAA1BhuF,KAAK+N,MAAM+pD,YACR5pD,EAAAhP,EAAAiP,cAACw0F,GAAD,CACIxmD,UAAWn8C,KAAKoN,MAAM+uC,UACtBj5C,aAAclD,KAAKoN,MAAMlK,aACzB2wF,iBAAkB7zF,KAAKoN,MAAMymF,iBAC7B0L,MAAOA,IAIe,IAA1Bv/F,KAAK+N,MAAM+pD,YACX5pD,EAAAhP,EAAAiP,cAACy0F,GAAD,CACIzmD,UAAWn8C,KAAKoN,MAAM+uC,UACtBj5C,aAAclD,KAAKoN,MAAMlK,aACzB2wF,iBAAkB7zF,KAAKoN,MAAMymF,iBAC7Bt1B,SAAUghC,EACV/K,YAAax0F,KAAKoN,MAAMonF,YACxBG,eAAgB30F,KAAKoN,MAAMunF,eAC3Bj2F,gBAAiBsB,KAAKoN,MAAM1O,gBAC5Bg2F,eAAgB10F,KAAKoN,MAAMsnF,iBAIL,IAA1B10F,KAAK+N,MAAM+pD,YACX5pD,EAAAhP,EAAAiP,cAAC00F,GAAD,CACI1mD,UAAWn8C,KAAKoN,MAAM+uC,UACtBoiB,SAAUghC,EACVr8F,aAAclD,KAAKoN,MAAMlK,aACzBg9F,kBAAmBlgG,KAAKoN,MAAMymF,iBAAiBprE,GAC/CgnB,gBAAiBzvC,KAAKoN,MAAMymF,iBAAiBpkD,gEAtDjE,OAAOzvC,KAAKoiG,qBAAqBpiG,KAAKoN,MAAMymF,iBAAiBpkD,gBAAiB6pC,2DAG9E,OAAIt5E,KAAKoN,MAAMymF,iBAAiB7oE,YAAYtnB,gBAAkB0iC,GAAe,qBAAsB5b,GAAgBQ,cACxD,GAAhDhrB,KAAKoN,MAAMymF,iBAAiBvoE,UAAU/qB,cAvFvBgO,IAAMC,eAkJlCsI,GAAiD,CACnDZ,UAAW,CACPgB,UAAW,IAEf82E,SAAU,CACN5zE,YAAa,KAIN4nF,MCjLFrH,GAAY,8BAsBnBmI,GAAkBjlD,GAAS,wBAC3BklD,GAAkBllD,GAAS,wBAC3BmlD,GAAmBnlD,GAAS,yBAsI5B/mC,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7Co/D,GAD6C,CAEhDzkD,MAAO,CACHlC,QAAS,YACTN,UAAW,GAEfknD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEf40F,YAAa,CACT5pF,WAAY,GAEhBmyC,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExByqD,KAAM,CACFxkD,aAAc,IAElBZ,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBnF,KAAM,CACFqC,MAAO9D,GAAQiB,KAAKC,SAExB+uF,QAAS,CACLhsF,UAAW,EACX2C,aAAc,KAIPsrC,gBAAoC,CAAEF,KAAM01C,IAA5Cx1C,CAtKqB,SAAC/3C,GACjC,IAAM+1F,GAAmB/1F,EAAMwvD,aAAexvD,EAAMkvF,QAC9C8G,EAAmBh2F,EAAMwvD,aAAexvD,EAAMkvF,QAC9C+G,EAAoBj2F,EAAMk2F,aAAel2F,EAAMm2F,cAC/CC,EAAep2F,EAAM4d,cAAgBob,GAAe,wBAAyB5b,GAAgBQ,aAC7Fy4E,EAAer2F,EAAM4d,cAAgBob,GAAe,wBAAyB5b,GAAgBQ,aAC7F04E,EAAat2F,EAAM4d,cAAgBob,GAAe,sBAAuB5b,GAAgBQ,aACzF24E,EAAgBH,GAAgBE,EAChCE,EAAcx2F,EAAMkvF,UAAYoH,EAatC,OACIx1F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKo1F,GACGx1F,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAAS7L,EAAMo4B,YAAzC,oBAEFk+D,GACEx1F,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAAS7L,EAAMo4B,YAAzC,4BAEJt3B,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOunD,MACdqlC,GACDx1F,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,8BAAgEp+C,EAAMo4B,YAAtE,6FACQt3B,EAAAhP,EAAAiP,cAAA,uCAC4BD,EAAAhP,EAAAiP,cAAA,KAAGrI,KAAK,oCAAR,6BAD5B,2CAGJoI,EAAAhP,EAAAiP,cAAA,MAAIC,MAAO0I,GAAOosF,SACdh1F,EAAAhP,EAAAiP,cAAA,UAAID,EAAAhP,EAAAiP,cAAA,yBACJD,EAAAhP,EAAAiP,cAAA,UAAID,EAAAhP,EAAAiP,cAAA,0BACJD,EAAAhP,EAAAiP,cAAA,UAAID,EAAAhP,EAAAiP,cAAA,0BACJD,EAAAhP,EAAAiP,cAAA,UAAID,EAAAhP,EAAAiP,cAAA,0BACJD,EAAAhP,EAAAiP,cAAA,UAAID,EAAAhP,EAAAiP,cAAA,4EATZ,kBAYoBf,EAAMo4B,YAZ1B,8GAeEk+D,GACFx1F,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,8BAAgEp+C,EAAMo4B,YAAtE,6CAEKi+D,GACGv1F,EAAAhP,EAAAiP,cAAA,sCAA6BD,EAAAhP,EAAAiP,cAAA,KAAGrI,KAAK,mFAAmFyjD,OAAO,SAASn7C,MAAO0I,GAAOpC,MAAzH,oBAA7B,sHAGH8uF,GACGt1F,EAAAhP,EAAAiP,cAAA,mCACoBD,EAAAhP,EAAAiP,cAAA,KAAGrI,KA9CrB,gEA8C6CyjD,OAAO,UAAUn8C,EAAMo4B,YAAlD,sCADpB,sGAEoBp4B,EAAMo4B,YAF1B,0CAPR,kDAgBJt3B,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO+vD,GAAiBzkD,OAC3BxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACdyqF,GACGx1F,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO+vD,GAAiBjlD,YAAa9L,EAAMo4B,YAA9C,8BAEFk+D,GACFx1F,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO+vD,GAAiBjlD,YAA3B,4BAGJhL,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,iBACNqoC,UAAWnD,GACXntC,MAAK,GAAA1P,OAAK6I,EAAMo4B,YAAX,KAAAjhC,OAnEzBi/F,EACO,YAEPE,EACO,2BAEJ,YA8DiBn+C,WAAS,EACT3mD,QAAQ,WACR+iB,SAAUvU,EAAMwvD,cAAgBxvD,EAAMkvF,QACtCrwC,KAAM03C,EAAgBX,GAAmBF,MAGhDc,GACG11F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,UACNqoC,UAAWnD,GACXntC,MAAK,GAAA1P,OAAK6I,EAAMo4B,YAAX,aACL+f,WAAS,EACT3mD,QAAQ,WACR+iB,UAAWvU,EAAMwvD,cAAgBxvD,EAAMkvF,QACvCrwC,KAAMm3C,EAAmBL,QAAkB3/F,QAOlE+/F,GACGj1F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsnD,WACflwD,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,qBACH7pB,QAASwkG,EAAmB,WAAa,YACzCrsF,MAAM,UACNL,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAMk2F,YACf3hF,SAAU0hF,GANd,QAQUj2F,EAAMo4B,YARhB,SAUC49D,GACGl1F,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,uBACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAStJ,EAAMy2F,gBACfh/C,QAASz3C,EAAMm2F,cACf5hF,SAAU0hF,GAAqBj2F,EAAM02F,gBACrC11F,MAAO0I,GAAOmsF,aAEb71F,EAAMqpE,YAAc,WAAa,SATtC,eAS4DrpE,EAAMo4B,iBC9HpFu+D,eAKF,SAAAA,EAAY32F,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA+jG,IACtB/8F,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAglG,GAAAx2F,KAAAvN,KAAMoN,KALV6mB,wBAA0BjtB,EAAKoG,MAAMuhB,gBAAgB+jD,eAI3B1rE,EAH1Bs1F,QAAU5uF,GAAK+jB,6BAGWzqB,EAF1Bg9F,kBAAoBh9F,EAAKoG,MAAMymF,iBAAiBpkD,iBAAmBzoC,EAAKoG,MAAMymF,iBAAiBpkD,gBAAiBgnC,YAEtFzvE,EAD1ByvE,cAAczvE,EAAKg9F,mBAAoBh9F,EAAKoG,MAAMymF,iBAAiBpkD,gBAAiBgnC,YAC1DzvE,EAmB1Bi9F,cAAgB,WACZj9F,EAAK4G,SAAS,CAAE01F,aAAa,KApBPt8F,EAuB1Bk9F,eAAiB,WACbl9F,EAAK4G,SAAS,CAAE01F,aAAa,KAxBPt8F,EA2B1Bm9F,gBAAkB,WACdn9F,EAAK4G,SAAS,CAAE21F,eAAe,KA5BTv8F,EA+B1Bo9F,iBAAmB,WACfp9F,EAAK4G,SAAS,CAAE21F,eAAe,KAhCTv8F,EAmC1Bq+C,aAAe,WACXr+C,EAAKm9F,kBACLn9F,EAAKoG,MAAMypD,cArCW7vD,EAwC1B03F,YAxC0B,eAAA5/F,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAwCZ,SAAAC,EAAOkyD,GAAP,IAAAsoB,EAAA+kB,EAAA,OAAA1/F,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,YACNm6E,EAAkB5yE,EAAKoG,MAAMymF,kBACbpkD,gBAFV,CAAAlwC,EAAAE,KAAA,YAGNm6E,EAAgBnqC,gBAAgB8mC,QAAUjlB,EAAWilB,QAC/CqD,EAAgBnqC,gBAAgB2mC,gBAAkBwD,EAAgBnqC,gBAAgB2mC,eAAe71E,OAAS,IAC5Gq5E,EAAgBnqC,gBAAgB2mC,eAAe,GAAGiuB,eAAiB/yC,EAAW+yC,gBAE9E1F,EAAwBhlB,GAA2CC,GAClE5yE,EAAK+G,MAAMw1F,cARV,CAAAhkG,EAAAE,KAAA,gBASFuH,EAAKi9F,gBATH1kG,EAAAE,KAAA,EAUIuH,EAAKoG,MAAM6xF,sBAAsBN,GAAuBz3F,KAAKF,EAAKk9F,eAAgBl9F,EAAKk9F,gBAV3F,OAAA3kG,EAAAE,KAAA,wBAAAF,EAAAE,KAAA,GAYIuH,EAAKoG,MAAM6xF,sBAAsBN,GAAuBz3F,KAAKF,EAAKo9F,iBAAkBp9F,EAAKo9F,kBAZ7F,QAaFp9F,EAAKoG,MAAMk3F,mBAAmB3F,EAAsBl2E,IAblD,yBAAAlpB,EAAAM,SAAAT,MAxCY,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAGtB+G,EAAK+G,MAAQ,CACTu1F,aAAa,EACbC,eAAe,GALGv8F,wEA2DtB,OACIkH,EAAAhP,EAAAiP,cAACo2F,GAAD,CACIv+C,cAAehmD,KAAKgmD,cACpBh7B,YAAahrB,KAAKoN,MAAMymF,iBAAiB7oE,YACzCwa,YAAaxlC,KAAKoN,MAAMymF,iBAAiBruD,YACzCkpD,YAAa1uF,KAAKoN,MAAMshF,YACxB9xB,YAAa58D,KAAKi0B,sBAClBqoE,QAASt8F,KAAKs8F,QACdwH,gBAAiB/kG,OAAOsN,KAAKrM,KAAKoN,MAAM2xF,cAAcx+F,OAAS,EAC/D+iG,YAAatjG,KAAK+N,MAAMu1F,YACxBC,cAAevjG,KAAK+N,MAAMw1F,cAC1BM,gBAAiB7jG,KAAKqlD,aACtBD,SAAUplD,KAAK0+F,YACfjoB,YAAaz2E,KAAKy2E,oDA9D1B,IAAM+tB,EAAMxkG,KAAKoN,MAAMymF,iBAAiBpkD,gBAClCg1D,EAASD,GAAOA,EAAIpuB,gBAAkBouB,EAAIpuB,eAAe71E,OAAS,EAKxE,MAJkC,CAC9Bg2E,QAASiuB,EAAMA,EAAIjuB,aAAUnzE,EAC7BihG,eAAgBG,GAAOC,GAAgC,MAAtBD,EAAIpuB,eAAyBouB,EAAIpuB,eAAe,GAAGiuB,oBAA8BjhG,UAnBlFmL,IAAMC,eAwGnCsuC,IC/HH4nD,GD+HG5nD,eAff,SAAyB/uC,GACrB,MAAO,CACH4gB,gBAAiB5gB,EAAMmhB,WACvB6vE,aAAcqB,aAAoBzF,GAApByF,CAA+BryF,KAIrD,SAA4B1O,EAAe2oD,GACvC,MAAO,CACH6O,WAAY,kBAAMx3D,EAASoV,aAAOkmF,MAClC2J,mBAAoB,SAAC/tB,GAAD,OAAal3E,EAASilG,GAAmB,CAAC/tB,MAC9D0oB,sBAAuB,SAACrlB,GAAD,OAAqBv6E,EAAS4/F,GAAsBj3C,EAAS7L,UAAW6L,EAAS9kD,aAAc02E,OAI/G98B,CAA6CinD,IE/HtDY,GAA8Bp2F,IAAMizC,KAAK,SAACp0C,GAC5C,OACIc,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,iCACPqkD,SAAU5rD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO8tF,aAAcx3F,EAAMw3F,aACxDl3C,UAAW,EACXqL,aAAc,MAKpBjiD,GAAiD,CACnDmC,OAAQ,CACJvB,WAAY,SACZI,SAAU,GACVC,WAAY,IACZhB,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,QAElBotE,UAAW,CACPlwE,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,WAEd4B,MAAO,CACHxC,UAAW,GACXO,WAAY,GACZiB,aAAc,GACd0B,YAAa,EACbhD,cAAe,GACfqgF,YAAa,EACbt9B,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BmxF,eAAgB,GAChBC,eAAgB7xF,GAAQiB,KAAK,KAC7B8C,SAAU,YAEd+tF,QAAS,CACLzqF,QAAS,OACTuC,eAAgB,UAEpBwW,KAAM,CACFvb,SAAU,QAEd8sF,YAAa,CACT9d,WAAY,aAIL6d,gBDhDHD,0GAOZ,IAmCM5tF,GAAiD,CACnD00C,SAAU,CACN1zC,SAAU,GACV+B,aAAc,IAElBmrF,SAAU,CACN1qF,QAAS,SACT7C,WAAY,GACZ2C,YAAa,KAKN6qF,GAnCS,SAAC73F,GAErB,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAEIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAO00C,UAC1Bt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,yBACPqkD,UAtBAj0D,EAsByBuH,EAAMvH,SArBnC,GAAZA,EACQ,6LACW,GAAZA,EACC,6LACW,GAAZA,EACC,kMAER,GAegB6nD,UAA2B,GAAhBtgD,EAAMvH,UAAc,EAAI,EACnCgzD,WAA4B,GAAhBzrD,EAAMvH,SAClBkzD,aAAc,OAzBf,IAAClzD,GEkClBq/F,eACF,SAAAA,EAAY93F,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAklG,IACtBl+F,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAmmG,GAAA33F,KAAAvN,KAAMoN,KAwBV+3F,kBAAoB,WAEhB,KADgBn+F,EAAKo+F,oBAAqBp+F,EAAKo+F,mBAAmBp6E,cAAgBob,GAAe,uBAAwB5b,GAAgBQ,aAErI,OAAQ9c,EAAAhP,EAAAiP,cAACk3F,GAAD,CACJx/F,SAAU,KA7BImB,EAsC1Bs+F,eAAiB,WACb,IAAMC,EAAU1/D,GAAyB7+B,EAAKoG,MAAM03D,UAAU18C,MAC9DphB,EAAK4G,SAAS,CAAEk4B,sBAAuBy/D,EAAS1gD,SAAS,KAxCnC79C,EA2C1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA3CjB79C,EA4C1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA5ClB79C,EA0D1Bw+F,gBAAkB1kF,aAAW,SAAC+H,GAC1B,GAAI7hB,EAAKo+F,oBAAsBv8E,EAAO,CAClC,IAAM48E,EAAUz+F,EAAKo+F,mBAAoBv8E,MAAMroB,IAAI,SAAAnC,GAAC,OAAIA,EAAEoqB,KACpDW,EAAOP,EAAMM,KAAK,SAAA9qB,GAAC,OAAIonG,EAAQ1lE,SAAS1hC,EAAEoqB,KAAOpqB,EAAEkrB,qBAAqBwW,SAAS,MACvF,GAAI3W,EAAM,CACN,IAAMrkB,EAASqkB,EAAK2I,gBAAkB3I,EAAK2I,eAAe5I,KAAK,SAAAjqB,GAAC,OAA8B,KAA1BA,EAAEizB,sBAEtE,OADmBptB,GAAUA,EAAOstB,gBAAkBttB,EAAOstB,eAAelJ,KAAK,SAAAjqB,GAAC,MAAc,gBAAVA,EAAE4H,UAhE1EE,EA2E1B0+F,oBAAsB5kF,aAAW,SAAC6kF,GAC9B,OAAOA,EAAkBx8E,KAAK,SAAAy8E,GAAI,OAAIA,EAAKn9E,KAAOzhB,EAAKk5F,sBA5EjCl5F,EAuF1B6+F,2BAvF0B,eAAA/mG,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAuFG,SAAAC,EAAOqpB,GAAP,IAAAq9E,EAAA,OAAA7mG,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACrBqmG,EAAqBnsB,GAA2C3yE,EAAKo+F,qBACtDltB,iBAAmBzvD,EAFblpB,EAAAE,KAAA,EAGnBuH,EAAKoG,MAAM6xF,sBAAsBj4F,EAAKm1C,UAAWn1C,EAAK9D,aAAc4iG,GAHjD,wBAAAvmG,EAAAM,SAAAT,MAvFH,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAAA+G,EA6F1BqvD,iBAAmB,SAACvpD,GAChB,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,QACrB,GAAc,IAAV3gF,EAAa,KAAAi5F,EACK/3F,GAAO6lF,iBAAxB5lF,EADY83F,EACZ93F,KAAMsE,EADMwzF,EACNxzF,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,KAlG5BzmF,EAAK+G,MAAQ,CACT82C,SAAS,EACT/e,sBAAuB,IALL9+B,mFAUtB,IAAM83E,EAA2B,GAC5B9+E,KAAKoN,MAAMuhB,gBAAgBlG,IAC5Bq2D,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,gBAEG,IAAjDlD,KAAKoN,MAAM44F,sBAAsB59E,KAAK7nB,QACpCP,KAAKoN,MAAM44F,sBAAsB59E,KAAKlb,OAAO,SAAA+4F,GAAE,OAAIA,EAAGj7E,cAAiBob,GAAe,qBAAsB5b,GAAgBQ,eAAczqB,OAAO,IACnJu+E,EAASjxD,KAAK7tB,KAAKoN,MAAM84F,sBAAsBlmG,KAAKm8C,UAAWn8C,KAAKkD,eAE/B,IAArClD,KAAKoN,MAAM03D,UAAU18C,KAAK7nB,QAC1Bu+E,EAASjxD,KAAK7tB,KAAKoN,MAAM++E,WAAWnsF,KAAKm8C,UAAWn8C,KAAKkD,eAG7DuE,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAKslG,eAAgBtlG,KAAK+pF,6CAmFhD,IAAAjtB,EACsC98D,KAAK+N,MAAxC82C,EADHiY,EACGjY,QAAS/e,EADZg3B,EACYh3B,sBACX+tD,EAAmB7zF,KAAKolG,mBACxBe,IAAsBtS,GAAmBA,EAAiBpb,kBAE1D2tB,GADiBvS,EAAmB5tD,GAAmC4tD,EAAiB7oE,YAAa8a,GAAyB,IAC1Fz8B,QAAQ,KAAO,EACnDg9F,IAAsBxS,IAAmBA,EAAiBuL,mCAAqCvL,EAAiBpkD,iBAChH62D,IAAUzS,IACRA,EAAiB5b,gCAAkC3oC,GAAiCC,KACpFskD,EAAiB5b,gCAAkC3oC,GAAiCE,WACpF62D,IAAwBF,EAE1B5G,IAAU1L,GAAoBA,EAAiB5b,gCAAkC3oC,GAAiCG,iBAAmB42D,EACrIE,IAAoB1S,GAAoBA,EAAiB5b,gCAAkC3oC,GAAiCI,0BACzGhiC,GAAK+jB,6BAE9B,OACIvjB,EAAAhP,EAAAiP,cAACq8C,GAAD,KACK3F,EACG32C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAEC,UAAW,WACrBH,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGJl0C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAWoB,KAAKoN,MAAMshF,aACrCxgF,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAOl2D,KAAKwmG,WACZnwC,iBAAkBr2D,KAAKq2D,mBAE1Br2D,KAAK4kG,aAAe5kG,KAAK4kG,YAAY79F,OAClCmH,EAAAhP,EAAAiP,cAACs4F,GAAD,CAA6B7B,YAAa5kG,KAAK4kG,YAAY79F,QAE9D/G,KAAKmlG,sBACHtR,GACC3lF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACMi4F,GAAmBH,IACjBl4F,EAAAhP,EAAAiP,cAACu4F,GAAD,CACIvqD,UAAWn8C,KAAKm8C,UAChBuyC,YAAa1uF,KAAKoN,MAAMshF,YACxBxrF,aAAclD,KAAKkD,aACnB2wF,iBAAkBA,KAGxByS,GAASC,IACPr4F,EAAAhP,EAAAiP,cAACw4F,GAAD,OAGFL,GAASC,IACPr4F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACy4F,GAAD,CACIzqD,UAAWn8C,KAAKm8C,UAChBj5C,aAAclD,KAAKkD,aACnB2wF,iBAAkBA,EAClBW,YAAax0F,KAAKoN,MAAMy5F,2BACxBlS,eAAgB30F,KAAKoN,MAAM05F,8BAC3BpoG,gBAAiBsB,KAAKoN,MAAM1O,kBAEhCwP,EAAAhP,EAAAiP,cAAC44F,GAAD,CACI5qD,UAAWn8C,KAAKm8C,UAChBj5C,aAAclD,KAAKkD,aACnB2wF,iBAAkBA,EAClBW,YAAax0F,KAAKoN,MAAMy5F,2BACxBlS,eAAgB30F,KAAKoN,MAAM05F,8BAC3BpoG,gBAAiBsB,KAAKoN,MAAM1O,oBAK3C6gG,GACGrxF,EAAAhP,EAAAiP,cAAC64F,GAAD,CACI7qD,UAAWn8C,KAAKm8C,UAChBj5C,aAAclD,KAAKkD,aACnB2wF,iBAAkBA,EAClBW,YAAax0F,KAAKoN,MAAMy5F,2BACxBnS,eAAgB10F,KAAKoN,MAAM65F,8BAC3BtS,eAAgB30F,KAAKoN,MAAM05F,8BAC3BpoG,gBAAiBsB,KAAKoN,MAAM1O,uDAxI5D,OAAOsB,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOk5F,eAAe30F,OAAQ4pC,UAAWh8C,QAAQ,IAAK,0CAIrF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOk5F,eAAe30F,OAAQrP,aAAc/C,QAAQ,IAAK,+CAIxF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOk5F,eAAe30F,OAAQ2tF,kBAAmB//F,QAAQ,IAAK,yCAiB7F,OAAOH,KAAKwlG,gBAAgBxlG,KAAKoN,MAAM03D,UAAU18C,iDAQjD,OAAOpoB,KAAK0lG,oBAAoB1lG,KAAKoN,MAAM44F,sBAAsB59E,yCAIjE,MAAO,CAAC,YAAa,qBAAsBpoB,KAAKolG,mBAAqBplG,KAAKolG,mBAAmB5/D,YAAc,WArFpFj3B,IAAMC,eAoOrC,IAAMsI,GAAiD,CACnD4C,MAAO,CAAElC,QAAS,KAGPslC,eA1Bf,SAAyB/uC,GACrB,MAAO,CACH2gF,YAAa3gF,EAAMmhB,WAAWnO,QAAQ7E,KACtCyS,gBAAiB5gB,EAAMmhB,WACvB82E,sBAAuBj4F,EAAM6rE,gBAC7B9U,UAAW/2D,EAAMqb,OAIzB,SAA4B/pB,GACxB,MAAO,CACH86C,gBAAiB,SAACj3C,GAAD,OAAkB7D,EAAS86C,GAAgBj3C,KAC5DgjG,sBAAuB,SAAC/pD,EAAWj5C,GAAZ,OAA6B7D,EAAS6mG,GAAsB/pD,EAAWj5C,KAC9FipF,WAAY,SAAChwC,EAAWj5C,GAAZ,OAA6B7D,EAAS8sF,GAAWhwC,EAAWj5C,KACxE2jG,2BAA4B,SAAC1qD,EAAWj5C,EAAcg9F,EAAmB3L,GAA7C,OAA4Dl1F,EXvOzF,SAAoC88C,EAAmBj5C,EAAsBg9F,EAA2B3L,GAC3G,sBAAA5lC,EAAA5vD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAyvD,EAAOvvD,GAAP,IAAAg/C,EAAA,OAAAp/C,EAAAC,EAAAI,KAAA,SAAAuvD,GAAA,cAAAA,EAAArvD,KAAAqvD,EAAApvD,MAAA,cACG4+C,EAAW,IAAI8oD,SACrB5S,EAAWF,MAAQh2C,EAAS+oD,OAAO,OAAQ7S,EAAWF,MACtDE,EAAW9+E,OAAS4oC,EAAS+oD,OAAO,QAAS7S,EAAW9+E,OACxD8+E,EAAWn8D,UAAYimB,EAAS+oD,OAAO,WAAY7S,EAAWn8D,UAJ3Dy2B,EAAArvD,KAAA,EAAAqvD,EAAApvD,KAAA,EAMOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,sBAAAqB,OAAwE27F,EAAxE,cAAuG,CAAE/2D,OAAQ,OAAQC,KAAMiV,IAN1I,cAAAwQ,EAAApvD,KAAA,EAOOJ,EAASgoG,GAAgClrD,EAAWj5C,EAAcg9F,IAPzE,OAQC7gG,EAASX,EAAgB,sCAAuC,YARjEmwD,EAAApvD,KAAA,uBAAAovD,EAAArvD,KAAA,GAAAqvD,EAAAlH,GAAAkH,EAAA,SAUCxvD,EAAS0B,EAAyB8tD,EAAAlH,GAAK,oDAVxCkH,EAAAlH,GAAA,yBAAAkH,EAAAhvD,SAAA+uD,EAAA,kBAAP,gBAAA3R,GAAA,OAAA0R,EAAA5uD,MAAAC,KAAAC,YAAA,GWsOqG4mG,CAA2B1qD,EAAWj5C,EAAcg9F,EAAmB3L,KACxK0S,8BAA+B,SAAC9qD,EAAWj5C,EAAcg9F,EAAmB3L,GAA7C,OAA4Dl1F,EXvN5F,SAAuC88C,EAAmBj5C,EAAsBg9F,EAA2B3L,GAC9G,sBAAAxlC,EAAAhwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA6vD,EAAO3vD,GAAP,IAAAg/C,EAAA,OAAAp/C,EAAAC,EAAAI,KAAA,SAAA2vD,GAAA,cAAAA,EAAAzvD,KAAAyvD,EAAAxvD,MAAA,cACG4+C,EAAW,IAAI8oD,SACrB5S,EAAW9+E,OAAS4oC,EAAS+oD,OAAO,QAAS7S,EAAW9+E,OACxD8+E,EAAW9+E,OAAS4oC,EAAS+oD,OAAO,KAAM7S,EAAW9rE,IACrD8rE,EAAW9+E,OAAS4oC,EAAS+oD,OAAO,WAAY7S,EAAW1f,UAC3DxwE,QAAQC,IAAI,gCAAiCiwF,GAL1CtlC,EAAAzvD,KAAA,EAAAyvD,EAAAxvD,KAAA,EAOOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,sBAAAqB,OAAwE27F,EAAxE,cAAuG,CAAE/2D,OAAQ,MAAOC,KAAMiV,IAPzI,cAAA4Q,EAAAxvD,KAAA,GAQOJ,EAASgoG,GAAgClrD,EAAWj5C,EAAcg9F,IARzE,QASC7gG,EAASX,EAAgB,wCAAyC,YATnEuwD,EAAAxvD,KAAA,uBAAAwvD,EAAAzvD,KAAA,GAAAyvD,EAAAtH,GAAAsH,EAAA,SAWC5vD,EAAS0B,EAAyBkuD,EAAAtH,GAAK,sDAXxCsH,EAAAtH,GAAA,yBAAAsH,EAAApvD,SAAAmvD,EAAA,kBAAP,gBAAAE,GAAA,OAAAH,EAAAhvD,MAAAC,KAAAC,YAAA,GWsNwGgnG,CAA8B9qD,EAAWj5C,EAAcg9F,EAAmB3L,KAC9KuS,8BAA+B,SAAC3qD,EAAWj5C,EAAcg9F,EAAmB1M,EAAOt3E,GAApD,OAA6D7c,EXrM7F,SAAuC88C,EAAmBj5C,EAAsBg9F,EAA2B1M,EAAet3E,GAC7H,sBAAA2vE,EAAA9sF,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA+9C,EAAO79C,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA69C,GAAA,cAAAA,EAAA39C,KAAA29C,EAAA19C,MAAA,cAAA09C,EAAA39C,KAAA,EAAA29C,EAAA19C,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,sBAAAqB,OAAwE27F,EAAxE,eAAA37F,OAAuGivF,GAAS,CAAErqD,OAAQ,WAFrI,cAAAgU,EAAA19C,KAAA,EAGOJ,EAASgoG,GAAgClrD,EAAWj5C,EAAcg9F,IAHzE,OAIC7gG,EAASX,EAAe,GAAA6F,OAAI2X,EAAJ,YAAoB,aAJ7CihC,EAAA19C,KAAA,sBAAA09C,EAAA39C,KAAA,EAAA29C,EAAAwK,GAAAxK,EAAA,SAMC99C,EAAS0B,EAAyBo8C,EAAAwK,GAAK,iCANxCxK,EAAAwK,GAAA,yBAAAxK,EAAAt9C,SAAAq9C,EAAA,iBAAP,gBAAAoX,GAAA,OAAAu3B,EAAA9rF,MAAAC,KAAAC,YAAA,GWoMyG6mG,CAA8B3qD,EAAWj5C,EAAcg9F,EAAmB1M,EAAOt3E,KACtLxd,gBAAiB,SAACC,EAASC,GAAV,OAAsBS,EAASX,EAAgBC,EAASC,KACzEqgG,sBAAuB,SAAC9iD,EAAWj5C,EAAc02E,GAA1B,OAA8Cv6E,EAAS4/F,GAAsB9iD,EAAWj5C,EAAc02E,OAQtH98B,CAA6CooD,IC7P7CoC,GArBe,SAACl6F,GAC3B,IAAMm6F,EAAYv5F,GAAOw5F,eAAej1F,OAAQ++E,OAAQnxF,QAAQ,IAAK,IAEjEsnG,EAAwB,SADbr6F,EAAMgF,MAAMG,OAAOg1F,GAGlC,OADA/yE,GAAW89B,eAAem1C,GAEtBv5F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKm5F,EACGv5F,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,yEAGJD,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,2ECGLu5F,GAjBmB,SAACt6F,GAC/B,IAAIqgF,EACJ,GAAG//E,GAAKsE,aACJy7E,EAAQz/E,GAAOH,cAAcI,SAE7B,CACA,IAAM05F,EAAyB35F,GAAO45F,0BAA0Br1F,OAAQs1F,gBAAiB1nG,QAAQ,IAAK,IAChG0nG,EAAkBz6F,EAAMgF,MAAMG,OAAOo1F,GACnC15F,EAASD,GAAO85F,eAAhB75F,KACRw/E,EAAK,GAAAlpF,OAAM0J,EAAN,SAAA1J,OAAkBsjG,GAG3B,OACI35F,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI86E,qECnBhBsa,UAAWC,UAAiBpiG,OAAOqiG,UAAUC,WAMtCC,GAAO,WAChB,MAAuC,sBAA/BJ,GAASK,aAAalsF,MC+B5BmsF,8MAEFC,WAAa,SAACC,GAAgB,IAAAjzF,EAC8DtO,EAAKoG,MADnEmI,EAAAD,EAClBE,eADkB,IAAAD,EACR,GADQA,EACJizF,EADIlzF,EACJkzF,WAAYC,EADRnzF,EACQmzF,gBAAiBC,EADzBpzF,EACyBozF,uBAC7CxxB,GAFoB5hE,EACiDqM,UAC/C6mF,IAAeD,EAAK9/E,GAC1CkgF,GAAYzxB,GAAUlwE,EAAKoG,MAAMw7F,eAAe97E,IAAIy7E,EAAK9/E,IACzDogF,GAAc3xB,GAAUuxB,GAAmBA,EAAgB37E,IAAIy7E,EAAK9/E,IACpEqgF,GAAqB5xB,GAAUwxB,GAA0BA,EAAuB57E,IAAIy7E,EAAK9/E,IACzFsgF,EAAW,CAAC,KAAM,MAAMhpE,SAAS/4B,EAAKoG,MAAMgM,OAC5C4vF,EAAmB,GAAAzkG,OAAGiR,EAAQyzF,cAAX,KAAA1kG,OAA6BwkG,EAA0C,GAA/BvzF,EAAQ0zF,qBAAhD,KAAA3kG,OAA6E2yE,EAAS1hE,EAAQ2zF,WAAaR,EAAWnzF,EAAQ4zF,cAAgBP,EAAarzF,EAAQ6zF,eAAiB,IAAK/9F,OAC5Mg+F,EAAgBX,EAAWY,KAAYV,EAAaW,KAAUjB,EAAKl1E,KAGzE,MAAO,CAAE6jD,SAAQyxB,WAAUE,aAAYC,oBAAmBz1E,KAF7Ci2E,EAAgBp7F,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW+yF,GAAkB96F,EAAAhP,EAAAiP,cAACm7F,EAAD,CAAerzF,UAAWT,EAAQ6d,aAAiBjwB,4EAK7G,IAAAoE,EAAAxH,KAAAq9D,EACiJr9D,KAAKoN,MADtJq8F,EAAApsC,EACG7nD,eADH,IAAAi0F,EACa,GADbA,EACiBC,EADjBrsC,EACiBqsC,MAAO/nF,EADxB07C,EACwB17C,SAAU6mF,EADlCnrC,EACkCmrC,WAAY9xF,EAD9C2mD,EAC8C3mD,QAASizF,EADvDtsC,EACuDssC,OAAQC,EAD/DvsC,EAC+DusC,YAAaC,EAD5ExsC,EAC4EwsC,gBAAiBzwF,EAD7FikD,EAC6FjkD,MAAO0wF,EADpGzsC,EACoGysC,sBAAuBC,EAD3H1sC,EAC2H0sC,kBAE1HC,EAAsBJ,EAAYpB,GAClCO,EAAW,CAAC,KAAM,MAAMhpE,SAAS3mB,GACvC,OACIlL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACT6yF,EA6EE76F,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQy0F,eAClBtoF,EAyBEqoF,EAxBA97F,EAAAhP,EAAAiP,cAAC+7F,GAAA,EAAD,CAASC,YAAY,WAAWl0F,UAAWT,EAAQ6f,QAC9Cq0E,EAAMx8F,OAAO,SAAAq7F,GAAI,OAAKA,EAAK6B,SAAQ5pG,IAAI,SAAA+nG,GAAQ,IAAA8B,EACT7iG,EAAK8gG,WAAWC,GAA3CrxB,EADoCmzB,EACpCnzB,OAAQyxB,EAD4B0B,EAC5B1B,SAAUt1E,EADkBg3E,EAClBh3E,KAC1B,OACInlB,EAAAhP,EAAAiP,cAACm8F,GAAA,EAAD,CACIxjG,IAAKyhG,EAAKt0F,MACVijE,OAAQA,EACRjtD,UAAW0+E,GAEXz6F,EAAAhP,EAAAiP,cAACo8F,GAAA,EAAD,CACI7zF,QAAS,kBAAMA,GAAWA,EAAQ6xF,EAAK9/E,IAAI,IAC3CxS,UAAWT,EAAQvB,MACnBof,KAAMA,GAELk1E,EAAKt0F,OAEV/F,EAAAhP,EAAAiP,cAACq8F,GAAA,EAAD,KACKtzB,GAAU8yB,QA/FvC97F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC+gC,GAAI,EAAG/1C,UAAW,YACzB/H,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW0zF,EAASn0F,EAAQi1F,cAAgBj1F,EAAQ8K,SACpDqB,GAAYzT,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWkyF,KAAS3yF,EAAQk1F,SAAWl1F,EAAQm1F,SACjEz8F,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,KACIv8C,EAAAhP,EAAAiP,cAACspD,GAAA,EAAD,CAAMrpD,MAAO0I,GAAOsR,MACfshF,EAAMx8F,OAAO,SAAAq7F,GAAI,OAAKA,EAAK6B,SAAQ5pG,IAAI,SAAA+nG,GAAQ,IAExCqC,EACAC,EACAjrB,EACA7qE,EALwC+1F,EACgBtjG,EAAK8gG,WAAWC,GAApErxB,EADoC4zB,EACpC5zB,OAAQyxB,EAD4BmC,EAC5BnC,SAAUE,EADkBiC,EAClBjC,WAAYC,EADMgC,EACNhC,kBAiBtC,GAZIH,GACA/oB,EAAOC,KACP+qB,EAAa18F,EAAAhP,EAAAiP,cAACyxE,EAAD,CAAMxxE,MAAO,CAAE0J,SAAU,GAAIf,MAAO9D,GAAQ2B,MAAM,KAAMrD,OAAQ,WAExEs3F,GAAc3xB,GACnB0I,EAAOV,GACP0rB,EAAa18F,EAAAhP,EAAAiP,cAACyxE,EAAD,CAAMxxE,MAAO,CAAE0J,SAAU,GAAIf,MAAO9D,GAAQiB,KAAKC,QAAS5C,OAAQ,YAG/EquE,EAAOX,GACP2rB,EAAa18F,EAAAhP,EAAAiP,cAACyxE,EAAD,CAAMxxE,MAAO,CAAE0J,SAAU,GAAIf,MAAO9D,GAAQC,KAAKU,KAAMrC,OAAQ,WAE5Eg3F,EAAKl1E,KAAM,CACX,IAAM03E,EAA8CxC,EAAKl1E,KACzDw3E,EAAW38F,EAAAhP,EAAAiP,cAAC48F,EAAD,MAMf,OAJIlC,EACA9zF,EAAU,eACL+zF,IACL/zF,EAAU,4BAEV7G,EAAAhP,EAAAiP,cAACypD,GAAA,EAAD,CACI9wD,IAAKyhG,EAAKt0F,MACV7F,MAAO8oE,EAASpgE,GAAOk0F,kBAAoBl0F,GAAOm0F,YAClDv0F,QAAS,kBAAMA,GAAWA,EAAQ6xF,EAAK9/E,MAEvCva,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIyxE,GACnB38F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO7C,OAAQs0F,EAAKt0F,OAAa/F,EAAAhP,EAAAiP,cAAA,WAC7C4G,GACG7G,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmI,oBAChB/Q,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAOkE,cACvBjG,IAGb7G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIwxE,SAO1Cd,EACG57F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKw7F,QACC1mG,EAETymG,GAAmBrB,GAAcqB,EAAgBrB,IAC9Ct6F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC2E,WAAW,SAASzM,MAAO0I,GAAO+H,aAC9C3Q,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAO85E,GAAahtE,aAClC2uF,EAAgBrB,OAMrCt6F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC+gC,GAAI,EAAG/1C,UAAWT,EAAQ01F,SACrCh9F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC+gC,GAAI,GACV+9C,EAAoB77F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,SAAIy7F,EAAJ,UAA6B3mG,EACjD4mG,YAhGAz7F,IAAMC,eAuI7BsI,GAA2C,CAC7Ck0F,kBAAmB,CACfz5F,OAAQ,GACRqK,gBAAiB3I,GAAQC,KAAKa,YAC9BukD,YAAW,aAAA/zD,OAAe0O,GAAQiB,KAAKC,SACvCuE,aAAc,GACdmD,OAAQ,UACR0B,aAAc,iCAElB4tF,YAAa,CACT7wF,QAAS,cACTO,WAAY,UAEhB4vF,cAAe,CACXzzF,SAAU,SACVhI,IAAK,GACLkI,UAAW,IAEfg0F,OAAQ,CACJpvF,SAAU,mBAEdmtF,cAAe,CACX9qF,aAAc,MACdpH,MAAO9D,GAAQC,KAAKE,MACpBkH,QAAS,OACTuC,eAAgB,SAChBhC,WAAY,SACZzB,MAAO,GACP7H,OAAQ,IAEZ43F,WAAY,CACRvtF,gBAAiB3I,GAAQiB,KAAKC,SAElCi1F,cAAe,CACXxtF,gBAAiB3I,GAAQ2B,MAAMT,SAEnCk1F,eAAgB,CACZztF,gBAAiB3I,GAAQ6B,OAAOX,SAEpCkf,KAAM,CACFvb,SAAU,IAEd4yF,SAAU,CACN1zF,SAAU,WACVoC,MAAO,MACP7H,OAAQ,MACRk3E,QAAS,GACT7sE,gBAAiB3I,GAAQC,KAAKI,MAElCW,MAAO,CACH8C,MAAO9D,GAAQiB,KAAKC,QACpBqI,WAAY,OAEhB4L,KAAM,CACF5Q,QAAS,EACTE,WAAY,SACZI,SAAU,IAEd6yF,OAAQ,CACJ3zF,SAAU,WACVoC,MAAO,OACP7H,OAAQ,OACRk3E,QAAS,GACT7sE,gBAAiB3I,GAAQC,KAAKI,MAElC22F,cAAe,CACX/yF,UAAW,IAEfme,OAAQ,CACJzZ,gBAAiB,UACjBpE,QAAS,EACT4B,MAAO,QAEX6F,mBAAoB,CAChBnH,SAAU,GACVf,MAAO9D,GAAQ6B,OAAOC,QACtBuF,QAAS,cACTO,WAAY,UAEhBquF,qBAAsB,CAClBttF,gBAAiB3I,GAAQC,KAAKS,WAElCs3F,YAAa,CACT15F,OAAQ,GACRsK,OAAQ,UACRpE,WAAY,EACZL,cAAe,EACfmG,aAAc,iCAElBvC,YAAa,CACTlD,SAAU,GACVX,YAAa,GAEjB0H,YAAa,CACT3H,UAAW,IAEfoJ,QAAS,CACLtJ,SAAU,SACVhI,IAAK,GACLkI,UAAW,KAIJie,kBAAYi2E,KAAUt0F,GAAVs0F,CAAkB/C,KC9PvCvxF,GAA2C,CAC7Cu0F,OAAQ,CACJltF,aAAc,MACd/E,MAAO,GACP7H,OAAQ,GACRs7C,WAAY,UACZ31C,UAAW,EACXoD,QAAS,OACTO,WAAY,SACZgC,eAAgB,UAEpBq6D,OAAQ,CACJrqB,WAAY55C,GAAQiB,KAAKo3F,UAE7BC,aAAc,CACVx0F,MAAO,QACPe,SAAU,KAIH0zF,GA9BK,SAACp+F,GACjB,OACIc,EAAAhP,EAAAiP,cAAA,OAAKC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOu0F,OAAd,CAAsBx+C,WAAYz/C,EAAMm7F,OAASn7F,EAAMo7F,WAAav1F,GAAQiB,KAAKC,QAAU,aACjGjG,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOy0F,cACfn+F,EAAMuI,YCYvB,ICjBY81F,GDiBNC,GAA+B7tD,GAAS,8BASxC8tD,eACF,SAAAA,EAAYv+F,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA2rG,IACtB3kG,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA4sG,GAAAp+F,KAAAvN,KAAMoN,KAOVw+F,wBAA0B,SAACj1F,GACvB,IAAMk1F,EAAkBl1F,EAAE4yC,OAAOxiD,MAC7B+kG,GAAc,EACd9kG,EAAKoG,MAAM+sE,gBAAgBjtE,OAAO,SAAArE,GAAC,OAAIA,EAAEkjG,eAAiBF,IAAiBtrG,OAAS,IACpFurG,GAAc,GAElB9kG,EAAK4G,SAAS,CAAEo+F,sBAAuBF,KAXvC9kG,EAAK+G,MAAQ,CACTi+F,uBAAuB,GAJLhlG,wEAkBtB,OACIkH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMzN,KAAM+V,QAAS1V,KAAKoN,MAAMs4C,SAAUjwC,MAAM,qBACnEvH,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUplD,KAAKoN,MAAMi4C,cACvBn3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOmuC,MAA7B,iFACkF/2C,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WACpFD,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO69F,GAAgBC,oBAC1Bh+F,EAAAhP,EAAAiP,cAAA,SAAOC,MAAO69F,GAAgBE,gBAA9B,wBACAj+F,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,sBACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,wBAGRtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KAEQz6D,KAAKoN,MAAM+sE,gBAAgBjtE,OAAO,SAAArE,GAAC,OAA2B,IAAvBA,EAAEujG,mBAA4B5rG,IAAI,SAAAqI,GAAC,OACtEqF,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAY3xD,EAAEkjG,cACd79F,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MArDvB6xC,EAqDuDxjG,EAAEyjG,aApDxEz8F,KAAKpF,MAAM4hG,GACVE,YAAYhsG,UAF3B,IAA6B8rG,OA2DDn+F,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAAA,SAAOC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO0C,UAAd,CAAyBzC,MAAO9D,GAAQC,KAAKW,QAASkE,WAAY,UAA9E,iBAAuG/X,KAAKoN,MAAMi/F,SAAS9rG,OAA3H,mBAEJ2N,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,kBACLqoC,UAAWnD,GACXntC,MAAM,oBACNrV,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACR2H,SAAUkmD,GACVnoD,SAAUvjD,KAAK4rG,0BAGnB19F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAEkM,QAASta,KAAK+N,MAAMi+F,sBAAwB,GAAK,SAA/D,6EAKJ99F,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAKoN,MAAMs4C,SAAU3uC,MAAM,WAA5C,UACA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,kBAAkBmP,KAAK,SAASjW,SAAU3hB,KAAKoN,MAAMw4C,QAAS7uC,MAAM,WAA/E,4BAnEiBxI,IAAMC,eA+E7Cy9F,GAA0D,CAC5DC,mBAAoB,CAChB9yF,MAAO,MACPnB,OAAQ,SACRT,QAAS,aACTR,SAAU,WACVE,UAAW,GACXQ,WAAY,UAEhBy0F,eAAgB,CACZr0F,SAAU,GACVG,OAAQ,SACRlB,MAAO9D,GAAQC,KAAKW,UAKbsxC,gBAAoC,CAAEF,KA3H5B,iCA2HVE,CAAyDwmD,cC5HlEzgD,GAAe,CAAEC,QAAQ,aAEnBsgD,wGA2BNe,eAEF,SAAAA,EAAYp/F,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAwsG,IACtBxlG,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAytG,GAAAj/F,KAAAvN,KAAMoN,KAYVq/F,mBAAqB,WAGjB,OADezlG,EAAKoG,MAAMs/F,aAAavyB,gBAAgBjtE,OAAQ,SAAArE,GAAC,OAA0B,IAAvBA,EAAEujG,mBAA4B7rG,OAAS,GAfpFyG,EAmB1B2lG,wBAA0B,WACtB,OAAI3lG,EAAKylG,qBACER,GAAgBW,YAGhBX,GAAgBY,qBAxBL7lG,EA4B1B8lG,qBAAuB,WACnB,OAAO9lG,EAAKoG,MAAM2/F,qBAAsBd,GAAgBY,oBAAsBZ,GAAgBW,aA3B9F5lG,EAAKgmG,0BAA4BhmG,EAAKgmG,0BAA0B3lD,KAA/BtoD,OAAAkuG,GAAA,EAAAluG,CAAAiI,IAEjCA,EAAK+G,MAAQ,CACTm/F,aAAc9/F,EAAM44C,cAAcmnD,mBAAqB1B,GAAiB2B,OALtDpmG,yFASC2P,GACvB3W,KAAK4N,SAAS,CAAEs/F,aAAcv2F,EAAE4yC,OAAOxiD,yCAuBvC,OACImH,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAM+X,GAAO4C,MAAUuyF,GAAgBoB,cAC/Cn/F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,gBACAhL,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO2D,eAAjB,0FACGza,KAAKoN,MAAMkgG,sBACVp/F,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO2D,eACbvM,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBsB,mBAA1B,qDACAr/F,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOppC,KAAK,mBAAmBioC,UAAU,qBAAqBI,UAAWL,GAAwBjwC,MAAM,IACnG/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,UACNkN,MAAM,0BACN4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACTpgE,SAAU3hB,KAAKoN,MAAM2/F,uBAEzB7+F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,MACNkN,MAAM,yBACN4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT3zE,MAAO69F,GAAgBuB,uBAKvCt/F,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO2D,eACbvM,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBsB,mBAA1B,uCACAr/F,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOppC,KAAK,oBAAoBioC,UAAU,gBAAgBI,UAAWL,GAAwBjwC,MAAM,GAC/FsvC,SAAUvjD,KAAKgtG,2BACf9+F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO0kG,GAAiBgC,SACxBx5F,MAAO/F,EAAAhP,EAAAiP,cAAA,2CAAkCD,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBv3F,KAAM5O,KAAK,4CAA4C4nG,UAAQ,GAAzF,YAAlC,KACP7pD,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,QAEX/hF,KAAKoN,MAAMugG,mBACTz/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO0kG,GAAiBmC,cACxB35F,MAAO/F,EAAAhP,EAAAiP,cAAA,sCAA6BD,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBv3F,KAAM5O,KAAK,4CAA4C4nG,UAAQ,GAAzF,YAA7B,KACP7pD,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT3zE,MAAO69F,GAAgBuB,qBAG/Bt/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO0kG,GAAiBoC,eACxB55F,MAAO/F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,+BACoBJ,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACnBvjB,MAAM,qDACN2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,cAErC0qC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACTpgE,UAAW3hB,KAAKysG,qBAChBr+F,MAAO69F,GAAgBuB,qBAE3Bt/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO0kG,GAAiBqC,UACxB75F,MAAM,8CACN4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT3zE,MAAO69F,GAAgBuB,sBAI/Bt/F,EAAAhP,EAAAiP,cAAA,WACGnO,KAAK+N,MAAMm/F,eAAiBzB,GAAiBoC,gBAC5C3/F,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,aACLqoC,UAAWnD,GACXntC,MAAM,gBACNwvC,QAAM,EACN7kD,QAAQ,WACRwtD,YAAalB,GACb3F,WAAS,GACLr3C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAEV/G,KAAKoN,MAAMs/F,aAAavyB,gBAAgBjtE,OAAQ,SAACrE,GAAD,OAA6C,IAAvBA,EAAEujG,mBAA6B5rG,IAAK,SAACutG,GAAD,OAAc7/F,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAKinG,EAAStlF,GAAI1hB,MAAOgnG,EAAStlF,IAAKslF,EAAShC,oBAO5M79F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgB+B,iBACxB9/F,EAAAhP,EAAAiP,cAACw3C,GAAD,CACQl9B,GAAG,qBACHmP,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACNwuC,WAAW,EACXn3C,MAAO69F,GAAgBgC,WACvBv3F,QAAS1W,KAAKoN,MAAMi4C,aACpBR,QAAS7kD,KAAKoN,MAAM04C,YAR5B,iBApHgBv3C,IAAMC,eAsIpCy9F,GAAuDltG,OAAA0G,EAAA,EAAA1G,CAAA,GACtD+X,GADsD,CAEzDu2F,YAAa,CACTn2F,UAAW,IAEf82F,gBAAiB,CACb3/F,UAAW,QACX6I,UAAW,IAEf+2F,WAAY,CACR70F,MAAO,KAEXo0F,mBAAoB,CAChBt2F,WAAY,IAEhBxC,KAAM,CACFqC,MAAOm3F,GAASh6F,KAAKC,QACrB4hD,eAAgB,QAEpBw3C,kBAAkB,CACd1zF,aAAc,EACdpC,WAAY,GACZV,MAAOm3F,GAASh7F,KAAKW,WAIdsxC,gBAAkD,CAAEF,KA5L1C,sBA4LVE,CAAuEqnD,ICvLhFthD,GAAe,CAAEC,QAAQ,GAmDzBgjD,GAA4BtwD,GAAS,qCAErCuwD,eACF,SAAAA,EAAYhhG,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAouG,IACtBpnG,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAqvG,GAAA7gG,KAAAvN,KAAMoN,KAQVihG,cAAgB,kBAAMrnG,EAAK4G,SAAS,CAAEi3C,SAAS,KATrB79C,EAU1BsnG,aAAe,kBAAMtnG,EAAK4G,SAAS,CAAEi3C,SAAS,KAVpB79C,EAiC1BunG,gBAAkB,WACdvnG,EAAKoG,MAAMohG,kBAAkBjC,YAAYvjF,QAAQ,SAACxoB,GAC9CwG,EAAKoG,MAAM4gD,OAAOxtD,EAAIiuG,eAAuBjuG,EAAIkuG,eAErD1nG,EAAKoG,MAAMohG,kBAAkBG,eAAe3lF,QAAQ,SAACqT,GACjDr1B,EAAKoG,MAAM4gD,OAAO3xB,EAAOoyE,eAAiB,cAAsBpyE,EAAOuyE,kBAE3E5nG,EAAKqnG,iBAxCiBrnG,EAmD1B6nG,oBAAsB,WAClB,IAAIC,EAA8C,GAIlD,OAHI9nG,EAAKoG,MAAMs/F,aAAalyB,oBAAoBC,gBAC5Cq0B,EAAiB9nG,EAAKoG,MAAMs/F,aAAalyB,oBAAoBC,eAE1Dq0B,GAxDe9nG,EA2D1B+nG,qBAAuB,WACnB/nG,EAAK4G,SAAS,CAAEohG,oBAAoB,KA5DdhoG,EA8D1BioG,uBAAyB,WACrBjoG,EAAK4G,SAAS,CAAEohG,oBAAoB,KA/DdhoG,EAiE1BkoG,sBAAwB,WACpBloG,EAAK4G,SAAS,CAAEohG,oBAAoB,KAlEdhoG,EAqE1BmoG,qBAAuB,SAAC9wD,GACpB,IAAI+wD,EAA+BrwG,OAAA0G,EAAA,EAAA1G,CAAA,GAAQiI,EAAKoG,MAAMohG,mBACtDY,EAAYC,UAAYroG,EAAKoG,MAAMkiG,eAAeD,UAClDD,EAAYG,eAAiBvoG,EAAKoG,MAAMkiG,eAAeE,UACvD,IAAIC,EAA0B,CAC1BhnF,GAAI,GACJitD,SAAU,GACVq2B,aAAc1tD,EAASwtD,gBACvB6D,YAAY,EACZtD,kBAAkB,EAClBE,aAAcz8F,KAAKjD,UAAUwiG,IAE3BO,EAAY3oG,EAAKoG,MAAMs/F,aAAavyB,gBAAgBjtE,OAAO,SAAArE,GAAC,OAAIA,EAAEkjG,eAAiB1tD,EAASwtD,kBAC9F8D,EAAUpvG,OAAS,GACnBkvG,EAAQhnF,GAAKknF,EAAU,GAAGlnF,GAC1BzhB,EAAKoG,MAAMwiG,2BAA2BH,GACjCvoG,KAAK,WACFF,EAAKkoG,2BAIbloG,EAAKoG,MAAMyiG,wBAAwBJ,GAC9BvoG,KAAK,WACFF,EAAKkoG,2BA5FKloG,EAiG1B8oG,kBAAoB,WAEhB,MADmC,IAlGb9oG,EAsG1B+oG,8BAAgC,SAACp5F,GAC7B,IAAMib,EAASjb,EAAE4yC,OAAOr/C,QAAQyM,EAAE4yC,OAAOymD,eACnCzhF,EAAK5X,EAAE4yC,OACTuX,GAAsB,EACpBmvC,EAAcjpG,EAAKoG,MAAMs/F,aAAatyB,aAAaltE,OAAO,SAAAgjG,GAAC,OAAIA,EAAEzB,iBAAmBlgF,EAAGrS,OACzF+zF,EAAY1vG,OAAS,IACrBugE,EAAamvC,EAAY,GAAGpyD,UAGhC,IAAM4wD,EAAiBlgF,EAAGrS,KACpBi0F,EAAev+E,EAAOhe,KAAK3I,MAAM,KAAK,GAAGK,OACzCojG,EAAcngF,EAAGxnB,MAEjBqpG,EAAa5jG,QAAQkiG,GAAe,CACtCyB,aAAcA,EACdzB,YAAaA,EACbD,eAAgBA,EAChB5wD,SAAUijB,QACX19D,EACEgtG,GACDppG,EAAKoG,MAAMijG,0BAAXtxG,OAAA0G,EAAA,EAAA1G,CAAA,GACOiI,EAAKoG,MAAMohG,kBADlB,CAEIjC,YAAW,GAAAhoG,OAAAxF,OAAAgO,EAAA,EAAAhO,CACJiI,EAAKoG,MAAMohG,kBAAkBjC,aADzB,CAEP6D,QA9HUppG,EAoI1BspG,+BAAiC,SAAC35F,GAC9B,IAAM4X,EAAK5X,EAAE4yC,OACPklD,EAAiBlgF,EAAGrS,KAAKjR,MAAM,KAAK,GACtCslG,EAAqC,CACrC9B,eAAgBA,EAChBG,eAAgBrgF,EAAGxnB,OAEnBypG,EAAWzxG,OAAA0G,EAAA,EAAA1G,CAAA,GAAQiI,EAAKoG,MAAMohG,mBAC9BnyE,EAASm0E,EAAY7B,eAAexlF,KAAK,SAAA+mF,GAAC,OAAIA,EAAEzB,iBAAmBA,IACnEpyE,GACAA,EAAOoyE,eAAiB8B,EAAU9B,eAClCpyE,EAAOuyE,eAAiB2B,EAAU3B,gBAGlC4B,EAAY7B,eAAe9gF,KAAK0iF,GAEpCvpG,EAAKoG,MAAMijG,0BAA0BG,IApJfxpG,EAuJ1BolG,iBAAmB,WACf,OAASplG,EAAKoG,MAAMqjG,UAAUtD,oBAAsB1B,GAAiBgC,UAC9DzmG,EAAKoG,MAAMqjG,UAAUtD,oBAAsB1B,GAAiBmC,eAzJ7C5mG,EA4J1B0pG,aAAe,SAACjC,GACZ,IAAIkC,EAAUziG,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgB7B,SAgB1C,MAfqC,QAAjCqE,EAAen8E,eAAkE,aAAvCm8E,EAAe5nD,qBACf,iBAAvC4nD,EAAe5nD,qBAAiF,mBAAvC4nD,EAAe5nD,qBACjC,mBAAvC4nD,EAAe5nD,qBAAmF,iBAAvC4nD,EAAe5nD,qBACnC,4BAAvC4nD,EAAe5nD,sBAClB8pD,EAAUziG,EAAAhP,EAAAiP,cAAA,WACND,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOppC,KAAMuyF,EAAiB,cAAetqD,UAAWsqD,EAAiB,cACrElqD,UAAWL,GAAwBjwC,MAAM,GAAGowC,KAAG,EAACd,SAAUv8C,EAAKspG,gCAC/DpiG,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkBx1C,MAAO69F,GAAgB2E,WAAY7pG,MAAO,IAAKkN,MAAM,aAAa4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,QAC7F7zE,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkBx1C,MAAO69F,GAAgB2E,WAAY7pG,MAAO,IAAKkN,MAAM,cAAc4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,QAC9F7zE,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkBx1C,MAAO69F,GAAgB2E,WAAY7pG,MAAO,IAAKkN,MAAM,aAAa4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,QAC7F7zE,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkBx1C,MAAO69F,GAAgB2E,WAAY7pG,MAAO,IAAKkN,MAAM,aAAa4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,QAC7F7zE,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkBx1C,MAAO69F,GAAgB2E,WAAY7pG,MAAO,IAAKkN,MAAM,QAAQ4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,WAI7F4uB,GA7Ke3pG,EAgL1B6pG,gBAAkB,WACd,IAAI9E,EAAe,GACnB,GAAI/kG,EAAKoG,MAAMqjG,UAAUtD,oBAAsB1B,GAAiBoC,eAAgB,CAC5E,IAAME,EAAW/mG,EAAKoG,MAAMs/F,aAAavyB,gBAAgBhxD,KAAK,SAAAtgB,GAAC,OAAIA,EAAE4f,KAAOzhB,EAAKoG,MAAMqjG,UAAUK,aAC7F/C,IACAhC,EAAegC,EAAShC,cAGhC,OAAOA,GArLP/kG,EAAK+G,MAAQ,CACT82C,SAAS,EACTmqD,oBAAoB,GALFhoG,mFActB,GADAhH,KAAKsuG,eAEDtuG,KAAKoN,MAAMqjG,UAAUtD,oBAAsB1B,GAAiBqC,WAC5D9tG,KAAKoN,MAAMqjG,UAAUtD,oBAAsB1B,GAAiBoC,eAC9D,CACE,IAAMkD,EAAgC,CAClC50D,UAAWn8C,KAAKoN,MAAM+uC,UACtBj5C,aAAclD,KAAKoN,MAAMlK,aACzB6oB,OAAQ/rB,KAAKoN,MAAMs/F,aAAaryB,qBAAqBC,mBAAmB7xD,GACxE4mF,UAAWrvG,KAAKoN,MAAMkiG,eAAeD,UACrCG,UAAWxvG,KAAKoN,MAAMkiG,eAAeE,WAEzCxvG,KAAKoN,MAAM4jG,0BAA0BD,GAChC7pG,KAAKlH,KAAKuuG,gBAAiBvuG,KAAKquG,oBAGrCruG,KAAKuuG,sDAcD0C,GACR,OAAOjxG,KAAKoN,MAAMqjG,UAAUtD,oBAAsB8D,gDAGhCnwC,GAClB,OAAOA,EAAa5yD,EAAAhP,EAAAiP,cAAA,iBAAiBD,EAAAhP,EAAAiP,cAAA,8CA2IhC,IAAA3G,EAAAxH,KACL,OACIkO,EAAAhP,EAAAiP,cAAA,YACKnO,KAAK+N,MAAM82C,QACR32C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGJl0C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO6C,mBACjBzL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,cACAhL,EAAAhP,EAAAiP,cAAA,2FAEFnO,KAAKkxG,YAAYzF,GAAiBgC,WAAaztG,KAAKkxG,YAAYzF,GAAiBmC,iBAC/E1/F,EAAAhP,EAAAiP,cAAA,OAAKsa,GAAG,oBACJva,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBkF,kBAA1B,wCACyCjjG,EAAAhP,EAAAiP,cAAA,WADzC,yBAMNnO,KAAKkxG,YAAYzF,GAAiBqC,YAAc9tG,KAAKkxG,YAAYzF,GAAiBoC,kBAChF3/F,EAAAhP,EAAAiP,cAAA,OAAKsa,GAAG,eACJva,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBmF,kBAAlC,sBACAljG,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBoF,mBAAlC,qBAGRnjG,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKz6D,KAAKoN,MAAMs/F,aAAatyB,aAAa55E,IAAI,SAAA8wG,GAAG,OACzCpjG,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBh4F,OAAQq9F,EAAIC,UAAW/pG,EAAKgqG,sBAAsBF,EAAIzzD,WACxF3vC,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBplB,UAC9B34E,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIx+C,IAAKwqG,EAAIC,UACTr1F,KAAMo1F,EAAI7C,eACVlqD,UAAWnD,GACXntC,MAAM,gBACNwvC,QAAM,EACN7kD,QAAQ,WACRwtD,YAAalB,GACb3F,WAAS,EACT1H,SAAUyzD,EAAIzzD,SACd2H,SAAU8rD,EAAIzzD,WAAar2C,EAAK4kG,mBAAqB+B,QAA4B/qG,EACjFmgD,SAAU/7C,EAAKuoG,+BAEf7hG,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAEVS,EAAKqnG,sBAAsBruG,IAAI,SAAA0iF,GAAG,OAC9Bh1E,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAKo8E,EAAIuuB,SAAU1qG,MAAOm8E,EAAIuuB,UAAWvuB,EAAIwuB,cAAgB,KAAOxuB,EAAIyuB,eAGpFzjG,EAAAhP,EAAAiP,cAAA,WACP3G,EAAKkpG,aAAaY,EAAI7C,sBAKnCvgG,EAAAhP,EAAAiP,cAAA,WACRD,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBvxF,YAA1B,gDACAxM,EAAAhP,EAAAiP,cAAA,kHACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACI/9C,QAAS,WACT8X,QAAS1W,KAAK+uG,qBACdptF,SAAU3hB,KAAKoN,MAAMw4C,SACrB13C,EAAAhP,EAAAiP,cAAA,gDAOvBnO,KAAK+N,MAAMihG,oBACR9gG,EAAAhP,EAAAiP,cAACyjG,GAAD,CACIjyG,KAAMK,KAAK+N,MAAMihG,mBACjBtpD,SAAU1lD,KAAKivG,uBACf7pD,SAAUplD,KAAKmvG,qBACf9C,SAAUrsG,KAAKoN,MAAMohG,kBAAkBjC,YACvCvmD,cAAe,CAAE6lD,gBAAiB7rG,KAAK6wG,mBACvC12B,gBAAiBn6E,KAAKoN,MAAMs/F,aAAavyB,kBAKjDjsE,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgB+B,iBACxB9/F,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,qBACHmP,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACNwuC,WAAW,EACXn3C,MAAO69F,GAAgBgC,WACvBv3F,QAAS1W,KAAKoN,MAAMi4C,aACpBR,QAAS7kD,KAAKoN,MAAM04C,WACpBnkC,SAAU3hB,KAAKoN,MAAMw4C,SATzB,kBAvRmBr3C,IAAMC,eA2S/Cy9F,GAAuDltG,OAAA0G,EAAA,EAAA1G,CAAA,GACtD+X,GADsD,CAEzD+vE,SAAU,CACNnzE,OAAQ,QAEZO,MAAO,CACHqG,QAAS,OACTxC,SAAU,GACVf,MAAO9D,GAAQC,KAAKW,QACpB0J,aAAc,OACd9F,WAAY,GACZL,cAAe,IAEnBsD,WAAY,CACR5C,SAAU,GACVC,WAAY,IACZhB,MAAO9D,GAAQC,KAAKW,SAExBs9F,iBAAkB,CACdr5F,SAAU,GACVC,WAAY,IACZhB,MAAO9D,GAAQC,KAAKW,QACpBxF,UAAW,UAEfwjG,mBAAoB,CAChB96F,MAAO,sBACP46E,UAAW,OACX/1E,gBAAiB,uBAErBoyF,gBAAiB,CACb3/F,UAAW,QACX6I,UAAW,IAEf46F,WAAY,CACR/6F,MAAO9D,GAAQiB,KAAK,MAExB+5F,WAAY,CACR70F,MAAO,KAEXg4F,iBAAkB,CACd19F,OAAQ,OACRoE,SAAU,GACVf,MAAO9D,GAAQC,KAAKW,QACpBuF,MAAO,OAEXi4F,kBAAmB,CACf39F,OAAQ,OACRoE,SAAU,GACVf,MAAO9D,GAAQC,KAAKW,QACpBuF,MAAO,OAEXw3F,WAAY,CACRx3F,MAAO,OAEXgxF,OAAQ,CACJ9vF,QAAS,UAoBjB,IAAMy3F,GAA0Bj1D,YAhBhC,SAAyB/uC,GACrB,MAAO,CACH2+F,aAAc3+F,EAAM2+F,eAK5B,SAA4BrtG,GACxB,MAAO,CACH2xG,0BAA2B,SAACD,GAAD,OAAmC1xG,ECxS/D,SAAmC0xG,GACtC,sBAAAiB,EAAAjzG,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA8yG,EAAO5yG,GAAP,IAAA6yG,EAAA,OAAAjzG,EAAAC,EAAAI,KAAA,SAAA6yG,GAAA,cAAAA,EAAA3yG,KAAA2yG,EAAA1yG,MAAA,cAAA0yG,EAAA3yG,KAAA,EAAA2yG,EAAA1yG,KAAA,EAE0CypC,GAAK,oCAAqC,CAC/EC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUmkG,KAJ1B,OAEOmB,EAFPC,EAAAzqD,KAMCroD,EAAS+yG,GAA6BF,IANvCC,EAAA1yG,KAAA,sBAAA0yG,EAAA3yG,KAAA,EAAA2yG,EAAAxqD,GAAAwqD,EAAA,SASC9yG,EAAS0B,EAAyBoxG,EAAAxqD,GAAK,qCATxCwqD,EAAAxqD,GAAA,yBAAAwqD,EAAAtyG,SAAAoyG,EAAA,iBAAP,gBAAAn+C,GAAA,OAAAk+C,EAAAjyG,MAAAC,KAAAC,YAAA,GDuS2E+wG,CAA0BD,KACjGlB,wBAAyB,SAACkB,GAAD,OAAyB1xG,GC/ZlB0uG,ED+ZmDgD,EC9ZvF,eAAA7vG,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,IAAAyxG,EAAA,OAAA7xG,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA7B,KAAA,EAAA6B,EAAA5B,KAAA,EAE0BypC,GAAK,2BAA4B,CACtDC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUmhG,KAJ1B,OAEO+C,EAFPzvG,EAAAqmD,KAMCqmD,EAAStlF,GAAKqoF,EACdzxG,EAASgzG,GAAuBtE,IAChC1uG,EAASX,EAAgB,qCAAsC,YARhE2C,EAAA5B,KAAA,sBAAA4B,EAAA7B,KAAA,EAAA6B,EAAAsmD,GAAAtmD,EAAA,SAWChC,EAAS0B,EAAyBM,EAAAsmD,GAAK,uCAXxCtmD,EAAAsmD,GAAA,yBAAAtmD,EAAAxB,SAAAsB,EAAA,iBAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,KADG,IAAiC8tG,GDgahC6B,2BAA4B,SAACmB,GAAD,OAAyB1xG,GC3YlB0uG,ED2YsDgD,EC1Y7F,eAAArvG,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwC,EAAOtC,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cAAAmC,EAAApC,KAAA,EAAAoC,EAAAnC,KAAA,EAEOypC,GAAK,8BAA+B,CACtCC,OAAQ,MACRC,KAAMv5B,KAAKjD,UAAUmhG,KAJ1B,OAMC1uG,EAASizG,GAA0BvE,IACnC1uG,EAASX,EAAgB,8BAA+B,YAPzDkD,EAAAnC,KAAA,sBAAAmC,EAAApC,KAAA,EAAAoC,EAAA+lD,GAAA/lD,EAAA,SAUCvC,EAAS0B,EAAyBa,EAAA+lD,GAAK,0BAVxC/lD,EAAA+lD,GAAA,yBAAA/lD,EAAA/B,SAAA8B,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAA3B,MAAAC,KAAAC,YAAA,KADG,IAAoC8tG,GD4YnCwE,qBAAsB,kBAAMlzG,EAASkzG,SAIbz1D,CAA6CsxD,IAE9DjpD,gBAAoD,CAAEF,KA5a5C,oBA4aVE,CAAyE4sD,IE5YlFS,eACF,SAAAA,EAAYplG,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAwyG,IACtBxrG,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAyzG,GAAAjlG,KAAAvN,KAAMoN,KAWVqlG,uBAAyB,SAACnhD,GACtB,IAAIohD,EAAmB,GACnB5B,EAAqB9pG,EAAKoG,MAAMqjG,UAAUK,WAC1C9pG,EAAKoG,MAAMqjG,UAAUtD,oBAAsB1B,GAAiBqC,WACzD9mG,EAAKoG,MAAMqjG,UAAUtD,oBAAsB1B,GAAiBoC,iBAC/D6E,EAAW7iG,KAAKjD,UAAU5F,EAAKoG,MAAMgiG,aACrC0B,EAAa,IAEjB,IAAMC,EAA4B,CAC9B50D,UAAWn1C,EAAKoG,MAAM+uC,UACtBj5C,aAAc8D,EAAKoG,MAAMlK,aACzB4tG,WAAYA,EACZxE,aAAcoG,EACd3mF,OAAQ/kB,EAAKoG,MAAMs/F,aAAaryB,qBAAqBC,mBAAmB7xD,GACxE4mF,UAAWroG,EAAKoG,MAAMkiG,eAAeD,UACrCG,UAAWxoG,EAAKoG,MAAMkiG,eAAeE,UACrCmD,iBAAkB3rG,EAAKoG,MAAMkiG,eAAeqD,iBAC5CC,cAAe5rG,EAAKoG,MAAMqjG,UAAUoC,kBAExC7rG,EAAK4G,SAAS,CAAEklG,UAAU,IAC1B9rG,EAAKoG,MAAM2lG,iBAAiBhC,GACvB7pG,KAAK,WACFF,EAAK4G,SAAS,CACVolG,eAAe,EACfC,eAAe,EACfH,UAAU,KAGd,WAAQ9rG,EAAK4G,SAAS,CAAEklG,UAAU,OAxCpB9rG,EA4C1BksG,eAAiB,WACb,OAA+E,IAAvElsG,EAAKoG,MAAMs/F,aAAahyB,uBAAuBC,aAAap6E,QACW,IAAxEyG,EAAKoG,MAAMs/F,aAAahyB,uBAAuB1T,cAAczmE,QA9C9CyG,EAkD1BmsG,cAAgB,WACZ,OACInsG,EAAKoG,MAAMs/F,aAAahyB,uBAAuBC,aAAap6E,OAAS,GAClEyG,EAAKoG,MAAMs/F,aAAahyB,uBAAuB1T,cAAczmE,OAAS,GAlD7EyG,EAAK+G,MAAQ,CACTilG,eAAe,EACfC,eAAe,EACfG,cAAc,EACdN,UAAU,GAPQ9rG,wEA0DtB,IAAM2zE,EAAe36E,KAAKoN,MAAMs/F,aAAahyB,uBAAuBC,aAC9D3T,EAAgBhnE,KAAKoN,MAAMs/F,aAAahyB,uBAAuB1T,cACrE,OACI94D,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUplD,KAAKoN,MAAMi4C,aAAarlD,KAAKyyG,uBAAuBprD,KAAKrnD,QACrEkO,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO6C,mBACjBzL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,qBACAhL,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBoH,YAA1B,qDAEHrzG,KAAK+N,MAAMilG,eAAkBhzG,KAAKoN,MAAMs/F,aAAaryB,qBAAqBC,mBAAmBzF,SAASt0E,OAAS,GAC5G2N,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,OAAKsa,GAAG,YAAYra,MAAO69F,GAAgBqH,iBACvCplG,EAAAhP,EAAAiP,cAAA,kBAAUnO,KAAKoN,MAAMs/F,aAAaryB,qBAAqBC,mBAAmBzF,UAC1E3mE,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,qBACHmP,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACNwuC,WAAW,EACXn3C,MAAO69F,GAAgBvnD,WACvBG,QAAS7kD,KAAK+N,MAAM+kG,UAPxB,wBAeR9yG,KAAK+N,MAAMklG,eACX/kG,EAAAhP,EAAAiP,cAAA,WACKnO,KAAKmzG,iBACFjlG,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,gCACNqkD,SAAS,qGACTpM,UAAW,EACXqL,aAAczB,GAAiB4B,QAElCl5D,KAAKoN,MAAMmmG,mBAAqBrlG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAC7BJ,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,4BACPqkD,SAAS,oHACTpM,UAAW,EACXqL,aAAc,EACdF,YAAY,KAGpB3qD,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBvxF,YAA7B,iBAA6DxM,EAAAhP,EAAAiP,cAAA,WAC7DD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBrrF,WAAa+5D,EAAap6E,OAASymE,EAAczmE,OAA9E,kBAGHo6E,EAAap6E,OAAS,GACnB2N,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBx4F,aAAlC,OACAvF,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBx4F,aAAlC,cACAvF,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBx4F,aAAlC,kBAGRvF,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKkgB,EAAan6E,IAAI,SAAA4E,GAAK,OACnB8I,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBrrF,WAAYxb,EAAMouG,eACpDtlG,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBrrF,WAAYxb,EAAMquG,WACpDvlG,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBrrF,WAAYxb,EAAM+qG,mBAMvEnpC,EAAczmE,OAAS,GACpB2N,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBx4F,aAAlC,WAGRvF,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKuM,EAAcxmE,IAAI,SAAA4E,GAAK,OACpB8I,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO69F,GAAgBrrF,WAAYxb,UAW1EpF,KAAKkzG,kBACLhlG,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgBhD,eACxB/6F,EAAAhP,EAAAiP,cAACulG,GAAAx0G,EAAD,CAAWkP,MAAO69F,GAAgB54E,QAChCnlB,EAAAhP,EAAAiP,cAAA,WACND,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgB0H,aAA7B,0CA/JAplG,IAAMC,eA2KxCy9F,GAAuDltG,OAAA0G,EAAA,EAAA1G,CAAA,GACtD+X,GADsD,CAEzDu8F,WAAY,CACRv7F,SAAU,IAEd4C,WAAY,CACR5C,SAAU,GACVf,MAAOm3F,GAASh7F,KAAKW,SAEzB6wC,WAAY,CACRxtC,UAAW,GACXkC,MAAO,KAEXk6F,gBAAiB,CACbjlG,UAAW,SACXyJ,SAAU,GACVf,MAAOm3F,GAASh7F,KAAKW,SAEzB+M,UAAW,CACP9I,SAAU,GACVf,MAAOm3F,GAASh7F,KAAKW,SAEzBJ,YAAa,CACTqE,SAAU,GACVf,MAAOm3F,GAASh7F,KAAKO,aAEzBw1F,cAAe,CACX9qF,aAAc,MACdvC,gBAAiBsyF,GAASt5F,MAAMT,QAChC4C,MAAO,UACP8F,eAAgB,SAChBhC,WAAY,SACZzB,MAAO,GACP7H,OAAQ,GACR+I,QAAS,cACTrC,OAAQ,UAEZob,KAAM,CACFvb,SAAU,IAEd67F,YAAa,CACT77F,SAAU,GACVf,MAAOm3F,GAASh7F,KAAKW,WAmB7B,IAAM+/F,GAAyB92D,YAf/B,SAAyB/uC,GAErB,MAAO,CACHwlG,kBAFsB9gF,GAAyB1kB,GAAO,GAGtD2+F,aAAc3+F,EAAM2+F,aACpBx9E,WAAYnhB,EAAMmhB,aAI1B,SAA4B7vB,GACxB,MAAO,CACH0zG,iBAAkB,SAAChC,GAAD,OAA+B1xG,EDxGlD,SAA0B0xG,GAC7B,sBAAAp9C,EAAA50D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAy0D,EAAOv0D,GAAP,IAAAq7E,EAAA,OAAAz7E,EAAAC,EAAAI,KAAA,SAAAu0D,GAAA,cAAAA,EAAAr0D,KAAAq0D,EAAAp0D,MAAA,cAAAo0D,EAAAr0D,KAAA,EAAAq0D,EAAAp0D,KAAA,EAGsCypC,GAAK,gCAAiC,CACvEC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUmkG,KAL1B,UAGOr2B,EAHP7mB,EAAAnM,KAOCroD,EAASw0G,GAAsBn5B,MAC3BA,EAAuBC,aAAap6E,OAAS,GAAKm6E,EAAuB1T,cAAczmE,OAAS,GARrG,CAAAszD,EAAAp0D,KAAA,QASCJ,EAAS0B,EAA0B25E,EAAwB,kCAT5D7mB,EAAAp0D,KAAA,uBAWKJ,EAASX,EAAgB,kBAAmB,YAXjDm1D,EAAAp0D,KAAA,GAYWJ,EAASgvD,GAAe0iD,EAAI50D,UAAW40D,EAAI7tG,eAZtD,QA0BC7D,EAASy0G,GAXT,CACIx5B,mBAAoB,CAChB1iD,KAAK,SACLnP,GAAI,GACJ+C,OAAQ,EACRK,WAAY,GACZgpD,SAAU,GACVqC,QAAQ,GAEZqD,WAAY,MAxBjB1mB,EAAAp0D,KAAA,uBAAAo0D,EAAAr0D,KAAA,GAAAq0D,EAAAlM,GAAAkM,EAAA,SA6BCx0D,EAAS0B,EAAyB8yD,EAAAlM,GAAK,qCA7BxCkM,EAAAlM,GAAA,yBAAAkM,EAAAh0D,SAAA+zD,EAAA,kBAAP,gBAAAnE,GAAA,OAAAkE,EAAA5zD,MAAAC,KAAAC,YAAA,GCuG8D8yG,CAAiBhC,OAIpDj0D,CAA6C01D,IAE7DrtD,gBAAmD,CAAEF,KAzQ3C,uBAyQVE,CAAwEyuD,IClQjFG,eACF,SAAAA,EAAY3mG,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA+zG,IACtB/sG,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAg1G,GAAAxmG,KAAAvN,KAAMoN,KA2CVulF,kBAAoB,SAAC/9D,GACjB5tB,EAAK4G,SAAS,CAAE6H,MAAOmf,EAAM20B,OAAOxiD,SA7CdC,EAgD1BgtG,wBAA0B,SAACp/E,GACvB5tB,EAAK4G,SAAS,CAAEke,YAAa8I,EAAM20B,OAAOxiD,SAjDpBC,EAoD1BitG,qCAAuC,SAACr/E,GACpC5tB,EAAK4G,SAAS,SAAAmpD,GACV,MAAO,CACHm9C,0BAA2Bn9C,EAAUm9C,6BAvDvBltG,EA4D1BmtG,iBAAmB,WACf,QAAUntG,EAAKoG,MAAMgnG,kCAAoCptG,EAAKoG,MAAMgnG,iCAAmC,GAC3FptG,EAAKoG,MAAMkxC,kBA9DDt3C,EAiE1B4rF,WAAa,WACT5rF,EAAKoG,MAAMylF,OAAO7rF,EAAK+G,MAAM0H,MAAOzO,EAAK+G,MAAM+d,YAAa9kB,EAAK+G,MAAMmmG,0BACvEltG,EAAK8rF,gBAnEiB9rF,EAsE1B8rF,aAAe,WACX9rF,EAAK4G,SAAS,CACV6H,WAAOrS,EACP0oB,iBAAa1oB,IAEjB4D,EAAKoG,MAAMs4C,YA3EW1+C,EA8E1B+rF,YAAc,SAACC,GACI,UAAXA,EAAGlsF,KAAoBE,EAAK2a,UAC5B3a,EAAK4rF,cA7ET5rF,EAAK+G,MAAQ,CACT0H,MAASrI,EAAMinG,eAAmBjnG,EAAMinG,cAAc5+F,MAAQrI,EAAMinG,cAAc5+F,MAAQzO,EAAKoG,MAAMynE,SACrG/oD,YAAa1e,EAAMinG,cAAgBjnG,EAAMinG,cAAcvoF,iBAAc1oB,EACrE8wG,2BAA0B9mG,EAAMinG,eAAgBjnG,EAAMinG,cAAcH,0BANlDltG,kFAkCP8vD,GACXA,EAAUu9C,gBAAkBr0G,KAAKoN,MAAMinG,eACvCr0G,KAAK4N,SAAS,CACV6H,MAAOzV,KAAKoN,MAAMinG,eAAmBr0G,KAAKoN,MAAMinG,cAAc5+F,MAAQzV,KAAKoN,MAAMinG,cAAc5+F,MAAQzV,KAAKoN,MAAMynE,SAClH/oD,YAAa9rB,KAAKoN,MAAMinG,cAAgBr0G,KAAKoN,MAAMinG,cAAcvoF,iBAAc1oB,EAC/E8wG,2BAA0Bl0G,KAAKoN,MAAMinG,eAAgBr0G,KAAKoN,MAAMinG,cAAcH,4DA6CtF,OACIhmG,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMzN,KAAM+V,QAAS1V,KAAK8yF,aAAcr9E,MAAM,iBACjEvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,YAAau1C,WAAYjzF,KAAK+yF,aACvD7kF,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOo8E,UAAWohB,cAAY,GAArE,2DAGCt0G,KAAKoN,MAAMynE,UACR3mE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOo8E,UAAWohB,cAAY,GAArE,kBACoBt0G,KAAKoN,MAAMynE,UAGnC3mE,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIhtC,MAAM,wBACNsxC,WAAS,EACTx+C,MAAO/G,KAAK+N,MAAM0H,OAAS,GAC3B8tC,SAAUvjD,KAAK2yF,kBACf16E,OAAO,SACPrZ,QAAQ,WACRwG,MAAOpF,KAAKu0G,2BACZp0D,WAAYngD,KAAKu0G,2BAA6B,0BAAuBnxG,IAEzE8K,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIhtC,MAAM,uBACNsxC,WAAS,EACTx+C,MAAO/G,KAAK+N,MAAM+d,aAAe,GACjCy3B,SAAUvjD,KAAKg0G,wBACf/7F,OAAO,SACPrZ,QAAQ,WACRwG,MAAOpF,KAAKw0G,kCACZr0D,WAAYngD,KAAKw0G,kCAAoC,0BAAuBpxG,IAEhF8K,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAAS/jD,KAAK+N,MAAMmmG,yBACpB3wD,SAAUvjD,KAAKi0G,qCACfl9F,MAAM,YACN4K,SAAW3hB,KAAKm0G,qBAGxBlgG,MACI/F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO4xE,aAApB,qDAEIx6E,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAM,yKACN2f,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,kBAOhDjL,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAK8yF,aAAc/7E,MAAM,WAA1C,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,oBACH/R,QAAS1W,KAAK4yF,WACdjxE,SAAU3hB,KAAK2hB,SACf5K,MAAM,WAJV,2CAnIZ,OACI/W,KAAKoN,MAAMinG,eACRr0G,KAAK+N,MAAM0H,QAAUzV,KAAKoN,MAAMinG,cAAc5+F,QAC7CzV,KAAK+N,MAAM+d,cAAgB9rB,KAAKoN,MAAMinG,cAAcvoF,aAC5B,KAArB9rB,KAAK+N,MAAM0H,OACXzV,KAAKu0G,4BACLv0G,KAAKw0G,oCACTx0G,KAAK+N,MAAMmmG,2BAA6Bl0G,KAAKoN,MAAMinG,cAAcH,4EAKxE,QACMl0G,KAAK+N,MAAM0H,OAAUzV,KAAK+N,MAAM0H,MAAMlV,OAAS,8DAKrD,QACMP,KAAK+N,MAAM+d,aAAgB9rB,KAAK+N,MAAM+d,YAAYvrB,OAAS,WA/BpCgO,IAAMC,eA6J9BsI,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GACpDmpF,GADoD,CAEvDjvE,OAAQ,CACJnB,SAAU,IAEdo7E,UAAW,CACPn8E,MAAO9D,GAAQC,KAAKU,MAExB80E,YAAa,CACTpuE,QAAS,OACTO,WAAY,SACZ9D,MAAO9D,GAAQC,KAAKU,QAIbmgG,MCnLAU,GAhBU,SAACrnG,GACtB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAAY7nB,EACTc,EAAAhP,EAAAiP,cAAA,QACI8d,EAAE,gxBAEN/d,EAAAhP,EAAAiP,cAAA,QACI8d,EAAE,0NAEN/d,EAAAhP,EAAAiP,cAAA,QACI8d,EAAE,4tBCyELnV,GAAiD,CAC1Dy2C,YAAa,CACTv2C,SAAU,WACVhI,IAAK,GACLiI,MAAO,EACP2E,gBAAiB,SAErByD,OAAQ,CACJ9N,OAAQ,GACR6H,MAAO,GACPpC,SAAU,YAEdg7E,WAAY,CACRh7E,SAAU,YAEd+F,KAAM,CACF40E,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKI,KAC1B4D,UAAW,GACX3F,OAAQ,IAEZ6jB,QAAS,CACLle,UAAW,GACXmC,WAAY,GACZQ,cAAe,GACf1C,YAAa,GACbH,SAAU,YAEd++D,YAAa,CACT/+D,SAAU,WACVoB,KAAM,EACNpJ,IAAK,GACL8I,SAAU,GACVf,MAAO9D,GAAQC,KAAKS,WAExBmY,YAAa,CACT9U,SAAU,WACVhI,IAAK,GACL8I,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBuH,UAAW,UAEfu5F,QAAS,CACL39F,MAAO9D,GAAQiB,KAAKC,QACpBsH,cAAe,QAEnBk5F,SAAU,CACN59F,MAAO9D,GAAQiB,KAAKC,QACpB2D,SAAU,GACVd,SAAU,YAEdiC,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,QAEhB6oF,cAAe,CACX5pF,SAAU,WACV+1C,OAAQ,GACR30C,KAAM,GACN0D,SAAU,MACVgrE,WAAY,WAIL8tB,GAlIU,SAACxnG,GACtB,IAAMo7E,EAAUp7E,EAAMynG,UAAY,sBAAwB,qBACpDC,EAAY1nG,EAAMynG,YAAcznG,EAAM0D,SAAS+jE,SAAW,8BAA9C,GAAAtwE,OAAiF6I,EAAM0D,SAAS+jE,SAAhG,iBACZkB,EAAcnnD,IAAOuN,IAAI/uB,EAAM0D,SAASilE,aAAa35C,QAAQC,OAAO,YACpE04E,EAAcxmG,IAAM2xD,QAAQ,kBAAAnhE,OAAA0G,EAAA,EAAA1G,CAAA,GAAY+X,GAAOmC,OAAW7L,EAAM2nG,cAAgB,CAAC3nG,EAAM2nG,cAC7F,OACI7mG,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,MAChB7O,EAAAhP,EAAAiP,cAAC+jF,GAAAhzF,EAAD,CAAkBizF,OAAQ/kF,EAAMy3C,QAASutC,sBAAoB,EAACx6D,KAAK,QAC/D1pB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOse,SACdhoB,EAAMynG,YAAcznG,EAAM0D,SAAS+jE,SAChC3mE,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO49F,QAASnrD,OAAO,SAASC,IAAI,sBAAsB1jD,KAAMsH,EAAM0D,SAAS+a,YACrF3d,EAAAhP,EAAAiP,cAAC6mG,GAAD,CAAkB5mG,MAAO0I,GAAO69F,YAGpCzmG,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO49F,QAASnrD,OAAO,SAASC,IAAI,sBAAsB1jD,KAAMsH,EAAM0D,SAAS+a,YACrF3d,EAAAhP,EAAAiP,cAACwyF,GAAD,CAAcvyF,MAAO0I,GAAO69F,YAGpCzmG,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO8pF,eACdxzF,EAAM6nG,UAAY/mG,EAAAhP,EAAAiP,cAAA,WACnBD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO2mG,GACR3nG,EAAM0D,SAAS2E,QAElBrI,EAAM6nG,UACJ/mG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQ+kB,QAAM,GACVhnG,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOgV,aACf1e,EAAM0D,SAASgb,aAEpB5d,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOi/D,aACf++B,EADL,IACiB/+B,MAMjC7nE,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOy2C,aACfngD,EAAMolF,QACHtkF,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAO+yE,EACPpzD,QACIlnB,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYpI,MAAO0I,GAAOuI,OAAQsC,SAAUvU,EAAMuuF,YAAajlF,QAAS,kBAAMtJ,EAAMolF,QAAUplF,EAAMolF,OAAOplF,EAAM0D,SAAS2X,MACtHva,EAAAhP,EAAAiP,cAACskF,GAAAvzF,EAAD,CAAUkP,MAAO0I,GAAOk7E,WAAYl6E,SAAS,aAK7D5J,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAM,kBACN2f,QACIlnB,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYpI,MAAO0I,GAAOuI,OAAQsC,SAAUvU,EAAMuuF,YAAajlF,QAAS,kBAAMtJ,EAAMuzE,UAAYvzE,EAAMuzE,SAASvzE,EAAM0D,SAAS2X,MAC1Hva,EAAAhP,EAAAiP,cAACwvD,GAAAz+D,EAAD,CAAYkP,MAAO0I,GAAOk7E,WAAYl6E,SAAS,kBCpD7EozC,GAAe,CAAEC,QAAQ,GAsCzBgqD,GAAqBt3D,GAAS,sCAC9Bu3D,GAAoBv3D,GAAS,qCAE7Bw3D,eAEF,SAAAA,EAAYjoG,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAq1G,IACtBruG,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAs2G,GAAA9nG,KAAAvN,KAAMoN,KAUVkoG,mBAAqB,WACjB,IAAIC,GAAsB,EAK1B,OAJYvuG,EAAKoG,MAAMs/F,aAAaryB,qBAAqBC,mBACjD7xD,GAAGloB,OAAS,IAChBg1G,GAAa,GAEVA,GAjBevuG,EA4B1BwuG,YAAc,kBAAMxuG,EAAK4G,SAAS,CAAE6nG,gBAAgB,KA5B1BzuG,EA8B1B0uG,aAAe,kBAAM1uG,EAAK4G,SAAS,CAAE6nG,gBAAgB,KA9B3BzuG,EAgC1B2uG,gBAAkB,SAAC/gF,GACf5tB,EAAKoG,MAAM4gD,OAAO,YAAa,IAC/BhnD,EAAKoG,MAAM4gD,OAAO,YAAa,IAC/B,IAAMmmC,EAAYv/D,EAAM20B,OAAO6qC,MAAM,GACrC,GAAID,GAAah8D,GAAgBg8D,EAAUv8D,MAAO,CAC9C,IAAM28D,EAAyB,CAC3BF,KAAMF,EACN1+E,MAAO,gBACP+V,OAAQ,GAEZxkB,EAAKwuG,cACLxuG,EAAKoG,MAAMwoG,iBAAiB5uG,EAAKoG,MAAM+uC,UAAWn1C,EAAKoG,MAAMlK,aAAcqxF,GACtErtF,KAAKF,EAAK6uG,eAAgB7uG,EAAK0uG,mBAGpC1uG,EAAKoG,MAAM1O,gBAAgB,wDAAyD,YA/ClEsI,EAmD1B6uG,eAAiB,WACb,GAAI7uG,EAAKoG,MAAMqjG,UAAUtD,oBAAsB1B,GAAiBqC,UAAW,CACvE,IAAMgI,EAAe9uG,EAAKoG,MAAMs/F,aAAavyB,gBAAgBjtE,OAAO,SAAArE,GAAC,OAAIA,EAAE4f,KAAOzhB,EAAKoG,MAAMqjG,UAAUK,aACvG,GAAIgF,EAAav1G,OAAS,EAAG,CACzB,IAAMwtG,EAA+Bl+F,KAAKpF,MAAMqrG,EAAa,GAAGxJ,cAC5DyJ,EAAmB/uG,EAAKgvG,iBAAiBjI,EAASsB,WACtDroG,EAAK4G,SAAS,CAAEqoG,cAAeF,IAC/B/uG,EAAKoG,MAAM4gD,OAAO,YAAa+/C,EAASsB,WACxCroG,EAAKoG,MAAM4gD,OAAO,YAAa+/C,EAASwB,iBAGhDvoG,EAAK0uG,gBA9DiB1uG,EAiE1BkvG,gBAAkB,WACdlvG,EAAKwuG,cACLxuG,EAAKoG,MAAM+oG,kBAAiB,GACvBjvG,KAAK,WACFF,EAAK0uG,eACL1uG,EAAKoG,MAAM4gD,OAAO,YAAa,IAC/BhnD,EAAKoG,MAAM4gD,OAAO,YAAa,KAE/BhnD,EAAK0uG,eAzES1uG,EA6E1BstF,aAAe,SAAC7+E,EAAgBqW,KA7EN9kB,EAiF1BovG,WAAa,WACTpvG,EAAK4G,SAAS,CACV4tD,YAAY,EACZ/lD,WAAOrS,EACP0oB,iBAAa1oB,EACbixF,UAAMjxF,EACNooB,YAAQpoB,EACRyxE,cAAUzxE,KAxFQ4D,EA8G1BqvG,OAAS,WACL,OAAOrvG,EAAKoG,MAAMkpG,OAAStvG,EAAKsuG,sBA7GhCtuG,EAAKuvG,6BAA+BvvG,EAAKuvG,6BAA6BlvD,KAAlCtoD,OAAAkuG,GAAA,EAAAluG,CAAAiI,IAEpCA,EAAK+G,MAAQ,CACTytD,YAAY,EACZy6C,cAAejvG,EAAKgvG,iBAAiBhvG,EAAKoG,MAAM44C,cAAcqpD,WAC9DoG,gBAAgB,GAPEzuG,4FA6FG2P,GACzB,IAAIo/F,EAAmB/1G,KAAKg2G,iBAAiBr/F,EAAE4yC,OAAOxiD,OACtD/G,KAAK4N,SAAS,CAAEqoG,cAAeF,IAC/B/1G,KAAKoN,MAAM4gD,OAAO,YAAa,6CAGlBqhD,GACb,IAAI4G,EAAiC,GACrC,GAAI5G,EAAW,CACX,IAAImH,EAAQx2G,KAAKoN,MAAMs/F,aAAaryB,qBAAqBE,WAAWpxD,KAAK,SAAAqtF,GAAK,OAAIA,EAAMnH,YAAcA,IAClGmH,IACAP,EAAal3G,OAAAgO,EAAA,EAAAhO,CAAOy3G,EAAMC,gBAGlC,OAAOR,sCAOChF,GACR,OAAOjxG,KAAKoN,MAAMqjG,UAAUtD,oBAAsB8D,mCAIlD,IAAIrd,EAAM5zF,KAAKoN,MAAMs/F,aAAaryB,qBAAqBC,mBACvD,OACIpsE,EAAAhP,EAAAiP,cAAA,QAAMsa,GAAG,oBACLva,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO6C,mBACjBzL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,gBAEJhL,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO2D,eAAjB,wHACAvM,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgBvxF,YAA5B,eACAxM,EAAAhP,EAAAiP,cAAA,6FACiED,EAAAhP,EAAAiP,cAAA,WADjE,8BAE+BD,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBv3F,KAAM5O,KAAK,+BAA+B4nG,UAAQ,GAA5E,kBAE/Bx/F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgBvxF,YAA5B,gBACE1a,KAAKs1G,sBACHpnG,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO69F,GAAgBlvF,MACzB7O,EAAAhP,EAAAiP,cAAC+jF,GAAAhzF,EAAD,CAAkBizF,OAAQnyF,KAAK+N,MAAM0nG,eAAgBrjB,sBAAoB,EAACx6D,KAAK,QAC3E1pB,EAAAhP,EAAAiP,cAACgnF,GAAD,CACI1sE,GAAG,oBACH/R,QAAS1W,KAAK21G,gBACdvnG,MAAO69F,GAAgByK,aACvB3/F,MAAM,UACN4K,SAAU3hB,KAAKoN,MAAMuuF,aACrBztF,EAAAhP,EAAAiP,cAAA,4BAIZD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY02D,cAAY,EAAClmG,MAAO0I,GAAO6/F,kBAAmBrwB,MAAM,UAAhE,8CAGAp4E,EAAAhP,EAAAiP,cAACyoG,GAAD,CACIj3G,KAAMK,KAAK+N,MAAMytD,WACjBqZ,SAAU70E,KAAK+N,MAAM8mE,SAAW70E,KAAK+N,MAAM8mE,SAAW,OACtDw/B,cAAer0G,KAAK62G,gBACpBhkB,OAAQ7yF,KAAKs0F,aACb5uC,SAAU1lD,KAAKo2G,cAI1Bp2G,KAAKs1G,sBACFpnG,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC2oG,GAAD,CACIhwG,IAAK8sF,EAAInrE,GACT3X,SAAU8iF,EACV/uC,QAAS7kD,KAAK+N,MAAM0nG,eACpBZ,WAAW,EACXl0B,SAAU3gF,KAAKk2G,gBACfva,YAAa37F,KAAKoN,MAAMuuF,YACxBsZ,UAAU,EACVF,YAAa9I,GAAgB8K,sBAEjC7oG,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBvxF,YAA1B,gBACAxM,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAA,SAAOC,MAAO69F,GAAgB+K,iBAA9B,cACA9oG,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,YACLqoC,UAAWnD,GACXntC,MAAM,GACNwvC,QAAM,EACN7kD,QAAQ,WACRwtD,YAAalB,GACb3H,SAAUvjD,KAAKu2G,6BACf14D,UAAQ,EACR2H,SAAU2vD,GACV5vD,WAAS,GACTr3C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAEV/G,KAAKoN,MAAMs/F,aAAaryB,qBAAqBE,WAAW/5E,IAAI,SAACy2G,GAAD,OAAS/oG,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAKmwG,EAAI5H,UAAWtoG,MAAOkwG,EAAI5H,WAAY4H,EAAI5H,eAIxInhG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAA,SAAOC,MAAO69F,GAAgB+K,iBAA9B,aAEI9oG,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAM,iIACN2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,cAE7BjL,EAAAhP,EAAAiP,cAAA,WACRD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,YACLqoC,UAAWnD,GACXntC,MAAM,GACNwvC,QAAM,EACN7kD,QAAQ,WACRwtD,YAAalB,GACbrN,UAAQ,EACR2H,SAAU4vD,GACV7vD,WAAS,GACTr3C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAEV/G,KAAK+N,MAAMkoG,cAAcz1G,IAAI,SAAC02G,GAAD,OAAYhpG,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAKowG,EAAOC,MAAOpwG,MAAOmwG,EAAOC,OAAQD,EAAOE,gBAK/Gp3G,KAAKkxG,YAAYzF,GAAiBqC,YAAc9tG,KAAKkxG,YAAYzF,GAAiBoC,kBAChF3/F,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO69F,GAAgBsB,mBAA1B,8CACAr/F,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOppC,KAAK,mBAAmBioC,UAAU,mBAAmBI,UAAWL,GAAwBjwC,MAAM,IACjG/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,QACNkN,MAAM,oEACN4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,QAEb7zE,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,WACNkN,MAAM,2CACN4vC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAO3zE,MAAO69F,GAAgBW,cACvCx+F,MAAO69F,GAAgBuB,yBASnDt/F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgB+B,iBACxB9/F,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,qBACHmP,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACNwuC,WAAW,EACXn3C,MAAO69F,GAAgBgC,WACvBv3F,QAAS1W,KAAKoN,MAAMi4C,aACpBR,QAAS7kD,KAAKoN,MAAM04C,WACpBnkC,UAAW3hB,KAAKq2G,UATpB,kDA3NZ,MAAO,CACH5gG,MAAOzV,KAAK+N,MAAM0H,MAClBqW,YAAa9rB,KAAK+N,MAAM+d,oBA1BQvd,IAAMC,eAuQ5Cy9F,GAA0D,CAC5DoB,YAAa,CACTn2F,UAAW,IAEfwD,WAAY,CACR5C,SAAU,GACVC,WAAY,IACZhB,MAAOm3F,GAASh7F,KAAKW,SAEzB6iG,aAAc,CACVx/F,UAAW,GACXmC,WAAY,MACZf,UAAW,oBAEfyE,KAAM,CACF40E,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,SACbna,YAAa,QACb9oC,UAAW,GACX3F,OAAQ,GACRyF,SAAU,YAEdg3F,gBAAiB,CACb3/F,UAAW,QACX6I,UAAW,IAEf+2F,WAAY,CACR70F,MAAO,KAEXo0F,mBAAoB,CAChBt2F,WAAY,IAEhBq2F,kBAAmB,CACf1zF,aAAc,EACdpC,WAAY,GACZV,MAAOm3F,GAASh7F,KAAKW,SAEzBmjG,gBAAiB,CACbl/F,SAAU,GACVf,MAAOm3F,GAASh7F,KAAKW,SAEzBa,KAAM,CACFqC,MAAOm3F,GAASh6F,KAAKC,QACrB4hD,eAAgB,QAEpBghD,oBAAqB,CACjBj/F,SAAU,GACVC,WAAY,WAkBpB,IAAMs/F,GAA6Bv6D,YAdnC,SAAyB/uC,GACrB,MAAO,CACH2+F,aAAc3+F,EAAM2+F,eAI5B,SAA4BrtG,GACxB,MAAO,CACHu2G,iBAAkB,SAACz5D,EAAWj5C,EAAcqxF,GAA1B,OAAyCl1F,ELvT5D,SAA0B88C,EAAmBj5C,EAAsBqxF,GACtE,sBAAAxlC,EAAAhwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA6vD,EAAO3vD,GAAP,IAAAg/C,EAAAg8B,EAAA,OAAAp7E,EAAAC,EAAAI,KAAA,SAAA2vD,GAAA,cAAAA,EAAAzvD,KAAAyvD,EAAAxvD,MAAA,cACG4+C,EAAW,IAAI8oD,SACrB5S,EAAWF,MAAQh2C,EAAS+oD,OAAO,OAAQ7S,EAAWF,MACtDE,EAAW9+E,OAAS4oC,EAAS+oD,OAAO,QAAS7S,EAAW9+E,OACxD8+E,EAAW/oE,QAAU6yB,EAAS+oD,OAAO,SAAUkQ,OAAO/iB,EAAW/oE,SACjE6yB,EAAS+oD,OAAO,YAAajrD,GAC7BkC,EAAS+oD,OAAO,eAAgBlkG,GAN7B+rD,EAAAzvD,KAAA,EAAAyvD,EAAAxvD,KAAA,EASoCypC,GAAK,gCAAiC,CAAEC,OAAQ,OAAQC,KAAMiV,IATlG,OASOg8B,EATPprB,EAAAvH,KAUCroD,EAASy0G,GAA0Bz5B,IACnCh7E,EAASX,EAAgB,uBAAwB,YAXlDuwD,EAAAxvD,KAAA,uBAAAwvD,EAAAzvD,KAAA,GAAAyvD,EAAAtH,GAAAsH,EAAA,SAaC5vD,EAAS0B,EAAyBkuD,EAAAtH,GAAK,qCAbxCsH,EAAAtH,GAAA,yBAAAsH,EAAApvD,SAAAmvD,EAAA,kBAAP,gBAAAE,GAAA,OAAAH,EAAAhvD,MAAAC,KAAAC,YAAA,GKsTwE21G,CAAiBz5D,EAAWj5C,EAAcqxF,KAC9G4hB,iBAAkB,SAACoB,GAAD,OAAkBl4G,EAAS82G,GAAiBoB,KAC9D74G,gBAAiB,SAACC,EAASC,GAAV,OAAsBS,EAASX,EAAgBC,EAASC,OAI9Ck+C,CAA6Cu4D,IAEjElwD,gBAAiD,CAAEF,KAnXzC,4BAmXVE,CAAsEkyD,ICzV/EG,eAKF,SAAAA,EAAYpqG,GAAc,IAAApG,EAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAw3G,IACtBxwG,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAy4G,GAAAjqG,KAAAvN,KAAMoN,KALVo5F,WAAa,CAAC,YAAa,iBAIDx/F,EAH1Bm1C,eAG0B,EAAAn1C,EAF1B9D,kBAE0B,EAAA8D,EAiE1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAjEjB79C,EAmE1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAnElB79C,EAqE1BunG,gBAAkB,WAEd,IAAM7E,EAAiB,GACvBA,EAAM77E,KAAK,CACPpF,GAAI,EACJxU,MAAO,eACPof,KAAM,kBAAMnlB,EAAAhP,EAAAiP,cAACspG,GAAD,CAAalP,KAAM,EAAGC,WAAYxhG,EAAK+G,MAAMy6F,YAA7C,QAEhBkB,EAAM77E,KAAK,CACPpF,GAAI,EACJxU,MAAO,cACPof,KAAM,kBAAMnlB,EAAAhP,EAAAiP,cAACspG,GAAD,CAAalP,KAAM,EAAGC,WAAYxhG,EAAK+G,MAAMy6F,YAA7C,QAEhBkB,EAAM77E,KAAK,CACPpF,GAAI,EACJxU,MAAO,aACPof,KAAM,kBAAMnlB,EAAAhP,EAAAiP,cAACspG,GAAD,CAAalP,KAAM,EAAGC,WAAYxhG,EAAK+G,MAAMy6F,YAA7C,QAEhBkB,EAAM77E,KAAK,CACPpF,GAAI,EACJxU,MAAO,SACPof,KAAM,kBAAMnlB,EAAAhP,EAAAiP,cAACspG,GAAD,CAAalP,KAAM,EAAGC,WAAYxhG,EAAK+G,MAAMy6F,YAA7C,QAIhBxhG,EAAK4G,SAAS,CAAE87F,QAAOlB,WAAY,EAAG3jD,SAAS,KA9FzB79C,EA4H1BqvD,iBAAmB,SAACvpD,GAChB,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,KAhINzmF,EAoI1B0wG,WAAa,SAACnP,GAEVvhG,EAAK4G,SAAS,SAAAmpD,GACV,IAAM4gD,EAAc5gD,EAAU2yC,MAAM1jE,UAAU,SAAAuiE,GAAI,OAAIA,EAAK9/E,KAAOsuC,EAAUyxC,aAC5E,MAAO,CACHA,WAAYzxC,EAAU2yC,MAAMiO,EAAcpP,GAAM9/E,KAErD,kBAAM7iB,OAAOwiC,SAAS,EAAG,MA3INphC,EA+I1B4wG,iBAAmB,SAACC,GAChB,IAAK7wG,EAAK+G,MAAM66F,eAAe97E,IAAI+qF,GAAgB,CAC/C,IAAIC,EAAoB,IAAIpuF,IAC5B1iB,EAAK+G,MAAM66F,eAAe5/E,QAAQ,SAACu/E,GAC/BuP,EAAkBnuF,IAAI4+E,KAE1BuP,EAAkBnuF,IAAIkuF,GACtB7wG,EAAK4G,SAAS,CACVg7F,eAAgBkP,MAvJF9wG,EA4J1B+wG,SAAW,SAAC/kF,EAAaqC,GACrBruB,EAAK4G,SAAS,SAAAmpD,GACV,OAAI/jC,IAAQ+jC,EAAUyxC,YAAcnzE,EACzB,CAAEmzE,gBAAYplG,GAEd,CAAEolG,WAAYx1E,IAE1B,kBAAMptB,OAAOwiC,SAAS,EAAG,MAnKNphC,EAsK1BgxG,qBAAuB,SAACzP,GAEpB,IADwBvhG,EAAK+G,MAAM66F,eAAe97E,IAAIy7E,GAElD,OAAOr6F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAEX,OAAQi6F,GACJ,KAAK,EACD,IAAM0P,EAAyD,QAA5CjxG,EAAK+G,MAAMmqG,YAAYrF,iBAA6B,yBAA2B,0BAC5F3F,EAAelmG,EAAKmxG,6BAC1B,OACIjqG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAAaH,GAAkB/pG,EAAAhP,EAAAiP,cAAA,WAC3D++F,GAGb,KAAK,EACD,IAAMmC,EAAYroG,EAAK+G,MAAMsqG,iBAAiBhJ,UACxCG,EAAYxoG,EAAK+G,MAAMsqG,iBAAiB7I,UAC9C,OACIthG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAA7B,UAAiD/I,GAAiBnhG,EAAAhP,EAAAiP,cAAA,WAClED,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAA7B,eAAsD5I,IAGlE,KAAK,EACD,IAAM8I,EAAetxG,EAAK+G,MAAMmqG,YAAY/K,oBAAsB1B,GAAiBoC,gBAC/E7mG,EAAK+G,MAAMmqG,YAAY/K,oBAAsB1B,GAAiBqC,UAAY9mG,EAAK+G,MAAMwqG,cAAchM,YAAYhsG,OAAS,iBAAmB,MAC/I,OACI2N,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAA7B,kBAAyDE,GAEjE,QACI,OAAQpqG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,QArMMtH,EAyM1BmxG,2BAA6B,WACzB,OAAQnxG,EAAK+G,MAAMmqG,YAAY/K,mBAC3B,KAAK1B,GAAiBgC,SAAU,OAAOv/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAA7B,qBACvC,KAAK3M,GAAiBmC,cAAe,OAAO1/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAA7B,0BAC5C,KAAK3M,GAAiBqC,UAAW,OAAO5/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAA7B,wBACxC,KAAK3M,GAAiBoC,eAClB,IAAM8B,EAAY3oG,EAAKoG,MAAMs/F,aAAavyB,gBAAgBjtE,OAAO,SAAArE,GAAC,OAAIA,EAAE4f,KAAOzhB,EAAK+G,MAAMmqG,YAAYpH,aAChG/E,EAAe4D,EAAUpvG,OAAS,EAAIovG,EAAU,GAAG5D,aAAe,GACxE,OAAO79F,EAAAhP,EAAAiP,cAAA,WACHD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAA7B,mBAA+DlqG,EAAAhP,EAAAiP,cAAA,WAC/DD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBmM,YAAarM,IAElD,QAAS,OAAO79F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,QArNEtH,EAyN1BwxG,WAAa,SAACjQ,GAEV,OAAQA,GACJ,KAAK,EACD,OACIr6F,EAAAhP,EAAAiP,cAACsqG,GAAD,CACI/L,aAAc1lG,EAAKoG,MAAMs/F,aACzBY,qBAAsBtmG,EAAKsmG,qBAC3BK,kBAAmB3mG,EAAK2mG,kBACxBZ,qBAAsB/lG,EAAK+lG,qBAC3B/mD,cAAeh/C,EAAK+G,MAAMmqG,YAC1B9yD,SAAUp+C,EAAK0xG,wBAG3B,KAAK,EACD,OACIxqG,EAAAhP,EAAAiP,cAACwqG,GAAD,CACIx8D,UAAWn1C,EAAKm1C,UAChBj5C,aAAc8D,EAAK9D,aACnButG,UAAWzpG,EAAK+G,MAAMmqG,YACtBlyD,cAAeh/C,EAAK+G,MAAMsqG,iBAC1BjzD,SAAUp+C,EAAK4xG,6BAG3B,KAAK,EACD,OACI1qG,EAAAhP,EAAAiP,cAAC0qG,GAAD,CACI18D,UAAWn1C,EAAKm1C,UAChBj5C,aAAc8D,EAAK9D,aACnButG,UAAWzpG,EAAK+G,MAAMmqG,YACtB5I,eAAgBtoG,EAAK+G,MAAMsqG,iBAC3B7J,kBAAmBxnG,EAAK+G,MAAMwqG,cAC9BlI,0BAA2BrpG,EAAKqpG,0BAChCjrD,SAAUp+C,EAAK8xG,0BAI3B,KAAK,EACD,OACI5qG,EAAAhP,EAAAiP,cAAC4qG,GAAD,CACI58D,UAAWn1C,EAAKm1C,UAChBj5C,aAAc8D,EAAK9D,aACnButG,UAAWzpG,EAAK+G,MAAMmqG,YACtB5I,eAAgBtoG,EAAK+G,MAAMsqG,iBAC3BjJ,YAAapoG,EAAK+G,MAAMwqG,gBAKpC,QACI,OACIrqG,EAAAhP,EAAAiP,cAAA,eA5QUnH,EAiR1B0xG,sBAAwB,SAACpnD,GACrB,IAAIy8C,EAAW,KACX+C,EAAa,GACbkI,EAAcj6G,OAAA0G,EAAA,EAAA1G,CAAA,GAAQiI,EAAK+G,MAAMwqG,eAYrC,GATIjnD,EAAW67C,oBAAsB1B,GAAiBgC,UAC/Cn8C,EAAW67C,oBAAsB1B,GAAiBmC,eACrDG,EAAW/mG,EAAKiyG,kBAAkB3nD,EAAW67C,mBAC7C2D,EAAa/C,EAAStlF,IAGtBqoF,EAAax/C,EAAWw/C,WAGxBx/C,EAAW67C,oBAAsB1B,GAAiBoC,eAAgB,CAClE,IAAIiI,EAAe9uG,EAAKoG,MAAMs/F,aAAavyB,gBAAgBjtE,OAAO,SAAArE,GAAC,OAAIA,EAAE4f,KAAOqoF,IAC5EgF,EAAav1G,OAAS,IACtBwtG,EAAW+H,EAAa,GACxBkD,EAAiBnpG,KAAKpF,MAAMsjG,EAASzB,eAI7C,IAAI4M,EAAyC,CACzCrG,iBAAkBvhD,EAAWuhD,iBAC7B1F,kBAAmB77C,EAAW67C,kBAC9B2D,WAAYA,GAGhB9pG,EAAK4G,SAAS,CACVsqG,YAAagB,EACbX,cAAeS,IAEnBhyG,EAAK4wG,iBAAiB,GACtB5wG,EAAK0wG,WAAW,IAnTM1wG,EAsT1B4xG,2BAA6B,SAACtnD,GAC1B,IAAI6nD,EAA6C,CAC7C9J,UAAW/9C,EAAW+9C,UACtBG,UAAWl+C,EAAWk+C,UACtBmD,iBAAkBrhD,EAAWqhD,kBAG7BvD,EAAWrwG,OAAA0G,EAAA,EAAA1G,CAAA,GAAQiI,EAAK+G,MAAMwqG,eAClCnJ,EAAYC,UAAY/9C,EAAW+9C,UACnCD,EAAYG,eAAiBj+C,EAAWk+C,UACxCxoG,EAAK4G,SAAS,CACVyqG,iBAAkBc,EAClBZ,cAAenJ,IAEnBpoG,EAAK4wG,iBAAiB,GACtB5wG,EAAK0wG,WAAW,IArUM1wG,EAwU1B8xG,wBAA0B,SAACxnD,GAEvBtqD,EAAK4wG,iBAAiB,GACtB5wG,EAAK0wG,WAAW,GAChBvvE,GAAcE,eA5UQrhC,EA+U1BqpG,0BAA4B,SAAC7B,GACzBxnG,EAAK4G,SAAS,CAAEwrG,cAAc,IAC9BpyG,EAAK4G,SAAS,CAAE2qG,cAAe/J,GAC3B,WACIxnG,EAAK4G,SAAS,CAAEwrG,cAAc,OAnVhBpyG,EAuV1BiyG,kBAAoB,SAAC9L,GACjB,IAAIY,EAA2B,CAC3BtlF,GAAI,GACJitD,SAAU,GACVq2B,aAAc,GACd2D,YAAY,EACZtD,kBAAkB,EAClBE,aAAc,IAEdwJ,EAAiC,GAcrC,OAbI3I,IAAsB1B,GAAiBgC,UACvCqI,EAAe9uG,EAAKoG,MAAMs/F,aAAavyB,gBAAgBjtE,OAAO,SAACrE,GAAD,OAA8C,IAAvBA,EAAEujG,kBAAgD,kCAAnBvjG,EAAEkjG,gBACrGxrG,OAAS,IACtBwtG,EAAW+H,EAAa,IAGvB3I,IAAsB1B,GAAiBmC,gBAC5CkI,EAAe9uG,EAAKoG,MAAMs/F,aAAavyB,gBAAgBjtE,OAAO,SAACrE,GAAD,OAA8C,IAAvBA,EAAEujG,kBAAgD,2BAAnBvjG,EAAEkjG,gBACrGxrG,OAAS,IACtBwtG,EAAW+H,EAAa,IAIzB/H,GA3WP/mG,EAAK+G,MAAQ,CACT82C,SAAS,EACTu0D,cAAc,EACdC,gBAAgB,EAChBzQ,eAAgB,IAAIl/E,IACpBggF,MAAO,GACPwO,YAAa,CACTrF,iBAAkB,MAClB1F,kBAAmB1B,GAAiBgC,SACpCqD,WAAY,IAEhBuH,iBAAkB,CACdhJ,UAAW,GACXG,UAAW,GACXmD,iBAAkB,SAEtB4F,cAAe,CACXlJ,UAAW,GACXE,eAAgB,GAChBhD,YAAa,GACboC,eAAgB,CACZ,CAAEF,eAAkB,MAAOG,eAAkB,KAC7C,CAAEH,eAAkB,WAAYG,eAAkB,KAClD,CAAEH,eAAkB,eAAgBG,eAAkB,KACtD,CAAEH,eAAkB,iBAAkBG,eAAkB,KACxD,CAAEH,eAAkB,iBAAkBG,eAAkB,KACxD,CAAEH,eAAkB,eAAgBG,eAAkB,KACtD,CAAEH,eAAkB,0BAA2BG,eAAkB,QAK7E,IAAM0K,EAAmBtrG,GAAO0+F,aAAan6F,OAAQ4pC,UAAWh8C,QAAQ,IAAK,IAC7E6G,EAAKm1C,UAAY/uC,EAAMgF,MAAMG,OAAO+mG,GACpC,IAAMjnG,EAAsBrE,GAAO0+F,aAAan6F,OAAQrP,aAAc/C,QAAQ,IAAK,IArC7D,OAsCtB6G,EAAK9D,aAAekK,EAAMgF,MAAMG,OAAOF,GAtCjBrL,mFAmGtB,IAAM83E,EAA2B,GAC5B9+E,KAAKoN,MAAM8hB,WAAWzG,IACvBq2D,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,eAGK,IAAnDlD,KAAKoN,MAAMs/F,aAAavyB,gBAAgB55E,QACxCu+E,EAASjxD,KAAK7tB,KAAKoN,MAAMmlG,wBAGuB,IAAhDvyG,KAAKoN,MAAMs/F,aAAatyB,aAAa75E,QACrCu+E,EAASjxD,KAAK7tB,KAAKoN,MAAMmsG,qBAGgB,IAAzCv5G,KAAKoN,MAAM+a,cAAcC,KAAK7nB,QAC9Bu+E,EAASjxD,KAAK7tB,KAAKoN,MAAMihD,eAAeruD,KAAKm8C,UAAWn8C,KAAKkD,eAGU,OAAvElD,KAAKoN,MAAMs/F,aAAaryB,qBAAqBC,mBAAmB7xD,IAChEq2D,EAASjxD,KAAK7tB,KAAKoN,MAAM+oG,kBAAiB,IAG9Cn2G,KAAK4pF,YACLniF,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAKuuG,gBAAiBvuG,KAAK+pF,6CAyPjD,IACG76D,EAAelvB,KAAKoN,MAApB8hB,WADH4tC,EAEkE98D,KAAK+N,MAApEy6F,EAFH1rC,EAEG0rC,WAAYI,EAFf9rC,EAEe8rC,eAAgB/jD,EAF/BiY,EAE+BjY,QAAS6kD,EAFxC5sC,EAEwC4sC,MAAO2P,EAF/Cv8C,EAE+Cu8C,eAEpD,OACInrG,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAWswB,EAAWnO,QAAQ7E,MAAahO,EAAAhP,EAAAiP,cAAA,YAE9DD,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAOl2D,KAAKwmG,WACZnwC,iBAAkBr2D,KAAKq2D,mBAE1BxR,EACG32C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgB1zF,YACxBrK,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGJl0C,EAAAhP,EAAAiP,cAACqrG,GAAD,CACI9P,MAAOA,EACPlB,WAAYA,EACZI,eAAgBA,EAChBgB,YAAa5pG,KAAKw4G,WAClB72F,SAAU03F,EACV3iG,QAAS1W,KAAK+3G,SACdpO,QAAM,EACNyP,aAAcp5G,KAAK+N,MAAMqrG,6DAlWzC,OAAOp5G,KAAKoN,MAAM+a,cAAcC,KAAK7nB,OAAS,4CAI9C,IAAIk5G,GAAkB,EAChBC,EAAqB15G,KAAKoN,MAAM8hB,WAAWnO,QAAQu5B,mBACzD,GAAIo/D,EAAmBn5G,OAAS,EAAG,CAC/B,IAAMi6C,EAAUk/D,EAAmB,GAAGl/D,QAChCm/D,EAAYxnE,KAAYhpB,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAO+xB,IAC3CzsC,OAAuB3K,IAAdu2G,EAA2BA,EAAU7yG,IAAM,GAC5C,OAAViH,GAA4B,OAAVA,IAClB0rG,GAAS,GAGjB,OAAOA,+CAIP,IAAMtvF,EAAaI,GAAY,aAAcC,GAAgBC,gBAC7D,OAAOzqB,KAAKoN,MAAM+a,cAAcC,KAAKwE,KAAK,SAAAvE,GAAG,OAA6B,OAAzBA,EAAIiC,kBAA6BjC,EAAIiC,mBAAqBH,WAnExF5b,IAAMC,eA0Z3By9F,GAA0D,CAC5DmM,WAAY,CACRj9F,UAAW,SACXrD,SAAU,GACVf,MAAOm3F,GAASh7F,KAAK0mG,SAEzBrhG,WAAY,CACRlK,UAAW,WAsBJyuC,ICpeH+8D,GDoeG/8D,eAlBf,SAAyB/uC,GACrB,MAAO,CACHmhB,WAAYnhB,EAAMmhB,WAClBw9E,aAAc3+F,EAAM2+F,aACpBvkF,cAAepa,EAAM4c,WAI7B,SAA4BtrB,GACxB,MAAO,CACH86C,gBAAiB,SAACj3C,GAAD,OAAkB7D,EAAS86C,GAAgBj3C,KAC5DqvG,qBAAsB,kBAAMlzG,EAASkzG,OACrCgH,kBAAmB,kBAAMl6G,ENja7B,eAAAsvD,EAAA5vD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAyvD,EAAOvvD,GAAP,IAAA0iD,EAAA,OAAA9iD,EAAAC,EAAAI,KAAA,SAAAuvD,GAAA,cAAAA,EAAArvD,KAAAqvD,EAAApvD,MAAA,cAAAovD,EAAApvD,KAAA,EACkBypC,GAAK,gCADvB,OACG6Y,EADH8M,EAAAnH,KAEHroD,EAASy6G,GAAkB/3D,IAFxB,wBAAA8M,EAAAhvD,SAAA+uD,MAAP,gBAAA3R,GAAA,OAAA0R,EAAA5uD,MAAAC,KAAAC,YAAA,KMkaIouD,eAAgB,SAAClS,EAAWj5C,GAAZ,OAA6B7D,EAASgvD,GAAelS,EAAWj5C,KAChFizG,iBAAkB,SAACoB,GAAD,OAAkBl4G,EAAS82G,GAAiBoB,OAIvDz6D,CAA6C06D,yDEzctDxyD,GAAoB7G,GAAe,KACnC47D,GAAmB57D,GAAe,IAClC2pC,GAAoBjqC,GAAS,0BAC7BkqC,GAAmBlqC,GAAS,yBAC5Bm8D,GAAc,CAACp6D,GAAgC,6BAA8BT,GAAeK,IAC5Fy6D,GAAiB,CAACr6D,GAAgC,uBAClDsL,GAAe,CAAEC,QAAQ,GAEzBvK,GAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAEfmjG,GAA0B,SAACpzG,EAAgB8oC,EAAcziC,GAC3D,GAAIA,IAAoC,IAA3BA,EAAMgtG,mBAA8BrzG,IAAUqG,EAAMkxC,iBAC7D,MAAO,sBA6GTxnC,GAAiD,CACnDmuC,KAAM,CACFxtC,WAAY,GACZ2B,MAAO,MAIA+rC,gBAAoC,CAC/CF,KAvJqB,sBAsJVE,CA7Gc,SAAC/3C,GAAiB,IACnCgtG,EAAqBhtG,EAArBgtG,iBAKR,OACIlsG,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAClBn3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOmuC,MACzB/2C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,YACLqoC,UAAWnD,GACXntC,MAAM,aACNsxC,WAAS,EACTC,SAAU,CAACsiC,GAAmB9iC,IAC9BnH,UAAQ,EACRj/C,QAAQ,WACR6mD,WAAS,KAGjBv3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLqoC,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACTC,SAAU,CAACuiC,GAAkB/iC,IAC7BnH,UAAQ,EACRj/C,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWhC,GACXtuC,MAAM,gBACNsxC,WAAS,EACT2G,eAAa,EACbD,KAAM,CAACjO,IACPmO,UAAW1wB,GACX+pB,SAAUw0D,GACVp7G,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLqoC,UAAWnD,GACXntC,MAAM,SACNwvC,QAAM,EACN8B,WAAS,EACT0G,KAAM,CAACjO,IACPwH,SAAUy0D,GACVr7G,QAAQ,WACRwtD,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbwrC,KAAa/xC,IAAI,SAAAo2B,GAAG,OACjB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWnD,GACXntC,MAAOmmG,EAAmB,iBAAmB,gBAC7Cx7G,QAAQ,WACR2mD,WAAS,EACThF,WAAYK,GACZ4E,SAAU,CAACu0D,GAAkBn7D,GAAmBu7D,IAChDviF,KAAK,YAGb1pB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,QACLqoC,UAAWnD,GACXntC,MAAM,iBACNsxC,WAAS,EACTC,SAAU,CAACR,GAAmBnJ,IAC9Bj9C,QAAQ,gBAKxBsP,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UACA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,sBAAsBmP,KAAK,SAASjW,SAAUvU,EAAMw4C,QAAS7uC,MAAM,WAA9E,QAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QA5FO,WACvBtJ,EAAM4gD,OAAO,qBAAqB,IA2FWvlC,GAAG,iBAAiBmP,KAAK,SAASjW,SAAUvU,EAAMw4C,QAAS7uC,MAAM,WAAtG,yBCnHDsjG,GAdW,SAACjtG,GACvB,IAAM44C,EAA0B,CAC5BkM,iBAAa9uD,EACb+uD,SAAU5nC,GAAY,OAAQC,GAAgBqiB,QAC9CyR,iBAAkBlxC,EAAMkxC,kBAG5B,OACIpwC,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,oBACzDvH,EAAAhP,EAAAiP,cAACmsG,GAAD,CAAsBt0D,cAAeA,EAAe1H,iBAAkBlxC,EAAMkxC,iBAAkB8G,SAAUh4C,EAAM+4C,OAAQT,SAAUt4C,EAAMs4C,SAAU00D,iBAAkBhtG,EAAMgtG,+BFrBxKP,uDGaZ,IAmEM/iG,GAAiD,CACnDmuC,KAAM,CACFxtC,WAAY,IAEhBgG,QAAS,CACL5D,aAAc,GACd9C,MAAM9D,GAAQC,KAAKM,QAGZ+mG,GA5Ee,SAACntG,GAG3B,OACIc,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,0BACzDvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOmuC,MACzB/2C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAAS32C,EAAMotG,sBACfj3D,SAAUn2C,EAAMqtG,oBAChB1jG,MAAM,YACN4K,SAAUvU,EAAMstG,YAGxBzmG,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOlD,MAApB,yBAGf1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAAS32C,EAAMutG,uBACfp3D,SAAUn2C,EAAMwtG,qBAChB7jG,MAAM,YACN4K,SAAUvU,EAAMstG,YAGxBzmG,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOlD,MAApB,yBAGf1F,EAAAhP,EAAAiP,cAAA,WAEAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,CAASv7C,MAAO0I,GAAO2G,UACvBvP,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAAS32C,EAAM+lF,UACf5vC,SAAUn2C,EAAMytG,QAChB9jG,MAAM,YACN4K,SAAUvU,EAAMstG,YAGxBzmG,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOlD,MAApB,qKAKvB1F,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UACA7I,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,2BACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAStJ,EAAM+4C,OACftB,QAASz3C,EAAMstG,UACf/4F,UAAWvU,EAAM+lF,aAAe/lF,EAAMotG,uBAAyBptG,EAAMutG,yBANzE,+ECsCT,SAAAh5G,EACLw6C,EACAj5C,EACAS,GAHK,IAAA4L,EAAA,OAAAtQ,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cAAAmC,EAAApC,KAAA,EAAAoC,EAAAnC,KAAA,EAM2CypC,GAAI,aAAA3kC,OACnC43C,EADmC,iBAAA53C,OACVrB,EADU,eAAAqB,OACgBZ,EADhB,sBAEhD,CAAEwlC,OAAQ,QART,cAMG55B,EANH3N,EAAA8lD,KAAA9lD,EAAAm7C,OAAA,SAWIxtC,GAXJ,cAAA3N,EAAApC,KAAA,EAAAoC,EAAA+lD,GAAA/lD,EAAA,SAAAA,EAAAm7C,OAAA,SAcI,IAdJ,yBAAAn7C,EAAA/B,SAAA8B,EAAA,wCAkBA,SAASm5G,GAAsBnsF,EAAyCq3E,EAAoDlhC,GACjI,IAAMi2C,EAAYxwF,GAAY,UAAWC,GAAgB8jB,gBACnD0sE,EAAmBhV,GAAyBA,EAAsB59E,KAAKlb,OAAO,SAAA+tG,GAAC,OAAIA,EAAE/iC,kBAAoB6iC,IAC3GG,EAA2B,GAC/B,GAAGF,GAAoBA,EAAiBz6G,OAAS,IAC/Cy6G,EAAiBhyF,QAAQ,SAAAmyF,GACvBD,EAAc,GAAA32G,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAOm8G,GAAPn8G,OAAAgO,EAAA,EAAAhO,CAA0Bo8G,EAAOtyF,MAAMroB,IAAI,SAAA4oB,GAAI,OAAIA,EAAKX,SAGrEyyF,EAAe36G,OAAS,GAAE,CAC3B,IACM66G,EADet2C,EAAU18C,KAAKlb,OAAO,SAAAkc,GAAI,OAAI8xF,EAAen7E,SAAS3W,EAAKX,MAC1CmE,KAAK,SAAAxD,GAAI,OAAIA,EAAKG,qBAAqBwW,SAAS,MAChF68B,IAAgBjuC,EAAgB+jD,eAMtC,OAJ6B/jD,EAAgB2vB,kBACd88D,GACkC,MAAlCzsF,EAAgB4B,mBACfqsC,EAKpC,OAAO,MCzFHy+C,eAcF,SAAAA,EAAYjuG,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAq7G,IACtBr0G,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAs8G,GAAA9tG,KAAAvN,KAAMoN,KAdV2tG,UAAYxwF,GAAY,UAAWC,GAAgB8jB,gBAazBtnC,EAZ1Bs0G,iBAIM,CACE,CAAE7yF,GAAI,WAAY06D,UAAW,MAAOlvE,MAAO,QAC3C,CAAEwU,GAAI,cAAe06D,WAAW,EAAOlvE,MAAO,iBAC9C,CAAEwU,GAAI,WAAY06D,WAAW,EAAOlvE,MAAO,UAC3C,CAAEwU,GAAI,aAAc06D,WAAW,EAAOlvE,MAAO,cAC7C,CAAEwU,GAAI,mBAAoB06D,WAAW,EAAOlvE,MAAO,WAGjCjN,EAiB1Bu0G,mBAAqBhxF,GAAY,aAAcC,GAAgBC,gBAjBrCzjB,EAkB1B2rB,oBAAsBpI,GAAY,mBAAoBC,GAAgBoI,mBAlB5C5rB,EAmB1Bw0G,mBAAqBjxF,GAAY,aAAcC,GAAgBwjB,kBAnBrChnC,EA4B1By0G,mBAAqB,SAAC7mF,GAClB5tB,EAAK4G,SAAS,CAAE8tG,WAAY9mF,EAAM20B,OAAOxiD,SA7BnBC,EAiC1B20G,qBAAuB,SAAClzF,GACpBzhB,EAAK4iF,YACL,IACI1tE,GADWlV,EAAKoG,MAAM+a,cAAcC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOA,KAAO,CAAEmyC,SAAU,aACnEA,SACpB5zD,EAAKoG,MAAMwuG,eAAenzF,EAAIvM,GAAMhV,KAAKF,EAAK+iF,WAAY/iF,EAAK+iF,aArCzC/iF,EAwC1B60G,kBAAoB,SAACvqD,GACjB,IAAMwqD,EAA2B,CAC7Bn4G,WAAY,GACZ8kB,GAAI,GACJyoC,UAAWI,EAAWJ,WAAa,GACnC7iC,SAAUijC,EAAWjjC,UAAY,GACjC6jC,YAAaZ,EAAWY,aAAeZ,EAAWY,YAAa71B,SAC/D81B,SAAUb,EAAWa,SACrBwS,aAAcrT,EAAWqT,aACzB/6C,WAAY,GACZd,UAAW,GACX0mD,eAAgB,GAChBhL,wBAAyB,GACzBl6C,iBAAkBtjB,EAAKu0G,mBACvB7qC,mBAAoB1pE,EAAKw0G,mBACzBlhE,mBAAoB,CAAC,CAAEuB,MAAOyV,EAAWzV,MAAO4rB,YAAa,IAC7Dz6C,YAAY,EACZ2iD,aAAa,EACbG,yBAAyB,EACzB7sD,cAAe,GACf4tD,kBAAmB,GACnBtoD,cAAc,EACdD,mBAAmB,EACnByzF,oBAAgB34G,GAGpB,OADA4D,EAAK4iF,YACE5iF,EAAKoG,MAAMshD,YAAYotD,IAlER90G,EAqE1Bg1G,uBAAyB,WACrBh1G,EAAK4G,SAAS,CAAEquG,2BAA2B,KAtErBj1G,EAwE1Bk1G,2BAA6B,SAACvlG,EAAQotC,GAClC/8C,EAAK4G,SAAS,CAAEuuG,eAAgBp4D,KAzEV/8C,EA2E1Bo1G,0BAA4B,SAACzlG,EAAQotC,GACjC/8C,EAAK4G,SAAS,CAAEyuG,oBAAqBt4D,KA5Ef/8C,EA8E1Bs1G,2BAA6B,SAAC3lG,EAAQotC,GAClC/8C,EAAK4G,SAAS,CAAE2uG,qBAAsBx4D,KA/EhB/8C,EAiF1Bw1G,mBAAqB,SAAC7lG,GACd3P,EAAK+G,MAAMouG,gBACXn1G,EAAKy1G,iBAnFaz1G,EAuF1By1G,cAAgB,WACZz1G,EAAK4G,SAAS,CAAE8uG,uBAAuB,IACvC,IAAMC,EAA0B,GAE5B31G,EAAK+G,MAAMouG,gBAAkBn1G,EAAK+G,MAAMsuG,qBACxCM,EAAc9uF,KAAKgsF,GAAa+C,QAEhC51G,EAAK+G,MAAMouG,gBAAkBn1G,EAAK+G,MAAMwuG,sBACxCI,EAAc9uF,KAAKgsF,GAAagD,SAEpC71G,EAAKoG,MAAM0vG,gBAAgBH,GAAez1G,KAAKF,EAAKojF,gBAAiBpjF,EAAK+iF,aAjGpD/iF,EAoG1BmjF,iBAAmB,WACfnjF,EAAK4G,SAAS,CAAEq3E,eAAe,EAAMy3B,uBAAuB,KArGtC11G,EAuG1BojF,gBAAkB,WACdpjF,EAAK4G,SAAS,CAAEq3E,eAAe,EAAOg3B,2BAA2B,EAAOE,gBAAgB,EAAOt3D,SAAS,EAAO63D,uBAAuB,KAxGhH11G,EA2G1B+1G,cA3G0B,eAAAj+G,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KA2GV,SAAAC,EAAOywC,GAAP,IAAAmtE,EAAA,OAAA/9G,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UAAAF,EAAAC,KAAA,GAEJqwC,EAAOotE,kBAFH,CAAA19G,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EAGqBuH,EAAK60G,kBAAkBhsE,GAH5C,OAGEmtE,EAHFz9G,EAAAmoD,KAIJ1gD,EAAKu9E,eAAey4B,GAJhBz9G,EAAAE,KAAA,gBAMJuH,EAAK60G,kBAAkBhsE,GAAQ3oC,KAAKF,EAAK+iF,WAAY/iF,EAAK+iF,YAC1D/iF,EAAKojF,kBAPD,QAAA7qF,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAooD,GAAApoD,EAAA,SAUFyH,EAAK+iF,aAVH,iCAAAxqF,EAAAM,SAAAT,EAAA,kBA3GU,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAAA+G,EA0H1Bu9E,eAAiB,SAAC5gF,GAAuB,IAAAu5G,EACZlvG,GAAOmvG,iBAAxBlvG,EAD6BivG,EAC7BjvG,KAAMsE,EADuB2qG,EACvB3qG,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKoG,MAAM+uC,WACrDh8C,QAAQoS,EAAQrP,aAAe8D,EAAKoG,MAAMlK,cAC1C/C,QAAQoS,EAAQ5O,WAAaA,GAC7BxD,QAAQoS,EAAQ6qG,OAAS,IAC9Bp2G,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IAhIFzmF,EAmI1Bq2G,kBAAoB,SAACC,GAA6B,IAAAp8G,EACrBo8G,EAAkBtvG,GAAOuvG,cAAgBvvG,GAAO0+F,aAAjEz+F,EADsC/M,EACtC+M,KAAMsE,EADgCrR,EAChCqR,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKoG,MAAM+uC,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAKoG,MAAMlK,cAC/G8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IAtIFzmF,EAyI1Bw2G,YAAc,WAAM,IAAAC,EACSzvG,GAAO0vG,kBAAxBzvG,EADQwvG,EACRxvG,KAAMsE,EADEkrG,EACFlrG,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKoG,MAAM+uC,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAKoG,MAAMlK,cAC/G8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IA5IFzmF,EA+I1B22G,wBAA0B78F,aAAW,SAAC88F,EAAiCC,EAA2BC,GAC9F,IAAIl8B,GAAc,EACZ73D,EAAY8zF,EAAcr9G,IAAI,SAAAmqB,GAChC,IAAIozF,GAAa,EACbpzF,EAAS7B,UAAUvoB,OAAS,IAE5Bw9G,EAAaD,EAAoB7mF,MAAM,SAAU7N,GAC7C,IAAIH,EAAW0B,EAAS7B,UAAUK,KAAK,SAAA9e,GAAC,OAAIA,EAAEgf,QAAUD,EAAKX,IAAMpe,EAAE+gB,kBAAoBhC,EAAKgC,mBAC9F,YAAoBhoB,GAAZ6lB,GAAgCA,EAAS6E,YAIzD,IAAMkwF,EAAkB9qE,GAAgBvoB,EAASwoB,oBAAsB,GACjE3qB,EAAkBo1F,IAA2BjzF,EAASpC,cAAgBoC,EAASnC,kBAAoBw1F,IAAoBD,EACvHE,EACFtzF,EAASL,mBAAqBC,GAAY,0BAA2BC,GAAgBC,gBAErFo3D,EAAoB,GAkBxB,OAjBIr5D,IAAoBmC,EAASrC,oBAC7Bs5D,GAAc,EACdC,EAAQh0D,KAAK,mBAEbowF,IACAr8B,GAAc,EACdC,EAAQh0D,KAAK,8BAEblD,EAASpC,eACTq5D,GAAc,EACdC,EAAQh0D,KAAK,wBAEblD,EAASrC,oBACTs5D,GAAc,EACdC,EAAQh0D,KAAK,0BAGV9uB,OAAA0G,EAAA,EAAA1G,CAAA,GACA4rB,EADP,CAEIk3D,cAIR,MAAO,CACHD,cACA73D,eA1LkB/iB,EA8L1Bk3G,SAAW,WACPl3G,EAAK4G,SAAS,CAAEswG,UAAU,KA/LJl3G,EAkM1Bu/C,YAAc,WACVv/C,EAAK4G,SAAS,CAAEy4C,SAAU,QAnMJr/C,EA0M1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA1MjB79C,EA2M1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,EAAO63D,uBAAuB,KA3MhD11G,EA6M1Bm3G,oBAAsBr9F,aAAW,SAACiJ,GAC9B,OAAOA,EAAUxd,OAAO,SAAC6xG,EAAezzF,GAAhB,OAA6ByzF,EAAgBzzF,EAASf,WAAWrpB,QAAQ,KA9M3EyG,EAiN1Bq3G,yBAA2Bv9F,aAAW,SAACsI,GACnC,OAAOA,EAAKhB,KAAKlb,OAAO,SAAA7O,GAAC,OAAIA,EAAEs0B,qBAAuBt0B,EAAEs0B,sBAAwB3rB,EAAK2rB,wBAlN/D3rB,EAqN1Bs3G,sBAAwBx9F,aAAW,SAAC8gE,GAChC,IAAI28B,EAcJ,OATAA,EAAU38B,EAAc,CACpB,CAAEn5D,GAAI,UAAW06D,WAAW,EAAOlvE,MAAO,WAC1C,CAAEwU,GAAI,OAAQ06D,WAAW,EAAOlvE,MAAO,KAGvC,CACI,CAAEwU,GAAI,OAAQ06D,WAAW,EAAOlvE,MAAO,KAG/C,GAAA1P,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAWiI,EAAKs0G,kBAAhBv8G,OAAAgO,EAAA,EAAAhO,CAAqCw/G,MAjOrCv3G,EAAK+G,MAAQ,CACT82C,SAAS,EACTogC,eAAe,EACfg3B,2BAA2B,EAC3BE,gBAAgB,EAChBE,qBAAqB,EACrBE,sBAAsB,EACtBG,uBAAuB,EACvBhB,WAAY,GACZwC,UAAU,EACV73D,SAAU,MAbQr/C,mFAsBlBhH,KAAKoN,MAAM+a,cAAcC,KAAK7nB,QAAU,IACxCP,KAAK4pF,YACL5pF,KAAKoN,MAAMihD,iBAAiBnnD,KAAKlH,KAAK+pF,WAAY/pF,KAAK+pF,iDA8KnDn1D,GACR50B,KAAK4N,SAAS,CAAEy4C,SAAUzxB,EAAMmyB,iDAgC3B,IAAAv/C,EAAAxH,KAAAsV,EACgDtV,KAAKoN,MAAlDuhB,EADHrZ,EACGqZ,gBAAkCvG,EADrC9S,EACoB6S,cAAiBC,KACpCw1F,EAAyB59G,KAAKq+G,yBAAyBr+G,KAAKoN,MAAM03D,WAAWvkE,OAAS,EACtFsyB,EAA0B7yB,KAAKq+G,yBAAyBr+G,KAAKoN,MAAM03D,WAHpE05C,EAI8Bx+G,KAAK29G,wBAAwBC,EAAwBx1F,EAAMyK,GAAtF9I,EAJHy0F,EAIGz0F,UAAW63D,EAJd48B,EAIc58B,YACbw8B,EAAgBp+G,KAAKm+G,oBAAoB/1F,GACzC26D,EAAuB/iF,KAAKs+G,sBAAsB18B,GAClDhlB,IAAgBjuC,EAAgB+jD,eAChC+rC,EAAsB3D,GAAsB96G,KAAKoN,MAAMuhB,gBAAiB3uB,KAAKoN,MAAM44F,sBAAuBhmG,KAAKoN,MAAM03D,WAiB3H,OACI52D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,KACIv8C,EAAAhP,EAAAiP,cAAC88E,GAAD,CACItD,iBAAkBz5E,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CAAW7yC,MAAO0I,GAAOlN,OACvC7C,MAAO/G,KAAK+N,MAAM2tG,WAAa17G,KAAK+N,MAAM2tG,WAAa,GACvDn4D,SAAUvjD,KAAKy7G,mBACfxjG,OAAO,QACPrZ,QAAQ,WACRwkD,YAAY,iBACZ7C,WAAY,CAAE25D,eAAgBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAQ9I,EAAAhP,EAAAiP,cAACuwG,GAAAx/G,EAAD,CAAY6X,MAAM,gBAErFtB,MAAM,qBACN4xE,kBAAkB,mBAClBI,kBAAmBv5E,EAAAhP,EAAAiP,cAAC0vD,GAAA3+D,EAAD,MACnBqoF,sBAAuB3qB,EACvB4qB,oBAAqBxnF,KAAKmqF,iBAC1BzC,iBAAkBx5E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACdJ,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOowE,aAAcnwE,MAAM,UAAUL,QAAS1W,KAAKw9G,aAC9DtvG,EAAAhP,EAAAiP,cAACwwG,GAAAz/G,EAAD,MADJ,0BAGAgP,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOowE,aAAcnwE,MAAM,UAAU6nG,YAAa,SAAChqF,GAAiBptB,EAAK0/C,YAAYtyB,KAChG1mB,EAAAhP,EAAAiP,cAAC0wG,GAAA3/G,EAAD,MADJ,cAGAgP,EAAAhP,EAAAiP,cAAC2wG,GAAA,EAAD,CACIr2F,GAAG,cACH9oB,KAAM6M,QAAQxM,KAAK+N,MAAMs4C,UACzBA,SAAUrmD,KAAK+N,MAAMs4C,SACrB04D,aAAc,CACVC,SAAU,SACVC,WAAY,QAEhBvpG,QAAS1V,KAAKumD,YAAYc,KAAKrnD,OAE/BkO,EAAAhP,EAAAiP,cAACm5C,GAAA,EAAD,CAAUl5C,MAAO0I,GAAOooG,SAAUxoG,QAAS,kBAAMlP,EAAK61G,mBAAkB,KAAxE,UACCoB,GACGvwG,EAAAhP,EAAAiP,cAACm5C,GAAA,EAAD,CAAUl5C,MAAO0I,GAAOooG,SAAUxoG,QAAS,kBAAMlP,EAAK61G,mBAAkB,KAAxE,qBAGRnvG,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOowE,aAAcnwE,MAAM,UAAUL,QAAS1W,KAAKg8G,wBAC9D9tG,EAAAhP,EAAAiP,cAACmkF,GAAApzF,EAAD,MADJ,eAIJkoF,OAAQ,CACJ,CAAEhjD,OAAQra,EAAUxpB,OAAQq3B,KAAM,aAClC,CAAEwM,OAAQg6E,EAAexmF,KAAM,iBAGtC53B,KAAK+N,MAAM82C,SAAW32C,EAAAhP,EAAAiP,cAAC+8E,GAAA,EAAD,MACvBh9E,EAAAhP,EAAAiP,cAACm7E,GAAD,CACI3I,SAAU3gF,KAAK27G,qBACf54B,qBAAsBA,EACtB3tD,QAlER5tB,EAAKuG,MAAM2tG,WACJ3xF,EAAU7c,OAAO,SAAAyd,GAAQ,OAAIA,EAASiwC,SAAStoC,cAAcjpB,QAAQ7B,EAAKuG,MAAM2tG,WAAWppF,gBAAkB,IAGjHvI,EA+DKw6D,eAAgBvkF,KAAKukF,eACrB3D,QAAQ,SACRgB,YAAaA,EACb8D,eAAe,EACfzE,SAAUpvD,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAM2yF,cAC3D70B,WAAYz8D,EAAUxpB,OAAS,GAC/B+kF,YAAY,EACZiB,oBAnER/+E,EAAKuG,MAAM2tG,YAAc3xF,EAAUxpB,OAAS,EACpC2N,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY0oC,MAAM,UAASp4E,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAakP,MAAQ0I,GAAO1R,QAAvD,2CAGJ8I,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY0oC,MAAM,UAASp4E,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAakP,MAAQ0I,GAAO1R,QAAvD,8BAkEJ8I,EAAAhP,EAAAiP,cAACgxG,GAAD,CACIx/G,KAAMK,KAAK+N,MAAMk3E,cACjBv/B,SAAU1lD,KAAKoqF,gBACfjkC,OAAQnmD,KAAK+8G,cACb3C,iBAAkBp6G,KAAKoN,MAAMgtG,iBAC7B97D,iBAAkBt+C,KAAKoN,MAAMkxC,mBAEjCpwC,EAAAhP,EAAAiP,cAACixG,GAAD,CACIz/G,KAAMK,KAAK+N,MAAMkuG,0BACjBv2D,SAAU1lD,KAAKoqF,gBACfqwB,oBAAqBz6G,KAAKo8G,0BAC1BxB,qBAAsB56G,KAAKs8G,2BAC3B9B,sBAAuBx6G,KAAK+N,MAAMsuG,oBAClC1B,uBAAwB36G,KAAK+N,MAAMwuG,qBACnC1B,QAAS76G,KAAKk8G,2BACd/oB,UAAWnzF,KAAK+N,MAAMouG,eACtBzB,UAAW16G,KAAK+N,MAAM2uG,sBACtBv2D,OAAQnmD,KAAKw8G,6BA9VNjuG,IAAMC,eAqW3BsI,GAAiD,CACnDy2C,YAAa,CACTl/C,UAAW,SAEf24E,UAAW,CACPntE,aAAc,IAElBZ,OAAQ,CACJvB,WAAY,SACZI,SAAU,GACVC,WAAY,KAEhBkvE,UAAW,CACPlwE,MAAO9D,GAAQC,KAAKU,MAExBszE,aAAc,CACV9sE,YAAa,IAEjBmZ,MAAO,CACHxc,MAAO9D,GAAQC,KAAKM,MACpBsE,SAAU,WAEdqvE,UAAW,CACP1vE,WAAY,GACZL,cAAe,GACfsB,aAAc,GACd0B,YAAa,IAEjBrF,QAAS,CACL+C,SAAU,GACV+B,cAAe,EACfnB,aAAc,EACd3B,MAAO9D,GAAQ6B,OAAOX,SAE1B/O,MAAO,CACH0S,SAAU,GACV+B,cAAe,EACfnB,aAAc,EACd3B,MAAO9D,GAAQ+B,IAAIb,SAEvBvK,OAAQ,CACJwP,MAAO,IACPC,YAAa,GAEjB6lG,SAAU,CACNpnG,SAAU,GACVJ,WAAY,WAiCLolC,mBArBf,SAAyB/uC,GAErB,MAAO,CACHqsG,iBAFqB3nF,GAAyB1kB,GAAO,GAGrDoa,cAAepa,EAAM4c,SACrBgE,gBAAiB5gB,EAAMmhB,WACvB41C,UAAW/2D,EAAMqb,KACjB48E,sBAAuBj4F,EAAM6rE,kBAIrC,SAA4Bv6E,EAAe2oD,GACvC,MAAO,CACHqG,eAAgB,kBAAMhvD,EAASgvD,GAAerG,EAAS7L,UAAW6L,EAAS9kD,gBAC3E04G,eAAgB,SAACnzF,EAAIvM,GAAL,OAAc7c,ElIjd/B,SAAwB88C,EAAmBj5C,EAAsBulB,EAAYvM,GAChF,sBAAAhb,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA7B,KAAA,EAAA6B,EAAA5B,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiEkkB,GAAM,CAAE0gB,OAAQ,WAF5F,OAGC9pC,EAASivD,GAAe7lC,IACxBppB,EAASX,EAAe,GAAA6F,OAAI2X,EAAJ,YAAoB,aAJ7C7a,EAAA5B,KAAA,gBAAA4B,EAAA7B,KAAA,EAAA6B,EAAAsmD,GAAAtmD,EAAA,SAOChC,EAAS0B,EAAyBM,EAAAsmD,GAAK,iCAPxC,yBAAAtmD,EAAAxB,SAAAsB,EAAA,iBAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,GkIgd2C27G,CAAe5zD,EAAS7L,UAAW6L,EAAS9kD,aAAculB,EAAIvM,KACrGwyC,YAAa,SAAC/jC,GAAD,OAActrB,EAASqvD,GAAY1G,EAAS7L,UAAW6L,EAAS9kD,aAAcynB,KAC3FmyF,gBAAiB,SAACuC,GAAD,OAAWhgH,GLjeJ88C,EKie6B6L,EAAS7L,ULjenBj5C,EKie8B8kD,EAAS9kD,aLjejBy5G,EKie+B0C,ELhepG,eAAAvgH,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEgCypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,qBAAuE,CAAEimC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAU+vG,KAFlJ,OAAAp9G,EAAAmoD,KAGM1+B,QAAQ,SAAA4qE,QACexwF,IAApBwwF,EAAK/nE,YACLxsB,EAASX,EAAe,GAAA6F,OAAIqvF,EAAIh8D,KAAR,qBAAiC,YACzDhyB,OAAOjG,KAAKi0F,EAAI/nE,WAAY,SAAU,wBAGtCxsB,EAASX,EAAe,GAAA6F,OAAIqvF,EAAIh8D,KAAR,yCAAqD,cATtFr4B,EAAAE,KAAA,sBAAAF,EAAAC,KAAA,EAAAD,EAAAooD,GAAApoD,EAAA,SAcCF,EAASX,EAAgB,6BAA8B,UAdxDa,EAAAooD,GAAA,yBAAApoD,EAAAM,SAAAT,EAAA,iBAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,KADG,IAAyBk8C,EAAmBj5C,EAAsBy5G,GKkejEj+G,gBAAiB,SAACC,EAASC,GAAV,OAAsBS,EAASX,EAAgBC,EAASC,OAIlEk+C,CAA6Cs/C,YAAWif,KC1bxDx+D,gBACXvlC,aArCW,kBAAMM,aAAa,CAC9By4E,aAAc,CACV/1E,QAAS,cACTO,WAAY,SACZgC,eAAgB,YAEpByiG,OAAQ,CACJhlG,QAAS,cACTO,WAAY,SACZgC,eAAgB,UAEpB0iG,SAAU,CACNvoG,SAAU,WACVc,SAAU,GACVC,WAAY,IACZhB,MAAO9D,GAAQC,KAAKY,cAqBb+oC,CAjBY,SAACzvC,GAAiB,IAAAyhF,EACgD/kE,GAAgB1c,EAAM2c,WAA5Fy1F,EADsB3wB,EACjC5kE,UAAsCw1F,EADL5wB,EACNzkE,UAA2BF,EADrB2kE,EACqB3kE,WAAYC,EADjC0kE,EACiC1kE,WAClE3U,EAAsCpI,EAAtCoI,QAASg5E,EAA6BphF,EAA7BohF,cAAezkE,EAAc3c,EAAd2c,UAChC,OAAQ7b,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACCyb,EAAUxpB,OAAS,GAChB2N,EAAAhP,EAAAiP,cAACkgF,GAAD,CACI74E,QAASA,EACTyU,UAAWu1F,EAAiBC,EAC5Bv1F,WAAYA,EACZC,WAAYA,EACZqkE,cAAeA,OC+CpBl3E,gBA3CA,kBAAMM,aAAa,CAC9B6gD,KAAM,CACFn+C,QAAS,OACTlB,MAAO,OACPyB,WAAY,UAEhBuoC,YAAa,CACT7xC,OAAQ,KAEZmI,MAAO,CACHY,QAAS,OACT9C,QAAS,GACTqF,eAAgB,SAChBhC,WAAY,SACZu2E,cAAe,SACf7/E,OAAQ,IACRwF,MAAO9D,GAAQC,KAAKU,MAExB+N,SAAU,CACN/F,gBAAiB3I,GAAQC,KAAKI,MAElCosG,aAAc,CACV3oG,MAAO9D,GAAQC,KAAKW,QACpBgG,aAAc,EACd/B,SAAU,IAEdlE,KAAM,CACFsD,UAAW,EACXY,SAAU,GACV6nG,UAAW,MACXt3D,SAAU,GAEdh1B,KAAM,CACFvb,SAAU,GACV+B,cAAe,EACf9C,MAAO9D,GAAQ6B,OAAOX,SACvB6G,YAAa,CACZlD,SAAU,GACVX,YAAa,EACbJ,MAAO9D,GAAQ6B,OAAOC,YAIfuC,CA7EkB,SAAClK,GAAiB,IAAAqwC,EACmCrwC,EAA1EoI,eADuC,IAAAioC,EAC7B,GAD6BA,EACzBoH,EAA4Dz3C,EAA5Dy3C,QAASljC,EAAmDvU,EAAnDuU,SAAUyjC,EAAyCh4C,EAAzCg4C,SAAUw6D,EAA+BxyG,EAA/BwyG,WAAYltC,EAAmBtlE,EAAnBslE,eACzDtoD,IAAcsoD,EACpB,OACIxkE,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQijD,OAClBruC,GAAalc,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ5B,MAA/B,4FACd8+D,GACGxkE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ5B,MAA/B,gBAAkD1F,EAAAhP,EAAAiP,cAAA,SAAIukE,EAAer2C,OAAO,UAE7EjS,GAAa1c,GAAK+jB,+BACjBvjB,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIhkC,SAAUA,GAAYyI,EACtBrT,MAAM,UACNnY,QAAQ,YACR8X,QAAS0uC,EACTP,QAASA,GALb,qBAUHz6B,GAAa1c,GAAK+jB,8BACfvjB,EAAAhP,EAAAiP,cAACw3C,GAAD,CACI5uC,MAAM,UACNnY,QAAQ,YACR8X,QAASkpG,EACT/6D,QAASA,GAJb,oECkGDvtC,gBApDA,SAAC4rC,GACZ,OAAOtrC,aAAa,CAChB6gD,KAAM,CACFzhD,SAAU,YAEd6oG,MAAO,CACHtuG,OAAQ,WAEZuuG,UAAW,CACP9oG,SAAU,WACVhI,IAAK,EACLiI,MAAO,EACPsxE,OAAQ,IACR/wE,QAAS0rC,EAAMoF,QAAQ,GACvBj6C,UAAW,UAEfsT,SAAU,CACN/F,gBAAiBsnC,EAAMjwC,QAAQC,KAAK,MAExCU,KAAM,CACFkE,SAAU,UAEdmB,OAAQ,CACJY,aAAcqpC,EAAMoF,QAAQ,IAEhC5uC,MAAO,CACHlC,QAAS0rC,EAAMoF,QAAQ,GACvBy3D,UAAW,aACXzlG,QAAS,OACT82E,cAAe,SACfv0E,eAAgB,iBAEpBmjG,qBAAsB,CAClBvkG,cAAe,QAEnBwkG,cAAe,GAEfh1F,KAAM,CACFjU,SAAU,YAEdkpG,cAAe,CACXlpG,SAAU,WACV+1C,OAAQ,EACR30C,KAAM,GAEV+nG,gBAAiB,CACbloG,OAAQ,YACRT,QAAS,cAKNF,CAvGoB,SAAAxY,GAA2D,IAAxD8B,EAAwD9B,EAAxD8B,KAAM4U,EAAkD1W,EAAlD0W,QAASmM,EAAyC7iB,EAAzC6iB,SAAyCy+F,EAAAthH,EAA/BF,QACrDyhH,EAAwB,gBAD4D,IAAAD,EAArB,QAAqBA,GAClD5qG,EAAQqqG,WAAQz8G,EAElDk9G,EAAa/xG,IAAMuzC,YAAY,SAAA5gD,GAAmF,IAAhFg/G,EAAgFh/G,EAAhFg/G,cAAeC,EAAiEj/G,EAAjEi/G,gBAAiB/wG,EAAgDlO,EAAhDkO,OAAQgmB,EAAwCl0B,EAAxCk0B,QAAS3f,EAA+BvU,EAA/BuU,MACrF,OAAOvH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACFc,GAAUlB,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWkzC,mBAAK3zC,EAAQsqG,YAAa1wG,EAAOikB,KAAKnlB,EAAAhP,EAAAiP,cAAA,WAC9DD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWkzC,mBAAK3zC,EAAQ5B,MAAOmD,MAAM,iBAAiB3H,EAAOwE,OAE7E1F,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAWkzC,mBAAK3zC,EAAQkE,MAAO2mG,EAAhBthH,OAAA2pD,GAAA,EAAA3pD,CAAA,GAA8ByW,EAAQmM,SAAWA,KACnEzT,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GAAf,IACIhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWT,EAAQyV,MACjC/c,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKqX,UAAWkzC,mBAAK3zC,EAAQyD,SAAUxD,IAE9D0qG,GAAmBjyG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWkzC,mBAAK3zC,EAAQyV,OAC1D/c,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACInnC,QAAS,CACLijD,KAAMjjD,EAAQ2qG,iBAElBzpG,QAASypG,EAAgBzpG,SAC3BypG,EAAgB9sF,KALlB,OAK8B8sF,EAAgBvsG,QAGrDssG,EAAgBhyG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GAC5BhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWkzC,mBAAK3zC,EAAQyV,KAAMzV,EAAQyqG,gBACpD/xG,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACI/9C,QAAQ,WACRqX,UAAWT,EAAQ0qG,cACnBxpG,QAASwpG,EAAcxpG,SACzBwpG,EAAc7sF,KAJhB,OAI4B6sF,EAActsG,OAE9C1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI8mF,EAAgB,EAAI,GAAIjqG,UAAWkzC,mBAAK3zC,EAAQyV,KAAMzV,EAAQ4f,UACxEA,SAEChyB,EACR88G,OAA0B98G,EAAVgyB,KAG3B,CAAC5f,EAASmM,EAAU0+F,IAEvB,OAAOnyG,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWkzC,mBAAK3zC,EAAQijD,KAAM4nD,IACtCnyG,EAAAhP,EAAAiP,cAAC+jF,GAAAhzF,EAAD,CACIizF,QAASvxF,EACTwxF,sBAAoB,EACpBx6D,KAAK,OACL3hB,UAAWT,EAAQ4tC,aAElBxiD,GAAQ0/G,EAAW1/G,OC8EjBi8C,gBACXvlC,aApDW,SAAC4rC,GACZ,OAAOtrC,aAAa,CAChBhE,KAAM,CACFkE,SAAU,UAEd3D,QAAS,CACL4C,MAAOmsC,EAAMjwC,QAAQkB,QAAQwuC,MAEjCokB,QAAS,CACLhwD,MAAOmsC,EAAMjwC,QAAQylD,UAAU/V,MAEnCtvB,KAAM,CACFvb,SAAU,OACV+B,cAAe,GAEnB0mG,cAAe,CACXhvG,OAAQ2xC,EAAMoF,QAAQ,GACtBlvC,MAAO8pC,EAAMoF,QAAQ,IAEzBp+B,WAAY,CACRnT,MAAOmsC,EAAMjwC,QAAQkB,QAAQf,OAEjC4B,IAAK,CACD+B,MAAOmsC,EAAMjwC,QAAQ7N,MAAMu9C,MAE/B69D,KAAM,CACFzoG,WAAY,QAEhB0oG,aAAc,CACV1pG,MAAO9D,GAAQC,KAAKU,KACpB0G,QAAS,OACTjM,UAAW,SACXwM,WAAY,SACZgC,eAAgB,UAEpB6jG,eAAgB,CACZ3pG,MAAO9D,GAAQC,KAAKU,KACpB0G,QAAS,OACTjM,UAAW,OACXwM,WAAY,OACZgC,eAAgB,QAEpBsrC,YAAa,CACT52C,OAAQ,GACR+I,QAAS,mBACTtL,KAAM,OAQdotF,IAFWv/C,CA/He,SAACzvC,GAO3B,IACMuzG,EAAiB,kBAAMzyG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GAClDp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,GACN/c,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,CAAkB5xC,KAAM,MAE5BtC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,GACN/c,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,gBAAgBd,UAAWkzC,mBAAK3zC,EAAQkrG,iBAA1D,yDAIFE,EAAe,kBAAM1yG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,KACvBjrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,GACN/c,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYtjC,QAAQ,SAASvD,MAAM,iBAC/B7I,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAS6X,MAAM,QAAQd,UAAWT,EAAQ6d,OAD9C,wJAQF+B,EAAU,kBAAMlnB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACF,IAAfuyG,EAAuB3yG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACpBJ,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAS+W,UAAWkzC,mBAAK3zC,EAAQ5B,KAAM4B,EAAQR,OAD3B,OAGpB9G,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYtjC,QAAQ,SAASrE,UAAWkzC,mBAAK3zC,EAAQ5B,KAAM4B,EAAQR,IAAKQ,EAAQgrG,OAAhF,sBACEp9G,EACN8K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWkzC,mBAAK3zC,EAAQ5B,MAAOmD,MAAM,iBAAjD,8DAjCwC0mC,EAoCkCrwC,EAAtEoI,eApCoC,IAAAioC,EAoC1B,GApC0BA,EAAAqjE,EAoCkC1zG,EAAxDy3C,eApCsB,IAAAi8D,KAoCLC,EAAuC3zG,EAAvC2zG,iBApCKC,EAoCkC5zG,EAArBuU,gBApCb,IAAAq/F,KAqCtCH,EAAmC,IAAtBzzG,EAAM6zG,YACnBC,EAAyB9zG,EAAMwrE,gCAAkCxrE,EAAM+zG,oBAC7E,OACIjzG,EAAAhP,EAAAiP,cAACizG,GAAD,CACIxiH,QAAQ,QACRgC,KAAOikD,IAAYk8D,OAAoB39G,EAAY,CAC/CqS,MAAO,qBACPyqG,cAAev+F,OAAWve,EAAagK,EAAMwrE,+BAAiC,CAC1EhlE,KAAM,eACNyf,KAAM6tF,EAAyBhzG,EAAAhP,EAAAiP,cAAA,OAAKorB,IAAK8nF,KAAWprG,UAAWkzC,mBAAK3zC,EAAQ2yC,aAAc3uB,IAAI,eAAkBtrB,EAAAhP,EAAAiP,cAACmzG,GAAApiH,EAAD,MAChHwX,QA9ChB,WAAuC,IAAAqvF,EACV/3F,GAAO6lF,iBAAxB5lF,EAD2B83F,EAC3B93F,KAAMsE,EADqBwzF,EACrBxzF,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAY/uC,EAAM+uC,WAAWh8C,QAAQoS,EAAQrP,aAAekK,EAAMlK,cACrGkK,EAAMioD,QAAQxnC,KAAK4/D,UA4CPrqF,EACJgM,OAAQuS,OAAWve,EAAagK,EAAMwrE,+BAAiC,CACnEhlE,KAAM,GACNyf,KAAMwtF,EAAa3yG,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,CAAc+W,UAAWkzC,mBAAK3zC,EAAQuxD,QAASvxD,EAAQ+qG,iBAAqBryG,EAAAhP,EAAAiP,cAACozG,GAAD,CAAgBtrG,UAAWkzC,mBAAK3zC,EAAQ0U,WAAY1U,EAAQ+qG,uBAC3Jn9G,EACJgyB,QAASzT,EA9CSzT,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,gBAAgBd,UAAWkzC,mBAAK3zC,EAAQirG,eAA1D,mEAwDvBrzG,EAAMwrE,+BACExjD,IAEHhoB,EAAMo0G,SACHZ,IAGAD,KAfPh/F,SAAUA,EACVnM,QAAS,CACL0qG,cAAe/2D,mBAAK3zC,EAAQrB,wDC7DtCstG,eAGF,SAAAA,EAAYr0G,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAyhH,IACtBz6G,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA0iH,GAAAl0G,KAAAvN,KAAMoN,KAHVs0G,sBAAwB,qCAEE16G,EAD1B26G,oBAAsB,oCACI36G,EAmB1Bo+C,SAAW,WACPp+C,EAAKoG,MAAMw0G,WAAW56G,EAAK+G,MAAMq9B,UAAWpkC,EAAK+G,MAAM8gB,UApBjC7nB,EAwB1B66G,sBAAwB,SAACz2E,GACrB,IAAM02E,EAAelzF,IAAOwc,GAAWpc,QAAQ,OACzC+yF,EAAanzF,IAAO5nB,EAAK+G,MAAM8gB,SAASG,QAAQ,OAElD8yF,EAAa5iE,UACT6iE,EAAW7iE,YACP6iE,EAAWhzF,KAAK+yF,EAAc,SAAW,IACzCA,EAAa9yF,QAAQ,OACrBhoB,EAAK4G,SAAS,CACVw9B,UAAW02E,EACXE,eAAgBF,EAAa7kF,QAAQj2B,EAAK+G,MAAM8gB,SAAW7nB,EAAK06G,2BAAwBt+G,EACxF6+G,kBAAc7+G,KAKlB4D,EAAK4G,SAAS,CACVo0G,eAAgB,+CAChBC,kBAAc7+G,KAK1B4D,EAAK4G,SAAS,CACVo0G,eAAgB,qBAChBC,kBAAc7+G,KAjDA4D,EAuD1Bk7G,oBAAsB,SAACrzF,GACnB,IAAMkzF,EAAanzF,IAAOC,GAASG,QAAQ,OACrC8yF,EAAelzF,IAAO5nB,EAAK+G,MAAMq9B,WAAWpc,QAAQ,OAEtD+yF,EAAW7iE,UACP4iE,EAAa5iE,YACT6iE,EAAWhzF,KAAK+yF,EAAc,SAAW,GACzC96G,EAAK4G,SAAS,CACVihB,QAASkzF,EACTE,aAAcF,EAAWr9E,SAAS19B,EAAK+G,MAAMq9B,WAAapkC,EAAK26G,yBAAsBv+G,EACrF4+G,oBAAgB5+G,IAKpB4D,EAAK4G,SAAS,CACVq0G,aAAc,gDACdD,oBAAgB5+G,KAK5B4D,EAAK4G,SAAS,CACVq0G,aAAc,mBACdD,oBAAgB5+G,KA/EF4D,EAoF1Bm7G,WAAa,WACT,SAAUn7G,EAAK+G,MAAMi0G,iBAAkBh7G,EAAK+G,MAAMk0G,eAlFlDj7G,EAAK+G,MAAQ,CACTq9B,UAAWpkC,EAAKoG,MAAMg+B,WAAaxc,MAASI,QAAQ,OACpDH,QAAS7nB,EAAKoG,MAAMyhB,SAAWD,MAASjF,IAAI,EAAG,SAASmF,MAAM,QAL5C9nB,kFASP8vD,QACe1zD,IAAzBpD,KAAKoN,MAAMg+B,gBAAkDhoC,IAAvBpD,KAAKoN,MAAMyhB,SACjD7uB,KAAKoN,MAAMyhB,UAAYioC,EAAUjoC,SAAW7uB,KAAKoN,MAAMg+B,YAAc0rB,EAAU1rB,WAChFprC,KAAK4N,SAAS,CACVw9B,UAAWprC,KAAKoN,MAAMg+B,UACtBvc,QAAS7uB,KAAKoN,MAAMyhB,2CA0EvB,IAAArnB,EAAAxH,KAAAuV,EACoBvV,KAAKoN,MAAtBoI,eADH,IAAAD,EACa,GADbA,EAEL,OACIrH,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMzN,KAAM+V,QAAS1V,KAAKoN,MAAMs4C,SAAUjwC,MAAM,oBACnEvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAeL,UAAWT,EAAQkoC,aAC9BxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,kEACAzvC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACD,UAAWT,EAAQ4sG,QAAS95D,QAAS,GACjDp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACg1C,GAAA,EAAD,CACIlvC,MAAM,aACNlN,MAAO/G,KAAK+N,MAAMq9B,UAClBmY,SAAUvjD,KAAK6hH,sBACf5/D,OAAQ,SAAA+wC,GAAE,OAAIxrF,EAAKq6G,sBAAsB7uB,EAAGzpC,OAAOxiD,QACnD60B,KnIlID,amImICS,OAAO,IACP+mB,YAAY,aACZh+C,QAASpF,KAAK+N,MAAMi0G,eACpB7hE,WAAYngD,KAAK+N,MAAMi0G,eACvBK,QAASriH,KAAK+N,MAAM8gB,QACpB60B,aAAa,cAGrBx1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACg1C,GAAA,EAAD,CACIlvC,MAAM,WACNlN,MAAO/G,KAAK+N,MAAM8gB,QAClB00B,SAAUvjD,KAAKkiH,oBACfjgE,OAAQ,SAAA+wC,GAAE,OAAIxrF,EAAK06G,oBAAoBlvB,EAAGzpC,OAAOxiD,QACjD60B,KnIjJD,amIkJCS,OAAO,IACP+mB,YAAY,aACZh+C,QAASpF,KAAK+N,MAAMk0G,aACpB9hE,WAAYngD,KAAK+N,MAAMk0G,aACvB5+D,QAASrjD,KAAK+N,MAAMq9B,UACpBsY,aAAa,gBAK7Bx1C,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAKoN,MAAMs4C,SAAU3uC,MAAM,WAA5C,UACA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,sBACH/R,QAAS1W,KAAKolD,SACdruC,MAAM,UACN4K,SAAU3hB,KAAKmiH,cAJnB,sBApImB5zG,IAAMC,eA8J9B8I,QAZkC,CAC7C8qG,QAAS,CACLlrG,UAAW,GACX2C,aAAc,GACdxL,UAAW,UAEfi0G,eAAgB,CACZnrG,YAAa,GACbkC,WAAY,IAIL/B,CAAmBmqG,yBCSnB5kE,gBACXvlC,aAtCW,SAAC4rC,GACZ,OAAOtrC,aAAa,CAChBhE,KAAM,CACFkE,SAAU,UAEd3D,QAAS,CACL4C,MAAOmsC,EAAMjwC,QAAQkB,QAAQwuC,MAEjCokB,QAAS,CACLhwD,MAAOmsC,EAAMjwC,QAAQylD,UAAU/V,MAEnC3tC,IAAK,CACD+B,MAAOmsC,EAAMjwC,QAAQ7N,MAAMu9C,MAE/B69D,KAAM,CACFzoG,WAAY,QAEhBwqG,gBAAiB,CACbxrG,MAAOmsC,EAAMjwC,QAAQkB,QAAQwuC,KAC7B6/D,UAAW,CACP3mG,OAAQ,UACRk6C,eAAgB,cAGxB0qD,aAAc,CACV1pG,MAAO9D,GAAQC,KAAKU,KACpB0G,QAAS,OACTjM,UAAW,SACXwM,WAAY,SACZgC,eAAgB,UAEpB4lG,aAAc,CACV5oG,aAAcqpC,EAAMoF,QAAQ,QAOpCxL,YACI,SAAC/uC,GAAD,MAAY,CACR20G,gBAAiB30G,EAAMmhB,WAAWkc,WAAar9B,EAAMmhB,WAAWL,QAAU,CACtEyc,MAAOv9B,EAAMmhB,WAAWkc,UACxBG,IAAKx9B,EAAMmhB,WAAWL,cACtBzrB,EACJ8rB,WAAYnhB,EAAMmhB,aAEtB,SAAC7vB,GAAD,MAAoB,CAChBX,gBAAiB,SAACC,EAAiBC,GAAlB,OAA+CS,EAASX,EAAgBC,EAASC,KAClGotF,iBAAkB,SAAC98D,GAAD,OAAgB7vB,EAAS2sF,GAAiB98D,QAGpEktE,IAfWv/C,CA3Je,SAACzvC,GAAiB,IAAAqwC,EAUxCrwC,EARAoI,eAFwC,IAAAioC,EAE9B,GAF8BA,EAAAqjE,EAUxC1zG,EAPAy3C,eAHwC,IAAAi8D,KAAAE,EAUxC5zG,EANAuU,gBAJwC,IAAAq/F,KAKxC0B,EAKAt1G,EALAs1G,gBACAxzF,EAIA9hB,EAJA8hB,WACAmmC,EAGAjoD,EAHAioD,QACA32D,EAEA0O,EAFA1O,gBACAstF,EACA5+E,EADA4+E,iBATwCtqC,EAYlBnzC,IAAMozC,SAAS,CACrCghE,gBAAgB,EAChBC,kBAAkB,EAClBC,yBAAyB,IAfejhE,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAYrC3zC,EAZqC6zC,EAAA,GAY9Bh0C,EAZ8Bg0C,EAAA,GAkBpBkhE,EAA6D/0G,EAA7E40G,eAA+BC,EAA8C70G,EAA9C60G,iBAAkBC,EAA4B90G,EAA5B80G,wBAanDE,EAAiB,WAAM,IAAAC,EACAh1G,GAAOi1G,oBAAxBh1G,EADiB+0G,EACjB/0G,KAAMsE,EADWywG,EACXzwG,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYjtB,EAAWnO,QAAQ0H,IAAItoB,QAAQoS,EAAQrP,aAAegsB,EAAWzG,IAChH4sC,EAAQxnC,KAAK4/D,IAiBjB,OAAQv/E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACJJ,EAAAhP,EAAAiP,cAACizG,GAAD,CACIxiH,QAAQ,QACRgC,KAAOikD,GAAW+9D,OAAoBx/G,EAAY,CAC9CqS,MAAO,yBACPyqG,cAAev+F,OAAWve,EAAY,CAClCwQ,KAAM,oBACNyf,KAAMnlB,EAAAhP,EAAAiP,cAAC+0G,GAAAhkH,EAAD,MACNwX,QAtBc,WACrBgsG,EAODK,IANAn1G,EAAS7O,OAAA0G,EAAA,EAAA1G,CAAA,GACFgP,EADC,CAEJ80G,yBAAyB,EACzBF,gBAAgB,OAmBhBxC,gBAAiBx+F,OAAWve,EAAY,CACpCwQ,KAAM8uG,EAAe,GAAAn+G,OAAMqqB,IAAO8zF,EAAgBp3E,OAAOjP,OAAO,KAA3C,OAAA93B,OAAqDqqB,IAAO8zF,EAAgBn3E,KAAKlP,OAAO,MAAS,uBACtHhJ,KAAMnlB,EAAAhP,EAAAiP,cAACg1G,GAAAjkH,EAAD,MACNwX,QAAS,kBAAM9I,EAAS7O,OAAA0G,EAAA,EAAA1G,CAAA,GACjBgP,EADgB,CAEnB40G,gBAAgB,OAGxBvtF,QAASzT,EApBSzT,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,gBAAgBd,UAAWkzC,mBAAK3zC,EAAQirG,eAA1D,+EA7BRvyG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAClBJ,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQitG,cACpBv0G,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWkzC,mBAAK3zC,EAAQ5B,MAAOmD,MAAM,iBAAjD,qEACJ7I,EAAAhP,EAAAiP,cAACi1G,GAAAlkH,EAAD,CACI0U,KAAI,GAAArP,OAAKqB,OAAOC,SAAS2C,OAArB,wBAAAjE,OAAkD8+G,KAAKn0F,EAAWnO,QAAQ0H,GAAK,IAAMyG,EAAWzG,IAAhG,SACJs4D,OAAQ,kBAAMriF,EAAgB,aAAc,aAC5CwP,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYtjC,QAAQ,SAASrE,UAAWkzC,mBAAK3zC,EAAQ5B,KAAM4B,EAAQ+sG,kBAAnE,kBA6CA5gG,SAAUA,EACVnM,QAAS,CACL0qG,cAAe/2D,mBAAK3zC,EAAQrB,SAC5BgsG,gBAAiBh3D,mBAAK3zC,EAAQrB,YAGtCjG,EAAAhP,EAAAiP,cAACm1G,GAAD,CACI3jH,KAAMmjH,EACN13E,UAAWs3E,EAAkBA,EAAgBp3E,WAAQloC,EACrDyrB,QAAS6zF,EAAkBA,EAAgBn3E,SAAMnoC,EACjDsiD,SAAU,WACN93C,EAAS7O,OAAA0G,EAAA,EAAA1G,CAAA,GACFgP,EADC,CAEJ40G,gBAAgB,EAChBE,yBAAyB,MAGjCjB,WAAU,eAAA9iH,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAE,SAAAC,EAAOksC,EAAOC,GAAd,IAAAogD,EAAA,OAAA1sF,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACRmO,EAAS7O,OAAA0G,EAAA,EAAA1G,CAAA,GACFgP,EADC,CAEJ40G,gBAAgB,EAChBC,kBAAkB,KAEhBj3B,EANE5sF,OAAA0G,EAAA,EAAA1G,CAAA,GAODmwB,EAPC,CAQJxP,cAAewP,EAAWxP,cAAgBwP,EAAWxP,mBAAgBtc,EACrEmtB,iBAAkBrB,EAAWqB,iBAAmBrB,EAAWqB,iBAAiB4L,MAAME,cAAWj5B,EAC7FsvE,eAAgBxjD,EAAWwjD,eAAiBxjD,EAAWwjD,eAAev2C,MAAME,cAAWj5B,EACvFgoC,UAAWxc,IAAO0c,GAAOnP,MAAMC,OAAM,GAAOpN,QAAQ,OAAOqN,SAC3DxN,QAASD,IAAO2c,GAAKpP,MAAMC,OAAM,GAAOpN,QAAQ,OAAOqN,WAZnD98B,EAAAE,KAAA,EAeFusF,EAAiBL,GAff,OAgBR/9E,EAAS7O,OAAA0G,EAAA,EAAA1G,CAAA,GACFgP,EADC,CAEJ60G,kBAAkB,EAClBD,gBAAgB,EAChBE,yBAAyB,KAEzBA,GACAE,IAvBI,wBAAAxjH,EAAAM,SAAAT,MAAF,gBAAAU,EAAAyB,GAAA,OAAAzC,EAAAiB,MAAAC,KAAAC,YAAA,QC1FhBsjH,eACF,SAAAA,EAAYn2G,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAujH,IACtBv8G,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAwkH,GAAAh2G,KAAAvN,KAAMoN,KAaVg2E,WAAa,SAACt8E,GACVE,EAAK4G,SAAS,SAAAmpD,GACV,IAAMysD,EAAmBzsD,EAAU0sD,cAAcn6G,QAC3Co6G,EAAkB18G,EAAKoG,MAAMu2G,WAAYr6G,QAsB/C,OApBAk6G,EAAiBx6F,QAAQ,SAAAk6D,GACjBA,EAAIz6D,KAAO3hB,GACW,IAAlBo8E,EAAIC,WAAyC,SAAlBD,EAAIC,WAC/BD,EAAIC,UAAY,MAChBugC,EAAgBp3G,KAAKiqB,GAAczvB,GAAK,KACf,QAAlBo8E,EAAIC,YACXD,EAAIC,UAAY,OAChBugC,EAAgBp3G,KAAKiqB,GAAczvB,GAAK,KAG5Co8E,EAAIC,WAAY,IAKxBugC,EAAgB16F,QAAQ,SAAA3qB,GACpB,IAAM48G,EAAIlkD,EAAU6sD,aAAaz6F,KAAK,SAAA06F,GAAG,OAAIA,EAAIp7F,KAAOpqB,EAAEoqB,KAC1DpqB,EAAEy9D,WAAWm/C,GAAIA,EAAEn/C,WAGhB/8D,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEI0sD,cAAeD,EACfI,aAAcF,OA1CA18G,EA+C1B88G,YAAc,SAACC,EAAkBC,EAAqB3lH,GAClD,OAAI0lH,EACOhlH,OAAA0G,EAAA,EAAA1G,CAAA,GACAV,EADP,CAEIy9D,SAAUkoD,IAIPjlH,OAAA0G,EAAA,EAAA1G,CAAA,GAAMV,IAvDK2I,EA2D1Bi9G,gBAAkB,SAACjxB,GACf,IACMkxB,EADOl9G,EAAK+G,MAAM61G,aACkCpjH,IAAI,SAACnC,EAAGwuB,GAC9D,OAAO7lB,EAAK88G,YAAYzlH,EAAEoqB,KAAOuqE,EAAGzpC,OAAOxiD,MAAOisF,EAAGzpC,OAAOxF,QAAS1lD,KAEzE2I,EAAK4G,SAAS,CAAEg2G,aAAcM,KAhERl9G,EAmE1Bm9G,kBAAoB,WAChBn9G,EAAKoG,MAAM+4C,OAAOn/C,EAAK+G,MAAM61G,aAAa12G,OAAO,SAAA+tG,GAAC,OAAmB,IAAfA,EAAEn/C,aApElC90D,EAuE1Bo9G,wBAA0BtjG,aAAW,SAAC8iG,GAAD,OAAiDA,EAAa12G,OAAO,SAAA+tG,GAAC,OAAmB,IAAfA,EAAEn/C,WAAmBv7D,SArEhIyG,EAAK+G,MAAQ,CACT01G,cAAe,CACX,CAAEh7F,GAAI,SAAU06D,WAAW,EAAOlvE,MAAO,YACzC,CAAEwU,GAAI,YAAa06D,WAAW,EAAOlvE,MAAO,WAC5C,CAAEwU,GAAI,UAAW06D,WAAW,EAAOlvE,MAAO,WAE9CwhD,YAAY,EACZmuD,aAAcx2G,EAAMu2G,WAAYr6G,SATdtC,wEAyEjB,IAAAQ,EAAAxH,KAAAuV,EACoBvV,KAAKoN,MAAtBoI,eADH,IAAAD,EACa,GADbA,EAECksE,EAAazhF,KAAK+N,MAAM0nD,WAAajgD,EAAQmG,MAAQ,GACrD0oG,EAAUrkH,KAAKoN,MAAMu2G,WAAa3jH,KAAKoN,MAAMu2G,WAAWpjH,OAAS,EAAI,EAC3E,OACI2N,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMzN,KAAM+V,QAAS1V,KAAKoN,MAAMs4C,SAAUjwC,MAAM,uBACnEvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,gEAGAzvC,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwxE,aACfp6E,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOjsD,MAAO0I,GAAOwyE,MAAO9xE,QAAS,YACjCtJ,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACKv6D,KAAK+N,MAAM01G,cAAcjjH,IAAI,SAAA8jH,GAAM,OAChCp2G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOytG,kBAAmBz9G,IAAKw9G,EAAO77F,GAAI/R,QAAS,kBAAMlP,EAAK47E,WAAWkhC,EAAO77F,KAAKu9D,cAAes+B,EAAOnhC,WACzHj1E,EAAAhP,EAAAiP,cAACg4E,GAAA,EAAD,CACIjP,QAA6B,IAArBotC,EAAOnhC,UACfA,WAAgC,IAArBmhC,EAAOnhC,eAAsB//E,EAAYkhH,EAAOnhC,WAE1DmhC,EAAOrwG,YAM5B/F,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKz6D,KAAK+N,MAAM61G,aAAapjH,IAAI,SAAC6jD,EAAKv3C,GAAN,OACzBoB,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CACItkD,UAAWwrE,EACX36E,IAAKu9C,EAAI57B,IAETva,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAASM,EAAIyX,SACbvY,SAAU/7C,EAAKy8G,gBACfltG,MAAM,YACNhQ,MAAOs9C,EAAI57B,MAGnBva,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0tG,WAAYngE,EAAIogE,YAE9Cv2G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0tG,WAAYngE,EAAIqgE,iBAStEx2G,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAKoN,MAAMs4C,SAAU3uC,MAAM,WAA5C,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAKmkH,kBAAmBptG,MAAM,WAA/C,qBAnImBxI,IAAMC,eA2IvCsI,GAA2C,CAC7C6tG,oBAAqB,CACjBztG,UAAW,GACX2C,aAAc,GACd4kD,aAAc,SACdpwD,UAAW,UAEfsN,MAAO,CACHC,gBAAiB3I,GAAQC,KAAKC,QAC9B0I,OAAQ,WAEZytE,MAAO,CACHvC,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,QAEXkvE,YAAa,CACT50E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BqzE,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,OACP+E,aAAc,EACd7D,QAAS,eACTpD,UAAW,GACXwiB,UAAW,KAEfkrF,SAAU,CACN79B,UAAW,OACXwB,OAAQ,IACRzsE,SAAU,QAEd+oG,eAAgB,CACZnxG,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BqzE,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,OACP0C,SAAU,OACVqC,aAAc,EACd7D,QAAS,eACTpD,UAAW,IAEfmtG,QAAS,CACL9mG,aAAc,GAElBunG,eAAgB,CACZz2G,UAAW,SACXy4E,WAAY,UAEhBy9B,kBAAmB,CACfl2G,UAAW,OACXy4E,WAAY,UAEhB09B,UAAW,CACPztG,MAAO9D,GAAQC,KAAKY,UAExBixG,sBAAuB,CACnBC,MAAO,QACP9tG,UAAW,KAGJI,gBAAWR,GAAXQ,CAAmBisG,IC6B5BzsG,GAAiD,CACnD+mG,cAAe,CACXzjG,YAAa,QAEjB6qG,cAAe,CACXprG,aAAc,QAElBqrG,UAAW,CACP3zG,OAAQ,GACRyF,SAAU,YAEd0iD,SAAU,CACN3iD,MAAO9D,GAAQiB,KAAKQ,MAExB4zC,QAAS,CACLjvC,WAAY,SAIL8rG,GAvPgB,SAAC/3G,GAoN5B,OACIc,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAM+4C,OAAQ1wC,MATjDrI,EAAMg4G,qBAA+C,IAAxBh4G,EAAMi4G,cAC3B,kCAGA,yBAMRn3G,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,KAnNZ,WACI,IAAI2nE,EAAmBl4G,EAAMk4G,iBAAiB/kH,OAAS,IAAM6M,EAAMkxC,iBAC/DinE,EAA0Bn4G,EAAMg4G,qBAAuBh4G,EAAMg4G,oBAAoB7kH,OAAS,EAC1FilH,EAAwC,GAAvBp4G,EAAMi4G,cACrBI,EAAqBH,GAAqBC,IAA4BC,GAAoBp4G,EAAMs4G,kBAAoBt4G,EAAMs4G,iBAAiBnlH,OAAS,EACpJolH,EAAyBv4G,EAAMw4G,kBAAkBliH,cACjDmiH,EAAyBz4G,EAAM04G,kBAAkBpiH,cACnDqiH,EAAe,GACfC,EAAe,GAWnB,OAVI54G,EAAMmc,sBACNnc,EAAM64G,0BAA0Bl3F,KAAKH,MAAU,SAAW,IAC1DxhB,EAAMmc,qBAAqBuD,IAAIpL,GAAuBiD,+BAClDohG,EAAe,MAEnB34G,EAAMmc,sBACNnc,EAAM84G,0BAA0Bn3F,KAAKH,MAAU,SAAW,IAC1DxhB,EAAMmc,qBAAqBuD,IAAIpL,GAAuB6D,+BAClDygG,EAAe,MAEnBP,EAEIv3G,EAAAhP,EAAAiP,cAAA,WACKf,EAAMshF,YADX,qJAEM82B,GACEt3G,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACAJ,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOmuG,eAAe/2G,EAAAhP,EAAAiP,cAAA,2DAGnCf,EAAMs4G,iBAAiBnlH,OAAS,GAC7B2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,mDACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsuG,qBACdh4G,EAAMs4G,iBAAiBllH,IAAI,SAACyqB,EAAMne,GAAP,OACxBoB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAG,GAAAvC,OAAKuI,EAAL,KAAAvI,OAAc0mB,GAAQ7c,MAAO0I,GAAOmuG,eAAe/2G,EAAAhP,EAAAiP,cAAA,cAAS8c,QAKlF7d,EAAMk4G,iBAAiB/kH,OAAS,IAAM6M,EAAMkxC,kBAC1CpwC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,6DACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO+mG,eACdzwG,EAAMk4G,iBAAiB9kH,IAAI,SAACyqB,EAAMne,GAAP,OACxBoB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAG,GAAAvC,OAAKuI,EAAL,KAAAvI,OAAc0mB,GAAQ7c,MAAO0I,GAAOmuG,eAAe/2G,EAAAhP,EAAAiP,cAAA,cAAS8c,QAKnF7d,EAAMg4G,qBAAuBh4G,EAAMg4G,oBAAoB7kH,OAAS,GAC7D2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,oDACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO+mG,eACdzwG,EAAMg4G,oBAAoB97G,MAAM,EAAG,GAAG9I,IAAI,SAAC2lH,EAAoBr5G,GAArB,OACvCoB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAG,GAAAvC,OAAKuI,EAAL,KAAAvI,OAAc4hH,GAAsB/3G,MAAO0I,GAAOmuG,eACtD/2G,EAAAhP,EAAAiP,cAAA,cAASg4G,EAAmBC,kBAC3BD,EAAmBE,kBACbn4G,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOwxC,SAApB,IAA+B69D,EAAmBE,iBAAlD,QAIdj5G,EAAMg4G,oBAAoB7kH,OAAS,GAAK2N,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmuG,eAAe/2G,EAAAhP,EAAAiP,cAAA,mBAAWf,EAAMg4G,oBAAoB7kH,OAAS,EAA9C,YAvC3F,sIAgDA2N,EAAAhP,EAAAiP,cAAA,6BACmBD,EAAAhP,EAAAiP,cAAA,kBAAUf,EAAMshF,YAAhB,KADnB,gNAGIxgF,EAAAhP,EAAAiP,cAAA,yDAEEk4B,GAA6B,sBAAuBj5B,EAAMk5G,mBACxDp4G,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAO4iD,YAE5BxrD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAf,+LAIJlrB,EAAAhP,EAAAiP,cAAA,YAGPf,EAAMm5G,uBACHr4G,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAO4iD,YAE5BxrD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAf,iPAEIlrB,EAAAhP,EAAAiP,cAAA,WAFJ,+FAKJD,EAAAhP,EAAAiP,cAAA,YAGPf,EAAMo5G,gBAAgBhmH,IAAI,SAACimH,GACxB,OAAIpgF,GAA6BogF,EAAYr5G,EAAMk5G,iBAAkB,UAC1Dp4G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GAClBhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAO4iD,YAE5BxrD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAf,6NAMJ,IAKPhsB,EAAMs5G,cAAcnmH,OAAS,GAC1B2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,+MAEAD,EAAAhP,EAAAiP,cAAA,UACKf,EAAMs5G,cAAclmH,IAAI,SAACksC,GAC1B,OAAOx+B,EAAAhP,EAAAiP,cAAA,UACFu+B,QAUhBt/B,EAAMmc,sBACa,IAAhBw8F,GACG1/E,GAA6Bs/E,EAAwBv4G,EAAMk5G,mBAC9Dp4G,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAO4iD,YAE5BxrD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAf,6CAC2C2sF,EAD3C,gBACsE34G,EAAM64G,0BAA0B5pF,OAAO,SAD7G,IACwHjvB,EAAMw4G,kBAD9H,mHAE6Dx4G,EAAM64G,0BAA0B1pF,QAAQ5S,IAAI,EAAG,KAAK0S,OAAO,SAFxH,uIAQXjvB,EAAMmc,sBACa,IAAhBy8F,GACG3/E,GAA6Bw/E,EAAwBz4G,EAAMk5G,mBAC9Dp4G,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAO4iD,YAE5BxrD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAf,6CAC2C4sF,EAD3C,gBACsE54G,EAAM84G,0BAA0B7pF,OAAO,SAD7G,IACwHjvB,EAAM04G,kBAD9H,mHAE6D14G,EAAM84G,0BAA0B3pF,QAAQ5S,IAAI,EAAG,KAAK0S,OAAO,SAFxH,uIASXjvB,EAAMmc,sBAAwBnc,EAAMmc,qBAAqBuD,IAAIpL,GAAuB6C,6CAA+CnX,EAAMu5G,0BAA4Bv5G,EAAMu5G,yBAAyBpmH,OAAS,GAC1M2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAO4iD,YAE5BxrD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAf,oKAKJlrB,EAAAhP,EAAAiP,cAAA,+EAEAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO+mG,eACdzwG,EAAMu5G,yBAAyBr9G,MAAM,EAAG,GAAG9I,IAAI,SAACyqB,EAAMne,GAAP,OAC5CoB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAG,GAAAvC,OAAKuI,EAAL,KAAAvI,OAAc0mB,GAAQ7c,MAAO0I,GAAOmuG,eAAe/2G,EAAAhP,EAAAiP,cAAA,cAAS8c,MAEvE7d,EAAMu5G,yBAAyBpmH,OAAS,GAAK2N,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmuG,eAAe/2G,EAAAhP,EAAAiP,cAAA,mBAAWf,EAAMu5G,yBAAyBpmH,OAAS,EAAnD,WAGpF2N,EAAAhP,EAAAiP,cAAA,6IAoBPy4G,KAGT14G,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAM+4C,OAAQpvC,MAAM,WAArC,4DCzPD8vG,GARA,SAACz5G,GACZ,OACIw6E,EAAA,cAAC3yD,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBwoB,QAAQ,cACxBgyD,EAAA,sBAAMk/B,MAAM,6BAA6B76F,EAAE,+GCuEvD,IAAM86F,GAAWjmG,aAAW,SAAC+H,EAAezP,GACxC,OAAOyP,EAAMvf,QAAQgD,KAAKiqB,GAAc,oBAAoB,IAAQ/1B,IAAI,SAAC4oB,EAAMtc,GAC3E,IAAMk6G,EAA2BthF,GAAyB7c,GAEpDo+F,EAAen6G,IAAU+b,EAAMtoB,OAAS,EAAIuW,GAAOowG,eAAiB,GACpEC,EAAapoH,OAAA0G,EAAA,EAAA1G,CAAA,GAAQkoH,EAAiBnwG,GAAO2lF,SAC7C2qB,EAAmBJ,EAAwBjoH,OAAA0G,EAAA,EAAA1G,CAAA,GAAQkoH,EAAiBnwG,GAAOoB,YAAhCnZ,OAAA0G,EAAA,EAAA1G,CAAA,GAAoDkoH,GAErG,OACI/4G,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUzzD,IAAKsiB,EAAKX,IAChBva,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO+4G,GAzDlC,SAAoBn0F,EAAa5Z,GAC7B,IAAI0f,EACJ,OAAQ9F,GACJ,KAAKzI,GAAY,UAAWC,GAAgBuO,gBAExC,OADAD,EAAUxF,GAAgB,WACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,UAAU2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACpD,KAAKvO,GAAY,SAAUC,GAAgBuO,gBAEvC,OADAD,EAAUxF,GAAgB,UACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,SAAS2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACnD,KAAKvO,GAAY,SAAUC,GAAgBuO,gBAEvC,OADAD,EAAUxF,GAAgB,UACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,SAAS2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACnD,KAAKvO,GAAY,YAAaC,GAAgBuO,gBAC9C,KAAKxO,GAAY,aAAcC,GAAgBuO,gBAC/C,KAAKxO,GAAY,YAAaC,GAAgBuO,gBAC9C,KAAKxO,GAAY,WAAYC,GAAgBuO,gBAEzC,OADAD,EAAUxF,GAAgB,QACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,OAAO2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACjD,KAAKvO,GAAY,MAAOC,GAAgBuO,gBACxC,KAAKxO,GAAY,MAAOC,GAAgBuO,gBAEpC,OADAD,EAAUxF,GAAgB,cACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,aAAa2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACvD,KAAKvO,GAAY,WAAYC,GAAgBuO,gBAC7C,KAAKxO,GAAY,kBAAmBC,GAAgBuO,gBACpD,KAAKxO,GAAY,WAAYC,GAAgBuO,gBAEzC,OADAD,EAAUxF,GAAgB,aACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,YAAY2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACtD,KAAKvO,GAAY,eAAgBC,GAAgBuO,gBAE7C,OADAD,EAAUxF,GAAgB,OACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,eAAe2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACzD,KAAKvO,GAAY,qBAAsBC,GAAgBuO,gBAE/C,OADAD,EAAUxF,GAAgB,sBACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,qBAAqB2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACnE,KAAKvO,GAAY,QAASC,GAAgBuO,gBAEtC,OADQD,EAAUxF,GAAgB,SAC3BplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,QAAQ2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QAClD,KAAKvO,GAAY,SAAUC,GAAgBuO,gBAEvC,OADAD,EAAUxF,GAAgB,UACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,MAAM2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QAChD,KAAKvO,GAAY,OAAQC,GAAgBuO,gBAErC,OADAD,EAAUxF,GAAgB,QACnBplB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAM,OAAO2f,QAASlnB,EAAAhP,EAAAiP,cAAC2qB,EAAD,QACjD,QACI,QAcsCuuF,CAAWj+F,EAAKgC,mBAClDld,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO64G,GAAe79F,EAAKjJ,iBACrCulB,GAAyB7c,IACtB3a,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO+4G,GACbvhF,GAAoBxc,IACjBlb,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KACI1vC,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAOkE,gBAKxC9M,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOg5G,GACbh+F,EAAKoc,kBAmHXrQ,kBA3GgB,SAAC/nB,GAAiB,IACrCyb,EAAuEzb,EAAvEyb,MAAO6lE,EAAgEthF,EAAhEshF,YAAah5E,EAAmDtI,EAAnDsI,QAAS4xG,EAA0Cl6G,EAA1Ck6G,eAAgBluG,EAA0BhM,EAA1BgM,MAAOmuG,EAAmBn6G,EAAnBm6G,eACtDP,EAA2BthF,GAAyB7c,GACpDu+F,EAAmBJ,EAAwBjoH,OAAA0G,EAAA,EAAA1G,CAAA,GAAQ+X,GAAOowG,eAAmBpwG,GAAOoB,YAAzCnZ,OAAA0G,EAAA,EAAA1G,CAAA,GAA6D+X,GAAOowG,gBAHxExlE,EAIHnzC,IAAMozC,SAA4B,IAAnB4lE,GAJZ3lE,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAItC8lE,EAJsC5lE,EAAA,GAIvB6lE,EAJuB7lE,EAAA,GAAA0qC,EAKf/9E,IAAMozC,UAAS,GALA4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAKtCznC,EALsC0nC,EAAA,GAK7BQ,EAL6BR,EAAA,GAa7C,OACIr+E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAMs6G,gBACHx5G,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOZ,WACzBhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,OAAKorB,IAAK8nF,KAAWjzG,MAAO0I,GAAOqxC,YAAa3uB,IAAI,gBAExDtrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAf,iFAEIlrB,EAAAhP,EAAAiP,cAAA,WAFJ,8DAORD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAEflrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO6xE,YACd9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAAS32C,EAAMu6G,SAAUpkE,SAAUn2C,EAAMw6G,wBAAyB7wG,MAAM,YAE3F9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0lF,UAApB,sEAQnCtuF,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOZ,WACL,IAAnBqxG,GACGr5G,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO8lF,gBACtB1uF,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOuc,KAASvc,GAAO/B,WADjD,yEAIH7G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0lF,UAAnB,4CAEGtuF,EAAAhP,EAAAiP,cAAA,sFAGJD,EAAAhP,EAAAiP,cAAA,WAAKD,EAAAhP,EAAAiP,cAAA,mEAA2DugF,EAA3D,MACLxgF,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO4lF,gBACfxuF,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO2lF,QAAY3lF,GAAOowG,kBACjDh5G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOowG,gBAAzB,aACCF,GACG94G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO2lF,QAAY3lF,GAAOowG,kBAErDh5G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOg5G,GAAlB,aAGRl5G,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKssD,GAASl+F,EAAOzP,MAI5B4tG,GACG94G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO+lF,mBACf3uF,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO0I,GAAOkE,cAD5B,OACiD9M,EAAAhP,EAAAiP,cAAA,gLAIrDD,EAAAhP,EAAAiP,cAAA,oEAA2DD,EAAAhP,EAAAiP,cAAA,2DAA3D,iBACYD,EAAAhP,EAAAiP,cAAA,0BADZ,mHAIJD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,CAAetuC,MAAO0I,GAAOylF,eACzBruF,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOuI,OAAQzgB,QAAQ,WAAWmY,MAAM,UAAUL,QAAShB,GAA1E,UAGAxH,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,0BACH9G,SAAU6lG,EACVzwG,MAAM,UACNnY,QAAQ,YACR8X,QAxFQ,WACpB+wG,GAAiB,GACjB16B,GAAW,GACXu6B,EAAel6G,EAAMu6G,WAsFT9iE,QAASA,GANb,qBC3LVqG,GAAe,CAAEC,QAAQ,GA4ChB08D,GAzCuDt5G,IAAMizC,KAAK,SAACp0C,GAC9E,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAEQlB,EAAM20C,OAAOn5C,IAAI,IAAMwE,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAClD,OACI7zC,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUzzD,IAAG,GAAAvC,OAAK2X,EAAL,iBACThO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,gBACJqoC,UAAW,SAACujE,GAAD,OAAmC55G,EAAAhP,EAAAiP,cAAA,WAAM25G,EAAWp9G,MAAM3D,WAG7EmH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,mBACJqoC,UAAWnD,GACXqC,QAAM,EACN8B,WAAS,EACT3mD,QAAQ,WACRwkD,YAAY,gBACZgJ,YAAalB,IAEbh9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KlJigBhB,WAC9B,IAAMoqC,EAAef,KACrB,OAAO+E,GAAoBhE,GkJlgBM42E,GAAqBvnH,IAAI,SAAAo2B,GAAG,OACzB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,iBCnBlEihH,GANqB,SAAC56G,GACjC,OACIc,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,cAAcqoC,UAAWsjE,MCLrCltB,GAAY,0BA+EVx1C,gBAAoC,CAC/CF,KAAM01C,IADKx1C,CA1DmB,SAAC/3C,GAC/B,OACIc,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAClBn3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOZ,WACzBhI,EAAAhP,EAAAiP,cAAA,WAC8B,IAAzBf,EAAMm6G,gBACHr5G,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO8lF,gBACtB1uF,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAakP,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOuc,KAASvc,GAAO1R,SADpD,yEAIH8I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0lF,UAAnB,4CAC8CtuF,EAAAhP,EAAAiP,cAAA,uFAGnDD,EAAAhP,EAAAiP,cAAA,WAAKD,EAAAhP,EAAAiP,cAAA,iFACLD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO4lF,gBACfxuF,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOowG,gBAAzB,WACAh5G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOowG,gBAAzB,kBAEJh5G,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAAC85G,GAAD,CACIh6D,SAAU0sC,QAK1BzsF,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOZ,WAAnB,gDACQhI,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACAvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,8EAAqED,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WAA3E,4EACPinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,eAIzCjL,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,CAAetuC,MAAO0I,GAAOylF,eACzBruF,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOuI,OAClBzgB,QAAQ,WACRmY,MAAM,UACNL,QAAStJ,EAAMs4C,UAHnB,UAMAx3C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,UACH1R,MAAM,UACNL,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM86G,UACfvmG,SAAgC,GAAtBvU,EAAMm6G,eAChB3oH,QAAQ,aANZ,YC5BVupH,eACF,SAAAA,EAAY/6G,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAmoH,IACtBnhH,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAopH,GAAA56G,KAAAvN,KAAMoN,KAcVg7G,qBAAuB,SAAC92D,GACpBtqD,EAAKqhH,OACLrhH,EAAK4G,SAAS,CAAE06G,yBAAyB,IACzC,IAAMzjF,EAAWysB,EAAWi3D,YACxB1jF,EAAStkC,OAAS,IAClBskC,EAAS7b,QAAQ,SAAC0jB,GACVA,EAAQ4B,iBAAmB/jB,GAAY,cAAeC,GAAgB8jB,iBACnEtnC,EAAKoG,MAAMo7G,uBAAuBzoF,SAAS2M,EAAQ1hB,cAEtDhkB,EAAK4G,SAAS,CAAE06G,yBAAyB,MAGjDthH,EAAKoG,MAAMq7G,8BAA8B5jF,IAE7C79B,EAAK4G,SAAS,CAAE86G,YAAa,KA7BP1hH,EA6D1BqhH,KAAO,kBAAMrhH,EAAK4G,SAAS,CAAE+6G,SAAS,KA7DZ3hH,EA+D1B4hH,gBAAkB,WACd5hH,EAAK4G,SAAS,CAAE+6G,SAAS,IAEzB3hH,EAAKoG,MAAMsI,WAlEW1O,EAqE1B6hH,aAAe,WACX7hH,EAAK4G,SAAS,CAAE+6G,SAAS,KAtEH3hH,EAyE1B8hH,YAAc,WACV9hH,EAAK4G,SAAS,CAAE86G,YAAa,IAC7B1hH,EAAK4G,SAAS,CAAE+6G,SAAS,IACzB3hH,EAAK4G,SAAS,CAAEi3C,SAAS,IACzB79C,EAAKoG,MAAM27G,YACX/hH,EAAKoG,MAAMsI,WA9EW1O,EAyF1BgiH,8BAAgC,SAACryG,EAAQotC,GACrC/8C,EAAK4G,SAAS,CAAEq7G,wBAAyBllE,KAvFzC/8C,EAAK+G,MAAQ,CACT46G,SAAS,EACT9jE,SAAS,EACT6jE,YAAat7G,EAAM87G,iBACnBD,yBAAyB,EACzBX,yBAAyB,GARPthH,mFAatBhH,KAAK4N,SAAS,CAAEi3C,SAAS,wCAmBjBh8B,GACZ,IAAIsc,EAAwC,GAa5C,OAXItc,EAAMG,QAAQ,SAACI,QAC2FhmB,IAAlG+hC,EAAUhc,KAAK,SAAAoc,GAAC,OAAIA,EAAEva,cAAgB5B,EAAK4B,aAAeua,EAAEC,cAAgBpc,EAAKoc,eACjFL,EAAUtX,KAAK,CACX7C,YAAa5B,EAAK4B,YAClBwa,YAAapc,EAAKoc,YAClB2jF,qBAAkC/lH,GAAjBgmB,EAAKuc,UAAgCvc,EAAKuc,SAC3D2I,eAAgB/jB,GAAY,cAAeC,GAAgB8jB,oBAKpEnJ,mDAGkBikF,GACrB,IAAIt8G,EAAQ,EACRu8G,EAAa,GAEjB,IAAKv8G,EAAQ,EAAGA,EAAQs8G,EAAM7oH,OAAQuM,SACb1J,IAAjBgmH,EAAMt8G,IACNu8G,EAAWx7F,KAAKu7F,EAAMt8G,IAG9B,OAAOu8G,mCAoCP,OACIn7G,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMzN,KAAM+V,QAAS1V,KAAKoN,MAAMsI,QAASD,MAAM,4BACtC,IAA3BzV,KAAK+N,MAAM26G,aACRx6G,EAAAhP,EAAAiP,cAACm7G,GAAD,CACA5jE,SAAU1lD,KAAK8oH,YACf9iE,cAAehmD,KAAKgmD,cACpBZ,SAAUplD,KAAKooH,qBACfF,UAAWloH,KAAK+N,MAAM46G,QACtBjO,UAAW16G,KAAK+N,MAAM82C,QACtB0iE,eAAgBvnH,KAAKoN,MAAMm6G,eAC3B1+F,MAAO7oB,KAAKoN,MAAMyb,MAClB6+F,eAAgB1nH,KAAKoN,MAAMs6G,iBAGH,IAA3B1nH,KAAK+N,MAAM26G,aACRx6G,EAAAhP,EAAAiP,cAACo7G,GAAD,CACA1gG,MAAO7oB,KAAKoN,MAAMyb,MAClB6lE,YAAa1uF,KAAKoN,MAAMshF,YACxBh5E,QAAS1V,KAAK8oH,YACdxB,eAAgBtnH,KAAKoN,MAAMk6G,eAC3BC,eAAgBvnH,KAAKoN,MAAMm6G,eAC3BG,eAAgB1nH,KAAKoN,MAAMs6G,gBAAkB1nH,KAAK+N,MAAMu6G,wBACxDX,SAAU3nH,KAAK+N,MAAMk7G,wBACrBrB,wBAAyB5nH,KAAKgpH,uEA/B1C,MAHmB,CACfT,YAFgBvoH,KAAKwpH,YAAYxpH,KAAKoN,MAAMyb,eAnFtBta,IAAMC,eAgJzBquC,oBACXC,YAbJ,SAAyB/uC,GACrB,MAAO,CACH4gB,gBAAiB5gB,EAAMmhB,aAI/B,SAA4B7vB,EAAe2oD,GACvC,MAAO,CACH+gE,UAAW,kBAAM1pH,EAAS0sD,aAAM09D,SAIzB5sE,CAEbsrE,IC9JIuB,eACF,SAAAA,EAAYt8G,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA0pH,IACtB1iH,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA2qH,GAAAn8G,KAAAvN,KAAMoN,KAMVytG,QAAU,SAAClkG,EAAQotC,GACf/8C,EAAK4G,SAAS,CAAE+7G,iBAAkB5lE,KANlC/8C,EAAK+G,MAAQ,CACT47G,kBAAkB,GAHA3iH,wEAYtB,IAAM4iH,EAAuB5pH,KAAKoN,MAAMy8G,eAAezhG,KAAKlb,OAAO,SAAAyJ,GAAC,OAAIA,EAAEmS,UAAUvoB,OAAS,IAAGA,OAAS,EACnGupH,EAA+B9pH,KAAKoN,MAAM44F,sBAAsB59E,KAAK7nB,OAAS,GAAIP,KAAKoN,MAAM44F,sBAAsB59E,KAAKlb,OAAO,SAAA22G,GAAG,OAAIA,EAAIv4F,UAAU/qB,OAAS,IAAGA,OAAS,EAE/K,OACI2N,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMzN,KAAM+V,QAAS1V,KAAKoN,MAAMsI,QAASD,MAAM,2BAClEvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAOZ,WAEzBhI,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0lF,UACftuF,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAO6iD,YAD3B,mDAGCiwD,GACG17G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0lF,UACftuF,EAAAhP,EAAAiP,cAAA,qFADJ,qIAIH27G,GACG57G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0lF,UACftuF,EAAAhP,EAAAiP,cAAA,iHADJ,iFAIFy7G,GAAwBE,IACtB57G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,CAASv7C,MAAO0I,GAAO2G,UACvBvP,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAAS/jD,KAAK+N,MAAM47G,iBACpBpmE,SAAUvjD,KAAK66G,QACf9jG,MAAM,cAGlB9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOlD,MAApB,+FAIf1F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO60B,SAAnB,6BAIJz9B,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,CAAetuC,MAAO0I,GAAOylF,eACzBruF,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOuI,OAClBzgB,QAAQ,WACRmY,MAAM,UACNL,QAAS1W,KAAKoN,MAAMsI,SAHxB,UAOAxH,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,2BACH1R,MAAM,UACNnY,QAAQ,YACR8X,QAAS1W,KAAKoN,MAAM28G,WACpBpoG,YAAaioG,IAAwBE,KAAyC9pH,KAAK+N,MAAO47G,kBAL9F,qBA5DmBp7G,IAAMC,eAwF9BquC,oBACXC,YARJ,SAAyB/uC,GACrB,MAAO,CACH87G,eAAgB97G,EAAM4c,SACtBq7E,sBAAuBj4F,EAAM6rE,mBAItB/8B,CAEb6sE,ICzEIM,GAAkBz7G,IAAMizC,KAAK,SAACp0C,GAAiB,IACzCsf,EAAgFtf,EAAhFsf,qBAAsBlX,EAA0DpI,EAA1DoI,QAAS0Z,EAAiD9hB,EAAjD8hB,WAAY/G,EAAqC/a,EAArC+a,cAAeorF,EAAsBnmG,EAAtBmmG,kBADjB7xD,EAEKnzC,IAAMozC,UAAS,GAFpBC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAE1CuoE,EAF0CroE,EAAA,GAErBsoE,EAFqBtoE,EAAA,GAAA0qC,EAGe/9E,IAAMozC,UAAS,GAH9B4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAG1C69B,EAH0C59B,EAAA,GAGhB69B,EAHgB79B,EAAA,GAAAG,EAInBn+E,IAAMozC,UAAS,GAJIgrC,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAI1C7nC,EAJ0C8nC,EAAA,GAIjCI,EAJiCJ,EAAA,GAM3C2P,EAAU5uF,GAAK+jB,6BACfsjC,EAAWrnD,GAAK+iB,0BAChBq9B,EAAapgD,GAAKyjB,iBAClBo2F,EAAiBp/F,EAAcC,KAAK7nB,OAEpC8pH,EAAY,eAAAvrH,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAG,SAAAC,EAAOkrH,GAAP,OAAArrH,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACjByqH,GAAuB,GACvBn9B,GAAW,GAFMxtF,EAAAE,KAAA,EAGX2N,EAAMm9G,qBAAqBD,GAAkBE,QAAQ,kBAAMz9B,GAAW,KAH3D,wBAAAxtF,EAAAM,SAAAT,MAAH,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAMZwqH,EAAa,eAAAvpH,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAG,SAAAgC,IAAA,OAAAlC,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAClB2qH,GAA4B,GAC5Br9B,GAAW,GAFO1rF,EAAA5B,KAAA,EAGZ2N,EAAMs9G,uBAAuBF,QAAQ,kBAAMz9B,GAAW,KAH1C,wBAAA1rF,EAAAxB,SAAAsB,MAAH,yBAAAD,EAAAnB,MAAAC,KAAAC,YAAA,GAUb0qH,EAAe,WAAM,IAAAC,EACE58G,GAAO68G,SAAxB58G,EADe28G,EACf38G,KAAMsE,EADSq4G,EACTr4G,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYjtB,EAAWnO,QAAQ0H,IAAItoB,QAAQoS,EAAQrP,aAAegsB,EAAWzG,IAChHrb,EAAMioD,QAAQxnC,KAAK4/D,IAGjBq9B,EAAkB,WAAM,IAAAC,EACD/8G,GAAOg9G,YAAxB/8G,EADkB88G,EAClB98G,KAAMsE,EADYw4G,EACZx4G,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYjtB,EAAWnO,QAAQ0H,IAAItoB,QAAQoS,EAAQrP,aAAegsB,EAAWzG,IAAItoB,QAAQoS,EAAQolD,IAAM,IAC1IvqD,EAAMioD,QAAQxnC,KAAK4/D,IAGjBw9B,EAAoBloF,GAAwB31B,EAAMyb,MAAOzb,EAAM+a,cAAe+G,GAC9Eg8F,EAAwB1nF,GAA2Bp2B,EAAMyb,OACzDsiG,GAAuCj8F,EAAWovB,oBAAsB2sE,EAAkB3nF,wBAA0BiwE,GACtH6X,EAAuBv5F,GAAe3C,EAAYxG,GAAM2iG,iBAAmBF,EAC1ED,IAAwBE,GAAsB,GAUnD,IAAME,EAAOp9G,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACjBJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACD,UAAWkzC,sBACvBj7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWkzC,mBAAK3zC,EAAQ+1G,QAAS/1G,EAAQg2G,cAAeh2G,EAAQi2G,SAC9Ev9G,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACI/9C,QAAQ,WACR4W,QAAS,CACGijD,KAAMtP,mBAAK3zC,EAAQrB,QAASqB,EAAQk2G,kBAEhDl7G,KAAK,QACLkG,QAASo0G,GACZ58G,EAAAhP,EAAAiP,cAACw9G,GAAAzsH,EAAD,MAPD,oBAQE+rH,EAAkB9nF,sBAAsL//B,EAAnK8K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQo2G,UAAWl1G,QAASo0G,GAAiB58G,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAa+W,UAAWkzC,mBAAK3zC,EAAQ6d,KAAM7d,EAAQpQ,SAAvH,oBAlB3C,SAAqB8pB,GACjB,OAAKD,GAAyBC,IAAeI,GAA2B5C,EAAsBwC,IAAeW,GAAsBnD,EAAsBwC,GAC9IhhB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQo2G,UAAWl1G,QAASo0G,GAAiB58G,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAa+W,UAAWkzC,mBAAK3zC,EAAQ6d,KAAM7d,EAAQpQ,SAAvH,yBACJ,EAgBNymH,CAAY38F,GACbhhB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,gBAAgBd,UAAWkzC,mBAAK3zC,EAAQ5B,OAA1D,gEAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWkzC,mBAAK3zC,EAAQ+1G,QAAS/1G,EAAQi2G,SACvDv9G,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACI/9C,QAAQ,WACR4W,QAAS,CACGijD,KAAMtP,mBAAK3zC,EAAQrB,QAASqB,EAAQk2G,kBAEhDl7G,KAAK,QACLkG,QAASi0G,GACZz8G,EAAAhP,EAAAiP,cAAC29G,GAAD,MAPD,aAQGb,EAAkB1nF,sBAEPngC,EADA8K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQo2G,UAAWl1G,QAASi0G,GAAcz8G,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAU+W,UAAWkzC,mBAAK3zC,EAAQ6d,KAAM7d,EAAQT,WAAjH,oBAEd7G,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,gBAAgBd,UAAWkzC,mBAAK3zC,EAAQ5B,OAA1D,0DAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWkzC,mBAAK3zC,EAAQ+1G,UACtCr9G,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,gBAAgBd,UAAWkzC,mBAAK3zC,EAAQgrG,KAAMhrG,EAAQ5B,OAAxE,iBACCkf,GAAY1lB,EAAMyb,OAAOroB,IAAI,SAAA2yB,GAAQ,OAC1BjlB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAKqsB,EAASrsB,IAAKmP,UAAWT,EAAQu2G,QAEvC79G,EAAAhP,EAAAiP,cAAA,WAAKD,EAAAhP,EAAAiP,cAAA,KAAG8H,UAAWT,EAAQo2G,UAAWl1G,QAASi0G,GAAcz8G,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAO0d,EAASrsB,IAAKsuB,QAASlnB,EAAAhP,EAAAiP,cAACglB,EAASE,KAAV,CAAepd,UAAWkzC,mBAAK3zC,EAAQrB,QAASqB,EAAQikB,eACnKvrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2d,UAAWA,EAASI,UAG3C,IAAvBnmB,EAAMyb,MAAMtoB,OAAe2N,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAY1vC,EAAAhP,EAAAiP,cAAA,2BAA+B/K,IAG9E8K,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACD,UAAWT,EAAQw2G,cACvB98F,EAAWqB,iBACRriB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,iBAAlB,iCAAiEmY,EAAWqB,iBAAiB8L,OAAO,MAApG,QAEFigE,GAAWvnC,IAAa7lC,EAAWe,kBAAoBf,EAAWqB,kBAAiD,MAA7BrB,EAAWwjD,gBAC/FxkE,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACw3C,GAAD,CACI/mD,QAAQ,YACRmY,MAAM,UACNL,QAAS,kBAAM0zG,GAA4B,IAC3CvlE,QAASA,GAJb,6BASZ32C,EAAAhP,EAAAiP,cAAA,WAEAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAWT,EAAQy2G,eACjCn+D,GAAc5+B,EAAWe,kBAAoBf,EAAWqB,kBAAiD,MAA7BrB,EAAWwjD,gBACpFxkE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,iBAAlB,mFAEFg+C,GAAYunC,IAAYptE,EAAWe,kBAAoBf,EAAWqB,kBAAiD,MAA7BrB,EAAWwjD,gBAC/FxkE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,iBAAlB,gKAKZ7I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKw/C,IAAe5+B,EAAWqB,kBAAiD,MAA7BrB,EAAWwjD,eACtDxkE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY7mC,MAAM,iBAAlB,kFAEA7I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWT,EAAQ02G,uBAC/B3Y,GAAqBrlG,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKmY,MAAM,gBAAgBd,UAAWkzC,sBAA1D,+BACtBoqD,GAAqBrlG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,SAAGJ,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAU+W,UAAWT,EAAQwF,cAAhC,IAAgD9M,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ5B,MAA/B,uHAE1E1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACw3C,GAAD,CACI/mD,QAAQ,YACRmY,MAAM,UACNL,QAAS,kBAAMwzG,GAAuB,IACtCvoG,SAAUypG,EACVvmE,QAASA,GALb,4BAOCqmE,GACGh9G,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,0MAAiMD,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WAAvM,oHACHinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,cAEvC+xG,GACEh9G,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,0GACPinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,kBAS3Dic,EAAUlnB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACXg9G,EACDp9G,EAAAhP,EAAAiP,cAACg+G,GAAD,CACIxsH,KAAMwqH,EACNz0G,QAAS,kBAAM00G,GAA4B,IAC3CL,WAAYU,IAEhBv8G,EAAAhP,EAAAiP,cAACi+G,GAAD,CACIzsH,KAAMsqH,EACNv0G,QAAS,kBAAMw0G,GAAuB,IACtC5C,eAAgB,SAACgD,GAAD,OAA+BD,EAAaC,IAC5DzhG,MAAOzb,EAAMyb,MACb6lE,YAAathF,EAAM8hB,WAAWnO,QAAQ7E,MAAQ,eAC9CqrG,eAAgBA,EAChB2B,iBAAkB,EAClBT,8BA1J4B,SAAC4D,GAEjCj/G,EAAMq7G,8BAA8B4D,IAyJhC3E,eAAgBt6G,EAAMs6G,eACtBc,uBAAwBp7G,EAAMo7G,0BAItC,OAAOt6G,EAAAhP,EAAAiP,cAACizG,GAAD,CACHxgH,KAAM,CACF6U,MAAO,mBACP2f,UACAhmB,OAAQ,CACJwE,KAAM,GACNyf,KAAMjmB,EAAM8hB,WAAWqB,iBAAmBriB,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,CAAe+W,UAAWkzC,mBAAK3zC,EAAQuxD,QAASvxD,EAAQ+qG,iBAAqBryG,EAAAhP,EAAAiP,cAACozG,GAAD,CAAgBtrG,UAAWkzC,mBAAK3zC,EAAQ0U,WAAY1U,EAAQ+qG,mBAG3L3hH,QAAQ,QACR+iB,UAAU,EACVnM,QAAS,CACLkE,MAAOlE,EAAQkE,WA0HZmjC,IC9VHyvE,GD8VGzvE,gBACXvlC,aArHoB,SAAC4rC,GAAD,OAAkBtrC,aAAa,CACnD8zG,gBAAiB,CACb7xG,aAAcqpC,EAAMoF,QAAQ,IAEhCk4D,KAAM,CACFzoG,WAAY,QAEhB0zG,OAAQ,CACJp9G,UAAW,UAEfu9G,UAAW,CACP/vG,OAAQ,WAEZmwG,aAAc,CACV90G,UAAWgsC,EAAMoF,QAAQ,IAE7B2jE,cAAe,CACX/0G,UAAWgsC,EAAMoF,QAAQ,IAE7BljD,MAAO,CACH2R,MAAO9D,GAAQ+B,IAAIb,SAEvB8E,OAAQ,CACJY,aAAcqpC,EAAMoF,QAAQ,IAEhCj1B,KAAM,CACFvb,SAAU,GACV+B,cAAe,GAEnB0mG,cAAe,CACXhvG,OAAQ2xC,EAAMoF,QAAQ,GACtBlvC,MAAO8pC,EAAMoF,QAAQ,IAEzBp+B,WAAY,CACRnT,MAAOmsC,EAAMjwC,QAAQkB,QAAQf,OAEjC24G,OAAQ,CACJzxG,QAAS,eACTjM,UAAW,SACX0I,MAAO9D,GAAQC,KAAKU,KACpBwD,cAAe8rC,EAAMoF,QAAQ,GAC7B7wC,WAAYyrC,EAAMoF,QAAQ,IAC1BluC,YAAa8oC,EAAMoF,QAAQ,GAC3B5vC,aAAcwqC,EAAMoF,QAAQ,IAEhC7uB,QAAS,CACLrgB,MAAO,OACP7H,OAAQ,QAEZ4hB,SAAU,CACNrb,SAAU,GACVf,MAAOmsC,EAAMjwC,QAAQkB,QAAQwuC,MAEjCjpC,MAAO,CACHrC,UAvDU,IAwDVL,SAAU,YAEd7C,QAAS,CACL4C,MAAOmsC,EAAMjwC,QAAQkB,QAAQwuC,MAEjC3tC,IAAK,CACD+B,MAAOmsC,EAAMjwC,QAAQ7N,MAAMu9C,MAE/B8V,KAAM,CACFphD,UAjEU,KAmEdk0G,QAAS,CACL/zG,QAAS0rC,EAAMoF,QAAQ,IAE3BkjE,cAAe,CACXlzD,YAAa,EACbC,iBAAkB,QAClBC,iBAAkBvlD,GAAQC,KAAKQ,QAEnCqzD,QAAS,CACLhwD,MAAOmsC,EAAMjwC,QAAQylD,UAAU/V,MAEnC/uC,KAAM,CACFkE,SAAU,UAEdo0G,qBAAsB,CAClB5xG,QAAS,OACTO,WAAY,SACZhB,aAAcqpC,EAAMoF,QAAQ,IAEhCvzC,QAAS,CACLgC,MAAO9D,GAAQ6B,OAAOX,SAE1B6G,YAAa,CACTlD,SAAU,GACVX,YAAa,EACbJ,MAAO9D,GAAQ6B,OAAOC,aA2B1B+nC,YAjBJ,SAAyB/uC,GAErB,MAAO,CACHwlG,kBAFsB9gF,GAAyB1kB,GAG/C8a,MAAO9a,EAAMqb,KAAKhB,KAClBD,cAAepa,EAAM4c,WAI7B,WACI,MAAO,KAQPyxE,IAHWv/C,CAIbmtE,yBE3TWuC,GAAiBj1G,aAvCf,kBAAMM,aAAa,CAC9B02E,UAAW,CACPh0E,QAAS,eACTjM,UAAW,SACXyJ,SAAU,GACVG,OAAQ,QACRT,QAAS,SACT8gD,YAAa,EACbC,iBAAkB,QAClBC,iBAAkBvlD,GAAQC,KAAKQ,OAC/B66E,eAAgB,CACZj2B,YAAa,EACb5/C,aAAc,EACdvB,YAAa,IAGrBq1G,0BAA2B,CACvBlyG,QAAS,eACTjM,UAAW,SACXyJ,SAAU,GACVG,OAAQ,QACRT,QAAS,SAET+2E,eAAgB,CACZj2B,YAAa,EACb5/C,aAAc,EACdvB,YAAa,IAGrBy9C,WAAY,CACR98C,SAAU,GAEVf,MAAO,SAEX01G,QAAS,CACLv1G,UAAW,OAIWI,CAAmB/I,IAAMizC,KAAK,SAACp0C,GACzD,IAAMwxD,OAA4Bx7D,IAApBgK,EAAM8jD,UAA0B,GAAK9jD,EAAM8jD,UACnD2N,OAA2Bz7D,IAAnBgK,EAAMihB,SAAyB,GAAKjhB,EAAMihB,SAClDkwB,OAAwBn7C,IAAhBgK,EAAMmxC,MAAsB,GAAKnxC,EAAMmxC,MAErD,OACIrwC,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQi3G,SACtBv+G,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQg3G,2BAC1Bt+G,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQo/C,YAAY1mD,EAAAhP,EAAAiP,cAAA,2BAA1C,IAAiEf,EAAM+lE,iBAE1E/lE,EAAM4kE,eACP9jE,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQ84E,WAC9BpgF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQo/C,YAAY1mD,EAAAhP,EAAAiP,cAAA,0BAA1C,IAAgEwwD,GAAeC,EAAOC,KAE1F3wD,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQ84E,WAC1BpgF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQo/C,YAA9B,IAA4CxnD,EAAMyuC,QAElD3tC,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQ84E,WAC9BpgF,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW7I,EAAMoI,QAAQo/C,YAAY1mD,EAAAhP,EAAAiP,cAAA,0BAA1C,IAAgE6wD,GAAYzgB,sFD1DpF+tE,4EAsBZ,IAwGMx1G,GAAiD,CACrDmC,OAAQ,CACN2C,gBAAiB3I,GAAQiB,KAAKd,MAC9B4mD,WAAU,aAAAz1D,OAAe0O,GAAQiB,KAAKC,UAExC+E,WAAY,CACVkB,YAAa,IAEfsyG,iBAAkB,CAChBl1G,QAAS,qBAEXm1G,KAAM,CACJryG,QAAS,OACT82E,cAAe,MACfh4E,MAAO,QAETia,KAAM,CACJ5b,WAAY,GAEdm1G,UAAW,CACT71G,MAAO9D,GAAQiB,KAAKC,SAEtB04G,aAAc,CACZ91G,MAAO9D,GAAQ6B,OAAOX,SAExB24G,WAAY,CACV/1G,MAAO9D,GAAQ+B,IAAIb,SAErBihB,QAAS,CACP23F,KAAM,EACN3yG,YAAa,QAEf4yG,WAAY,CACV3+G,UAAW,SAEb4+G,UAAW,CACT7zG,MAAO,SAIIgjF,eAhJM,SAAChvF,GACpB,IAAM2zD,EAA8B,CAClC,CACEt4C,GAAI,EACJykG,SAAUZ,GAAaa,IACvB13G,MAAO,4BACP2f,QAAO,6NAEPg4F,iBAAkB,2BAClBC,aAAa,IAToB3rE,EAYGnzC,IAAMozC,SAC5Cof,GAbmCnf,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAY9B4rE,EAZ8B1rE,EAAA,GAYhB2rE,EAZgB3rE,EAAA,GA6B/B4rE,EAAc,SAAC/kG,GACnB,IAAIglG,EAAe1uH,OAAAgO,EAAA,EAAAhO,CAAOuuH,GACtBI,EAAgBD,EAAgBtkG,KAAK,SAACwjG,GAAD,OAAUA,EAAKlkG,KAAOA,IACzDilG,IACJA,EAAcL,aAAc,EAC5BE,EAAgBE,KAcdv3D,EAAQo3D,EACXpgH,OAAO,SAACy/G,GAAD,OAA+B,IAArBA,EAAKU,cACtB7sH,IAAI,SAACmsH,GAAD,OACHz+G,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACEJ,EAAAhP,EAAAiP,cAACopF,GAAA,EAAD,CAAuBnpF,MAAO0I,GAAO41G,kBACnCx+G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOm2G,WACjB/+G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO61G,MACjBz+G,EAAAhP,EAAAiP,cAAA,WAvCQ,SAACypB,GACnB,OAAQA,GACN,KAAK,EACH,OAAO1pB,EAAAhP,EAAAiP,cAACw/G,GAAA,EAAD,CAAUv/G,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOuc,KAASvc,GAAO81G,aACtD,KAAK,EACH,OAAO1+G,EAAAhP,EAAAiP,cAACy/G,GAAA,EAAD,CAAax/G,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOuc,KAASvc,GAAO+1G,gBACzD,KAAK,EACH,OAAO3+G,EAAAhP,EAAAiP,cAACy/G,GAAA,EAAD,CAAax/G,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOuc,KAASvc,GAAOg2G,cACzD,QACE,OAAO5+G,EAAAhP,EAAAiP,cAACw/G,GAAA,EAAD,CAAUv/G,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOuc,KAASvc,GAAO81G,cA8BxCiB,CAAYlB,EAAKO,WACvBh/G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOse,SACjBlnB,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY2G,UAAU,IAAI3lD,QAAQ,aAC/B+tH,EAAKl3G,QAGVvH,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY2G,UAAU,IAAI3lD,QAAQ,SAC/B+tH,EAAKv3F,WAIZlnB,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYhG,KAAK,SAASkG,QAAS,kBAAM82G,EAAYb,EAAKlkG,MACxDva,EAAAhP,EAAAiP,cAAC2/G,GAAA,EAAD,CAAWh2G,SAAS,aAI1B5J,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOk2G,YAChBL,EAAKS,kBACJl/G,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQnsC,KAAK,QAAQuG,MAAM,UAAUL,QAAS,kBAtCzC,SAAC+R,GAClB+kG,EAAY/kG,GADqB,IAAAslG,EAGR//G,GAAOuvG,cAAxBtvG,EAHyB8/G,EAGzB9/G,KAAMsE,EAHmBw7G,EAGnBx7G,OACRk7E,EAAQx/E,EACX9N,QAAQoS,EAAQ4pC,UAAY/uC,EAAM+uC,WAClCh8C,QAAQoS,EAAQrP,aAAekK,EAAMlK,cACxCkK,EAAMioD,QAAQxnC,KAAK4/D,GA+B6CugC,CAAWrB,EAAKlkG,MACjEkkG,EAAKS,qBAMhBl/G,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,SAIN,OAAIuM,EAAM31D,OAAS,EAEf2N,EAAAhP,EAAAiP,cAAC8oF,GAAA,EAAD,CAAgBvpC,UAAW,GACzBx/C,EAAAhP,EAAAiP,cAACgpF,GAAA,EAAD,CAAuBC,WAAYlpF,EAAAhP,EAAAiP,cAAC8/G,GAAA,EAAD,MAAgB7/G,MAAO0I,GAAOmC,QAC/D/K,EAAAhP,EAAAiP,cAAC+/G,GAAA,EAAD,CAAOC,aAAcj4D,EAAM31D,OAAQwW,MAAM,WACvC7I,EAAAhP,EAAAiP,cAACigH,GAAA,EAAD,CAAWhgH,MAAO0I,GAAOu3G,WAAYt3G,MAAM,aAE7C7I,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOoC,YAA1B,kBAEDg9C,GAIEhoD,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,QE/DLggH,eAIF,SAAAA,EAAYlhH,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAsuH,IACtBtnH,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAuvH,GAAA/gH,KAAAvN,KAAMoN,KAJVmwF,gBAAkBhzE,GAAY,oBAAqBC,GAAgBoiB,kBAGzC5lC,EAF1B+zG,UAAYxwF,GAAY,UAAWC,GAAgB8jB,gBAEzBtnC,EA6C1BunH,8BAAgC,EA7CNvnH,EA8C1BwnH,0BAA4B,GA9CFxnH,EA+C1BynH,2BAA6B,IA/CHznH,EAgD1B0nH,eAAsB,KAhDI1nH,EAiD1B2nH,iBAAmB,WACf,GAAI3nH,EAAKunH,gCAAkCvnH,EAAKwnH,0BAA2B,CACvE,IAAI7vH,EAAU,yDAId,OAHAkF,EAAOooD,KAAKttD,GACZo5C,GAAiB62E,WAAWjwH,QAC5BqI,EAAK4G,SAAS,CAACihH,qBAAqB,IAIZ,OAAxB7nH,EAAK0nH,gBAA2BhvH,aAAasH,EAAK0nH,gBACtD1nH,EAAKunH,gCACLvnH,EAAK0nH,eAAiB9uH,WAAW,WAC7BoH,EAAK8nH,iBACN9nH,EAAKynH,6BA9DcznH,EAiE1B+nH,8BAAgC,WAA0B,IAAzBC,EAAyB/uH,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,IAAAA,UAAA,GAClD+uH,IACAhoH,EAAKunH,8BAAgC,IAEpCvnH,EAAKoG,MAAM44F,sBAAsBptB,gCAAkCo2C,GACpEnrH,EAAOS,IAAP,0DAAAC,OAAqEyC,EAAKunH,8BAA1E,KAA4GvnH,EAAKoG,MAAM44F,uBACvHh/F,EAAKioH,qBACLjoH,EAAK2nH,qBAEL9qH,EAAOS,IAAI,yCAA0C0C,EAAKoG,MAAM44F,uBAChEh/F,EAAKunH,8BAAgC,EACrCvnH,EAAK4G,SAAS,CAAEi3C,SAAS,IACzB79C,EAAKkoH,wBA7EaloH,EAiF1B8nH,cAAgB,WACZ9nH,EAAKoG,MAAM84F,sBAAsBl/F,EAAKoG,MAAM+uC,UAAWn1C,EAAKoG,MAAMlK,cAAcgE,KAAK,WACjFF,EAAK+nH,mCAnFa/nH,EAuF1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,EAAOiB,YAAY,EAAOqpE,oBAAoB,KAvFhEnoH,EAyF1BioH,mBAAqB,kBAAMjoH,EAAK4G,SAAS,CAAEmzG,kBAAkB,KAzFnC/5G,EA0F1BkoH,oBAAsB,kBAAMloH,EAAK4G,SAAS,CAAEmzG,kBAAkB,KA1FpC/5G,EA4F1BooH,iBAAmB,WACfpoH,EAAK4G,SAAS,CACVuhH,oBAAoB,KA9FFnoH,EAkG1BqoH,2BAA6BvuG,aAAW,SAACwuG,GACrC,IACIC,EADQD,EAAIlnG,KACSlb,OAAO,SAAC+e,GAC7B,OAAOA,EAAE1C,qBAAqBlgB,QAAQ,KAAO,IAC9C7I,IAAI,SAACgvH,GAAQ,OAAOA,EAAExkG,YAAYtnB,gBAEjC+rH,EAA8B,GAUlC,OARAF,EAAavmG,QAAQ,SAACiD,IACiC,IAA/CwjG,EAAkBzpF,UAAU,SAAArvB,GAAC,OAAIA,IAAMsV,MACvCwjG,EAAkB5hG,KAAK5B,GACvBjlB,EAAK4G,SAAS,CACV85G,gBAAgB,OAIrB+H,GACRC,MAnHuB1oH,EAqH1B2oH,0BAA4B,WACxB,OAAO3oH,EAAKqoH,2BAA2BroH,EAAKoG,MAAM03D,YAtH5B99D,EAyH1B4oH,4BAA8B,SAACxnG,GAC3B,IAAIynG,GAAiB,EACrB,QAAM7oH,EAAKoG,MAAMuhB,gBAAgB+jD,iBAEb,IAAhBtqD,EAAK7nB,SACLsvH,GAAiB,GACrBznG,EAAKY,QAAQ,SAAA48E,IAC0B,IAA/BA,EAAKptB,wBACLq3C,GAAiB,KAGlBA,IApIe7oH,EAuI1B8oH,aAAe,kBAAM9oH,EAAK4G,SAAS,CAAEmiH,oBAAoB,EAAOjqE,YAAY,KAvIlD9+C,EAwI1BgpH,cAAgB,kBAAMhpH,EAAK4G,SAAS,CAAEk4C,YAAY,KAxIxB9+C,EAyI1BipH,gBAAkB,SAACrvH,GACf,IAAIsvH,EAA0BlpH,EAAKmpH,wBAAwBnpH,EAAKoG,MAAM+a,eACtEnhB,EAAK4G,SAAS,CAAEuhH,oBAAoB,EAAMxwH,QAASiC,EAAKjC,QAASgoH,yBAA0BuJ,EAAyBpqE,YAAY,KA3I1G9+C,EA8I1BopH,kCAAoC,SAAChL,GACjCp+G,EAAK4G,SAAS,CACVi3C,SAAS,EACTiB,YAAY,EACZqpE,oBAAoB,EACpB/J,oBAAqBA,KAnJHp+G,EAuJ1BqpH,sBAAwB,SAACC,GACrB,IAAIrP,EAAc,EAwDlB,OAvDAqP,EAAKloG,KAAKY,QAAQ,SAAA48E,GACd,IAAI9/D,EAAwBD,GAAyB7+B,EAAKoG,MAAM03D,UAAU18C,MACpEmoG,EAAiBtqF,GAAmC2/D,EAAK56E,YAAa8a,GACtEsgE,EAAqBmqB,GAAkBA,EAAelnH,QAAQ,KAAO,EACrEmnH,GAASpqB,GAAsBR,EAAK3tB,gCAAkC3oC,GAAiCC,IACvGgwD,EAAQqG,EAAK3tB,gCAAkC3oC,GAAiCG,gBAChFghF,EAAgBrqB,GAAsBR,EAAK3tB,gCAAkC3oC,GAAiCI,0BAC9GghF,EAAY9qB,EAAK3tB,gCAAkC3oC,GAAiCE,QACpFmhF,EAAY/qB,EAAK1tB,mBAAqBlxE,EAAK+zG,UAC3C6V,EAAeljH,GAAK+jB,6BACpBge,EAAkBm2D,EAAKn2D,gBACzBxb,IAA0BjtB,EAAKoG,MAAMuhB,gBAAgB+jD,eAGzD,IAAI89C,GAAmC,IAA1B5qB,EAAKt6E,UAAU/qB,QAAiBowH,GAAclhF,EAEpD,GAAI8vD,EAAO,CACd,GAAM9vD,EAEF,GADkBm2D,EAAK56E,cAAgBob,GAAe,qBAAsB5b,GAAgBQ,aAC9E,CACV,IAAM6lG,EAA+BjrB,EAAKkrB,mBAAqBp9C,GAAyBtpD,UAClF2mG,EAA6BH,GAAgB38F,IAA0B48F,EACvEG,GAA0BJ,IAAiBnhF,EAAgBqvD,gBAE7DiyB,GAA8BC,GAAoD,IAA1BprB,EAAKt6E,UAAU/qB,SACvE0gH,QAED,CACH,IAAMgQ,EAAiBxhF,EAAgB6pC,SAAS/4E,OAAS,EACnD2wH,EAAezhF,EAAgB6pC,SAASnwD,KAAK,SAAA9e,GAAC,OAAIA,EAAEyrE,WAErDrmC,EAAgBqvD,eAEVmyB,IAAmBC,EAC1BjQ,IACO2P,GAAgB38F,IAA0Bg9F,GACjDhQ,IAJAA,UAQT,GAAIwP,GACP,GAAMhhF,GAAqBA,EAAgB2mC,gBAAkB3mC,EAAgB2mC,eAAe71E,OAAS,EAAG,CACpG,IAAM4wH,EAAiBP,GAAgB38F,IAA0Bwb,EAAgB8mC,QAE5E9mC,EAAgB2mC,eAAe,GAAGiuB,eAE5B8sB,EACPlQ,IACO7a,GAAgD,IAA1BR,EAAKt6E,UAAU/qB,SAAiBowH,GAC7D1P,IAJAA,UAMDyP,GAAuC,IAA1B9qB,EAAKt6E,UAAU/qB,QAAiBowH,GAAclhF,GAClEwxE,SArCAA,MAwCDA,GAhNej6G,EAmN1BoqH,8BAAgCtwG,aAAW,SAACwvG,GACxC,IAAIf,EAAee,EAAKloG,KAAKlb,OAAO,SAAC+e,GACjC,OAAOA,EAAEgsD,gCAAkC3oC,GAAiCG,kBAC7EjvC,IAAI,SAACgvH,GAAQ,OAAOA,EAAExkG,YAAYtnB,gBAEjC+rH,EAA8B,GAQlC,OANAF,EAAavmG,QAAQ,SAACiD,IACiC,IAA/CwjG,EAAkBzpF,UAAU,SAAArvB,GAAC,OAAIA,IAAMsV,KACvCwjG,EAAkB5hG,KAAK5B,KAIxBwjG,GACRC,MAjOuB1oH,EAmO1BqqH,6BAA+B,WAC3B,OAAOrqH,EAAKoqH,8BAA8BpqH,EAAKoG,MAAM44F,wBApO/Bh/F,EAuO1BsqH,2BAA6B,WACzB,OAAOtqH,EAAKuqH,4BAA4BvqH,EAAKoG,MAAM03D,UAAW99D,EAAKoG,MAAM44F,wBAxOnDh/F,EA0O1BuqH,4BAA8BzwG,aAAW,SAACwuG,EAAuBgB,GAE7D,IAAIkB,EAAclC,EAAIlnG,KAAKlb,OAAO,SAAC+e,GAAO,MAAuC,WAAhCA,EAAEjB,YAAYtnB,gBAA8BlD,IAAI,SAACgvH,GAAQ,OAAOA,EAAEhqF,cAE/GisF,EAAmBnB,EAAKloG,KAAKlb,OAAO,SAAC+e,GACrC,OAAOA,EAAEgsD,gCAAkC3oC,GAAiCK,aAC7EnvC,IAAI,SAACgvH,GAAQ,OAAOA,EAAEhqF,cAGzB,OAAOgsF,EAAYjtH,OAAOktH,EAAiBvkH,OAAO,SAAC+d,GAAD,OAAUumG,EAAYnoH,QAAQ4hB,GAAQ,MAEzFykG,MArPuB1oH,EAuP1B0qH,qBAAuB,WACnB,OAAO1qH,EAAKqpH,sBAAsBrpH,EAAKoG,MAAM44F,wBAxPvBh/F,EA2P1B2qH,mBAAqB,WACjB,OAAO3qH,EAAKoG,MAAM44F,sBAAsB59E,KAAK7nB,OAASyG,EAAK0qH,wBA5PrC1qH,EA0Q1B4qH,oBAAsB,WAClB,IAAIC,EAAW,GAmCf,OAlCA7qH,EAAKoG,MAAM44F,sBAAsB59E,KAAKY,QAAQ,SAAA48E,GAC1C,IAAI9/D,EAAwBD,GAAyB7+B,EAAKoG,MAAM03D,UAAU18C,MACpEmoG,EAAiBtqF,GAAmC2/D,EAAK56E,YAAa8a,GACtEsgE,EAAqBmqB,GAAkBA,EAAelnH,QAAQ,KAAO,EAErEyoH,EAAYlsB,EAAK56E,cAAgBob,GAAe,qBAAsB5b,GAAgBQ,aACtFwlG,EAAQ5qB,EAAK3tB,gCAAkC3oC,GAAiCC,IAChFgwD,EAAQqG,EAAK3tB,gCAAkC3oC,GAAiCG,gBAChFghF,EAAgBrqB,GAAsBR,EAAK3tB,gCAAkC3oC,GAAiCI,0BAC9GihF,EAAY/qB,EAAK1tB,mBAAqBlxE,EAAK+zG,UAC3C2V,EAAY9qB,EAAK3tB,gCAAkC3oC,GAAiCE,QACpFC,EAAkBm2D,EAAKn2D,iBAEzB+gF,GAAmC,IAA1B5qB,EAAKt6E,UAAU/qB,QAAiBowH,GAAclhF,EAEhD8vD,GAAS9vD,IAAoBA,EAAgBqvD,iBAAmB6xB,EACvEkB,EAAShkG,KAAK+3E,EAAKpgE,aACZ+5D,GAAS9vD,GAAmBqiF,GAAariF,EAAgBqvD,gBAA4C,IAA1B8G,EAAKt6E,UAAU/qB,OACjGsxH,EAAShkG,KAAK+3E,EAAKpgE,aAEdirF,GAAiBhhF,GAAmBA,EAAgB2mC,gBAAkB3mC,EAAgB2mC,eAAe71E,OAAS,IAC9GkvC,EAAgB2mC,eAAe,GAAGiuB,gBAAmB+B,GAAgD,IAA1BR,EAAKt6E,UAAU/qB,SAAiBowH,IAC5GkB,EAAShkG,KAAK+3E,EAAKpgE,aAGlBirF,EACDrqB,GAAgD,IAA1BR,EAAKt6E,UAAU/qB,SAAiBowH,GACtDkB,EAAShkG,KAAK+3E,EAAKpgE,cAGlBkrF,GAAuC,IAA1B9qB,EAAKt6E,UAAU/qB,QAAiBowH,GAAclhF,GAChEoiF,EAAShkG,KAAK+3E,EAAKpgE,aAjBnBqsF,EAAShkG,KAAK+3E,EAAKpgE,eAoBpBqsF,GA9Se7qH,EAiT1B+qH,mBAAqB,SAAC51E,EAAmBj5C,GACrC8D,EAAKioH,qBACLjoH,EAAKoG,MAAM4kH,yBAAyB71E,EAAWj5C,GAC1CgE,KAAK,WAAQF,EAAK+nH,+BAA8B,MApT/B/nH,EAuT1BirH,eAAiB,WACb,IAAIC,EAAclrH,EAAKoG,MAAMuhB,gBAAgBc,gBAAgBviB,OAAO,SAAAwiB,GAAO,OAAIA,EAAQsiD,gBACvF,OAAOkgD,GAAeA,EAAY,IAzTZlrH,EA4T1BmrH,4BAA8B,SAACC,GAC3BprH,EAAK4G,SAAS,CAAEy+G,sBAAuB+F,KA7TjBprH,EAgU1BqrH,yBAhU0BtzH,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAgUC,SAAAC,IAAA,OAAAH,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACjBuH,EAAKoG,MAAMklH,qBADM,OAEvBtrH,EAAK4G,SAAS,CACVgrE,gCAAgC,EAChC25C,mCAAmC,IAJhB,wBAAAhzH,EAAAM,SAAAT,MAhUD4H,EAwU1Bq+C,aAAe,WACXr+C,EAAK4G,SAAS,CAAEk4C,YAAY,IAC5B,IAAM0sE,EAAoBxrH,EAAKyrH,sBACzBC,EAAoB1rH,EAAK0qH,uBACzBhM,EAAmB1+G,EAAK2rH,sBACxBnN,EAAiBx+G,EAAKoG,MAAM+a,eAAiBnhB,EAAKoG,MAAM+a,cAAcC,KAAK7nB,OAC3E6kH,EAAsBp+G,EAAK+G,MAAMpP,SAAWqI,EAAK+G,MAAMpP,QAAQ4B,OAAS,EAE1EiyH,EAAkBjyH,OAAS,GACvBmyH,EAAoB,IAAM1rH,EAAKoG,MAAMuhB,gBAAgB2vB,kBACtDonE,EAAiBnlH,OAAS,IACzBilH,GACDJ,EACHp+G,EAAKopH,kCAAkCoC,IAGvCxrH,EAAK8oH,eACL9oH,EAAKoG,MAAMmR,iBAAiB,IAAIrX,KAAKF,EAAKipH,gBAAiBjpH,EAAKgpH,gBAGpE,IACI4C,EADQ5rH,EAAKoG,MAAM03D,UAAU18C,KACjB5nB,IAAI,SAAU+tB,GAAM,OAAOA,EAAGiX,YAAY9hC,gBAC1DsD,EAAK4G,SAAS,CACV04G,iBAAkBsM,KA/VA5rH,EAmW1B6rH,0BAA4B,WACxB,IAAML,EAAoBxrH,EAAKyrH,sBAC3BD,EAAkBjyH,OAAS,EAC3ByG,EAAKopH,kCAAkCoC,GAEvCxrH,EAAK4G,SAAS,CAAEi3C,SAAS,EAAOiB,YAAY,EAAOiqE,oBAAoB,KAxWrD/oH,EA2W1B8rH,qBAAuB,SAACC,GACpB,QAAyB3vH,IAArB2vH,GAAkCA,EAAiBxyH,OAAS,EAAG,CAC/DyG,EAAK8oH,eACL9oH,EAAKoG,MAAMk3F,mBAAmByuB,EAAiBvyH,IAAI,SAAAU,GAAA,OAAAA,EAAGunB,MAAcvhB,KAAKF,EAAKipH,gBAAiBjpH,EAAKgpH,eACpG,IAAI4C,EAAMG,EAAiBvyH,IAAI,SAAU+tB,GAAM,OAAOA,EAAGk2F,UAAU/gH,gBACnEsD,EAAK4G,SAAS,CACV04G,iBAAkBsM,MAjXJ5rH,EAsX1BgsH,oBAAsB,WAClBhsH,EAAK4G,SAAS,CAAEmiH,oBAAoB,KAvXd/oH,EA2X1BisH,qBAAuBnyG,aAAW,SAACiJ,EAAiCmpG,EAAqBC,EAAqBC,GAC1G,IAAIhO,EAA8C,GAC5CiO,EAAqBtpG,EAAU3B,KAC5Blb,OAAO,SAAAyJ,GAAC,OAAKA,EAAE2T,mBAAqB4oG,GAAev8G,EAAE2T,mBAAqB6oG,GAC5Dx8G,EAAE2T,mBAAqB8oG,IACrC9mH,KAAK,SAACgnH,EAAMC,GAAP,OAEDD,EAAK14D,SAAW24D,EAAK34D,UACf,EAAK24D,EAAK34D,SAAW04D,EAAK14D,SACnB,EAAI,IAErBtuD,KAAK,SAACgnH,EAAMC,GAAP,OAEDD,EAAKhpG,mBAAqB8oG,GACpB,EAAKG,EAAKjpG,mBAAqB8oG,EACxB,EAAI,IAc9B,OAXIC,EAAmB9yH,OAAS,GAC5B8yH,EAAmBrqG,QAAQ,SAAA2B,GACvBy6F,EAAoBv3F,KAAK,CACrBu4F,iBAAkBz7F,EAASiwC,SAC3ByrD,iBAAkB17F,EAASL,mBAAqB8oG,EACtC,4BACA,OAKfhO,GACRsK,MAzZuB1oH,EA2Z1BmpH,wBAA0BrvG,aAAW,SAACiJ,GAClC,IAAM48F,EAA2B58F,EAAU3B,KAAKlb,OAAO,SAAAyJ,GAAC,OAAIA,EAAEmS,UAAU5b,OAAO,SAAAqhB,GAAE,OAAIA,EAAGT,WAAUvtB,OAAS,IAEvG0kH,EAA0B,GAM9B,OALI0B,EAAyBpmH,OAAS,GAClComH,EAAyB39F,QAAQ,SAAAiC,GAC7Bg6F,EAAcp3F,KAAK5C,EAAK2vC,YAGzBqqD,GACRyK,MArauB1oH,EAua1B2rH,oBAAsB,WAClB,IAAIa,EAAwB,GAO5B,OANIlkG,GAA2BtoB,EAAKoG,MAAM03D,UAAUp4C,qBAAsB1lB,EAAKoG,MAAMuhB,kBACjF6kG,EAAY3lG,KAAK,gEAEjBgC,GAAsB7oB,EAAKoG,MAAM03D,UAAUp4C,qBAAsB1lB,EAAKoG,MAAMuhB,kBAC5E6kG,EAAY3lG,KAAK,gEAEd2lG,GA/aexsH,EAkb1ByrH,oBAAsB,WAClB,IAAMS,EAAc3oG,GAAY,YAAaC,GAAgBC,gBACvD0oG,EAAc5oG,GAAY,YAAaC,GAAgBC,gBACvD2oG,EAA2B7oG,GAAY,0BAA2BC,GAAgBC,gBACxF,OAAOzjB,EAAKisH,qBAAqBjsH,EAAKoG,MAAM+a,cAAe+qG,EAAaC,EAAaC,IAtb/DpsH,EAyb1BysH,mCAAqC,WACjC,OAAOhlH,GAAWilH,0BAA0B1sH,EAAKoG,MAAMlK,eA1bjC8D,EA4b1B2sH,uBAAyB,WACrB,OAAIjmH,GAAK+jB,4BAA8B/jB,GAAK+iB,0BACjCviB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ1mC,UAAU,UAAUc,MAAM,UAAUL,QAAS1P,EAAKysH,oCAAoCvlH,EAAAhP,EAAAiP,cAACylH,GAAA10H,EAAD,CAAe4Y,SAAS,UAAtH,6BAEP,GAhckB9Q,EAoc1Bq0F,eAAiB,SAACw4B,GACd,IACIzqG,EADQpiB,EAAKoG,MAAM03D,UAAU18C,KAChBe,KAAK,SAAA9qB,GAAC,OAAIA,EAAEkrB,qBAAqBwW,SAAS8zF,KAC3D,OAAOzqG,EAAOA,EAAKoc,YAAc,IAvcXx+B,EAyc1B8sH,uBAAyB,SAACD,GACtB,IAAIhrG,EAAQ7hB,EAAKoG,MAAM03D,UAAU18C,KAC7B2rG,EAAcnlG,MACdolG,GAAiB,EAiBrB,OAfAnrG,EAAMG,QAAQ,SAAA3qB,GACV,GAAIA,EAAEkrB,qBAAqBwW,SAAS8zF,IAA4C,OAApBx1H,EAAEqhB,cAAwB,CAClF,IAAIA,EAAgBrhB,EAAEqhB,eAEjBs0G,GAAkBt0G,IACnBs0G,GAAiB,EACjBD,EAAcr0G,GAGdA,GAAiBA,EAAcglB,SAASqvF,KACxCA,EAAcr0G,MAKnBq0G,GA7de/sH,EAge1BitH,yBAA2B,WACvB,OAAQjtH,EAAKq3G,yBAAyBr3G,EAAKoG,MAAM03D,WAAWvkE,OAAS,GAC9DyG,EAAKoG,MAAM+a,cAAcC,KAAKwE,KAAK,SAACvE,GAAD,OAAUA,EAAIC,oBAAsBD,EAAIE,cAAgBF,EAAIG,mBAlehFxhB,EAqe1Bq3G,yBAA2Bv9F,aAAW,SAACsI,GACnC,OAAOA,EAAKhB,KAAKlb,OAAO,SAAA7O,GAAC,OAAIA,EAAEs0B,qBAAuBt0B,EAAEs0B,sBAAwBpI,GAAY,mBAAoBC,GAAgBoI,uBAte1G5rB,EA2e1BktH,oBAAsB,WAClB,GAAIltH,EAAKoG,MAAMuhB,gBAAgBykD,gCACzB,OAAO,EAFoB,IAAAyb,EAIwB/kE,GAAgB9iB,EAAKoG,MAAM+a,cAAcC,MAApE8B,GAJG2kE,EAIzB5kE,UAJyB4kE,EAIdzkE,UAJcykE,EAIH3kE,YAAYC,EAJT0kE,EAIS1kE,WAC1C,SAAInjB,EAAK+G,MAAMwkH,mCACXroG,EAAa,GAAKC,EAAa,IACxB2wF,GAAsB9zG,EAAKoG,MAAMuhB,gBAAiB3nB,EAAKoG,MAAM44F,sBAAuBh/F,EAAKoG,MAAM03D,YA/e1G99D,EAAK+G,MAAQ,CACTohH,oBAAoB,EACpBY,oBAAoB,EACpBlrE,SAAS,EACTiB,YAAY,EACZi7D,kBAAkB,EAClBsL,sBAAuB,GACvBzzC,gCAAgC,EAChC25C,mCAAmC,EACnC1D,qBAAqB,EACrBnH,gBAAgB,EAChBpB,iBAAkB,IAdAt/G,sFAmBM,OAAxBhH,KAAK0uH,gBACLhvH,aAAaM,KAAK0uH,4DAItB,IAAM5vC,EAA2B,GACjC9+E,KAAKuuH,8BAAgC,EAChCvuH,KAAKoN,MAAMuhB,gBAAgBlG,IAC5Bq2D,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,mBAG6B,IAAtDn6C,KAAKoN,MAAMuhB,gBAAgBc,gBAAgBlvB,QAC3Cu+E,EAASjxD,KAAK7tB,KAAKoN,MAAMg/E,qBAAqBpsF,KAAKoN,MAAM+uC,UAAWn8C,KAAKoN,MAAMlK,eAEnFlD,KAAK8uH,gBAEL9uH,KAAKoN,MAAM44F,sBAAsBptB,+BAAiC54E,KAAK4vH,4BAA4B5vH,KAAKoN,MAAM44F,sBAAsB59E,MAGpI,IAAI4mG,IAAiBhvH,KAAKoN,MAAMuhB,gBAAgB+jD,qBAAiEtvE,GAA/CpD,KAAKoN,MAAMuhB,gBAAgB4B,iBAC7FvwB,KAAKoN,MAAM++E,aACXnsF,KAAK+uH,8BAA8BC,GAEnCvnH,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAK+pF,WAAY/pF,KAAK+pF,6CA8c5C,IAAAviF,EAAAxH,KAAAsV,EACmEtV,KAAKoN,MADxEmI,EAAAD,EACGE,eADH,IAAAD,EACa,GADbA,EACiBoZ,EADjBrZ,EACiBqZ,gBAAiBxG,EADlC7S,EACkC6S,cAAeqmE,EADjDl5E,EACiDk5E,cADjD1xB,EAEwI98D,KAAK+N,MAA1IgzG,EAFHjkD,EAEGikD,iBAAkBl8D,EAFrBiY,EAEqBjY,QAASsqE,EAF9BryD,EAE8BqyD,mBAAoBY,EAFlDjzD,EAEkDizD,mBAAoBpJ,EAFtE7pD,EAEsE6pD,yBAA0BvB,EAFhGtoD,EAEgGsoD,oBAAqBsC,EAFrH5qD,EAEqH4qD,eACpHwK,EAAclyH,KAAKiyH,iBACnBkC,EAAoCn0H,KAAKk0H,sBAC/Cl0H,KAAKoN,MAAM44F,sBAAsBptB,+BAAiC54E,KAAK4vH,4BAA4B5vH,KAAKoN,MAAM44F,sBAAsB59E,MACpI,IAAMogG,EAAyBxoH,KAAK2vH,4BAC9ByE,OAAgEhxH,GAA7CpD,KAAKoN,MAAMuhB,gBAAgB+jD,gBAAqC1yE,KAAKoN,MAAM44F,sBAAsBptB,+BAE1H,OACI1qE,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQijD,MACpBvqD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GAEnB99C,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQC,OAAOvH,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAW+vB,EAAgB5N,QAAQ7E,OACjFhO,EAAAhP,EAAAiP,cAAA,OAAKorB,IAAK86F,KAAgBp+G,UAAWT,EAAQ8+G,WAAY96F,IAAI,oBAC7DtrB,EAAAhP,EAAAiP,cAACo+G,GAAD,CACIp5C,eAAgBxkD,EAAgBwkD,eAChCjiB,UAAWghE,GAAeA,EAAYhhE,UACtC7iC,SAAU6jG,GAAeA,EAAY7jG,SACrCkwB,MAAO2zE,GAAeA,EAAY3zE,MAClC1C,MAAOq2E,GAAeA,EAAYr2E,MAClCm2B,gBAAekgD,KAGvBhkH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC+U,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GAC7B99C,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQC,QAAM,GACVliF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAWT,EAAQ++G,oBAClCrmH,EAAAhP,EAAAiP,cAACqmH,GAAD,CACIzqG,UAAW5B,EAAcC,KACzBg9B,SAAUplD,KAAKqlD,aACfu6D,WAAY5/G,KAAK6yH,0BACjBnkC,YAAa//D,EAAgB5N,QAAQ7E,KACrCsyE,cAAeA,MAI3BtgF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC+U,MAAI,EAACmO,GAAI,GAAInjB,UAAWT,EAAQw4E,SAAUvvB,aAAa,gBACnEvwD,EAAAhP,EAAAiP,cAACsmH,GAAD,CACI5vE,QAAS7kD,KAAK+N,MAAM+3C,WACpBnkC,SAAU3hB,KAAKi0H,6BAA+BtlG,EAAgB4B,kBAAoB7iB,GAAKyjB,iBACvFuhD,eAAgB/jD,EAAgB+jD,eAChCttB,SAAUplD,KAAKqlD,aACfu6D,WAAY5/G,KAAK6yH,+BAKjC3kH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GAAI1D,QAAS,EAAGryC,UAAWT,EAAQk/G,0BACrDP,GACGjmH,EAAAhP,EAAAiP,cAACwmH,GAAD,CAAcx4E,UAAWn8C,KAAKoN,MAAM+uC,UAAWj5C,aAAclD,KAAKoN,MAAMlK,gBAGhFgL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGryC,UAAWT,EAAQk/G,0BAC3CxmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAGnD,GAAI,GAC1B36C,EAAAhP,EAAAiP,cAACymH,GAAD,CACIloG,qBAAsB1sB,KAAKoN,MAAM03D,UAAUp4C,qBAC3CwC,WAAYlvB,KAAKoN,MAAMuhB,gBACvBkmG,qBAAsBhwE,EACtB4jE,8BAA+BzoH,KAAKmyH,4BACpC5H,qBAAoB,eAAA7oH,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAE,SAAAgC,EAAOmpH,GAAP,OAAArrH,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA7B,KAAA,EAEdgI,EAAKoG,SAAS,CAAEi3C,SAAS,IACzBr9C,EAAK4F,MAAMuhB,gBAAgBmB,yBAA2Bw6F,EAHxCjpH,EAAA5B,KAAA,EAKR+H,EAAK4F,MAAM0nH,mBAAX/1H,OAAA0G,EAAA,EAAA1G,CAAA,GACCyI,EAAK4F,MAAMuhB,gBADZ,CAEFyc,eAAWhoC,EACXyrB,aAASzrB,EACTsc,cAAelY,EAAK4F,MAAMuhB,gBAAgBjP,cAAgBlY,EAAK4F,MAAMuhB,gBAAgBjP,mBAAgBtc,EACrGmtB,iBAAkB3B,IAAOuN,MAAME,SAC/Bq2C,oBAAgBtvE,IACjBoE,EAAKuG,MAAMs+G,sBAAuB/B,GAZvB,OAcd9iH,EAAKoG,SAAS,CAAE2kH,mCAAmC,IAInD/qH,EAAKuqH,mBAAmBvqH,EAAK4F,MAAMuhB,gBAAgB5N,QAAQ0H,GAAIjhB,EAAK4F,MAAMuhB,gBAAgBlG,IAlB5E,cAAApnB,EAAA7B,KAAA,EAqBdgI,EAAKoG,SAAS,CAAEi3C,SAAS,IArBXxjD,EAAA0zH,OAAA,4BAAA1zH,EAAAxB,SAAAsB,EAAA,qBAAF,gBAAArB,GAAA,OAAA4B,EAAA3B,MAAAC,KAAAC,YAAA,GAwBpByqH,qBAAsB1qH,KAAKqyH,yBAC3B3K,eAAgBA,EAChBc,uBAAwBA,KAGhCt6G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAGnD,GAAI,EAAG5yC,UAAWT,EAAQw4E,UAChD9/E,EAAAhP,EAAAiP,cAAC6mH,GAAD,CACInwE,QAASA,EACTo8D,YAAajhH,KAAK0xH,uBAClBuD,cAAej1H,KAAK2xH,qBACpB5Q,iBAAkBA,EAClBp/F,UAAWgN,EAAgB4B,iBAC3B4rB,UAAWn8C,KAAKoN,MAAM+uC,UACtBj5C,aAAclD,KAAKoN,MAAMlK,aACzB01E,+BAAgCw7C,EAChC5S,SAAUxhH,KAAK+N,MAAM8gH,oBACrB1N,oBAAqBnhH,KAAKoN,MAAMuhB,gBAAgBmB,2BAGpD5hB,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ0/G,cACxBhnH,EAAAhP,EAAAiP,cAACgnH,GAAD,CACItwE,QAASA,EACTljC,UAAWgN,EAAgB4B,qBAIvCriB,EAAAhP,EAAAiP,cAACinH,GAAD,CACI1mC,YAAa//D,EAAgB5N,QAAQ7E,KACrCvc,KAAMwvH,EACNhpE,OAAQnmD,KAAKovH,iBACb9J,iBAAkBtlH,KAAK4xH,sBACvBlM,iBAAkB1lH,KAAK2yH,sBACvBvN,oBAAqBA,EACrBuB,yBAA0BA,EAC1Bp9F,qBAAsBvpB,KAAKoN,MAAM03D,UAAUp4C,qBAC3C85F,gBAAiBxmH,KAAKqxH,+BACtB/yE,iBAAkBt+C,KAAKoN,MAAMuhB,gBAAgB2vB,iBAC7C2nE,0BAA2BjmH,KAAK8zH,uBAAuBpyG,GAAuBiD,6BAC9EuhG,0BAA2BlmH,KAAK8zH,uBAAuBpyG,GAAuB6D,6BAC9EqgG,kBAAmB5lH,KAAKq7F,eAAe35E,GAAuBiD,6BAC9DmhG,kBAAmB9lH,KAAKq7F,eAAe35E,GAAuB6D,6BAC9D8/F,cAAerlH,KAAKoN,MAAM+a,cAAcC,KAAK7nB,OAC7CgmH,sBAAyBvmH,KAAKoN,MAAMuhB,gBAAgBmB,yBACpDw2F,iBAAoBtmH,KAAK+N,MAAMu4G,iBAC/BI,cAAe1mH,KAAKsxH,+BAGvBtxH,KAAK+N,MAAMgiH,oBACR7hH,EAAAhP,EAAAiP,cAACknH,GAAD,CACI11H,KAAMowH,EACN5pE,OAAQnmD,KAAK8yH,qBACbptE,SAAU1lD,KAAKgzH,oBACfrP,WAAY3jH,KAAKs1H,yEAhYjC,OAAOt1H,KAAKoN,MAAM44F,sBAAsB59E,KAAK5nB,IAAI,SAAAmuD,GAAkC,IAA/BlmC,EAA+BkmC,EAA/BlmC,GAAI+c,EAA2BmpB,EAA3BnpB,YAAagV,EAAcmU,EAAdnU,QACjE,MAAQ,CACJ/xB,GAAIA,EACJg8F,UAAWj/E,EACXk/E,QAASxxF,GAAWsnB,GACpBshB,UAAU,YAzQQvtD,IAAMC,eA4tBzBquC,oBACXvlC,aAjFW,SAAC4rC,GAAD,IAAAqyE,EAAAC,EAAA,OAAkB59G,aAAa,CAC1C6gD,MAAI88D,EAAA,GAAAx2H,OAAA2pD,GAAA,EAAA3pD,CAAAw2H,EACCryE,EAAMyF,YAAYC,GAAG,MAAQ,CAC1B/uC,aAAcqpC,EAAMoF,QAAQ,KAFhCvpD,OAAA2pD,GAAA,EAAA3pD,CAAAw2H,EAICryE,EAAMyF,YAAY8sE,KAAK,MAAQ,CAC5B57G,aAAcqpC,EAAMoF,QAAQ,OALhCitE,GAQJb,yBAA0B,CACtBx9G,UAAWgsC,EAAMoF,QAAQ,OAE7BgsE,WAAY,CACRx4G,SAAU,IACVjC,aAAcqpC,EAAMoF,QAAQ,IAEhC7yC,MAAO,CACH2E,YAAa8oC,EAAMoF,QAAQ,GAE3BzuC,aAAcqpC,EAAMoF,QAAQ,IAEhCisE,mBAAoB,CAChBlmH,UAAW,QACX6I,UAAWgsC,EAAMoF,QAAQ,GACzBzuC,aAAcqpC,EAAMoF,QAAQ,IAEhCotE,iBAAkB,CACdr8G,WAAY,EACZlC,YAAa,GAEjB62E,UAAQwnC,EAAA,GAAAz2H,OAAA2pD,GAAA,EAAA3pD,CAAAy2H,EACHtyE,EAAMyF,YAAYC,GAAG,MAAQ,CAC1BxuC,YAAa8oC,EAAMoF,QAAQ,KAF3BvpD,OAAA2pD,GAAA,EAAA3pD,CAAAy2H,EAIHtyE,EAAMyF,YAAY8sE,KAAK,MAAQ,CAC5Bh+G,WAAYyrC,EAAMoF,QAAQ,OAL1BktE,GAQRN,YAAa,CACT3jH,OAAQ2xC,EAAMoF,QAAQ,MAE1BqtE,QAAS,CACLv7G,YAAa8oC,EAAMoF,QAAQ,IAC3BpxC,UAAWgsC,EAAMoF,QAAQ,QAuC7BxL,YA3BJ,SAAyB/uC,GACrB,MAAO,CACH4gB,gBAAiB5gB,EAAMmhB,WACvB41C,UAAW/2D,EAAMqb,KACjB48E,sBAAuBj4F,EAAM6rE,gBAC7BzxD,cAAepa,EAAM4c,SACrB6jE,cAAe9/D,GAAiB3gB,EAAMmhB,cAI9C,SAA4B7vB,EAAe2oD,GACvC,MAAO,CACHmkC,WAAY,kBAAM9sF,EAAS8sF,GAAWnkC,EAAS7L,UAAW6L,EAAS9kD,gBACnEi3C,gBAAiB,kBAAM96C,EAAS86C,GAAgB6N,EAAS9kD,gBACzDgjG,sBAAuB,SAAC/pD,EAAWj5C,GAAZ,OAA6B7D,EAAS6mG,GAAsB/pD,EAAWj5C,KAC9Fqb,iBAAkB,SAAC5f,GAAD,OAAaU,EAASkf,GAAiB5f,KACzDqzH,yBAA0B,SAAC71E,EAAWj5C,GAAZ,OAA6B7D,EnD/rBxD,SAAkC88C,EAAmBj5C,GACxD,sBAAA8uG,EAAAjzG,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA8yG,EAAO5yG,GAAP,IAAAu2H,EAAAC,EAAA,OAAA52H,EAAAC,EAAAI,KAAA,SAAA6yG,GAAA,cAAAA,EAAA3yG,KAAA2yG,EAAA1yG,MAAA,cAAA0yG,EAAA3yG,KAAA,EAGKq2H,EAAQ,EAHb1jB,EAAA1yG,KAAA,EAIO,IAAIgI,QAAQ,SAACsgC,EAAK+tF,GACpBF,EAAchlH,YAAY,WACtBilH,IACA3sF,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,4BACCgE,KAAK,SAACtG,GACCA,EAAK2yB,MAAQ,EACbwU,KACOnnC,EAAKm1H,2BAA6BF,EAAQ,IACjDC,OAGb,OAfR,OAiBCnrF,cAAcirF,GAjBfzjB,EAAA1yG,KAAA,gBAAA0yG,EAAA3yG,KAAA,EAAA2yG,EAAAxqD,GAAAwqD,EAAA,SAmBCxnE,cAAcirF,GAnBf,yBAAAzjB,EAAAtyG,SAAAoyG,EAAA,iBAAP,gBAAAn+C,GAAA,OAAAk+C,EAAAjyG,MAAAC,KAAAC,YAAA,GmD8rBoE+xH,CAAyB71E,EAAWj5C,KACpGohG,mBAAoB,SAACyuB,GAAD,OAAsB1zH,EAASilG,GAAmByuB,KACtE+B,mBAAoB,SAAC5lG,EAAY8mG,EAAuB1L,GAApC,OAAyDjrH,EpIxkB9E,SAA4B6vB,EAA2Bm9F,EAAmD/B,GAC7G,sBAAA2L,EAAAl3H,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA+2H,EAAO72H,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA62H,GAAA,cAAAA,EAAA32H,KAAA22H,EAAA12H,MAAA,UAAA02H,EAAA32H,KAAA,GAEK8qH,EAFL,CAAA6L,EAAA12H,KAAA,eAAA02H,EAAA12H,KAAA,EAGWypC,GAAI,uBAAA3kC,OAAwB2qB,EAAWnO,QAAQ0H,GAA3C,KAAAlkB,OAAiD2qB,EAAWzG,GAA5D,sBAAoF,CAAE0gB,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUy/G,KAHzI,OAAA8J,EAAA12H,KAAA,sBAAA02H,EAAA12H,KAAA,EAMWypC,GAAI,uBAAA3kC,OAAwB2qB,EAAWnO,QAAQ0H,GAA3C,KAAAlkB,OAAiD2qB,EAAWzG,GAA5D,aAA2E,CAAE0gB,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUy/G,KANhI,cAAA8J,EAAA12H,KAAA,GAQOJ,EAAS86C,GAAgBjrB,EAAWzG,KAR3C,eASCppB,EAASX,EAAgB,6BAA8B,YATxDy3H,EAAA12H,KAAA,GAUOJ,EAAS6mG,GAAsBh3E,EAAWnO,QAAQ0H,GAAIyG,EAAWzG,KAVxE,QAAA0tG,EAAA12H,KAAA,uBAAA02H,EAAA32H,KAAA,GAAA22H,EAAAxuE,GAAAwuE,EAAA,SAYC92H,EAAS0B,EAAyBo1H,EAAAxuE,GAAK,2CAZxCwuE,EAAAxuE,GAAA,yBAAAwuE,EAAAt2H,SAAAq2H,EAAA,kBAAP,gBAAAE,GAAA,OAAAH,EAAAl2H,MAAAC,KAAAC,YAAA,GoIukB0F60H,CAAmB5lG,EAAY8mG,EAAuB1L,KAC5IgI,mBAAoB,kBAAMjzH,EpIrjB9B,eAAAg3H,EAAAt3H,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAm3H,EAAOj3H,EAAeixC,GAAtB,IAAAphB,EAAAtuB,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAAi3H,GAAA,cAAAA,EAAA/2H,KAAA+2H,EAAA92H,MAAA,cAAA82H,EAAA/2H,KAAA,EAEO0vB,EAAaohB,IAAWphB,WACZohB,IAAWphB,WAAWnO,QAAQ0H,GAHjD8tG,EAAA92H,KAAA,EAIoBypC,GAAI,eAAA3kC,OAAgB2qB,EAAWzG,GAA3B,aAA0C,CAAE0gB,OAAQ,SAJ5E,cAIOvoC,EAJP21H,EAAA7uE,KAAA6uE,EAAA92H,KAAA,EAMOJ,EAAS86C,GAAgBjrB,EAAWzG,KAN3C,cAAA8tG,EAAA92H,KAAA,GAOOJ,EAASgvD,GAAen/B,EAAWnO,QAAQ0H,GAAIyG,EAAWzG,KAPjE,eAQCppB,EiFjOR,eAAA6B,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,OAGHJ,EAASm3H,GAFyC,KAD/C,wBAAAn1H,EAAAxB,SAAAsB,MAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,IjFkOQZ,EAASX,EAAgB,oCAAqC,YAT/D63H,EAAAx5E,OAAA,SAUQn8C,GAVR,cAAA21H,EAAA/2H,KAAA,GAAA+2H,EAAA5uE,GAAA4uE,EAAA,SAYCl3H,EAAS0B,EAAyBw1H,EAAA5uE,GAAK,uCAZxC4uE,EAAA5uE,GAAA,yBAAA4uE,EAAA12H,SAAAy2H,EAAA,kBAAP,gBAAA3lE,EAAA8lE,GAAA,OAAAJ,EAAAt2H,MAAAC,KAAAC,YAAA,KoIsjBI+rF,iBAAkB,SAAC98D,GAAD,OAA+B7vB,EAAS2sF,GAAiB98D,KAC3Ek9D,qBAAsB,SAACjwC,EAAmBj5C,GAApB,OAA6C7D,EAAS+sF,GAAqBjwC,EAAWj5C,QAIrG25C,CAGbyxE,ICrxBIx3G,GAAiD,CAC/C4/G,OAAQ,CACJ5pE,gBAAiB,OAAS/jD,EAAQ,MAAgC,IAClE4tH,iBAAkB,YAClBplH,OAAQ,OACR2F,UAAW,QAEf0/G,WAAY,CACRt8G,QAAS,eACTvC,WAAY,OACZqC,YAAa,OACbrD,MAAO,QACPyF,WAAY,OACZsqE,WAAY,aAIT+vC,GAlCW,WAElB,OAAGnpH,GAAKyjB,iBACIjjB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACJJ,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO4/G,QACnBxoH,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO8/G,YAAjB,+EACA1oH,EAAAhP,EAAAiP,cAAA,WADA,iHAMG,MCOb2oH,eAEF,SAAAA,EAAY1pH,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA82H,IACtB9vH,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA+3H,GAAAvpH,KAAAvN,KAAMoN,KAEDW,MAAQ,CACT82C,SAAS,GAJS79C,mFAStBhH,KAAK4N,SAAS,CAAEi3C,SAAS,qCAGpB,IAAAvvC,EACyBtV,KAAKoN,MAA3BgF,EADHkD,EACGlD,MAAO8c,EADV5Z,EACU4Z,WACT7c,EAAsBrE,GAAOuuC,iBAAiBhqC,OAAQrP,aAAc/C,QAAQ,IAAK,IACjFm5G,EAAmBtrG,GAAOuuC,iBAAiBhqC,OAAQ4pC,UAAWh8C,QAAQ,IAAK,IAC3E+C,EAAekP,EAAMG,OAAOF,GAC5B8pC,EAAY/pC,EAAMG,OAAO+mG,GAC/B,OACIprG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKtO,KAAK+N,MAAM82C,QACR32C,EAAAhP,EAAAiP,cAACq8C,GAAD,MAEAt8C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAAGkkB,GAAsBtD,GACrBhhB,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAO6xC,UAAWwyE,KAElB7oH,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAC6oH,GAAD,CAAqB76E,UAAWA,EAAWj5C,aAAcA,IACzDgL,EAAAhP,EAAAiP,cAAC8oH,GAAD,CAAc96E,UAAWA,EAAWj5C,aAAcA,EAAco7C,iBAAkBt+C,KAAKoN,MAAM8hB,WAAWovB,mBACxGpwC,EAAAhP,EAAAiP,cAAC+oH,GAAD,gBA/BG3oH,IAAMC,eAsDtBsuC,mBANf,SAAyB/uC,GACrB,MAAO,CACHmhB,WAAYnhB,EAAMmhB,aAIX4tB,CAAyBg6E,wFCvE3Bn8B,GAAY,kBAanBxY,GAAYxqE,aAAWC,aAAa,CACtCu/G,cAAe,CACXp/G,WAAY,IACZE,OAAQ,QAEZm/G,mBAAoB,CAChBrgH,MAAO,WACPg/C,eAAgB,YAChB18C,WAAY,WAOdg+G,GAAoBl5E,GAAe,KA+B1BgH,gBAAkD,CAC7DF,KAAM01C,IADKx1C,CA7BkB,SAAC/3C,GAC9B,IAAMoI,EAAU2sE,GAAU/0E,GAC1B,OACIc,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAClBn3C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,+BACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KACI1vC,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,OACLqoC,UAAWnD,GACXntC,MAAM,OACNsxC,WAAS,EACT+xE,WAAS,EACTC,QAAQ,IACRC,KAAK,IACLhyE,SAAU6xE,GACVx5E,UAAQ,EACRj/C,QAAQ,WACR6mD,WAAS,KAGjBv3C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,6DACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ4hH,oBAA/B,yBACAlpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,cACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAAgB/pH,EAAMqqH,YACrDvpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,+BAA2E/pH,EAAMshF,gBCzCvF53E,GAASc,aAAa,CACxB8/G,UAAW,CACP57G,SAAU,QACVpI,OAAQ,IACR0F,MAAO,QAEXu+G,cAAe,CACXngH,QAAS,KAEbogH,UAAW,CACP7gH,MAAO,mBACPW,WAAY,SACZI,SAAU,OACVyE,cAAe,SACf/E,QAAS,oBACTgF,WAAY,QAEhBq7G,WAAY,CACRrgH,QAAS,oBACTT,MAAO,UACPW,WAAY,uCACZI,SAAU,OACVC,WAAY,OACZyE,WAAY,OACZZ,gBAAiB,UACjB6iD,aAAc,QAElBq5D,eAAgB,CACZpgH,WAAY,SACZX,MAAO,UACP1I,UAAW,SACXyJ,SAAU,OACVC,WAAY,OACZoD,UAAW,SACXoB,cAAe,SACfrF,UAAW,QAEf6gH,cAAe,CACX3+G,MAAO,OACP7H,OAAQ,OACRymH,cAAe,GAEnBC,eAAgB,CACZ7+G,MAAO,SACP7H,OAAQ,OACRqK,gBAAiB,WAErBs8G,eAAgB,CACZ9+G,MAAO,SACP7H,OAAQ,OACRqK,gBAAiB,WAErBu8G,eAAgB,CACZ/+G,MAAO,SACP7H,OAAQ,MACRqK,gBAAiB,WAErBw8G,oBAAqB,CACjBrhH,MAAO,kBACPW,WAAY,SACZI,SAAU,OACVC,WAAY,OACZwE,cAAe,MACfC,WAAY,OACZnO,UAAW,SACX6I,UAAW,MACX2C,aAAc,OAElBw+G,eAAgB,CACZhqH,UAAW,UAEfiqH,mBAAoB,CAChB/mH,OAAQ,OACR6H,MAAO,SAEXm/G,aAAc,CACVlqH,UAAW,SACXmJ,QAAS,oBACToE,gBAAiB,aAErB48G,gBAAiB,CACbzhH,MAAO,UACPW,WAAY,SACZI,SAAU,OACV0E,WAAY,OACZnO,UAAW,QAEfoqH,iBAAkB,CACdxgH,OAAQ,IACR5J,UAAW,YAGb8zE,GAAYxqE,aAAWb,IAsGd4hH,GApGa,SAACtrH,GAAiB,IAEtCzN,EASAyN,EATAzN,KACAg5H,EAQAvrH,EARAurH,iBACAjzE,EAOAt4C,EAPAs4C,SACAN,EAMAh4C,EANAg4C,SACAP,EAKAz3C,EALAy3C,QACAuI,EAIAhgD,EAJAggD,SACA0qE,EAGA1qH,EAHA0qH,eACAF,EAEAxqH,EAFAwqH,UACAgB,EACAxrH,EADAwrH,YAGEpjH,EAAU2sE,GAAU/0E,GACpB27C,GAAc,IAAIC,MAAOC,cAE/B,OACI/6C,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMA,EAAM+V,QAASgwC,EAAUjwC,MAAOmjH,GAC9C1qH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,KACKyP,GAELl/C,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,KACIzvC,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOw+D,YAAY,IAAIC,YAAY,KAC/B5qH,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAW8rB,MAAM,SAASrwE,UAAWT,EAAQmiH,eACzCzpH,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOw+D,YAAY,IAAIC,YAAY,IAAI7iH,UAAWT,EAAQkiH,WACtDxpH,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQqiH,YAC1B3pH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CACI3nC,UAAWT,EAAQsiH,gBAClBA,GAEL5pH,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUtkD,UAAWT,EAAQuiH,eACzB7pH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQyiH,iBAC9B/pH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0iH,iBAC9BhqH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ2iH,oBAI1CjqH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQoiH,WAAYA,GACpC1pH,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUtkD,UAAWT,EAAQuiH,eACzB7pH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQyiH,iBAC9B/pH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ0iH,iBAC9BhqH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ2iH,oBAI1CjqH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ4iH,qBAAxB,gDASxBlqH,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQ+iH,cAC1BrqH,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOw+D,YAAY,IAAIC,YAAY,KAC/B5qH,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQgjH,iBAC1BtqH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQijH,kBAA/B,OACM1vE,EADN,2VAEI76C,EAAAhP,EAAAiP,cAAA,KAAGrI,KAAK,oCAAoCyjD,OAAO,SAASC,IAAI,uBAAhE,oBAY5Ct7C,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAASgvC,EAAU3uC,MAAM,WAAjC,UAGA7I,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,eACHo8B,QAASA,EACT9tC,MAAM,UACNL,QAAS0uC,GAERuzE,MC3KfI,eACF,SAAAA,EAAY3rH,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA+4H,IACtB/xH,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAg6H,GAAAxrH,KAAAvN,KAAMoN,KAOV4rH,cAR0B,eAAAl6H,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAQV,SAAAC,EAAOkyD,GAAP,IAAAvnC,EAAAkvG,EAAAC,EAAA,OAAAj6H,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UACZuH,EAAK4G,SAAS,CAAEurH,UAAU,IACpBpvG,EAAY/iB,EAAKoG,MAAM2c,UACvBkvG,EAAWlvG,EAAUvpB,IAAIwG,EAAKoyH,eAC9BF,EAAyB,CAC3B9vF,KAAMkoB,EAAWloB,KACjBrf,UAAWkvG,GANH15H,EAAAC,KAAA,EAoBwC,IAVPuqB,EAAU7c,OAAO,SAACmb,GACvD,IAAKA,EAAIiyB,oBAAyD,IAAnCjyB,EAAIiyB,mBAAoB/5C,OACnD,OAAO,EAEX,IAAM84H,EAAkChxG,EAAIiyB,mBAE5C,OADmE,OAA9B++E,EAAiB,GAAGx9E,YAAgDz4C,IAA9Bi2H,EAAiB,GAAGx9E,QAK9Dt7C,OApB7B,CAAAhB,EAAAE,KAAA,gBAAAF,EAAAE,KAAA,EAqBEuH,EAAKoG,MAAMksH,YAAYtyH,EAAKoG,MAAMuhB,gBAAgB5N,QAAQ0H,GAAIzhB,EAAKoG,MAAMuhB,gBAAgBlG,GAAIywG,GArB/F,OAsBJlyH,EAAKoG,MAAMsI,UAtBPnW,EAAAE,KAAA,iBAyBJuH,EAAKoG,MAAM1O,gBAAgB,sDAAuD,SAzB9E,QAAAa,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAooD,GAAApoD,EAAA,SA4BRyH,EAAKoG,MAAMmsH,yBAAXh6H,EAAAooD,GAAwC,+BA5BhC,eAAApoD,EAAAC,KAAA,GA8BRwH,EAAK4G,SAAS,CAAEurH,UAAU,IA9BlB55H,EAAAw1H,OAAA,6BAAAx1H,EAAAM,SAAAT,EAAA,wBARU,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAAA+G,EA0C1BoyH,cAAgB,SAAC/wG,GAWb,MAV0C,CACtC6pC,YAAa7pC,EAAI6pC,YACjBrW,MAAOxzB,EAAIiyB,mBAAmB,GAAGuB,MACjCqV,UAAW7oC,EAAI6oC,UACf7iC,SAAUhG,EAAIgG,SACd8jC,SAAU9pC,EAAI8pC,SACdxuD,WAAY0kB,EAAII,GAChB+wG,0BAA2B5zH,OAAOC,SAAS2C,OAASwF,GAAOyrH,wBAAwBxrH,OAlDjEjH,EA2E1B0yH,qBAAuB54G,aAAW,SAACoO,GAC/B,OAAOA,EAAWkc,UAAW/O,OAAO,UAzEpCr1B,EAAK+G,MAAQ,CACTorH,UAAU,GAJQnyH,wEAwFtB,OACIkH,EAAAhP,EAAAiP,cAACwrH,GAAD,CACIh6H,KAAMK,KAAKoN,MAAMzN,KACjBg5H,iBAAiB,oBACjBvrE,SAAUl/C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,gIAGVwpH,eAAe,2BACfc,YAAY,oBACZxzE,SAAUplD,KAAKoN,MAAMypD,WACrB+gE,UACI1pH,EAAAhP,EAAAiP,cAACyrH,GAAD,CACI5zE,cAAehmD,KAAKgmD,cACpBZ,SAAUplD,KAAKg5H,cACftzE,SAAU1lD,KAAKoN,MAAMsI,QACrBmkH,oBAAqB75H,KAAK65H,oBAC1BpC,WAAkD,OAAtCz3H,KAAKoN,MAAMuhB,gBAAgBokD,OAAkB/yE,KAAKoN,MAAMuhB,gBAAgBokD,OAAOC,YAAc,GACzG0b,YAAoD,OAAvC1uF,KAAKoN,MAAMuhB,gBAAgB5N,QAAmB/gB,KAAKoN,MAAMuhB,gBAAgB5N,QAAQ7E,KAAO,KAG7G2oC,QAAS7kD,KAAK+N,MAAMorH,SACpBzzE,SAAU1lD,KAAKoN,MAAMsI,gDArC7B,OAdK1V,KAAKoN,MAAMuhB,iBAAoB3uB,KAAKoN,MAAMuhB,gBAAgByc,UAG9C,CACThC,KAAM,4CACAppC,KAAKoN,MAAMuhB,gBAAgB5N,QAAQ7E,KADnC,kCAGAlc,KAAKoN,MAAMuhB,gBAAgByc,UAAW/O,OAAO,MAH7C,OAKAr8B,KAAKoN,MAAMuhB,gBAAgBE,QAASwN,OAAO,MAL3C,6FAHG,CAAE+M,KAAM,gDAqBzB,OAAIppC,KAAKoN,MAAMuhB,gBAAgByc,UACpBprC,KAAK05H,qBAAqB15H,KAAKoN,MAAMuhB,iBAErC,UApFsBpgB,IAAMC,eA0IhCquC,oBACXC,YAjBJ,SAAyB/uC,GACrB,MAAO,CACH4gB,gBAAiB5gB,EAAMmhB,aAI/B,SAA4B7vB,GACxB,MAAO,CACHgzD,qBAAsB,SAAC+B,GAAD,OAAuB/0D,EAAS8vD,GAAkBiF,KACxE11D,gBAAiB,SAACC,EAAiBm7H,GAAlB,OAAuDz6H,EAASX,EAAgBC,EAASm7H,KAC1GP,yBAA0B,SAACv4H,EAASrC,GAAV,OAAsBU,EAAS0B,EAA0BC,EAAIrC,KACvFk4D,WAAY,kBAAMx3D,EAASoV,aAAOslH,MAClCT,YAAa,SAACn9E,EAAmBj5C,EAAsBg2H,GAA1C,OAAqE75H,E1J9DnF,SAAiC88C,EAAmBj5C,EAAsB82H,GAC7E,sBAAAhoB,EAAAjzG,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA8yG,EAAO5yG,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA6yG,GAAA,cAAAA,EAAA3yG,KAAA2yG,EAAA1yG,MAAA,cAAA0yG,EAAA3yG,KAAA,EAAA2yG,EAAA1yG,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,mBAAsE,CAC5EimC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUotH,KAJ1B,cAAA7nB,EAAA1yG,KAAA,EAOOJ,EAASgvD,GAAelS,EAAWj5C,IAP1C,OAAAivG,EAAA1yG,KAAA,sBAAA0yG,EAAA3yG,KAAA,EAAA2yG,EAAAxqD,GAAAwqD,EAAA,SASC9yG,EAAS0B,EAAyBoxG,EAAAxqD,GAAK,mCATxCwqD,EAAAxqD,GAAA,yBAAAwqD,EAAAtyG,SAAAoyG,EAAA,iBAAP,gBAAA39C,GAAA,OAAA09C,EAAAjyG,MAAAC,KAAAC,YAAA,G0J6D+Fg6H,CAAwB99E,EAAWj5C,EAAcg2H,QAIrIr8E,CAEbk8E,ICpKI52C,GAAYxqE,aAAW,SAACurC,GAAD,MAAmB,CAC5Cg3E,WAAY,CACRt+G,gBAAiB,UACjBuC,aAAc,OACd7D,QAAS,OACTlB,MAAO,OACP7H,OAAQ,OACRiL,WAAY,QACZ1E,SAAU,QACVzJ,UAAW,SACXmJ,QAAS,QACTT,MAAO,QACPC,SAAU,YAEdy0G,OAAQ,CACJz0G,SAAU,WACVhI,IAAK,MACLoJ,KAAM,MACNE,UAAS,4BAkBF6hH,GAdM,SAAC/sH,GAClB,IAAMoI,EAAU2sE,GAAU/0E,GAC1B,OACIc,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOrI,EAAMgtH,cAAgB,GAC7BhlG,QACIlnB,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ0kH,YACpBhsH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQi2G,QAASr+G,EAAMmrB,YCE5C8hG,GAhCkD9rH,IAAMizC,KAAK,SAACp0C,GACzE,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAEQlB,EAAM20C,OAAOn5C,IAAI,IAAMwE,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAClD,OACI7zC,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,SACJqoC,UAAW,SAACujE,GAAD,OAAmC55G,EAAAhP,EAAAiP,cAAA,WAAM25G,EAAWp9G,MAAM3D,WAG7EmH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,UACJqoC,UAAWnD,GACXoE,SAAU3J,GACV5nC,MAAO,gBACPsxC,WAAS,EACT3mD,QAAQ,WACRwkD,YAAY,yBCZjCk3E,GANgB,SAACltH,GAC5B,OACIc,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,iBAAmBqoC,UAAW81E,MCV1C1/B,GAAY,uBA0EnB7jF,GAAiD,CACnD4gH,UAAW,CACP57G,SAAU,QACVpI,OAAQ,IACR0F,MAAO,SAIA+rC,gBAAoC,CAC/CF,KAAM01C,IADKx1C,CA5DgB,SAAC/3C,GAC5B,OACIc,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAClBn3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,4GAGAzvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,KACIzvC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,KACIv8C,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOw+D,YAAY,IAAIC,YAAY,IAAI1qH,MAAO0I,GAAO4gH,WACjDxpH,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,sBACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,iCAGRtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosH,GAAD,CACItsE,SAAU0sC,OAIrBvtF,EAAMmmB,OAAS,IACZrlB,EAAAhP,EAAAiP,cAACs4E,GAAA,EAAD,CACIliC,UAAU,MACVhxB,MAAOnmB,EAAMmmB,MACbowD,KAAMv2E,EAAMu2E,KACZG,YAAa12E,EAAMoD,KACnBk2E,aAAct5E,EAAMipD,iBACpBswB,oBAAqBv5E,EAAMy2E,yBAM/C31E,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UAGA7I,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,UACH/R,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM86G,UACfnxG,MAAM,WAJV,YCxBVyjH,eAEF,SAAAA,EAAYptH,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAw6H,IACtBxzH,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAy7H,GAAAjtH,KAAAvN,KAAMoN,KAeVqtH,aAAe,SAACnpE,GACZtqD,EAAKqhH,OACL,IAAMqS,EAAiBppE,EAAWopE,eAC5BC,EAAa3zH,EAAKoG,MAAM2c,UAAUvpB,IAAI,SAAAmW,GAAC,OAAI3P,EAAK4zH,6BAA6BjkH,EAAG+jH,KAChF3wG,EAAY/iB,EAAK6zH,yBAAyBF,GAC5C5wG,EAAUxpB,OAAS,EACnByG,EAAKoG,MAAM0tH,aAAa9zH,EAAKoG,MAAM+uC,UAAWn1C,EAAKoG,MAAMlK,aAAc6mB,GAAW7iB,KAC9EF,EAAK4hH,gBAAiB5hH,EAAK6hH,cAG/B7hH,EAAKoG,MAAM1O,gBAAgB,+BAAgC,WAAWwI,KAAKF,EAAK4hH,kBA1B9D5hH,EA6B1B4zH,6BAA+B,SAACvyG,EAAe0yG,GAC3C,IAAMC,EAAaD,EAAa7tH,OAAO,SAAAyJ,GAAC,OAAIA,EAAEhT,aAAe0kB,EAAII,KACjE,GAAIuyG,GAAcA,EAAWz6H,OAAS,GAAKy6H,EAAW,GAAGn/E,MAAO,CAC5D,GAAIxzB,EAAIiyB,oBACJjyB,EAAIiyB,mBAAmB,IACvBjyB,EAAIiyB,mBAAmB,GAAGuB,QAAUm/E,EAAW,GAAGn/E,MAElD,OADAxzB,EAAIiyB,mBAAmB,GAAGuB,MAAQm/E,EAAW,GAAGn/E,MACzC61B,GAA6BrpD,GACjC,IAAKA,EAAIiyB,qBAAuBjyB,EAAIiyB,mBAAmB,GAM1D,OALAjyB,EAAIiyB,mBAAqB,GACzBjyB,EAAIiyB,mBAAmBzsB,KAAK,CACxB45C,YAAaf,GAAYu0D,KACzBp/E,MAAOm/E,EAAW,GAAGn/E,QAElB61B,GAA6BrpD,KA3CtBrhB,EA6D1BqhH,KAAO,kBAAMrhH,EAAK4G,SAAS,CAAE+6G,SAAS,KA7DZ3hH,EA+D1B4hH,gBAAkB,WACd5hH,EAAK4G,SAAS,CAAE+6G,SAAS,IAEzB3hH,EAAKoG,MAAM8tH,aAlEWl0H,EAqE1B6hH,aAAe,WACX7hH,EAAK4G,SAAS,CAAE+6G,SAAS,KAtEH3hH,EAyE1B8hH,YAAc,WACV9hH,EAAKoG,MAAM27G,YACX/hH,EAAKoG,MAAMs4C,YA3EW1+C,EA8E1BoyH,cAAgB,SAAC/wG,GAWb,MAV0C,CACtC6pC,YAAa7pC,EAAI6pC,YACjBrW,MAAOxzB,EAAIiyB,mBAAmB,GAAGuB,MACjCqV,UAAW7oC,EAAI6oC,UACf7iC,SAAUhG,EAAIgG,SACd8jC,SAAU9pC,EAAI8pC,SACdxuD,WAAY0kB,EAAII,GAChB+wG,0BAA2B5zH,OAAOC,SAAS2C,OAASwF,GAAOyrH,wBAAwBxrH,OAtFjEjH,EAqG1Bm0H,kBAAoB,SAAC9yG,GAMjB,MAL+C,CAC3CwzB,MAAQxzB,EAAIiyB,mBAAmB,IAAMjyB,EAAIiyB,mBAAmB,GAAGuB,MAASxzB,EAAIiyB,mBAAmB,GAAGuB,MAAQ,GAC1Gl4C,WAAY0kB,EAAII,GAChBvM,KAAMmM,EAAIuyC,WAzGQ5zD,EA8G1BqvD,iBAAmB,SAACqtB,EAAaC,GAC7B38E,EAAK4G,SAAS,SAAAmpD,GAAS,OAAAh4D,OAAA0G,EAAA,EAAA1G,CAAA,GAChBg4D,EADgB,CAEnB6sB,WAAW7kF,OAAA0G,EAAA,EAAA1G,CAAA,GACJg4D,EAAU6sB,WADP,CAEND,cAnHc38E,EAwH1B68E,oBAAsB,SAACjvD,GACnB,IAAMkvD,EAAclvD,EAAM20B,OAAOxiD,MACjCC,EAAK4G,SAAS,SAAAmpD,GAAS,OAAAh4D,OAAA0G,EAAA,EAAA1G,CAAA,GAChBg4D,EADgB,CAEnB6sB,WAAW7kF,OAAA0G,EAAA,EAAA1G,CAAA,GACJg4D,EAAU6sB,WADP,CAENpzE,KAAMszE,EACNH,KAAM,SA5Hd38E,EAAK+G,MAAQ,CACT61E,WAAY,CACRD,KAAM,EACNnzE,KAAM,IAEVm4G,SAAS,EACT9jE,SAAS,GATS79C,mFAatBhH,KAAK4N,SAAS,CAAEi3C,SAAS,qDAoCJukE,GACrB,IAAIt8G,EAAQ,EACRu8G,EAAa,GAEjB,IAAKv8G,EAAQ,EAAGA,EAAQs8G,EAAM7oH,OAAQuM,SACb1J,IAAjBgmH,EAAMt8G,IACNu8G,EAAWx7F,KAAKu7F,EAAMt8G,IAG9B,OAAOu8G,mCA2EP,OACIn7G,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMzN,KAAM+V,QAAS1V,KAAKoN,MAAMs4C,SAAUjwC,MAAM,uBAClEzV,KAAK+N,MAAM82C,QACR32C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAEAJ,EAAAhP,EAAAiP,cAACitH,GAAD,CACI11E,SAAU1lD,KAAK8oH,YACf9iE,cAAehmD,KAAKgmD,cACpBZ,SAAUplD,KAAKy6H,aACfvS,UAAWloH,KAAK+N,MAAM46G,QACtBjO,UAAW16G,KAAK+N,MAAM82C,QACtBtxB,MAAOvzB,KAAKgmD,cAAc00E,eAAen6H,OACzC81D,iBAAkBr2D,KAAKq2D,iBACvBwtB,oBAAqB7jF,KAAK6jF,oBAC1BF,KAAM3jF,KAAK+N,MAAM61E,WAAWD,KAC5BnzE,KAAMxQ,KAAK+N,MAAM61E,WAAWpzE,8CAxD5B,IAAAhJ,EAAAxH,KAMhB,MAHmB,CACf06H,eAFA16H,KAAKoN,MAAM2c,UAAUvpB,IAAI,SAAAmW,GAAC,OAAInP,EAAK2zH,kBAAkBxkH,aAhG1BpI,IAAMC,eAkL9BquC,oBACXC,YAfJ,SAAyB/uC,GACrB,MAAO,CACH4gB,gBAAiB5gB,EAAMmhB,aAI/B,SAA4B7vB,EAAe2oD,GACvC,MAAO,CACHtpD,gBAAiB,SAACC,EAASC,GAAV,OAAsBS,EAASX,EAAgBC,EAASC,KACzEk8H,aAAc,SAAC3+E,EAAmBj5C,EAAsB6mB,GAA1C,OAAuE1qB,E/J4EtF,SAAsB88C,EAAmBj5C,EAAsB6mB,GAClE,sBAAAksG,EAAAl3H,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA+2H,EAAO72H,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA62H,GAAA,cAAAA,EAAA32H,KAAA22H,EAAA12H,MAAA,cAAA02H,EAAA32H,KAAA,EAAA22H,EAAA12H,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,qBAAwE,CAC9EimC,OAAQ,MACRC,KAAMv5B,KAAKjD,UAAUmd,KAJ1B,cAAAosG,EAAA12H,KAAA,EAMOJ,EAASgvD,GAAelS,EAAWj5C,IAN1C,OAOC7D,EAASX,EAAgB,+BAAgC,YAP1Dy3H,EAAA12H,KAAA,sBAAA02H,EAAA32H,KAAA,EAAA22H,EAAAxuE,GAAAwuE,EAAA,SASC92H,EAAS0B,EAAyBo1H,EAAAxuE,GAAK,yCATxCwuE,EAAAxuE,GAAA,yBAAAwuE,EAAAt2H,SAAAq2H,EAAA,iBAAP,gBAAAmF,GAAA,OAAApF,EAAAl2H,MAAAC,KAAAC,YAAA,G+J7EkG66H,CAAa3+E,EAAWj5C,EAAc6mB,KACpIg/F,UAAW,kBAAM1pH,EAAS0sD,aAAMuvE,SAIzBz+E,CAEb29E,0BCxNWe,GADK/8H,KAC0BD,CAAwC,kCAE7E,SAASi9H,GAA2Bt4H,EAAsBi5C,GAC7D,sBAAAr9C,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAo8H,EAAA,OAAAx8H,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEqEypC,GAAI,8BAAA3kC,OAA+BrB,EAA/B,eAAAqB,OAAyD43C,IAFlI,QAEOs/E,EAFPl8H,EAAAmoD,MAI6BnnD,QACxBlB,EAASk8H,GAA6BE,IAL3Cl8H,EAAAE,KAAA,sBAAAF,EAAAC,KAAA,EAAAD,EAAAooD,GAAApoD,EAAA,SAAAA,EAAAooD,GAAA,yBAAApoD,EAAAM,SAAAT,EAAA,iBAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GCkBG,SAASy7H,GAAuB3tH,GACnC,OAAOA,EAAMqa,KAAKe,KAAK,SAAA+F,GAAU,SALCysG,EAKyBzsG,MAJrBysG,EAA+BC,aADlE,IAA+BD,IAQtC,IAAM56D,GAA4C,CAC9C34C,KAAM,GACN2qD,OAAQ,CACJC,YAAa,GACbn3B,MAAO,GACPo3B,aAAc,KCxBf,IAAM0nB,GAAY,qCAkBnBxY,GAAYxqE,aAAWC,aAAa,CACtCu/G,cAAe,CACXp/G,WAAY,IACZE,OAAQ,QAEZm/G,mBAAoB,CAChBrgH,MAAO,WACPg/C,eAAgB,YAChB18C,WAAY,WA6ELwjC,oBAIXsI,aAAU,CACNF,KAAM01C,GACNn1C,SAtEqB,SAAC3V,EAAQziC,GAElC,OAAIA,EAAMyH,eAEqC,IAFrBzH,EAAMyH,aAAa+mH,aACxC1uH,OAAO,SAAA2uH,GAAC,OAAKzuH,EAAM44C,cAAc41E,cAAgBC,IAAMnwG,SAASte,EAAM44C,cAAc41E,gBACpFvyH,QAAQsD,OAAOkjC,EAAO+rF,eAChB,CACHA,aAAc,kBAGf,IA8DHE,oBAAoB,IAExBh/E,YArBJ,SAAyB/uC,GACrB,MAAO,CACH6tH,aAAchlC,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,kBAI1D,SAA4B1O,GACxB,MAAO,CACHw3D,WAAY,kBAAMx3D,EAASoV,aAAOkmF,SAI3B99C,CAnD6B,SAACzvC,GAAiB,IAAAs0C,EAC1BnzC,IAAMozC,UAAS,GADWC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GACnDy3E,EADmDv3E,EAAA,GAEpDpsC,GAFoDosC,EAAA,GAE1CugC,GAAU/0E,IAE1B,OAAOc,EAAAhP,EAAAiP,cAACwrH,GAAD,CACHh6H,KAAMyN,EAAMzN,KACZg5H,iBAAiB,gBACjBvrE,SAAUl/C,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAC5Bn3C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,kDACA1vC,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,sBACA1vC,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIf,UAAWnD,GACXllC,KAAK,eACL0b,KAAK,SACL4tB,SAAU,CAAC7G,IACX1mC,OAAO,SACPk0C,UAAWvxB,KAEf1sB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,sCAGJk6E,eAAe,kCACfc,YAAY,eACZhB,UAAW1pH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACPJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,+BACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,2BAAuE/pH,EAAMwuH,aAA7E,UACA1tH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,+GACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ4hH,oBAA/B,yBACAlpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,cACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAAgB/pH,EAAMqqH,YACrDvpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,+BAA2E/pH,EAAMshF,cAErF7pC,QAASs0E,EACT/zE,SAAUh4C,EAAMypD,WAChBnR,SAAUt4C,EAAMsI,YCXlBqmH,eA4BF,SAAAA,EAAY3uH,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA+7H,IACtB/0H,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAg9H,GAAAxuH,KAAAvN,KAAMoN,KA5BV21E,qBAMM,CACE,CAAEt6D,GAAI,YAAa06D,WAAW,EAAOlvE,MAAO,KAC5C,CAAEwU,GAAI,WAAY06D,UAAW,MAAOlvE,MAAO,iBAC3C,CAAEwU,GAAI,QAAS06D,UAAW,MAAOlvE,MAAO,iBAAkBgyE,UAAU,EAAMC,YAAa,qFACvF,CAAEz9D,GAAI,eAAgB06D,UAAW,MAAOlvE,MAAO,iBAC/C,CAAEwU,GAAI,mBAAoB06D,UAAW,MAAOlvE,MAAO,sBAgBjCjN,EAb1Bg1H,gCAMM,CACE,CAAEvzG,GAAI,GAAI06D,WAAW,EAAOlvE,MAAO,KACnC,CAAEwU,GAAI,WAAY06D,UAAW,MAAOlvE,MAAO,iBAC3C,CAAEwU,GAAI,QAAS06D,UAAW,MAAOlvE,MAAO,iBAAkBgyE,UAAU,GACpE,CAAEx9D,GAAI,eAAgB06D,UAAW,MAAOlvE,MAAO,kBAG7BjN,EAD1Bw/F,WAAa,CAAC,YAAa,wBACDx/F,EA+C1Bi1H,8BAAgC,SAACtxG,GAC7B,IAAMkxB,EACFlxB,EAAS2vB,oBACT3vB,EAAS2vB,mBAAmB,IAC5B3vB,EAAS2vB,mBAAmB,GAAGuB,OAC/BlxB,EAAS2vB,mBAAmB,GAAGuB,MAAMt7C,OAAS,EAAKoqB,EAAS2vB,mBAAmB,GAAGuB,MAAQ,KACxFqzC,EAAavkE,EAASpC,aAAe,kBAAenlB,EACpD84H,EAAkBvxG,EAASrC,kBAAoB,mBAAqB,GAO1E,OAL+BvpB,OAAA0G,EAAA,EAAA1G,CAAA,GACxB4rB,EADwB,CAE3BkxB,QACAymC,kBAA6Bl/E,IAAf8rF,EAA2BgtC,EAAkBhtC,KA3DzCloF,EA+D1Bm1H,4BAA8B,SAACxxG,GAC3B,IAAMkxB,EACFlxB,EAAS2vB,oBACT3vB,EAAS2vB,mBAAmB,IAC5B3vB,EAAS2vB,mBAAmB,GAAGuB,OAC/BlxB,EAAS2vB,mBAAmB,GAAGuB,MAAMt7C,OAAS,EAAKoqB,EAAS2vB,mBAAmB,GAAGuB,MAAQ,KAS9F,OAP6B98C,OAAA0G,EAAA,EAAA1G,CAAA,GACtB4rB,EADsB,CAEzBo5B,SAAiE,IAAxD/8C,EAAK+G,MAAMquH,mBAAmB/yH,QAAQshB,EAASlC,IACxDozB,QACAymC,aAAct7E,EAAKq1H,gBAAgB1xG,GACnCiiB,iBAAkBjiB,EAASL,oBA3ETtjB,EAgF1Bq1H,gBAAkB,SAACh0G,GACf,IAAKA,EAAIqoD,mBACL,MAAO,cAEX,OAAQroD,EAAIqoD,oBACR,KAAKnmD,GAAY,aAAcC,GAAgBwjB,kBAC3C,MAAO,cACX,KAAKzjB,GAAY,SAAUC,GAAgBwjB,kBACvC,MAAO,SACX,KAAKzjB,GAAY,UAAWC,GAAgBwjB,kBACxC,MAAO,cAAgBpf,IAAOuN,IAAI9T,EAAIsoD,oBAAoB2rD,UAAU1tG,MAAS0tG,aAAalgG,QAAQC,OAAO,SAC7G,QACI,MAAO,gBA5FOr1B,EA+F1Bu1H,yBAA2B,WACvBv1H,EAAK4G,SAAS,CAAE4uH,gBAAgB,KAhGVx1H,EAmG1By1H,2BAA6B,WACzBz1H,EAAK4G,SAAS,CAAE4uH,gBAAgB,KApGVx1H,EAuG1B01H,2BAA6B,SAACtxF,EAA0Bvc,GACpD7nB,EAAK4G,SAAS,CACV4uH,gBAAgB,EAChB33E,SAAS,IAEb,IAAM8mC,EAAgC5sF,OAAA0G,EAAA,EAAA1G,CAAA,GAC/BiI,EAAKoG,MAAM8hB,WADoB,CAElCxP,cAAe1Y,EAAKoG,MAAM8hB,WAAWxP,cAAgB1Y,EAAKoG,MAAM8hB,WAAWxP,mBAAgBtc,EAC3FgoC,UAAWxc,IAAOwc,GAAWjP,MAAMC,OAAM,GAAOpN,QAAQ,OAAOqN,SAC/DxN,QAASD,IAAOC,GAASsN,MAAMC,OAAM,GAAOpN,QAAQ,OAAOqN,SAC3D9L,iBAAkBvpB,EAAKoG,MAAM8hB,WAAWqB,iBAAmBvpB,EAAKoG,MAAM8hB,WAAWqB,iBAAiB4L,MAAME,cAAWj5B,EACnHsvE,eAAgB1rE,EAAKoG,MAAM8hB,WAAWwjD,eAAiB1rE,EAAKoG,MAAM8hB,WAAWwjD,eAAev2C,MAAME,cAAWj5B,IAEjH4D,EAAKoG,MAAM4+E,iBAAiBL,GAAmBzkF,KAAKF,EAAK8E,KAAM9E,EAAK8E,OApH9C9E,EAuH1B8E,KAAO,kBAAM9E,EAAK4G,SAAS,CAAEi3C,SAAS,KAvHZ79C,EA0H1B21H,OAAS77G,aAAW,SAAC87G,GACjB,MAAO,CAAEtxF,MAAOsxF,EAAOxxF,UAAWG,IAAKqxF,EAAO/tG,WA3HxB7nB,EA8H1B61H,kBAAoB/7G,aAAW,SAACq7B,EAAmBj5C,GAC/C,IAAM45H,EAAczZ,KAAKlnE,EAAY,IAAMj5C,GAAgB,QAC3D,OAAO0C,OAAOC,SAAS2C,OAAS,uBAAyBs0H,IAhInC91H,EAmI1B+1H,kBAAoB,SAACpmH,EAAQotC,GACzB,IAAMt7B,GAAM9R,EAAE4yC,QAAU5yC,EAAEqmH,YAAYj2H,MACtC1C,QAAQC,IAAI,KAAMmkB,EAAIs7B,GACtB,IAAMq4E,EAAkBr9H,OAAAgO,EAAA,EAAAhO,CACjBiI,EAAK+G,MAAMquH,mBAAmBlvH,OAAO,SAAA+vH,GAAG,OAAIA,IAAQx0G,KAEvDs7B,GACAq4E,EAAmBvuG,KAAKpF,GAE5BzhB,EAAK4G,SAAS,CAAEwuH,wBA5IMp1H,EA+I1B8+E,gBAAkB,SAACnvE,EAAQotC,GACvB/8C,EAAK4G,SAAS,CAAEwuH,mBAAoBr4E,EAAU/8C,EAAKoG,MAAM2c,UAAU3B,KAAK5nB,IAAI,SAAAmW,GAAC,OAAIA,EAAE8R,KAAM,MAhJnEzhB,EAmJ1Bk2H,gCAAkC,WAC9B,IAAMrrD,EAAc7qE,EAAK+G,MAAMquH,mBAC/Bp1H,EAAK4G,SAAS,CACVuvH,+BAAgCtrD,EAChCurD,gCAAgC,KAvJdp2H,EA2J1Bq2H,iCAAmC,WAC/Br2H,EAAK4G,SAAS,CACVuvH,+BAAgC,GAChCC,gCAAgC,KA9Jdp2H,EAkK1Bs2H,uBAlK0Bv+H,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAkKD,SAAAC,IAAA,OAAAH,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACrBuH,EAAK4G,SAAS,CAAE2vH,2BAA2B,IADtBh+H,EAAAE,KAAA,EAEfuH,EAAKoG,MAAMkwH,uBACbt2H,EAAKoG,MAAM8hB,WAAWnO,QAAQ0H,GAC9BzhB,EAAKoG,MAAM8hB,WAAWzG,GACtBzhB,EAAK+G,MAAMovH,gCALM,OAOrBn2H,EAAK4G,SAAS,CAAE2vH,2BAA2B,IAC3Cv2H,EAAKq2H,mCARgB,wBAAA99H,EAAAM,SAAAT,MAlKC4H,EA6K1Bw2H,0BAA4B,WACxBx2H,EAAK4G,SAAS,CAAE6vH,sBAAsB,KA9KhBz2H,EAiL1B02H,0BAA4B,WACxB12H,EAAK4G,SAAS,CAAE6vH,sBAAsB,KAlLhBz2H,EAqL1B22H,oBAAsB,WAClB32H,EAAK4G,SAAS,CAAEgwH,iBAAiB,KAtLX52H,EAyL1B62H,qBAAuB,WACnB72H,EAAK4G,SAAS,CAAEgwH,iBAAiB,KA1LX52H,EA6L1BqvD,iBAAmB,SAACvpD,GAChB,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,KAjMNzmF,EAqM1B82H,uBAAyB,SAAClC,GACtB50H,EAAK4G,SAAS,CAAEmwH,yBAAyB,EAAMC,0BAA2BpC,KAtMpD50H,EAyM1Bi3H,yBAA2B,WACvBj3H,EAAK4G,SAAS,CAAEmwH,yBAAyB,EAAOC,+BAA2B56H,KA1MrD4D,EA6M1Bg3H,0BAA4B,SAACp9H,GACzB,IAAMiU,EAAY9V,OAAA0G,EAAA,EAAA1G,CAAA,CACdmE,aAAc8D,EAAKoG,MAAM8hB,WAAWzG,GACpCy1G,WAAW,GACRl3H,EAAKoG,MAAM+wH,oBAHA,CAIdvC,aAAY,GAAAr3H,OAAAxF,OAAAgO,EAAA,EAAAhO,CACJiI,EAAKoG,MAAM+wH,oBACXn3H,EAAKoG,MAAM+wH,oBAAoBvC,aAAa1uH,OACxC,SAAA2uH,GAAC,OAAIA,IAAMnwG,SAAS9qB,EAAKg7H,qBACqBx4H,IAAzC4D,EAAK+G,MAAMiwH,2BAA2CnC,IAAM70H,EAAK+G,MAAMiwH,6BAC5E,IALA,CAMRp9H,EAAKg7H,iBAGb50H,EAAKoG,MAAMgxH,mBAAmBvpH,EAAc7N,EAAKm1C,WACjDn1C,EAAKi3H,4BA5NiBj3H,EA+N1Bq3H,4BAA8B,SAACzC,GAC3B,IAAM/mH,EAAY9V,OAAA0G,EAAA,EAAA1G,CAAA,CACdmE,aAAc8D,EAAKoG,MAAM8hB,WAAWzG,GACpCy1G,WAAW,GACRl3H,EAAKoG,MAAM+wH,oBAHA,CAIdvC,aAAe50H,EAAKoG,MAAM+wH,oBACtBn3H,EAAKoG,MAAM+wH,oBAAoBvC,aAAa1uH,OACxC,SAAA2uH,GAAC,OAAIA,IAAMD,IACX,KAEZ50H,EAAKoG,MAAMgxH,mBAAmBvpH,EAAc7N,EAAKm1C,YAzO3Bn1C,EA4O1Bs3H,cAAgB,WACZt3H,EAAKoG,MAAM1O,gBAAgB,aAAc,YA7OnBsI,EAgP1Bu3H,uBAAyB,WACrBv3H,EAAKoG,MAAMihD,eAAernD,EAAKm1C,UAAWn1C,EAAK9D,cAC/C8D,EAAK62H,wBAlPiB72H,EAqP1Bw3H,oBAAsB,SAAC76H,GAAuB,IAAAu5G,EACjBlvG,GAAOmvG,iBAAxBlvG,EADkCivG,EAClCjvG,KAAMsE,EAD4B2qG,EAC5B3qG,OACRF,EAAsBrE,GAAOuuC,iBAAiBhqC,OAAQrP,aAAc/C,QAAQ,IAAK,IACjFm5G,EAAmBtrG,GAAOuuC,iBAAiBhqC,OAAQ4pC,UAAWh8C,QAAQ,IAAK,IAC3E+C,EAAe8D,EAAKoG,MAAMgF,MAAMG,OAAOF,GACvC8pC,EAAYn1C,EAAKoG,MAAMgF,MAAMG,OAAO+mG,GACpC7rB,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYA,GAC1Ch8C,QAAQoS,EAAQrP,aAAeA,GAC/B/C,QAAQoS,EAAQ5O,WAAaA,GAC7BxD,QAAQoS,EAAQ6qG,OAAS,IAC9Bp2G,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IA5PxBzmF,EAAK+G,MAAQ,CACTyuH,gBAAgB,EAChB33E,SAAS,EACT44E,sBAAsB,EACtBG,iBAAiB,EACjBxB,mBAAoB,GACpB2B,yBAAyB,EACzBC,+BAA2B56H,EAC3B+5H,+BAAgC,GAChCC,gCAAgC,EAChCG,2BAA2B,GAbTv2H,mFAkBmB,IAArChH,KAAKoN,MAAM2c,UAAU3B,KAAK7nB,QAC1BP,KAAKoN,MAAMihD,eAAeruD,KAAKm8C,UAAWn8C,KAAKkD,cAE9ClD,KAAKoN,MAAM8hB,WAAWzG,GAGlBzoB,KAAKoN,MAAM+wH,qBACZn+H,KAAKoN,MAAMqxH,0BAA0Bz+H,KAAKoN,MAAM8hB,WAAWzG,GAAIzoB,KAAKoN,MAAM8hB,WAAWnO,QAAQ0H,IAHjGzoB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,yDAOrB4zD,IAET92D,KAAKoN,MAAM8hB,WAAWzG,IACvBzoB,KAAKoN,MAAM+wH,qBACXrnE,EAAU5nC,WAAWzG,IAEtBzoB,KAAKoN,MAAMqxH,0BAA0Bz+H,KAAKoN,MAAM8hB,WAAWzG,GAAIzoB,KAAKoN,MAAM8hB,WAAWnO,QAAQ0H,qCA+N5F,IAAAjhB,EAAAxH,KAAAsV,EAC2BtV,KAAKoN,MAA7B8hB,EADH5Z,EACG4Z,WAAY1Z,EADfF,EACeE,QACdytG,EAAsBjjH,KAAKoN,MAAM2c,UAAU3B,KAAKlb,OAAO,SAAAyJ,GAAC,OAAKA,EAAE4R,eAAiB5R,EAAE2R,oBAAmB9nB,IAAIR,KAAKm8H,6BAC9GuC,EAAwB1+H,KAAKoN,MAAM2c,UAAU3B,KAAKlb,OAAO,SAAAyJ,GAAC,OAAIA,EAAE4R,cAAgB5R,EAAE2R,oBAAmB9nB,IAAIR,KAAKi8H,+BAH/G0C,EAIkB3+H,KAAK28H,OAAOztG,GAA3Boc,EAJHqzF,EAIGrzF,MAAOC,EAJVozF,EAIUpzF,IACTqzF,EAAY5+H,KAAK68H,kBAAkB78H,KAAKoN,MAAM8hB,WAAWnO,QAAQ0H,GAAIzoB,KAAKoN,MAAM8hB,WAAWzG,IAC3Fo2G,EAAmB7+H,KAAKoN,MAAM2c,UAAU3B,KAAKlb,OAAO,SAAAyd,GAAQ,OAA4D,IAAxDnjB,EAAKuG,MAAMquH,mBAAmB/yH,QAAQshB,EAASlC,MAC/Gq2G,IAA0B5vG,EAAWkc,aAAelc,EAAWL,QAC/D+sG,EAAe57H,KAAKoN,MAAM+wH,oBAAsBn+H,KAAKoN,MAAM+wH,oBAAoBvC,aAAatvH,OAAS,GAE3G,OACI4B,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAWswB,EAAWnO,QAAQ7E,MAAahO,EAAAhP,EAAAiP,cAAA,YAE9DD,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAOl2D,KAAKwmG,WACZnwC,iBAAkBr2D,KAAKq2D,mBAE3BnoD,EAAAhP,EAAAiP,cAAC+jF,GAAAhzF,EAAD,CACIizF,OAAQnyF,KAAK+N,MAAM82C,QACnButC,sBAAoB,EACpBx6D,KAAK,QAEL1pB,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAWT,EAAQkE,OACtBxL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGryC,UAAWT,EAAQU,WAC3ChI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC/U,WAAS,EAACkjB,GAAI,GACrBlrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAW4W,QAAS,CAAEijD,KAAMjjD,EAAQC,QAAnD,0BACAvH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQupH,UACpB7wH,EAAAhP,EAAAiP,cAACq7E,GAAA,EAAD,CAAM9yE,QAAS1W,KAAKu8H,yBAA0BtmH,UAAWT,EAAQwpH,cAC7D9wH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQypH,iBACpB/wH,EAAAhP,EAAAiP,cAAC+wH,GAAAhgI,EAAD,CAAkB+W,UAAWT,EAAQ2pH,aACrCjxH,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ4pH,eACpB9zF,GAASC,EAAT,GAAAhnC,OAAkB+mC,EAAMjP,OAAO,cAA/B,OAAA93B,OAAkDgnC,EAAIlP,OAAO,eAAkB,oBAOpGnuB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ09E,WAA/B,mEAGJhlF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC/U,WAAS,EAACkjB,GAAI,GAAInjB,UAAWT,EAAQ6pH,eAC5CnxH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG/1C,UAAWT,EAAQ8pH,kBACzCpxH,EAAAhP,EAAAiP,cAACoxH,GAAD,CAAc/pH,QAAS,CAAE0kH,WAAY1kH,EAAQ61F,QAAU9yE,OAAQ,OAEnErqB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG/1C,UAAWT,EAAQgqH,qBACzCtxH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ09E,WAA/B,iDAEJhlF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG/1C,UAAWT,EAAQ+sG,iBACzCr0G,EAAAhP,EAAAiP,cAAA,YACK2wH,EACG5wH,EAAAhP,EAAAiP,cAACi1G,GAAAlkH,EAAD,CACI0U,KAAMgrH,EACN79C,OAAQ/gF,KAAKs+H,eAEbpwH,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ/9C,QAAS,WAAYqX,UAAWT,EAAQ6J,QAC5CnR,EAAAhP,EAAAiP,cAACsxH,GAAAvgI,EAAD,CAAU+W,UAAWT,EAAQkqH,WAC7BxxH,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQs8F,YAAzB,cAIR5jG,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQmqH,YACrBzxH,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAS4Y,SAAS,QAAQ7B,UAAWT,EAAQwF,cAC7C9M,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ0F,aAAzB,mBAOhBhN,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAWT,EAAQ8pH,kBAClCpxH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKqX,UAAWT,EAAQoqH,IAA5C,OAEJ1xH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG/1C,UAAWT,EAAQ8pH,kBACzCpxH,EAAAhP,EAAAiP,cAACoxH,GAAD,CAAc/pH,QAAS,CAAE0kH,WAAY1kH,EAAQ61F,QAAU9yE,OAAQ,OAEnErqB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG/1C,UAAWT,EAAQgqH,qBACzCtxH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ09E,WAA/B,gEAKZhlF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWT,EAAQqqH,oBACjC3xH,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAW4W,QAAS,CAAEijD,KAAMjjD,EAAQC,QAAnD,uBACAvH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQsqH,gBACpB5xH,EAAAhP,EAAAiP,cAACq7E,GAAA,EAAD,CAAM9yE,QAAS,kBAAMlP,EAAKs2H,0BAA0B7nH,UAAWT,EAAQwpH,cACnE9wH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQypH,iBACpB/wH,EAAAhP,EAAAiP,cAAC4xH,GAAA7gI,EAAD,CAAa+W,UAAWT,EAAQ2pH,aAChCjxH,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ4pH,eAAzB,oBAOhBlxH,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,MACAz7C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQwqH,wBAA/B,qBAGA9xH,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,MACAz7C,EAAAhP,EAAAiP,cAACspD,GAAA,EAAD,KACKmkE,EAAar7H,OAASq7H,EAAap7H,IAAI,SAAAq7H,GAAC,OAAI3tH,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAK+0H,GAC9D3tH,EAAAhP,EAAAiP,cAACypD,GAAA,EAAD,CAAUv4C,QAAM,EAAC3I,QAAS,kBAAMlP,EAAKs2H,uBAAuBjC,KACxD3tH,EAAAhP,EAAAiP,cAAC8xH,GAAA,EAAD,CACI9rH,QAAO,GAAA5P,OAAKs3H,EAAL,kCAEX3tH,EAAAhP,EAAAiP,cAAC+xH,GAAA,EAAD,KACIhyH,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAY2pH,KAAK,MAAMC,aAAW,SAAS1pH,QAAS,kBAAMlP,EAAK62H,4BAA4BxC,KACvF3tH,EAAAhP,EAAAiP,cAACwvD,GAAAz+D,EAAD,SAIZgP,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,SACiBz7C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,6BAKjC1vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAWT,EAAQ6qH,QAClCnyH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAuC,IAA5B4oH,EAAiBt+H,OAAeiV,EAAQ8qH,YAAc,IAClEpyH,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAW4W,QAAS,CAAEijD,KAAMjjD,EAAQC,QAAnD,sBAC6B,IAA5BopH,EAAiBt+H,QAAgB2N,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ+qH,mBAAmBryH,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ6vG,eAAgBpC,EAAoB1iH,QAA/G,eAErCs+H,EAAiBt+H,OAAS,GACvB2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQgrH,YACpBtyH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQirH,uBAAuBvyH,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ6vG,eAAgBwZ,EAAiBt+H,QAAhH,YAAwIs+H,EAAiBt+H,OAAS,EAAI,IAAM,GAA5K,aACA2N,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQkrH,uBACnB5B,GAAyBD,EAAiBt+H,OAAS,GAAK2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACrDJ,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ1mC,UAAWT,EAAQmrH,qBAAsB76H,KAAK,IAAI4Q,QAAS1W,KAAKw9H,2BAA2BtvH,EAAAhP,EAAAiP,cAACyyH,GAAA1hI,EAAD,CAAM+W,UAAWT,EAAQqrH,iBAA5H,cAA0JhC,EAAiBt+H,OAAS,EAAI,IAAM,IAC9L2N,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ1mC,UAAWT,EAAQmrH,qBAAsB76H,KAAK,IAAI4Q,QAAS1W,KAAKk9H,iCAAiChvH,EAAAhP,EAAAiP,cAAC4xH,GAAA7gI,EAAD,CAAa+W,UAAWT,EAAQqrH,iBAAzI,gBAAyKhC,EAAiBt+H,OAAS,EAAI,IAAM,GAA7M,SAGHs+H,EAAiBt+H,OAAS,GACvB2N,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ1mC,UAAWT,EAAQmrH,qBAAsB76H,KAAK,IAAI4Q,QAAS1W,KAAK29H,qBAAqBzvH,EAAAhP,EAAAiP,cAACskF,GAAAvzF,EAAD,CAAM+W,UAAWT,EAAQqrH,iBAAtH,yBAKZ3yH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQsrH,OAAxB,SAGR5yH,EAAAhP,EAAAiP,cAACm7E,GAAD,CACI1D,SAAU,aACVjF,SAAU,aACVoC,qBAAsB/iF,KAAK+iF,qBAC3B3tD,QAAS6tF,EACTp+B,sBAAuB7kF,KAAKw+H,oBAC5Bj6C,eAAgB,aAChBK,mBAAoB5kF,KAAK+8H,kBACzBv3C,iBAAiB,EACjB5E,QAAQ,cACR8E,eAAe,EACfI,gBAAiB9lF,KAAK8lF,gBACtB7E,UAAW69C,EACXt4C,WAAYy8B,EAAoB1iH,OAAS,GACzC+kF,YAAY,OAK3Bo5C,EAAsBn+H,OAAS,GAC5B2N,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAWT,EAAQkE,OACtBxL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGryC,UAAWT,EAAQU,WAE3ChI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAWT,EAAQ6qH,QAClCnyH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ8qH,aACpBpyH,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAW4W,QAAS,CAAEijD,KAAMjjD,EAAQC,QAAnD,2BACAvH,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAO,oHACP2f,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,aAGjCjL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ+qH,mBAAmBryH,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ6vG,eAAgBqZ,EAAsBn+H,QAAjH,eAEL2N,EAAAhP,EAAAiP,cAACm7E,GAAD,CACI1D,SAAU,aACVjF,SAAU,aACVoC,qBAAsB/iF,KAAKg8H,gCAC3B5mG,QAASspG,EACT75C,sBAAuB7kF,KAAKw+H,oBAC5Bj6C,eAAgB,aAChBK,mBAAoB,aACpBY,iBAAiB,EACjB5E,QAAQ,aACR8E,eAAe,EACfI,gBAAiB,aACjB7E,UAAU,EACVuF,WAAYy8B,EAAoB1iH,OAAS,GACzC+kF,YAAY,SAQxCp3E,EAAAhP,EAAAiP,cAACm1G,GAAD,CACI3jH,KAAMK,KAAK+N,MAAMyuH,eACjBpxF,UAAWprC,KAAKoN,MAAM8hB,WAAWkc,UACjCvc,QAAS7uB,KAAKoN,MAAM8hB,WAAWL,QAC/B62B,SAAU1lD,KAAKy8H,2BACf7a,WAAY5hH,KAAK08H,6BAErBxuH,EAAAhP,EAAAiP,cAAC4yH,GAAD,CACIrrH,QAAS1V,KAAKi+H,yBACdt+H,KAAMK,KAAK+N,MAAMgwH,wBACjBlpH,aAAc7U,KAAKoN,MAAM+wH,oBACzB6C,WAAgD59H,IAAzCpD,KAAK+N,MAAMiwH,0BAClBh4E,cAAe,CACX41E,aAAc57H,KAAK+N,MAAMiwH,0BAA4Bh+H,KAAK+N,MAAMiwH,0BAA0BzzH,WAAa,KAE3G66C,SAAUplD,KAAKg+H,0BACfvG,WAAYz3H,KAAKoN,MAAM8hB,WAAW6jD,OAAOC,YACzC0b,YAAa1uF,KAAKoN,MAAM8hB,WAAWnO,QAAQ7E,OAE/ChO,EAAAhP,EAAAiP,cAAC8yH,GAAD,CACIvrH,QAAS1V,KAAK09H,0BACd/9H,KAAMK,KAAK+N,MAAM0vH,qBACjB1zG,UAAW80G,IAEf3wH,EAAAhP,EAAAiP,cAAC+yH,GAAD,CACIx7E,SAAU1lD,KAAK69H,qBACf3C,UAAWl7H,KAAKu+H,uBAChB5+H,KAAMK,KAAK+N,MAAM6vH,gBACjB7zG,UAAW80G,EACX1iF,UAAWn8C,KAAKoN,MAAM8hB,WAAWnO,QAAQ0H,GACzCvlB,aAAclD,KAAKoN,MAAM8hB,WAAWzG,KAGxCva,EAAAhP,EAAAiP,cAACwrH,GAAD,CACIh6H,KAAMK,KAAK+N,MAAMqvH,+BACjBzE,iBAAiB,sBACjBjzE,SAAU1lD,KAAKq9H,iCACfj4E,SAAUplD,KAAKs9H,uBACfz4E,QAAS7kD,KAAK+N,MAAMwvH,0BACpBnwE,SAAUl/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,kDACVk6E,eAAe,kCACfF,UAAW1pH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACPJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,+BACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,2BAAuEvoG,IAAO5uB,KAAKoN,MAAM8hB,WAAWL,SAASG,QAAQ,OAAOD,KAAKH,MAASI,QAAQ,OAAQ,QAA1J,UACA9gB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,+GACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ4hH,oBAA/B,yBACAlpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,cACAjpH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAAgBn3H,KAAKoN,MAAM8hB,WAAW6jD,OAAOC,aAC5E9kE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ2hH,eAA/B,+BAA2En3H,KAAKoN,MAAM8hB,WAAWnO,QAAQ7E,OAE7G08G,YAAY,2DA1dxB,OAAO54H,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQ4pC,UAAWh8C,QAAQ,IAAK,0CAIhF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQrP,aAAc/C,QAAQ,IAAK,YAxEzDoO,IAAMC,eA6iBxC,IAAMsI,GAASc,aAAa,SAACsrC,GAAD,MAAmB,CAC3CxpC,MAAO,GAEPxD,UAAW,CACPsB,QAAS0rC,EAAMoF,QAAQ,IAE3B+iD,OAAQ,CACJzvF,gBAAiB3I,GAAQ2B,MAAMT,QAC/B5C,OAAQ2xC,EAAMoF,QAAQ,GACtBlvC,MAAO8pC,EAAMoF,QAAQ,GACrBxwC,SAAU,GACVd,SAAU,WACViB,OAAQ,UAEZ8mH,SAAU,CACN/Z,MAAO,QACPltG,SAAU,IAEdwnH,iBAAkB,GAElBM,GAAI,CACApoH,QAAS0rC,EAAMoF,QAAQ,EAAG,EAAG,EAAG,GAChCj6C,UAAW,UAEfgxH,cAAe,CACX5nH,WAAYyrC,EAAMoF,QAAQ,IAE9Bk3E,oBAAqB,CACjBllH,QAAS,OACT82E,cAAe,MACfv2E,WAAY,UAEhBq4E,UAAW,CACPp7E,SAAU,GACVf,MAAOmsC,EAAMjwC,QAAQC,KAAK,MAE9BqvG,gBAAgBxjH,OAAA2pD,GAAA,EAAA3pD,CAAA,CACZmY,UAAWgsC,EAAMoF,QAAQ,GACzBj6C,UAAW,SACV60C,EAAMyF,YAAY8sE,KAAK,MAAQ,CAC5BpnH,UAAW,WAGnByxH,eAAgB,CACZ9a,MAAO,SAEX6a,mBAAoB,CAChB7lE,WAAU,aAAAz1D,OAAe2+C,EAAMjwC,QAAQC,KAAK,OAEhD8rH,aAAc,CACVnjH,OAAQ,UACR9E,MAAO9D,GAAQiB,KAAKQ,MAExBuqH,gBAAiB,CACb3kH,QAAS,QAEb6kH,WAAY,CACRrnH,SAAU,GACVsB,MAAO,GACPgB,YAAa,EACbE,QAAS,cACTO,WAAY,UAEhBukH,cAAe,CACXrnH,WAAY,IACZL,WAAY,SACZ4C,QAAS,cACTO,WAAY,SACZxB,WAAY,EACZvB,SAAU,GACVyE,cAAe,IAGnBikH,WAAY,CACR5kH,gBAAiB,UACjBrK,OAAQ,OACRwF,MAAO,QACPoqH,oBAAqB,MACrBC,qBAAsB,MACtB9mH,QAAS,OACTO,WAAY,SACZrD,QAAS,SACTN,UAAW,IAEf2pH,eAAgB,CACZtvH,OAAQ,GACR6H,MAAO,GACPV,aAAc,GAElBgoH,sBAAuB,CACnBr4E,SAAU,GAEdo4E,sBAAuB,CACnB1pH,MAAO,QACPsxC,SAAU,GAEds4E,qBAAsB,CAClB5pH,MAAO,QACPwF,cAAe,MAEnB8C,OAAQ,CACJ3L,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1ByK,aAAc,EACd/E,MAAO,IACPnB,OAAQ,QAEZopH,WAAY,CACR/mH,QAAS,OACTF,YAAa,IAEjB03F,WAAY,CACR/6F,MAAO9D,GAAQiB,KAAKQ,KACpBoD,SAAU,GACVY,aAAc,IAElB2sG,cAAe,CACXttG,WAAY,OACZD,SAAU,IAEdyoH,kBAAmB,CACfzoH,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBqE,OAAQ,OACRR,WAAY,IAEhB6pH,SAAU,CACNlqH,cAAe,EACfgD,YAAa,IAEjBslH,SAAU,CACNnuH,OAAQ,GACR6H,MAAO,GACPrC,MAAO9D,GAAQiB,KAAKQ,KACpBgE,aAAc,IAElBq0G,KAAM,CACFzyG,QAAS,QAEb+lH,OAAQ,CACJ7oH,QAAS,GACTN,UAAW,IAEf+B,OAAQ,CACJvB,WAAY,SACZI,SAAU,GACVC,WAAY,IACZhB,MAAO9D,GAAQC,KAAKU,MAExBuzE,UAAW,CACP1vE,WAAY,GACZL,cAAe,GACfsB,aAAc,GACd0B,YAAa,IAEjB8+G,OAAQ,CACJphH,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBwM,UAAW,aAEf1L,KAAM,CACFoD,SAAU,GACVuB,WAAY,GACZ5B,WAAY,EACZoE,OAAQ,WAEZg8C,SAAU,CACN//C,SAAU,QAEdgpH,MAAO,CACH1nH,MAAO,EACP7H,OAAQ,EACR8H,WAAY,GACZ2gD,WAAY,yBACZ1B,YAAa,yBACbp4C,UAAW,sBAEf8/G,uBAAwB,CACpBxoH,QAAS0rC,EAAMoF,QAAQ,IAE3B7yC,MAAO,CACHqC,SAAU,OACVC,WAAY,KAEhBhD,QAAS,CACLgC,MAAO9D,GAAQ6B,OAAOX,QACtB2D,SAAU,GACVuB,WAAY,IAEhB6B,YAAa,CACTnE,MAAO9D,GAAQC,KAAKU,KACpByF,WAAY,IAEhB2B,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,QACtB4K,cAAe,UAEnBuhH,YAAa,CACT/uH,OAAQ,OACRsI,aAAc,QAElBs9G,cAAe,CACXp/G,WAAY,IACZE,OAAQ,QAEZm/G,mBAAoB,CAChBrgH,MAAO,WACPg/C,eAAgB,YAChB18C,WAAY,WA2BLyjC,mBAtBf,SAAyB/uC,GACrB,MAAO,CACH8a,MAAO9a,EAAMqb,KAAKhB,KAClB8G,WAAYnhB,EAAMmhB,WAClBnF,UAAWhc,EAAM4c,SACjBwzG,oBAAqBzC,GAAuB3tH,EAAM0tH,2BAI1D,SAA4Bp8H,GACxB,MAAO,CACHgvD,eAAgB,SAAClS,EAAWj5C,GAAZ,OAA6B7D,EAASgvD,GAAelS,EAAWj5C,KAChFq+H,WAAY,SAACplF,EAAWj5C,EAAculB,EAAIvM,GAA9B,OAAuC7c,EAASkiI,GAAWplF,EAAWj5C,EAAculB,EAAIvM,KACpGi+B,gBAAiB,SAACj3C,GAAD,OAAkB7D,EAAS86C,GAAgBj3C,KAC5D8oF,iBAAkB,SAAC98D,GAAD,OAAgB7vB,EAAS2sF,GAAiB98D,KAC5DxwB,gBAAiB,SAACC,EAASC,GAAV,OAAsBS,EAASX,EAAgBC,EAASC,KACzEw/H,mBAAoB,SAACvpH,EAA0CsnC,GAA3C,OAAiE98C,EHl0BtF,SAAsCwV,EAA0CsnC,GACnF,sBAAAz6C,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwC,EAAOtC,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cAAAmC,EAAApC,KAAA,EAAAoC,EAAAnC,KAAA,EAEOypC,GAAI,gBAAkB,CACxBC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUiI,KAJ1B,OAOCxV,EAASm8H,GAA2B3mH,EAAa3R,aAAci5C,IAPhEv6C,EAAAnC,KAAA,qBAAAmC,EAAApC,KAAA,EAAAoC,EAAA+lD,GAAA/lD,EAAA,SAAAA,EAAA+lD,GAAA,wBAAA/lD,EAAA/B,SAAA8B,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAA3B,MAAAC,KAAAC,YAAA,GGi0BkGuhI,CAA6B3sH,EAAcsnC,KACzIsiF,0BAA2B,SAACv7H,EAAsBi5C,GAAvB,OAA6C98C,EAASoiI,GAA6Bv+H,EAAci5C,KAC5HmhF,uBAAwB,SAACnhF,EAAmBj5C,EAAsB2uE,GAA1C,OAAoExyE,EHt1B7F,SAAgC88C,EAAmBj5C,EAAsB2uE,GAC5E,sBAAA3wE,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA7B,KAAA,EAAA6B,EAAA5B,KAAA,EAEOypC,GAAI,aAAA3kC,OACO43C,EADP,iBAAA53C,OACgCrB,EADhC,qCAEN,CACIimC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAU,CACjBilE,YAAaA,MAP1B,OAAAxwE,EAAA5B,KAAA,qBAAA4B,EAAA7B,KAAA,EAAA6B,EAAAsmD,GAAAtmD,EAAA,SAAAA,EAAAsmD,GAAA,wBAAAtmD,EAAAxB,SAAAsB,EAAA,iBAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,GGq1ByGq9H,CAAuBnhF,EAAWj5C,EAAc2uE,OAI9I/0B,CAA6CxlC,KAAWR,GAAXQ,CAAmBykH,KCn2BzE2F,GAA2BnzH,IAAMizC,KAAK,SAACp0C,GAAiB,IAAAqwC,EACvBrwC,EAA3BoI,eADkD,IAAAioC,EACxC,GADwCA,EACpC53C,EAAauH,EAAbvH,SACdhH,EAAW+yD,GAAS/rD,EAAS+D,QAA7B/K,OACR,OACIqP,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ8nC,aACnB58C,MAAMC,QAAQ9B,GACXA,EAAO2B,IAAI,SAACmW,EAAW7J,GAAZ,OACPoB,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAK6P,GACK,IAAV7J,GACGoB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,MAEJz7C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQgoC,cAA/B,SAAoD1wC,EAAQ,GAC5DoB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ+nC,iBAAkB5mC,MAIzDzI,EAAAhP,EAAAiP,cAAA,WAEID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQgoC,cAA/B,WACAtvC,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQ+nC,iBAAkB1+C,OAQ/DiY,GAA2C,CAC7CwmC,YAAa,CACThjC,QAAS,QACTjB,WAAY,IAEhBkkC,gBAAiB,CACbzlC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,GAElB2jC,aAAc,CACV1lC,SAAU,GACVZ,UAAW,EACXH,MAAO9D,GAAQ+B,IAAIb,UAIZmD,QAAWR,GAAXQ,CAAmBoqH,ICX5B5qH,GAA2C,CAC7C0E,WAAY,CACRC,cAAe,cAEnBixB,QAAS,CACL31B,MAAO9D,GAAQC,KAAKiB,SAExBwtH,SAAU,CACN5qH,MAAO9D,GAAQC,KAAKU,KACpBuD,YAAa,IAING,QAAWR,GAAXQ,CA5CW,SAAClK,GACvB,IAAMw0H,EAAW9gH,aAAW,WACxB,OAAO2W,GAAYrqB,EAAMymF,iBAAiBhrE,SAExCkmE,EAAU3+C,KAEhB,OACIliC,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO41B,SACrBt/B,EAAMymF,iBAAiBhrE,MAAMroB,IAAI,SAAAnC,GAAC,OAAI6P,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAAEJ,EAAAhP,EAAAiP,cAAA,WAAO9P,EAAEmnC,YAAYt3B,EAAAhP,EAAAiP,cAAA,gBAGtED,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACKonE,IAAWphI,IAAI,SAAAwyB,GACZ,OAAQ9kB,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO6qH,SAAU76H,IAAKksB,EAAI4E,MAAM1pB,EAAAhP,EAAAiP,cAAC6kB,EAAIK,KAAL,UAG7DnlB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0E,YAAauzE,EAAQ3hF,EAAMymF,iBAAiBr5C,SAAS1zC,MAEnFoH,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQC,QAAM,GACVliF,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,UC0BV1jD,GAAiD,CACnDmC,OAAQ,CACJvB,WAAY,SACZI,SAAU,GACVC,WAAY,IACZhB,MAAO9D,GAAQC,KAAKU,KACpB0G,QAAS,OACTO,WAAY,UAEhBosE,UAAW,CACPlwE,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdumD,KAAM,CACFtnD,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACV+B,cAAe,GAEnB67E,MAAO,CACH3+E,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACV+B,cAAe,GAEnBstE,UAAW,CACP1vE,WAAY,GACZiB,aAAc,GACd0B,YAAa,KAINynH,GAlFa,SAACz0H,GACzB,OACIc,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,KACIv8C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOqwE,WACfj5E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmC,QAApB,6BAEA/K,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACQvjB,MAAO,iNACP2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,cAK3CjL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOunD,MAA9C,gEAGAnwD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAO4+E,OAA9C,4HAC6HxnF,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,aAGvID,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAO7pD,KAAM,SACTtC,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,gBAGAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,0BAGAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,eAGAtsD,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQC,QAAM,GACVliF,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,MACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,SAIZtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KAEQrtD,EAAMu4F,kBAAkBnlG,IAAI,SAAAolG,GACxB,OAAO13F,EAAAhP,EAAAiP,cAAC2zH,GAAD,CAAmBh7H,IAAK8+F,EAAKn9E,GAAIorE,iBAAkB+R,qBCtBhFm8B,eAGF,SAAAA,EAAY30H,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA+hI,IACtB/6H,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAgjI,GAAAx0H,KAAAvN,KAAMoN,KAHV2hF,QAAU3+C,KAEgBppC,EAD1Bg7H,cAAgBz3G,GAAY,UAAWC,GAAgB8jB,gBAC7BtnC,EAO1B46H,SAAW9gH,aAAW,WAClB,OAAO2W,GAAYzwB,EAAKoG,MAAMgoB,QAAQvM,SARhB7hB,EAW1Bi7H,yBAA2BnhH,aAAW,WAClC,OAAO8N,IAAOszG,IAAIl7H,EAAKoG,MAAMgoB,QAAQvM,MAAMroB,IAAI,SAAA4oB,GAAU,OAAOwF,IAAOxF,EAAK1J,oBAZtD1Y,EAe1Bm7H,oBAAsB,WAClB,IAcI9uG,EACA10B,EAfE6kG,EAAex8F,EAAKoG,MAAMgoB,QAAQpK,cAAgBob,GAAe,wBAAyB5b,GAAgBQ,aAC1G8mG,EAAY9qH,EAAKoG,MAAMgoB,QAAQpK,cAAgBob,GAAe,qBAAsB5b,GAAgBQ,aACpG04E,EAAa18F,EAAKoG,MAAMgoB,QAAQpK,cAAgBob,GAAe,sBAAuB5b,GAAgBQ,aACtGu0E,EAAQv4F,EAAKoG,MAAMgoB,QAAQ6iD,gCAAkC3oC,GAAiCG,gBAC9F22D,EAAqBp/F,EAAKoG,MAAMmc,sBAAwBviB,EAAKoG,MAAMmc,qBAAqBlgB,QAAQ,KAAO,EACvGmnH,GAASpqB,GAAsBp/F,EAAKoG,MAAMgoB,QAAQ6iD,gCAAkC3oC,GAAiCC,IACrHkhF,EAAgBrqB,GAAsBp/F,EAAKoG,MAAMgoB,QAAQ6iD,gCAAkC3oC,GAAiCI,0BAC5HghF,EAAY1pH,EAAKoG,MAAMgoB,QAAQ6iD,gCAAkC3oC,GAAiCE,QAClGmhF,EAAY3pH,EAAKoG,MAAMgoB,QAAQ8iD,mBAAqBlxE,EAAKg7H,cACzDI,EAAep7H,EAAKoG,MAAMgoB,QAAQ9J,UAAU/qB,OAAS,EACrDqwH,EAAeljH,GAAK+jB,6BACpBge,EAAkBzoC,EAAKoG,MAAMgoB,QAAQqa,gBACrCyxD,EAAYhzF,EAAAhP,EAAAiP,cAACulG,GAAAx0G,EAAD,CAAOkP,MAAO0I,GAAO6qH,WACjC3mH,EAAc9M,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAOkE,cAI3C,GAAIukF,GACA,GAAM9vD,EACF,GAAGqiF,EAAU,CACT,IAAMjB,EAA+B7pH,EAAKoG,MAAMgoB,QAAQ07F,mBAAqBp9C,GAAyBtpD,UAChG2mG,EAA6BH,GAAgB5pH,EAAKoG,MAAM6mB,wBAA0B48F,EAErFA,GACClyH,EAAU,uBACV00B,EAAO6tE,GACA6vB,GACPpyH,EAAU,sBACV00B,EAAOrY,GACAy0B,EAAgBqvD,gBAAkBsjC,GACzCzjI,EAAU,gBACV00B,EAAO6tE,GACCzxD,EAAgBqvD,eAGfsjC,IACTzjI,EAAU,2BACV00B,EAAOrY,IAJPrc,EAAU,kBACV00B,EAAOrY,OAKT,CACF,IAAMi2G,EAAiBxhF,EAAgB6pC,SAAS/4E,OAAS,EACnD2wH,IAAiBzhF,EAAgB6pC,SAASnwD,KAAK,SAAA9e,GAAC,OAAIA,EAAEyrE,WACtDi7C,EAA6BH,GAAgB5pH,EAAKoG,MAAM6mB,wBAA0Bg9F,EAEnFxhF,EAAgBqvD,eAGT93F,EAAKoG,MAAM6mB,wBAA2B28F,GAAiBK,GAGxDF,GACPpyH,EAAU,sBACV00B,EAAOrY,GACAk2G,IAAiBA,GACxBvyH,EAAU,sBACV00B,EAAOrY,GACAk2G,IACPvyH,EAAU,SACV00B,EAAO6tE,IAVPviG,EAAU,gBACV00B,EAAO6tE,IAJPviG,EAAU,kBACV00B,EAAOrY,SAgBhB,GAAIw1G,EAAO,CACcxpH,EAAKoG,MAAMgoB,QAAQgqE,mCAAqC3vD,GAIhF9wC,EAAU,mBACV00B,EAAO6tE,GAJQkhC,GAAgBzR,GAM/BhyH,EAAO,GAAA4F,OAAMyC,EAAKoG,MAAMgoB,QAAQ9J,UAAU/qB,OAAnC,aAAAgE,OAA6F,IAAxCyC,EAAKoG,MAAMgoB,QAAQ9J,UAAU/qB,OAAe,IAAM,GAAvG,aACP8yB,EAAO6tE,IAEPviG,EAAU,2BACV00B,EAAOrY,QAER,GAAIy1G,GAEP,GAAMhhF,GAAqBA,EAAgB2mC,gBAAkB3mC,EAAgB2mC,eAAe71E,OAAS,EAAG,CACpG,IAAM4wH,EAAiBP,GAAgB5pH,EAAKoG,MAAM6mB,wBAA0Bwb,EAAgB8mC,QAEvF9mC,EAAgB2mC,eAAe,GAAGiuB,eAG5B8sB,IAAmBztB,GAC1B/kG,EAAU,oBACV00B,EAAOrY,IAEHorF,GAAuBuqB,GAAcyR,GAIrCzjI,EAAU,gBACV00B,EAAO6tE,IAJPviG,EAAU,2BACV00B,EAAOrY,IARXrc,EAAU6kG,EAAY,GAAAj/F,OAAMyC,EAAKoG,MAAMgoB,QAAQoQ,YAAzB,uBAA6Dk+D,EAAa,8BAAgC,oBAChIrwE,EAAOrY,SAcZ,GAAI01G,EAAW,CACK0R,GAAgBzR,GAGnChyH,EAAO,GAAA4F,OAAMyC,EAAKoG,MAAMgoB,QAAQ9J,UAAU/qB,OAAnC,aAAAgE,OAA6F,IAAxCyC,EAAKoG,MAAMgoB,QAAQ9J,UAAU/qB,OAAe,IAAM,GAAvG,aACP8yB,EAAO6tE,IAEPviG,EAAU,2BACV00B,EAAOrY,GAIf,OAAO9M,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOurH,WACrBhvG,EACDnlB,EAAAhP,EAAAiP,cAAA,QAAOC,MAAO0I,GAAO1H,QAChBzQ,KAhIaqI,EAqI1BwuD,iBAAmB,WACfxuD,EAAK4G,SAAS,CAAE6nD,YAAY,KAtINzuD,EAyI1B0uD,iBAAmB,WACf1uD,EAAK4G,SAAS,CAAE6nD,YAAY,KA1INzuD,EA6I1Bs7H,eAAiB,SAAC1tG,GACdA,EAAM8rD,kBACN15E,EAAKoG,MAAMgoB,QAAQijD,kBAAkBrvD,QAAQ,SAAA3e,GACzCzE,OAAOjG,KAAK0K,EAAEyqE,WAAY,aAhJR9tE,EAmJ1Bu7H,gBAAkB,SAACrqD,GACf,OAAOtnC,GAAQsnC,IAlJflxE,EAAK+G,MAAQ,CACT0nD,YAAY,GAHMzuD,wEAwJtB,IAAMw7H,EAAexiI,KAAKoN,MAAMgoB,QAAQijD,mBAAqBr4E,KAAKoN,MAAMgoB,QAAQijD,kBAAkB93E,OAAS,EACrGkiI,EAAgBziI,KAAKoN,MAAMgoB,QAAQ8iD,mBACrC3tD,GAAY,cAAeC,GAAgB8jB,gBACzCo0F,EAAwB1iI,KAAKoN,MAAMmc,sBAAwBvpB,KAAKoN,MAAMmc,qBAAqBlgB,QAAQ,KAAO,EAC1G63G,EAAyBlhH,KAAKoN,MAAM+zG,qBAAuBuhB,GAAyBD,EAE1F,OACIv0H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO41B,SAAU1sC,KAAKoN,MAAMgoB,QAAQoQ,YAAvD,IAAqE07E,GACjEhzG,EAAAhP,EAAAiP,cAAA,OAAKorB,IAAK8nF,KAAWjzG,MAAO0I,GAAOqxC,YAAa3uB,IAAI,iBAE5DtrB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACKx6D,KAAK4hI,WAAWphI,IAAI,SAAAwyB,GACjB,OAAQ9kB,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO6qH,SAAU76H,IAAKksB,EAAI4E,MAAM1pB,EAAAhP,EAAAiP,cAAC6kB,EAAIK,KAAL,UAG7DnlB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0E,YAAaxb,KAAK+uF,QAAQ/uF,KAAKoN,MAAMgoB,QAAQolB,SAAS1zC,MAEpFoH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAa59C,KAAKuiI,gBAAgBviI,KAAKoN,MAAMgoB,QAAQ8iD,oBAEzDhqE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,KAAa59C,KAAKoN,MAAMgoB,QAAQ+iD,iBAAmBvpD,IAAO5uB,KAAKoN,MAAMgoB,QAAQ+iD,kBAAkB97C,OAAO,MAAQ,QAElHnuB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACKx6D,KAAKmiI,uBAEVj0H,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACKx6D,KAAKoN,MAAMgoB,QAAQijD,mBAAqBr4E,KAAKoN,MAAMgoB,QAAQijD,kBAAkB93E,OAAS,GACnF2N,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAKsiI,eAAgBvrH,MAAM,WAA5C,YACcyrH,GAAgB,cA3LnBj0H,IAAMC,eAoMnCsI,GAA2C,CAC7C6E,MAAO,CACHC,gBAAiB3I,GAAQC,KAAKC,QAC9B0I,OAAQ,WAEZL,WAAY,CACRC,cAAe,cAEnBixB,QAAS,CACL31B,MAAO9D,GAAQiB,KAAKC,SAExBwtH,SAAU,CACN5qH,MAAO9D,GAAQC,KAAKU,KACpBuD,YAAa,GAEjB6D,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,QACtBgD,YAAa,GAEjB/H,OAAQ,CACJsI,WAAY,SACZI,SAAU,WAEduqH,UAAW,CACP/nH,QAAS,OACTO,WAAY,UAEhBstC,YAAa,CACT52C,OAAQ,GACR+I,QAAS,mBACTtL,KAAM,IAKCmxE,MAAa7oE,KAAWR,GAAXQ,CAAmByqH,KCtPzCY,IADsB9kF,GAAS,4BACPA,GAAS,+BACjC+kF,GAAqBzkF,GAAe,KAoEpCrnC,GAAiD,CACnD4gH,UAAW,CACP57G,SAAU,QACVpI,OAAQ,IACR0F,MAAO,SAIA+rC,gBAAuD,CAClEF,KA5FqB,gCA2FVE,CA1EiB,SAAC/3C,GAC7B,OACIc,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUh4C,EAAMi4C,cAClBn3C,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,yHAIAzvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,KACIzvC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,KACIv8C,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOw+D,YAAY,IAAIC,YAAY,IAAI1qH,MAAO0I,GAAO4gH,WACjDxpH,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,6BACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWnD,GACXntC,MAAM,uBACNsxC,WAAS,EACTC,SAAU,CAAC3J,GAAO+mF,IAClB/kF,UAAQ,EACRj/C,QAAQ,WACR6mD,WAAS,MAKrBv3C,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,+BACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gBACLqoC,UAAWnD,GACXntC,MAAM,yBACNsxC,WAAS,EACTC,SAAU,CAACm9E,GAAuB9mF,GAAO+mF,IACzC/kF,UAAQ,EACRglF,kBAAgB,EAChBjkI,QAAQ,oBAUxCsP,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UAGA7I,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,UACH/R,QAAStJ,EAAMi4C,aACfR,QAASz3C,EAAM04C,WACf/uC,MAAM,WAJV,4BCpDD+rH,GATmB,SAAC11H,GAE/B,OACIc,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,6BACzDvH,EAAAhP,EAAAiP,cAAC40H,GAAD,CAAyB/8E,cAAe54C,EAAM44C,cAAeZ,SAAUh4C,EAAM+4C,OAAQT,SAAUt4C,EAAMs4C,aCE3Gs9E,GAAyBz0H,IAAMizC,KAAK,SAACp0C,GAAiB,IAAAs0C,EACUnzC,IAAMozC,UAAS,GADzBC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GACjDuhF,EADiDrhF,EAAA,GACtBshF,EADsBthF,EAAA,GAGlDuhF,EAAiB,eAAArkI,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAG,SAAAC,EAAOgkI,GAAP,OAAAnkI,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACtByjI,GAA6B,GADP3jI,EAAAE,KAAA,EAEhB2N,EAAMi2H,qBAAqBD,EAAUhxD,YAAagxD,EAAU/wD,eAF5C,wBAAA9yE,EAAAM,SAAAT,MAAH,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAKvB,OACIiO,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOqwE,WACfj5E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmC,QAApB,yBAGA/K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOmwE,WACzC75E,EAAMu4F,kBAAkBplG,OAD7B,WACgF,IAAnC6M,EAAMu4F,kBAAkBplG,QAAgB,MAGzF2N,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,gBAGAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,0BAGAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,eAGAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,sBAGAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,qBAGAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,iCAGAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,yBAKRtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KAEQrtD,EAAMu4F,kBAAkBnlG,IAAI,SAAAolG,GACxB,OAAO13F,EAAAhP,EAAAiP,cAACm1H,GAAD,CACHx8H,IAAK8+F,EAAKn9E,GACVy4D,UAAQ,EACRV,aAAa,cACbprD,QAASwwE,EACT3xE,sBAAuB7mB,EAAM6mB,sBAC7Bvd,QAAStJ,EAAMm3E,eACf3D,QAAQ,oBACRugC,oBAAqB/zG,EAAM+zG,oBAC3B53F,qBAAsB0c,GAAmC2/D,EAAK56E,YAAa5d,EAAM04B,4BAIhG14B,EAAM+zG,qBACHjzG,EAAAhP,EAAAiP,cAACo1H,GAAA,EAAD,KACIr1H,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw3C,GAAD,CACI/mD,QAAQ,YACRmY,MAAM,YACNL,QAAS,kBAAMwsH,GAA6B,IAC5Cr+E,SAAS,GAJb,oBAOJ32C,EAAAhP,EAAAiP,cAACq1H,GAAD,CACI7jI,KAAMsjI,EACNv9E,SAAU,kBAAMw9E,GAA6B,IAC7C/8E,OAAQ,SAACi9E,GAAD,OAA4CD,EAAkBC,IACtEp9E,cAAe54C,EAAMq2H,mCAYnD3sH,GAAiD,CACnDmC,OAAQ,CACJvB,WAAY,SACZI,SAAU,GACVC,WAAY,IACZhB,MAAO9D,GAAQC,KAAKU,MAExBqzE,UAAW,CACPlwE,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdqvE,UAAW,CACP1vE,WAAY,GACZiB,aAAc,GACd0B,YAAa,IAEjBV,MAAO,CACHG,aAAc,GACd3C,WAAY,KAIL8rH,MCzFTU,eAEF,SAAAA,EAAYt2H,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA0jI,IACtB18H,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA2kI,GAAAn2H,KAAAvN,KAAMoN,KAFVo5F,WAAa,CAAC,YAAa,sBACDx/F,EAS1B28H,yBAA2B,SAACvxD,EAAqBC,GAC7CrrE,EAAK4G,SAAS,CACVg2H,+BAA+B,EAC/B/+E,SAAS,IAEb,IAAM8mC,EAAgC5sF,OAAA0G,EAAA,EAAA1G,CAAA,GAC/BiI,EAAKoG,MAAMuhB,gBADoB,CAElCjP,cAAe1Y,EAAKoG,MAAMuhB,gBAAgBjP,cAAgB1Y,EAAKoG,MAAMuhB,gBAAgBjP,mBAAgBtc,EACrGgoC,UAAWpkC,EAAKoG,MAAMuhB,gBAAgByc,UAAYpkC,EAAKoG,MAAMuhB,gBAAgByc,UAAUjP,MAAME,cAAWj5B,EACxGyrB,QAAS7nB,EAAKoG,MAAMuhB,gBAAgBE,QAAU7nB,EAAKoG,MAAMuhB,gBAAgBE,QAAQsN,MAAME,cAAWj5B,EAClGmtB,iBAAkBvpB,EAAKoG,MAAMuhB,gBAAgB4B,iBAAmBvpB,EAAKoG,MAAMuhB,gBAAgB4B,iBAAiB4L,MAAME,cAAWj5B,EAC7HsvE,eAAgB1rE,EAAKoG,MAAMuhB,gBAAgB+jD,eAAiB1rE,EAAKoG,MAAMuhB,gBAAgB+jD,eAAev2C,MAAME,cAAWj5B,EACvHgvE,YAAaA,EACbC,cAAeA,IAEnBrrE,EAAKoG,MAAMy2H,2BAA2Bl4C,GAAmBzkF,KAAKF,EAAK8E,KAAM9E,EAAK8E,OAxBxD9E,EA2B1B8E,KAAO,kBAAM9E,EAAK4G,SAAS,CAAEi3C,SAAS,KA3BZ79C,EA6B1B88H,gCAAkC,WAC9B98H,EAAK4G,SAAS,CAAEg2H,+BAA+B,KA9BzB58H,EAgC1B48H,8BAAgC,WAC5B58H,EAAK4G,SAAS,CAAEg2H,+BAA+B,KAjCzB58H,EAoC1By8H,0BAA4B,WACxB,IAAMr2C,EAA0Bv9D,GAAsB7oB,EAAKoG,MAAM03D,UAAUp4C,qBAAsB1lB,EAAKoG,MAAMuhB,iBACtGo1G,EACF/8H,EAAKoG,MAAMuhB,gBAAgBc,gBAAgBtG,KAAK,SAAA9e,GAAC,OAAgC,IAA5BA,EAAEslB,wBAQ3D,MAAO,CACHyiD,iBAP4ChvE,IAA3C4D,EAAKoG,MAAMuhB,gBAAgByjD,aAAwE,KAA3CprE,EAAKoG,MAAMuhB,gBAAgByjD,YAC9EprE,EAAKoG,MAAMuhB,gBAAgBokD,OAAOl3B,MAClC70C,EAAKoG,MAAMuhB,gBAAgByjD,YAMjCC,mBAL6DjvE,IAA7C4D,EAAKoG,MAAMuhB,gBAAgB0jD,eAAgC+a,GAAkD,MAAvB22C,EAEpG/8H,EAAKoG,MAAMuhB,gBAAgB0jD,cAD3B0xD,EAAoBloF,QA7CJ70C,EAkF1Bs+F,eAAiB,WACb,IAAMC,EAAU1/D,GAAyB7+B,EAAKoG,MAAM03D,UAAU18C,MAC9DphB,EAAK4G,SAAS,CAAEk4B,sBAAuBy/D,EAAS1gD,SAAS,KApFnC79C,EAwF1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAxFjB79C,EAyF1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAzFlB79C,EAmG1B4oH,4BAA8B9uG,aAAW,SAACsH,GACtC,IAAIynG,GAAiB,EAOrB,OALAznG,EAAKY,QAAQ,SAAA48E,IAC0B,IAA/BA,EAAKptB,wBACLq3C,GAAiB,KAGlBA,GACRH,MA5GuB1oH,EA8G1Bg9H,0BAA4BljH,aAAW,SAACsH,GACpC,OAAOA,EAAKlb,OAAO,SAAA04F,GAAI,MAA2C,eAAvCA,EAAK3tB,iCACjCy3C,MAhHuB1oH,EAkH1Bi9H,+BAAiCnjH,aAAW,SAACsH,GACzC,OAAOA,EAAKlb,OAAO,SAAA04F,GAAI,MAA2C,eAAvCA,EAAK3tB,gCAA6E,IAA3B2tB,EAAKntB,qBACxFi3C,MApHuB1oH,EAsH1BqvD,iBAAmB,SAACvpD,GAChB,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,KA1HNzmF,EA8H1Bu9E,eAAiB,SAAC2b,GAA8B,IAAAgkC,EACnBl2H,GAAOk5F,eAAxBj5F,EADoCi2H,EACpCj2H,KAAMsE,EAD8B2xH,EAC9B3xH,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cAAc/C,QAAQoS,EAAQ2tF,kBAAoBA,GACrJl5F,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IA9HxBzmF,EAAK+G,MAAQ,CACT82C,SAAS,EACT/e,sBAAuB,GACvB89F,+BAA+B,GANb58H,mFAsDtB,IAAM83E,EAA2B,GAC5B9+E,KAAKoN,MAAMshF,aACZ5P,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,eAElD,IAAMihI,EAAsBnkI,KAAK4vH,4BAA4B5vH,KAAKoN,MAAM44F,sBAAsB59E,MAC9FpoB,KAAKoN,MAAM44F,sBAAsBptB,+BAAiCurD,EAEb,IAAjDnkI,KAAKoN,MAAM44F,sBAAsB59E,KAAK7nB,SAAwC,IAAxB4jI,GACtDrlD,EAASjxD,KAAK7tB,KAAKoN,MAAM84F,sBAAsBlmG,KAAKm8C,UAAWn8C,KAAKkD,eAG/B,IAArClD,KAAKoN,MAAM03D,UAAU18C,KAAK7nB,QAC1Bu+E,EAASjxD,KAAK7tB,KAAKoN,MAAM++E,WAAWnsF,KAAKm8C,UAAWn8C,KAAKkD,eAE7DuE,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAKslG,eAAgBtlG,KAAK+pF,uDAGtCjzB,GAGT92D,KAAKoN,MAAMuhB,gBAAgBlG,KACxBquC,EAAUnoC,gBAAgBlG,IAHF,GAKpBoF,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,gDAwD7C,IAAA45D,EACsC98D,KAAK+N,MAAxC82C,EADHiY,EACGjY,QAAS/e,EADZg3B,EACYh3B,sBAEjB,OACI53B,EAAAhP,EAAAiP,cAACq8C,GAAD,KACK3F,EACG32C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAEC,UAAW,WACrBH,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGJl0C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAWoB,KAAKoN,MAAMshF,aACrCxgF,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAOl2D,KAAKwmG,WACZnwC,iBAAkBr2D,KAAKq2D,mBAE1Br2D,KAAKgkI,0BAA0BhkI,KAAKoN,MAAM44F,sBAAsB59E,MAAM7nB,OAAS,GAC5E2N,EAAAhP,EAAAiP,cAACi2H,GAAD,CACAz+B,kBAAmB3lG,KAAKgkI,0BAA0BhkI,KAAKoN,MAAM44F,sBAAsB59E,MACnFm8D,eAAgBvkF,KAAKukF,eACrBz+C,sBAAuBA,EACvB7R,wBAAyBj0B,KAAKoN,MAAMuhB,gBAAgB+jD,eACpDyuC,oBAAqBnhH,KAAKoN,MAAMuhB,gBAAgBmB,yBAChDuzG,qBAAsBrjI,KAAK2jI,yBAC3BF,0BAA2BzjI,KAAKyjI,8BAGnCzjI,KAAKikI,+BAA+BjkI,KAAKoN,MAAM44F,sBAAsB59E,MAAM7nB,OAAS,GACjF2N,EAAAhP,EAAAiP,cAACk2H,GAAD,CAAqB1+B,kBAAmB3lG,KAAKikI,+BAA+BjkI,KAAKoN,MAAM44F,sBAAsB59E,4CAtEjI,OAAOpoB,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAO6lF,iBAAiBthF,OAAQ4pC,UAAWh8C,QAAQ,IAAK,0CAIvF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAO6lF,iBAAiBthF,OAAQrP,aAAc/C,QAAQ,IAAK,YAlG/DoO,IAAMC,eAiM1BsuC,mBApBf,SAAyB/uC,GACrB,MAAO,CACH2gF,YAAa3gF,EAAMmhB,WAAWnO,QAAQ7E,KACtC8pF,sBAAuBj4F,EAAM6rE,gBAC7BjrD,gBAAiB5gB,EAAMmhB,WACvB41C,UAAW/2D,EAAMqb,OAIzB,SAA4B/pB,EAAe2oD,GACvC,MAAO,CACH7N,gBAAiB,SAACj3C,GAAD,OAAkB7D,EAAS86C,GAAgBj3C,KAC5DgjG,sBAAuB,SAAC/pD,EAAWj5C,GAAZ,OAA6B7D,EAAS6mG,GAAsB/pD,EAAWj5C,KAC9FipF,WAAY,SAAChwC,EAAWj5C,GAAZ,OAA6B7D,EAAS8sF,GAAWhwC,EAAWj5C,KACxE2gI,2BAA4B,SAAC30G,GAAD,OAAgB7vB,E1JzB7C,SAAoC6vB,GACvC,sBAAAo1G,EAAAvlI,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAolI,EAAOllI,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAklI,GAAA,cAAAA,EAAAhlI,KAAAglI,EAAA/kI,MAAA,cAAA+kI,EAAAhlI,KAAA,EAAAglI,EAAA/kI,KAAA,EAEOypC,GAAI,eAAA3kC,OAAgB2qB,EAAWzG,IAAM,CAAE0gB,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUsiB,KAFlF,OAGC7vB,EAASysF,GAAgB58D,IACzB7vB,EAASX,EAAgB,0BAA2B,YAJrD8lI,EAAA/kI,KAAA,sBAAA+kI,EAAAhlI,KAAA,EAAAglI,EAAA78E,GAAA68E,EAAA,SAMCnlI,EAAS0B,EAAyByjI,EAAA78E,GAAK,wCANxC68E,EAAA78E,GAAA,yBAAA68E,EAAA3kI,SAAA0kI,EAAA,iBAAP,gBAAAlJ,GAAA,OAAAiJ,EAAAvkI,MAAAC,KAAAC,YAAA,G0JwByD4jI,CAA2B30G,KAChFu1G,sBAAuB,SAACtoF,EAAWj5C,GAAZ,OAA6B7D,E1JjCrD,SAA+B88C,EAAmBj5C,GACrD,sBAAAwhI,EAAA3lI,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwlI,EAAOtlI,GAAP,IAAAulI,EAAA,OAAA3lI,EAAAC,EAAAI,KAAA,SAAAulI,GAAA,cAAAA,EAAArlI,KAAAqlI,EAAAplI,MAAA,cAAAolI,EAAAplI,KAAA,EACkDypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eADtD,OACG0hI,EADHC,EAAAn9E,KAEHroD,EAASylI,GAAwBF,IAF9B,wBAAAC,EAAAhlI,SAAA8kI,MAAP,gBAAAI,GAAA,OAAAL,EAAA3kI,MAAAC,KAAAC,YAAA,G0JgCiEwkI,CAAsBtoF,EAAWj5C,OAKvF45C,CAA6C4mF,wFC/NtDsB,GAAwBz2H,gBAAoC,CAC9D02H,aAAc,eAULC,GAAsB,SAAApmI,GAA0C,IAAvC6W,EAAuC7W,EAAvC6W,SAAUwvH,EAA6BrmI,EAA7BqmI,QAA6BzjF,EAC7BnzC,gBAAgDnL,GADnBw+C,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAClE0jF,EADkExjF,EAAA,GAClDyjF,EADkDzjF,EAAA,GAAA0qC,EAEjD/9E,YAAe,GAFkCg+E,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAElE3sF,EAFkE4sF,EAAA,GAE5D+4C,EAF4D/4C,EAAA,GAAAG,EAI2Bn+E,WAAe,CAC/Gg3H,oBAAqB,aACrBC,sBAAuB,aACvBC,uBAAwB,eAP6C94C,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAAAg5C,EAAA/4C,EAAA,GAIhE44C,EAJgEG,EAIhEH,oBAAqBC,EAJ2CE,EAI3CF,sBAAuBC,EAJoBC,EAIpBD,uBAA0BE,EAJNh5C,EAAA,GAqCzE,OAAO/E,EAAA,cAAAA,EAAA,cACHA,EAAA,cAACo9C,GAAsBY,SAAvB,CAAgC7+H,MAAO,CACnCk+H,aAAc,SAAA73H,GACNA,EAEAi4H,EAAkBtmI,OAAA0G,EAAA,EAAA1G,CAAA,GACXqmI,EACAh4H,KAIPi4H,OAAkBjiI,GAClBkiI,GAAQ,OAIf3vH,EA3CY,SAACkwH,GAAD,OAAoB,WAAkB,QAAA3hI,EAAAjE,UAAAM,OAAd2P,EAAc,IAAAxP,MAAAwD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAd8L,EAAc9L,GAAAnE,UAAAmE,GACnDghI,GAAkBA,EAAejuE,SAEjCwuE,EAAkB,CACdJ,oBAAqB,WAEjBH,GAAkBA,EAAevyC,UAErC4yC,uBAAwB,WAEpBI,EAAM9lI,WAAN,EAAUmQ,GACVo1H,GAAQ,IAEZE,sBAAuB,WAEnBL,OAAQ/hI,GACRkiI,GAAQ,MAGhBH,EAAOplI,WAAP,EAAWmQ,GACXo1H,GAAQ,IAGRO,EAAM9lI,WAAN,EAAUmQ,MAqBV03E,EAAA,cAACnrC,GAAD,CACI98C,KAAMA,EACN+V,QAAS8vH,EACT/vH,MAAO2vH,GAAkBA,EAAelmF,QAAU,kBAAoB,oBAEtE0oC,EAAA,cAACtxE,GAAA,EAAD,KACIsxE,EAAA,cAACjqC,GAAA,EAAD,KACKynF,GAAkBA,EAAelmF,QAC9B0oC,EAAA,qDAA+Bw9C,GAAkBA,EAAe/tE,cAAgBuwB,EAAA,gCAASA,EAAA,gCAAUw9C,EAAe/tE,gBAAiCuwB,EAAA,cAAAA,EAAA,eAAnJ,yBAA+KA,EAAA,yBAAMA,EAAA,yBAArL,kDAEAA,EAAA,qDAA+Bw9C,GAAkBA,EAAe/tE,cAAgBuwB,EAAA,gCAASA,EAAA,gCAAUw9C,EAAe/tE,gBAAiCuwB,EAAA,cAAAA,EAAA,eAAnJ,gCAIZA,EAAA,cAAClrC,GAAA,EAAD,OACO0oF,GAAkBA,EAAelmF,UAChC0oC,EAAA,cAACjrC,GAAA,EAAD,CACIjmC,QAAS8uH,EACTzuH,MAAM,WAFV,UAOJ6wE,EAAA,cAACjrC,GAAA,EAAD,CACIjmC,QAAS+uH,EACT1uH,MAAM,WAELquH,GAAkBA,EAAelmF,QAAU,aAAe,mBAE9DkmF,GAAkBA,EAAelmF,SAC9B0oC,EAAA,cAACjiC,GAAD,CACIl9B,GAAG,qBACH/R,QAAS6uH,EACT1gF,QAASugF,GAAkBA,EAAepuE,aAC1Cr1C,WAAYyjH,GAAkBA,GAAgBlmF,QAC9CnoC,MAAM,WALV,aAwBT+uH,GAAA,SAAC14H,GAA+B,IAGvC63H,EACA12H,aAAiBy2H,IADjBC,aAiBJ,OAdA12H,YAAgB,WAEZ02H,EAAa73H,IAEd,CAACA,EAAMylF,OAAQzlF,EAAM+pD,QAAS/pD,EAAM4pD,aAAc5pD,EAAM8xC,QAAS9xC,EAAMiqD,gBAE1E9oD,YAAgB,WACZ,OAAO,WAEH02H,OAAa7hI,KAGlB,IAEIwkF,EAAA,cAAAA,EAAA,gBC1EIm+C,GADa,eAnExB,SAAAC,IAAc,IAAAh/H,EAAAhH,KAAAjB,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAgmI,GAAAhmI,KADd+uF,aACc,EAAA/uF,KAENimI,wBAA0BnlH,aAAW,SAAColH,EAA0Bp9G,EAAuBnlB,GAC3F,IAAMwiI,EAAiBr9G,EAAU5b,OAAO,SAAC+b,GAAD,QAA0BA,EAASI,SAAWJ,EAAS6E,WAC3FgU,EAAmC,GACnCskG,EAAgB,EAChBC,EAAgB,EAapB,OAZAH,EAAMh5H,OAAO,SAAAo5H,GAAI,OACbA,EAAK1/D,aAAejjE,GACpBwiI,EAAej5H,OAAO,SAAC+b,GAAD,OAClBA,EAASI,SAAWi9G,EAAKj9G,QACzBJ,EAAStlB,aAAeA,IAC1BpD,OAAS,IAEVyoB,QAAQ,SAAAs9G,GACLxkG,EAAcjU,KAAKy4G,GACnBF,GAAiBE,EAAK5oH,aACtB2oH,GAAiBC,EAAK1oH,eAEvB,CAAEwoH,cAAeA,EAAeC,cAAeA,EAAevkG,cAAeA,KAnB1E9hC,KAsBNumI,aAAezlH,aAAW,SAAColH,EAA0B78G,GACzD,OAAO68G,EAAM/8G,KAAK,SAAAoc,GAAC,OAAIA,EAAElc,SAAWA,MAvB1BrpB,KA8BdwmI,YAAc,SAACN,EAA0B78G,GACrC,OAAO68G,GAAS78G,EAASriB,EAAKu/H,aAAaL,EAAO78G,QAAUjmB,GA/BlDpD,KAkCNymI,oBAAsB3lH,aAAW,SAACgI,GACtC,OAAOA,EAAU5b,OAAO,SAAAyJ,GAAC,OAAIA,EAAEmX,aAnCrB9tB,KAsCd0mI,mBAAqB,SAAC59G,GAClB,OAAO9hB,EAAKy/H,oBAAoB39G,IAvCtB9oB,KA0CN2mI,uBAAyB7lH,aAAW,SAACgI,GACzC,OAAOA,EAAU5b,OAAO,SAAAyJ,GAAC,OAAKA,EAAEmX,aA3CtB9tB,KA8Cd4mI,sBAAwB,SAAC99G,GACrB,OAAO9hB,EAAK2/H,uBAAuB79G,IA/CzB9oB,KAkDN6mI,yBAA2B/lH,aAAW,SAAC2jD,GAQ3C,YAPqBrhE,IAAjB4D,EAAK+nF,UACL/nF,EAAK+nF,QAAU3+C,MAECq0B,EACdz9D,EAAK+nF,QAAQtqB,GAAiB19D,MAC9B,uFA9Bam/H,EAA0Bp9G,EAAuBnlB,GACpE,OAAO3D,KAAKimI,wBAAwBC,EAAOp9G,EAAWnlB,mDAkClC8gE,GACpB,OAAOzkE,KAAK6mI,yBAAyBpiE,aCyD9BqiE,GA7Ga,SAAC15H,GACzB,IAIMwG,EAAO,CACTmD,MAAO9D,GAAQC,KAAKU,MAMlBm1F,EAAW,CAAC,KAAM,MAAMhpE,SAAS3yB,EAAMgM,OAC7C,GAAI2vF,IAAa37F,EAAMud,SACnB,OAAOzc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAGX,IAAMy4H,EAAsBlmH,GAAgBzT,EAAM2T,SAC5CimH,EAAmBD,EAAoB9lH,iBACvCgmH,EAAmBF,EAAoB7lH,iBAK7C,GAFK9T,EAAM85H,UAAan+B,IAAai+B,IAAoBC,EAGrD,OAAO/4H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAGX,IAAI64H,EAAmB/5H,EAAMud,SAAS7B,UAClC1b,EAAMg6H,kBAGFD,EAF6B/5H,EAAMud,SAAS7B,UAAUK,KAAK,SAAAF,GAAQ,OAAI7b,EAAMg6H,iBAAmBh6H,EAAMg6H,gBAAgB3+G,KAAOQ,EAASR,KAEnHrb,EAAMud,SAAS7B,UAAUtoB,IAAI,SAACyoB,GAC7C,OAAI7b,EAAMg6H,iBAAmBh6H,EAAMg6H,gBAAgB3+G,KAAOQ,EAASR,GACxD1pB,OAAA0G,EAAA,EAAA1G,CAAA,GAAKqO,EAAMg6H,iBAEVn+G,IAGA,GAAA1kB,OAAAxF,OAAAgO,EAAA,EAAAhO,CACTqO,EAAMud,SAAS7B,WADN,CAEZ1b,EAAMg6H,mBAKlB,IAAMC,EAAsBtB,GAAsBuB,uBAC9Cl6H,EAAMm6H,gBAAgBn/G,KACtB++G,EACA/5H,EAAMud,SAASlC,IAEb++G,EAAuBH,EAAoBjB,cAC3CqB,EAAuBJ,EAAoBhB,cAE3CqB,EAAY3B,GAAsB4B,wBACpCv6H,EAAMud,SAAS85C,gBAGnB,OACIv2D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MA3DgB,CAC3BoJ,QAAS,OACTN,UAAW,SA0DF8vH,EACG94H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,iBAEJ1vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAK2lD,UAAU,KAAK+hC,MAAM,SACzChuD,GAAekvG,IAEpBt5H,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOwF,EAAM0yE,MAAM,SAC9CohD,WAMbtkI,EAER8K,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACV+wH,EACG/4H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,uBAEJ1vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CACIh/C,QAAQ,KACR2lD,UAAU,KACVn2C,MAlFP,CACrB0J,SAAU,UAkFkBwuE,MAAM,SAJV,GAAA/hF,OAMQ+zB,GAAemvG,KAEvBv5H,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOwF,EAAM0yE,MAAM,SAC9CohD,UAKTtkI,MCjGbwkI,GAbD,SAACx6H,GACX,OACIc,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOrI,EAAM43E,cAAgB,GAC7B5vD,QACIlnB,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAADl2B,OAAAoM,OAAA,GAAaiC,EAAb,CAAoBgB,MAAOhB,EAAMgB,QAC7BF,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,0SCGtB47G,GAAqBt5H,IAAMizC,KAAK,SAAA1iD,GAAkG,IAA/F2W,EAA+F3W,EAA/F2W,MAAOwN,EAAwFnkB,EAAxFmkB,cAAe6kH,EAAyEhpI,EAAzEgpI,oBAAqBpxH,EAAoD5X,EAApD4X,QAASiqE,EAA2C7hF,EAA3C6hF,SAA2ConD,EAAAjpI,EAAjC0W,eAAiC,IAAAuyH,EAAvB,GAAuBA,EAAnB3uH,EAAmBta,EAAnBsa,MAC3G21E,EAAUxgF,IAAM2xD,QAAQ9vB,GAAY,IACpC43F,EAAqBz5H,IAAM2xD,QAAQ,kBAAMj9C,EAAc1W,OAAO,SAAC2xD,EAAKsT,GAAN,OAActT,GAAOsT,EAAIjD,mBAAqB,IAAI,IAAI,CAACtrD,IACrHoS,EAAmB,OAAVjc,EACX8rE,EAAa,CAAC,cAAe,8CAJmGxjC,EAM1GnzC,IAAMozC,SAAS,CACrC8a,kBAAkB,EAClBunB,WAAY,GACZrB,aAAc,KATkH/gC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAM7H3zC,EAN6H6zC,EAAA,GAMtHh0C,EANsHg0C,EAAA,GAY5H6a,EAA+C1uD,EAA/C0uD,iBAAkBunB,EAA6Bj2E,EAA7Bi2E,WAAYrB,EAAiB50E,EAAjB40E,aAOhCwB,EAAqB,SAAC17D,EAAYvM,GACpCtO,EAAS,CAAE6uD,kBAAkB,EAAMunB,WAAYv7D,EAAIk6D,aAAczmE,KAG/D+nE,EAAwB,WAC1Br2E,EAAS,CAAE6uD,kBAAkB,EAAOunB,WAAY,GAAIrB,aAAc,MAGtE,OACIz0E,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAS,GAAA1R,OAAKiR,EAAQkE,MAAb,KAAAnV,OAAsB8wB,EAAS7f,EAAQyyH,YAAc,KACjE/5H,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ5B,KAAb,KAAArP,OAAqBiR,EAAQyD,SAAWxD,GACrDwN,EAAc1iB,OAAS,GACpB2N,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,aACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,qBACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAW8rB,MAAM,SAAjB,yBACAp4E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,QAGRtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKx3C,EAAcziB,IAAI,SAAAgxE,GAAG,OAClBtjE,EAAAhP,EAAAiP,cAAC+5H,GAAD,CACIphI,IAAK0qE,EAAI/oD,IAAM+oD,EAAI22D,OACnBjsH,KAAI,GAAA3X,OAAKitE,EAAItgB,UAAT,KAAA3sD,OAAsBitE,EAAInjD,UAC9B+5G,aAAc52D,EAAI/2C,gBAAkBs0D,EAAQvd,EAAI/2C,iBAAiB1zB,MAAQ,GACzEmpF,WAAY1e,EAAIjD,kBAChBn5C,QAASo8C,EACTgP,aAAc,WACdG,SAAUwD,EACVztE,QAASA,EACTkqE,QAAQ,aACRM,SAAU4mD,OAItB55H,EAAAhP,EAAAiP,cAACo1H,GAAA,EAAD,CAAattH,UAAWT,EAAQ8G,QAC5BpO,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAC4B,MAAvBwtE,GACG95H,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ5B,KAAb,KAAArP,OAAqBiR,EAAQ0F,cACvChN,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAS+W,UAAWT,EAAQwF,cAC5B9M,EAAAhP,EAAAiP,cAAA,iCAIZD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ6yH,cAAxB,UAIJn6H,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ6yH,aAAb,KAAA9jI,OAA6BiR,EAAQ8yH,cAC9CN,EADL,MAIJ95H,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,SAKhBtsD,EAAAhP,EAAAiP,cAACy4E,GAAD,CACI1qE,KAAMymE,EACNA,aAAcuC,EAAW,GACzBtC,YAAasC,EAAW,GACxBvlF,KAAM88D,EACN/W,SAAUu+B,EACV99B,OAzEkB,WAC1B69B,GAAcrD,EAASqD,EAAYrB,GAAgB,IACnDsB,UA8EFikD,GAAiB/nD,GAAa5xE,IAAMizC,KAAK,SAAAtgD,GAA6D,IAA1Dgb,EAA0Dhb,EAA1Dgb,KAAMksH,EAAoDlnI,EAApDknI,aAAcl4C,EAAsChvF,EAAtCgvF,WAClE,OACIhiF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOyxH,UAAWrsH,GACpChO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAY4tE,GACZl6H,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAW8rB,MAAM,SAAS4J,EAA1B,SAMNp5E,GAA2C,CAC7C4C,MAAO,CACHzB,OAAQ,SACRT,QAAS,IAEb5D,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExBqF,OAAQ,CACJvB,WAAY,SACZI,SAAU,GACVC,WAAY,KAEhBkvE,UAAW,CACPnvE,SAAU,IAEdmwH,YAAa,CACT7uH,MAAO,IACP2tE,UAAW,QAEf7rE,YAAa,CACTZ,QAAS,OACTO,WAAY,SACZ/C,SAAU,IAEdkD,YAAa,CACTlD,SAAU,GACVX,YAAa,GACbJ,MAAO9D,GAAQ6B,OAAOX,SAE1Bk0H,aAAc,CACVtwH,WAAY,IACZD,SAAU,IAEdywH,SAAU,CACNxxH,MAAO9D,GAAQiB,KAAKC,SAExBmI,OAAQ,CACJ4D,UAAS,OAAA3b,OAAS0O,GAAQC,KAAKQ,OAAtB,YAIFyhB,kBAAY7d,KAAWR,GAAXQ,CAAmBuwH,KCrJjCltC,GAAY,gBAenB6tC,GAAY,SAACrwC,EAAa7mC,GAC5B,QAAiCluD,IAA7BkuD,EAAWruC,cAOf,OAJqBquC,EAAWruC,cAC3B/V,OAAO,SAAAskE,GAAG,OAAIA,EAAIhzB,KAAOgzB,EAAIhzB,MAAQ25C,IACrC53F,OAAS,EAEQ,gDAA6C6C,GAGjEqlI,GAAoBl6H,IAAMizC,KAAK,SAACp0C,GAClC,OACIc,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,gBAAgBqoC,UAAWmkF,GAAyB1oE,MAAO5yD,EAAM4yD,MAAOpa,QAASx4C,EAAMw4C,QACpGoI,OAAQ5gD,EAAM4gD,OAAQ2yB,SAAUvzE,EAAMuzE,SAAU/2D,WAAYxc,EAAMwc,WAAYkqB,kBAAmB1mC,EAAM0mC,uBAKjHquC,GAAYxqE,aAAW,CACzBymD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEf2xF,aAAc,CACV/nF,OAAQ,GAEZ0wH,mBAAoB,CAChB1wH,OAAQ,YAEZgvE,UAAW,CACPlwE,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBpB,aAAc,CACVC,aAAc,IAElBkwH,YAAa,CACTpsH,WAAY,MACZxF,SAAU,WACV6xH,QAAS,EACTn1H,OAAQ,EACRqD,MAAO9D,GAAQC,KAAKU,KACpBvF,UAAW,SACXkD,OAAQ,QACR2F,UAAW,GACX2C,aAAc,GACdivH,WAAY,CACR1zG,QAAO,KACPy3B,WAAY,+DACZ71C,SAAU,WACVoB,KAAM,EACNpJ,IAAK,GACLoK,MAAO,OACP7H,OAAQ,OAEZw3H,UAAW,CACP3zG,QAAO,OACPpe,SAAU,WACVsD,QAAS,eACT9C,QAAS,SACTgF,WAAY,QACZzF,MAAO9D,GAAQC,KAAKU,KACpBgI,gBAAiB,WAcvB8sH,GAAwDn6H,IAAMizC,KAAK,SAACp0C,GAA2B,IACzF20C,EAA4B30C,EAA5B20C,OAAQ4+B,EAAoBvzE,EAApBuzE,SAAU3gB,EAAU5yD,EAAV4yD,MADuEte,EAE7DnzC,IAAMozC,UAAS,GAF8CC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAE1F8Z,EAF0F5Z,EAAA,GAE9EonF,EAF8EpnF,EAAA,GAAA0qC,EAGjE/9E,IAAMozC,UAAS,GAHkD4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAG1F28C,EAH0F18C,EAAA,GAGhF28C,EAHgF38C,EAAA,GAAAG,EAIzDn+E,IAAMozC,UAAU,GAJyCgrC,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAI1Fy8C,EAJ0Fx8C,EAAA,GAI5Ey8C,EAJ4Ez8C,EAAA,GAAAE,EAK/Ct+E,IAAMozC,cAAsCv+C,GALG0pF,EAAA/tF,OAAAmN,EAAA,EAAAnN,CAAA8tF,EAAA,GAK1Fw8C,EAL0Fv8C,EAAA,GAKvEw8C,EALuEx8C,EAAA,GAO3FljE,EAAaxc,EAAMwc,YAAc,GACjC3G,EAAgB1U,IAAM2xD,QAAQ9yD,EAAM20C,OAAOu3C,OAAQ,CAAClsF,EAAM20C,UAAY,GACtEwnF,EAA2Bh7H,IAAM2xD,QAAQ,kBAAM31C,GAAY,UAAWC,GAAgBujB,kBAAkB,IACxGy7F,EAAuBj7H,IAAM2xD,QAAQ,kBAAMj9C,EAAc/V,OAAO,SAAAskE,GAAG,OAAIA,EAAIlD,oBAAsBi7D,KAA2B,CAACtmH,EAAesmH,IAC5IE,EAA0Bl7H,IAAM2xD,QAAQ,kBAAMj9C,EAAc/V,OAAO,SAAAskE,GAAG,OAAIA,EAAIlD,oBAAsBi7D,KAA2B,CAACtmH,EAAesmH,IAC/IG,EAAQ,GAAAnlI,OAAM6I,EAAM20C,OAAO7lC,KAAnB,KAAA3X,OAA2B4kI,EAA3B,KACRQ,EAAiB,qFACjBC,EAAoB,+JAEpBC,EAAiBt7H,IAAMuzC,YAAY,WACrC,IAAM71B,EAAI,IAAI+8B,KACR8gF,EAA2C,CAC7CrhH,GAAI,GACJ0/G,OAAQl8G,EAAE89G,eAAiB99G,EAAE+9G,kBAAkBz/H,WAC/C2mD,UAAW,GACX7iC,SAAU,GACVigD,kBAAmBi7D,EACnBh7D,kBAAmB,GAEvBnhE,EAAM20C,OAAOkoF,OAAOhnH,EAAc1iB,OAAQupI,GAC1CV,EAAgBnmH,EAAc1iB,QAC9ByoI,GAAc,GACdE,GAAY,IACb,CAACjmH,EAAe7V,EAAM20C,OAAQwnF,IAE3BW,EAAqB37H,IAAMuzC,YAAY,WACzC10C,EAAM20C,OAAO02C,OAAO0wC,IACfF,GAAYI,IACbj8H,EAAM20C,OAAOkoF,OAAOd,EAAcE,GAClCC,OAAqBlmI,IAEzB4lI,GAAc,IACf,CAACG,EAAcE,EAAmBJ,EAAU77H,EAAM20C,SAE/CooF,EAAoB57H,IAAMuzC,YAAN,eAAAhjD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAkB,SAAAC,EAAOqpB,EAAY0/G,GAAnB,IAAAr7H,EAAAs9H,EAAA,OAAAnrI,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,aAClCqN,EAAQmW,EAAc+iB,UAAU,SAAAwrC,GAAG,OAAKA,EAAI/oD,IAAM+oD,EAAI/oD,KAAOA,GAAQ+oD,EAAI22D,SAAWA,MAC7E,GAF2B,CAAA5oI,EAAAE,KAAA,aAG9B26F,EAAQr4C,EAAOn5C,IAAIkE,IACf2b,GAJ0B,CAAAlpB,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EAK1BkhF,EAASyZ,EAAM3xE,IALW,OAMpCs5B,EAAO02C,OAAO3rF,GANsB,wBAAAvN,EAAAM,SAAAT,MAAlB,gBAAAU,EAAAyB,GAAA,OAAAzC,EAAAiB,MAAAC,KAAAC,YAAA,GAQvB,CAACgjB,EAAe8+B,EAAQ4+B,IAErB4D,EAAiBh2E,IAAMuzC,YAAY,SAACr5B,GACtC,IAAM3b,EAAQmW,EAAc+iB,UAAU,SAAAwrC,GAAG,OAAKA,EAAI/oD,IAAM+oD,EAAI/oD,KAAOA,GAAQ+oD,EAAI22D,SAAW1/G,IACtF3b,GAAS,IACTs8H,EAAgBt8H,GAChBk8H,GAAc,GACdE,GAAY,GACZI,EAAqBl8H,EAAM20C,OAAOn5C,IAAIkE,MAE3C,CAACmW,EAAe7V,EAAM20C,SAEzBxzC,IAAMq9C,UAAU,WACZ,IAAsB,IAAlBu9E,GAAuBlmH,EAAckmH,IAAiBlmH,EAAckmH,GAAc3qF,IAAK,CACvF,IAAM6rF,EAAa,IAAA9lI,OAAImlI,EAAJ,SACnB1pE,EAAKjgE,WAAL,EAASsqI,KAEd,CAAClB,EAAcnpE,EAAO0pE,EAAUzmH,IAEnC,IAAMzN,EAAU2sE,KAuBVmoD,EAAiB/7H,IAAMuzC,YAAY,WAAQknF,GAAc,IAAW,IACpExrE,EAAmBjvD,IAAMuzC,YAAYjE,GAAS,0BAA2B,IACzE0sF,EAAch8H,IAAMuzC,YAAY,SAACrsC,EAAe+yE,GAClD,OAAQt6E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO85E,GAAantE,YAAatF,EAAvC,IAA8CvH,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAO+yE,EAASpzD,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,eAC1H,IACG6rC,EAAoBz2C,IAAMuzC,YAAY3D,GAAe,KAAM,IAEjE,OACIjwC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ/9C,QAAQ,YAAYmY,MAAM,UAAUwuC,WAAS,EAAC7uC,QAASmzH,EAAgBloH,SAAUvU,EAAM06H,qBAA/F,yBAGR55H,EAAAhP,EAAAiP,cAACq8H,GAAD,CACI/0H,MAAO80H,EAAY,wBAAyBZ,GAC5C1mH,cAAeumH,EACf7oD,SAAUwpD,EACVzzH,QAAS6tE,EACTujD,oBAAqB16H,EAAM06H,sBAE/B55H,EAAAhP,EAAAiP,cAACq8H,GAAD,CACI/0H,MAAO80H,EAAY,2BAA4BX,GAC/C3mH,cAAewmH,EACf9oD,SAAUwpD,EACVzzH,QAAS6tE,EACTujD,oBAAqB16H,EAAM06H,sBAE/B55H,EAAAhP,EAAAiP,cAACsuC,GAAD,CACIhnC,MAAK,GAAAlR,OAAK0kI,EAAW,UAAY,OAA5B,gBACLtpI,KAAM67D,EACN9lD,QAASw0H,EACTt0H,eAAa,GAEb1H,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KAEQ2yH,GAAY77H,EAAMwc,YAAcxc,EAAMwc,WAAWrpB,OAAS,GAEtD2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIhtC,MAAM,qBACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAa,CAAEjB,QAAQ,GACvB5H,SAAU,SAAC3uB,IAlEX,SAAC7tB,GAC7B,IAAIyzB,EAAM5Q,EAAWT,KAAK,SAAUU,GAChC,OAAOA,EAAU+wC,WAAa7zD,SAGtB3D,IAARo3B,IACAptB,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,cAAsClvG,EAAI02B,WAC1C9jD,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,aAAqClvG,EAAInM,UACzCjhB,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,oBAA4ClvG,EAAIC,iBAChDrtB,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,QAAgClvG,EAAIgkB,KACpCpxC,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,gBAAwClvG,EAAI03B,aAC5C9kD,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,yCAAiElvG,EAAI8f,mBAAmB,GAAG8sB,gBAC3Fh6D,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,yCAAiElvG,EAAI8f,mBAAmB,GAAG+sB,gBAC3Fj6D,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,+BAAuDlvG,EAAI8f,mBAAmB,GAAGgtB,MACjFl6D,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,iCAAyDlvG,EAAI8f,mBAAmB,GAAGitB,QACnFn6D,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,kCAA0DlvG,EAAI8f,mBAAmB,GAAGE,SACpFptC,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,kCAA0DlvG,EAAI8f,mBAAmB,GAAGktB,SACpFp6D,EAAM4gD,OAAN,GAAAzpD,OAAgBmlI,EAAhB,gCAAwDlvG,EAAI8f,mBAAmB,GAAGiE,QAkDtDksF,CAAwB71G,EAAM20B,OAAOxiD,SAGzCmH,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb6iB,EAAWppB,IAAI,SAAAo2B,GAAG,OACf1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAI4nB,IAAKz3C,MAAO6vB,EAAIgkC,UAAWhkC,EAAIgkC,aAGxD1sD,EAAAhP,EAAAiP,cAAA,MAAI8H,UAAWT,EAAQozH,eAInC16H,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQyxE,WAAxB,4CACA/4E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,cACJnlF,UAAWnD,GACXoE,SAAU,CAACgY,EAAkBxY,GAC7B/wC,MAAM,aACNsxC,WAAS,EACT3mD,QAAQ,WACRi/C,UAAQ,KAGhB3vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,aACJnlF,UAAWnD,GACXoE,SAAU,CAACgY,EAAkBxY,GAC7B/wC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACRi/C,UAAQ,KAGhB3vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,oBACJnlF,UAAWnD,GACXoE,SAAUgY,EACVrR,UAAW5wB,GACXtnB,MAAM,oBACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACRuO,YAAa,CAAEjB,QAAQ,IAEvBj9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KtLmGJ,SAAC+sC,GACvC,IAAM3C,EAAef,KACrB,OAAOyD,GAA4B1C,EAAc2C,GsLpGpB42F,CAA2Bt9H,EAAM0mC,mBAAmBtzC,IAAI,SAAAo2B,GAAG,OACxD1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,sBACJnlF,UAAWnD,GACXoE,SAAU,CAACgY,EAAkBxe,IAC7BmN,UAAW9wB,GACXpnB,MAAM,wBACNmsC,sBAAsB,EACtBxhD,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACRjmB,KAAK,SACL2oB,WAAY,CACR9nC,aAAevK,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBriF,UAAWT,EAAQiD,aAAczB,SAAS,OAA1D,SAI3B9I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,QACJnlF,UAAWhD,GACXiE,SAAU,CAAChH,GAAKgqF,IAChBnsG,OAAQgjC,GACRlT,UAAWrxB,GACX7mB,MAAM,yBACNsxC,WAAS,EACT3mD,QAAQ,WACRwkD,YAAY,sBAGpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,gBACJnlF,UAAWhC,GACX4J,UAAW1wB,GACX+pB,SAAUrG,GACVlrC,MAAM,gBACNsxC,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,KAGrBh+C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,yCACJnlF,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,yCACJnlF,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,+BACJnlF,UAAWnD,GACXntC,MAAM,OACNsxC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,iCACJnlF,UAAWnD,GACXntC,MAAM,SACNrV,QAAQ,WACR2mD,WAAS,KAIjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,kCACJnlF,UAAWnD,GACX+K,UAAW5wB,GACXtnB,MAAM,QACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAa,CAAEjB,QAAQ,IAEvBj9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,kCACJnlF,UAAWnD,GACXoE,SAAU/G,GACV0N,UAAWpxB,GACXsB,OAAQ6iC,GACRjrD,MAAM,WACNrV,QAAQ,WACR2mD,WAAS,EACTnC,YAAY,qBAIpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,gCACJnlF,UAAWnD,GACXoE,SAAUjH,GACVliB,OAAQ2iC,GACR7S,UAAWtxB,GACX5mB,MAAM,eACNrV,QAAQ,WACR2mD,WAAS,EACTnC,YAAY,yBAIpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAOmpF,GAAahuE,WAAeguE,GAAantE,aAA1D,oBACqB7M,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAK,GAAAlR,OAAKolI,EAAL,QAAAplI,OAA0BqlI,GAAqBx0G,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,cAE5HjL,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,sBACJnlF,UAAWL,GACX7nB,OAAQb,GACR2wB,UAAW5wB,GACX4oB,UAAU,mBACVC,SAAO,EACPC,KAAG,GtL+TA,WAC/B,IAAMlT,EAAef,KACrB,OAAOwH,GAAqBzG,GsL/TCw5F,GAAsBnqI,IAAI,SAAA6+B,GAAM,OAC7BnxB,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI98C,IAAKu4B,EAAO5W,GACZxU,MAAOorB,EAAOt4B,MACdA,MAAK,GAAAxC,OAAK86B,EAAO5W,IACjBo7B,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,sBAO9C7I,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAASwzH,EAAoBnzH,MAAM,WAA3C,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS4zH,EAAgBvzH,MAAM,UAAU4K,SAAUvU,EAAMw4C,SAAjE,GAAArhD,OACQ0kI,EAAW,MAAQ,OAD3B,sBASL9jF,gBAAoC,CAAEF,KAAM01C,GAAWmhC,oBAAoB,GAA3E32E,CAAmFhwB,eAAYszG,eCxYxGmC,GAA2Br8H,IAAMizC,KAAK,SAACp0C,GACzC,IAAM89C,EAAe38C,IAAM2xD,QAAQ,iBAAO,CAAE/U,QAAQ,IAAS,IACvD0/E,EAAyBt8H,IAAMuzC,YAAY,SAAC4hC,EAAa3/B,GAC3D32C,EAAM09H,yBAAN,GAAAvmI,OAAkC6I,EAAMs8H,SAAxC,uBAAmF,MAAZ3lF,IACxE,IACHx1C,IAAMq9C,UAAU,WACRx+C,EAAMsf,qBAAqBI,IAAI,SAAkC1pB,IAA5BgK,EAAM29H,mBAC3C39H,EAAM09H,yBAAN,GAAAvmI,OAAkC6I,EAAMs8H,SAAxC,wBAAuE,IAE5E,CAACt8H,EAAMsf,uBACV,IAAM8wC,EAAmBjvD,IAAMuzC,YAAYjE,GAAS,0BAA2B,IACzEmtF,EAA8BntF,GAAS,2BACvCotF,EAAW1gH,GAAY,UAAWC,GAAgBsiB,eAClDo+F,IAAqB99H,EAAMkiE,iBAAmBliE,EAAMkiE,kBAAoB27D,EACxE5+G,IAAuBjf,EAAM8gB,WAAY9gB,EAAMkf,mBAAoBlf,EAAM+9H,mBAAqB/9H,EAAM+9H,kBAAkBznI,gBAAkB0J,EAAMkf,iBAAiB5oB,eAGrK,OAFagqB,GAAwBtgB,EAAMsf,qBAAsBtf,EAAM4f,WAAY5f,EAAM8gB,SAAU9gB,EAAMg6B,QAAS/a,IAAyBjf,EAAMg+H,gBAAkBh+H,EAAMi+H,oBAIrKn9H,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOgD,aACf5L,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAa9L,EAAMwtD,WAEvCxtD,EAAMsf,qBAAqBI,IAAI,KAAO1f,EAAMg+H,gBAC7Cl9H,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,+BACAzK,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOw0H,YAA1B,yDAA6Fl+H,EAAMwtD,SAAnG,qBACA1sD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOl3C,MAAO0I,GAAOy0H,aACjBrvH,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,eACJnlF,UAAWZ,GACX1vC,MAAO,gBAGX/F,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOl3C,MAAO0I,GAAOy0H,aACjBrvH,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,kBACJnlF,UAAWZ,GACX1vC,MAAO,mBAGX/F,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOl3C,MAAO0I,GAAOy0H,aACjBrvH,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,kBACJnlF,UAAWZ,GACX1vC,MAAO,+BAGX/F,EAAAhP,EAAAiP,cAAA,aAIPf,EAAMsf,qBAAqBI,IAAI,IAC5B5e,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACAJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,eAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,eACJnlF,UAAWZ,GACX1vC,MAAO,WACP8vC,SAAS,KAGjB71C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,kBACJnlF,UAAWZ,GACX1vC,MAAO,qBAMtB7G,EAAM4f,YAAc,CAAC,EAAG,EAAG,IAAIJ,KAAK,SAAAC,GAAC,OAAIzf,EAAMsf,qBAAqBI,IAAID,MACrE3e,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACAJ,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,YAEHvL,EAAMsf,qBAAqBI,IAAI,IAC5B5e,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,wBACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAc,0GAIhCnnB,EAAMsf,qBAAqBI,IAAI,IAC5B5e,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,0BACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAc,oDAIhCnnB,EAAMqwB,IAAM,IAAMrwB,EAAMsf,qBAAqBI,IAAI,KAC9C5e,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,yBACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAc,iFAO5CnnB,EAAMsf,qBAAqBI,IAAI,KAC5B5e,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACAJ,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,YAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,eACJnlF,UAAWnD,GACX6K,KAAMjO,GACN/pC,MAAOsgB,GAAc,eACrB31B,QAAQ,WACRg5B,KAAK,SACLu0B,UAAWhxB,GACXqqB,SAAU,CAACgY,EAAkB5e,IAC7B2G,WAAS,EACT1H,UAAQ,KAIhB3vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,iBACJnlF,UAAWnD,GACX6K,KAAMjO,GACN/pC,MAAOsgB,GAAc,eACrB31B,QAAQ,WACRg5B,KAAK,SACLu0B,UAAWlxB,GACXuqB,SAAU,CAACgY,EAAkB5e,IAC7Bf,UAAQ,KAIhB3vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,WACJnlF,UAAWnD,GACX6K,KAAMjO,GACNmO,UAAW5wB,GACXiqB,SAAU,CAACgY,EAAkB5e,IAC7B3qC,MAAOsgB,GAAc,gBACrB31B,QAAQ,WACRg5B,KAAK,SACL2tB,WAAS,EACT1H,UAAQ,OAO3BzwC,EAAMsf,qBAAqBI,IAAI,KAC5B5e,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACYJ,EAAAhP,EAAAiP,cAAA,WACRD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,WACAzK,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,YACJnlF,UAAWnD,GACX6K,KAAMjO,GACNwH,SAAUgY,EACVvpD,MAAOsgB,GAAc,WACrBkvB,QAAM,EACN2I,YAAalB,EACbtsD,QAAQ,WACR2mD,WAAS,EACT4G,UAAW5wB,GACXsiB,UAAQ,GvLkDR,WAC5B,IAAM1M,EAAef,KACrB,OAAOuC,GAAkBxB,GuLlDIq6F,GAAmBhrI,IAAI,SAAAo2B,GAAG,OACvB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIpDqG,EAAMouE,WACHttE,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,aACJnlF,UAAWnD,GACXntC,MAAOsgB,GAAc,wBACrB31B,QAAQ,WACR2mD,WAAS,KAIjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,eACJnlF,UAAWnD,GACXntC,MAAOsgB,GAAc,0BACrB31B,QAAQ,WACR2mD,WAAS,QASpCn4C,EAAMsf,qBAAqBI,IAAI,IAC5B5e,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACCJ,EAAAhP,EAAAiP,cAAA,WACGD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,YACAzK,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO,CAAE2I,MAAO9D,GAAQ+B,IAAIb,UAAY/G,EAAMq+H,eAE1Dv9H,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOw0H,YAA1B,0CACAp9H,EAAAhP,EAAAiP,cAACs2C,GAAA,EAAD,CACI19C,MAAOqG,EAAM29H,kBAAoB,IAAM,IACvCxnF,SAAUsnF,EACVz8H,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOqD,WAAerD,GAAOuD,aAEzCnM,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,IAAO88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cAAgB9C,MAAM,QAC1E/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,IAAO88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cAAgB9C,MAAM,QAG7E7G,EAAM29H,mBACH78H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WACND,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,wBACJnlF,UAAWnD,GACX6K,KAAMjO,GACNmO,UAAW5wB,GACXtnB,MAAOsgB,GAAc,wBACrBkvB,QAAM,EACN2I,YAAalB,EACbtsD,QAAQ,WACR2mD,WAAS,GvLPL,WACxC,IAAMpU,EAAef,KACrB,OAAOwC,GAA8BzB,GuLOAu6F,GAA+BlrI,IAAI,SAAAo2B,GAAG,OACnC1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,cASxEqG,EAAMsf,qBAAqBI,IAAI,KAAOo+G,GAAsB99H,EAAM6f,gBAAkB7f,EAAM8gB,WAAa9gB,EAAMg6B,SAC1Gl5B,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACAJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAavvE,wBAAhC,kBAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,iBACJnlF,UAAWhC,GACX3jD,QAAQ,WACRutD,UAAW1wB,GACXwwB,KAAMjO,GACNuH,WAAS,EACT6G,YAAalB,EACb1F,SAAU,CAACrG,IACXtB,UAAQ,EACRuC,sBAAsB,OAOrChzC,EAAMsf,qBAAqBI,IAAI,KAAO1f,EAAM8gB,UACzChgB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACAJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAavvE,wBAAhC,gBAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,eACJnlF,UAAWnD,GACXntC,MAAM,yBACNrV,QAAQ,WACR2mD,WAAS,OAMzBr3C,EAAAhP,EAAAiP,cAAA,WACCf,EAAMsf,qBAAqBI,IAAI,MAAQ1f,EAAM8gB,UAAY9gB,EAAMkf,kBAAoBlf,EAAM+9H,mBAAqB/9H,EAAM+9H,kBAAkBznI,gBAAkB0J,EAAMkf,iBAAiB5oB,eAC5KwK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACAJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAavvE,wBAAhC,yBAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACflrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,4BACJnlF,UAAWnD,GACXntC,MAAM,6DACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAU,CAACwlF,GACX5qF,sBAAsB,QAS9BlyC,EAAAhP,EAAAiP,cAAA,eAsBhB,IAAM2I,GAAwC/X,OAAA0G,EAAA,EAAA1G,CAAA,GACvCmpF,GADuC,CAE1CyjD,YAAa,CACTtyH,WAAY,SAEhBgB,WAAY,CACRC,QAAS,gBAEbixH,aAAc,CACVnxH,YAAa,IAEjBwxH,aAAc,CACVp0H,QAAS,GACT4C,YAAa,GACbP,aAAc,MAKPijC,eAtCf,SAAyB/uC,EAAmBi6C,GACxC,IACMwzB,EADgBob,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,eACcn/G,GAAY,cAAeC,GAAgBmjB,eACzEo9F,EAAoBn0C,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,wBACpB7qI,EAASgtI,aAAkB7jF,EAASiG,SAA3B49E,CAAqC99H,GACpD,MAAO,CACHytE,YACAuvD,kBAAmBA,EACnBU,cAAe5sI,GAAUA,EAAOupB,MAAQvpB,EAAOupB,KAAK4/B,EAASl7C,QAAUjO,EAAOupB,KAAK4/B,EAASl7C,OAAOy7D,qBAI3G,SAA4BlpE,EAAe2oD,GACvC,MAAO,CACH8iF,yBAA0B,SAAC1wC,EAAerzF,GAAhB,OAA+B1H,EAAS2uD,aAAOhG,EAASiG,SAAUmsC,EAAOrzF,OAwB5F+1C,CAA6CxlC,KAAWR,GAAXQ,CAAmBszH,KC/XzEkB,GAAyBv9H,IAAMizC,KAAK,SAACp0C,GACvC,OAAIA,EAAMsf,qBAAqBI,IAAI,IAAM1f,EAAMm7D,mBAEvCr6D,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOi1H,aACf79H,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOgD,aACf5L,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,cAAyC9L,EAAMwtD,WAEnD1sD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,yBAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAOiE,YACpC7M,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmD,aAChB/L,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0C,WAA1B,qBAGRtL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,0BACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,YACpB5S,SAAUvU,EAAMs7D,2BAGxBx6D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,4BACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,cACpB5S,SAAUvU,EAAMq7D,0BAI5Bv6D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAOiE,YACpC7M,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmD,aAChB/L,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0C,WAA1B,qBAGRtL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,0BACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,YACpB5S,SAAUvU,EAAMw7D,2BAGxB16D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,4BACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,cACpB5S,SAAUvU,EAAMu7D,0BAI5Bz6D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAOiE,YACpC7M,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmD,aAChB/L,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0C,WAA1B,qBAGRtL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,0BACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,YACpB5S,SAAUvU,EAAM07D,2BAGxB56D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,4BACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,cACpB5S,SAAUvU,EAAMy7D,0BAI3Bz7D,EAAM4+H,gBACH99H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,oBACAzK,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,kBACJnlF,UAAWhC,GACXtuC,MAAM,kBACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAUrG,GACV8M,KAAMjO,GACNmO,UAAW1wB,GACXywB,eAAa,IAEjBh+C,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,uBACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,4CAMvCnnB,EAAM6+H,sBACH/9H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,cACAzK,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,4BACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,oCAGxBrmB,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,kCACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,6CAMxCrmB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,mBACAzK,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,sCACJnlF,UAAWZ,GACX1vC,MAAOsgB,GAAa,qDAG3BnnB,EAAM87D,mCACHh7D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,sBACJnlF,UAAWhC,GACXtuC,MAAM,sBACNsxC,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACb1G,SAAUrG,GACV8M,KAAMjO,GACNmO,UAAW1wB,OAK1BruB,EAAMq7D,uBACHv6D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,uBAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,oBACJnlF,UAAWnD,GACX6K,KAAMjO,GACN/pC,MAAM,qBACNrV,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,uBACJnlF,UAAWhC,GACXtuC,MAAM,wBACNsxC,WAAS,EACT3mD,QAAQ,WACRqtD,KAAMjO,GACNmO,UAAW1wB,QAM9BruB,EAAMu7D,uBACHz6D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,uBAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,oBACJnlF,UAAWnD,GACX6K,KAAMjO,GACN/pC,MAAM,qBACNrV,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,uBACJnlF,UAAWhC,GACXtuC,MAAM,wBACNsxC,WAAS,EACT3mD,QAAQ,WACRqtD,KAAMjO,GACNmO,UAAW1wB,QAM9BruB,EAAMy7D,uBACH36D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,uBAEJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,oBACJnlF,UAAWnD,GACX6K,KAAMjO,GACN/pC,MAAM,qBACNrV,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,uBACJnlF,UAAWhC,GACXtuC,MAAM,wBACNsxC,WAAS,EACT3mD,QAAQ,WACRqtD,KAAMjO,GACNmO,UAAW1wB,MAGnBvtB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,iBACJnlF,UAAWnD,GACX6K,KAAMjO,GACN/pC,MAAM,iBACNrV,QAAQ,WACR2mD,WAAS,SAShCr3C,EAAAhP,EAAAiP,cAAA,eAoCF2uC,IClVVovF,GDkVUpvF,eAjCf,SAAyB/uC,EAAmBi6C,GACxC,IAAMygB,EAAwBmuB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,2BACxB/gE,EAAwBiuB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,2BACxB7gE,EAAwB+tB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,2BACxBhhE,EAA0BkuB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,6BAC1B9gE,EAA0BguB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,6BAC1B5gE,EAA0B8tB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,6BAC1BxgE,EAAoC0tB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,uCACpCnhE,EAAqBquB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,wBACrBlhE,EAAsBouB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,yBAKtByC,EAA2B3jE,IAHGj+C,GAAY,OAAQC,GAAgBojB,2BAIlEw+F,EAAiC5jE,IAHGj+C,GAAY,aAAcC,GAAgBojB,2BAI9E/uC,EAASgtI,aAAkB7jF,EAASiG,SAA3B49E,CAAqC99H,GAEpD,MAAO,CACHw6D,qBACAE,wBACAC,0BACAC,wBACAC,0BACAC,wBACAC,0BACAI,oCACA8iE,eAAgBG,EAChBF,qBAAsBG,EACtBX,cAAe5sI,GAAUA,EAAOupB,MAAQvpB,EAAOupB,KAAK4/B,EAASl7C,SAItDgwC,CAAyBgvF,IEvV3BnxC,GAAY,2BAmBnB0xC,GAAoC99H,IAAMizC,KAAK,SAACp0C,GAAiB,IAC3Dk/H,EAAoCl/H,EAApCk/H,UAAWtmF,EAAyB54C,EAAzB44C,cAAega,EAAU5yD,EAAV4yD,MAClCzxD,IAAMq9C,UAAU,WACZ,GAAI0gF,EAAW,CACX,IAAMjC,EAAaxzG,GAAcmvB,GACjCga,EAAKjgE,WAAL,EAAAhB,OAAAgO,EAAA,EAAAhO,CAASsrI,MAEd,CAACiC,EAAWtmF,EAAega,IAE9B,IAAMusE,EAAqBh+H,IAAM2xD,QAAQ,WACrC,IAAM93C,EAAOhb,EAAM44C,cAAc59B,MAAQ,GACrC0E,GAAM,EAWV,OAVA1E,EAAKY,QAAQ,SAAAwjH,GACT,IAAMC,EAA2BpgH,GAAoBjf,EAAMud,SAAS0D,SAAUm+G,EAAOn+G,UACjFtB,GAAkB3f,EAAMqf,mBAAoB+/G,EAAOx/G,WAAYw/G,EAAOt+G,SAAUs+G,EAAOplG,QAASqlG,KAChG3/G,GAAM,KAGYW,GAAyBrgB,EAAMqf,qBAEK,MAApCrf,EAAMud,SAASkmD,mBAAwE,GAA3CzjE,EAAMud,SAASkmD,kBAAkBtwE,SACnGusB,GAAM,GACHA,GACR,CAAC1f,EAAM44C,cAAc59B,OAExB,OACIla,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKi+H,GACGr+H,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,OACbqoC,UAAWmoF,GACXjgH,mBAAoBrf,EAAMqf,mBAC1B9B,SAAUvd,EAAMud,SAChB0gH,oBAAqBj+H,EAAM44C,cAAcqlF,0BAc3DqB,GAAiEn+H,IAAMizC,KAAK,SAACp0C,GAAmC,IAC1Gud,EAAavd,EAAbud,SAEFgiH,EAAiBhiH,EAASf,WAAW1c,OAAO,SAAA+e,GAAC,OAAIA,EAAEiC,WAAU1tB,IAAI,SAAA6J,GAAC,OAAIA,EAAEuwD,WAAU,GAClF3tC,IAAgBtC,EAASf,WAAWT,KAAK,SAAA8C,GAAC,OAAIA,EAAEiC,WAGtD,OACIhgB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAC5B,IAAMnhD,EAAOmhD,EAAOn5C,IAAIkE,GAClB4f,EAAuBtf,EAAMqf,mBAAmB7rB,EAAK6nB,KAAO,IAAIiB,IAEhE0kD,IADextE,EAAKstB,UAAattB,EAAKwmC,QACa,GAArCzc,EAASkmD,kBAAkBtwE,QAAcoqB,EAASkmD,kBAAkB1nD,KAAK,SAAAjqB,GAAC,OAAIA,EAAE0nE,YAAchmE,EAAK6nB,MACvH,OACIva,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAKoV,GACNhO,EAAAhP,EAAAiP,cAACy+H,GAAD,CACIlD,SAAUxtH,EACVpP,MAAOA,EACPmhD,SAAU0sC,GACV//B,SAAUh6D,EAAKg6D,SACftuC,iBAAkB3B,EAAS0D,SAC3B88G,kBAAmBvqI,EAAKytB,SACxBs+G,eAAgBA,EAChBr9D,gBAAiB3kD,EAAS2kD,gBAC1BphD,SAAUttB,EAAKstB,SACfjB,cAAeA,EACfma,QAASxmC,EAAKwmC,QACdpa,WAAYpsB,EAAKosB,WACjByQ,IAAK78B,EAAK68B,IACV/Q,qBAAsBA,EACtB2+G,oBAAqBj+H,EAAMi+H,oBAC3BD,iBAAgBh9D,IAEpBlgE,EAAAhP,EAAAiP,cAAC0+H,GAAD,CAAwBnD,SAAUxtH,EAAMpP,MAAOA,EAAOmhD,SAAU0sC,GAAW//B,SAAUh6D,EAAKg6D,SAAUluC,qBAAsBA,UASnIy4B,gBAAoC,CAC/CF,KAAM01C,GACNn1C,SAAU,SAAC3V,EAAQziC,GACf,IAEI0/H,EAAmBviH,GAAY,mBAAoBC,GAAgBgkB,cACjEu+F,EAA4B3/H,EAAMud,SAAS7B,UAC5C5b,OAAO,SAAA+b,GAAQ,OAA0B,IAAtBA,EAAS6E,UACtB7E,EAASilD,iBACTjlD,EAASilD,gBAAgBhhE,OAAO,SAAAq6B,GAAE,OAAIA,EAAGT,iBAAmBgmG,GACxDvlG,EAAGR,QAAQ5d,KAAK,SAAA6jH,GAAG,OAAIA,EAAIjmI,OAAqC,OAA5BimI,EAAIjmI,MAAMrD,kBAAyBnD,OAAS,IAEzF1B,EAAc,GAUpB,OARAA,EAAOupB,KAAOynB,EAAOznB,MAAQynB,EAAOznB,KAAK5nB,IAAI,SAAAo2B,GACzC,GAAIA,EAAI2xC,oBAAsBwkE,EAA0BxsI,OAAS,EAC7D,MAAO,CACHgoE,mBAdU,+JAmBf1pE,IAtBAsmD,CAwBXknF,ICvHEY,GAAuC1+H,IAAMizC,KAAK,SAACp0C,GAAiB,IAAAqwC,EAE7CrwC,EAAjBoI,eAF8D,IAAAioC,EAEpD,GAFoDA,EAGhEyvF,EAAc3+H,IAAM2xD,QAAQ,kBAAO,GAAQ,IAC3CzqD,EAAQrI,EAAMqI,MACd03H,EAA8BvtF,GAAgC,uCAC9DpmC,EAAYtL,EAAAhP,EAAAiP,cAAA,KAAG8H,UAAWT,EAAQgE,WAAtB,6EAA4GtL,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ43H,UAAzB,GAAA7oI,OAAuCkR,IAAnJ,mBAClB,OAAKy3H,EAuCOh/H,EAAAhP,EAAAiP,cAAA,aArCJD,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO+vD,GAAiBzkD,OAC3BxL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACD,UAAWT,EAAQ4f,SAE/BlnB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG4yB,GAAI,GAClB99C,EAAAhP,EAAAiP,cAACwyF,GAAD,CAAc1qF,UAAWT,EAAQm/F,YAGrCzmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG4yB,GAAI,EAAG/1C,UAAWT,EAAQorF,eACxC1yF,EAAAhP,EAAAiP,cAAA,KAAG8H,UAAS,GAAA1R,OAAKiR,EAAQmW,cAAb,KAAApnB,OAA8BiR,EAAQ63H,iBAC7CjgI,EAAMqI,OAEVrI,EAAM0e,aACH5d,EAAAhP,EAAAiP,cAAA,KAAG8H,UAAS,GAAA1R,OAAKiR,EAAQsW,YAAb,KAAAvnB,OAA4BiR,EAAQ83H,oBAC3ClgI,EAAM0e,cAInB5d,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAY+tC,UAAU,IAAIz+C,KAAMsH,EAAMye,WAAY09B,OAAO,SAASC,IAAI,uBAClEt7C,EAAAhP,EAAAiP,cAAC0yF,GAAD,CAAc5qF,UAAWT,EAAQu8E,eAIzC7jF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMljB,UAAS,GAAA1R,OAAKiR,EAAQ+3H,kBAAb,KAAAhpI,OAAkCiR,EAAQ83H,mBAAqBriH,MAAI,EAACmO,GAAI,IACnFlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,mBACJnlF,UAAWZ,GACX1vC,MAAOuF,EACPgsC,SAAU2nF,EACVlhF,KAAMjO,UAWrBlnC,GAA2C,CACpDs2H,SAAU,CACNr1H,WAAY,QAEhBsH,OAAQ,CACJ9N,OAAQ,GACR6H,MAAO,GACPpC,SAAU,YAEdg7E,WAAY,CACRh7E,SAAU,YAEdu2H,kBAAmB,CACfl0H,WAAY,IAEhB+b,QAAS,CACL1d,WAAY,aACZR,UAAW,GACX2C,cAAe,GACf1C,YAAa,IAEjB2U,YAAa,CACT/U,MAAO9D,GAAQC,KAAKU,KACpBuH,UAAW,SACXrD,SAAU,IAEd6T,cAAe,CACX7T,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,QAEhB48F,SAAU,CACN59F,MAAO9D,GAAQiB,KAAKC,QACpB2D,SAAU,GACVd,SAAU,YAEdiC,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,QAEhBg6E,WAAY,CACRh7E,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd0B,UAAW,CACP1B,SAAU,GACVf,MAAO9D,GAAQC,KAAKS,UACpB+D,WAAY,aACZ0C,YAAa,IAEjBizH,eAAgB,CACZn2H,UAAW,GAEfo2H,kBAAmB,CACfp2H,WAAY,IAEhB0pF,cAAe,CACX4sC,WAAY,IAILl2H,QAAWR,GAAXQ,CAAmB21H,IChIrBtyC,GAAY,kCAgBnB8yC,GAAqCl/H,IAAMizC,KAAK,SAACp0C,GAAiB,IAC5Dk/H,EAAoCl/H,EAApCk/H,UAAWtsE,EAAyB5yD,EAAzB4yD,MAAOha,EAAkB54C,EAAlB44C,cAQ1B,OAPAz3C,IAAMq9C,UAAU,WACZ,GAAI0gF,EAAW,CACX,IAAMjC,EAAaxzG,GAAcmvB,GACjCga,EAAKjgE,WAAL,EAAAhB,OAAAgO,EAAA,EAAAhO,CAASsrI,MAEd,CAACiC,EAAWtsE,EAAOha,IAGlB93C,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,OAAOqoC,UAAWmpF,GAA0C7kH,MAAOzb,EAAMyb,MAAOy1B,iBAAkB0H,EAAc1H,sBAQvIovF,GAAyEn/H,IAAMizC,KAAK,SAACp0C,GACvF,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAC5B,IAAMnhD,EAAOmhD,EAAOn5C,IAAIkE,GAEpBgf,EAAclrB,EAAKkrB,aAAe,GACtC,OACI5d,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAKoV,GACNhO,EAAAhP,EAAAiP,cAACw/H,GAAD,CAAsCjE,SAAUxtH,EAAM+xC,SAAU0sC,GAAW7uE,YAAaA,EAAarW,MAAO7U,EAAK6U,MAAOoW,WAAYjrB,EAAK6tE,qBAQlJtpB,gBAAoC,CAAEF,KAAM01C,IAA5Cx1C,CAA0DsoF,ICfnE32H,GAA2C,CAC7CsyB,KAAM,CACFxtB,gBAAiB3I,GAAQC,KAAKI,KAC9BmkF,YAAa,EACbt9B,YAAa,SACbna,YAAa/sC,GAAQC,KAAKU,KAC1B4D,QAAS,SACT4B,MAAO,OACP/K,UAAW,UAEfgR,OAAQ,CACJjG,MAAO,QAEXia,KAAM,CACFtc,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdlE,KAAM,CACFmD,MAAO9D,GAAQiB,KAAKC,QACpBsH,cAAe,aAEnBglG,aAAc,CACV1pG,MAAO9D,GAAQC,KAAKS,WAExBi6H,aAAc,CACV72H,MAAO9D,GAAQC,KAAKS,WAExBk6H,UAAW,CACP51H,OAAQ,WAID4kC,eACXvlC,KAAWR,IACXqe,eAFW0nB,CA3DU,SAACzvC,GAAiB,IAC/B0gI,EAAgD1gI,EAAhD0gI,cAD+BrwF,EACiBrwC,EAAjCoI,eADgB,IAAAioC,EACN,GADMA,EACFrkC,EAAmBhM,EAAnBgM,MAAO1C,EAAYtJ,EAAZsJ,QACtCq3H,EAAiBxjH,GAAY,SAAUC,GAAgByiB,eACvD+gG,EAAgBzjH,GAAY,QAASC,GAAgByiB,eACrD5X,EAAmB,OAAVjc,EACf,OACIlL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG1iB,QAAS,kBAAOo3H,GAAiBp3H,GAAQ,EAAMq3H,KAC7D7/H,EAAAhP,EAAAiP,cAACwpF,GAAA,EAAD,CAAYlvE,GAAG,eAAe87B,UAAU,MAAM5iC,SAAUmsH,EAAe73H,UAAWT,EAAQ6J,QACtFnR,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EAAGz3C,UAAWT,EAAQ4zB,MACpCl7B,EAAAhP,EAAAiP,cAACypF,GAAA14F,EAAD,CAAW+W,UAAS,GAAA1R,OAAKiR,EAAQ6d,KAAb,KAAA9uB,OAAqBupI,GAAiBt4H,EAAQo4H,gBAClE1/H,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ5B,KAAb,KAAArP,OAAqBupI,GAAiBt4H,EAAQirG,eAA5D,yBAIZvyG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG1iB,QAAS,kBAAMA,GAAQ,EAAOs3H,KAC5C9/H,EAAAhP,EAAAiP,cAACwpF,GAAA,EAAD,CAAYlvE,GAAG,kBAAkB87B,UAAU,MAAMtuC,UAAWT,EAAQ6J,QAChEnR,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EAAGz3C,UAAWT,EAAQ4zB,MACpCl7B,EAAAhP,EAAAiP,cAACypF,GAAA14F,EAAD,CAAW+W,UAAWT,EAAQ6d,OAC9BnlB,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ5B,MAAxB,OAAkC1F,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAS,GAAA1R,OAAK8wB,EAAS7f,EAAQq4H,UAAY,KAAjD,8BJrBrD3B,+EAQL,IA+Be+B,GA/BkB,SAAC7gI,GAC9B,OACIc,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACV9I,EAAM20C,OAAOn5C,IAAI,IAAMwE,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GACnD,IAAMnhD,EAAOmhD,EAAOn5C,IAAIkE,GACpBohI,GAAmB,EAUvB,OATI9gI,EAAM4pC,YAAc5pC,EAAM4pC,YAAck1F,GAASiC,WAAavtI,EAAKstB,SAEnEggH,GAAmB,EAEd9gI,EAAM4pC,YAAc5pC,EAAM4pC,YAAck1F,GAASkC,aAAextI,EAAKstB,WAE1EggH,GAAmB,GAInBhgI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMryB,IAAKoV,EAAM+O,MAAI,EAACmO,GAAI,IACtBlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,eACJqoC,UAAWZ,GACX1vC,MAAOrT,EAAKytI,iBACZ1sH,SAAUusH,GAAqB9gI,EAAM20C,OAAOn5C,IAAIkE,IAAUM,EAAM20C,OAAOn5C,IAAIkE,GAAO85D,aAAex5D,EAAMzJ,kBK8RpHm5C,mBArBf,SAAyB/uC,EAAmBi6C,GACxC,IAAIsmF,EAAuBvgI,EAAM6rE,gBAAgBxxD,KAC7CuC,EAAW5c,EAAM4c,SACjB4jH,EAAWxgI,EAAMqb,KAAKhB,KACpBglD,EAAoBwpB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,qBAChEygI,EAAiC53C,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,kCAC7E0gI,EAA6BF,EAASplH,KAAK,SAAA9qB,GAAC,OAAIA,EAAE2sB,cAAgBwjH,IAClEE,EAAkCD,GAA8BA,EAA2BjpG,YAC3FkpD,EAAc3gF,EAAMmhB,WAAWnO,QAAQ7E,KAE7C,MAAO,CACHyO,SAAUA,EACV4jH,SAAUA,EACVD,qBAAsBA,EACtBlhE,kBAAyC,SAAtBA,EACnBohE,+BAAgCA,EAChCG,+BAAgCD,EAChChgD,YAAaA,IAIN5xC,CA7RgB,SAAC1vC,GAC5B,I9LinB8BozB,E8LjnBxBu6E,EAAYxwF,GAAY,UAAWC,GAAgB8jB,gBACnDsgG,EAAgBrkH,GAAY,cAAeC,GAAgB8jB,gBAC3D3jB,EAAWvd,EAAMud,UAAYvd,EAAMud,SAASvC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOrb,EAAMzJ,aA4B9EkrI,EAAsBlkH,GAAYA,EAAS7B,WAC1C6B,EAAS7B,UAAUK,KAAK,SAAA2lH,GAAI,OAAIA,EAAK1jH,mBAAqBhe,EAAM2rB,kBAChEpO,EAAS7B,UAAUK,KAAK,SAAA2lH,GAAI,OAAIA,EAAK1jH,mBAAqBhe,EAAM2rB,iBAAiB1P,OAClF0lH,EAAoB3hI,EAAMmhI,UAAYnhI,EAAMmhI,SAASplH,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAOomH,IACxEG,EAAmBD,GAAqBA,EAAkB3jH,iBAG1D6jH,EAAsB7hI,EAAMmhI,UAAYnhI,EAAMmhI,SAASplH,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAOrb,EAAM8hI,wBAGhFC,EAA0B/hI,EAAMmhI,UAAYnhI,EAAMmhI,SAASrhI,OAAO,SAAAkc,GAAI,OAAIA,EAAKgC,mBAAqB4jH,IAGpGI,EAAgBD,GAA8D,IAAnCA,EAAwB5uI,OACnE8uI,EAAsBjpG,GAAe,sBAAuB5b,GAAgBQ,aAC5EskH,EAAgBliI,EAAMmhI,UAAYnhI,EAAMmhI,SAASrhI,OAAO,SAAA7O,GAAC,OAAIA,EAAE2sB,cAAgBqkH,IAC/Ev7F,EAAoBw7F,GAAiBA,EAAc/uI,OAAO,EAC1DgvI,EAAqBniI,EAAMmhI,UAAYnhI,EAAMmhI,SAASrhI,OAAO,SAAAkc,GAAI,OAAIA,EAAKgC,mBAAqBhe,EAAM2rB,iBACrGy2G,EAAwBD,GAAsBA,EAAmB/uI,IAAI,SAAA4oB,GAAI,OAAIA,EAAK4B,cAElFykH,GAAwE,OAAhCriI,EAAM8hI,uBAAkC9hI,EAAMsiI,0BACrFH,GAAsBA,EAAmB3iH,KAAK,SAAAxD,GAAI,OAAIA,EAAKG,qBAAqBwW,SAASre,GAAuB8C,qBACjHmrH,EAA4CR,GAA2BA,EAAwBviH,KAAK,SAAAxD,GAAI,OAAIA,EAAKG,qBAAqBwW,SAASre,GAAuB8C,qBACtKorH,EAA4BR,EAAgBK,EAAuCE,EAEnFE,EAAuBziI,EAAMkhI,sBAAwBlhI,EAAMkhI,qBAAqBphI,OAAO,SAAA22G,GAAG,OAAIA,EAAI3rC,mBAAqB02D,IACvHkB,EAAiBD,GAAwBA,EAAqBrvI,IAAI,SAAAy6G,GAAC,OAAIA,EAAEjwF,cAGzE+kH,EAjD8B,SAACC,GACjC,IAAMC,EAAqBD,GAA6BA,EAA0BxvI,IAAI,SAACnC,GAKnF,MAJiC,CAC7B2sB,YAAa3sB,EAAE2sB,YACfwa,YAAannC,EAAEmnC,eAKnB0qG,EAA0C,GAO9C,OALAD,GAAsBA,EAAmBjnH,QAAQ,SAAC0jB,IAC4C,IAAtFwjG,EAAyBlqG,UAAU,SAAAmqG,GAAE,OAAIA,EAAGnlH,cAAgB0hB,EAAQ1hB,eACpEklH,EAAyBriH,KAAK,CAAE7C,YAAa0hB,EAAQ1hB,YAAawa,YAAakH,EAAQlH,gBAGxF0qG,EAiCsBE,CADCR,QAAmDxsI,GAAtBmsI,EAAkCA,EAAmBriI,OAAO,SAAAkc,GAAI,OAAIA,EAAKG,qBAAqBwW,SAASre,GAAuB8C,oBAAsBsrH,GAAkBA,EAAe9pG,UAAU,SAAAhb,GAAW,OAAIA,IAAgB5B,EAAK4B,cAAe,SAAK5nB,GAIhTitI,EAAoE,KAAhCjjI,EAAM8hI,uBAAgC9hI,EAAMsiI,wBAShFY,EAN4BljI,EAAMkhI,sBAAwBlhI,EAAMkhI,qBAAqBphI,OAAO,SAAA22G,GAAG,OAAI2rB,EAAuBzvG,SAAS8jF,EAAI74F,eAAc4B,KAAK,SAAAi3F,GAAG,OAAIA,EAAI3rC,mBAAqB6iC,KAGnI60B,GAA6BS,GAGtBN,EAAyBxvI,OAAS,EAGhGgwI,EAAkB32G,KAAUzQ,KAAK,SAAA6J,GAAG,OAAIA,EAAIvK,KAAOrb,EAAM2rB,kBACxDa,KAAUzQ,KAAK,SAAA6J,GAAG,OAAIA,EAAIvK,KAAOrb,EAAM2rB,iBAAiBhyB,MACzDypI,EAAoBpjI,EAAM2rB,mB9LqiBFyH,E8LriBsCpzB,EAAM2rB,kB9LsiBvDud,GAAwB,mBAAoB9V,IACxD8V,GAAwB,YAAa9V,IACrC8V,GAAwB,iBAAkB9V,IAC1C+W,GAAY/W,IAAUgX,GAAWhX,I8LxiBlCwsC,EAA0D,IAAxC5/D,EAAMohI,qCAAgFprI,GAAxCgK,EAAMohI,gCAA+CphI,EAAMohI,gCAAkCrtH,GAAgBE,eAAiBjU,EAAMohI,gCAAkCrtH,GAAgBG,QACtPmvH,EAAqCzjE,IAAmBwjE,EACxDE,EAA6BzB,GAAuBA,EAAoBjkH,YAAYtnB,cACpFitI,EAA6B1B,GAAuBA,EAAoBzpG,YACxEorG,EAAkC5jE,QAA2D5pE,GAAxCgK,EAAMohI,gCAAgDphI,EAAMohI,+BAA+B9qI,gBAAkBgtI,EAElK15F,EAAai4F,EAAsBA,EAAoBj4F,gBAAa5zC,EAE1E,OACI8K,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKgiI,GACGpiI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO85E,GAAatuE,mBACvB1L,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAapuE,aAAzB,uCAGA5L,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,UAAU0nF,MAAM,OAAOl4E,MAAO85E,GAAa7sE,yBAA/D,0BAAA9W,OAC+BgsI,EAD/B,oJAGAriI,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAa5sE,yBAA0Bg5F,cAAY,GAAtE,iBAAA/vG,OACsBgsI,EADtB,oEAAAhsI,OACwG6I,EAAMshF,YAD9G,MAGAxgF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOppC,KAAK,iCAAiCqoC,UAAWL,IACnD6rF,EAAyBvvI,IAAI,SAAAqwI,GAC1B,OACI3iI,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO8pI,EAAY7lH,YACnB64B,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,UAAYu2H,EAAYrrG,aACvDsrG,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,YAMhC3O,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,KACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,UAAxB,qEACPw2H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,UAGxB3O,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,UACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,UAAxB,iBACPw2H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,aAMpC3O,EAAAhP,EAAAiP,cAAA,WACCsiI,GACGviI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAagL,UAAWohB,cAAY,GAAvD,2DAAA/vG,OACgE6I,EAAMuhI,+BADtE,0DAAApqI,OAC6J6I,EAAMuhI,+BADnK,KAAApqI,OACqMgsI,EADrM,eAGAriI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,mBACLvY,WAAYyJ,EAAMzJ,WAClBqzC,WAAYA,EACZuN,UAAW0pF,KAEf//H,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,4BACLqoC,UAAWZ,GACX1vC,MAAM,oBAKlB/F,EAAAhP,EAAAiP,cAAA,WAEAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAa1pE,qBAAsB81F,cAAY,GAAlE,0FAGApmG,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oBACLqoC,UAAWL,GACX+H,KAAMjO,IAEN9vC,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,OACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,QAASlB,MAAO,YAAxC,OACP03H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,UAGxB3O,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,QACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,QAASlB,MAAO,YAAxC,MACP03H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,UAGxB3O,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,UACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,UAAxB,iBACPw2H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,WAI5B3O,EAAAhP,EAAAiP,cAAA,WACCf,EAAMggE,mBACHl/D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAagL,WAAhC,kDACAhlF,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,mBACb+xC,SAAU7gD,EAAM6gD,SAChB1J,UAAWwsF,GACXpgB,WAAW,EACXqgB,eA1Mb,WACvB,OAAI5jI,EAAM6jI,YACC7jI,EAAM6jI,YAAY9nH,KAAK,SAAAkxB,GAAW,OAAIA,EAAYotB,cAAgBf,GAAYu0D,YAErF,GAuMgC3yG,mBAAmB,EACnB4oH,kBAAmB,GACnBp9F,kBAAmBA,IAEvB5lC,EAAAhP,EAAAiP,cAAA,aAKfyiI,GACG1iI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO85E,GAAagL,UAAWohB,cAAY,GAAvD,GAAA/vG,OACSksI,EAAsC,KAAO,KADtD,sBAAAlsI,OAC+EosI,EAD/E,MAAApsI,OAC8G6I,EAAM+jI,wBADpH,mLAGAjjI,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWL,GACX+H,KAAMjO,IAEN9vC,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,OACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,QAASlB,MAAO,YAAxC,OACP03H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,UAGxB3O,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,QACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,QAASlB,MAAO,YAAxC,MACP03H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,UAGxB3O,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,UACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,UAAxB,iBACPw2H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,iBCzQ/Cu0H,GAAsB,SAACj5C,EAAa7mC,EAAsBlkD,GACnE,QAAehK,IAAX+0F,QAAwD/0F,IAAhCkuD,EAAWoc,iBAAvC,CAGA,IAAM2jE,EAAyB//E,EAAWoc,iBAAiBxgE,OAAO,SAAA7C,GAAC,YAAcjH,IAAViH,EAAEm0C,KAA+B,KAAVn0C,EAAEm0C,MAAYh+C,IAAI,SAAA6J,GAAC,OAAIA,EAAEm0C,MACjH8yF,EAAiBlkI,EAAMud,SAAUf,WAAW1c,OAAO,SAAA7C,GAAC,YAAcjH,IAAViH,EAAEm0C,KAA+B,KAAVn0C,EAAEm0C,MAAYh+C,IAAI,SAAA6J,GAAC,OAAIA,EAAEm0C,MACxG+yF,EAAUF,EAAuB9sI,OAAO+sI,GAQ9C,YAN4BluI,IAAxBgK,EAAMud,SAAU6zB,KAChB+yF,EAAQ1jH,KAAKzgB,EAAMud,SAAU6zB,KAGZ+yF,EAAQrkI,OAAO,SAAAsxC,GAAG,OAAIA,IAAQ25C,IAAQ53F,OAAS,EAE9C,8DAA2D6C,IAoBtE+hD,gBAAmC,CAC9CF,KA1DqB,0BAyDVE,CAjBc,SAAC/3C,GAC1B,OACQc,EAAAhP,EAAAiP,cAAA,YACAD,EAAAhP,EAAAiP,cAACqjI,GAAD,CACIvjF,SA5CS,yBA6CTtqD,WAAYyJ,EAAMud,SAAUlC,GAC5BwoH,YAAa7jI,EAAMud,SAAU2vB,mBAC7B40F,sBAAuB9hI,EAAM8hI,sBAC7BiC,wBAAyB/jI,EAAM+jI,wBAC/Bp4G,eAAgB3rB,EAAM2rB,eACtB22G,wBAAyBtiI,EAAMsiI,6BCSzC1qF,GAAoB7G,GAAe,KACnCyM,GAAoB/M,GAAS,0BAC7BgN,GAAmBhN,GAAS,yBAC5BiN,GAAiBlL,GAAgC,sBACjD6xF,GAAwB5zF,GAAS,8BACjC6zF,GAAsB9xF,GAAgC,4BACtDmL,GAAc,CAACnL,GAAgC,6BAA8BT,IAC7E+L,GAAe,CAAEC,QAAQ,GAEzBwmF,8MACFC,kBAAoB,CAAChyF,GAAgC,6BAA8BT,GAAeO,GAAe14C,EAAKoG,MAAMykI,qBAC5HC,YAAcvnH,GAAY,cAAeC,GAAgByiB,iBACzD8kG,YAAcxnH,GAAY,kBAAmBC,GAAgByiB,iBAC7D+kG,OAASznH,GAAY,SAAUC,GAAgByiB,iBAC/CglG,SAAW1nH,GAAY,WAAYC,GAAgBsiB,iBAEnD1S,WAAa6b,GAAuBjvC,EAAKoG,MAAM0mC,qBAC/CxZ,YAAcyb,OAEdm8F,QAAU3/F,OACV4/F,OAAShgG,OAETigG,kBAAoBprI,EAAKoG,MAAMujH,UAAYygB,GAAsBiB,2EAExD,IAAA/8H,EACiItV,KAAKoN,MAAnIujH,EADHr7G,EACGq7G,UAAWz0G,EADd5G,EACc4G,KAAMpP,EADpBwI,EACoBxI,MAAOlM,EAD3B0U,EAC2B1U,KAAMwY,EADjC9D,EACiC8D,MAAOuxD,EADxCr1D,EACwCq1D,sBAAuBgW,EAD/DrrE,EAC+DqrE,SAAUlmD,EADzEnlB,EACyEmlB,gBAAiB60C,EAD1Fh6D,EAC0Fg6D,gBAAiBgjE,EAD3Gh9H,EAC2Gg9H,kBAC1GvpC,EAAqB,OAAV3vF,EACXm5H,EAAgB93G,IAAoBz6B,KAAK+xI,YACzCS,EAAgB/3G,IAAoBz6B,KAAK8xI,YACzCW,GAAgC9hB,KAAqBl2F,IAAoBz6B,KAAK+xI,aAAet3G,IAAoBz6B,KAAKgyI,SAAY1iE,GAAmBtvE,KAAKiyI,UAChK,OACI/jI,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,qBAAqBra,MAAO0I,GAAOiD,sBAAuBhD,MAAM,UAAUL,QAAS,kBAAMiqE,EAAS7zE,IAAQ6U,SAAU8wH,GAA/H,UACY1pC,EAAW,GAAKnoG,EAAKstB,SAAW,iBAAmB,aAE9D66E,GAAY76F,EAAAhP,EAAAiP,cAAA,WACbD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAatY,EAAKstB,SAAW,iBAAmB,YAAjE,UAGJhgB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,cACJqoC,UAAWnD,GACXntC,MAAM,aACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAACoF,GAAmB5F,IAC9B5E,qBAAsBkyF,KAI9BpkI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,aACJqoC,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAU,CAACqF,GAAkB7F,IAC7B5E,qBAAsBkyF,KAG9BpkI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,aACJqoC,UAAWnD,GACXntC,MAAM,SACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUsF,GACVmB,KAAMjO,GACNoO,YAAalB,GACbiB,UAAW5wB,GACX6kB,qBAAsBkyF,GAEtBpkI,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb/G,KAAKkyI,QAAQ1xI,IAAI,SAAAo2B,GAAG,OACjB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,gBACJqoC,UAAWhC,GACXtuC,MAAM,gBACNsxC,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACbC,UAAW1wB,GACX+pB,SAAU5kD,EAAKstB,SAASluB,KAAK4xI,kBAAmB7mF,GAChDkB,KAAMjO,GACNoC,qBAAsBkyF,MAG5BtyI,KAAKoN,MAAMkb,mBACTpa,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,QACJqoC,UAAWhD,GACXttC,MAAM,yBACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAU,CAAEhH,GAAKx+C,KAAKoyI,kBAAmBptF,IACzCiH,KAAMjsD,KAAKoN,MAAMslI,oBAAsB10F,QAAwB56C,EAC/Di5B,OAAQgjC,GACRlT,UAAWrxB,GACXsoB,YAAY,mBACZhD,qBAAsBkyF,KAIlCpkI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,oBACJqoC,UAAWnD,GACXntC,MAAM,oBACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUisF,GACVxlF,KAAMjO,GACNoO,YAAalB,GACbiB,UAAW5wB,GACX6kB,qBAAsBkyF,GAEtBpkI,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbnG,EAAKstB,SACFluB,KAAKs6B,YAAY95B,IAAI,SAAAo2B,GAAG,OACpB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,SAG7C/G,KAAKo6B,WAAW55B,IAAI,SAAAo2B,GAAG,OACnB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAKvD4pH,GAAa3wH,KAAKoN,MAAMkb,kBACtBpa,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,0BACJqoC,UAAWZ,GACX1vC,MAAM,8BAId/F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKtO,KAAKoN,MAAMulI,wBACRzkI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,eACJqoC,UAAWnD,GACXntC,MAAM,eACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUksF,GACVtlF,YAAalB,IAEbh9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb0rC,KAAgBjyC,IAAI,SAAAo2B,GAAG,OACpB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAI9vB,KAAM8vB,EAAI7vB,YAKxD/G,KAAKoN,MAAMulI,wBACTzkI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,eACJqoC,UAAWZ,GACX1vC,MAAM,kBAIlB/F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,0BACJqoC,UAAWZ,GACX1vC,MAAM,gCAKpB08G,GAAa/vH,EAAKstB,WAAaluB,KAAKoN,MAAMkb,mBACxCpa,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,mCACJqoC,UAAWZ,GACX1vC,MAAM,mGAIhB08G,GAAa6hB,IAAkBxyI,KAAKoN,MAAMkb,mBACxCpa,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,wBACJqoC,UAAWZ,GACX1vC,MAAM,yGAIhB08G,GAAa4hB,IAAkBvyI,KAAKoN,MAAMkb,mBACxCpa,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,0BACJqoC,UAAWZ,GACX1vC,MAAM,sDAIhB02D,IAA0B3qE,KAAKoN,MAAMkb,mBACnCpa,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,yCACJqoC,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAUxlD,KAAKoN,MAAMwlI,aAAe50F,QAAwB56C,EAC5D6oD,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,yCACJqoC,UAAWnD,GACXntC,MAAM,uBACNsxC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,+BACJqoC,UAAWnD,GACXntC,MAAM,OACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAUxlD,KAAKoN,MAAMwlI,aAAe50F,QAAwB56C,EAC5D6oD,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,iCACJqoC,UAAWnD,GACXntC,MAAM,SACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUxlD,KAAKoN,MAAMwlI,aAAe50F,QAAwB56C,EAC5D6oD,KAAMjO,MAId9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,kCACJqoC,UAAWnD,GACXntC,MAAM,QACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUxlD,KAAKoN,MAAMwlI,aAAe50F,QAAwB56C,EAC5D6oD,KAAMjO,GACNoO,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb/G,KAAKmyI,OAAO3xI,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,kCACJqoC,UAAWnD,GACXntC,MAAM,WACNrV,QAAQ,WACR2mD,WAAS,EACT4G,UAAWpxB,GACXsB,OAAQ6iC,GACR1Z,SAAUxlD,KAAKoN,MAAMwlI,aAAe,CAACn0F,GAAKT,IAAyB,CAACS,IACpEwN,KAAMjO,GACNoF,YAAY,+BAzRlB70C,IAAMC,eAuTrB2mB,sBAAY2nB,YAlB3B,SAAyB/uC,EAAmBi6C,GACxC,IAAM1J,EAAmBvwC,EAAMmhB,WAAWovB,iBAClCpiC,EAAS8rC,EAAT9rC,KAMR,MAAO,CACHoiC,mBACA7jB,gBAPoBm8D,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+C2X,EAA/C,qBAQpBozD,gBAPoBsnB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,mBAQpB48D,sBAP0BisB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+C2X,EAA/C,2BAQ1B22H,iBAPqBj8C,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,YAQrBo9H,kBAPsBv0C,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+C2X,EAA/C,gBAWH4gC,CAAyB60F,KCrQrCZ,GAlG2CxiI,IAAMizC,KAAK,SAACp0C,GAAiB,IAC3E20C,EAA4F30C,EAA5F20C,OAAQivF,EAAoF5jI,EAApF4jI,eAAgB1hE,EAAoEliE,EAApEkiE,gBAA4BgjE,GAAwCllI,EAAnDujH,UAAmDvjH,EAAxCklI,mBAAmBT,EAAqBzkI,EAArBykI,iBACzE9D,EAAiBxjH,GAAY,SAAUC,GAAgByiB,eACvD6lG,EAAYvoH,GAAY,UAAWC,GAAgBsiB,eACnDimG,EAAwBxoH,GAAY,sBAAuBC,GAAgBsiB,eAC3EkmG,EAAWzoH,GAAY,SAAUC,GAAgBsiB,eACjDmmG,EAAU1oH,GAAY,QAASC,GAAgBsiB,eAE/C20B,EAAelzD,IAAM2xD,QAAQ,kBAAMjqB,GAAuB7oC,EAAM0mC,mBAAmBtzC,IAAI,SAAA6J,GAAC,OAAIA,EAAEoe,MAAK,IAEzGla,IAAMq9C,UAAU,WAEZ,QAD6CxoD,IAApB2+C,EAAOu3C,SAChC,CAEA,IAAM45C,EAAkB5jE,IAAoBwjE,GAAaxjE,IAAoByjE,EACvEI,EAAsBj5G,IAEtBk5G,EAAW9jE,IAAoB0jE,GAAY1jE,IAAoB2jE,EACjEC,IAAoBC,EACpBl6C,GAAU,EAAM80C,GAEXqF,GAAYD,GACjBjpD,EAAa,KAGlB,CAAC5a,EAAiBvtB,IAErB,IAAMk3C,EAAY1qF,IAAMuzC,YAAY,SAAC5zB,EAAmBmlH,EAAiB1iB,GACrE,IAAM2iB,EAAS,CAAE74G,gBAAiB44G,EAASnlH,SAAUA,EAAUy8C,uBAAuB,EAAMH,YAAa,IAEjE,IAAnC/I,EAAap4D,QAAQgqI,IAAoBrC,IAC1CsC,EAAOh5F,mBAAqB,CAAC02F,GAC7BsC,EAAO3oE,uBAAwB,IAI9BgmD,GAAavjH,EAAMmmI,mBACpBnmI,EAAMmmI,kBAAkB,IAAK,OAE7BrlH,EACA6zB,EAAOyxF,QAAQF,GAEfvxF,EAAOl0B,KAAKylH,IAEjB,CAAC7xE,EAAcuvE,EAAgBjvF,IAE5BmoC,EAAe37E,IAAMuzC,YAAY,SAACh1C,EAAe6jH,GACnD,IAAI8iB,EAAc1xF,EAAOn5C,IAAIkE,GAAO2b,IAG/BkoG,GAAavjH,EAAMmmI,mBACpBnmI,EAAMmmI,kBAAkBE,EAAa,UAEzC1xF,EAAO02C,OAAO3rF,IACf,CAACi1C,IAEE7nB,EAAY3rB,IAAMuzC,YAAY,WAChC,OAAQC,EAAOu3C,UAAY,IAAI1sE,KAAK,SAAA4N,GAAG,OAAIA,EAAItM,YAChD,CAAC6zB,IAMJ,OACI7zC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKyzC,EAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAEtBA,EAAOu3C,UAAYv3C,EAAOu3C,SAAStzD,UAAU,SAACxL,GAAD,OAASA,EAAIC,iBAAsD,KAAnCD,EAAIC,gBAAgBlwB,aAAqB,GAC/Gw3C,EAAOu3C,SAAShtF,KAAK,SAAConI,EAAMC,GAAP,OAAgBD,EAAKj5G,gBAAkBk5G,EAAKl5G,kBAGxE,IAZiB1zB,EAYXyzB,EAAMunB,EAAOn5C,IAAIkE,GACvB,OACIoB,EAAAhP,EAAAiP,cAACylI,GAAD,CACI9sI,IAAKoV,EACLA,KAAMA,EACNpP,MAAOA,EACPlM,KAAM45B,EACNmmD,SAAUuJ,EACVj8B,SAAU7gD,EAAM6gD,SAChB2kF,aAAcxlI,EAAMwlI,aACpBjiB,UAAWvjH,EAAMujH,UACjB2hB,kBAAmBA,EACnBhqH,kBAAmBlb,EAAMkb,kBACzBoqH,qBAzBS3rI,EAyBgCyzB,EAAI/R,GAxBtDrb,EAAM8jI,kBAAkBtkH,KAAK,SAAAX,GAAC,OAAIA,EAAExD,IAAM1hB,KAyBjC+sC,kBAAmB1mC,EAAM0mC,kBACzB6+F,uBAAwBvlI,EAAMymI,0BAC9BhC,iBAAkBA,MAI9B3jI,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAC2lI,GAAD,CAAkBp9H,QAASuiF,EAAW60C,cAAe5zG,KAAgBo1C,IAAoB0jE,GAAY1jE,IAAoB2jE,OCpF/H/nF,GAAe,CAAEC,QAAQ,GAEzB4oF,GAAcxlI,IAAMizC,KAAK,SAACp0C,GAAiB,IACrC4mI,EAAoD5mI,EAApD4mI,YAAa9jE,EAAuC9iE,EAAvC8iE,eAAgBxiC,EAAuBtgC,EAAvBsgC,mBAC/BumG,EAAsB1lI,IAAMuzC,YAAY,SAAC4hC,GAC3C,IAAMt4C,EAAY8kC,EACZ3vE,EAASmjF,EAAOn6B,OAASm6B,EAAOn6B,OAAOxiD,MAAQ,KACrD,GAAIqkC,GAAaA,EAAU8T,WAAawkC,EAAQ,CAC5C,IAAMwwD,EAAkBtlH,IAAOwc,GAAWpc,QAAQ,OAAOrF,IAAIppB,EAAQ,UACrEyzI,EAAY,eAAgBE,KAEjC,CAACF,EAAa9jE,IAEXikE,EAAyB5lI,IAAMuzC,YAAY,SAAC4hC,GAC9C,IAAMt4C,EAAYxc,IAAO80D,GACnBnjF,EAASmtC,EACf,GAAItC,GAAaA,EAAU8T,WAAa3+C,EAAQ,CAC5C,IAAM2zI,EAAkBtlH,IAAOwc,GAAWpc,QAAQ,OAAOrF,IAAIppB,EAAQ,UACrEyzI,EAAY,eAAgBE,KAEjC,CAACF,EAAatmG,IAEjB,OACIx/B,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAMimC,aACHnlC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,+BAEJhL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWnD,GACXntC,MAAM,QACNwvC,QAAM,EACN8B,WAAS,EACT3mD,QAAQ,WACRwtD,YAAalB,GACbiB,UAAW5wB,GACXiqB,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,EACvD6oD,KAAMjO,IAEN9vC,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KlMiWhB,WAC1B,IAAMoqC,EAAef,KACrB,OAAOgE,GAAgBjD,GkMlWMijG,GAAiB5zI,IAAI,SAAAo2B,GAAG,OAAI1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAG9EmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iBACLqoC,UAAWhC,GACXtuC,MAAM,wBACNsxC,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACbC,UAAW1wB,GACX+pB,SAAUp4C,EAAMwlI,aAAe,CAACzzF,GAAenB,IAAyBmB,GACxE8M,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,0BACLqoC,UAAWhC,GACXtuC,MAAM,wBACNsxC,WAAS,EACT3mD,QAAQ,WACRutD,UAAW1wB,GACX+pB,SAAUp4C,EAAMwlI,aAAe,CAAC50F,SAAyB56C,EACzD6oD,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iBACLqoC,UAAWhC,GACXtuC,MAAM,aACNsxC,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACb3I,SAAU4wF,EACVhoF,UAAW1wB,GACX+pB,SAAUp4C,EAAMwlI,aAAe,CAACzzF,GAAenB,IAAyBmB,GACxE8M,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAOoB,YACpChK,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,+BACLqoC,UAAWnD,GACXntC,MAAM,mCACNwvC,QAAM,EACNF,SAAU0wF,EACVr1I,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACb1F,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,EACvD6oD,KAAMjO,IAEN9vC,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KlMyTT,WACjC,IAAMoqC,EAAef,KACrB,OAAOmE,GAAuBpD,GkM1TDkjG,GAAwB7zI,IAAI,SAAAo2B,GAAG,OAAI1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAI7vB,MAAMkE,MAAM,KAAK,IAAK2rB,EAAI7vB,WAGtGmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWhC,GACXtuC,MAAM,WACNsxC,WAAS,EACT5jC,UAAQ,EACR/iB,QAAQ,WACRutD,UAAW1wB,WAuB5BqhB,I/L+BW1rC,G+L/BX0rC,eAbf,SAAyB/uC,EAAmBi6C,GACxC,IAAM7U,EAAqByjD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,sBAKvE,MAAO,CACHslC,YALgBH,GAAgBC,GAMhCzF,mBALuBkpD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,gCAMnEmiE,eALmB0mB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,oBASxD+uC,CAAyBi3F,ICrIlC7oF,GAAe,CAAEC,QAAQ,GAEzBkV,GAAmBliB,GAAe,IAClC6G,GAAoB7G,GAAe,KACnCm2F,GAAsB,SAACj/G,GAAD,OACxBnnB,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBlqF,MAAOmmI,GAAY97H,aAAczB,SAAS,OACtD9I,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MACIvH,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOinB,EAASk/G,GAAYC,mBAAgBpxI,GAAlD,0JAIJgyB,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAUkhI,aAAW,+JAM/BqU,GAAoBlmI,IAAMizC,KAAK,SAACp0C,GAAiB,IAE7CioB,EAAmB,OADPjoB,EAAVgM,MAGR,OACIlL,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,gBACJnlF,UAAW,SAACn3C,GACR,OACIc,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAa9L,EAAM1C,MAAM3D,QAAU2/D,GAAYu0D,KAAO,eAAiB,uBAKxG/sH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,mBACJnlF,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACRqtD,KAAMjO,GACNwH,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,KAG/D8K,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,mBACJnlF,UAAWnD,GACXntC,MAAM,uBACNsxC,WAAS,EACT3mD,QAAQ,cAGhBsP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,SACJnlF,UAAWnD,GACXntC,MAAM,OACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,EACvD6oD,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,WACJnlF,UAAWnD,GACXntC,MAAM,SACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,EACvD6oD,KAAMjO,MAId9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,YACJnlF,UAAWnD,GACXntC,MAAM,QACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,EACvD6oD,KAAMjO,GACNoO,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,YACJnlF,UAAWnD,GACXntC,MAAM,WACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUp4C,EAAMwlI,aAAe,CAACn0F,GAAKT,IAAyB,CAACS,IAC/DwN,KAAMjO,GACNmO,UAAWpxB,GACXsB,OAAQ6iC,GACR9b,YAAY,qBAIpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,UACJnlF,UAAWnD,GACXntC,MAAM,eACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUp4C,EAAMwlI,aAAe,CAACr0F,GAAO8hB,GAAkBriB,IAAyB,CAACO,GAAO8hB,IAC1FpU,KAAMjO,GACN3hB,OAAQ2iC,GACR7S,UAAWtxB,GACXuoB,YAAY,yBAGpBl1C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,UACJnlF,UAAWnD,GACXntC,MAAM,gBACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUp4C,EAAMwlI,aAAe,CAAC/2F,GAAOmJ,GAAmBhH,IAAyB,CAACnC,GAAOmJ,IAC3FiH,KAAMjO,GACNuC,WAAY,CACR9nC,aAAe67H,GAAoBj/G,OAI/CnnB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,kBACLqoC,UAAWnD,GACXntC,MAAM,iCACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,EACvD6oD,KAAMjO,GACNoO,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KnMqIL,WAC7B,IAAMoqC,EAAef,KACrB,OAAOyC,GAAmB1B,GmMtILujG,GAAoBl0I,IAAI,SAAAo2B,GAAG,OACxB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIpDqG,EAAMunI,gBACHzmI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK6I,EAAMs8H,SAAX,eACJnlF,UAAWZ,GACX1vC,MAAM,8CACNsvC,SAAUn2C,EAAMwnI,0BAStCL,GAAsD,CACxD97H,aAAc,CACVC,aAAc,GACd3B,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,IAEXo7H,cAAe,CACXr9H,YAAa,MAINge,kBAAYs/G,IC3KZI,eAlCX,SAAAA,EAAYznI,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA60I,IACtB7tI,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA81I,GAAAtnI,KAAAvN,KAAMoN,KAOV0nI,iBAAmB,SAAC9hD,GAChBhsF,EAAK4G,SAAS,CAAEmnI,gBAAiB/hD,EAAGzpC,OAAOxF,WAN3C/8C,EAAK+G,MAAQ,CACTgnI,gBAAiB3nI,EAAM4nI,kBAJLhuI,wEAYjB,IAAAQ,EAAAxH,KACL,OACIkO,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKtO,KAAKoN,MAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,GAC1B,OAAKtF,EAAKuG,MAAMgnI,iBAA6B,IAAVjoI,EAWvBoB,EAAAhP,EAAAiP,cAAA,QAAMrH,IAAKoV,IATfhO,EAAAhP,EAAAiP,cAAC8mI,GAAD,CACInuI,IAAKoV,EACLwtH,SAAUxtH,EACVy4H,eAA0B,IAAV7nI,EAChB8nI,mBAAoBptI,EAAKstI,iBACzBlC,aAAcprI,EAAK4F,MAAMwlI,yBAxBrBrkI,IAAMC,eCmBpCw2C,GAAoB7G,GAAe,KACnCyM,GAAoB/M,GAAS,0BAC7BgN,GAAmBhN,GAAS,yBAC5BiN,GAAiBlL,GAAgC,sBACjD8xF,GAAsB9xF,GAAgC,4BACtDmL,GAAc,CAACnL,GAAgC,6BAA8BT,GAAeK,IAC5F0L,GAAe,CAAEC,QAAQ,GAgJhB+pF,GA9IsB3mI,IAAMizC,KAAK,SAACp0C,GAY7C,OACIc,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,mBAGJhL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,YACLqoC,UAAWnD,GACXntC,MAAM,aACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAACoF,GAAmB5F,IAC9BS,WAAS,KAGjBv3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLi5H,aAAa,cACb5wF,UAAWnD,GACXntC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAU,CAACqF,GAAkB7F,OAGrC92C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLqoC,UAAWnD,GACXntC,MAAM,SACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUsF,GACVmB,KAAMjO,GACNoO,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbwrC,KAAa/xC,IAAI,SAAAo2B,GAAG,OACjB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWhC,GACXtuC,MAAM,gBACNsxC,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACbC,UAAW1wB,GACX+pB,SAAUuF,GACVkB,KAAMjO,GACNuF,SAtEI,SAACmgC,EAAa0xD,GAClC,GAAIA,GAAOA,EAAIl2F,UAAW,CACtB,IAAMzhB,EAAM2O,GAAagpG,GACzBhoI,EAAM4mI,YAAY,MAAOv2G,QAEzBrwB,EAAM4mI,YAAY,MAAO,OAoErB9lI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,MACLqoC,UAAWnD,GACXntC,MAAM,MACNsxC,WAAS,EACT3mD,QAAQ,WACR+iB,UAAQ,MAGbvU,EAAMmb,eAAiBnb,EAAMkb,mBAC5Bpa,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,MACLqoC,UAAWhD,GACXttC,MAAM,yBACNsxC,WAAS,EACT3mD,QAAQ,WACR4mD,SAAUp4C,EAAMwlI,aAAe,CAACp0F,GAAK6zF,GAAgCrtF,GAAmBhH,IAAyB,CAACQ,GAAK6zF,GAAgCrtF,IACvJ3oB,OAAQgjC,GACRlT,UAAWrxB,GACXmxB,KAAMjO,GACNoF,YAAY,sBAGnBh2C,EAAMulI,wBACHzkI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACvBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,aACLqoC,UAAWnD,GACXntC,MAAM,eACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUksF,GACVtlF,YAAalB,IAEbh9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb0rC,KAAgBjyC,IAAI,SAAAo2B,GAAG,OACpB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAI9vB,KAAM8vB,EAAI7vB,YAKpDqG,EAAMulI,wBACJzkI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACvBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,aACLqoC,UAAWZ,GACX1vC,MAAM,kBAId/F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWZ,GACX1vC,MAAM,8CC7IhCi3C,GAAe,CAAEC,QAAQ,GACzBnG,GAAoB7G,GAAe,KACnCk3F,InMmKoBjkI,GmMnKK,InMmKW,SAACrK,GAAD,OAAoBA,GAASA,EAAQqK,GAAO,uCAAoChO,ImMlKpHkyI,GAAqBz3F,GAAS,yBAE9B03F,GAAmBhnI,IAAMizC,KAAK,SAACp0C,GAAiB,IAC1C4mI,EAAgB5mI,EAAhB4mI,YACFzwF,EAAWh1C,IAAMuzC,YAAY,SAACnrC,GAChC,IAAI6+H,EAA8B,QAAnB7+H,EAAE4yC,OAAOxiD,MAAkB,GAAK,EAC/CitI,EAAY,cAAewB,IAC5B,CAACxB,IAEJ,OACI9lI,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,eAEJhL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,IAClBl7C,EAAMmb,eAAiBnb,EAAMkb,mBAC5Bpa,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLqoC,UAAWnD,GACXntC,MAAM,YACNuxC,SAAUp4C,EAAMwlI,aAAe,CAAC5tF,GAAmBhH,IAAyBgH,GAC5EiH,KAAO7+C,EAAM4wG,qBAA0C56G,EAAxB46C,GAC/Bp/C,QAAQ,WACR2mD,WAAS,KAIrBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,qBACLqoC,UAAWnD,GACXntC,MAAM,oBACNwvC,QAAM,EACN7kD,QAAQ,WACR2kD,SAAUA,EACVgC,WAAS,EACTC,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,EACvD6oD,KAAMjO,GACNoO,YAAalB,GACbiB,UAAW5wB,KAETnuB,EAAMmb,cAAgBnb,EAAMkb,oBtMmQT,WACzC,IAAM6oB,EAAef,KACrB,OAAO4C,GAA+B7B,GsMnQlBskG,GAAgCj1I,IAAI,SAAAo2B,GAAG,OACnC1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,UAE1CqG,EAAMmb,eAAiBnb,EAAMkb,mBAEhCyqB,KAAsBvyC,IAAI,SAAAo2B,GAAG,OACzB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAKrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLqoC,UAAWhC,GACXtuC,MAAM,YACNsxC,WAAS,EACT3mD,QAAQ,WACRutD,UAAW1wB,GACX+pB,SAAWp4C,EAAMmb,cAAgBnb,EAAMkb,kBAAqB,CAACgtH,GAAoBr2F,IAAa7xC,EAAMwlI,aAAe,CAAC50F,GAAuBiB,IAAaA,GACxJgN,KAAMjO,MAKd9vC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWnD,GACXntC,MAAM,iBACNrV,QAAQ,WACRg5B,KAAK,SACL2tB,WAAS,EACT4G,UAAW5wB,GACXiqB,SAAUp4C,EAAMwlI,aAAe,CAAC/zF,GAAoBb,GAAuBq3F,IAAgB,CAACx2F,GAAoBw2F,IAChHppF,KAAMjO,OAGX5wC,EAAMmb,eAAiBnb,EAAMkb,mBAC5Bpa,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iBACLqoC,UAAWnD,GACXntC,MAAM,gBACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUp4C,EAAMwlI,aAAe50F,QAAwB56C,EACvD6oD,KAAMjO,GACNoO,YAAalB,GACbiB,UAAW5wB,GACX5Z,SAAUvU,EAAMwlI,aAChBxoC,OAAQh9F,EAAMmb,cAEbirB,KAAmBhzC,IAAI,SAAAo2B,GAAG,OACvB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,gBAoB9D+1C,mBATf,SAAyB/uC,EAAmBi6C,GACxC,IAAM7U,EAAqByjD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,sBAGvE,MAAO,CACHiwG,gBAHoB9qE,GAAgBC,KAO7B2J,CAAyBy4F,ICtHlCG,GAAmBnnI,IAAMizC,KAAK,SAACp0C,GAEnC,IAgBM6yD,EAAgB1xD,IAAM2xD,QAAQ,kBAAMriB,GAAS,2BAA2B,IACxEusB,EAAa18D,GAAKwjB,iBACpB25F,EAAWz9G,EAAM03D,UAAU18C,KAC3ButH,GAAwB,EAC5B9qB,EAAS7hG,QAAQ,SAACI,GACRA,EAAKG,qBAAqBwW,SAASre,GAAuBmD,mBAC1D8wH,GAAwB,KAGlC,IAAIC,EAAU1hG,KAEd,OACEhmC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACHlB,EAAMyoI,uBACC3nI,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACnBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACjB/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,eAEFhL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,IACpB8hB,GAAcurE,GACfznI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACrB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACEppC,KAAK,oBACLqoC,UAAWP,GACXT,SAhCQ,SAACuyF,GACnBA,EAAmBvsF,OAAOxF,QAC5B32C,EAAM2oI,iBAAgB,GAEtB3oI,EAAM2oI,iBAAgB,IA6BV9hI,MAAM,oCACN0N,SAAUvU,EAAMmb,aAChBg9B,WAAS,KAIdn4C,EAAM4oI,sBACL9nI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACrB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACEppC,KAAK,eACLqoC,UAAWP,GACXT,SApDC,SAAC0yF,GACZA,EAAyB1sF,OAAOxF,QAClC32C,EAAM8oI,uBAAsB,GAE5B9oI,EAAM8oI,uBAAsB,IAiDhBjiI,MAAM,yBACN0N,SAAUvU,EAAM+oI,UAChB5wF,WAAS,KAKdn4C,EAAMgpI,oBAAsBT,GAC3BznI,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACE7B,QAAM,EACNvnC,KAAK,iBACLqoC,UAAWnD,GACXntC,MAAM,uBACNrV,QAAQ,WACRmI,MAAOqG,EAAMipI,uBACb7wF,SAAUp4C,EAAMgpI,mBAAqBn2E,OAAgB78D,EACrDmiD,WAAS,EACT6G,YAAa,CAAEjB,QAAQ,IAEvBj9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb6uI,EAAQp1I,IAAI,SAAAo2B,GAAG,OACd1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,gBAwB9C+1C,mBAbf,SAAyB/uC,EAAmBi6C,GAI1C,MAAO,CACLz/B,aAJoBquE,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,gBAKxDooI,UAJiBv/C,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,qBAKrD+2D,UAJgB/2D,EAAMqb,OAUX0zB,CAAyB44F,IC/GlCxqF,GAAe,CAAEC,QAAQ,GAEzBmrF,GAAwB,SAAChnE,EAAyBjxB,GACpD,IAAMz0B,EAAay0B,EAASz0B,WACtBkpH,EAAYvoH,GAAY,UAAWC,GAAgBsiB,eACnDimG,EAAwBxoH,GAAY,sBAAuBC,GAAgBsiB,eAE3EypG,EAAwBhsH,GAAY,SAAUC,GAAgByiB,eAC9DupG,EAAiCjsH,GAAY,kBAAmBC,GAAgByiB,eAEhFwpG,EAAuBnnE,IAAoBwjE,GAAaxjE,IAAoByjE,EAUlF,SAPmB3vI,IAAfwmB,GACyB,IAAtBA,EAAWrpB,QAIA,IAHXqpB,EAAW1c,OAAO,SAAC+e,GAClB,OAAOA,EAAEwO,kBAAoB87G,GACtBtqH,EAAEwO,kBAAoB+7G,IAC9Bj2I,SAEoBk2I,EACvB,MAAO,+CAKTC,GAA6BnoI,IAAMizC,KAAK,SAACp0C,GAC3C,IAAM6yD,EAAgB1xD,IAAM2xD,QAAQ,kBAAMriB,GAAS,2BAA2B,IAC9E,OACI3vC,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,2BAEJhL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,kBACLqoC,UAAWnD,GACXntC,MAAM,yBACNwvC,QAAM,EACN7kD,QAAQ,WACR4mD,SAAUp4C,EAAMkb,kBAAoB23C,EAAgB7yD,EAAMwlI,aAAe50F,QAAwB56C,EACjG6oD,KAAM,CAACjO,GAAuBs4F,IAC9B/wF,WAAS,EACThC,SAAYn2C,EAAMupI,sBAClBvqF,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KxM+NN,WAC5B,IAAMoqC,EAAef,KACrB,OAAOsC,GAAkBvB,GwMhOJylG,GAAmBp2I,IAAI,SAAAo2B,GAAG,OACvB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,eAgBtD+1C,mBARf,SAAyB/uC,EAAmBi6C,GAGxC,MAAO,CACHsnB,gBAHoBsnB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,qBAOzD+uC,CAAyB45F,IC/ElC38B,GAAmB57D,GAAe,IAElCyC,GAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAGfmjG,GAA0B,SAACpzG,EAAgB8oC,EAAcziC,GAEvD,GAAIA,IAAiD,IAAxCA,EAAMypI,qCAAqDzzI,GAAT2D,GAA+B,MAATA,GAA0B,GAATA,GAEtG,MAAO,sBAoCA+vI,GA/BMvoI,IAAMizC,KAAK,SAACp0C,GAC7B,OACIc,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO85E,GAAaxuE,OACvBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAajvE,QACrB/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO85E,GAAahvE,YAAvB,UACAhL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAaztE,eAAzB,oGAIJvM,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWnD,GACXntC,MAAO7G,EAAMypI,8BAAgC,iBAAkB,gBAC/Dj4I,QAAQ,WACR2mD,WAAS,EACT0G,KAAM7+C,EAAMuU,cAAWve,EAAY46C,GACnC5vC,MAAO85E,GAAa3uE,eACpBgnC,WAAYK,GACZhpB,KAAK,SACL4tB,SAAU,CAACu0D,GAAkBn7D,GAAmBu7D,IAChDx4F,SAAUvU,EAAMuU,gBCrC3Bg5E,GAAY,kBA2CZ03C,GAAiC,SAACl6C,EAAa7mC,GACxD,QAAeluD,IAAX+0F,EAAJ,CAGA,IAAMo5C,EAAUjgF,EAAW1nC,WAAW1c,OAAO,SAAA7C,GAAC,YAAajH,GAATiH,EAAEm0C,KAA6B,IAATn0C,EAAEm0C,MAAWh+C,IAAI,SAAA6J,GAAC,OAAIA,EAAEm0C,MAOhG,OANI8S,EAAW9S,KACX+yF,EAAQ1jH,KAAKyjC,EAAW9S,KAGP+yF,EAAQrkI,OAAO,SAAAsxC,GAAG,OAAIA,IAAQ25C,IAAQ53F,OAAS,EAE9C,8DAA2D6C,IAG/E2zI,eAEF,SAAAA,EAAY3pI,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA+2I,IACtB/vI,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAg4I,GAAAxpI,KAAAvN,KAAMoN,KASVg9D,WAAa18D,GAAKwjB,iBAVQlqB,EA0C1B2vI,sBAAwB,SAAC/hH,GACrB,IAAM06C,EAAkB3iE,OAAOioB,EAAM20B,OAAOxiD,OAC5CC,EAAK4G,SAAS,CAAE0hE,gBAAiBA,KA5CXtoE,EA+C1BkvI,sBAAwB,SAAClrI,GACrBhE,EAAK4G,SAAS,CACV2a,aAAcvd,IAElBhE,EAAKoG,MAAM4pI,4BAA4BhsI,IAnDjBhE,EAsD1B+uI,gBAAkB,SAAC/qI,GACfhE,EAAK4G,SAAS,CACV0a,kBAAmBtd,EACnB+wG,eAAgB,IAChBq6B,mBAAoBprI,IAExBhE,EAAKoG,MAAM6pI,wBAAwBjsI,IA1DnChE,EAAK+G,MAAQ,CACTuhE,gBAAiBtoE,EAAKoG,MAAM44C,cAAcspB,gBAC1C/mD,eAAcvhB,EAAKoG,MAAM44C,cAAcz9B,cAAevhB,EAAKoG,MAAM44C,cAAcz9B,aAC/ED,oBAAmBthB,EAAKoG,MAAM44C,cAAc19B,mBAAoBthB,EAAKoG,MAAM44C,cAAc19B,kBACzFyzF,eAAgB/0G,EAAKoG,MAAM44C,cAAc+1D,eACzCq6B,mBAAoBpvI,EAAKoG,MAAM44C,cAAc19B,mBAP3BthB,mFAatBhH,KAAKk3I,2DAGLl3I,KAAKk3I,oDAGL,GAAIl3I,KAAKoN,MAAMk/H,UAAW,KAAAh3H,EAChB+0H,EAAaxzG,GAAc72B,KAAKoN,MAAM44C,gBAC5C1wC,EAAAtV,KAAKoN,OAAM4yD,MAAXjgE,MAAAuV,EAAAvW,OAAAgO,EAAA,EAAAhO,CAAoBsrI,SAGpBrqI,KAAKoN,MAAM4yD,MAAM,YAAa,WAAY,WAAY,gDAwC1D,OACI9xD,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,wBAGClZ,KAAKoqE,WACFl8D,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,wEACNqkD,SAAU5rD,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,0DACVo/C,UAAW,IAGfx/C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,qFAGAD,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,uCAIZD,EAAAhP,EAAAiP,cAACgpI,GAAD,CAA8B5uH,aAAcvoB,KAAK+N,MAAMwa,aAAcyrH,YAAah0I,KAAKoN,MAAM4gD,OAAe4kF,aAAc5yI,KAAKoqE,WAC3H9hD,kBAAmBtoB,KAAK+N,MAAMua,kBAAmBytH,gBAAiB/1I,KAAK+1I,gBAAiBpD,uBAAwB3yI,KAAKoN,MAAMymI,4BAC9H7zI,KAAKoN,MAAM4oI,sBACR9nI,EAAAhP,EAAAiP,cAACipI,GAAD,CAAkBpB,qBAAsBh2I,KAAKoN,MAAM4oI,qBAAsBE,sBAAuBl2I,KAAKk2I,sBACjGL,sBAAuB71I,KAAKoN,MAAMyoI,sBAAuBE,gBAAiB/1I,KAAK+1I,gBAAiBK,mBAAoBp2I,KAAK+N,MAAMqoI,mBAAoBC,uBAAwBr2I,KAAK+N,MAAMguG,kBAE3L/7G,KAAK+N,MAAMwa,eAAiBvoB,KAAK+N,MAAMua,mBACtCpa,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,qBACLqoC,UAAWswF,GACXG,iBAAkBh1I,KAAKg1I,iBACvBpC,aAAc5yI,KAAKoqE,aAG3Bl8D,EAAAhP,EAAAiP,cAACkpI,GAAD,CAAkBrD,YAAah0I,KAAKoN,MAAM4gD,OAAe4kF,aAAc5yI,KAAKoqE,WAAY7hD,aAAcvoB,KAAK+N,MAAMwa,aAC/FD,kBAAmBtoB,KAAK+N,MAAMua,kBAAmB2lC,SAAU0sC,MAC1E36F,KAAK+N,MAAMwa,cACVra,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACOtO,KAAK+N,MAAMua,mBAAqBpa,EAAAhP,EAAAiP,cAACmpI,GAAD,CAAcT,8BAA+B72I,KAAKoN,MAAMypI,8BAA+Bl1H,SAAU3hB,KAAKoqE,cACtIpqE,KAAK+N,MAAMua,mBAAqBpa,EAAAhP,EAAAiP,cAACopI,GAAD,CAAavD,YAAah0I,KAAKoN,MAAM4gD,OAAeC,SAAU0sC,GAAWi4C,aAAc5yI,KAAKoqE,aAC/Hl8D,EAAAhP,EAAAiP,cAACqpI,GAAD,CAA4BvpF,SAAU0sC,GAAWi4C,aAAc5yI,KAAKoqE,WAAYusE,sBAAuB32I,KAAK22I,sBAAuBruH,kBAAmBtoB,KAAK+N,MAAMua,oBACjKpa,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,yBAGAhL,EAAAhP,EAAAiP,cAAA,oFAEID,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,oCAHJ,MAMJD,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,aACb+xC,SAAU0sC,GACVp2C,UAAWwsF,GACXwC,kBAAmBvzI,KAAKoN,MAAMmmI,kBAC9BvC,eAAgBhxI,KAAKixI,YACrB2B,aAAc5yI,KAAKoqE,WACnBkF,gBAAiBtvE,KAAK+N,MAAMuhE,gBAC5BgjE,kBAAmBtyI,KAAKoN,MAAMk/H,UAC9BhkH,kBAAmBtoB,KAAK+N,MAAMua,kBAC9B4oH,kBAAmBlxI,KAAKoN,MAAM8jI,kBAC9Bp9F,kBAAmB9zC,KAAKoN,MAAM0mC,kBAC9B+/F,0BAA2B7zI,KAAKoN,MAAMymI,0BACtChC,iBAAkB7xI,KAAKoN,MAAM44C,cAAc6rF,yDAlG/D,OAAI7xI,KAAKoN,MAAM44C,cAAc1L,mBAClBt6C,KAAKoN,MAAM44C,cAAc1L,mBAAmBnxB,KAAK,SAAAkxB,GAAW,OAAIA,EAAYotB,cAAgBf,GAAYu0D,YAC9G,2CAIL,SAAIj7H,KAAKoN,MAAM44C,eAAiBhmD,KAAKoN,MAAM44C,cAAc1L,oBAAsBt6C,KAAKoN,MAAM44C,cAAc1L,mBAAmB,KAChHt6C,KAAKoN,MAAM44C,cAAc1L,mBAAmB,GAAGm9F,kBAxCjClpI,IAAMC,eA4IxB22C,gBAAoC,CAAEF,KAAM01C,GAAW+8C,cArKhD,SAAC7nG,EAAkBxwC,EAAyB+N,EAAuBgtF,GACrF,MAAc,QAAVA,GAAmBvqD,EAAO2O,KAAO3O,EAAO2O,IAAIj+C,OAAS,GvOsFzB47C,EuOrFD/uC,EAAM+uC,UvOqFcj5C,EuOrFHkK,EAAMlK,avOqFmBulB,EuOrFLrb,EAAMzJ,WvOqFW66C,EuOrFC3O,EAAO2O,IvOsF7Fz/C,OAAAC,EAAA,GAAAC,EAAAC,EAAAC,KAAO,SAAAC,IAAA,OAAAH,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,iCAAAqB,OAAmFkkB,EAAnF,KAAAlkB,OAAyFi6C,IAFpG,cAAAj/C,EAAAw9C,OAAA,UAGQ,GAHR,cAAAx9C,EAAAC,KAAA,EAAAD,EAAAooD,GAAApoD,EAAA,SAAAA,EAAAw9C,OAAA,UAKQ,GALR,wBAAAx9C,EAAAM,SAAAT,EAAA,oBuOtF6F8H,KAAK,SAAA0D,GACjG,IAAKA,EACD,KAAM,CAAE4zC,IAAK,4EAIlB/2C,QAAQC,UvO+EZ,IAA6By0C,EAAmBj5C,EAAsBulB,EAAY+1B,GuO8EJm5F,gBAAiB,CAAC,QAAxFxyF,CAAkG4xF,IC1K3Ga,GAAyBrpI,IAAMizC,KAAK,SAACp0C,GAAiB,IAChDyqI,EAA6CzqI,EAA7CyqI,kBAAmBltH,EAA0Bvd,EAA1Bud,SAAUuE,EAAgB9hB,EAAhB8hB,WADmBwyB,EAE1BnzC,IAAMozC,UAAS,GAFWC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAEjDmD,EAFiDjD,EAAA,GAExCmrC,EAFwCnrC,EAAA,GAAA0qC,EAGJ/9E,IAAMozC,UAAS,GAHX4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAGjDwrD,EAHiDvrD,EAAA,GAG7BwrD,EAH6BxrD,EAAA,GAIlDg9C,EAA2Bh/G,GAAY,UAAWC,GAAgBujB,iBAClEiqG,EAAyB5qI,EAAM03D,UAAU18C,KAAKlb,OAAO,SAAA7C,GAAC,OAAEA,EAAEkf,qBAAqBwW,SAASre,GAAuBuB,iBAEjHg1H,EAAW,GAEfttH,EAAS7B,UAAUE,QAAQ,SAAAI,GACnB4uH,EAAuBprH,KAAK,SAAAsjF,GAAQ,OAAOA,EAAEznF,KAAOW,EAAKC,WAEzD4uH,GAAYrnG,GAAQxnB,EAAKgC,kBAAoB,QAIrD6sH,GADAA,EAAWA,EAAS93I,QAAQ,QAAS,KACjBA,QAAQ,oBAAqB,WAEjD,IAAM8iB,EAAgB1U,IAAM2xD,QAAQ,WAChC,OAAIv1C,EAAS1H,cAAc1iB,OAAS,EACzBoqB,EAAS1H,cAAc3W,KAAKiqB,GAAc,oBAG1C,IAEZ,CAAC5L,IACEm9G,EAAsB7zG,GAAsBtJ,EAAUuE,GACtDgpH,EAA8BjkH,GAAsBtJ,EAAUuE,IAAevE,EAASrC,kBAEtF6hH,EAAoB57H,IAAMuzC,YAAN,eAAAhjD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAkB,SAAAC,EAAOqpB,GAAP,OAAAxpB,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,WACpCqoI,EADoC,CAAAvoI,EAAAE,KAAA,eAAAF,EAAAw9C,OAAA,qBAEpCt0B,EAFoC,CAAAlpB,EAAAE,KAAA,eAGpCstF,GAAW,GAHyBxtF,EAAAE,KAAA,EAI9Bo4I,EAAkBpvH,GAJY,OAKpCskE,GAAW,GALyB,wBAAAxtF,EAAAM,SAAAT,MAAlB,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAOvB,CAAC43I,IAEEM,EAAoB5pI,IAAMuzC,YAAY,SAACs2F,GACzCL,EAAsBK,GACtBx4I,WAAW,kBAAMwN,EAAMypD,cAAc,IACtC,IAEGxR,EAAY,eAAAnkD,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAG,SAAAgC,EAAOmwD,GAAP,OAAAryD,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,WACbqoI,EADa,CAAAzmI,EAAA5B,KAAA,eAAA4B,EAAA07C,OAAA,wBAEjBgwC,GAAW,GAFM1rF,EAAA5B,KAAA,EAGX2N,EAAM+qI,kBAAkB7mF,EAAWruC,cAAcziB,IAAI,SAAAgxE,GAAG,OAAAzyE,OAAA0G,EAAA,EAAA1G,CAAA,GAAUyyE,EAAV,CAAetf,YAAasf,EAAItf,aAAesf,EAAItf,YAAYljC,QAAQ,OAASwiD,EAAItf,YAAYljC,QAAQ,OAAOqN,SAAW,QAHvK,OAIjB0wD,GAAW,GACX3/E,EAAM27G,UAAUz3D,GAChBlkD,EAAM+4C,OAAO2xF,GANI,wBAAAz2I,EAAAxB,SAAAsB,MAAH,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,GASZo4I,EAAoB9pI,IAAMuzC,YAAY,SAACwP,GACzC,IAAMgnF,EAAsC,GAC5C,QAAiCl1I,IAA7BkuD,EAAWruC,cACX,OAAOq1H,EAGX,IAAMC,EAAoBjnF,EAAWruC,cAAc/V,OAAO,SAAAskE,GAAG,OAAIA,EAAIlD,oBAAsBi7D,IAA0Bh9H,OAAO,SAAC2xD,EAAKsT,GAAN,OAActT,EAAMsT,EAAIjD,mBAAmB,GACjKiqE,EAAuBlnF,EAAWruC,cAAc/V,OAAO,SAAAskE,GAAG,OAAIA,EAAIlD,oBAAsBi7D,IAA0Bh9H,OAAO,SAAC2xD,EAAKsT,GAAN,OAActT,EAAMsT,EAAIjD,mBAAmB,GAG1K,OAF0B,MAAtBgqE,GAAuD,IAAzBC,GAAuD,MAAzBA,KAC5DF,EAAQ,SAAe,oEACpBA,GACR,CAAC/O,IA/DoD9rF,EAkEOrwC,EAAvDoI,eAlEgD,IAAAioC,EAkEtC,GAlEsCA,EAkEbg7F,EAAoBrrI,EAAzCsrI,oBAChBC,EAA4B,OAD6BvrI,EAAVgM,MAErD,OACIlL,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQU,WACpBhI,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ5B,KAAb,KAAArP,OAAqBiR,EAAQyD,SAA3C,iBACA/K,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ5B,KAAb,KAAArP,OAAqBiR,EAAQyxE,YAA3C,0CAAgGgxD,EAAhG,+EACA/pI,EAAAhP,EAAAiP,cAACyqI,GAAD,CACI5yF,cAAe,CACX/iC,cAAeA,GAEnB09D,SAAUwpD,EACV/kF,SAAUC,EACV4G,KAAMosF,EACNzuH,WAAYxc,EAAMud,SAASf,WAC3BkqB,kBAAmB1mC,EAAM0mC,oBAE7B5lC,EAAAhP,EAAAiP,cAAA,YAEEf,EAAM8iB,mBACJhiB,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ4I,gBACnBhR,EAAMyrI,gBAIf3qI,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ4oD,WACpBlwD,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIjmC,QAAS+hI,EACTxiI,UAAW0iI,EAAkBnjI,EAAQmzH,mBAAqBnzH,EAAQwqF,aAClEz6C,UAAWozF,EACXh3H,SAAUvU,EAAM04C,YAAcjB,GAJlC,WAQA32C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAE,2BACF/R,QAAS,kBAAMyhI,GAAkB,IACjCliI,UAAW0iI,EAAkBnjI,EAAQmzH,mBAAqBnzH,EAAQwqF,aAClEphG,QAAQ,WACRimD,QAASz3C,EAAM04C,YAAcjB,EAC7BljC,UAAWvU,EAAMkpG,OAAS4hC,EAC1B3yF,UAAWozF,GAPf,sBAWAzqI,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,uBACH/R,QAAS,kBAAMyhI,GAAkB,IACjCtzF,QAASz3C,EAAM04C,YAAcjB,EAC7BljC,UAAWvU,EAAMkpG,OAAS4hC,EAC1Bt5I,QAAQ,YACRmY,MAAM,UACNd,UAAWT,EAAQwqF,aACnBz6C,UAAWozF,GARf,qBAaFT,GACEhqI,EAAAhP,EAAAiP,cAAC23H,GAAD,CACIzuE,cAAe,gBACfw7B,OAAQzlF,EAAMypD,WACd3X,QAAS9xC,EAAMkpG,MACfn/C,QAAS/pD,EAAMsxD,MACf1H,aAAc5pD,EAAM04C,gBAOlChvC,GAASc,aAAa,CACxBwmD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEf2xF,aAAc,CACV/nF,OAAQ,GAEZ0wH,mBAAoB,CAChB1wH,OAAQ,YAEZ6gI,mBAAoB,CAChB7gI,OAAQ,WACRS,aAAc,IAElBxC,UAAW,CACPgB,UAAW,IAEftD,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExBqF,OAAQ,CACJnB,SAAU,GACV+B,aAAc,IAElBotE,UAAW,CACPnvE,SAAU,GACV+B,aAAc,IAElBuE,eAAgB,CACZjD,UAAW,SACX9M,UAAW,QACXyJ,SAAU,IAEdihI,WAAY,CACR1qI,UAAW,SACXyJ,SAAU,MAyBH+kC,oBACX1nB,eACA7d,aAAWR,IACXgmC,YAxBJ,SAAyB/uC,EAAmBi6C,GACxC,IAAMr9B,EAAW5c,EAAM4c,SAASvC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOu/B,EAASr9B,SAASlC,KAC9E,MAAO,CACHq9B,WAAYkR,aAAagiF,GAAbhiF,CAA4BjpD,GACxC2wD,MAAOvH,aAAQ6hF,GAAR7hF,CAAuBppD,GAC9BuoG,MAAOp3D,aAAQ85F,GAAR95F,CAAuBnxC,GAC9B4c,WACAuE,WAAYnhB,EAAMmhB,WAClB41C,UAAW/2D,EAAMqb,OAIzB,SAA4B/pB,EAAe2oD,GACvC,MAAO,CACH6O,WAAY,kBAAMx3D,EAASoV,aAAOukI,MAClCnB,kBAAmB,SAAAoB,GAAa,OAAI55I,EtM8HrC,SAA2BsE,EAAoBs1I,GAClD,sBAAAC,EAAAn6I,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAg6I,EAAO95I,EAAeixC,GAAtB,IAAA6L,EAAAj5C,EAAA,OAAAjE,EAAAC,EAAAI,KAAA,SAAA85I,GAAA,cAAAA,EAAA55I,KAAA45I,EAAA35I,MAAA,cAAA25I,EAAA55I,KAAA,EAEO28C,EAAY7L,IAAWphB,WAAWnO,QAAQ0H,GAC1CvlB,EAAeotC,IAAWphB,WAAWzG,GAH5C2wH,EAAA35I,KAAA,EAIOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiEZ,EAAjE,mBAAAY,OAA6F00I,GAAiB,CAAE9vG,OAAQ,WAJnI,OAKC9pC,EAASwxD,GAAkBooF,IAC3B55I,EAASX,EAAgB,sBAAuB,YANjD06I,EAAA35I,KAAA,gBAAA25I,EAAA55I,KAAA,EAAA45I,EAAAzxF,GAAAyxF,EAAA,SAQC/5I,EAAS0B,EAAyBq4I,EAAAzxF,GAAK,oCARxC,yBAAAyxF,EAAAv5I,SAAAs5I,EAAA,iBAAP,gBAAAE,EAAAC,GAAA,OAAAJ,EAAAn5I,MAAAC,KAAAC,YAAA,GsM/HiD43I,CAAkB7vF,EAASr9B,SAASlC,GAAIwwH,KACrFd,kBAAmB,SAAAl1H,GAAa,OAAI5jB,EtM8GrC,SAA6BsE,EAAoBsf,GACpD,sBAAAs2H,EAAAx6I,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAq6I,EAAOn6I,EAAeixC,GAAtB,IAAA6L,EAAAj5C,EAAAu2I,EAAA,OAAAx6I,EAAAC,EAAAI,KAAA,SAAAo6I,GAAA,cAAAA,EAAAl6I,KAAAk6I,EAAAj6I,MAAA,cAAAi6I,EAAAl6I,KAAA,EAEO28C,EAAY7L,IAAWphB,WAAWnO,QAAQ0H,GAC1CvlB,EAAeotC,IAAWphB,WAAWzG,GAH5CixH,EAAAj6I,KAAA,EAIsDypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiEZ,EAAjE,kBAA6F,CAAEwlC,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUqW,KAJ7L,OAIOw2H,EAJPC,EAAAhyF,KAKCroD,EAASuxD,GAAmB,CAAEjtD,aAAYsf,cAAew2H,KACzDp6I,EAASX,EAAgB,wBAAyB,YANnDg7I,EAAAj6I,KAAA,iBAAAi6I,EAAAl6I,KAAA,GAAAk6I,EAAA/xF,GAAA+xF,EAAA,SAQCr6I,EAAS0B,EAAyB24I,EAAA/xF,GAAK,sCARxC,yBAAA+xF,EAAA75I,SAAA25I,EAAA,kBAAP,gBAAA/iB,EAAA/iE,GAAA,OAAA6lF,EAAAx5I,MAAAC,KAAAC,YAAA,GsM/GiD05I,CAAoB3xF,EAASr9B,SAASlC,GAAIxF,KACvF8lG,UAAW,SAACnoH,GAAD,OAAoBvB,EAASu6I,aAAWZ,GAAep4I,QAI3Di8C,CAIb+6F,ICrOI9gI,GAA2C,CAC7Cu0F,OAAQ,CACJltF,aAAc,MACd/E,MAAO,GACP7H,OAAQ,GACRs7C,WAAY55C,GAAQiB,KAAKC,QACzB+C,UAAW,EACXoD,QAAS,OACTO,WAAY,SACZgC,eAAgB,UAEpB0uF,aAAc,CACVx0F,MAAO,QACPe,SAAU,KAIH+hI,GA3BI,SAACzsI,GAChB,OACIc,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOu0F,QACfn9F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOy0F,cACfn+F,EAAMuI,YCJVglF,GAAY,qCAOnBm/C,GAAqCj8F,GAAS,2CAoBrCsH,gBAAoB,CAAEF,KAAM01C,IAA5Bx1C,CAlBgB,SAAC/3C,GAC5B,OACIc,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GAAI91C,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO,CAACoJ,QAAS,SAC9DtJ,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,uBACLqoC,UAAWZ,GACX1vC,MAAM,wEACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAACs0F,IACX12F,YAAY,gCACZvF,UAAQ,QCrBf88C,GAAY,kCAOnB/5C,GAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAEf+iI,GAA2Bl8F,GAAS,2CA0B3BsH,gBAAoB,CAAEF,KAAM01C,IAA5Bx1C,CAxBqB,SAAC/3C,GAKjC,YAJmDhK,GAA/CgK,EAAM44C,cAAc7iC,yBAAuF,MAA/C/V,EAAM44C,cAAc7iC,0BAEhF/V,EAAM44C,cAAc7iC,wBAA0B,GAG9CjV,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG4yB,GAAI,EAAG91C,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO,CAACoJ,QAAS,SAC5DtJ,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,0BACLqoC,UAAWnD,GACXntC,MAAM,kBACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAACu0F,GAAyBj7F,IACpCyB,WAAYK,GACZwC,YAAY,kBACZxrB,KAAK,SACLimB,UAAQ,QCGbm8F,GAxBwD,SAAC5sI,GAAiB,IAC7E20C,EAAW30C,EAAX20C,OACR,OACI7zC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKyzC,EAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GACtB,IAAMk4F,EAAiBl4F,EAAOn5C,IAAIkE,GAClC,OACIoB,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAKmzI,EAAexxH,IAChCva,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmD,aAChB/L,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,YACJqoC,UAAWZ,GACX1vC,MAAOsgB,GAAa,GAAAhwB,OAAI01I,EAAer/E,cAG/C1sD,EAAAhP,EAAAiP,cAAA,gBCgIlBomB,GAAgB,SAAC3gB,GACnB,OAAO1F,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO0C,WAAY5F,IAqBxC,IAAMkD,GAAwC/X,OAAA0G,EAAA,EAAA1G,CAAA,GACvCmpF,GADuC,CAE1CgyD,cAAe,CACXziI,WAAY,EACZL,cAAe,GAEnBu0H,YAAa,CACTtyH,WAAY,SAEhBgB,WAAY,CACRC,QAAS,kBAGFwiC,eA/Bf,SAAyB/uC,EAAmBi6C,GAGxC,MAAO,CACHmyF,kBAHsBvjD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,YAIlEy+D,gCAAmE,IAHhCoqB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,kCAGL,IAAM,IAChFuwC,iBAAkBvwC,EAAMmhB,WAAWovB,mBAI3C,SAA4Bj/C,EAAe2oD,GACvC,MAAO,CACHoyF,UAAW,SAAAj0I,GAAM,OAAI9G,EAAS+6I,aAAUpyF,EAASiG,SAAU,WAAY9nD,KACvEk0I,cAAe,kBAAMh7I,EAASi7I,aAAetyF,EAASiG,SAAU,cAChEssF,iCAAkC,SAACngD,EAAerzF,GAAhB,OAAgC1H,EAAS2uD,aAAOwsF,GAAsBpgD,EAAOrzF,OAiBxG+1C,CAnJoB,SAAC1vC,GAAiB,IACzC+sI,EAAuL/sI,EAAvL+sI,kBAAmBxvH,EAAoKvd,EAApKud,SAAUyvH,EAA0JhtI,EAA1JgtI,UAAWC,EAA+IjtI,EAA/IitI,cAAeE,EAAgIntI,EAAhImtI,iCAAkCE,EAA8FrtI,EAA9FqtI,UAAWC,EAAmFttI,EAAnFstI,YAAa7jG,EAAsEzpC,EAAtEypC,SAAU8jG,EAA4DvtI,EAA5DutI,SAAUj7H,EAAkDtS,EAAlDsS,cAAe8sD,EAAmCp/D,EAAnCo/D,+BACtJouE,EAAiB,WACnB,IAAIC,EAAwC,GAC5CA,EAAgBhtH,KAAK,CACjBpF,GAAIkC,EAASlC,GACbmyC,SAAUjwC,EAASiwC,SACnBwP,YAAY,EACZrmB,SAAS,IAEbp5B,EAASf,WAAWZ,QAAQ,SAACwR,GACzBqgH,EAAgBhtH,KAAK,CACjBpF,GAAI+R,EAAI/R,GACRmyC,SAAUpgC,EAAIogC,SACdwP,YAAY,EACZrmB,SAAS,MAGjBq2F,EAAU,CAAExsH,UAAWitH,KAErBC,EAAgCvsI,IAAMuzC,YAAY,SAACiC,GACrDw2F,EAAiC,iCAAkCx2F,GAC/DlN,IACA0jG,EAAiC,wBAAyBx2F,GACrDA,IACDw2F,EAAiC,iCAAiC,GAClEA,EAAiC,yBAAyB,GAC1DA,EAAiC,0BAA0B,GAC3DA,EAAiC,sBAAsB,MAGhE,CAACA,EAAkC1jG,IAChCkkG,EAAuBxsI,IAAMuzC,YAAY,SAAC4hC,EAAa3/B,GACzC,MAAZA,GAAwD,KAApCo2F,GAAqB,IAAI55I,OAC7Cq6I,IAEAP,IAEJS,EAA0C,MAAZ/2F,IAC/B,CAACo2F,EAAmBxvH,EAAUyvH,EAAWC,EAAeS,IAErDE,EAAe5tI,EAAMge,mBAAqBb,GAAY,UAAWC,GAAgBuO,gBACjFkiH,EAAc7tI,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,gBAC/EmiH,EAAc9tI,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,gBAC/E9kB,EAAK,GAAA1P,OAAMk2I,GAAaO,EAAe,UAAYnkG,GAAYokG,EAAc,SAAWN,GAAYO,EAAc,SAAW,IAOnI,OALG9tI,EAAM+tI,kCAAoC/tI,EAAM+sI,mBAAuD,GAAlC/sI,EAAM+sI,kBAAkB55I,SAC5Fq6I,IACAE,GAA8B,IAI9B5sI,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOgD,aAAnB,wBAC0B2gI,GAAaO,IAAiB,WAAYnkG,GAAYokG,IAAgB,UAAWN,GAAYO,IAAgB,UAEvIhtI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAO0I,GAAOojI,eAC7BhsI,EAAAhP,EAAAiP,cAAA,OAAKC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO6D,QAAY7D,GAAO60H,cACtCv+H,EAAM+tI,iCACD5mH,GAAc,kGACdA,GAAa,4DAAAhwB,OAA6D0P,EAA7D,sBAAA1P,OAAuFmb,MAE5GtS,EAAM+tI,kCACJjtI,EAAAhP,EAAAiP,cAACs2C,GAAA,EAAD,CACI19C,MAAOqG,EAAMo/D,+BACbjpB,SAAUw3F,EACV3sI,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOqD,WAAerD,GAAOuD,aAEzCnM,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,IAAO88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cAAgB9C,MAAM,QAC1E/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,IAAO88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cAAgB9C,MAAM,SAIrFwmI,GAAaC,GAAkD,MAAnCluE,GACzBt+D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAO0I,GAAOojI,eAC7BhsI,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,qBACLqoC,UAAWZ,GACX1vC,MAAOsgB,GAAa,oDAI/BsiB,GAA+C,MAAnC21B,GACTt+D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAO0I,GAAOojI,eAC7BhsI,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gCACLqoC,UAAWZ,GACX1vC,MAAOsgB,GAAa,yFAG5BrmB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAO0I,GAAOojI,eAC7BhsI,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,yBACLqoC,UAAWZ,GACX1vC,MAAOsgB,GAAa,wFAKnComH,GAA+C,MAAnCnuE,GACTt+D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAO0I,GAAOojI,eAC7BhsI,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOkB,kBAAjB,mEACA9J,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY1Y,UAAWy1F,GAAkC99H,KAAK,qDC5HhFpF,GAA2C,CAC7CsyB,KAAM,CACFxtB,gBAAiB3I,GAAQC,KAAKI,KAC9BmkF,YAAa,EACbt9B,YAAa,SACbna,YAAa/sC,GAAQC,KAAKU,KAC1B4D,QAAS,SACT4B,MAAO,OACP/K,UAAW,UAEfgR,OAAQ,CACJjG,MAAO,QAEXia,KAAM,CACFtc,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdlE,KAAM,CACFmD,MAAO9D,GAAQiB,KAAKC,QACpBsH,cAAe,cAIR2/H,GAvCiB,SAAChuI,GAAiB,IACtCsJ,EAAYtJ,EAAZsJ,QACR,OACIxI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI1iB,QAASA,GACxBxI,EAAAhP,EAAAiP,cAACwpF,GAAA,EAAD,CAAYlvE,GAAG,yBAAyB87B,UAAU,MAAMn2C,MAAO0I,GAAOuI,QAClEnR,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EAAGt/C,MAAO0I,GAAOsyB,MAC/Bl7B,EAAAhP,EAAAiP,cAACktI,GAAAn8I,EAAD,CAAakP,MAAO0I,GAAOuc,OAC3BnlB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOlD,MAAnB,8BC6FT0nI,GAnF4B,SAACluI,GAAiB,IACjDs8H,EAAat8H,EAAbs8H,SACF1kF,EAAoBz2C,IAAMuzC,YAAY3D,GAAe,KAAM,IAC3Do9F,EAAsBhtI,IAAMuzC,YAAYlC,GAAgC,4BAA6B,IACrG47F,EAAmBjtI,IAAMuzC,YAAYlC,GAAgC,yBAA0B,IAOrG,OALArxC,IAAMq9C,UAAU,WACZx+C,EAAM4yD,MAAN,GAAAz7D,OAAemlI,EAAf,iBACAt8H,EAAM4yD,MAAN,GAAAz7D,OAAemlI,EAAf,2BACD,IAGCx7H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwC,YACfpL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,yCACAzK,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO6D,SAApB,6FAGJzM,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,gBACJnlF,UAAWnD,GACXntC,MAAK,eACLuxC,SAAU,CAAC+1F,EAAqBv2F,GAChCiH,KAAMjO,GACNp/C,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,kCACJnlF,UAAWhC,GACXtuC,MAAK,mCACLrV,QAAQ,WACR2mD,WAAS,EACT2G,eAAa,EACbC,UAAW1wB,GACXwwB,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,4BACJnlF,UAAWhC,GACXtuC,MAAK,6BACLrV,QAAQ,WACR2mD,WAAS,EACT4G,UAAW1wB,GACXwwB,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,gBACJnlF,UAAWnD,GACXntC,MAAK,eACLuxC,SAAUR,EACVpmD,QAAQ,WACRqtD,KAAMjO,GACNuH,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,yBACJnlF,UAAWnD,GACXntC,MAAK,0BACLuxC,SAAU,CAACg2F,EAAkBx2F,GAC7BiH,KAAMjO,GACNp/C,QAAQ,WACR2mD,WAAS,SCgCtBzI,mBAPf,SAAyB/uC,EAAmBi6C,GAExC,MAAO,CACHyzF,iBAFqB7kD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,+BAMW,KAAzB5sF,CAxG+B,SAAC1vC,GAAiB,IhN3BrCsuI,EAAuB/8I,EgN4BtC+qI,EAAat8H,EAAbs8H,SACFiS,EAA6BvuI,EAAMuuI,6BAA8B,EAEjEC,EAAwBrtI,IAAM2xD,QAAQpoB,GAA0B,IAChE+jG,GAAmD,IAA3BzuI,EAAMquI,iBAC9BK,EAA2BvtI,IAAMuzC,ahNjChB45F,EgNiCuCG,EhNjChBl9I,EgNiCuC,gChNjCnB,SAACoI,GAAD,OAAiB20I,EAA4B30I,GAAmB,IAAVA,OAAc3D,EAAYzE,OAAhDyE,IgNiCqB,CAACy4I,IAClHE,EAAuBxtI,IAAMuzC,YAAYjE,GAAS,6BAA8B,IAChFm+F,EAAyBztI,IAAMuzC,YAAYjE,GAAS,+BAAgC,IACpFo+F,EAAuB1tI,IAAMuzC,YAAYjE,GAAS,6BAA8B,IAChFq+F,EAAuB3tI,IAAMuzC,YhN7BA,SAAC45F,GAAD,OAA4BA,EAA2C19F,GAA5B,SAACj3C,KgN6BhCo1I,CAAwBN,GAAuB,CAACA,IAC/F,OACI3tI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKqtI,GACGztI,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwC,YACfpL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,2BAIJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,qCACJnlF,UAAWhC,GACXtuC,MAAK,sCACLg4C,KAAMiwF,EACNt9I,QAAQ,WACR2mD,WAAS,EACT4G,UAAW1wB,GACX+pB,SAAU,CAACs2F,MAGnB5tI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,4BACJnlF,UAAWZ,GACX1vC,MAAK,kCACLrV,QAAQ,cAGfi9I,GACG3tI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,iBACJnlF,UAAWnD,GACXntC,MAAK,gBACLg4C,KAAMjO,GACNp/C,QAAQ,WACR2mD,WAAS,EACTC,SAAUu2F,KAGlB7tI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,mBACJnlF,UAAWhC,GACXtuC,MAAK,kBACLrV,QAAQ,WACR2mD,WAAS,EACT2G,eAAa,EACbC,UAAW1wB,GACX+pB,SAAU,CAACw2F,EAAwB78F,IACnC8M,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,yBACJnlF,UAAWnD,GACXntC,MAAM,yBACNg4C,KAAMjO,GACNyF,QAAM,EACN7kD,QAAQ,WACR4mD,SAAUy2F,EACV12F,WAAS,EACT6G,YA1Ef,CAAEjB,QAAQ,GA2EKgB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAEV60I,EAAsBp7I,IAAI,SAACo2B,GAAD,OACtB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,4BCxE1Eq1I,GAzB0D,SAAChvI,GAAiB,IAC/E20C,EAAW30C,EAAX20C,OACR,OACI7zC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKyzC,EAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GACtB,IAAMs6F,EAAiBt6F,EAAOn5C,IAAIkE,GAC1B8tD,EAAayhF,EAAbzhF,SACR,OACI1sD,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAKu1I,EAAe5zH,IAChCva,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmD,aAChB/L,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,YACJqoC,UAAWZ,GACX1vC,MAAOsgB,GAAa,GAAAhwB,OAAIq2D,OAGhC1sD,EAAAhP,EAAAiP,cAAA,gBC8UlBmuI,GAAgB,SAACvyH,EAAgBhc,EAAmBi6C,GACtD,IAAIp9C,EAAS,IAAI8e,IADkE6yH,EAE9Cv0F,EAASr9B,SAAtCiwC,EAF2E2hF,EAE3E3hF,SAAUhxC,EAFiE2yH,EAEjE3yH,WAAYnB,EAFqD8zH,EAErD9zH,GAU9B,OATImuE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,KAAAnlI,OAAoEq2D,EAApE,yBACAhwD,EAAO+e,IAAIlB,GAEfmB,EAAWZ,QAAQ,SAACa,GAAyB,IACjC+wC,EAAiB/wC,EAAjB+wC,SAAUnyC,EAAOoB,EAAPpB,GACdmuE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,KAAAnlI,OAAoEq2D,EAApE,yBACAhwD,EAAO+e,IAAIlB,KAGZ7d,GA6BIkyC,mBA1Bf,SAAyB/uC,EAAmBi6C,GAKxC,MAAO,CACHw0F,gBAJoB5lD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,wBAKpB+S,iBAJqBH,GAAct0F,EAASr9B,SAAU5c,EAAOi6C,GAK7Dp6B,UAJcgpE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAArC,GAAAxJ,OAA+CyjD,EAAS0hF,SAAxD,iBAQtB,SAA4BrqI,EAAe2oD,GACvC,MAAO,CACH00F,gBAAiB,SAACxrF,GAAD,OAAuB7xD,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,cAAsDx4E,KAC7GyrF,eAAgB,SAACtuH,GAAD,OAAsBhvB,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,aAAqDr7G,KAC1GuuH,aAAc,SAACzqF,GAAD,OAAsB9yD,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,aAAqDv3E,KACxG0qF,kBAAmB,SAACzH,GAAD,OAAwB/1I,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,gBAAwD0L,KAClH0H,cAAe,SAAC7xE,GAAD,OAAqB5rE,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,YAAoDz+D,KACvG8xE,WAAY,SAACz1E,GAAD,OAAkBjoE,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,SAAiDpiE,KAC9F01E,YAAa,SAACxiG,GAAD,OAAqBn7C,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,YAAoDlvF,KACrGyiG,cAAe,SAACz1E,GAAD,OAAqBnoE,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,YAAoDliE,KACvG01E,2BAA4B,SAAChhI,GAAD,OAAkB7c,EAAS2uD,aAAOhG,EAASiG,SAAV,GAAA1pD,OAAuByjD,EAAS0hF,SAAhC,yBAAiExtH,OAIvH4gC,CA7UgB,SAAC1vC,GAC5B,IAAMqtI,EAAYrtI,EAAMge,mBAAqBb,GAAY,UAAWC,GAAgBuO,gBAC9E8d,EAAWzpC,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,gBAC5E4hH,EAAWvtI,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,gBAC1EpO,EAA8Lvd,EAA9Lud,SAAU++G,EAAoLt8H,EAApLs8H,SAA4BgT,GAAwJtvI,EAA1KqvI,iBAA0KrvI,EAAxJsvI,iBAAiBI,EAAuI1vI,EAAvI0vI,cAAeC,EAAwH3vI,EAAxH2vI,WAAYF,EAA4GzvI,EAA5GyvI,kBAAmBD,EAAyFxvI,EAAzFwvI,aAAcD,EAA2EvvI,EAA3EuvI,eAAgBK,EAA2D5vI,EAA3D4vI,YAAaC,EAA8C7vI,EAA9C6vI,cAAeC,EAA+B9vI,EAA/B8vI,2BAC/JtiF,EAAyBjwC,EAAzBiwC,SAAUhxC,EAAee,EAAff,WACZshC,EAAe,CAAEC,QAAQ,GACzBgyF,EAAmB/vI,EAAM+vI,mBAAoB,EAC7CC,EAAwBhwI,EAAMgwI,wBAAyB,EACvDC,EAAyBjwI,EAAMiwI,yBAA0B,EACzDC,EAA+BlwI,EAAMkwI,+BAAgC,EACrEC,EAA2C,MAA1BnwI,EAAMovI,gBACvBgB,EAAmCjvI,IAAM2xD,QAAQhpB,GAAgC,IACjF8N,EAAoBz2C,IAAMuzC,YAAY3D,GAAe,KAAM,IAC3DyM,EAAoBr8C,IAAMuzC,YAAYjE,GAAS,0BAA2B,IAC1EgN,EAAmBt8C,IAAMuzC,YAAYjE,GAAS,yBAA0B,IAE9EtvC,IAAMq9C,UAAU,WACZx+C,EAAM4yD,MAAN,GAAAz7D,OAAemlI,EAAf,eACAt8H,EAAM4yD,MAAN,GAAAz7D,OAAemlI,EAAf,eACD,IAEH,IAAM+T,EAAelvI,IAAMuzC,YAAY,SAAC0qF,GACpC,GAAIA,EAAOt7E,WAMP,GALAwrF,EAAgBlQ,EAAOt7E,WACvByrF,EAAenQ,EAAOn+G,UACtBuuH,EAAapQ,EAAOr6E,UACpB0qF,EAAkBrQ,EAAOt6E,aAErBs6E,EAAOlyF,mBAAoB,CAC3B,IAAMD,EAAcmyF,EAAOlyF,mBAAmB,GAC9CwiG,EAAcziG,EAAY+sB,gBAC1B21E,EAAW1iG,EAAYitB,MACvB01E,EAAY3iG,EAAYG,SACxByiG,EAAc5iG,EAAYmtB,eAG9Bk1E,EAAgB,IAChBC,EAAe,IACfC,EAAa,GACbC,EAAkBjuH,OAClBkuH,EAAc,IACdC,EAAW,IACXC,EAAY,GACZC,EAAc,IAGlBC,EAA2B1Q,EAAO5xE,UAAY,UAE/C,CAAC8hF,EAAiBI,EAAeC,EAAYF,EAAmBD,EAAcD,EAAgBK,EAAaC,EAAeC,IAW7H,OACIhvI,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwC,YACfpL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,IACnB+0F,GAA0BjwI,EAAMswI,kBAC9BxvI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,wBACAzK,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO6D,SAAjB,4CAAoE8/H,GAAa,UAAW5jG,GAAY,SAAU8jG,GAAY,SAA9H,UACCvtI,EAAMwgB,YACCxgB,EAAMwgB,UAAUhB,KAAK,SAAA+wH,GAAQ,OAAIA,EAAS55F,WAC3C71C,EAAAhP,EAAAiP,cAACyvI,GAAA,EAAD,CAAgBx4I,OAAO,GAAvB,oCACP8I,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI1Y,UAAW63F,GACXlgI,KAAI,GAAA3X,OAAKmlI,EAAL,cACJlkF,SAtBU,SAACz+C,EAAY82I,GAC3C,IAAGA,IACIA,EAAyB/wE,SAASlgD,KAAK,SAAAzmB,GAAM,OAAIA,EAAOynB,UAAUhB,KAAK,SAAA+wH,GAAQ,OAAIA,EAAS55F,YAInG,MAAO,uCAmBEo5F,GACGjvI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,kCACAzK,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,wBACJnlF,UAAWnD,GACXntC,MAAK,0CACLrV,QAAQ,WACR2mD,WAAS,KAIpB63F,GACGlvI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,uCACAzK,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,6BACJnlF,UAAWnD,GACXntC,MAAK,yCACLrV,QAAQ,WACR2mD,WAAS,MAInB+3F,GAAgClwI,EAAMswI,kBACpCxvI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,0CAA0F8hI,GAAa,UAAW5jG,GAAY,SAAU8jG,GAAY,SAApJ,aACAzsI,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO6D,SAAjB,sDACAzM,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,yBACJnlF,UAAWL,GACXjwC,MAAO/F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACP81C,SAAO,EACPD,UAAU,uBACV8H,KAAMjO,IAEN9vC,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,GAAAxC,OAAKq2D,GAAY/W,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,YAAY3I,MAAO0I,GAAO0C,UAAW+pC,SAAU,SAAA3uB,GAAK,OAAI6oH,EAAa9yH,MAAe1W,MAAOsgB,GAAa,GAAAhwB,OAAIq2D,IAAaxsD,MAAO0I,GAAOmD,cACpM2P,EAAWppB,IAAI,SAACg6B,EAAK3N,GAClB,OACI3e,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB98C,IAAK+lB,EAAG9lB,MAAK,GAAAxC,OAAKi2B,EAAIogC,UAAY/W,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,YAAY3I,MAAO0I,GAAO0C,UAAW+pC,SAAU,SAAA3uB,GAAK,OAAI6oH,EAAajjH,MAAUvmB,MAAOsgB,GAAa,GAAAhwB,OAAIi2B,EAAIogC,WAAaxsD,MAAO0I,GAAOmD,gBAGxN/L,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,QAAW88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,YAAY3I,MAAO0I,GAAO0C,UAAW+pC,SAAU,SAAA3uB,GAAK,OAAI6oH,EAAa,OAASxpI,MAAOsgB,GAAa,SAAWnmB,MAAO0I,GAAOmD,gBAG3L/L,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,cACJnlF,UAAWnD,GACXntC,MAAM,aACNuxC,SAAU,CAACR,EAAmB4F,GAC9BhsD,QAAQ,WACR2mD,WAAS,EACT0G,KAAMjO,MAGd9vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,aACJnlF,UAAWnD,GACXntC,MAAM,YACNg4C,KAAMjO,GACNwH,SAAU,CAACR,EAAmB6F,GAC9BjsD,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,aACJnlF,UAAWnD,GACXntC,MAAM,SACNg4C,KAAMjO,GACNp/C,QAAQ,WACR6kD,QAAM,EACN8B,WAAS,EACT6G,YAAalB,EACbiB,UAAW5wB,GACXntB,MAAO0I,GAAOirC,QAEd7zC,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbwrC,KAAa/xC,IAAI,SAAAo2B,GAAG,OACjB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,gBACJnlF,UAAWhC,GACXtuC,MAAM,gBACNuxC,SAAUrG,GACV8M,KAAMjO,GACNuH,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACbC,UAAW1wB,MAGnBvtB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,YACJnlF,UAAWnD,GACXntC,MAAK,UACLrV,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,SACJnlF,UAAWnD,GACXntC,MAAK,OACLrV,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,YACJnlF,UAAWnD,GACXntC,MAAM,QACNg4C,KAAMjO,GACNyF,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,EACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,YACJnlF,UAAWnD,GACXntC,MAAK,WACLrV,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,uBACJnlF,UAAWnD,GACXntC,MAAM,cACNg4C,KAAMjO,GACNyF,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,EACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KrNoCjB,WACzB,IAAMoqC,EAAef,KACrB,OAAO6C,GAAe9B,GqNrCO2sG,GAAgBt9I,IAAI,SAAAo2B,GAAG,OACpB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIpDw2I,GACGrvI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,mBACJnlF,UAAWhC,GACXtuC,MAAM,qBACNuxC,SAAUrG,GACV8M,KAAMjO,GACNuH,WAAS,EACT3mD,QAAQ,WACRstD,eAAa,EACbC,UAAW1wB,MAIvBvtB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,+BACJnlF,UAAWnD,GACXntC,MAAM,gCACNwvC,QAAM,EACN7kD,QAAQ,WACRqtD,KAAMjO,GACNuH,WAAS,EACT6G,YAAalB,EACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAEVy2I,EAAiCh9I,IAAI,SAACo2B,GAAD,OACjC1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAKzDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,uBACJnlF,UAAWZ,GACX1vC,MAAK,0BACL7F,MAAO0I,GAAO0C,eAMlCtL,EAAAhP,EAAAiP,cAAA,cChTG4vI,GA5CiC,SAAC3wI,GAAiB,IACtDs8H,EAAat8H,EAAbs8H,SACR,OACIx7H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwC,YACfpL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6B,wBAA1B,+CAIJzK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,8BACJnlF,UAAWnD,GACXntC,MAAK,0CACLrV,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,mBACJnlF,UAAWnD,GACXntC,MAAK,8BACLrV,QAAQ,WACR2mD,WAAS,KAGjBr3C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKmlI,EAAL,iBACJnlF,UAAWnD,GACXntC,MAAK,4BACLrV,QAAQ,WACR2mD,WAAS,SCgFtBzI,mBAdf,SAAyB/uC,EAAmBi6C,GACxC,IAAMwkB,EAAiCoqB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,kCAC7E0+D,EAAqBmqB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,sBACjE2+D,EAAwBkqB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,yBAG1E,MAAO,CACHy+D,iCACAC,qBACAE,8BALkCiqB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,iCAM9E2+D,wBACAE,uBAN2BgqB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,4BASvC,KAAzB+uC,CA3FgB,SAAC1vC,GAAiB,IAErCmc,EAAyBnc,EAAzBmc,qBACFkjD,EAAqBr/D,EAAMq/D,qBAAsB,EAEjDuxE,EAAoBz0H,EAAqBwW,SAAS,GAClDo9G,EAAmB5zH,EAAqBwW,SAAS,GACjDk+G,EAAmC10H,EAAqBwW,SAAS,IACjEm+G,EAAmC30H,EAAqBwW,SAAS,IACjEo+G,EAA8B50H,EAAqBwW,SAAS,IAC5Du9G,EAA+B/zH,EAAqBwW,SAAS,IAC7Dq+G,EAA4B70H,EAAqBwW,SAAS,IAC1Ds+G,EAA2B90H,EAAqBwW,SAAS,IAEzD06G,EAAYrtI,EAAMge,mBAAqBb,GAAY,UAAWC,GAAgBuO,gBAC9E8d,EAAWzpC,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,gBAC5E4hH,EAAWvtI,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,gBAE5EulH,EAAiBlxI,EAAMo/D,+BACvB+xE,EAAgBnxI,EAAMo/D,gCAAkCp/D,EAAMw/D,wBAA0Bx/D,EAAMs/D,uBAAyBt/D,EAAMu/D,8BAC7H6xE,EAA2BF,GAAkBC,EAC7CE,EAAmB1/I,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOuB,oBAAwBvB,GAAOsE,UAGtE,OACIlN,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACMkwI,GAA4BpxI,EAAMswI,kBAChCxvI,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAOwC,YAC1BpL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOgD,aACf5L,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,YAAuCuhI,GAAa,UAAW5jG,GAAY,SAAU8jG,GAAY,SAAjG,sBAA8HvtI,EAAMN,MAAQ,KAGnJM,EAAMN,MAAQ,GACXoB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG4yB,GAAI,EAAG59C,MAAO0I,GAAOkD,UACnC9L,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,kBAAkBra,MAAOqwI,EAAqB1nI,MAAM,UAAUL,QAAS,kBAAMtJ,EAAMuzE,SAASvzE,EAAMN,SAA7G,oBAQhBoB,EAAAhP,EAAAiP,cAACuwI,GAAD,CACAhV,SAAUt8H,EAAMs8H,SAChBt+G,iBAAkBhe,EAAMge,iBACxBT,SAAUvd,EAAMud,SAChBwyH,iBAAkBA,EAClBC,sBAAuBY,EACvBX,uBAAwBa,GAAoCD,EAC5DX,6BAA8BA,EAC9BqB,kBAAmBvxI,EAAMuxI,kBACzB1wF,SAAU7gD,EAAM6gD,SAChByvF,gBAAiBtwI,EAAMswI,gBACvB19E,MAAO5yD,EAAM4yD,WAEfm+E,IAA+B/wI,EAAMswI,kBAA6BxvI,EAAAhP,EAAAiP,cAACywI,GAAD,CAC5DlV,SAAUt8H,EAAMs8H,SAAU1pE,MAAO5yD,EAAM4yD,WAE7Co+E,IAA6BhxI,EAAMswI,kBAA6BjxE,GAAsBv+D,EAAAhP,EAAAiP,cAAC0wI,GAAD,CAChFnV,SAAUt8H,EAAMs8H,WAEpBx7H,EAAAhP,EAAAiP,cAAC2wI,GAAD,CACIpV,SAAUt8H,EAAMs8H,SAChBiS,2BAA4B0C,EAC5BpwF,SAAU7gD,EAAM6gD,eCGzBnR,mBAPf,SAAyB/uC,EAAmBi6C,GAExC,MAAO,CACH8kB,UAFc8pB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,aAAe,IAAIzE,UAMtEwzC,CA9EkD,SAAC1vC,GAAiB,IACvE20C,EAAqB30C,EAArB20C,OAAQp3B,EAAavd,EAAbud,SAEVsuE,EAAY1qF,IAAMuzC,YAAY,WAChC,IAAI+4F,EAAwC,GAC5CA,EAAgBhtH,KAAK,CACjBpF,GAAIkC,EAASlC,GACbmyC,SAAUjwC,EAASiwC,SACnBwP,YAAY,EACZrmB,SAAS,IAEbp5B,EAASf,WAAWZ,QAAQ,SAACwR,GACzBqgH,EAAgBhtH,KAAK,CACjBpF,GAAI+R,EAAI/R,GACRmyC,SAAUpgC,EAAIogC,SACdwP,YAAY,EACZrmB,SAAS,MAGjB,IAAMg7F,EAAsB,CACxBnxH,UAAWitH,GAGf94F,EAAOl0B,KAAKkxH,IACb,CAACp0H,EAAUo3B,IAERmoC,EAAe37E,IAAMuzC,YAAY,SAACh1C,GACpCi1C,EAAO02C,OAAO3rF,IACf,CAACi1C,IAEEi9F,EAA4BzwI,IAAMuzC,YAAY,SAACh1C,EAAeggE,GAChE,IAAM6xE,EAAoB,IAAIj1H,IAU9B,OATAojD,EAAS9jD,QAAQ,SAACi2H,EAAKpyH,GACnB,GAAIA,IAAM/f,EAAO,KAAAvB,GAAA,EAAAC,GAAA,EAAAC,OAAArI,EAAA,IACb,QAAAsI,EAAAC,EAAqBszI,EAAIrxH,UAAzBhiB,OAAAC,cAAAN,GAAAG,EAAAC,EAAAlM,QAAAqM,MAAAP,GAAA,EAAoC,KAA3BoyI,EAA2BjyI,EAAA3E,MAC5B42I,EAAS55F,SACT46F,EAAkBh1H,IAAIg0H,EAASl1H,KAH1B,MAAAtc,GAAAX,GAAA,EAAAC,EAAAU,EAAA,YAAAZ,GAAA,MAAAI,EAAAS,QAAAT,EAAAS,SAAA,WAAAZ,EAAA,MAAAC,OAQdkzI,GACR,IAEH,OACIzwI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKyzC,EAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GACtB,IAAM48F,EAAoBK,EAA0BlyI,EAAOM,EAAM0/D,UACjE,OACI5+D,EAAAhP,EAAAiP,cAAC+wI,GAAD,CACIp4I,IAAKoV,EACLpP,MAAOA,EACP48H,SAAUxtH,EACVyO,SAAUvd,EAAMud,SAChBg2D,SAAUuJ,EACV9+D,iBAAkBhe,EAAMge,iBACxB7B,qBAAsBnc,EAAMmc,qBAC5Bo1H,kBAAmBA,EACnB1wF,SAAU7gD,EAAM6gD,SAChByvF,gBAAiBtwI,EAAMswI,gBACvB19E,MAAO5yD,EAAM4yD,UAIzB9xD,EAAAhP,EAAAiP,cAAA,WACCf,EAAM+xI,+BAAiCjxI,EAAAhP,EAAAiP,cAACixI,GAAD,CAAyB1oI,QAASuiF,OCrEzE0B,GAAY,iBA8CVx1C,gBAAoC,CAAEF,KAAM01C,IAA5Cx1C,CA5Cc,SAAC/3C,GAAiB,IACnCmc,EAAyBnc,EAAzBmc,qBACF81H,EAA0B91H,EAAqBwW,SAAS,GACxDu/G,EAAyB/1H,EAAqBwW,SAAS,GACvD8sC,EAAyBtjD,EAAqBwW,SAAS,IACvDq+G,EAA4B70H,EAAqBwW,SAAS,IAE1D06G,EAAYrtI,EAAMge,mBAAqBb,GAAY,UAAWC,GAAgBuO,iBAAmBsmH,EACjGxoG,EAAWzpC,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,iBAAmBumH,EAC/F3E,EAAWvtI,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,iBAAmB8zC,EAErG,OACI3+D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACMmsI,GAAa5jG,GAAY8jG,GAAYvtI,EAAMswI,kBACzCxvI,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACoxI,GAAD,CACItxF,SAAU7gD,EAAM63C,KAChBpO,SAAUA,EACV4jG,UAAWA,EACXC,YAAa0D,EACbzD,SAAUA,EACVj7H,cAAetS,EAAMsS,cACrBiL,SAAUvd,EAAMud,SAChBS,iBAAkBhe,EAAMge,iBACxB+vH,iCAAkC/tI,EAAM+tI,mCAE5CjtI,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,WACLqoC,UAAWi7F,GACXvxF,SAAU7gD,EAAM63C,KAChBt6B,SAAUvd,EAAMud,SAChBS,iBAAkBhe,EAAMge,iBACxB7B,qBAAsBA,EACtB41H,8BAA+B/xI,EAAM+xI,8BACrCzB,gBAAiBtwI,EAAMswI,gBACvBvC,iCAAkC/tI,EAAM+tI,iCACxCn7E,MAAO5yD,EAAM4yD,YC1DxB26B,GAAY,kBAOnB8kD,GAAuB5hG,GAAS,qCAEhC6hG,GAAmBnxI,IAAMizC,KAAK,SAACp0C,GACjC,OACIc,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG4yB,GAAI,EAAG91C,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO,CAACoJ,QAAS,SAC5DtJ,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWnD,GACXntC,MAAM,YACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAACi6F,GAAsB7gG,IACjCf,UAAQ,QAObsH,gBAAoB,CAAEF,KAAM01C,IAA5Bx1C,CAAyCu6F,ICrBlDC,GAAiBpxI,IAAMizC,KAAK,SAACp0C,GAAiB,IACxCwmF,EAAkBxmF,EAAlBwmF,IAAKj+E,EAAavI,EAAbuI,SACb,OACIzH,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIlyB,IAAK8sF,EAAInrE,GACThT,MAAOm+E,EAAI9nE,aAAe8nE,EAAIn+E,OAASm+E,EAAI/e,SAC3Cz/C,QACIlnB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ5lC,MAAM,UAAU3I,MAAO0I,GAAO8oI,UAAW95I,KAAM8tF,EAAI/nE,WAAY09B,OAAO,UACzE5zC,GACGzH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACwyF,GAAD,CAAcvyF,MAAO0I,GAAOuc,OAC5BnlB,EAAAhP,EAAAiP,cAAA,YAAOylF,EAAIn+E,aASjCqB,GAAiD,CACnD8oI,UAAW,CACP9jI,SAAU,KAEduX,KAAM,CACFtc,MAAO9D,GAAQC,KAAKY,UAExBY,KAAM,CACFqhD,eAAgB,OAChBt6C,cAAe,OACf1E,MAAO9D,GAAQiB,KAAKC,QACpBkF,WAAY,MACZksE,SAAU,SACVuB,WAAY,SACZ+4D,aAAc,aAIPF,MCpCT7oI,GAA2C,CAC7C4oE,KAAM,CACFplE,QAAS,eACT6D,aAAc,EACd3G,QAAS,eACTM,SAAU,GACVf,MAAO9D,GAAQC,KAAKE,MACpBqI,cAAe,aAEnBxG,KAAM,CACF2G,gBAAiB3I,GAAQgC,KAAKd,SAElCe,OAAQ,CACJ0G,gBAAiB3I,GAAQiC,OAAOf,SAEpCgB,OAAQ,CACJyG,gBAAiB3I,GAAQkC,OAAOhB,SAEpCiB,SAAU,CACNwG,gBAAiB3I,GAAQmC,SAASjB,QAClC4C,MAAO9D,GAAQmC,SAASxB,OAIjB0D,QAAWR,GAAXQ,CA/BO,SAAClK,GAAiB,IAC5B0yI,EAAwB1yI,EAAxB0yI,MAD4BriG,EACJrwC,EAAjBoI,eADqB,IAAAioC,EACX,GADWA,EAEpC,OACIvvC,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQkqE,KAAb,KAAAn7E,OAAqBiR,EAAQsqI,KAAWA,+CCsDxDhpI,GAAiD,CACnD4C,MAAO,CACHG,aAAc,IAElBZ,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKE,MACpBwI,gBAAiB3I,GAAQiB,KAAKC,QAC9BkD,UAAW,GACX8G,aAAc,cACd7D,QAAS,OACTuC,eAAgB,aAChBtL,OAAQ,IAEZwuI,eAAgB,CACZnkI,gBAAiB3I,GAAQ2B,MAAMT,SAEnC6rI,eAAgB,CACZjpI,MAAO9D,GAAQC,KAAKE,MACpBwI,gBAAiB3I,GAAQiC,OAAOf,QAChCkD,UAAW,GACX8G,aAAc,cACd7D,QAAS,OACTuC,eAAgB,cAEpB4jG,aAAc,CACVrmG,YAAa,GACb1B,aAAc,GACdjB,WAAY,GACZ+E,WAAY,GACZrB,UAAW,UAEfqtE,QAAS,CACLC,QAAS,GACTl3E,OAAQ,GACR6H,MAAO,IAGX0F,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACP3B,WAAY,IAEhBwoI,UAAW,CACP7lI,YAAa,GACb1B,aAAc,GACd8D,WAAY,IAEhB0jI,gBAAiB,CACb9lI,YAAa,KAIN+lI,GAlGQ,SAAmB34F,GACtC,OAAO,SAACp6C,GAAmC,IAAAtO,EACsFsO,EAArHgzI,EAD+BthJ,EAC/BshJ,aAActkF,EADiBh9D,EACjBg9D,SAAUukF,EADOvhJ,EACPuhJ,WAAY1+H,EADL7iB,EACK6iB,SAAUwtE,EADfrwF,EACeqwF,OAAQmxD,EADvBxhJ,EACuBwhJ,oBAAgDn/D,GADvEriF,EAC4CyhJ,uBAD5CxhJ,OAAAgX,GAAA,EAAAhX,CAAAD,EAAA,8GAEjC2W,EAAQqmD,EAAWskF,GAAgB,WAAa,cAChDI,EAAgB1kF,EAAWhlD,GAAOipI,oBAAiB38I,EACnDq9I,EAAY3kF,EAAW4kF,KAAyBC,KAEtD,OACIzyI,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OAChBiI,EACGzT,EAAAhP,EAAAiP,cAAA,OAAKC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOkpI,iBACnB7wD,EACGjhF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAEAJ,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,QAAMC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO2pG,eAAzB,wCAGAvyG,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAO6qI,GAAuB,GAC9BlrH,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,WAQxC5Q,EAAAhP,EAAAiP,cAACwpF,GAAA,EAAD,CAAYpzC,UAAU,MAAMn2C,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOmC,OAAWunI,GAAiB9pI,QAAS2pI,EAAY1+H,SAAUA,GACtGzT,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQywD,MAAI,GACR1yI,EAAAhP,EAAAiP,cAAA,QAAMC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOmpI,UAAcnpI,GAAOopI,kBAAmBhyI,EAAAhP,EAAAiP,cAACsyI,EAAD,CAAW1pI,MAAM,cAEtF7I,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQ+kB,QAAM,GACVhnG,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmpI,WAAW/xI,EAAAhP,EAAAiP,cAACsyI,EAAD,CAAW1pI,MAAM,cAEpD7I,EAAAhP,EAAAiP,cAAA,YAAOsH,IAGfvH,EAAAhP,EAAAiP,cAACq5C,EAAc25B,iBCjDlBwZ,GAAY,2BA8CzB,IAAIkmD,GAAe,KAUb7iG,GAAwBH,GAAS,2BAoFjC/mC,GAAiD,CACnDmuC,KAAM,CACF7tC,cAAe,IAChB0H,KAAM,CACLhH,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExB6wB,cAAe,CACXrqB,YAAa,KAKN+qC,gBAAoC,CAAEF,KAAM01C,IAA5Cx1C,CAhGe,SAAC/3C,GAAiB,IAAAs0C,EAClBnzC,IAAMozC,SAAS,IADGC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GACrCo/F,EADqCl/F,EAAA,GAC9Bm/F,EAD8Bn/F,EAAA,GAAA0qC,EAEjB/9E,IAAMozC,SAAS,KAFE4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAErC00D,EAFqCz0D,EAAA,GAE3B00D,EAF2B10D,EAAA,GAAAG,EAGXn+E,IAAMozC,SAASv0C,EAAM44C,cAAck7F,kBAAoB9zI,EAAM44C,cAAck7F,kBAAoB,GAHpFv0D,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAGrCy0D,EAHqCx0D,EAAA,GAGvBy0D,EAHuBz0D,EAAA,GAK5Cp+E,IAAMq9C,UAAU,WACZ,IAAIy1F,EAAoB,GACpBj0I,EAAMk0I,aACND,EAAUj0I,EAAMk0I,aACTl0I,EAAMm0I,iBAAmBn0I,EAAMo0I,kBAA+C,MAA1Bp0I,EAAMq0I,mBACjEJ,EAjCZ,SAA2Bnf,EAAa9wH,EAAaswI,GAEjD,IADA,IAAIC,EAAsB,GACjB90H,EAAIq1G,EAAKr1G,GAAKzb,GACnBuwI,EAAU9zH,KAAKhB,GACfA,GAAQ60H,EAKZ,OAHgC,IAA5BC,EAAUt4I,QAAQ+H,IAClBuwI,EAAU9zH,KAAKzc,GAEZuwI,EAwBWC,CAAkBx0I,EAAMq0I,iBAAkBr0I,EAAMo0I,iBAAkBp0I,EAAMm0I,kBAGtF,IAAIM,EArDZ,SAAoBnjH,GAChB,IAAIoiH,EAAgB,GACdgB,EAAWpjH,EAAMn+B,QAAU,GAC7BuM,EAAQ,EACRsE,EAAMstB,EAAMn+B,OAAS,EACrBwhJ,EAAW5wI,KAAKynB,MAAMxnB,EAAM,GAUhC,OATAstB,EAAM1V,QAAQ,SAAC4N,GACX,GAAIkrH,GAAsB,IAAVh1I,GAAeA,IAAUsE,GAAOtE,IAAUi1I,EAAU,CAChE,IAAI9tI,EAAQ4rD,GAA4BjpC,GACxCkqH,EAAMjzH,KAAK,CAAE9mB,MAAO6vB,EAAK3iB,eAEzB6sI,EAAMjzH,KAAK,CAAE9mB,MAAO6vB,IAExB9pB,MAEGg0I,EAsCOkB,CAAWX,QAELj+I,IAAZi+I,GAA2C,GAAlBA,EAAQ9gJ,OAC7B6M,EAAMo0I,iBACNP,EAAO7zI,EAAMo0I,kBAGbP,EAAO,GAIXA,EAAO9vI,KAAKC,IAALrR,MAAAoR,KAAIpS,OAAAgO,EAAA,EAAAhO,CAAQsiJ,KAGvBN,EAASc,IACV,CAACz0I,EAAMm0I,gBAAiBn0I,EAAMq0I,iBAAkBr0I,EAAMo0I,iBAAkBp0I,EAAMk0I,eAgBjF,OACIpzI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmuC,MAA1B,wDACA/2C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO,CAAEoJ,QAAS,SAC1CtJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAEXlrB,EAAAhP,EAAAiP,cAAC8zI,GAAA,EAAD,CACIC,kBAAgB,kBAChBC,iBArBpB,SAA0Bp7I,GACtB,OAAO84D,GAA4B94D,IAqBnBq7I,kBAAkB,OAClBtB,MAAOA,EACP1vI,IAAK4vI,EACLz4C,KAAM,KACNhlD,SAtBM,SAAC3uB,EAAY6P,GACnC28G,EAAS38G,GACTr3B,EAAM4gD,OAAO,oBAAqBvpB,GAE9Br3B,EAAMi1I,yBAjDQ,SAAC59G,EAAuB49G,GAC9B,OAAZxB,IACAnhJ,aAAamhJ,IAEjBA,GAAUjhJ,WAAW,WACjByiJ,EAAwB59G,IACzB,KA4CK69G,CAAkB79G,EAAer3B,EAAMi1I,0BAkB3Bt7I,MAAOo6I,EACPx/H,SAAUvU,EAAMm1I,iBAGxBr0I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAO0I,GAAO2tB,eAC5Bv2B,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oBACLqoC,UAAWnD,GACX/kB,OAAQijC,GACRrrD,MAAM,iBACNrV,QAAQ,WACRi/C,UAAQ,EACRuF,YAAY,SACZ6I,KAAMjO,GACNr8B,UAAQ,UCtG9B6gI,eAIF,SAAAA,EAAYp1I,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAwiJ,IACtBx7I,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAyjJ,GAAAj1I,KAAAvN,KAAMoN,KAJV2hF,QAAU3+C,KAGgBppC,EAF1By7I,mBAAqBl4H,GAAY,cAAeC,GAAgB1Z,UAEtC9J,EAD1B07I,kBAAoBn4H,GAAY,gBAAiBC,GAAgB1Z,UACvC9J,EAK1B27I,OAAS,SAACv5H,GAAiB,OAAOyoB,GAAiB,YAAYjlB,KAAK,SAAAyS,GAAM,OAAIA,EAAO5W,KAAOW,EAAKgC,oBALvEpkB,EAM1B47I,aAAe,SAACx5H,GAAiB,OAAOyoB,GAAiB,kBAAkBjlB,KAAK,SAAAyS,GAAM,OAAIA,EAAO5W,KAAOW,EAAKgC,oBANnFpkB,EAU1B67I,UAAY77I,EAAKoG,MAAM01I,gCAAkC97I,EAAKoG,MAAM01I,+BAA+B5B,kBAC7Fl6I,EAAKoG,MAAM01I,+BAA+B5B,kBAC1C,EAZoBl6I,EAc1B+7I,iBAAmB/7I,EAAKoG,MAAMgc,KAAKuJ,sBAAwBpI,GAAY,aAAcC,GAAgBoI,mBAd3E5rB,EAe1Bg8I,uBAAyBh8I,EAAKoG,MAAMgc,KAAKuJ,sBAAwBpI,GAAY,mBAAoBC,GAAgBoI,mBAfvF5rB,EAiB1Bi8I,aAAeniI,aAAW,SAACsI,EAAYk9G,GACnC,IAAMzpD,EAAqB,GACrBplC,EAAQruB,EAAKgC,kBAAoBb,GAAY,MAAOC,GAAgBuO,gBACpE2e,EAAQtuB,EAAKgC,kBAAoBb,GAAY,MAAOC,GAAgBuO,gBAEpEmqH,EAAqBl8I,EAAKg8I,wBAA0B55H,QAA8BhmB,GAAtBgmB,EAAKqb,cAAkD,IAArBrb,EAAKqb,cAAsB,EACzH0+G,GAA4B1rG,GAASC,IAAU1wC,EAAKg8I,wBAA0B55H,EAAKo8C,wCAmCzF,OAjCAqX,EAAShvD,KAAK,CACV3R,KAAM,iBACNnV,MAAOC,EAAK+7I,iBACRzqH,GAAelP,EAAKqb,eACnBz9B,EAAK67I,UAAY,EACbM,EAA2BD,EAAqB,cAAgB5qH,GAAetxB,EAAK67I,WAAa,oBAAsBvqH,GAAetxB,EAAK67I,WAC3Ivc,GAAQA,EAAK7hG,cAAiB0+G,EAA2BD,EAAqB,eAAiB5qH,GAAeguG,EAAK7hG,eAAiB,qBAAuBnM,GAAeguG,EAAK7hG,oBAC1KrhC,IAMd4D,EAAK27I,OAAOv5H,GACZyzD,EAAShvD,KAAK,CACV3R,KAAM,mBACNnV,MAAOuxB,GAAelP,EAAKm8C,yBAExBv+D,EAAK47I,aAAax5H,KACzByzD,EAAShvD,KAAK,CACV3R,KAAM,SACNnV,MAAQqiB,EAAK08C,UAAY9+D,EAAK+nF,QAAQ3lE,EAAK08C,UAAU/+D,OAAU,OAEnE81E,EAAShvD,KAAK,CACV3R,KAAM,WACNnV,MAAOqiB,EAAKi0D,iBAAmB,OAEnCR,EAAShvD,KAAK,CACV3R,KAAM,qBACNnV,MAAOqiB,EAAKk0D,mBAAqB,QAIlCT,IA1De71E,EA6D1Bo8I,cAAgBtiI,aAAW,SAACsI,GACxB,IAAMyzD,EAAqB,GA4B3B,OA1BK71E,EAAK+7I,mBACNlmE,EAAShvD,KAAK,CACV3R,KAAM,UACNnV,MAAOuxB,GAAelP,EAAK+7C,kBAG3Bn+D,EAAK47I,aAAax5H,IAClByzD,EAAShvD,KAAK,CACV3R,KAAM,UACNnV,MAAOuxB,GAAelP,EAAKi8C,mBAKnCr+D,EAAK27I,OAAOv5H,IACZyzD,EAAShvD,KAAK,CACV3R,KAAM,OACNnV,MAAOqiB,EAAKm0D,eAAiB,OAIrCV,EAAShvD,KAAK,CACV3R,KAAM,QACNnV,MAAOqiB,EAAKo0D,cAAgB,OAGzBX,IA1Fe71E,EA6F1Bq8I,WAAaviI,aAAW,SAACsI,EAAYq5H,GACjC,OAAOr5H,EAAKkC,UAAUnC,KAAK,SAAAyqE,GAAG,OAAIA,EAAIpoE,SAAWi3H,MA9F3Bz7I,EAiG1Bs8I,UAAYxiI,aAAW,SAACsI,EAAYs5H,GAChC,OAAOt5H,EAAKkC,UAAUpe,OAAO,SAAA0mF,GAAG,OAAIA,EAAIpoE,SAAWk3H,MAlG7B17I,EAqG1Bu8I,uBAAyB,SAACn/G,GAClBp9B,EAAKoG,MAAMm2I,yBACXv8I,EAAKoG,MAAMm2I,uBAAuBv8I,EAAKoG,MAAMgc,KAAKX,GAAI2b,GACtDp9B,EAAK67I,UAAYz+G,IAtGrBp9B,EAAK+G,MAAQ,GAFS/G,wEA6GjB,IAAAsO,EACuCtV,KAAKoN,MAAzCgc,EADH9T,EACG8T,KAAMk9G,EADThxH,EACSgxH,KAAMltH,EADf9D,EACe8D,MADf7D,EAAAD,EACsBE,eADtB,IAAAD,EACgC,GADhCA,EAECm3B,EAAUtjB,EAAKoc,YACf2H,EAAantC,KAAK+uF,QAAQ3lE,EAAKmzD,cAAgBv8E,KAAK+uF,QAAQ3lE,EAAKmzD,cAAcx1E,WAAQ3D,EACvFigJ,EAAarjJ,KAAKqjJ,WAAWrjJ,KAAKoN,MAAMgc,KAAMppB,KAAKyiJ,oBACnDa,EAAYtjJ,KAAKsjJ,UAAUtjJ,KAAKoN,MAAMgc,KAAMppB,KAAK0iJ,mBACjDrtH,EAAmB,OAAVjc,EACToqI,EAAOvqH,GAAgB7P,EAAKgC,iBAAkBhC,EAAK8P,YAAa7D,GAChE2xG,EAAmBhnI,KAAKoN,MAAMyT,gBAAgBI,iBAC9CgmH,EAAmBjnI,KAAKoN,MAAMyT,gBAAgBK,iBAC9CuiI,EAAgBzc,GAAoBC,EACpCyc,EAAiB,4FAKvB,OAHIpd,GAAgC,OAAvBA,EAAK7hG,oBAAiDrhC,IAAvBkjI,EAAK7hG,gBAC7C6hG,EAAK7hG,cAAgB93B,OAAO3M,KAAK6iJ,YAGjC30I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAYof,EAAgC7f,EAAQmuI,mBAA/BnuI,EAAQouI,cAC9B11I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQgwB,aAAckH,GACtCx+B,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQwhE,UAAW5tD,EAAKjJ,mBACrCgtB,GAAcj/B,EAAAhP,EAAAiP,cAAC01I,GAAD,CAAe/D,MAAO3yG,EAAW7a,iBAErDkxH,GAELt1I,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQsuI,gBACpB51I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,IACTlW,KAAKoN,MAAM0gB,UAAY9tB,KAAKoN,MAAM01I,gCAAkC9iJ,KAAKoN,MAAMgc,KAAKuJ,sBAAwBmvC,GAAsBmE,UAGhI/3D,EAAAhP,EAAAiP,cAAC41I,GAAD,CACI/9F,cAAehmD,KAAKoN,MAAM01I,+BAC1BT,wBAAyBriJ,KAAKujJ,uBAC9B9B,iBAAkBzhJ,KAAKoN,MAAMgc,KAAK+7C,eAClCq8E,iBAAkBxhJ,KAAKoN,MAAMgc,KAAKm8C,sBAC9BvlE,KAAKoN,MAAMgc,KAAKm8C,sBAAwBvlE,KAAKoN,MAAMgc,KAAKi8C,eAC5Dk8E,gBAAiBvhJ,KAAKoN,MAAMgc,KAAKqb,cACjC89G,eAAgBviJ,KAAKoN,MAAM42I,oBAE7B5gJ,EAELpD,KAAKijJ,aAAajjJ,KAAKoN,MAAMgc,KAAMk9G,GAAM9lI,IAAI,SAACgxE,EAAK1kE,GAAN,OAC1CoB,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAK0qE,EAAIt1D,MACrBhO,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,EAAGv3C,UAAWT,EAAQyuI,aAAczyE,EAAIt1D,MAC9DhO,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,EAAGv3C,UAAWT,EAAQ0uI,cAAe1yE,EAAIzqE,QAC7DsuB,IAAWvoB,EAAQ,GAAK,IAAM,IAAMoB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAIlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,YAKzEz7C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOgtI,kBACZ16H,EAAKs0D,OACJxvE,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMC,GAAI,GAAGlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO4mE,OAA1B,WACbxvE,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMC,GAAI,IAAIlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO4mE,OAAQt0D,EAAKs0D,SAEzDxvE,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,QAIX05F,GAAcn1I,EAAAhP,EAAAiP,cAACg2I,GAAD,CAAgBvwD,IAAKyvD,GAArB,sBAEnBn1I,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQ4uI,qBAAb,KAAA7/I,OAAqC8wB,EAAS7f,EAAQ6uI,2BAA6B,KAC7Fn2I,EAAAhP,EAAAiP,cAAC8oF,GAAA,EAAD,CAAgBqtD,UAAU,EAAO52F,UAAW,EAAGz3C,UAAWT,EAAQmK,aAC9DzR,EAAAhP,EAAAiP,cAACopF,GAAA,EAAD,CAAuBthF,UAAWT,EAAQ+uI,gBACtCr2I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWT,EAAQgvI,cAArC,WACAt2I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWT,EAAQgvI,cAArC,WACAt2I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAIlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAClB3pD,KAAKojJ,cAAcpjJ,KAAKoN,MAAMgc,MAAM5oB,IAAI,SAAAgxE,GAAG,OACxCtjE,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAK0qE,EAAIt1D,MACrBhO,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWT,EAAQivI,iBAAkBjzE,EAAIt1D,MAC3DhO,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGnjB,UAAWT,EAAQivI,iBAAkBjzE,EAAIzqE,OAC3DmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAIlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,WAI9B25F,EAAU/iJ,OAAS,GAChB2N,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQkvI,oBACpBx2I,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,aAApB,mBACC0kJ,EAAU9iJ,IAAI,SAAAozF,GAAG,OACd1lF,EAAAhP,EAAAiP,cAACg2I,GAAD,CAAgBvwD,IAAKA,SAMxC6vD,IACInd,GAAQA,EAAKv/D,QACV74D,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ+C,YACpBrK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,8BAAwBnO,KAAKoN,MAAMq3D,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMq3D,gBAAiB19D,MAAQ,mBACrGmH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQwoB,MAAxB,GAAAz5B,OAAkC+zB,GAAeguG,EAAK5oH,iBAE1DxP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,oCAA8BnO,KAAKoN,MAAMq3D,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMq3D,gBAAiB19D,MAAQ,mBAC3GmH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQwoB,MAAxB,GAAAz5B,OAAkC+zB,GAAeguG,EAAK1oH,mBAKlE1P,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ+C,YACpBrK,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQwK,QAAxB,oBAAiD9R,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOiuI,EAAgBtuH,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,iBAIrIsqI,GAAiBzc,IACdV,GAAQA,EAAKv/D,QACV74D,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ+C,YACpBrK,EAAAhP,EAAAiP,cAAA,8BAAwBnO,KAAKoN,MAAMq3D,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMq3D,gBAAiB19D,MAAQ,mBACrGmH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQwoB,MAAxB,GAAAz5B,OAAkC+zB,GAAeguG,EAAK5oH,iBAG1DxP,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ+C,YACpBrK,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQwK,QAAxB,oBAAiD9R,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOiuI,EAAgBtuH,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,iBAIrIsqI,GAAiBxc,IACdX,GAAQA,EAAKv/D,QACV74D,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ+C,YACpBrK,EAAAhP,EAAAiP,cAAA,oCAA8BnO,KAAKoN,MAAMq3D,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMq3D,gBAAiB19D,MAAQ,mBAC3GmH,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQwoB,MAAxB,GAAAz5B,OAAkC+zB,GAAeguG,EAAK1oH,iBAG1D1P,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ+C,YACpBrK,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQwK,QAAxB,oBAAiD9R,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOiuI,EAAgBtuH,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,yBAnP7G5K,IAAMC,eA6P9CsI,GAA2C,CAC7CmtI,YAAa,CACTnsI,SAAU,GACVN,QAAS,SACTT,MAAO9D,GAAQC,KAAKU,MAExBswI,aAAc,CACV1sI,QAAS,mBACTM,SAAU,GACVzJ,UAAW,SAEfm2I,aAAc,CACV1sI,SAAU,GACVV,cAAe,GACfL,MAAO9D,GAAQC,KAAKO,aAExB8wI,eAAgB,CACZ/sI,QAAS,EACTT,MAAO9D,GAAQC,KAAKY,SACpB8H,gBAAiB3I,GAAQC,KAAKG,OAC9ByE,SAAU,GACVwC,QAAS,SAEbwpI,eAAgB,CACZ5sI,UAAW,IAEfsuB,YAAa,CACTzuB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,GACV2D,cAAe,aAEnBlD,WAAY,CACRlK,UAAW,SACXoN,cAAe,YACf3D,SAAU,GACVL,WAAY,IAEhBgtI,gBAAiB,CACbjtI,QAAS,UAEb4sI,qBAAsB,CAClB5sI,QAAS,qBACToE,gBAAiB3I,GAAQC,KAAKG,OAC9B0D,MAAO9D,GAAQC,KAAKU,MAExBywI,2BAA4B,CACxB7sI,QAAS,sBAEbkmE,MAAO,CACH5lE,SAAU,GACVN,QAAS,sBACTT,MAAO9D,GAAQC,KAAKU,KACpB2xE,SAAU,SACVnrE,YAAa,GAEjB4F,OAAQ,CACJ/H,OAAQ,SACRF,WAAY,IACZD,SAAU,IAEd4sI,mBAAoB,CAChBxtI,UAAW,IAEf8/D,SAAU,CACNjgE,MAAO9D,GAAQC,KAAKY,SACpBgE,SAAU,GACVC,WAAY,IACZ0D,cAAe,aACfxD,OAAQ,QACR0sI,aAAc,cAElB3mH,KAAM,CACF/lB,OAAQ,SACRF,WAAY,IACZD,SAAU,IAEd8rI,aAAc,CACVpsI,QAAS,mBACToE,gBAAiB3I,GAAQC,KAAKE,OAElCuwI,mBAAoB,CAChBnsI,QAAS,qBAIJotI,GAAiCttI,KAAWR,GAAXQ,CAAmBkrI,IAElDrtH,kBACX7d,KAAWR,GAAXQ,CACI6oI,GACIqC,MC7WNqC,eACF,SAAAA,EAAYz3I,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA6kJ,IACtB79I,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA8lJ,GAAAt3I,KAAAvN,KAAMoN,KAOV03I,eAAiB,SAAClwH,GACd5tB,EAAK4G,SAAS,CAAEy4C,SAAUzxB,EAAMmyB,iBATV//C,EAY1B+9I,gBAAkB,WACd/9I,EAAK4G,SAAS,CAAEy4C,cAAUjjD,KAV1B4D,EAAK+G,MAAQ,CACTs4C,cAAUjjD,GAJQ4D,wEAgBjB,IAAAsO,EAC4BtV,KAAKoN,MAA9Bke,EADHhW,EACGgW,UAAcvmB,EADjBhG,OAAAgX,GAAA,EAAAhX,CAAAuW,EAAA,eAEG+wC,EAAarmD,KAAK+N,MAAlBs4C,SACJ2+F,EAAa92I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAW53C,GAM7B,OALyB,IAArBumB,EAAU/qB,OACVykJ,EAAa92I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD59C,OAAAoM,OAAA,CAAQo5C,UAAW,IAAYz+C,KAAMwlB,EAAU,GAAGO,WAAY09B,OAAO,SAASC,IAAI,uBAA0BzkD,IACpHumB,EAAU/qB,OAAS,IACxBykJ,EAAa92I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD59C,OAAAoM,OAAA,CAAQuL,QAAS1W,KAAK8kJ,gBAAoB//I,KAGvDmJ,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACK02I,EACD92I,EAAAhP,EAAAiP,cAACi5C,GAAA,EAAD,CACIf,SAAUA,EACV1mD,KAAM6M,QAAQ65C,GACd3wC,QAAS1V,KAAK+kJ,iBAEbz5H,EAAU9qB,IAAI,SAAAozF,GAAG,OACd1lF,EAAAhP,EAAAiP,cAAA,KAAGrH,IAAK8sF,EAAInrE,GAAI3iB,KAAM8tF,EAAI/nE,WAAY09B,OAAO,SAASC,IAAI,sBAAsBp7C,MAAO0I,GAAOpC,MAC1FxG,EAAAhP,EAAAiP,cAACm5C,GAAA,EAAD,KAAWssC,EAAIn+E,OAASm+E,EAAI/nE,wBApCjCtd,IAAMC,eA6CvBsI,GAAiD,CACnDpC,KAAM,CACFqhD,eAAgB,SAIT8uF,MChDTI,GAAUnkI,aAAW,SAACwK,EAAuB+T,GAAxB,OAAwC/T,EAAUpe,OAAO,SAAC0mF,GAAD,OAAcA,EAAIpoE,SAAW6T,MAE3G6lH,GAAepkI,aAAW,SAAC+7D,EAAqBsoE,GAClD,OAAOA,EACFj4I,OAAO,SAAAk4I,GAAE,OAAIvoE,EAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcsqE,EAAG38H,OACnDjoB,IAAI,SAAA4kJ,GAAE,MAAK,CACRlpI,KAAMkpI,EAAGr+I,MACTg0E,gBAAiB8B,EAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcsqE,EAAG38H,KAAKsyD,gBAAkB8B,EAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcsqE,EAAG38H,KAAKsyD,gBAAkB,KAC3IC,mBAAoB6B,EAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcsqE,EAAG38H,KAAKuyD,mBAAqB6B,EAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcsqE,EAAG38H,KAAKuyD,mBAAqB,UAI1JqqE,GAAc,SAAChwH,GAAwC,IAAvB5f,EAAuBxV,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAP,GAClD,OAAIo1B,GAAU5f,EAAMlV,OAAS,GACzB,GAAAgE,OAAUkR,EAAMnM,MAAM,EAAG,IAAzB,OAEOmM,GA4CT6vI,GAAkB,SAACl4I,EAAcm4I,EAA2B1oE,GAI1D,IAAA2oE,EACqBp4I,EAAjBoI,eADJ,IAAAgwI,EACc,GADdA,EAEJ,OACIt3I,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQiwI,wBACpBv3I,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQ+kB,QAAM,GACVhnG,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAO7iD,QAAQ,YACXtJ,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACKirF,EACGr3I,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUtkD,UAAWT,EAAQkwI,UACzBx3I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQyuI,YAAb,KAAA1/I,OAA4BiR,EAAQmwI,cAAxD,WACAz3I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQyuI,aAA9B,WAGJ/1I,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUtkD,UAAWT,EAAQkwI,UACzBx3I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQyuI,YAAb,KAAA1/I,OAA4BiR,EAAQmwI,cAAxD,WACAz3I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQyuI,aAA9B,cACA/1I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQyuI,aAA9B,oBAIZ/1I,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKoiB,EAASr8E,IAAI,SAAAuiE,GAAO,OACjB70D,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUtkD,UAAWT,EAAQkwI,SAAU5+I,IAAKi8D,EAAQ7mD,MAChDhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAWT,EAAQmwI,aAAc5iF,EAAQ7mD,MACpDhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAYuI,EAAQgY,kBAClBwqE,GAAoBr3I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAYuI,EAAQiY,0BAM9D9sE,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQywD,MAAI,GACR1yI,EAAAhP,EAAAiP,cAAA,KAAG8H,UAAWT,EAAQyuI,aAAtB,yCAGA/1I,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,MACCkzB,EAASr8E,IAAI,SAAAgxE,GAAG,OACbtjE,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAK0qE,EAAIt1D,MACVhO,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACD,UAAWT,EAAQowI,kBAC/B13I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAIlrB,EAAAhP,EAAAiP,cAAA,cAASqjE,EAAIt1D,OAChChO,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo4C,EAAIuJ,kBACrBwqE,GAAoBr3I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo4C,EAAIwJ,qBAEjD9sE,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,YAQlB7yC,GAA2C,CAC7CytI,eAAgB,CACZtsI,OAAQ,gBACRT,QAAS,OAEbquI,qBAAsB,CAClB5tI,OAAQ,gBACRT,QAAS,QAEbysI,YAAa,CACTnsI,SAAU,GACVf,MAAO9D,GAAQC,KAAKO,YACpBqzE,WAAY,UAEhB2+D,uBAAwB,CACpB1+D,UAAW,OACX3tE,MAAO,QAEXwmI,UAAW,CACP9jI,SAAU,KAEdgqI,aAAc,CACV5uI,UAAW,GACXM,QAAS,EACT8C,QAAS,SAEbqF,YAAa,CACT5I,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACV8D,gBAAiB3I,GAAQC,KAAKG,OAC9BoI,cAAe,QAEnB4X,KAAM,CACFtc,MAAO9D,GAAQC,KAAKY,UAExB6xI,YAAa,CACTvrI,YAAa,QAEjB2rI,aAAc,CACV3rI,YAAa,QAEjB1F,KAAM,CACFqhD,eAAgB,OAChBt6C,cAAe,OACf1E,MAAO9D,GAAQiB,KAAKC,QACpBkF,WAAY,MACZksE,SAAU,SACVuB,WAAY,SACZ+4D,aAAc,YAElBmG,mBAAoB,CAChB3sI,YAAa,IAEjBusI,iBAAkB,CACd7uI,MAAO9D,GAAQC,KAAKY,SACpB0D,QAAS,EACTgF,WAAY,KAEhBypI,UAAW,CACPzuI,QAAS,GAEbkuI,SAAU,CACNn0I,OAAQ,QAEZ20I,YAAa,CACT5rI,QAAS,SAIF6a,kBAAY7d,KAAWR,GAAXQ,CApKJ,SAAClK,GAAiB,IAAAqwC,EAC2BrwC,EAAxDoI,eAD6B,IAAAioC,EACnB,GADmBA,EACf6mG,EAA0Cl3I,EAA1Ck3I,SAAUl7H,EAAgChc,EAAhCgc,KAAM+7H,EAA0B/3I,EAA1B+3I,eAAgB/rI,EAAUhM,EAAVgM,MAChD+sI,EAAkB57H,GAAY,gBAAiBC,GAAgB1Z,UAC/DwyI,EAAY2B,GAAQ77H,EAAKkC,UAAW66H,GACpCtpE,EAAWqoE,GAAa97H,EAAKyzD,SAAUsoE,GACvCzoE,EAAc/lC,GAAevpC,EAAMgc,KAAKgC,kBACxCg7H,EAAWzuG,GAAMvqC,EAAMgc,KAAKgC,kBAAoB,GAChDm6H,EAAmB7oE,GAAe0pE,EAClC/wH,EAAmB,OAAVjc,EACf,OACIlL,EAAAhP,EAAAiP,cAAC8oF,GAAA,EAAD,CAAgBqtD,SAAUA,EAAU52F,UAAW,EAAGz3C,UAAS,GAAA1R,OAAKiR,EAAQmK,YAAb,KAAApb,QAA6B8wB,GAAU7f,EAAQywI,YACtG/3I,EAAAhP,EAAAiP,cAACgpF,GAAA,EAAD,CAAuBlhF,UAAWT,EAAQ0wI,YAAaG,gBAAc,kBAAkB59H,GAAG,mBACzFo0D,EAASt8E,OAAS,EACf2N,EAAAhP,EAAAiP,cAACopF,GAAA,EAAD,CAAuBthF,UAAS,GAAA1R,OAAK8wB,EAAS7f,EAAQqwI,qBAAuBrwI,EAAQ+uI,iBAChFe,GAAgBl4I,EAAOm4I,EAAkB1oE,IACnB3uE,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAE9Bg1I,EAAU/iJ,OAAS,EAChB2N,EAAAhP,EAAAiP,cAACopF,GAAA,EAAD,CAAuBthF,UAAS,GAAA1R,OAAKiR,EAAQswI,aAAb,KAAAvhJ,OAA6B8wB,GAAU7f,EAAQwwI,qBAC3E93I,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYqX,UAAS,GAAA1R,OAAK8wB,GAAU7f,EAAQuwI,eAAhE,mBACCzC,EAAU9iJ,IAAI,SAAAozF,GAAG,OACd1lF,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIlyB,IAAK8sF,EAAInrE,GACThT,MAAOm+E,EAAI9nE,aAAe8nE,EAAIn+E,OAASm+E,EAAI/e,SAC3Cz/C,QACIlnB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ5lC,MAAM,UAAUd,UAAWT,EAAQoqI,WACvC1xI,EAAAhP,EAAAiP,cAACwyF,GAAD,CAAc1qF,UAAS,GAAA1R,OAAKiR,EAAQ6d,QACpCnlB,EAAAhP,EAAAiP,cAAA,KAAGrI,KAAM8tF,EAAI/nE,WAAY09B,OAAO,SAASC,IAAI,sBAAsBvzC,UAAS,GAAA1R,OAAKiR,EAAQd,OACrFxG,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAS,GAAA1R,OAAKiR,EAAQC,MAAb,MAAwB4vI,GAAYhwH,EAAQu+D,EAAIn+E,eAM5DvH,EAAAhP,EAAAiP,cAACopF,GAAA,EAAD,UCzC9B+uD,GAAb,SAAAjmE,GASQ,SAAAimE,EAAYl5I,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAsmJ,IAC1Bt/I,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAunJ,GAAA/4I,KAAAvN,KAAMoN,KATV2hF,QAAU3+C,KAQoBppC,EAP9Bu/I,cAAgBh8H,GAAY,cAAeC,GAAgB1Z,UAO7B9J,EAN9Bm/I,gBAAkB57H,GAAY,gBAAiBC,GAAgB1Z,UAMjC9J,EAL9Bw/I,2BAA6Bj8H,GAAY,uCAAwCC,GAAgBmiB,aAKnE3lC,EAJ9By/I,0BAA4Bl8H,GAAY,gCAAiCC,GAAgBmiB,aAI3D3lC,EAH9B0/I,oBAAsBn8H,GAAY,gBAAiBC,GAAgBmiB,aAGrC3lC,EAF9B2/I,iCAAmCp8H,GAAY,iCAAkCC,GAAgBmiB,aAEnE3lC,EAD9B4/I,sBAAwBr8H,GAAY,kBAAmBC,GAAgBmiB,aACzC3lC,EAQ9B6/I,SAAW/lI,aAAW,SAACwK,EAAuB+T,GAAxB,OAAwC/T,EAAUpe,OAAO,SAAC0mF,GAAD,OAAcA,EAAIpoE,SAAW6T,MAR9Er4B,EAU9Bk+I,aAAepkI,aAAW,SAACsI,GACvB,OAAOipB,KAAkBnlC,OAAO,SAAA45I,GAAE,OAAIA,EAAG92G,UAAU3mC,QAAQ+f,EAAKgC,mBAAqB,MAX3DpkB,EAc9B+/I,gBAAkBjmI,aAAW,SAACsI,GAC1B,IAAMk6H,EAAYt8I,EAAK6/I,SAASz9H,EAAKkC,UAAWtkB,EAAKm/I,iBACrD,OAAOn/I,EAAKk+I,aAAa97H,GAAMlc,OAAO,SAAA85I,GAAE,OAAIA,EAAG/sH,MAAQ,GAAK7Q,EAAKyzD,SAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcksE,EAAGv+H,OAAKloB,OAAS,GAAK+iJ,EAAU/iJ,OAAS,IAhBnHyG,EAmB9BigJ,sBAAwBnmI,aAAW,SAACsI,GAChC,IAEMyzD,EAFiB71E,EAAKk+I,aAAa97H,GAET5oB,IAAI,SAAA6+B,GAChC,IAAM0jC,EAAU35C,EAAKyzD,SAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcz7C,EAAO5W,KAC/D,MAAO,CACHvM,KAAMmjB,EAAOt4B,MACbg0E,gBAAiBhY,GAAWA,EAAQgY,gBAAkBhY,EAAQgY,qBAAkB33E,EAChF8jJ,SAAYnkF,EAAUA,EAAQ+X,WAAa,KAI7CqsE,EAAoBtqE,EAAS3vE,OAAO,SAAAR,GAAC,OAAIA,EAAEquE,kBAC3CqsE,EAAkBvqE,EAAS3vE,OAAO,SAAAR,GAAC,OAAKA,EAAEquE,kBAEhD,OAAOosE,EACF5iJ,OAAO6iJ,GACP99I,MAAM,EAAG,GACT9I,IAAI,SAAAkM,GAAC,MAAK,CACPwP,KAAMxP,EAAEwP,KACRnV,MAAO2F,EAAEquE,gBAAkBruE,EAAEquE,gBAAkB,KAC/CssE,gBAAiBrgJ,EAAKsgJ,gBAAgBl+H,EAAM1c,EAAEw6I,eAxC5BlgJ,EA4F9BugJ,cAAgB,kBAAMvgJ,EAAK4G,SAAS,SAAAmpD,GAAS,MAAK,CAAEutF,UAAWvtF,EAAUutF,aA5F3Ct9I,EA8F9BwgJ,kBAAoB1mI,aAAW,SAACwlH,GAC5B,IACM79G,GADgB69G,EAAOt/H,EAAK+nF,QAAQu3C,EAAKvnG,oBAAiB37B,GACrCsoB,SAAS46G,EAAKvnG,cAAe,KAAO,EAC/D,OAAOiS,GAAsBvoB,KAjGHzhB,EAoG9BygJ,iBAAmB,SAACnhB,GAChB,OAAOt/H,EAAKwgJ,kBAAkBlhB,IAlG9Bt/H,EAAK+G,MAAQ,CACTu2I,UAAU,GAJYt9I,EATlC,OAAAjI,OAAAiiF,EAAA,EAAAjiF,CAAAunJ,EAAAjmE,GAAAthF,OAAA8H,EAAA,EAAA9H,CAAAunJ,EAAA,EAAAx/I,IAAA,kBAAAC,MAAA,SAqDoBqiB,EAAY89H,GAAkB,IAAA1/I,EAAAxH,KACtC6iJ,EAAY,KACV9/E,EAAU35C,EAAKyzD,SAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcosE,IACxD,GAAInkF,GAAWA,EAAQgY,gBAAiB,CACpC8nE,EAAY9/E,EAAQgY,gBACpB,IAAM2sE,EAAyBR,IAAalnJ,KAAKwmJ,2BAC3CmB,EAAwBT,IAAalnJ,KAAKymJ,0BAC1CmB,EAAkBV,IAAalnJ,KAAK0mJ,oBACpCmB,EAA0BX,IAAalnJ,KAAK2mJ,kCAAoC3mJ,KAAK4mJ,sBAE3F,KAAKe,GAAyBC,GAAmBC,IAAiE,IAApCl7I,OAAOo2D,EAAQgY,kBAAsD,OAA5BhY,EAAQgY,gBAG1H,CACD,GAAI2sE,GACA1nJ,KAAKoN,MAAM06I,aACX9nJ,KAAKoN,MAAM06I,aAAe,IAC1B1+H,EAAKm9C,cAAe,CACpB,IAAIniC,EAASz3B,OAAOo2D,EAAQgY,iBACxB32C,IACAhb,EAAKm9C,cAAcv9C,QAAQ,SAAA++H,GACvB,GAAIvgJ,EAAK4F,MAAM06I,aACXC,EAAG3jH,QACH58B,EAAK4F,MAAM06I,aAAeC,EAAGxqH,QAC7B/1B,EAAK4F,MAAM06I,aAAeC,EAAGvqH,OAAQ,CACrC,IAAMQ,GAAQ,IAAM+pH,EAAG3jH,QAAU,IACjCA,GAAkBpG,KAI1B6kH,EAAYvqH,GAAe8L,KAG/ByjH,GAA2BH,IACvB/6I,OAAOo2D,EAAQgY,mBACf8nE,EAAYvqH,GAAe3rB,OAAOo2D,EAAQgY,wBAxBlD8nE,EAAY,KA8BpB,OAAOA,IA9Ff,CAAA/7I,IAAA,SAAAC,MAAA,WAkHa,IAAAuO,EACmCtV,KAAKoN,MAArCgc,EADH9T,EACG8T,KAAMk9G,EADThxH,EACSgxH,KAAM/gD,EADfjwE,EACeiwE,SAAUnsE,EADzB9D,EACyB8D,MACxBszB,EAAUtjB,EAAKoc,YACf2H,EAAantC,KAAK+uF,QAAQ3lE,EAAKmzD,cAAgBv8E,KAAK+uF,QAAQ3lE,EAAKmzD,cAAcx1E,WAAQ3D,EACvF4kJ,EAAeziE,EACf2gE,EAAclmJ,KAAK6mJ,SAASz9H,EAAKkC,UAAWtrB,KAAKumJ,eACjD0B,EAAoBjoJ,KAAKinJ,sBAAsB79H,GAC/CiM,EAAmB,OAAVjc,EACT2lB,EAAgBunG,EAAOtmI,KAAKynJ,iBAAiBnhB,QAAQljI,EACrD8kJ,EAAqBnpH,EAAgB,IAAMA,EAAcopH,YAAc,IAAM,GAC7E3E,EAAOvqH,GAAgB7P,EAAKgC,iBAAkBhC,EAAK8P,YAAa7D,GAChE2xG,EAAmBhnI,KAAKoN,MAAMyT,gBAAgBI,iBAC9CgmH,EAAmBjnI,KAAKoN,MAAMyT,gBAAgBK,iBAC9CuiI,EAAgBzc,GAAoBC,EACpCyc,EAAiB,4FAEvB,OACIx1I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,OAAKC,MAAQinB,EAA+Bve,GAAO6sI,mBAA7B7sI,GAAO8sI,cACzB11I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0uB,aAAckH,GACjCx+B,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOkgE,UAAW5tD,EAAKjJ,mBAChCgtB,GAAcj/B,EAAAhP,EAAAiP,cAAC01I,GAAD,CAAe/D,MAAO3yG,EAAW7a,iBAErDkxH,GAELt1I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO45I,EAAelxI,GAAO2uI,uBAAyB3uI,GAAOgtI,gBAC9D51I,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQ+kB,QAAM,GACVhnG,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOmtI,aAAcgE,EAAkB,GAAG/rI,MAC5DhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOotI,cAAe+D,EAAkB,GAAGZ,iBAC7Dn5I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOmtI,aAAcgE,EAAkB,GAAG/rI,MAC5DhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOotI,cAAe+D,EAAkB,GAAGZ,kBAEjEn5I,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOmtI,aAAcgE,EAAkB,GAAG/rI,MAC5DhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOotI,cAAe+D,EAAkB,GAAGZ,iBAC7Dn5I,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOmtI,aAAcgE,EAAkB,GAAG/rI,MAC5DhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOotI,cAAe+D,EAAkB,GAAGZ,qBAK7En5I,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQywD,MAAI,GACPqH,EAAkBznJ,IAAI,SAAAgxE,GAAG,OACtBtjE,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAK0qE,EAAIt1D,MACVhO,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAO8uI,kBAC1B13I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAO0I,GAAOmtI,aAAczyE,EAAIt1D,MAClDhO,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAO0I,GAAOsxI,WAAY52E,EAAI61E,kBAEpDn5I,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,WAKhBz7C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOgtI,kBACZ16H,EAAKs0D,OACJxvE,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMC,GAAI,GAAGlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO4mE,OAA1B,WACbxvE,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMC,GAAI,IAAIlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO4mE,OAAQt0D,EAAKs0D,SAEzDxvE,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,QAKXu8F,EAAY3lJ,OAAS,GAClB2N,EAAAhP,EAAAiP,cAACk6I,GAAD,CAAU/8H,UAAW46H,EAAanvI,MAAM,WAAxC,uBAKN0sI,GAAiBzc,GAAoBC,IAAqBjnI,KAAKsoJ,iBAC7Dp6I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAQinB,EAA8Bve,GAAOyxI,kBAA5BzxI,GAAO6I,aACzBzR,EAAAhP,EAAAiP,cAACq6I,GAAD,CAAgBp/H,KAAMA,EAAM+7H,eAAgBnlJ,KAAKklJ,aAAa97H,GAAOk7H,SAAUtkJ,KAAK+N,MAAMu2I,WACzFb,IACInd,GAAQA,EAAKv/D,QACV74D,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,8BAAwBnO,KAAKoN,MAAMq3D,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMq3D,gBAAiB19D,MAAQ,mBACrGmH,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,YAAO+5I,GACbh6I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOknB,MAAO1F,GAAeguG,EAAK5oH,gBAElDxP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,oCAA8BnO,KAAKoN,MAAMq3D,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMq3D,gBAAiB19D,MAAQ,mBAC3GmH,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,YAAO+5I,GACbh6I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOknB,MAAO1F,GAAeguG,EAAK1oH,kBAK1D1P,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOkJ,QAAnB,oBAA4C9R,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOiuI,EAAgBtuH,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,iBAIhIsqI,GAAiBzc,IACdV,GAAQA,EAAKv/D,QACV74D,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAAA,8BAAwBnO,KAAKoN,MAAMq3D,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMq3D,gBAAiB19D,MAAQ,mBACrGmH,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,YAAO+5I,GACbh6I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOknB,MAAO1F,GAAeguG,EAAK5oH,gBAGlDxP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOkJ,QAAnB,oBAA4C9R,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOiuI,EAAgBtuH,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,iBAIhIsqI,GAAiBxc,IACdX,GAAQA,EAAKv/D,QACV74D,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAAA,oCAA8BnO,KAAKoN,MAAMq3D,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMq3D,gBAAiB19D,MAAQ,mBAC3GmH,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,YAAO+5I,GACbh6I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOknB,MAAO1F,GAAeguG,EAAK1oH,gBAGlD1P,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOkJ,QAAnB,oBAA4C9R,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOiuI,EAAgBtuH,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,iBAIhInZ,KAAKsoJ,gBACHp6I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyB,YACfrK,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ5lC,MAAM,UAAUL,QAAS1W,KAAKunJ,eAAtC,QAA4DvnJ,KAAK+N,MAAMu2I,SAAW,OAAS,aAnP3H,CAAAx9I,IAAA,iBAAA8B,IAAA,WAkGQ,OAAO5I,KAAK+mJ,gBAAgB/mJ,KAAKoN,MAAMgc,UAlG/Ck9H,EAAA,CAA0C/3I,IAAMC,eA6P1CsI,GAAiD,CACnDmtI,YAAa,CACTnsI,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpB2xE,SAAU,SACVs6D,aAAc,WACdzlI,YAAa,GAEjB8pI,aAAc,CACVp9D,WAAY,SACZvB,SAAU,SACVs6D,aAAc,WACd/jI,SAAU,OACVpD,aAAc,IAElBorI,eAAgB,CACZ5sI,UAAW,GAEfsuB,YAAa,CACTzuB,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,GACV2D,cAAe,aAEnBgqI,uBAAwB,CACpB1+D,UAAW,OACX7vE,UAAW,GAEfqB,WAAY,CACRlK,UAAW,SACXoN,cAAe,YACf3D,SAAU,GACVL,WAAY,IAEhBkI,YAAa,CACTnI,QAAS,qBACTT,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACV8D,gBAAiB3I,GAAQC,KAAKG,QAElCk1I,kBAAmB,CACf/wI,QAAS,qBACTT,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACV8D,gBAAiB3I,GAAQC,KAAKG,QAElCuyI,iBAAkB,CACdnuI,WAAY,EACZL,cAAe,GAEnB4I,OAAQ,CACJ/H,OAAQ,SACRF,WAAY,IACZD,SAAU,IAEd4lE,MAAO,CACH5lE,SAAU,GACVN,QAAS,sBACTT,MAAO9D,GAAQC,KAAKU,KACpB2xE,SAAU,SACVnrE,YAAa,GAEjB48D,SAAU,CACNjgE,MAAO9D,GAAQC,KAAKY,SACpBgE,SAAU,GACVC,WAAY,IACZ0D,cAAe,aACfxD,OAAQ,QACR0sI,aAAc,cAElB3mH,KAAM,CACF/lB,OAAQ,SACRF,WAAY,IACZD,SAAU,IAEdswI,UAAW,CACP/5I,UAAW,QACXqK,aAAc,IAElBkrI,aAAc,CACVpsI,QAAS,mBACToE,gBAAiB3I,GAAQC,KAAKE,OAElCuwI,mBAAoB,CAChBnsI,QAAS,qBAKFixI,GADUtI,GAAehrH,eAAYmxH,eCjXvCoC,GAAkB,SAAC7/H,EAAe8/H,GAC3C,IAAMC,EAAmB//H,EAAM3b,OAAO,SAAA7O,GAAC,OAAIwqJ,GAAaxqJ,KAElDyqJ,EAAwBF,EAAiBz/H,KAAK,SAAA9qB,GAAC,OAA0B,IAAtBA,EAAE2+E,SAASz8E,SACpE,GAAIuoJ,EAEA,OAAOA,EAIP,IAAMC,EAAeH,EAAiBz/H,KAAK,SAAA9qB,GAAC,OAA0B,IAAtBA,EAAE2+E,SAASz8E,UAAiBqoJ,EAAiB,GAC7F,OAAIG,GAEOlgI,EAAMM,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOkgI,KAIrCE,GAAe,SAACz/H,GACzB,SAAQA,GAAQA,EAAK8zD,cAAgB9zD,EAAK8zD,aAAe,IAQhD8rE,GAA2B,SAAC5/H,GACrC,IAAM6/H,EANC1+H,GAAY,YAAaC,GAAgB6iB,gBAOhD,SAAQjkB,IAAQA,EAAK8zD,cAAgB9zD,EAAK8zD,eAAiB+rE,IAElDC,GAAmC,SAAC9/H,GAC7C,IAAM+/H,EAPC5+H,GAAY,YAAaC,GAAgB6iB,gBAQhD,SAAQjkB,IAAQA,EAAK8zD,cAAgB9zD,EAAK8zD,eAAiBisE,IAElDC,GAAoB,SAAC//H,EAAiBJ,GAC/C,OAAOI,IAAkBJ,GAAYA,EAASI,OAASJ,EAASI,OAAS,KAEhEggI,GAAiC,SAAC7oH,EAAevX,EAAqBW,GAC/E,GAAIX,EACA,OAAOA,EAASW,WACf,GAAIA,EAAY,CACjB,IAAI0/H,EAAmB1/H,EAClB1c,OAAO,SAAAstB,GAAG,OAAIA,EAAIgqC,wBAAwBn7D,QAAQm3B,IAAU,IAC5DhgC,IAAI,SAAAg6B,GACD,MAAO,CACH/R,GAAI+R,EAAI/R,GACRyoC,UAAW12B,EAAI02B,UACf7iC,SAAUmM,EAAInM,YAW1B,OAPIsM,GAAY6F,GACZ8oH,EAAmBC,GAAkBD,EAAkB1/H,GAElD8Q,GAAa8F,KAClB8oH,EAAmBE,GAAaF,EAAkB1/H,IAG/C0/H,EAEP,MAAO,IAEFG,GAA6B,SAACjpH,EAAevX,EAAqBumD,GAC3E,GAAIvmD,EACA,QAASA,EAAS6E,SACjB,GAAI0hD,EAAgB,CACrB,IAAMk6E,EAAMl6E,EAAermD,KAAK,SAAA9e,GAAC,OAAIA,EAAE+gB,mBAAqBoV,IAC5D,YAAgBp9B,IAARsmJ,KAAuBA,EAAI/hF,aAGnC,OAAO,GAGFgiF,GAAwB,SAAC9gI,EAAeQ,EAAiBO,EAAkCggI,GACpG,IAAM1gI,EAAew/H,GAAgB7/H,EAAOQ,GACxCigI,EAAmB1/H,GAAc,GACrC,GAAIs/H,GAAiChgI,GAAe,CAChD,IAAMimB,EAAgB5kB,GAAY,YAAaC,GAAgB6iB,gBAC/Di8G,EAAoBpgI,GAAgBA,EAAag0D,cAAgBh0D,EAAag0D,eAAiB/tC,EAAiB,GAC5G06G,GAAoBjgI,EAAYggI,GAGxC,OAAON,GAELC,GAAoB,SAAC3/H,EAAkCggI,GACzD,IAAKA,EAAW,OAAOhgI,GAAc,GACrC,IAAMkgI,EAAkB7zG,IAAuB,GAAMz1C,IAAI,SAAA6J,GAAC,OAAIA,EAAEoe,KAIhE,OAHAmhI,EAAU18I,OAAO,SAAA2c,GAAS,OAAIigI,EAAgB/pH,SAASlW,EAAU4Q,mBAAkBzR,QAAQ,SAAA6U,GACvFjU,EAAamgI,GAAgBngI,GAAc,GAAIiU,KAE5CjU,GAAc,IAEnB4/H,GAAe,SAAC5/H,EAAkCggI,GACpD,IAAKA,EAAW,OAAOhgI,GAAc,GACrC,IAAM43C,EAAgBzrB,KAA0Bv1C,IAAI,SAAA6J,GAAC,OAAIA,EAAEoe,KAI3D,OAHAmhI,EAAU18I,OAAO,SAAA2c,GAAS,OAAI23C,EAAczhC,SAASlW,EAAU4Q,mBAAkBzR,QAAQ,SAAA6U,GACrFjU,EAAamgI,GAAgBngI,GAAc,GAAIiU,KAE5CjU,GAAc,IAEnBigI,GAAsB,SAACjgI,EAAkCggI,GAC3D,OAAKA,GACLA,EAAU5gI,QAAQ,SAAA6U,GACdjU,EAAamgI,GAAgBngI,GAAc,GAAIiU,KAE5CjU,GAAc,IAJEA,GAAc,IAMnCmgI,GAAkB,SAACngI,EAAiCqB,GACtD,IAAM++H,EAAOpgI,EAAaA,EAAWtgB,QAAU,GACzC6f,EAAO6gI,EAAK98I,OAAO,SAAA7O,GAAC,OAAIA,EAAEoqB,KAAOwC,EAAKxC,KAC5C,OAAIU,GAAQA,EAAK5oB,OAAS,EAAUypJ,GAEhCA,EAAKn8H,KAAK,CACNpF,GAAIwC,EAAKxC,GACTyoC,UAAWjmC,EAAKimC,UAChB7iC,SAAUpD,EAAKoD,WAGhB27H,IC9CLC,GAAwB,SAAC7U,EAAqB11H,GAChD,OAAOkP,IAAOlP,GAAeqP,KAAKH,IAAOwmH,GAAM,SAAS,yBCjE7C8U,GARD,SAAC98I,GACX,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAAY7nB,EACTc,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,ucCKLk+H,GARM,SAAC/8I,GAClB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAAY7nB,EACTc,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,q+BCuIL3U,gBA7DA,SAAC4rC,GAAD,OAAkBtrC,aAAa,CAC1C6zG,OAAO,CACHnxG,QAAS,OACTuC,eAAgB,SAChBhC,WAAY,UAEhBq8D,OAAQ,CACJngE,MAAO9D,GAAQiB,KAAKC,SAExBwN,SAAU,CACN5K,MAAO9D,GAAQC,KAAKU,MAExBw2I,eAAgB,CACZ9vI,QAAS,cACTO,WAAY,SACZrD,QAAS,WACT4B,MAAO,OACP7H,OAAQ,GACRqK,gBAAiB3I,GAAQiB,KAAKd,OAElCsG,MAAO,CACHY,QAAS,cACTO,WAAY,SACZrD,QAAS,WACTyE,SAAU,QACVL,gBAAiB3I,GAAQiB,KAAKd,OAElCi3I,WAAY,CACRhxI,WAAY,GAEhBgG,OAAQ,CACJpH,OAAQirC,EAAMoF,QAAQ,IACtBlvC,MAAO,SAEX44E,WAAY,CACR76E,YAAa+rC,EAAMoF,QAAQ,IAC3BxwC,SAAU,IAEdwyI,cAAe,CACX1uI,gBAAiB3I,GAAQ2B,MAAMT,QAC/BquG,UAAW,CACP5mG,gBAAiB3I,GAAQ2B,MAAMT,UAGvCo2I,kBAAmB,CACfC,aAAa,CACT5uI,gBAAiB3I,GAAQ2B,MAAMT,QAC/B4C,MAAO,UAGf0zI,YAAa,CACT7uI,gBAAiB3I,GAAQ+B,IAAI5B,MAC7BovG,UAAW,CACP5mG,gBAAiB3I,GAAQ+B,IAAI5B,QAGrCs3I,iBAAkB,CACd9uI,gBAAiB3I,GAAQC,KAAKE,UAIvBkE,CAnHY,SAAClK,GAAiB,IAAAqwC,EACqDrwC,EAAtFoI,eADiC,IAAAioC,EACvB,GADuBA,EACnBxpC,EAAwE7G,EAAxE6G,MAAOof,EAAiEjmB,EAAjEimB,KAAMs3H,EAA2Dv9I,EAA3Du9I,SAAUx7D,EAAiD/hF,EAAjD+hF,OAAQy7D,EAAyCx9I,EAAzCw9I,WAAYC,EAA6Bz9I,EAA7By9I,SAC3DC,GADwF19I,EAAnB29I,gBAC3C,IAAbJ,GACbK,GAAiBF,IAAe37D,EACtC,OACIjhF,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EACdz3C,UAAS,qBAAA1R,OAEH6I,EAAMm4C,UAAY/vC,EAAQ40I,eAAiB50I,EAAQkE,MAFhD,sBAAAnV,OAGH6I,EAAM+hF,QAAU35E,EAAQk1I,iBAHrB,sBAAAnmJ,QAIFumJ,GAAc19I,EAAMuU,UAAYnM,EAAQk1I,iBAJtC,uBAOTx8I,EAAAhP,EAAAiP,cAAC88I,GAAA/rJ,EAAD,CAAMgX,WAAS,EAACD,UAAWT,EAAQi2G,QAC/Bv9G,EAAAhP,EAAAiP,cAAC88I,GAAA/rJ,EAAD,CAAM+rB,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC+8I,GAAA,EAAD,CAAMj1I,UAAS,GAAA1R,OAAK6I,EAAMuU,SAAWnM,EAAQmM,SAAWnM,EAAQ0hE,OAAjD,KAAA3yE,OAA2DiR,EAAQ60I,aAAeh3H,IAErGnlB,EAAAhP,EAAAiP,cAAC88I,GAAA/rJ,EAAD,CAAM+rB,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAS,GAAA1R,OAAK6I,EAAMuU,UAAYnM,EAAQmM,WAAa1N,IAE/D/F,EAAAhP,EAAAiP,cAAC88I,GAAA/rJ,EAAD,CAAM+rB,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ/9C,QAAQ,YACZ4R,KAAK,QACLuG,MAAOi0I,EAAgB,UAAYF,EAAa,UAAY,UAC5D70I,UAAS,iCAAA1R,OAEHiR,EAAQ6J,OAFL,kCAAA9a,OAGHumJ,GAAct1I,EAAQ80I,cAHnB,mCAKT3oI,SAAUvU,EAAMuU,SAChBjL,QAAS,kBAAMk0I,MACdE,EAAa58I,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,CAAkB+W,UAAWT,EAAQw8E,aAAiB9jF,EAAAhP,EAAAiP,cAACg9I,GAAAjsJ,EAAD,CAAoB+W,UAAWT,EAAQw8E,aAC1G84D,EAAa,WAAa,UAE/B58I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ/9C,QAAQ,YACZ4R,KAAK,QACLuG,MAAOi0I,EAAgB,UAAY77D,EAAS,UAAY,UACxDl5E,UAAS,iCAAA1R,OAEHiR,EAAQ6J,OAFL,kCAAA9a,OAGH4qF,GAAU35E,EAAQi1I,YAHf,kCAAAlmJ,OAIHiR,EAAQ60I,WAJL,kCAMT1oI,SAAWvU,EAAMuU,UAAavU,EAAMg9D,YAAch9D,EAAM29I,eACxDr0I,QAAS,kBAAMm0I,MACd17D,EAASjhF,EAAAhP,EAAAiP,cAACi9I,GAAAlsJ,EAAD,CAAiB+W,UAAWT,EAAQw8E,aAAiB9jF,EAAAhP,EAAAiP,cAACk9I,GAAAnsJ,EAAD,CAAmB+W,UAAWT,EAAQw8E,aACpG7C,EAAS,SAAW,cChCvCm8D,8MACFC,0BAA4BhhI,GAAY,WAAYC,GAAgBgV,wBAGpEg/F,oBAAsB,WACbx3H,EAAKoG,MAAMo+I,6BACZxkJ,EAAKoG,MAAMq+I,uBAInBC,kBAAoB5qI,aAAW,SAAC8d,GAC5B,OAAOA,EAAahS,KAAK,SAAAvuB,GAAC,OAAIA,EAAEuhC,oBAAsB54B,EAAKukJ,2BAA6BltJ,EAAEwhC,gBAG9F8rH,4BAA8B,SAAC/2H,EAA4C9nB,GACnE8nB,EAAM20B,OAAOxiD,OAAOC,EAAKoG,MAAMw+I,0BAA0Bj/I,OAAOioB,EAAM20B,OAAOxiD,OAAQ+F,MAG7Fm9I,sBAAwB,SAAC7U,GAIrB,YAFgChyI,IAA5B4D,EAAKoG,MAAM8b,mBAAwE9lB,IAA1C4D,EAAKoG,MAAM8b,aAAaxJ,cAC7DkP,IAAO5nB,EAAKoG,MAAM8b,aAAaxJ,eAAiBkP,OACnCG,KAAKH,IAAOwmH,GAAM,SAAS,MAGpDyW,2BAA6B,SAACj3H,GACtBA,EAAM20B,OAAOxiD,OACbC,EAAKoG,MAAM0+I,+BAA+Bn/I,OAAOioB,EAAM20B,OAAOxiD,iFAG7D,IAAAS,EAAAxH,KAAAsV,EACoItV,KAAKoN,MAAjH2+I,GADxBz2I,EACG47C,UADH57C,EACc+Y,SADd/Y,EACwBy2I,oBAAoBrvE,EAD5CpnE,EAC4ConE,YAAasvE,EADzD12I,EACyD02I,iBAAkBC,EAD3E32I,EAC2E22I,iBAAkBz2I,EAD7FF,EAC6FE,QAAS4D,EADtG9D,EACsG8D,MAAO8yI,EAD7G52I,EAC6G42I,mBAC5Gn9D,EAAU3+C,KACV4hG,EAAShyI,KAAKoN,MAAMwc,WAAWT,KAAK,SAAAqR,GAAG,MAAyC,WAArCu0D,EAAQv0D,EAAIC,iBAAiB3zB,MACxE8iB,EAAa5pB,KAAKoN,MAAMwc,WAAW1c,OAAO,SAAAstB,GAAG,MAAyC,WAArCu0D,EAAQv0D,EAAIC,iBAAiB3zB,MAC9EqlJ,EAAmBna,EAAS,CAACA,GAAQztI,OAAOqlB,GAAcA,EAE1D4hI,EAA8BxrJ,KAAKoN,MAAMo+I,4BACzCY,EAAiCpsJ,KAAKoN,MAAMg/I,+BAE5C/2H,EAAmB,OAAVjc,GAA4B,OAAVA,EAE7Bw8H,EAAU1hG,KAKd,OAJKwoC,IACDk5D,EAAUA,EAAQ1oI,OAAO,SAAAklB,GAAM,MAAmB,uBAAfA,EAAOtrB,OAI1CoH,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAWT,EAAQkE,OACtBxL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGryC,UAAWT,EAAQ62I,iBAC3Cn+I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG/1C,UAAS,GAAA1R,OAAK8wB,EAAS7f,EAAQ82I,UAAY,KACjEp+I,EAAAhP,EAAAiP,cAACo+I,GAAD,CACIt4I,MAAK,GAAA1P,OAAKvE,KAAKoN,MAAM8jD,UAAhB,KAAA3sD,OAA6BvE,KAAKoN,MAAMihB,UAC7Cs8H,SAAU3qJ,KAAKoN,MAAMo/I,kBACrBr9D,OAAQnvF,KAAKoN,MAAMq/I,mBAAqBzsJ,KAAKoN,MAAMs/I,mBACnD3B,eAAgBS,GAA+BY,EAC/CzqI,SAAU3hB,KAAKoN,MAAMs/I,mBACrBtiF,YAAc,EACd7kB,WAAS,EACTlyB,KAAMnlB,EAAAhP,EAAAiP,cAACw+I,GAAD,MACN/B,WAAY,WACHY,GAAgCY,GAAmC5kJ,EAAK4F,MAAMo/I,mBAC/EhlJ,EAAKg3H,uBAGbqsB,SAAU,WACDW,GAAgCY,GACjC5kJ,EAAK4F,MAAMw/I,uBAK3B1+I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG/1C,UAAS,GAAA1R,OAAK8wB,EAAS7f,EAAQ82I,UAAY,KAChEtsJ,KAAKoN,MAAMq/I,mBAAqBzsJ,KAAKoN,MAAMs/I,oBACxCx+I,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIwC,QAAM,EACNxvC,MAAM,uBACNrV,QAAQ,WACR+iB,SAAU3hB,KAAKoN,MAAMs/I,mBACrB3lJ,MAAO/G,KAAKoN,MAAMipI,wBAA0B,GAC5C9yF,SAAUvjD,KAAK6rJ,2BACftmG,WAAS,EACT6G,YAAa,CAAEjB,QAAQ,GACvB/lD,OAAQpF,KAAKoN,MAAMs/I,qBAAuB1sJ,KAAKoN,MAAMipI,wBAErDnoI,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb6uI,EAAQp1I,IAAI,SAAAo2B,GAAG,OACZ1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,aAQhEolJ,EAAiB3rJ,IAAI,SAACg6B,EAAgB3N,GACnC,IAAMk3B,EAAUgoG,EAAmB/lH,UAAU,SAAA6mH,GAAG,OAAIA,EAAIpkI,KAAO+R,EAAI/R,MAAO,EACpE0mE,EAAS88D,EAAiBjmH,UAAU,SAAA6mH,GAAG,OAAIA,EAAIpkI,KAAO+R,EAAI/R,MAAO,EACjEH,EAAoB9gB,EAAK4F,MAAMq/I,iBAC/B9qI,EAAWuqI,EAAmBlmH,UAAU,SAAA6mH,GAAG,OAAIA,EAAIpkI,KAAO+R,EAAI/R,MAAO,EACrEqkI,EAAmB/9D,EAAQv0D,EAAIC,iBAAiB3zB,IAChDimJ,EAAiD,WAArBD,GAAsD,oBAArBA,EAC/DE,EAAuBD,EAA4BnX,EAAUA,EAAQ1oI,OAAO,SAAAklB,GAAM,MAAmB,eAAfA,EAAOtrB,MAE3FmmJ,GADoCl+D,EAAQv0D,EAAIC,iBAAiB3zB,IAClCU,EAAK4F,MAAMg/I,gCAC1C/4H,EAAO05H,EAA4B7+I,EAAAhP,EAAAiP,cAAC++I,GAAD,MAAmBh/I,EAAAhP,EAAAiP,cAACg/I,GAAAjuJ,EAAD,MAC5D,OACIgP,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC+U,MAAI,EAACq9B,QAAS,EAAGryC,UAAWT,EAAQ62I,gBAAiBvlJ,IAAK+lB,GACtE3e,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,EAAGv3C,UAAS,GAAA1R,OAAK8wB,EAAS7f,EAAQ82I,UAAY,KACjEp+I,EAAAhP,EAAAiP,cAACo+I,GAAD,CACIzlJ,IAAK0zB,EAAI/R,GACTxU,MAAK,GAAA1P,OAAKi2B,EAAI02B,UAAT,KAAA3sD,OAAsBi2B,EAAInM,UAC/Bs8H,SAAU5mG,IAAYpiC,EACtBwtE,OAASA,IAAWxtE,GAAc2G,IAAsB3G,EACxDopI,eAAgBkC,EAChBtrI,SAAUA,EACVyoD,YAAc,EACd7kB,WAAS,EACTlyB,KAAMA,EACNu3H,WAAY,WACF7mG,GACFv8C,EAAK4F,MAAMggJ,mBAAmB,CAC1B3kI,GAAI+R,EAAI/R,GACRyoC,UAAW12B,EAAI02B,UACf7iC,SAAUmM,EAAInM,SACdP,UAAU,EACVg9C,oBAAgB1nE,GACjBo3B,EAAI/R,KAGfoiI,SAAU,WACNrjJ,EAAK4F,MAAMigJ,kBAAkB,CACzB5kI,GAAI+R,EAAI/R,GACRyoC,UAAW12B,EAAI02B,UACf7iC,SAAUmM,EAAInM,SACdP,UAAU,GACX0M,EAAI/R,QAInBva,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,EAAGv3C,UAAS,GAAA1R,OAAK8wB,EAAS7f,EAAQ82I,UAAY,KAChEn9D,IAAWxtE,GACRzT,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIwC,QAAM,EACNxvC,MAAM,uBACNrV,QAAQ,WACR+iB,SAAUA,EACV5a,QAAQS,EAAK4F,MAAMq/I,mBAAuB1oG,GAAWorC,EAA8C68D,EAAiBxxH,EAAI/R,IAAzDjhB,EAAK4F,MAAMipI,yBAAsD,GAChI9yF,SAAU,SAAC5sC,GAAD,OAA4CnP,EAAKmkJ,4BAA4Bh1I,EAAG6jB,EAAI/R,KAC9F88B,WAAS,EACT6G,YAAa,CAAEjB,QAAQ,GACvB/lD,OAAQuc,IAAaqqI,EAAiBxxH,EAAI/R,KAAO0mE,GAEjDjhF,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbimJ,EAAqBxsJ,IAAI,SAAAo2B,GAAG,OACzB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,uBA7JrDwH,IAAMC,eA2L3B2mB,kBAAY7d,aAhBZ,SAAC4rC,GAAD,OAAkBtrC,aAAa,CAC1Cy0I,gBAAiB,CACb50I,WAAYyrC,EAAMoF,QAAQ,IAC1BlxC,cAAe8rC,EAAMoF,QAAQ,KAEjC5uC,MAAO,CACHlC,QAAS0rC,EAAMoF,UACfpxC,UAAWgsC,EAAMoF,QAAQ,GACzBzuC,aAAcqpC,EAAMoF,QAAQ,IAEhCgkG,UAAW,CACPr0I,OAAQ,QACRmB,MAAO,WAIY9B,CAAmBg0I,KCjMxC97E,GAAsC,CACxC,CACIzoE,MAAO,KACP6M,KAAM,wBAEV,CACI7M,MAAO,KACP6M,KAAM,mBAEV,CACI7M,MAAO,KACP6M,KAAM,kBAEV,CACI7M,MAAO,KACP6M,KAAM,6CAEV,CACI7M,MAAO,KACP6M,KAAM,+BAmNCipC,eACXvlC,aAjBW,SAAC4rC,GAAD,OAAkBtrC,aAAa7Y,OAAA0G,EAAA,EAAA1G,CAAA,GACvCmpF,GADsC,CAEzCmkE,gBAAiB,CACb50I,WAAYyrC,EAAMoF,QAAQ,IAC1BlxC,cAAe8rC,EAAMoF,QAAQ,KAEjC5uC,MAAO,CACHlC,QAAS0rC,EAAMoF,UACfpxC,UAAWgsC,EAAMoF,QAAQ,GACzBzuC,aAAcqpC,EAAMoF,QAAQ,IAEhCgkG,UAAW,CACPr0I,OAAQ,QACRmB,MAAO,aAKX+b,eAFW0nB,CA9GuB,SAACzvC,GAAiB,IAC5CoI,EAOiBpI,EAPjBoI,QAASoU,EAOQxc,EAPRwc,WAAY6hI,EAOJr+I,EAPIq+I,kBACzB4B,EAMqBjgJ,EANrBigJ,kBAAmBD,EAMEhgJ,EANFggJ,mBACnBrB,EAKqB3+I,EALrB2+I,mBAAoBG,EAKC9+I,EALD8+I,mBACpBD,EAIqB7+I,EAJrB6+I,iBAAkBO,EAIGp/I,EAJHo/I,kBAClBhB,EAGqBp+I,EAHrBo+I,4BACA8B,EAEqBlgJ,EAFrBkgJ,sBACA1B,EACqBx+I,EADrBw+I,0BACAa,EAAqBr/I,EAArBq/I,iBAEEc,EAjDsB,SAAC3jI,EAAyBsiI,EAAyCoB,EAAiCv0H,GAChIu0H,EAAsBz/H,KAAK,MAC3B,IAAMkhE,EAAU3+C,KAKVo9G,EAJqB5jI,EAAW1c,OAAO,SAACstB,GAE1C,QAD4B0xH,EAAmBlmH,UAAU,SAAA/Z,GAAC,OAAIA,EAAExD,KAAO+R,EAAI/R,MAAO,KAG7CjoB,IAAI,SAACg6B,GAC1C,IAAMvO,EAAIrC,EAAWT,KAAK,SAAA8C,GAAC,OAAIA,EAAExD,KAAO+R,EAAI/R,KAC5C,OAAIwD,EACO8iE,EAAQ9iE,EAAEwO,iBAAiB3zB,IAE/B,KAEL2mJ,EAAmBD,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,WAANA,KAAmB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,oBAANA,KAA4B,EACjIC,EAAkBH,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,UAANA,KAAkB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,iBAANA,KAAyB,GAC3HF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,cAANA,KAAsB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,gBAANA,KAAwB,GAC7GF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,UAANA,KAAkB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,2BAANA,KAAmC,GACpHF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,aAANA,KAAqB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,kBAANA,KAA0B,GAC9GF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,QAANA,KAAgB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,aAANA,KAAqB,GACpGF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,YAANA,KAAoB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,iBAANA,KAAyB,EAC7GE,EAAyBH,GAAoBE,EAgBnD,OAf6Bn+E,GAAetiE,OAAO,SAAC2gJ,GAChD,QAAuB,OAAnBA,EAAS9mJ,QAAmB0mJ,MAGT,OAAnBI,EAAS9mJ,QAAmB4mJ,MAIT,OAAnBE,EAAS9mJ,QAAmB6mJ,IAIzBN,EAAsBtnH,UAAU,SAAA/Z,GAAC,OAAIA,IAAM4hI,EAAS9mJ,SAAU,IAe5C+mJ,CAAwBlkI,EAAYsiI,EAAoBoB,EAAuBlgJ,EAAM2rB,gBAC5Gg1H,GAAsBtB,KAA2C,IAAtBD,IAA8D,IAAhChB,GACzEwC,EA5G4B,SAClCD,EACAnkI,EACAmiI,EACAuB,GACA,IAAMv+D,EAAU3+C,KACVo9G,EAAgBzB,EAAmBvrJ,IAAI,SAACg6B,GAC1C,IAAMvO,EAAIrC,EAAWT,KAAK,SAAA8C,GAAC,OAAIA,EAAExD,KAAO+R,EAAI/R,KAC5C,OAAIwD,EACO8iE,EAAQ9iE,EAAEwO,iBAAiB3zB,IAE/B,KAGLmnJ,EAAmBT,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,WAANA,KAAmB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,oBAANA,KAA4B,EACjIQ,EAAkBV,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,UAANA,KAAkB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,iBAANA,KAAyB,GAC3HF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,cAANA,KAAsB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,gBAANA,KAAwB,GAC7GF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,UAANA,KAAkB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,2BAANA,KAAmC,GACpHF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,aAANA,KAAqB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,kBAANA,KAA0B,GAC9GF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,QAANA,KAAgB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,aAANA,KAAqB,GACpGF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,YAANA,KAAoB,GAAKF,EAAcxnH,UAAU,SAAA0nH,GAAC,MAAU,iBAANA,KAAyB,EAG7GS,EAAyBF,GAAoBC,EAE7CE,EAAcd,EAAsBtnH,UAAU,SAAA0nH,GAAC,MAAU,OAANA,KAAgB,EACnEW,EAAcf,EAAsBtnH,UAAU,SAAA0nH,GAAC,MAAU,OAANA,KAAgB,EACnEY,EAAchB,EAAsBtnH,UAAU,SAAA0nH,GAAC,MAAU,OAANA,KAAgB,EACnEa,EAAcjB,EAAsBtnH,UAAU,SAAA0nH,GAAC,MAAU,OAANA,KAAgB,EAEzE,OAAIK,GAAsBG,GAAmBD,GAAoBG,EACtD,KAGPL,GAAsBI,GAA0BC,IAAgBC,IAAgBC,EACzE,KAGPP,GAAsBG,IAAoBD,GAAoBI,EACvD,KAGPN,GAAsBE,GAAoBK,EACnC,KAGPP,GAAsBE,GAAoBK,EACnC,KAGPP,GAAsBQ,EACf,KAGJ,KAsDkBC,CAA8BT,EAAoBnkI,EAAYmiI,EAAoBuB,GAZvD5rG,EAaVnzC,IAAMozC,SAASqsG,GAbLpsG,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAa7C3iB,EAb6C6iB,EAAA,GAa9B6sG,EAb8B7sG,EAAA,GAepDrzC,IAAMq9C,UAAU,WACZ6iG,EAAiBT,IAClB,CAACA,IAEJ,IAAMh2F,EAAezpD,IAAMuzC,YAAY,SAACltB,GACpC,IAAM85H,EAAwB95H,EAAM20B,OAAOxiD,MAE3C,OADA0nJ,EAAiBC,GACTA,GACJ,IAAK,KACIX,GACDtC,IAEJ7hI,EAAWppB,IAAI,SAACg6B,GACKyxH,EAAiBjmH,UAAU,SAAA6mH,GAAG,OAAIA,EAAIpkI,KAAO+R,EAAI/R,MAAO,GAErE7oB,WAAW,WACPytJ,EAAkB,CACd5kI,GAAI+R,EAAI/R,GACRyoC,UAAW12B,EAAI02B,UACf7iC,SAAUmM,EAAInM,SACdP,UAAU,GACX0M,EAAI/R,IACPmjI,EAA0B,IAAKpxH,EAAI/R,KACpC,OAIX,MACJ,IAAK,KACIslI,GACDtC,IAEJ7hI,EAAWppB,IAAI,SAACg6B,GACZ,IAAMm0H,EAAoB5C,EAAmB/lH,UAAU,SAAA6mH,GAAG,OAAIA,EAAIpkI,KAAO+R,EAAI/R,MAAO,EAC9E05F,EAAa+pC,EAAmBlmH,UAAU,SAAA6mH,GAAG,OAAIA,EAAIpkI,KAAO+R,EAAI/R,MAAO,EACxEkmI,GAAsBxsC,GACvBirC,EAAmB,CACf3kI,GAAI+R,EAAI/R,GACRyoC,UAAW12B,EAAI02B,UACf7iC,SAAUmM,EAAInM,SACdP,UAAU,EACVg9C,oBAAgB1nE,GACjBo3B,EAAI/R,MAGf,MACJ,IAAK,KACDrb,EAAMwhJ,UACNxhJ,EAAM0+I,+BAA+B,OAI9C,CAACliI,EAAYmiI,EAAoBG,EAAoB6B,IAExD,OACI7/I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAWT,EAAQkE,OACrB6zI,EAAqBhtJ,OAAS,GAAKgtJ,EAAqB/sJ,IAAI,SAACqtJ,EAA6BhhI,GACvF,OACI3e,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGryC,UAAWT,EAAQ62I,iBAC3Cn+I,EAAAhP,EAAAiP,cAACs2C,GAAA,EAAD,CACI19C,MAAOg4B,EACPwkB,SAAUyU,EACV5pD,MAAOygJ,GAAkB10I,YACzBjM,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO8mJ,EAAS9mJ,MAChBqH,MAAOygJ,GAAkBjiD,YACzB/oD,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkBxxI,aAAcwwI,EAASj6I,gBCpN3FuuE,GAAYxqE,aAAW,SAAAurC,GAAK,MAAK,CACnC4rG,YAAa,CACT72I,OAAQirC,EAAMoF,SAAS,GACvB7wC,WAAY,OAkHdX,GAA2C,CAC7C4C,MAAO,CACHlC,QAAS,YACTqC,aAAc,IAElBk1I,iBAAkB,CACd73I,UAAW,QAEfwiD,SAAU,CACNp/C,QAAS,QACTrC,OAAQ,OACRR,WAAY,OAEhBwB,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,OACVzJ,UAAW,UAEf2gJ,mBAAoB,CAChBl3I,SAAU,OACVN,QAAS,MACTT,MAAO9D,GAAQC,KAAKU,MAExBD,UAAW,CACPoD,MAAO9D,GAAQC,KAAKS,UACpBkG,aAAc,QAElBo1I,YAAa,CACTz3I,QAAS,MACTM,SAAU,OACVf,MAAO9D,GAAQC,KAAKU,MAExBs7I,cAAe,CACXz3I,WAAY,OACZ2C,YAAa,OAEjB+0I,aAAc,CACVp4I,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,OACVC,WAAY,KAEhBq3I,oBAAqB,CACjBj0I,UAAW,UACXrD,SAAU,OACV0E,WAAY,QAEhB6yI,UAAW,CACPp3I,OAAQ,YAEZ5J,UAAW,CACPA,UAAW,WAIJ8mB,kBAhKC,SAAC/nB,GACG+0E,KAAhB,IAD8BzgC,EAEkBnzC,IAAMozC,SAASv0C,EAAMqhC,qBAFvCmT,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAEvB4tG,EAFuB1tG,EAAA,GAEL2tG,EAFK3tG,EAAA,GAAA0qC,EAGc/9E,IAAMozC,SAAS,IAH7B4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAGvBkjE,EAHuBjjE,EAAA,GAGPkjE,EAHOljE,EAAA,GAAAG,EAIgDn+E,IAAMozC,SAAS,IAJ/DgrC,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAIvBgjE,EAJuB/iE,EAAA,GAIUgjE,EAJVhjE,EAAA,GAAAE,EAKgDt+E,IAAMozC,SAAS,IAL/DmrC,EAAA/tF,OAAAmN,EAAA,EAAAnN,CAAA8tF,EAAA,GAKvB+iE,EALuB9iE,EAAA,GAKU+iE,EALV/iE,EAAA,GAAAgjE,EAMsBvhJ,IAAMozC,SAAS,GANrCouG,EAAAhxJ,OAAAmN,EAAA,EAAAnN,CAAA+wJ,EAAA,GAMvBE,EANuBD,EAAA,GAMHE,EANGF,EAAA,GAAAG,EAOc3hJ,IAAMozC,SAAS,GAP7BwuG,EAAApxJ,OAAAmN,EAAA,EAAAnN,CAAAmxJ,EAAA,GAOvBE,EAPuBD,EAAA,GAOPE,EAPOF,EAAA,GAQxBG,EAAqBljJ,EAAMkjJ,mBAC3BC,EAAuBH,EAAiBE,EAE9C/hJ,IAAMq9C,UAAU,WACZ4kG,EAAqBlB,EAAiB/kJ,aACvC,CAAC6C,EAAMqjJ,UAAWrjJ,EAAMyiE,kBAI3B,IAAM2gF,EAAuB,SAACzpJ,GAGtBA,IAAUqG,EAAMsjJ,mBAAmBnmJ,YACnCklJ,EAAiB,gBAAAlrJ,OAvBb,aAwBJorJ,EAzByB,2BA0BzBE,EAAmCziJ,EAAMujJ,eACzCN,EAAkBjjJ,EAAMyiE,iBACxBogF,EAAsB7iJ,EAAMqjJ,YAEvB1pJ,IAAUqG,EAAMwjJ,sBAAsBrmJ,aAC3CklJ,EAAiB,gCAAAlrJ,OAAiC6I,EAAMujJ,cAAvC,MACjBhB,EAjCe,uBAkCfE,EAhCI,YAiCJQ,EAAkBjjJ,EAAMqjJ,WACxBR,EAAsB7iJ,EAAMyiE,mBAUpC,OACI3hE,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OAChBtM,EAAM8b,cAAgB9b,EAAMyjJ,YACzB3iJ,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOnD,UAAW/U,QAAQ,MAA7C,qBACAsP,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,wBACNqkD,SAAS,oGACTpM,UAAW,IAEfx/C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAOi4I,kBAC1B7gJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GAAIp/C,MAAO0I,GAAOm4I,aAAa/gJ,EAAAhP,EAAAiP,cAAA,KAAGrI,KAAK,mGAAmGyjD,OAAO,UAAlH,6CAE1Dr7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,IACnBt/C,EAAAhP,EAAAiP,cAACs2C,GAAA,EAAD,CAAY27E,aAAW,mBAAmBlkH,KAAK,oBAAoBnV,MAAOuoJ,EAAkB/rG,SArB/E,SAAC3uB,GAClC26H,EAAoB72H,WAAW9D,EAAM20B,OAAOxiD,MAAMwD,aAClDimJ,EAAqB57H,EAAM20B,OAAOxiD,OAClCqG,EAAM0jJ,cAAcl8H,IAkBoIxmB,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOqD,aACnJjM,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAOqG,EAAMsjJ,mBAAoB7sG,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MAAW9tE,MA9D5E,sBA8DuG68H,eAAe,QACjH5iI,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAOqG,EAAMwjJ,sBAAuB/sG,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MAAW9tE,MA9DrE,0BA8D0G68H,eAAe,UAGtI5iI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACI7yC,MAAO0I,GAAOu4I,UACdzwJ,QAAQ,WACRg5B,KAAK,SACL2tB,WAAS,EACT3E,WAAY,CACRshF,IAAK,EACL35B,KAAM,IACNn3F,IAAK,CAAEk/I,uBAEXlrJ,MAAOmrJ,EACPpwG,WAAYowG,EAAuB,qBAAuBD,OAAqBltJ,EAC/E2D,MAAOqpJ,EACP7sG,SAAUn2C,EAAM2jJ,UAEhBxwG,WAAY,CACR25D,eACIhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAKR/C,MAAOu7I,KAGfthJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,KAEnBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOk4I,oBAA1B,QACUU,EADV,MAEIxhJ,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO0I,GAAOq4I,cAAtB,YAAA5qJ,OACgByrJ,EAAmBzwF,eAAe,UADlD,OAEKqwF,KAKXxiJ,EAAM8b,aAAehb,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOmC,QAAjB,iFACjB/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOmC,QAAjB,mFCvGN+3I,GAhBgB,SAAC5jJ,GAC7B,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC8iJ,GAAD,CACIjrG,cAAe54C,EAAM8jJ,qBACrBvmI,SAAUvd,EAAMud,SAChBoO,eAAgB3rB,EAAM2rB,eACtBm2G,sBAAuB9hI,EAAM8hI,sBAC7BiC,wBAAyB/jI,EAAM+jI,wBAC/BzB,wBAAyBtiI,EAAMsiI,4BCEzC54H,GAA2C,CAC7CsyB,KAAM,CACFxtB,gBAAiB3I,GAAQC,KAAKI,KAC9BmkF,YAAa,EACbt9B,YAAa,SACbna,YAAa/sC,GAAQC,KAAKU,KAC1B4D,QAAS,SACT4B,MAAO,OACP/K,UAAW,UAEfgR,OAAQ,CACJjG,MAAO,QAEXia,KAAM,CACFtc,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdlE,KAAM,CACFmD,MAAO9D,GAAQiB,KAAKC,QACpBsH,cAAe,cAIR01I,GAvCY,SAAC/jJ,GAAiB,IACjCsJ,EAAYtJ,EAAZsJ,QACR,OACIxI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI1iB,QAASA,GACxBxI,EAAAhP,EAAAiP,cAACwpF,GAAA,EAAD,CAAalvE,GAAG,oBAAoB87B,UAAU,MAAMn2C,MAAO0I,GAAOuI,QAC9DnR,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EAAGt/C,MAAO0I,GAAOsyB,MAC/Bl7B,EAAAhP,EAAAiP,cAACktI,GAAAn8I,EAAD,CAAakP,MAAO0I,GAAOuc,OAC3BnlB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOlD,MAAnB,6BC+HlBw9I,GAA+B,SAAAlwJ,GAAkH,IAA/GmwJ,EAA+GnwJ,EAA/GmwJ,gBAAiB5W,EAA8Fv5I,EAA9Fu5I,UAA8F6W,EAAApwJ,EAAnFqwJ,4BAAmF,IAAAD,EAA5D,SAAAE,KAA4DF,EAAAG,EAAAvwJ,EAAlDwwJ,4BAAkD,IAAAD,EAA3B,SAAAD,KAA2BC,EAAAE,EAChGhwG,oBAAS,GADuFiwG,EAAA7yJ,OAAAmN,EAAA,EAAAnN,CAAA4yJ,EAAA,GAC5IE,EAD4ID,EAAA,GACzHE,EADyHF,EAAA,GAG7IG,EAAWxjJ,IAAMuzC,YACnB,SAACnrC,GACG,IAAMmzD,EAAWnzD,EAAE4yC,OAAOxiD,MAC1BwqJ,EAAqBxyJ,OAAA0G,EAAA,EAAA1G,CAAA,GACdsyJ,EADa,CAEhBvnF,eAGR,CAACunF,EAAiBE,IAEhBS,EAAazjJ,IAAMuzC,YACrB,SAACnrC,GACG,IAAMozD,EAAapzD,EAAE4yC,OAAOxiD,MAC5BwqJ,EAAqBxyJ,OAAA0G,EAAA,EAAA1G,CAAA,GACdsyJ,EADa,CAEhBtnF,iBAGR,CAACsnF,EAAiBE,IAEhBtU,EAAgB1uI,IAAMuzC,YACxB,SAACnrC,GACG,IAAMqzD,EAAgBrzD,EAAE4yC,OAAOxiD,MAC/BwqJ,EAAqBxyJ,OAAA0G,EAAA,EAAA1G,CAAA,GACdsyJ,EADa,CAEhBrnF,oBAGR,CAACqnF,EAAiBE,IAEhBU,EAAwB1jJ,IAAMuzC,YAChC,SAACnrC,EAAQszD,GACLsnF,EAAqBxyJ,OAAA0G,EAAA,EAAA1G,CAAA,GACdsyJ,EADa,CAEhBpnF,wBAGR,CAAConF,EAAiBE,IAEhBW,EAAqB3jJ,IAAMuzC,YAC7B,SAACnrC,EAAQuzD,GACLqnF,EAAqBxyJ,OAAA0G,EAAA,EAAA1G,CAAA,GACdsyJ,EADa,CAEhBnnF,mBAGR,CAACmnF,EAAiBE,IAehBY,EAAkB3lJ,UAAQ6kJ,EAAgBtnF,YAAasnF,EAAgBtnF,WAAWxpE,QAClF6xJ,EAAmCf,EAAgBzjI,UAAUhB,KAAK,SAAAjW,GAAC,OAAqB,IAAhBA,EAAEw8E,YAE1ErmF,EAAQ4e,SAAS2lI,EAAgBlnF,QACvC,OACIj8D,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAa5uE,YACpBxM,EAAQ,GACLoB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,kBAAkBra,MAAO85E,GAAanuE,sBAAuBhD,MAAM,UAAUL,QAAS,kBAAMg7I,EAAqBL,KAA5H,uBAKRnjJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,qCACA/K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOo8E,WAA1B,4CACAhlF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,KACTi4H,EAAgBzjI,WAAa,IAAIptB,IAAI,SAAAmW,GACnC,OACIzI,EAAAhP,EAAAiP,cAAA,OAAKrH,IAAG,uBAAAvC,OAAyB8sJ,EAAgBlnF,OAAzC,KAAA5lE,OAAmDoS,EAAE8R,KACzDva,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAASptC,EAAEw8E,UAAWxxE,UAAWhL,EAAE07I,UAAW5pI,GAAI9R,EAAE8R,GAAGle,WAAYg5C,SAAU,SAACl5C,GAAD,OAjC5FszI,EAiCqHhnI,EAjClFotC,GAiCsFptC,EAAEw8E,UAhCxI2+D,IAAV/tG,QAEAwtG,EAAqBxyJ,OAAA0G,EAAA,EAAA1G,CAAA,GACdsyJ,EADa,CAEhBzjI,UAAWyjI,EAAgBzjI,UAAUptB,IAAI,SAAAmW,GAAC,OAAA5X,OAAA0G,EAAA,EAAA1G,CAAA,GACnC4X,EADmC,CAEtCw8E,UAAWx8E,EAAE8R,KAAOk1H,EAASl1H,GAAKs7B,EAAUptC,EAAEw8E,iBAPhC,IAACwqD,EAAmC55F,KAkC9B71C,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOo8E,WAAYv8E,EAAEikD,eAMhDi3F,GAAsBO,IACxBlkJ,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIriD,QAAQ,WACRqV,MAAOwmI,EAAY,2BAA6B,0BAChDl1F,WAAS,EACTx+C,MAAOsqJ,EAAgBvnF,SACvBvmB,SAAUwuG,KAGlB7jJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIhtC,MAAOwmI,EAAY,6BAA+B,4BAClD77I,QAAQ,WACR2mD,WAAS,EACTx+C,MAAOsqJ,EAAgBtnF,WACvBxmB,SAAUyuG,KAGlB9jJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIhtC,MAAOwmI,EAAY,iCAAmC,gCACtD77I,QAAQ,WACR2mD,WAAS,EACTx+C,MAAOsqJ,EAAgBrnF,cACvBzmB,SAAU05F,KAGlB/uI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAASstG,EAAgBpnF,mBAAqBkoF,EAC9C5uG,SAAU0uG,EACVl7I,MAAM,YACNhQ,MAAM,kBACN4a,UAAWwwI,IAGnBl+I,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOlD,MAApB,8BAEX1F,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAASstG,EAAgBnnF,eAAiBioF,EAC1C5uG,SAAU2uG,EACVn7I,MAAM,YACNhQ,MAAM,eACN4a,SAAUwwI,IAGlBl+I,MACI/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOlD,MAApB,8BAAArP,OACmCk2I,EAAY,wBAA0B,uBADzE,cAa9B3jI,GAA2C,CAC7C4C,MAAO,CACHlC,QAAS,YACTqC,aAAc,GACd3C,UAAW,IAEf+B,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,IAEdo7E,UAAW,CACPn8E,MAAO9D,GAAQC,KAAKS,UACpBkG,aAAc,QAElBy4I,WAAY,CACRn3I,UAAW,SACX1D,WAAY,MACZV,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,WACVC,WAAY,IACZL,WAAY,uCACZ8E,WAAY,aAEhB+1I,SAAU,CACNx7I,MAAO9D,GAAQC,KAAKU,MAExB4+I,iBAAkB,CACdn5I,WAAY,SAGhBo5I,QAAS,CACLx6I,OAAQ,UAEZvD,KAAM,CACFqC,MAAO9D,GAAQiB,KAAKC,QACpBsH,cAAe,QAEnB7H,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,OAIb8+I,GA5ToB,SAAA5zJ,GAA2H,IAAxHitJ,EAAwHjtJ,EAAxHitJ,mBAAoBr3I,EAAoG5V,EAApG4V,KAAMiW,EAA8F7rB,EAA9F6rB,SAAwBgoI,EAAsE7zJ,EAApFqvE,aAA+B/iD,EAAqDtsB,EAArDssB,iBAAkBwnI,EAAmC9zJ,EAAnC8zJ,sBACjHzkF,EAAewkF,EAAgBnyJ,IAAI,SAACqyJ,EAAoBhrE,GAC1D,IAAMj6D,EAAYilI,EAAmBjlI,WAAa,GAE5CklI,EAAYH,EAAgBzlJ,OAAO,SAACskJ,EAAG3kI,GAAJ,OAAUA,IAAMg7D,IAEzD,OAAO9oF,OAAA0G,EAAA,EAAA1G,CAAA,GACA8zJ,EADP,CAEI1oF,OAAM,GAAA5lE,OAAKsjF,GACXj6D,UAAS,CACL,CACInF,GAAIkC,EAASlC,GACb2hD,YAAY,EACZ+oB,YAAavlE,EAAUzE,KAAK,SAAAxS,GAAC,OAAIA,EAAEyzD,aACnCxP,SAAUjwC,EAASiwC,SACnBy3F,YAAazkI,EAAUzE,KAAK,SAAAxS,GAAC,OAAIA,EAAEyzD,eAAgB0oF,EAAU3pI,KAAK,SAAA9qB,GAAC,SAAOA,EAAEuvB,WAAa,IAAIzE,KAAK,SAAAxS,GAAC,OAAIA,EAAEyzD,iBANxG7lE,OAAAxF,OAAAgO,EAAA,EAAAhO,CAQFgtJ,EAAmBvrJ,IAAI,SAAAyrB,GAAC,MAAK,CAC5BxD,GAAIwD,EAAExD,GACN2hD,YAAY,EACZ+oB,YAAavlE,EAAUzE,KAAK,SAAAxS,GAAC,OAAIA,EAAE8R,KAAOwD,EAAExD,KAAO9R,EAAEyzD,aACrDxP,SAAU3uC,EAAEilC,UAAY,IAAMjlC,EAAEoC,SAChCgkI,YAAazkI,EAAUzE,KAAK,SAAAxS,GAAC,OAAIA,EAAE8R,KAAOwD,EAAExD,OAAQqqI,EAAU3pI,KAAK,SAAA9qB,GAAC,SAAOA,EAAEuvB,WAAa,IAAIzE,KAAK,SAAAxS,GAAC,OAAIA,EAAE8R,KAAOwD,EAAExD,gBAO7HgyH,EAAYrvH,IAAqBb,GAAY,UAAWC,GAAgBuO,gBAExEg6H,EAAkC5kF,EACnCjhE,OAAO,SAAA7O,GAAC,OAA6D,IAAzDA,EAAEuvB,UAAU1gB,OAAO,SAAAyJ,GAAC,OAAoB,IAAhBA,EAAEw8E,YAAoB5yF,SAAcA,OAAS,EAEhFyyJ,EAAsB7kF,EACvB3tE,IAAI,SAAAnC,GAAC,OAAIA,EAAEuvB,UAAU1gB,OAAO,SAAAyJ,GAAC,OAAIA,EAAEw8E,YAAW5yF,SAC9CgM,OAAO,SAACrN,EAAGwN,GAAJ,OAAUxN,EAAIwN,GAAG,GAAKq/I,EAAmBxrJ,OAAS,IAAMwyJ,EAEpE,OACI7kJ,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QAASwhI,EAAY,oCAAsC,oCAC9EvsI,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOy7I,UAA1B,yDAAAhuJ,OAA8Fk2I,EAAY,wBAA0B,uBAApI,0EACC/lI,GAAQxG,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO27I,SACxBvkJ,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOpC,KAAM60C,OAAO,SAASzjD,KAAM4O,EAAM80C,IAAI,uBAAvD,cAAAjlD,OAA4Fk2I,EAAY,wBAA0B,0BAEtIvsI,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAantE,YACrB7M,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOw7I,YAApB,2BAAA/tJ,OAA4Dk2I,EAAY,wBAA0B,uBAAlG,kBACAvsI,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MApBR,8GAoB4B2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,cAE1Eg1D,EAAa3tE,IAAI,SAAAyyJ,GACd,OACI/kJ,EAAAhP,EAAAiP,cAAC+kJ,GAAD,CACIpsJ,IAAG,+BAAAvC,OAAiC0uJ,EAAI9oF,QACxCswE,UAAWA,EACX4W,gBAAiB4B,EACjBvB,qBAAsB,SAACyB,GACnB,IAAMR,EAAkBxkF,EACnBjhE,OAAO,SAAAkmJ,GAAW,OAAIA,EAAYjpF,SAAWgpF,EAAWhpF,SACxD3pE,IAAI,SAAA4yJ,GAAW,OAAAr0J,OAAA0G,EAAA,EAAA1G,CAAA,GACTq0J,EADS,CAEZxlI,UAAWwlI,EAAYxlI,UAClB1gB,OAAO,SAAAyJ,GAAC,OAAIA,EAAEw8E,gBAE3By/D,EAAsBD,IAE1BpB,qBAAsB,SAAC8B,GACnB,IAAMV,EAAkBxkF,EACnB3tE,IAAI,SAAA4yJ,GACD,OAAIA,EAAYjpF,SAAWkpF,EAAWlpF,OAC3BkpF,EAEJD,IAEV5yJ,IAAI,SAAA4yJ,GAAW,OAAAr0J,OAAA0G,EAAA,EAAA1G,CAAA,GACTq0J,EADS,CAEZxlI,UAAWwlI,EAAYxlI,UAClB1gB,OAAO,SAAAyJ,GAAC,OAAIA,EAAEw8E,gBAE3By/D,EAAsBD,QAKrCK,GACG9kJ,EAAAhP,EAAAiP,cAACmlJ,GAAD,CAAoB58I,QAAS,WACzBk8I,EAAqB,GAAAruJ,OAAAxF,OAAAgO,EAAA,EAAAhO,CACdovE,EACE3tE,IAAI,SAAA4yJ,GAAW,OAAAr0J,OAAA0G,EAAA,EAAA1G,CAAA,GACTq0J,EADS,CAEZxlI,UAAWwlI,EAAYxlI,UAClB1gB,OAAO,SAAAyJ,GAAC,OAAIA,EAAEw8E,iBALV,CAOjB,CACIjpB,cAAc,EACdJ,SAAU,GACVC,WAAY,GACZC,cAAe,GACfC,mBAAmB,EACnBr8C,UAAW,sBCtGjC2lI,GAA4B3zG,GAAgC,YAiDlE,IAAM4zG,GAAiC,SAAAtyJ,GAAgD,IAAAuyJ,EAA7C1xG,EAA6C7gD,EAA7C6gD,OAChC2xG,GAD6ExyJ,EAArCmgD,KACrB,SAACv6C,GAAD,OAA6CyjB,GAAYzjB,EAAK0jB,GAAgB0V,eAEjGyzH,GAAiBF,EAAA,GAAA10J,OAAA2pD,GAAA,EAAA3pD,CAAA00J,EAClBC,EAAiB,YAAc,QADb30J,OAAA2pD,GAAA,EAAA3pD,CAAA00J,EAElBC,EAAiB,UAAY,eAFX30J,OAAA2pD,GAAA,EAAA3pD,CAAA00J,EAGlBC,EAAiB,YAAc,cAHbD,GAMjBG,EAAiB,SAACnsH,EAAsBL,GAAvB,MAA4D,CAC/EvtB,aAAc4tB,EAAc,QAAKrkC,EACjCgX,YAAagtB,EAAU,QAAKhkC,IAQhC,OAAO8K,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAAGyzC,EAAOvhD,IAAI,SAAC0b,EAAM2rE,GAAQ,IALOzgD,EAKPysH,EAC4C9xG,EAAOn5C,IAAIi/E,GAA/ElhD,EADwBktH,EACxBltH,WAAYE,EADYgtH,EACZhtH,aAAcE,EADF8sH,EACE9sH,QAASU,EADXosH,EACWpsH,YAAaE,EADxBksH,EACwBlsH,gBACxD,OAAOz5B,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAK6/B,GACxBz4B,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOwlJ,EAAensH,EAAaE,IAAmBnsB,GAAWqrB,KAC3EY,GACEv5B,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOvzD,IAAK6/B,EAAYv4B,OAVOg5B,EAUyBO,EAVY,CAC5E9tB,aAAc,GACdR,WAAY+tB,EAAU,QAAKhkC,KASf8K,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KAAWxzB,EAAQvmC,IAAI,SAAAgnC,GAAM,OAAIt5B,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAW8rB,MAAM,OAAOx/E,IAAK0gC,EAAOM,UAChE6rH,EAAkBnsH,EAAOM,eAGlC55B,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KAAWxzB,EAAQvmC,IAAI,SAACszJ,EAAiBC,GAAlB,OAAgC7lJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAW8rB,MAAM,OAAOx/E,IAAKgtJ,EAAgBhsH,UAC7E,MAAnBgsH,GACA5lJ,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKw9C,EAAO7lC,KAAZ,KAAA3X,OAAoBsjF,EAApB,cAAAtjF,OAAoCwvJ,EAApC,WACJxvG,UAAWL,GACXsB,SAAU,CAAC+tG,IACXtnG,KAAMjO,IAEN9vC,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,MACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,QAASlB,MAAO,YAAxC,OACP03H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,UAGxB3O,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,KACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO,CAAEkM,QAAS,QAASlB,MAAO,YAAxC,MACP03H,eAAe,MACf1iI,MAAO,CACHyO,eAAgB,sBAqB3Cm3I,GAA2B,SAAC/lG,GAAD,OAAsB,SAAClgD,GAAD,MAA4C,CACtGmxC,QAASA,aAAQ+O,EAAR/O,CAAkBnxC,GAC3B8hC,OAAQokH,aAAchmG,EAAdgmG,CAAwBlmJ,GAChC3I,MAAO8uJ,aAAajmG,EAAbimG,CAAuBnmJ,MAGnBo3C,gBAAiE,CAC5EK,SAjIJ,SAAkB3V,EAAlB/wC,GAAiH,IAAlE84B,EAAkE94B,EAAlE84B,KACrCu8H,EAAkBx/G,KAAiBxrB,KAAK,SAAA6Q,GAAC,MAAc,aAAVA,EAAElzB,MAC/CstJ,EAAgBz/G,KAAiBxrB,KAAK,SAAA6Q,GAAC,MAAc,WAAVA,EAAElzB,MAC7CjI,EAA6B,IAAI6qB,IAEjC+zD,EAAY5tC,EAAO4tC,UACzB,IAAK5tC,EAAO4tC,UACR,MAAO,GAGX,IAAI42E,EAAgD,kBAAM,GAC7C,+BAATz8H,EACAy8H,EAAoB,SAAAttJ,GAAK,MAA4B,QAAxBA,EAAMurB,eACnB,8BAATsF,IACPy8H,EAAoB,SAAAttJ,GAAK,MAA4B,OAAxBA,EAAMurB,gBAGvC,IAAK,IAAIzF,EAAI,EAAGA,EAAI4wD,EAAUl9E,SAAUssB,EAAG,CACvC,IAAMynI,EAAqB,SAAC9sH,GAAD,OAA8BA,GAAUA,EAAOzgC,OAASstJ,EAAkB7sH,EAAOzgC,QAExGwtJ,EAAiB92E,EAAU5wD,GAAGka,QAAQ5d,KAAK,SAAAqe,GAAM,OAAIA,EAAOM,WAAaqsH,EAAgB1rI,KACzF8rI,GAAkBD,EAAmBC,IACrC11J,EAAO8qB,IAAI,uBAEK8zD,EAAU5wD,GAAGka,QAAQ75B,OAAO,SAAAs6B,GAAM,OAAIA,EAAOM,WAAassH,EAAc3rI,KAC1Evb,OAAOonJ,GAAoB/zJ,OAAS,GAClD1B,EAAO8qB,IAAI,qBAGQ8zD,EAAU5wD,GAAGka,QAAQ75B,OAAO,SAAAs6B,GAAM,OAAIA,EAAOM,WAAaqsH,EAAgB1rI,IAAM+e,EAAOM,WAAassH,EAAc3rI,KACpHvb,OAAOonJ,GAAoB/zJ,OAAS,GACrD1B,EAAO8qB,IAAI,yBAInB,OAAI9qB,EAAO2R,KAAO,EACP,CACHgkJ,OAAQ31J,GAGL,IA0FXi9H,oBAAoB,EACpB24B,MAAM,GAHKtvG,CAfW,SAAC/3C,GACvB,OAAOc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACHJ,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,YACLqoC,UAAWivG,QCjIRkB,GAAA,SAAA51J,GAAwJ,IAAA61J,EAAA71J,EAArJsG,aAAqJ,IAAAuvJ,EAA7I,IAAIjrI,IAAyIirI,EAAAC,EAAA91J,EAA1GqoC,oBAA0G,IAAAytH,EAA3F,GAA2FA,EAAvFn3E,EAAuF3+E,EAAvF2+E,UAAWxvB,EAA4EnvD,EAA5EmvD,SAAU/mB,EAAkEpoC,EAAlEooC,qBAAsB2tH,EAA4C/1J,EAA5C+1J,iBAAkB3rI,EAA0BpqB,EAA1BoqB,aACrIwjC,OAAmCtpD,EACnCgC,EAAMoL,KAAO,SAGuPpN,IAFlOyxJ,EAC7B3nJ,OAAO,SAAAkc,GAAI,OAAIF,GAAeE,EAAKX,KAAOS,EAAaT,KACvDU,KAAK,SAAAC,GAAI,OAAKA,EAAKq0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,eAAiBplB,EAAKq0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,gBAAejuC,OAAS,MAGpP6E,EAAM0nB,IAAI,uBACV4/B,EAAY,gMACLtnD,EAAM0nB,IAAI,sBAAwB1nB,EAAM0nB,IAAI,4BACnD4/B,EAAY,oMAGZtnD,EAAM0nB,IAAI,uBACV4/B,EAAY,2JACLtnD,EAAM0nB,IAAI,sBAAwB1nB,EAAM0nB,IAAI,4BACnD4/B,EAAY,2KAKxB,IAAMqoG,EAAsBxmJ,IAAM2xD,QAAQ,WAEtC,OADWl5B,GAAkBy2C,EAAWv2C,EAAsBC,IAE/D,CAACs2C,EAAWv2C,IAEf,OAAOh5B,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO85E,GAAatuE,mBAC9B1L,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAapuE,aAAzB,oBAGC4yC,GAAgBx+C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO,CAAE2I,MAAO9D,GAAQ+B,IAAIb,QAASiD,cAAe,SAAWs1C,GAC5Fx+C,EAAAhP,EAAAiP,cAAC6mJ,GAAD,CACIhvG,cAAe,CACXy3B,UAAWs3E,GAEf9vG,KAAMgJ,EACNr2B,KAAK,iCCtCFq9H,GAAA,SAAAn2J,GAAwH,IAAA61J,EAAA71J,EAArHsG,aAAqH,IAAAuvJ,EAA7G,IAAIjrI,IAAyGirI,EAAAC,EAAA91J,EAA1EqoC,oBAA0E,IAAAytH,EAA3D,GAA2DA,EAAvDn3E,EAAuD3+E,EAAvD2+E,UAAWxvB,EAA4CnvD,EAA5CmvD,SAAU/mB,EAAkCpoC,EAAlCooC,qBAC7FwlB,OAAmCtpD,EAOvC,OANIgC,EAAM0nB,IAAI,uBACV4/B,EAAY,kIACLtnD,EAAM0nB,IAAI,sBAAwB1nB,EAAM0nB,IAAI,4BACnD4/B,EAAY,iJAGTx+C,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO85E,GAAatuE,mBAC9B1L,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAapuE,aAAzB,0BAGC4yC,GAAgBx+C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO,CAAE2I,MAAO9D,GAAQ+B,IAAIb,QAASiD,cAAe,SAAWs1C,GAC5Fx+C,EAAAhP,EAAAiP,cAAC6mJ,GAAD,CACIhvG,cAAe,CACXy3B,UAAWz2C,GAAkBy2C,EAAWv2C,EAAsBC,IAElE8d,KAAMgJ,EACNr2B,KAAK,gCCpBFs9H,GAAA,SAAAp2J,GAAwH,IAAA61J,EAAA71J,EAArHsG,aAAqH,IAAAuvJ,EAA7G,IAAIjrI,IAAyGirI,EAAAC,EAAA91J,EAA1EqoC,oBAA0E,IAAAytH,EAA3D,GAA2DA,EAAvDn3E,EAAuD3+E,EAAvD2+E,UAAWxvB,EAA4CnvD,EAA5CmvD,SAAU/mB,EAAkCpoC,EAAlCooC,qBAC7FwlB,OAAmCtpD,EASvC,OARIgC,EAAM0nB,IAAI,uBACV4/B,EAAY,sKACLtnD,EAAM0nB,IAAI,sBAAwB1nB,EAAM0nB,IAAI,4BACnD4/B,EAAY,qLAKTx+C,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO85E,GAAatuE,mBAC9B1L,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAapuE,aAAzB,qBAGC4yC,GAAgBx+C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO,CAAE2I,MAAO9D,GAAQ+B,IAAIb,QAASiD,cAAe,SAAWs1C,GAC5Fx+C,EAAAhP,EAAAiP,cAAC6mJ,GAAD,CACIhvG,cAAe,CACXy3B,UAAWz2C,GAAkBy2C,EAAWv2C,EAAsBC,IAElE8d,KAAMgJ,EACNr2B,KAAK,iCC3BXu9H,GAAgBt3G,GAAS,YAElBu3G,GAA4B,uCAC5BC,GAA2B,uCAC3BC,GAA8B,uCAC9BC,GAA4B,uCAC5BC,GAAa,aA4E1B,IAAMC,GAA0C,SAAA32J,GAAiG,IAA9FijD,EAA8FjjD,EAA9FijD,OAAQ2zG,EAAsF52J,EAAtF42J,gBAAiBC,EAAqE72J,EAArE62J,kBAMlE/B,EAAiB,SAACnsH,EAAsBL,GAAvB,MAA4D,CAC/EvtB,aAAc4tB,EAAc,QAAKrkC,EACjCgX,YAAagtB,EAAU,QAAKhkC,IAG1BwyJ,EAAc,SAACxuH,GAAD,MAAsC,CACtDvtB,aAAc,GACdR,WAAY+tB,EAAU,WAAQhkC,EAC9BgW,MAAOguB,EAAU,MAAQ,SAI7B,OAAOl5B,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAAGyzC,EAAOvhD,IAAI,SAAC0b,EAAM2rE,GAAQ,IAAAgsE,EACuD9xG,EAAOn5C,IAAIi/E,GAA1FlhD,EADwBktH,EACxBltH,WAAYE,EADYgtH,EACZhtH,aAAcE,EADF8sH,EACE9sH,QAASU,EADXosH,EACWpsH,YAAaE,EADxBksH,EACwBlsH,gBAAiBC,EADzCisH,EACyCjsH,UACnEiuH,GACDlvH,IAAe0uH,IAA4B1uH,IAAe2uH,KAAgCK,IAAsBH,GAC/GM,EAAqBnvH,IAAe2uH,IAA+BK,IAAsBH,GAC/F,OAAOtnJ,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAK6/B,GACvBc,EACGv5B,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOwlJ,EAAensH,EAAaE,IAAmBnsB,GAAWqrB,IAC7E34B,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOvzD,IAAK6/B,EAAYv4B,MAAOwnJ,EAAYjuH,IACvCz5B,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KAAWxzB,EAAQvmC,IAAI,SAACszJ,EAAiBC,GAAlB,OAAgC7lJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MA5BlD,CACpCmP,aAAc,OACdnE,MAAO,OA0BmGktE,MAAM,OAAOx/E,IAAKgtJ,EAAgBhsH,UACjG,MAAnBgsH,GACA5lJ,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKw9C,EAAO7lC,KAAZ,KAAA3X,OAAoBsjF,EAApB,cAAAtjF,OAAoCwvJ,EAApC,WACJxvG,UAAWL,GACXrG,UAAQ,EACR2H,SAAU,CAAC2vG,IACX/mJ,MAAO0I,GAAOi/I,cAEd7nJ,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,MACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOi/I,aAAiBj/I,GAAOk/I,aAAjD,OACPllB,eAAe,MACf1iI,MAAO0I,GAAOm/I,cAElB/nJ,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,KACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOi/I,aAAiBj/I,GAAOk/I,aAAjD,MACPllB,eAAe,MACf1iI,MAAO0I,GAAOm/I,sBAStCP,EACIxnJ,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACMwnJ,GACE5nJ,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOwlJ,EAAensH,EAAaE,IAAmBnsB,GAAWqrB,IAE7E34B,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOvzD,IAAK6/B,EAAYv4B,MAAOwnJ,EAAYjuH,IACvCz5B,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KAAWxzB,EAAQvmC,IAAI,SAACszJ,EAAiBC,GAAlB,OAAgC7lJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAjE1D,CACpCmP,aAAc,OACdnE,MAAO,OA+D2GktE,MAAM,OAAOx/E,IAAKgtJ,EAAgBhsH,UAE7F,MAAnBgsH,GACkB,UAAdlsH,EACA15B,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKw9C,EAAO7lC,KAAZ,KAAA3X,OAAoBsjF,EAApB,cAAAtjF,OAAoCwvJ,EAApC,WACJxvG,UAAWL,GACXrG,UAAQ,EACR2H,SAAU,CAAC2vG,IACX/mJ,MAAO0I,GAAOo/I,kBAEdhoJ,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,aACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOi/I,cAApB,cACPjlB,eAAe,MACf1iI,MAAO0I,GAAOm/I,cAElB/nJ,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAM,kBACN88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,MACT9tE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOi/I,cAApB,mBACPjlB,eAAe,MACf1iI,MAAO0I,GAAOm/I,eAGtB/nJ,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAKw9C,EAAO7lC,KAAZ,KAAA3X,OAAoBsjF,EAApB,cAAAtjF,OAAoCwvJ,EAApC,WACJxvG,UAAWnD,GACXvD,UAAQ,EACRj/C,QAAQ,WACR+iB,SAAUk0I,WAOxC3nJ,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,WAkBhBwI,GAAiD,CACnDi/I,aAAc,CACVz7I,QAAW,SAEf27I,YAAa,CACTp5I,eAAgB,QAEpBm5I,WAAY,CACR58I,MAAO,WAEX88I,iBAAkB,CACd98I,MAAO,QAIF+8I,GAA8C,SAACloG,GAAD,OAAsB,SAAClgD,GAAD,MAA+D,CAC5ImxC,QAASA,aAAQ+O,EAAR/O,CAAkBnxC,GAC3B8hC,OAAQokH,aAAchmG,EAAdgmG,CAAwBlmJ,GAChC3I,MAAO8uJ,aAAajmG,EAAbimG,CAAuBnmJ,MAGnBo3C,gBAA2E,CACtFK,SArMJ,SAAkB3V,GACd,IAAMhxC,EAAsE,CACxE4+E,UAAW,IAETA,EAAY5tC,EAAO4tC,UACzB,IAAK5tC,EAAO4tC,UAAW,MAAO,GAE9B,IAAM24E,EAAoB34E,EAAUt0D,KAAK,SAAA2rI,GAAC,OAAIA,EAAEnuH,aAAeyuH,KACzDiB,EAA2BD,EAAoBA,EAAkBrvH,QAAQ,GAAGhgC,WAAQ3D,EAGpFkzJ,EAAmB74E,EAAUt0D,KAAK,SAAA2rI,GAAC,OAAIA,EAAEnuH,aAAe0uH,KACxDkB,EAAwBD,GAAoBA,EAAiBvvH,QAAQ,GAAGhgC,MAC9E,IAAKwvJ,GAA0D,IAAjCA,EAAsBh2J,OAAc,CAC9D,IAAMi2J,EAAmBF,EAAmB74E,EAAUp0E,QAAQitJ,IAAqB,EACnFz3J,EAAO4+E,UAAW+4E,GAAoB,CAAEzvH,QAAS,IACjDloC,EAAO4+E,UAAW+4E,GAAkBzvH,QAAQ,GAAK,CAAEhgC,MAAO,YAI9D,IAAM0vJ,EAAsBh5E,EAAUt0D,KAAK,SAAA2rI,GAAC,OAAIA,EAAEnuH,aAAe2uH,KAC3DoB,EAA6BD,GAAuBA,EAAoB1vH,QAAQ,GAAGhgC,OAAe,GAClG4vJ,EAA6BF,EAAsBh5E,EAAUp0E,QAAQotJ,IAAwB,EAE7FG,EAAoBn5E,EAAUt0D,KAAK,SAAA2rI,GAAC,OAAIA,EAAEnuH,aAAe4uH,KACzDsB,EAA2BD,GAAqBA,EAAkB7vH,QAAQ,GAAGhgC,OAAe,GAC5F+vJ,EAA2BF,EAAoBn5E,EAAUp0E,QAAQutJ,IAAsB,EAmB7F,OAjBIP,GAA0BA,IAA2Bb,IACb,IAApCkB,EAAyBn2J,QAAkD,IAAlCs2J,EAAuBt2J,SAChE1B,EAAO4+E,UAAWk5E,GAA4B,CAAE5vH,QAAS,IACzDloC,EAAO4+E,UAAWk5E,GAA0B5vH,QAAQ,GAAK,CAAEhgC,MAAO,uCAElElI,EAAO4+E,UAAWq5E,GAA0B,CAAE/vH,QAAS,IACvDloC,EAAO4+E,UAAWq5E,GAAwB/vH,QAAQ,GAAK,CAAEhgC,MAAO,wCAIpEsvJ,GAA0BA,IAA2Bb,IACf,IAAlCqB,EAAuBt2J,SACvB1B,EAAO4+E,UAAWq5E,GAA0B,CAAE/vH,QAAS,IACvDloC,EAAO4+E,UAAWq5E,GAAwB/vH,QAAQ,GAAK,CAAEhgC,MAAO,aAIjElI,GAyJPi9H,oBAAoB,EACpB24B,MAAM,GAHKtvG,CAhC0B,SAAC/3C,GACtC,OAAOc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACHJ,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,YACLqoC,UAAWkxG,GACXC,gBAAiBtoJ,EAAMsoJ,gBACvBC,kBAAmBvoJ,EAAMuoJ,uBC5ItBoB,GAnD6B,SAAAj4J,GAA6I,IAAA81J,EAAA91J,EAA1IqoC,oBAA0I,IAAAytH,EAA3H,GAA2HA,EAAvHn3E,EAAuH3+E,EAAvH2+E,UAAWxvB,EAA4GnvD,EAA5GmvD,SAAU/mB,EAAkGpoC,EAAlGooC,qBAAsB8vH,EAA4El4J,EAA5Ek4J,0BAA2BC,EAAiDn4J,EAAjDm4J,oCAC9HC,EAAiBF,GAA6BA,EAA0Bv5E,UACxEi4E,EAAkBwB,GAAkBA,EAAe,GAAGnwH,SAAWmwH,EAAe,GAAGnwH,QAAQ,IACnD,QAAvCmwH,EAAe,GAAGnwH,QAAQ,GAAGhgC,MAC9BowJ,EAAqBnwH,GAAkBy2C,EAAWv2C,EAAsBC,GAGxEiwH,EAAuBF,GAAkBA,EAAe/tI,KAAK,SAAA2rI,GAAC,OAAIA,EAAEnuH,aAAeyuH,KACnFO,EAAsByB,GAAwBA,EAAqBrwH,QAAQ,GAAGhgC,OAAe,GA4BnG,OA1BAm5D,kBAAQ,WACJ,IAAMm3F,EAAsBF,EAAmBhuI,KAAK,SAAA2rI,GAAC,OAAIA,EAAEnuH,aAAe0uH,KACpEmB,EAAqBa,EAAsBF,EAAmB9tJ,QAAQguJ,IAAwB,EAC9FC,EAAyBD,EAAsBA,EAAoBtwH,QAAQ,GAAGhgC,MAAQ,GACtFwwJ,EAAyBJ,EAAmBhuI,KAAK,SAAA2rI,GAAC,OAAIA,EAAEnuH,aAAe2uH,KACvEkC,EAAwBD,EAAyBJ,EAAmB9tJ,QAAQkuJ,IAA2B,EACvGE,EAA4BF,EAAyBA,EAAuBxwH,QAAQ,GAAGhgC,MAAQ,GACjG4uJ,IAAsBH,GACtByB,EAAmC,aAAA1yJ,OAAciyJ,EAAd,sBAAoDhB,KAEvFyB,EAAmC,aAAA1yJ,OAAciyJ,EAAd,sBAAqDc,IAAyB9B,IAAeE,EAAwB4B,EAAL,IACnJL,EAAmC,aAAA1yJ,OAAcizJ,EAAd,sBAAwDC,IAA4BjC,IAAeE,EAAwB+B,EAAL,MAE9J,CAAC9B,IAEJz1F,kBAAQ,WACCw1F,GACDyB,EAAmBnuI,QAAQ,SAACyd,EAAUohD,GDlCV,yCCmCpBphD,EAASE,YACTswH,EAAmC,aAAA1yJ,OAAcsjF,EAAd,sBAAuC,OAIvF,CAAC6tE,IAGGxnJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO85E,GAAatuE,mBAC9B1L,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAapuE,aAAzB,wBAGA5L,EAAAhP,EAAAiP,cAACupJ,GAAD,CACI1xG,cAAe,CACXy3B,UAAW05E,GAEflyG,KAAMgJ,EACNynG,gBAAiBA,IAAmB,EACpCC,kBAAmBA,MC/ChBgC,GAAA,SAAA74J,GAAwH,IAAA61J,EAAA71J,EAArHsG,aAAqH,IAAAuvJ,EAA7G,IAAIjrI,IAAyGirI,EAAAC,EAAA91J,EAA1EqoC,oBAA0E,IAAAytH,EAA3D,GAA2DA,EAAvDn3E,EAAuD3+E,EAAvD2+E,UAAWxvB,EAA4CnvD,EAA5CmvD,SAAU/mB,EAAkCpoC,EAAlCooC,qBAC7FwlB,OAAmCtpD,EAOvC,OANIgC,EAAM0nB,IAAI,uBACV4/B,EAAY,sKACLtnD,EAAM0nB,IAAI,sBAAwB1nB,EAAM0nB,IAAI,4BACnD4/B,EAAY,qLAGTx+C,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO85E,GAAatuE,mBAC9B1L,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO85E,GAAapuE,aAAzB,8BAGC4yC,GAAgBx+C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO,CAAE2I,MAAO9D,GAAQ+B,IAAIb,QAASiD,cAAe,SAAWs1C,GAC5Fx+C,EAAAhP,EAAAiP,cAAC6mJ,GAAD,CACIhvG,cAAe,CACXy3B,UAAWz2C,GAAkBy2C,EAAWv2C,EAAsBC,IAElE8d,KAAMgJ,EACNr2B,KAAK,iCC1BV,SAASggI,GAAmBxzH,EAAgByzH,GAE/C,OADkB1mJ,KAAKynB,MAAgD,KAAzCwL,EAASyzH,EAAqB,OAAkB,kDCwE5E/gJ,GAAiD,CACnDghJ,iBAAkB,CACdzpJ,UAAW,SACXmO,WAAY,IACZpD,MAAO,IACP7H,OAAQ,IACR4F,YAAa,GACbK,QAAS,GACTqC,aAAc,GACd/B,SAAU,IAEdigJ,oBAAqB,CACjBhgJ,WAAY,OACZD,SAAU,GACV0E,WAAY,IAKLw7I,GA/DM,SAAC5qJ,GAClB,IATkB2rB,EAsBZk/H,EAb0B,CAAC,CAAEl/H,eAAgB,qBAAsBjN,YAAa,2HAA4HuH,KAAM,EAAG5d,MAAO,qBAClO,CAAEsjB,eAAgB,qBAAsBjN,YAAa,+DAAgEuH,KAAM,EAAG5d,MAAO,oBACrI,CAAEsjB,eAAgB,qBAAsBjN,YAAa,gHAAiHuH,KAAM,EAAG5d,MAAO,yBACtL,CAAEsjB,eAAgB,mBAAoBjN,YAAa,6GAA8GuH,KAAM,EAAG5d,MAAO,qBACjL,CAAEsjB,eAAgB,mBAAoBjN,YAAa,oMAAqMuH,KAAM,EAAG5d,MAAO,oBACxQ,CAAEsjB,eAAgB,mBAAoBjN,YAAa,iEAAkEuH,KAAM,EAAG5d,MAAO,yBACrI,CAAEsjB,eAAgB,WAAYjN,YAAa,oOAAqOuH,KAAM,EAAG5d,MAAO,qBAChS,CAAEsjB,eAAgB,WAAYjN,YAAa,kIAA8HuH,KAAM,EAAG5d,MAAO,oBACrL,CAAEsjB,eAAgB,WAAYjN,YAAa,uGAAwGuH,KAAM,EAAG5d,MAAO,yBACnK,CAAEsjB,eAAgB,MAAOjN,YAAa,yGAA0GuH,KAAM,EAAG5d,MAAO,qBAChK,CAAEsjB,eAAgB,MAAOjN,YAAa,6MAA8MuH,KAAM,EAAG5d,MAAO,oBACpQ,CAAEsjB,eAAgB,MAAOjN,YAAa,wGAAyGuH,KAAM,EAAG5d,MAAO,0BAEzIvI,OAAO,SAAC+e,GAC9B,OAAOA,EAAE8M,iBAAmB3rB,EAAM2rB,iBAEtC,OACI7qB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAzBkB,uBADJyqB,EA2BI3rB,EAAM2rB,iBA1BoC,oBAAlBA,GAA0D,YAAlBA,GAAkD,OAAlBA,EAC1G7qB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,SAAGJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOohJ,iBAA1B,WAAoDn/H,EAApD,eAA2F7qB,EAAAhP,EAAAiP,cAAA,WAA9F,UAER,EAyBQD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACpB2vG,EAAaz3J,IAAI,SAAC69D,GACf,OACInwD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC+gC,GAAI,GACX99C,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAOghJ,kBA5CrC,IADOzkI,EA8C4BgrC,EAAKhrC,MA5CxCnlB,EAAAhP,EAAAiP,cAACgqJ,GAAAj5J,EAAD,CAAyB4Y,SAAS,QAAQf,MAAM,YACzC,GAARsc,EACCnlB,EAAAhP,EAAAiP,cAACiqJ,GAAAl5J,EAAD,CAAgC4Y,SAAS,QAAQf,MAAM,YAChD,GAARsc,EACCnlB,EAAAhP,EAAAiP,cAACkqJ,GAAAn5J,EAAD,CAAkB4Y,SAAS,QAAQf,MAAM,iBAEjD,EAuC4B7I,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOihJ,qBAAsB15F,EAAK5oD,OAE/CvH,EAAAhP,EAAAiP,cAAA,SAAIkwD,EAAKvyC,eAnDvB,IAACuH,OC2CVilI,GAAqB,qBACrBC,GAAmC,mCACnCC,GAAqB,qBACrBC,GAA8B,8BAC9BC,GAAwB,wBACxBC,GAAoB,yBACpBC,GAAiB,iBAkFxBC,eAoBF,SAAAA,EAAYzrJ,GAAc,IAAApG,EAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA64J,IACtB7xJ,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA85J,GAAAtrJ,KAAAvN,KAAMoN,KApBV2hF,QAAU3+C,KAmBgBppC,EAlB1B8xJ,iBAAmBvuI,GAAY,WAAYC,GAAgBgV,sBAkBjCx4B,EAjB1ByzI,UAAYzzI,EAAKoG,MAAM2rB,iBAAmBxO,GAAY,UAAWC,GAAgBuO,gBAiBvD/xB,EAhB1B6vC,SAAW7vC,EAAKoG,MAAM2rB,iBAAmBxO,GAAY,SAAUC,GAAgBuO,gBAgBrD/xB,EAf1B2zI,SAAW3zI,EAAKoG,MAAM2rB,iBAAmBxO,GAAY,SAAUC,GAAgBuO,gBAerD/xB,EAd1B0zB,aAAeA,GAAa1zB,EAAKoG,MAAM2rB,gBAcb/xB,EAb1B+xJ,mBAa0B,EAAA/xJ,EAZ1B2zB,YAAcA,GAAY3zB,EAAKoG,MAAM2rB,gBAYX/xB,EAX1B01E,YAAc/lC,GAAe3vC,EAAKoG,MAAM2rB,gBAWd/xB,EAV1BgyJ,4BAA8BzuI,GAAY,WAAYC,GAAgB0V,aAU5Cl5B,EAT1BiyJ,0BAA4B1uI,GAAY,SAAUC,GAAgB0V,aASxCl5B,EAR1BkyJ,yBAA2B3uI,GAAY,WAAYC,GAAgB0V,aAQzCl5B,EAP1BmyJ,OAAS5uI,GAAY,SAAUC,GAAgBikB,qBAOrBznC,EAN1B0gI,UAAYn9G,GAAY,YAAaC,GAAgBikB,qBAM3BznC,EAL1BoyJ,qBAAuBpyJ,EAAKoG,MAAMyb,MAAM+D,KAAK,SAAAxD,GAAI,OAC7CA,EAAK4B,cAAgBob,GAAe,qBAAsB5b,GAAgBQ,eAIpDhkB,EAH1BqyJ,UAAY9uI,GAAY,aAAcC,GAAgBuO,gBAG5B/xB,EAF1BsyJ,SAAW/uI,GAAY,YAAaC,GAAgBuO,gBAE1B/xB,EA0I1BuyJ,gBAAkB,WACd,OAAOvyJ,EAAK+G,MAAMyrJ,gBAAkBxyJ,EAAK+xJ,cAAcS,eAChDxyJ,EAAK+G,MAAM46I,iBAAmB3hJ,EAAK+xJ,cAAcpQ,kBAC/C3hJ,EAAK+G,MAAM0rJ,kBAAoBzyJ,EAAK+xJ,cAAcU,iBAClDzyJ,EAAK+G,MAAM2rJ,2BAA6B1yJ,EAAK+xJ,cAAcW,wBAC7D1yJ,EAAK+G,MAAM8hE,kBAAoB7oE,EAAK+xJ,cAAclpF,iBAClD7oE,EAAK+G,MAAM4rJ,YAAc3yJ,EAAK+xJ,cAAcY,WAC5C3yJ,EAAK+G,MAAM0gC,sBAAwBznC,EAAK+xJ,cAActqH,qBACtDznC,EAAK+G,MAAMogE,eAAiBnnE,EAAK+xJ,cAAc5qF,cAC/CnnE,EAAK+G,MAAM6rJ,yBAA2B5yJ,EAAK+xJ,cAAca,wBACzD5yJ,EAAK+G,MAAMg+I,qBAAuB/kJ,EAAK+xJ,cAAchN,oBACrD/kJ,EAAK+G,MAAM8rJ,uBAAyB7yJ,EAAK+G,MAAM8rJ,sBArJhC7yJ,EA4J1B8yJ,eAAiBh5I,aAAW,SAAC6J,GAAD,OAAwBA,EAAS7B,UAAUK,KAAK,SAAAF,GAAQ,OAAIA,EAASmC,mBAAqBpkB,EAAKoG,MAAM2rB,kBAAiB22F,MA5JxH1oH,EAkN1B+yJ,oBAAsB,SAAC3wI,GACnB,OAAQA,EAAKwV,aAAa1xB,OAAO,SAAA0C,GAAI,OAAIA,EAAKgwB,oBAAsB54B,EAAK8xJ,mBAAkB,GAAGj5H,WAnNxE74B,EAsN1BgzJ,sBAAwB,WACpB,OAAOhzJ,EAAKoG,MAAMud,SAASf,WAAWppB,IAAI,SAAAg6B,GACtC,MAAO,CACH/R,GAAI+R,EAAI/R,GACRyoC,UAAW12B,EAAI02B,UACf7iC,SAAUmM,EAAInM,YAEnBnhB,OAAO,SAAAstB,GAAS,OAAOxzB,EAAKizJ,cAAcz/H,GAAK,MA7N5BxzB,EAgO1BkzJ,mBAAqB,SAAChxI,GAElB,GADsBugI,GAA2BziJ,EAAKoG,MAAM2rB,eAAgB/xB,EAAKiiB,SAAUjiB,EAAKoG,MAAMud,SAAS6kD,gBAC5F,OAAO,EAC1B,IAAM2qF,EAAcjxI,GAAgBliB,EAAKoG,MAAMyb,MAAM,GAC/CuxI,KAAmBpzJ,EAAK+G,QAAS/G,EAAK+G,MAAMy+I,mBAC5CvjI,EAAWjiB,EAAKoG,MAAMud,SAAS7B,UAAU5b,OAAO,SAAA4hI,GAAI,OAAIA,EAAK1jH,mBAAqBpkB,EAAKoG,MAAM2rB,iBACnG,OAAO9P,EAAS1oB,OAAS,GAAM0oB,EAAS,GAAGO,oBAAsB4wI,KAAqBpzJ,EAAK+yJ,oBAAoBI,IAAiBnzJ,EAAK+yJ,oBAAoBI,IAtOnInzJ,EAyO1BqzJ,sBAAwB,WACpBrzJ,EAAK4G,SAAS,CACV4+I,mBAAmB,EACnBgN,cAAexyJ,EAAKszJ,oBAAmB,EAAMtzJ,EAAK+G,MAAMg+I,oBACxD0N,mBAAer2J,EACfs2J,4BAAwBt2J,EACxBm3J,aAAa,IAGjB,IAAIC,EAAmBxzJ,EAAKyzJ,wBAAwBzzJ,EAAK+G,MAAMysJ,iBAAkBxzJ,EAAKoG,MAAM2rB,gBAAgB,GAC5G/xB,EAAK0zJ,sBAAsB1zJ,EAAK+G,MAAM46I,gBACtC3hJ,EAAK2zJ,uBAAuBH,GAC5BxzJ,EAAK4G,SAAS,CAAE4sJ,iBAAkBA,KArPZxzJ,EAoQ1ByzJ,wBAA0B,SAAC9vI,EAAoB6V,EAAeo6H,GAC1D,IAAMC,EAAyB97J,OAAA0G,EAAA,EAAA1G,CAAA,GACxB4rB,EADwB,CAE3B65C,wBAAwBzlE,OAAAgO,EAAA,EAAAhO,CACjB4rB,EAAS65C,2BAIpB,OADAq2F,EAAgBr2F,wBAA0Bx9D,EAAK8zJ,sBAAsBD,EAAgBr2F,wBAAyBhkC,EAAOo6H,GAC9GC,GA5Qe7zJ,EA+Q1B+zJ,wBAA0B,SAACpwI,EAAoB8oH,EAAqBjzG,EAAeo6H,GAU/E,OAT+B77J,OAAA0G,EAAA,EAAA1G,CAAA,GACxB4rB,EADwB,CAE3Bf,WAAYe,EAASf,WAAWppB,IAAI,SAAAqpB,GAAS,OAAA9qB,OAAA0G,EAAA,EAAA1G,CAAA,GACtC8qB,EADsC,CAEzC26C,wBAAyB36C,EAAUpB,KAAOgrH,EACtCzsI,EAAK8zJ,sBAAsBjxI,EAAU26C,wBAAyBhkC,EAAOo6H,GACrE/wI,EAAU26C,+BAtRAx9D,EA2S1Bg0J,wBAA0B,WACtB,IAAM/O,EAAmBjlJ,EAAKoG,MAAMud,SAASf,WAAWppB,IAAI,SAAAg6B,GACxD,MAAO,CACH/R,GAAI+R,EAAI/R,GACRyoC,UAAW12B,EAAI02B,UACf7iC,SAAUmM,EAAInM,YAIlBurI,EAAyB5yJ,EAAKoG,MAAMud,SAASf,WAAWrd,OAAO,SAACqd,EAAYC,GAE5E,OADAD,EAAWC,EAAUpB,SAAMrlB,EACpBwmB,GACR,IAECqxI,EAAaj0J,EAAKkiB,aAAcliB,EAAKkiB,aAAaT,GAAI,GAE1DzhB,EAAK4G,SAAS,CACV+6I,eAAgB,GAChB6D,mBAAmB,EACnBgN,cAAexyJ,EAAKszJ,oBAAmB,EAAOtzJ,EAAK+G,MAAMg+I,oBACzDA,mBAAoB,GACpBE,mBACA2N,2BAGJ,IAAIY,EAA6BxzJ,EAAKyzJ,wBAAwBzzJ,EAAK+G,MAAMysJ,iBAAkBxzJ,EAAKoG,MAAM2rB,gBAAgB,GACtHyhI,EAAiB5wI,WAAWZ,QAAQ,SAACwR,GACjCggI,EAAmBxzJ,EAAK+zJ,wBAAwBP,EAAkBhgI,EAAI/R,GAAIzhB,EAAKoG,MAAM2rB,gBAAgB,KAGzG/xB,EAAK0zJ,sBAAsB,IAE3B1zJ,EAAKu8I,uBAAuB0X,EAAW,GACvCj0J,EAAKk0J,eA5UiBl0J,EA+U1Bm0J,wCAA0C,SAAC3gI,GACvC,IAAM4gI,EAA2Bp0J,EAAK+G,MAAMg+I,mBAAmBziJ,QAG/D,OAFA8xJ,EAAyBvtI,KAAK2M,GACaxzB,EAAKszJ,mBAAmBtzJ,EAAK+G,MAAMy+I,kBAAmB4O,IAlV3Ep0J,EAqV1Bq0J,mBAAqB,SAAC7gI,EAAwB/R,GAC1C,IAAM6yI,EAAqCt0J,EAAKm0J,wCAAwC3gI,GAExF,IAAI8gI,EAAJ,CAIAt0J,EAAK4G,SAAS,SAAAmpD,GACV,IAAMqkG,EAA2BrkG,EAAUg1F,mBAAmBziJ,QAC9D8xJ,EAAyBvtI,KAAK2M,GAC9B,IAAM+gI,EAAyBxkG,EAAUk1F,iBAAiB3iJ,QACpDwD,EAAQyuJ,EAAuBv1H,UAAU,SAAAxL,GAAG,OAAIA,EAAI/R,KAAOA,IACjE,GAAI3b,GAAS,EAAG,CACZyuJ,EAAuBC,OAAO1uJ,EAAO,GACrC,IAAM2uJ,EAAgB1kG,EAAU6iG,uBAEhC,cADO6B,EAAcjhI,EAAI/R,IAClB1pB,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEIg1F,mBAAoBqP,EACpBnP,iBAAkBsP,EAClB3B,uBAAwB6B,EACxBjC,cAAe8B,IAIvB,OAAOv8J,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEIg1F,mBAAoBqP,EACpBnP,iBAAkBsP,EAClB/B,cAAe8B,MAGvB,IAAId,EAAmBxzJ,EAAK+zJ,wBAAwB/zJ,EAAK+G,MAAMysJ,iBAAkB/xI,EAAIzhB,EAAKoG,MAAM2rB,gBAAgB,GAChH/xB,EAAK2zJ,uBAAuBH,GAC5BxzJ,EAAK4G,SAAS,CAAE4sJ,iBAAkBA,MAvXZxzJ,EA0X1B00J,qBAAuB,SAAClhI,EAAwB/R,GAC5CzhB,EAAK4G,SAAS,SAAAmpD,GACV,IAAMwkG,EAAyBxkG,EAAUk1F,iBAAiB3iJ,SAEtC,IADDiyJ,EAAuBv1H,UAAU,SAAAxL,GAAG,OAAIA,EAAI/R,KAAOA,KAC/C8yI,EAAuB1tI,KAAK2M,GAEnD,IAAM4gI,EAA2BrkG,EAAUg1F,mBAAmBziJ,QACxDwD,EAAQsuJ,EAAyBp1H,UAAU,SAAAxL,GAAG,OAAIA,EAAI/R,KAAOA,IAInE,OAHI3b,GAAS,GACTsuJ,EAAyBI,OAAO1uJ,EAAO,GAEpC,CACHi/I,mBAAoBqP,EACpBnP,iBAAkBsP,EAClB/B,cAAexyJ,EAAKszJ,mBAAmBvjG,EAAUy1F,kBAAmB4O,MAG5E,IAAIZ,EAAmBxzJ,EAAK+zJ,wBAAwB/zJ,EAAK+G,MAAMysJ,iBAAkB/xI,EAAIzhB,EAAKoG,MAAM2rB,gBAAgB,GAChH/xB,EAAK2zJ,uBAAuBH,GAC5BxzJ,EAAK4G,SAAS,CAAE4sJ,iBAAkBA,KA7YZxzJ,EAiZ1B20J,uBAA8B,KAjZJ30J,EAmZ1B2zJ,uBAAyB,SAAChwI,GAClB3jB,EAAK20J,wBACLj8J,aAAasH,EAAK20J,wBAEtB30J,EAAK20J,uBAAyB/7J,WAAW,WACrCoH,EAAKoG,MAAMi0D,iBAAiB12C,IAC7B,MAzZmB3jB,EA2Z1B40J,yBAA2B,SAACjxI,EAAoBtB,EAAgB+a,GACxDp9B,EAAK20J,wBACLj8J,aAAasH,EAAK20J,wBAEtB30J,EAAK20J,uBAAyB/7J,WAAW,WACrCoH,EAAKoG,MAAMi0D,iBAAiB12C,EAAUtB,EAAQ+a,IAC/C,MAjamBp9B,EAoa1B60J,qBAAuB/6I,aAAW,SAAC8hD,GAC/B,IAAMk5F,EAAM90J,EAAK+0J,0BAA0Bn5F,GACrC2rE,EAAWvnI,EAAKoG,MAAMmhI,SAE5B,OACIrgI,EAAAhP,EAAAiP,cAAA,yDAC+CD,EAAAhP,EAAAiP,cAAA,WAC1C2tJ,EAAI5uJ,OAAO,SAAAwH,GAAI,OAAIA,EAAKmuD,WAAaC,GAAe75C,WAAUzoB,IAAI,SAAAnC,GAC/D,IAAI29J,EAAcztB,EAASrhI,OAAO,SAAAkc,GAAI,OAAIA,EAAKX,KAAOpqB,EAAEoqB,KACxD,OAAIuzI,EAAYz7J,OAAS,EAEFguI,EAASrhI,OAAO,SAAA7C,GAAC,OAAsB,MAAlBA,EAAE6yE,cAAwB7yE,EAAE+gB,kBAAoB4wI,EAAY,GAAG5wI,kBAAoB/gB,EAAEoe,IAAMuzI,EAAY,GAAGvzI,KAAIloB,OAAS,EAEnJ2N,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAKzI,EAAEoqB,IAAKmoB,GAAQorH,EAAY,GAAG5wI,kBAAoB,MAAQ4wI,EAAY,GAAG77I,gBAA9F,IAA+GjS,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,aAAK,kEAAqED,EAAAhP,EAAAiP,cAAA,YAG/LD,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAKzI,EAAEoqB,IAAKmoB,GAAQorH,EAAY,GAAG5wI,kBAAoB,MAAQ4wI,EAAY,GAAG77I,gBAAgBjS,EAAAhP,EAAAiP,cAAA,YAIvHD,EAAAhP,EAAAiP,cAAA,QAAMrH,IAAKzI,EAAEoqB,SAIjCinG,MA5buB1oH,EA6b1Bi1J,yBAA2B,SAACxhI,GAA4B,IAAAlvB,GAAA,EAAAC,GAAA,EAAAC,OAAArI,EAAA,IACpD,QAAAsI,EAAAC,EAAwB3E,EAAK+G,MAAMysJ,iBAAiB5wI,WAApDhe,OAAAC,cAAAN,GAAAG,EAAAC,EAAAlM,QAAAqM,MAAAP,GAAA,EAAgE,CAC5D,GAD4DG,EAAA3E,MAC9C0zB,iBAAmBA,EAC7B,OAAO,GAHqC,MAAAtuB,GAAAX,GAAA,EAAAC,EAAAU,EAAA,YAAAZ,GAAA,MAAAI,EAAAS,QAAAT,EAAAS,SAAA,WAAAZ,EAAA,MAAAC,GAMpD,OAAO,GAncezE,EAqc1B+0J,0BAA4Bj7I,aAAW,SAAC8hD,GACpC,IAAIk5F,EAAM,IAAIp7J,MAqBd,OApBCkiE,EAAY11D,OAAO,SAAAwH,GAAI,OAAIA,EAAKmuD,WAAaC,GAAe75C,WAAUzoB,IAAI,SAAAnC,GACnE,IAAI29J,EAAch1J,EAAKoG,MAAMmhI,SAASrhI,OAAO,SAAAkc,GAAI,OAAIA,EAAKX,KAAOpqB,EAAEoqB,KAEnE,GAAIuzI,EAAYz7J,OAAS,EAAG,CAExB,IAAI27J,GAAgB,EAChBF,EAAY,GAAG5wI,kBAAoBpkB,EAAKqyJ,UACxC6C,EAAgBl1J,EAAKi1J,yBAAyB90I,GAAmBE,QAE5D20I,EAAY,GAAG5wI,kBAAoBpkB,EAAKsyJ,WAC7C4C,EAAgBl1J,EAAKi1J,yBAAyB90I,GAAmBG,QAGjE40I,GACAJ,EAAIjuI,KAAKxvB,MAMlBy9J,IA3de90J,EA6d1Bm1J,kBAAoBr7I,aAAW,SAAC8hD,GAC5B,QAAmBx/D,GAAfw/D,GAA2C,MAAfA,GAA6C,GAAtBA,EAAYriE,OAAa,OAAO,EAevF,IAbA,IAGI67J,EAHMp1J,EAAK+0J,0BAA0Bn5F,GAGjB11D,OAAO,SAAAmvJ,GAAE,OAAIA,EAAGx5F,UAAYC,GAAe75C,WAAUzoB,IAAI,SAAUyqB,GAAQ,OAAOA,EAAI,KAExGqxI,EADmBt1J,EAAKoG,MAAMmhI,SAASrhI,OAAO,SAAA7C,GAAC,OAAI+xJ,EAAcr8H,SAAS11B,EAAEoe,MAAKnc,KAAK,SAACpN,EAAGwN,GAAJ,OAAUxN,EAAEksB,iBAAmB1e,EAAE0e,mBACvF7e,OAClC,SAACgwJ,EAAU5lJ,GAAX,OAAiB4lJ,EAASC,IAAI7lJ,EAAEyU,iBAAf,GAAA7mB,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAqCw9J,EAAS3zJ,IAAI+N,EAAEyU,mBAAqB,IAAzE,CAA6EzU,MAC9F,IAAI8lJ,KAGJC,GAAU,EACR7sH,EAASnvC,MAAMsrB,KAAKswI,EAAWzsH,UAC/B/mB,EAAY9hB,EAAKoG,MAAMud,SAAS7B,UAfoB6D,EAAA,SAgBjDE,GAEL,IADA,IAAI8vI,GAAa,EAjBqCC,EAAA,SAkB7CC,GAML,GAJI/zI,EAAU8D,KAAK,SAAA2B,GAAE,OAAIA,EAAGlF,SAAWwmB,EAAOhjB,GAAGgwI,GAAGp0I,KAAOk0I,GAAa,EAC/D31J,EAAKoG,MAAMmhI,SAASrhI,OAAO,SAAA7C,GAAC,OAAIA,EAAE6yE,eAActwD,KAAK,SAAA2B,GAAE,OAAIA,EAAG9F,KAAOonB,EAAOhjB,GAAGgwI,GAAGp0I,OAAOk0I,GAAa,GAG3GA,IAAe9sH,EAAOhjB,GAAGgwI,GAAGzxI,kBAAoBpkB,EAAKsyJ,UAAYzpH,EAAOhjB,GAAGgwI,GAAGzxI,kBAAoBpkB,EAAKqyJ,WAAY,CACnH,IAAIpwI,EAAWH,EAAU5b,OAAO,SAAAkc,GAAI,OAAIA,EAAKC,QAAUwmB,EAAOhjB,GAAGgwI,GAAGp0I,KAChEq0I,GAAY,EACZ7zI,EAAS1oB,OAAS,EAEd0oB,EAAS,GAAGW,WAAWppB,IAAI,SAAAmW,GAClBA,EAAEmX,WAAYgvI,GAAY,KAIrCA,GAAY,EACdA,IAAaH,GAAa,KAjB7BE,EAAI,EAAGA,EAAIhtH,EAAOhjB,GAAGtsB,OAAQs8J,IAAKD,EAAlCC,GAqBJF,IAAcD,GAAU,IAvBxB7vI,EAAI,EAAGA,EAAIgjB,EAAOtvC,OAAQssB,IAAKF,EAA/BE,GAyBT,OAAQ6vI,GACThtC,MAvgBuB1oH,EAygB1B+1J,iBAAmB,SAACpU,GAChB,IAAMz/H,EAAeliB,EAAKoG,MAAMyb,MAAMM,KAAK,SAAA9e,GAAC,OAAIA,EAAEoe,KAAOkgI,IACzD,GAAKz/H,EAAL,CAGA,IAAM8zI,IAAoCrU,IAAmB3hJ,EAAK+yJ,oBAAoB7wI,GACtFliB,EAAK4G,SAAS,CACV+6I,iBACA6D,kBAAmBwQ,EACnBjR,mBAAoBpC,GAChB3iJ,EAAKoG,MAAMyb,MACX8/H,EACA3hJ,EAAK+G,MAAMg+I,mBACX/kJ,EAAKoG,MAAMud,SAASf,YAExB2wI,aAAa,GACd,WACCvzJ,EAAKi2J,6BAEc,KAAnBtU,EACA3hJ,EAAKg0J,0BAELh0J,EAAK4G,SAAS,CAAE4rJ,eAAe,EAAOC,mBAAer2J,EAAWs2J,4BAAwBt2J,IAE5F4D,EAAK0zJ,sBAAsB/R,GAE3B,IAAI6R,EAAmBxzJ,EAAK+G,MAAMysJ,iBAElCxzJ,EAAKgzJ,wBAAwBhxI,QAAQ,SAAAwR,GACjCggI,EAAmBxzJ,EAAK+zJ,wBAAwBP,EAAkBhgI,EAAI/R,GAAIzhB,EAAKoG,MAAM2rB,gBAAgB,OAtiBnF/xB,EA6iB1Bi2J,yBAA2B,WACvB,IAAM/Q,EAAqBllJ,EAAKgzJ,wBAC5B/N,EAAmBjlJ,EAAK+G,MAAMk+I,iBAAiB3iJ,QAC7C4zJ,EAAyBn+J,OAAOoM,OAAOnE,EAAK+G,MAAM6rJ,uBAAwB,IAChF1N,EAAmBljI,QAAQ,SAAAwR,GACvB,IAAM2iI,EAAalR,EAAiBjmH,UAAU,SAAA37B,GAAC,OAAIA,EAAEoe,KAAO+R,EAAI/R,KAC5D00I,GAAc,IACdlR,EAAiBuP,OAAO2B,EAAY,UAC7BD,EAAuB1iI,EAAI/R,OAG1CzhB,EAAK4G,SAAS,CACVq+I,mBACA2N,uBAAwBsD,IAE5Bl2J,EAAKo2J,yBAAyBnR,IA5jBRjlJ,EAgkB1Bq2J,wBAA0B,SAAC5D,GACvBzyJ,EAAK4G,SAAS,SAAAmpD,GACV,IAAI6iG,EAAyB5yJ,EAAKoG,MAAMud,SAASf,WAAWrd,OAAO,SAACqd,EAAYC,GAI5E,OAHK7iB,EAAKizJ,cAAcpwI,GAAW,IAAUktC,EAAUk1F,iBAAiBjmH,UAAU,SAAA37B,GAAC,OAAIA,EAAEoe,KAAOoB,EAAUpB,MAAO,IAC7GmB,EAAWC,EAAUpB,IAAMgxI,IAAkBlvI,GAAY,aAAcC,GAAgB0iB,cAAgB,IAAMusH,GAE1G7vI,GACR,IACH,OAAO7qB,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEI0iG,gBACAG,8BA3kBc5yJ,EAglB1Bs2J,mCAAqC,SAAC7D,EAAuB8D,GACzDv2J,EAAK4G,SAAS,SAAAmpD,GACV,IAAI6iG,EAAyB76J,OAAOoM,OAAO,GAAI4rD,EAAU6iG,wBAEzD,OADAA,EAAuB2D,GAAS9D,EACzB16J,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEI6iG,8BAtlBc5yJ,EA2lB1Bw2J,gBAAkB,SAAC7mJ,GACf,IFjwBwBytB,EAAgByzH,EEkwBpC4F,EADgBjxJ,QAAQksB,WAAW/hB,EAAE4yC,OAAOxiD,QACf2xB,WAAW/hB,EAAE4yC,OAAOxiD,YAAS3D,EAC1D+rJ,EAAesO,GAAgB,EAC/BC,EAAkBD,GAAgB,EAElCz2J,EAAK+G,MAAM0gC,sBAAwBznC,EAAKmyJ,OACxCuE,EAAkB9F,GAAmB6F,GAAgB,EAAGz2J,EAAK+G,MAAM8rJ,uBAAyB,EAEvF7yJ,EAAK+G,MAAM0gC,sBAAwBznC,EAAK0gI,YFzwBzBtjG,EE0wBWq5H,GAAgB,EF1wBX5F,EE0wBc7wJ,EAAK+G,MAAM8rJ,qBAA7D1K,EFzwBUh+I,KAAKynB,MAAgD,KAAzCwL,EAASyzH,EAAqB,OAAkB,KEywBgB,GAG1F7wJ,EAAK4G,SAAS,CACViiE,gBAAiBs/E,EACjBwK,UAAW+D,KA1mBO12J,EA8mB1B22J,gCAAkC,SAAChnJ,GAC/B,IAAM83B,EAAsB93B,EAAE4yC,OAAOxiD,MAAQ4F,OAAOgK,EAAE4yC,OAAOxiD,OAAS,EACtEC,EAAK4G,SAAS,CAAE6gC,yBAhnBMznC,EAmnB1Bq+C,aAnnB0BtmD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAmnBX,SAAAC,IAAA,IAAAw+J,EAAAtoJ,EAAAqV,EAAAkzI,EAAA9kI,EAAA+kI,EAAA7vF,EAAA/kD,EAAA60I,EAAAtjB,EAAAogB,EAAAmD,EAAA9vF,EAAAC,EAAA8vF,EAAAhS,EAAAiS,EAAArwF,EAAAzJ,EAAAoqE,EAAAxhE,EAAAmxF,EAAAjxF,EAAAE,EAAAK,EAAA2wF,EAAAC,EAAAC,EAAA5wF,EAAAU,EAAAR,EAAAzqD,EAAAo7I,EAAAC,EAAAC,EAAAC,EAAAz+J,UAAA,OAAAhB,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UAAOm+J,IAAPc,EAAAn+J,OAAA,QAAA6C,IAAAs7J,EAAA,KAAAA,EAAA,IACiBzqI,GAAsBjtB,EAAKoG,MAAMud,SAAU3jB,EAAKoG,MAAMuhB,iBADvE,CAAApvB,EAAAE,KAAA,eAAAF,EAAAw9C,OAAA,wBAGP6gH,GACA52J,EAAK4G,SAAS,CAAE21F,eAAe,IAC/Bv8F,EAAK4G,SAAS,CAAEgpD,wBAAwB,KAExC5vD,EAAK4G,SAAS,CAAE01F,aAAa,IAPtBhuF,EASkDtO,EAAKoG,MAA1Dud,EATGrV,EASHqV,SAAUkzI,EATPvoJ,EASOuoJ,uBAAwB9kI,EAT/BzjB,EAS+ByjB,eAEpC+kI,EAA4BD,IAA2B72J,EAAK23J,uCAA0Cd,EAAuBhxF,wBAA0BgxF,EAAuBhxF,uBAAuBtsE,OAAS,GAE9M0tE,EAAqC6vF,EAA4B,CACnEtxF,+BAAgCqxF,EAAuBrxF,+BACvDE,wBAAuB1lE,EAAK6vC,eAAkBzzC,EAC9CupE,8BAA+BkxF,EAAuBlxF,8BACtDC,uBAAwBixF,EAAuBjxF,uBAC/CC,uBAAwBgxF,EAAuBhxF,uBAAyBgxF,EAAuBhxF,uBAAuB3/D,OAAO,SAAA0xJ,GAAE,OAAIA,EAAG76G,UAAW85G,EAAuBhxF,uBACxKC,SAAU+wF,EAAuB/wF,SAAStsE,IAAI,SAAA2F,GAC1C,MAAO,CACHynB,UAAWznB,EAAOynB,UACb1gB,OAAO,SAAAs/H,GAAM,OAAuB,IAAnBA,EAAOzoF,UACxBvjD,IAAI,SAAAgsI,GAAM,MAAK,CACZ5xE,SAAU4xE,EAAO5xE,SACjBnyC,GAAI+jH,EAAO/jH,GACX2hD,WAAYoiE,EAAOpiE,cAE3BkB,oBAAqBnlE,EAAOmlE,oBAC5BC,yBAA0BplE,EAAOolE,yBACjCC,aAAcrlE,EAAO6kE,qBAAuB,CACxCA,qBAAsB7kE,EAAO6kE,qBAC7B9Z,UAAW/qD,EAAO+qD,UAClB7iC,SAAUloB,EAAOkoB,SACjB8jC,SAAUhsD,EAAOgsD,SACjBD,YAAa/rD,EAAO+rD,YACpB+Y,QAAS9kE,EAAO8kE,QAChB3D,KAAMnhE,EAAOmhE,KACb9sB,QAASr0C,EAAOq0C,QAChBgtB,QAASrhE,EAAOqhE,QAChBr0B,mBAAoBhtC,EAAOgtC,mBAC3B+3B,eAAgB/kE,EAAO+kE,eACvBC,mBAAoBhlE,EAAOglE,mBAC3Bt9B,2BAA4B1nC,EAAO0nC,iCACnCzqC,EACJoiC,YAAar/B,EAAOq/B,YACpBimC,8BAA+BtlE,EAAOslE,8BACtCC,wBAAyBvlE,EAAOulE,wBAChCC,YAAaxlE,EAAOwlE,YACpBC,qBAAsBzlE,EAAOylE,qBAC7BC,eAAgB9yC,EAChB+yC,kBAAmB/yC,EACnBgzC,0BAA2B5lE,EAAO4lE,0BAClCC,eAAgB7lE,EAAO6lE,eACvBC,aAAc9lE,EAAO8lE,aACrBC,iCAAkC/lE,EAAO+lE,iCACzCC,wBAAyBhmE,EAAOgmE,wBAChCC,aAAcjmE,EAAOimE,aACrBC,eAAgB1hD,EAASsR,SACzBqwC,4BAA6BnmE,EAAOkmE,eACpCp+B,qBAAsB9nC,EAAO8nC,yBAGrC,CAAE6+B,SAAU,GAAID,uBAAwB,IAEtC3jD,EAAew/H,GAAgB1hJ,EAAKoG,MAAMyb,MAAO7hB,EAAK+G,MAAM46I,gBAC5DoV,KAAY70I,IAAgBA,EAAauzD,iBAAiBvzD,EAAauzD,eACvEg+D,EAAYzzI,EAAKoG,MAAM2rB,iBAAmBxO,GAAY,UAAWC,GAAgBuO,gBAGjF8hI,EAtEK97J,OAAA0G,EAAA,EAAA1G,CAAA,GAuEJ2yE,GAA6B/mD,GAvEzB,CAwEPklD,gBAAiB4qE,IAAcsjB,EAAY,EAAI/2J,EAAK+G,MAAM8hE,gBAC1DphC,oBAAqBgsG,IAAcsjB,EAAY,EAAI/2J,EAAK+G,MAAM0gC,oBAC9D7kB,WAAYe,EAASf,WAAWppB,IAAI,SAAAg6B,GAAG,OAAAz7B,OAAA0G,EAAA,EAAA1G,CAAA,GAChCy7B,EADgC,CAEnCgwC,YAAahwC,EAAIgwC,cAAgBtD,GAAY23F,MAAQ33F,GAAY23F,MAAQ33F,GAAY43F,SACrFr2I,GAAI+R,EAAI/R,IAAM,GACdypC,YAAa13B,EAAI03B,YAAc13B,EAAI03B,YAAY71B,SAAW,GAC1D81B,SAAU33B,EAAI23B,SACd9/B,eAAgBmI,EAAInI,eAAiBo/C,GAA2Bj3C,EAAInI,qBAAkBjvB,QAhFnF7D,EAAAE,KAAA,GAmFLuH,EAAKoG,MAAM0hD,eAAe+rG,GAnFrB,WAuFLmD,EAAoB,SAACl3H,GAAD,OAA4B,SAACi4H,GAAD,MAA8D,CAChHr4H,iBAAkBq4H,EAAmBr4H,iBACrCC,WAAYo4H,EAAmBp4H,WAC/BC,YAAam4H,EAAmBn4H,YAChCE,eAAgBA,EAChBC,QAASg4H,EAAmBh4H,QAAQvmC,IAAI,SAAAgnC,GAAM,MAAK,CAC/CM,SAAUN,EAAOM,SACjB/gC,MAAOygC,EAAOzgC,YAGhBmnE,EAjGK,GAAA3pE,OAAAxF,OAAAgO,EAAA,EAAAhO,EAmGHiI,EAAKoG,MAAM4xJ,+BAA+BnvH,OACtC7oC,EAAKoG,MAAM4xJ,+BAA+BnvH,OAAO4tC,UAAY,IACnEj9E,IAAIw9J,EAAkBzzI,GAAY,+BAAgCC,GAAgBgkB,iBArG7EzvC,OAAAgO,EAAA,EAAAhO,EAuGHiI,EAAKoG,MAAM6xJ,0BAA0BpvH,OACjC7oC,EAAKoG,MAAM6xJ,0BAA0BpvH,OAAO4tC,UAAY,IAC9Dj9E,IAAIw9J,EAAkBzzI,GAAY,mBAAoBC,GAAgBgkB,iBAzGjEzvC,OAAAgO,EAAA,EAAAhO,EA2GHiI,EAAKoG,MAAM8xJ,mBAAmBrvH,OAC1B7oC,EAAKoG,MAAM8xJ,mBAAmBrvH,OAAO4tC,UAAY,IACvDj9E,IAAIw9J,EAAkBzzI,GAAY,mBAAoBC,GAAgBgkB,iBA7GjEzvC,OAAAgO,EAAA,EAAAhO,EA+GHiI,EAAKoG,MAAM+xJ,2BAA2BtvH,OAClC7oC,EAAKoG,MAAM+xJ,2BAA2BtvH,OAAO4tC,UAAY,IAC/Dj9E,IAAIw9J,EAAkBzzI,GAAY,2BAA4BC,GAAgBgkB,iBAjHzEzvC,OAAAgO,EAAA,EAAAhO,EAmHHiI,EAAKoG,MAAMgyJ,8BAA8BvvH,OACrC7oC,EAAKoG,MAAMgyJ,8BAA8BvvH,OAAO4tC,UAAY,IAClEj9E,IAAIw9J,EAAkBzzI,GAAY,sBAAuBC,GAAgBgkB,kBAGzE2/B,EAAennE,EAAK+G,MAAMogE,aAAajhE,OAAO,SAAA7O,GAAC,OAAKA,EAAEuvB,WAAa,IAAIrtB,OAAS,IAAGC,IAAI,SAAAnC,GACzF,OAAOU,OAAA0G,EAAA,EAAA1G,CAAA,GACAV,EADP,CAEIuvB,UAAWvvB,EAAEuvB,WAAa,OAK5BqwI,EAAoBj3J,EAAK+G,MAAMg+I,mBAAmBvrJ,IAAuB,SAAAg6B,GAC3E,OAAOz7B,OAAA0G,EAAA,EAAA1G,CAAA,GACAy7B,EADP,CAEI1M,SAAU0M,EAAI1M,UAAY9mB,EAAKizJ,cAAcz/H,GAAK,OAIpDyxH,EAAmBthI,EAASf,WAAW1c,OAAO,SAAAstB,GAAG,OAAKyjI,EAAkB90I,KAAK,SAAA8C,GAAC,OAAIA,EAAExD,KAAO+R,EAAI/R,OAChGjoB,IAAuB,SAAAg6B,GACpB,OAAOz7B,OAAA0G,EAAA,EAAA1G,CAAA,GACAy7B,EADP,CAEI1M,UAAU,EACVg9C,eAAgB9jE,EAAK+G,MAAM6rJ,uBAAuBp/H,EAAI/R,QAI5Dy1I,EAAsB,GAAA35J,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAIk/J,GAAJl/J,OAAAgO,EAAA,EAAAhO,CAA0BktJ,IAAkBzrJ,IAAI,SAAAqpB,GACxE,MAAO,CACHqnC,UAAWrnC,EAAUqnC,UACrB7iC,SAAUxE,EAAUwE,SACpB5F,GAAIoB,EAAUpB,GACdqF,SAAUjE,EAAUiE,SACpBg9C,gBAAuC,IAAvBjhD,EAAUiE,SAAoBjE,EAAUihD,oBAAiB1nE,KAI3EyqE,EAAuB7mE,EAAKoG,MAAMiyJ,yBAA2Br4J,EAAKoG,MAAMiyJ,yBAAyBxxF,0BAAuBzqE,EACxHghE,EAA4Bp9D,EAAKoG,MAAMkyJ,wBAA0Bt4J,EAAKoG,MAAMkyJ,wBAAwBpe,uBAAoB99I,EACxHorI,EAAiCxnI,EAAKoG,MAAMmyJ,4BAA8Bv4J,EAAKoG,MAAMmyJ,2BAA2B/wB,+BAChHxhE,EAAiBwhE,IAAmCrtH,GAAgBE,eAAiBmtH,IAAmCrtH,GAAgBG,QACxI68I,KAAkBn3J,EAAKkiB,cAAgBliB,EAAKkiB,aAAa8B,cAAgBwjH,GACzEthE,EAAclmE,EAAKoG,MAAMmyJ,6BAAkD,IAApBpB,GAA4Bn3J,EAAKoG,MAAMmyJ,2BAA2BryF,YAAclmE,EAAKoG,MAAMmyJ,2BAA2BryF,YAAoCzrD,GAAaD,MAC9N4rD,EAAoBpmE,EAAKoG,MAAMmyJ,6BAAiD,IAAnBvyF,GAA2BhmE,EAAKoG,MAAMmyJ,2BAA2BnyF,kBAAoBpmE,EAAKoG,MAAMmyJ,2BAA2BnyF,kBAA8C7rD,GAAiBC,MAEvPisD,EAAmBzmE,EAAKoG,MAAMmyJ,6BAAiD,IAAnBvyF,EAA0BhmE,EAAKoG,MAAMmyJ,2BAA2B9xF,sBAAmBrqE,EAC/Ig7J,EAA4Bp3J,EAAKoG,MAAMmyJ,6BAAiD,IAAnBvyF,GAA2BI,GAAqB7rD,GAAiBH,KAAOpa,EAAKoG,MAAMmyJ,2BAA2B7xF,sBAAmBtqE,EACtMi7J,EAA4Br3J,EAAKoG,MAAMmyJ,4BAA8Bv4J,EAAKoG,MAAMmyJ,2BAA2BlB,0BAC3GC,EAAkC9vB,GAAkCrtH,GAAgBG,SAAW+8I,GAA6BjxF,GAAqB7rD,GAAiBD,SAAW4rD,GAAezrD,GAAaH,QAEzMosD,OAAgDtqE,GAA7Bg7J,EAAyCA,EAA0B59J,IAAI,SAAAg/J,GAC5F,MAAO,CACHtuG,UAAWsuG,EAAgBtuG,UAC3B7iC,SAAUmxI,EAAgBnxI,SAC1B8jC,SAAUqtG,EAAgBrtG,SAC1BD,YAAastG,EAAgBttG,YAC7B5X,oBAAqBklH,EAAgB70F,uBAAyB60F,EAAgBllH,mBAAqBklH,EAAgBllH,wBAAqBl3C,EACxIq3B,gBAAiB+kI,EAAgB/kI,gBACjC+jB,IAAKghH,EAAgBhhH,IACrBmsB,sBAAuB60F,EAAgB70F,8BAE1CvnE,EAUDgrE,EAAsC,CACtCZ,QARoC,CACpCR,eAAgBA,EAChBwhE,+BAAgCA,EAChCthE,YAAaA,EACbE,kBAAmBA,GAKnBK,mBACA4wF,4BACA3wF,mBACA4wF,mCAGE1wF,EAAe5mE,EAAKoG,MAAMqyJ,qBAAuBz4J,EAAKoG,MAAMqyJ,qBAAqB7xF,kBAAexqE,GAClG4D,EAAKiiB,SArME,CAAA1pB,EAAAE,KAAA,gBAsMD0jB,EAA0Bnc,EAAKoG,MAAMsyJ,8BAAgC14J,EAAKoG,MAAMsyJ,8BAA8Bv8I,6BAA0B/f,EAExIm7J,EAxMCx/J,OAAA0G,EAAA,EAAA1G,CAAA,GAyMAiI,EAAKiiB,SAzML,CA0MHoJ,eAAetzB,OAAA0G,EAAA,EAAA1G,CAAA,GACRiI,EAAKiiB,SAASoJ,eADP,CAEVu7C,eACAzqD,0BACA0qD,uBACAjE,iBAAkB5iE,EAAK+G,MAAM67D,iBAC7BxF,0BAA2BA,IAE/BgK,YAAaA,EACb/kD,OAAQriB,EAAK+G,MAAM46I,eACnB79E,eAAgB9jE,EAAK+G,MAAM46I,oBAAkBvlJ,EAAY4D,EAAK+G,MAAM0rJ,cACpEjwI,mBAAoBxiB,EAAK+G,MAAMy+I,kBAC/B1+H,SAAwC,KAA9B9mB,EAAK+G,MAAM46I,eACrB/+H,WAAYs0I,EACZjwF,iBAAkB6vF,EAA4B7vF,OAAuC7qE,EACrF8qE,kBACAC,iBA1NG5uE,EAAAC,KAAA,GAAAD,EAAAE,KAAA,GA+NGuH,EAAKoG,MAAMuyJ,eAAepB,GA/N7B,QAgOHv3J,EAAK+xJ,cAAgB/xJ,EAAK+G,MAC1B/G,EAAKoG,MAAM+4C,OAAOy3G,GAjOf,eAAAr+J,EAAAC,KAAA,GAoOHwH,EAAK+iF,aApOFxqF,EAAAw1H,OAAA,YAAAx1H,EAAAE,KAAA,wBAuOD0jB,EAA0Bnc,EAAKoG,MAAMsyJ,8BAAgC14J,EAAKoG,MAAMsyJ,8BAA8Bv8I,6BAA0B/f,EACxIq7J,EAAwB,CAC1Bh2I,GAAI,GACJvlB,aAAc8D,EAAKoG,MAAMlK,aACzBmmB,OAAQriB,EAAK+G,MAAM46I,eACnBn/H,mBAAoBxiB,EAAK+G,MAAMy+I,kBAC/B1hF,eAAgB9jE,EAAK+G,MAAM46I,oBAAiBvlJ,EAAY4D,EAAK+G,MAAM0rJ,cACnE3rI,SAAwC,KAA9B9mB,EAAK+G,MAAM46I,eACrBhlJ,WAAYqD,EAAKoG,MAAMzJ,WACvBynB,iBAAkBpkB,EAAKoG,MAAM2rB,eAC7BnP,WAAYs0I,EACZjwF,iBAAkB6vF,EAA4B7vF,OAAuC7qE,EACrF+qE,eACAC,YAAaA,EACb/7C,eAAgB,CACZu7C,aAAcA,EACdzqD,wBAAyBA,EACzB0qD,qBAAsBA,EACtBjE,iBAAkB5iE,EAAK+G,MAAM67D,iBAC7BxF,0BAA2BA,GAE/B8J,mBA5PG3uE,EAAAC,KAAA,GAAAD,EAAAE,KAAA,GAgQGuH,EAAKoG,MAAMwyJ,eAAenB,GAhQ7B,QAiQHz3J,EAAK+xJ,cAAgB/xJ,EAAK+G,MACtB6vJ,GAAc52J,EAAKoG,MAAM+4C,SAlQ1B,eAAA5mD,EAAAC,KAAA,GAqQHwH,EAAK+iF,aArQFxqF,EAAAw1H,OAAA,6BAAAx1H,EAAAM,SAAAT,EAAA,mCAnnBW4H,EA63B1B4rJ,sBAAwB,SAACzkF,GACrBnnE,EAAK4G,SAAS,CAAEugE,kBA93BMnnE,EAi4B1B64J,sBAAwB,SAACn8E,EAAa3/B,GAClC/8C,EAAK4G,SAAS,CACVg8D,iBAA8B,MAAZ7lB,KAn4BA/8C,EAs7B1B84J,wBAA0B,SAACn1I,GACvB,IAAMiD,EAAkC,GAexC,OAdAA,EAAUC,KAAK,CACXpF,GAAIkC,EAASlC,GACbmyC,SAAUjwC,EAASiwC,SACnBwP,YAAY,EACZrmB,SAAS,IAEbp5B,EAASf,WAAWZ,QAAQ,SAACwR,GACzB5M,EAAUC,KAAK,CACXpF,GAAI+R,EAAI/R,GACRmyC,SAAUpgC,EAAIogC,SACdwP,YAAY,EACZrmB,SAAS,MAGVn2B,GAt8Be5mB,EAy+B1BkqJ,qBAAuB,SAAC6O,GACpB,IAAMC,EAAkBh5J,EAAKiiB,UAAYjiB,EAAKiiB,SAASmlD,YACjD6xF,EAAkBF,GAAoBA,EAAiB52I,KAAK,SAAAqkD,GAAO,OAAIA,EAAQpiD,mBAAqBpkB,EAAKoG,MAAM2rB,iBACrH,IAAKinI,GAAmBC,EACpB,OAAOj5J,EAAKk5J,2BAA2BD,GAG3C,IAAME,EAAiDn5J,EAAKiiB,UAAYjiB,EAAKiiB,SAASmlD,aAAepnE,EAAKiiB,SAASmlD,YAAYX,iBAC3H2yF,EAAsBp5J,EAAKoG,MAAMud,SAASf,WAAWppB,IAAI,SAACg6B,GAAD,MAAU,CACnEosC,WAAYpsC,EAAI/R,SAAMrlB,EACtBirI,iBAAkB7zG,EAAIogC,eAAYx3D,EAClC8qB,SAAUsM,EAAItM,SACd48H,WAAYqV,GACLA,EAAah3I,KAAK,SAAAk3I,GAAE,OAAIA,EAAGz5F,aAAepsC,EAAI/R,MAC9C03I,EAAah3I,KAAK,SAAAk3I,GAAE,OAAIA,EAAGz5F,aAAepsC,EAAI/R,KAAKqiI,cAI9DsV,EAAoB5sB,QAAQ,CACxB5sE,WAAY5/D,EAAKoG,MAAMud,SAASlC,SAAMrlB,EACtCirI,iBAAkBrnI,EAAKoG,MAAMud,SAASiwC,eAAYx3D,EAClD0nJ,YAAY,EACZ58H,UAAU,IAGd,IAAImwI,EAA4Br3J,EAAKiiB,UAAYjiB,EAAKiiB,SAASmlD,aAAepnE,EAAKiiB,SAASmlD,YAAYiwF,0BAElG/jI,EAAcC,KAOpB,MAAO,CACHkzC,iBAAkB2yF,EAClB/B,0BAA2BA,EAC3B3wF,iBARmB1mE,EAAKiiB,UAAYjiB,EAAKiiB,SAASmlD,aAAepnE,EAAKiiB,SAASmlD,YAAYV,kBAAoB1mE,EAAKiiB,SAASmlD,YAAYV,iBAAiBltE,IAAI,SAAAg/J,GAAe,OAAAzgK,OAAA0G,EAAA,EAAA1G,CAAA,GAC1KygK,EAD0K,CAE7KtxI,SAAUoM,EAAYxN,IAAI0yI,EAAgB/kI,qBAO1CuyC,eAAgBhmE,EAAKiiB,UAAYjiB,EAAKiiB,SAASmlD,aAAepnE,EAAKiiB,SAASmlD,YAAYZ,SAAWxmE,EAAKiiB,SAASmlD,YAAYZ,QAAQR,eACrIwhE,+BAAgCxnI,EAAKiiB,UAAYjiB,EAAKiiB,SAASmlD,aAAepnE,EAAKiiB,SAASmlD,YAAYZ,cAA+EpqE,GAApE4D,EAAKiiB,SAASmlD,YAAYZ,QAAQghE,+BAA8CxnI,EAAKiiB,SAASmlD,YAAYZ,QAAQghE,+BAAiCrtH,GAAgBE,cACtR6rD,YAAalmE,EAAKiiB,UAAYjiB,EAAKiiB,SAASmlD,aAAepnE,EAAKiiB,SAASmlD,YAAYZ,cAA4DpqE,GAAjD4D,EAAKiiB,SAASmlD,YAAYZ,QAAQN,YAA2BlmE,EAAKiiB,SAASmlD,YAAYZ,QAAQN,YAAczrD,GAAaD,MAC1N4rD,kBAAmBpmE,EAAKiiB,UAAYjiB,EAAKiiB,SAASmlD,aAAepnE,EAAKiiB,SAASmlD,YAAYZ,cAAkEpqE,GAAvD4D,EAAKiiB,SAASmlD,YAAYZ,QAAQJ,kBAAiCpmE,EAAKiiB,SAASmlD,YAAYZ,QAAQJ,kBAAoB7rD,GAAiBC,MAChP88B,iBAAkBt3C,EAAK+G,MAAMuwC,mBAnhCXt3C,EAsmC1Bs5J,wBAA0B,WAItB,MAHqC,CACjC1yF,aAAe5mE,EAAKiiB,UAAYjiB,EAAKiiB,SAAUoJ,eAAkBrrB,EAAKiiB,SAAUoJ,eAAgBu7C,kBAAexqE,IAxmC7F4D,EA4mC1Bu5J,qCAAuC,WACnC,IAAMliH,EAAwC,CAC1Cl7B,wBAA0Bnc,EAAKiiB,UAAYjiB,EAAKiiB,SAAUoJ,eAAkBrrB,EAAKiiB,SAAUoJ,eAAgBlP,6BAA0B/f,GAKzI,OAHwC,MAApCi7C,EAASl7B,0BACTk7B,EAASl7B,wBAA0B,GAEhCk7B,GAnnCer3C,EAqnC1Bw5J,oCAAsC,WAIlC,MAH6C,CACzC3yF,qBAAuB7mE,EAAKiiB,UAAYjiB,EAAKiiB,SAAUoJ,eAAkBrrB,EAAKiiB,SAAUoJ,eAAgBw7C,0BAAuBzqE,IAvnC7G4D,EA2nC1By5J,wBAA0B,WAItB,MAH4C,CACxCvf,kBAAoBl6I,EAAKiiB,UAAYjiB,EAAKiiB,SAAUoJ,eAAkBrrB,EAAKiiB,SAAUoJ,eAAgB+xC,+BAA4BhhE,IA7nC/G4D,EA4oC1B05J,8BAAgC,SAACC,EAA6B5U,GAA4C,IAClFniI,EAAiB5iB,EAAKoG,MAAlCud,SAAYf,WACdmlE,EAAU3+C,KAEV9V,EAAc,CAAC,SAAU,mBACzBo5H,EAAmB,SAAC5sJ,GAAD,OAA6CyjB,GAAYzjB,EAAK0jB,GAAgB0V,cAEjGgH,EAAuB,IAAIxd,IAAIE,EAChC1c,OAAO,SAAAstB,GAAG,OAAIhuB,QAAQu/I,EAAmB5iI,KAAK,SAAAukI,GAAC,OAAIA,EAAEjlI,KAAO+R,EAAI/R,QAAMjoB,IAAI,SAAAyrB,GAAC,OAAIA,EAAEwO,kBACjFj6B,IAAI,SAAAo3B,GAAI,OAAIprB,QAAQ8tB,EAAYnR,KAAK,SAAAtgB,GAAC,OAAIA,IAAMkmF,EAAQn3D,GAAM9wB,OAAQ4sJ,EAAiB,UAAYA,EAAiB,eAMzH,OAJIiN,GACAz5H,EAAqBvd,IAAI+pI,EAAiB,aAGvCxsH,GA3pCelgC,EA8pC1BszJ,mBAAqB,SAACqG,EAA6B5U,GAC/C,IAAM6U,EAAgC55J,EAAK65J,mCAE3C,OAD6B75J,EAAK05J,8BAA8BC,EAAoB5U,GACvDj/H,IAAI8zI,IAjqCX55J,EAoqC1B65J,iCAAmC,WAC/B,OAAInmI,GAAa1zB,EAAKoG,MAAM2rB,gBACjB/xB,EAAKiyJ,0BAEZt+H,GAAY3zB,EAAKoG,MAAM2rB,gBAChB/xB,EAAKkyJ,yBAETlyJ,EAAKgyJ,6BA3qCUhyJ,EA8qC1B85J,qCAAuC,WACnC,IAAMC,EAAuB/5J,EAAK65J,mCAClC,OAAIE,IAAyB/5J,EAAKiyJ,0BACvB,SAEP8H,IAAyB/5J,EAAKkyJ,yBACvB,QAEJ,YAtrCelyJ,EAyrC1Bg6J,6BAA+B,WAC3B,IAAMhX,EAAOhjJ,EAAKoG,MAAMud,SAASf,WACjC,GAAoB,IAAhBogI,EAAKzpJ,OACL,OAAO,EAEX,IAAMwjD,EAAU/8C,EAAK+G,MAAMg+I,mBACrB58D,EAASnoF,EAAK+G,MAAMk+I,iBACpBtqI,EAAW3a,EAAKgzJ,wBAKtB,OAH6BhQ,EAAK/yH,MAAM,SAAAuD,GAAG,OAAKupB,EAAQ/d,UAAU,SAAA37B,GAAC,OAAIA,EAAEoe,KAAO+R,EAAI/R,MAAO,GACnF0mE,EAAOnpD,UAAU,SAAA37B,GAAC,OAAIA,EAAEoe,KAAO+R,EAAI/R,MAAO,GAC1C9G,EAASqkB,UAAU,SAAA37B,GAAC,OAAIA,EAAEoe,KAAO+R,EAAI/R,MAAO,KApsC9BzhB,EAwsC1Bi6J,qBAAuB,WACnB,IAAMC,EAAel6J,EAAKoG,MAAMqyJ,qBAAuBz4J,EAAKoG,MAAMqyJ,qBAAqB7xF,kBAAexqE,EAElG,aAAoBA,IAAjB89J,GACIA,EAAe,IA5sCJl6J,EAmtC1Bu8I,uBAAyB,SAACl6H,EAAgB+a,GAEtC,IAAIo2H,EAAgBz7J,OAAA0G,EAAA,EAAA1G,CAAA,GACbiI,EAAK+G,MAAMysJ,iBADE,CAEhB1xI,UAAW9hB,EAAK+G,MAAMysJ,iBAAiB1xI,UAAUtoB,IAAI,SAAAyoB,GAAQ,OAAAlqB,OAAA0G,EAAA,EAAA1G,CAAA,GACtDkqB,EADsD,CAEzDoJ,eAAgBpJ,EAASI,SAAWA,EAApBtqB,OAAA0G,EAAA,EAAA1G,CAAA,GACTkqB,EAASoJ,eADA,CAEZ+xC,0BAA2BhgC,IAC3Bnb,EAASoJ,qBAIrBrrB,EAAKoG,MAAMi0D,iBAAiBm5F,EAAkBnxI,EAAQ+a,GACtDp9B,EAAK4G,SAAS,CAAE4sJ,iBAAkBA,KAjuCZxzJ,EAouC1Bm6J,qCAAuC,SAACC,GACpC,IAAMptH,EAAuBD,GAAgCqtH,GAE7D,OAAOptH,GAAwBA,EAAqBzzC,OAAS,GAruC7D,IAAM8gK,EAAiBr6J,EAAKiiB,SAAWjiB,EAAKiiB,SAASI,YAASjmB,EACxD8lB,EAAew/H,GAAgBt7I,EAAMyb,MAAOw4I,GAC5C1Y,EAAiBS,GAAkBlgI,EAAeA,EAAaT,QAAKrlB,EAAW4D,EAAKiiB,UACpFq4I,EAA8BjY,GAA+Bj8I,EAAM2rB,eAAgB/xB,EAAKiiB,SAAU7b,EAAMud,SAASf,YACjHmiI,EAAqBpC,GACvBv8I,EAAMyb,MACN8/H,EACA2Y,EACAl0J,EAAMud,SAASf,YACjB1c,OAAO,SAAAstB,GAAG,OAAqB,IAAjBA,EAAI1M,WAGdm+H,EAAmBtC,GACrBv8I,EAAMyb,MACN8/H,EACA2Y,EACAl0J,EAAMud,SAASf,YACjB1c,OAAO,SAAAstB,GAAG,OAAqB,IAAjBA,EAAI1M,WACd0rI,EAAgB/P,GAA2Br8I,EAAM2rB,eAAgB/xB,EAAKiiB,SAAU7b,EAAMud,SAAS6kD,gBAC/FoqF,EAAyB5yJ,EAAKiiB,SAAWjiB,EAAKiiB,SAASW,WAAWrd,OAAO,SAACqtJ,EAAwB/vI,GACpG,OAAKA,EAAUihD,eAGR/rE,OAAA0G,EAAA,EAAA1G,CAAA,GACA66J,EADP76J,OAAA2pD,GAAA,EAAA3pD,CAAA,GAEK8qB,EAAUpB,GAAKoB,EAAUihD,iBAJnB8uF,GAMZ,IAAmC,GAEhC2H,EAAkBn0J,EAAM2T,QAAQ0jD,eAAiBz9D,EAAKoG,MAAM2T,QAAQ0jD,eAD7C,IAEvB+8F,EAAmBp0J,EAAMud,UAAYvd,EAAMud,SAAS85C,eAAiBr3D,EAAMud,SAAS85C,eAAiB88F,EACrGE,EAAwBrsH,GAAoBosH,GAHrB,KAIvB/yH,EAAsBrhC,EAAMud,UAAYvd,EAAMud,SAAS8jB,oBACvDrhC,EAAMud,SAAS8jB,oBACflkB,GAAY,SAAUC,GAAgBikB,qBApCtB,OAqCtBznC,EAAK+G,MAAQ,CACTysJ,iBAAiBz7J,OAAA0G,EAAA,EAAA1G,CAAA,GAAMiI,EAAKoG,MAAMud,UAClCg+H,eAAgBA,EAChB8Q,cAAezyJ,EAAKiiB,SAAWjiB,EAAKiiB,SAAS6hD,oBAAiB1nE,EAC9Ds2J,uBAAwB1yJ,EAAKiiB,SAAYjiB,EAAKiiB,SAAS6hD,gBAAkBvgD,GAAY,aAAcC,GAAgB0iB,cAAgB,IAAMlmC,EAAKiiB,SAAS6hD,oBAAkB1nE,EACzKw2J,uBAAwBA,EACxB7N,mBAAoBA,EACpBE,iBAAkBA,EAClBp8E,gBAAiBziE,EAAMud,UAAWvd,EAAMud,SAASklD,iBAAuB,EACxE8pF,UAAWvsJ,EAAMud,SAAWitI,GAAmBxqJ,EAAMud,SAASklD,iBAAmB,EAAG4xF,GAAyB,EAC7GhzH,oBAAqBA,EACrBorH,qBAAsB4H,EACtBn+D,aAAa,EACbC,eAAe,EACf3sC,wBAAwB,EACxB4iG,cAAeA,EACfhN,kBAAmBxlJ,EAAKkzJ,mBAAmBhxI,GAC3CilD,aAAiBnnE,EAAKiiB,UAAYjiB,EAAKiiB,SAASklD,cAAgBnnE,EAAKiiB,SAASklD,aAAa5tE,OAAS,EAAKyG,EAAKiiB,SAASklD,aAAe,CAAC,CACnIjE,cAAc,EACdJ,SAAU,GACVC,WAAY,GACZC,cAAe,GACfC,mBAAmB,IAEvBL,kBAAkB,EAClBtrB,iBAAkBt3C,EAAKoG,MAAMuhB,gBAAgB2vB,iBAC7Ci8G,aAAa,EACb91H,cAAe,GAEnBz9B,EAAK+xJ,cAAgB/xJ,EAAK+G,MAlEJ/G,6EAqEZwzB,EAAwBupB,GAClC,IAAM+4B,EAAkB98E,KAAKkpB,cAAgBlpB,KAAKkpB,aAAa4zD,iBAAyB,GAElF4kF,EAAsBn3I,GAAY,SAAUC,GAAgB0V,aAC5DyhI,EAAqBp3I,GAAY,WAAYC,GAAgB0V,aAI7DrW,EAAY7pB,KAAKoN,MAAMud,SAASf,WAAWT,KAAK,SAAA8C,GAAC,OAAIA,EAAExD,KAAO+R,EAAI/R,KAClEqkI,EAAmB18G,KAAavmB,EAAU4Q,iBAAiB3zB,IAC3DmmC,EAAqC,WAArB6/G,EAAgC,SAAgC,oBAArBA,EAAyC,kBAAoB,QAE9H,OnB1OF,SAAAhuJ,GAAA,IAAGg+E,EAAHh+E,EAAGg+E,gBAAiB8kF,EAApB9iK,EAAoB8iK,iBAAkBF,EAAtC5iK,EAAsC4iK,oBAAqBC,EAA3D7iK,EAA2D6iK,mBAAoBE,EAA/E/iK,EAA+E+iK,oBAAqB9yE,EAApGjwF,EAAoGiwF,QAASrvE,EAA7G5gB,EAA6G4gB,cAAeoiJ,EAA5HhjK,EAA4HgjK,gBAA5H,OACE,SAACtnI,EAAgBupB,EAAkB9W,GAC/B,IAAItrB,GAAoB,EAExBotE,EAAQv0D,EAAIC,iBAAiBuV,UAAUhnB,QAAQ,SAAAgtB,GAC3C4rH,EAAiBphK,IAAI,SAAAoP,GAIjB,OAHIA,EAAKgwB,oBAAsBoW,IAC3Br0B,GAAY/R,EAAKiwB,WAEdjwB,MAIf,IAAM6tB,EAAMwsH,GAAsBzvH,EAAI03B,YAAatjC,IAAOlP,IAGpDqiJ,EAAW,SAAC7/B,EAAgC9wH,GAC9C,OAAY,OAAR8wH,QAAwB9+H,IAAR8+H,GACZzkG,EAAMykG,GAKF,OAAR9wH,QAAwBhO,IAARgO,GACZqsB,EAAMrsB,GAWlB,GAJI0wJ,IACAngJ,GAAW,GAGO,WAAlBsrB,GAAgD,oBAAlBA,EAAqC,CACnE,IAAM2Y,EAAUk3B,EAAgB5vE,OAAO,SAAA2wB,GAAC,OACpCA,EAAEM,gBAAkBujI,GACpBK,EAASlkI,EAAEN,OAAQM,EAAEL,UAEzB7b,EAAWA,GAAYikC,EAAQrlD,OAAS,MACrC,CACH,IAAMyhK,IAAuBxnI,EAAInI,kBAAoBmI,EAAInI,eAAejQ,QAClE6/I,IAA2BznI,EAAInI,kBAAoBmI,EAAInI,eAAew1C,WAEtEjiB,EAAUk3B,EAAgB5vE,OAAO,SAAA2wB,GAAC,OACpCA,EAAEM,gBAAkBwjI,GACpB9jI,EAAE29C,YAAcwmF,GAChBnkI,EAAE09C,gBAAkB0mF,GACpBF,EAASlkI,EAAEN,OAAQM,EAAEL,UAEzB7b,EAAWA,GAAYikC,EAAQrlD,OAAS,EAK5C,OADAohB,EAAWA,IAAcoiC,GAAW89G,GmBmLjCK,CAAoB,CACvBplF,kBACA8kF,iBAAkB5hK,KAAKkpB,aAAelpB,KAAKkpB,aAAa0V,aAAe5+B,KAAKmiK,+BAA+BniK,KAAKoN,MAAMyb,OACtH64I,sBACAC,qBACAE,qBAVsB,EAWtB9yE,QAAS3+C,KACT1wB,cAAe1f,KAAKkpB,aAAe0F,IAAO5uB,KAAKkpB,aAAaxJ,eAAiBkP,MAC7EkzI,gBAAiB9hK,KAAKoN,MAAMud,SAASrC,mBARlC45I,CAUJr4I,EAAWk6B,EAAS9W,0DAGIpkB,GAC3B,IAAMu5I,EAAgC,IAAI14I,IAE1C,OADAb,EAAMG,QAAQ,SAAA3e,GAAC,OAAIA,EAAEu0B,aAAa5V,QAAQ,SAAAq5I,GAAC,OAAID,EAA8Bz4I,IAAI04I,OAC1E3hK,MAAMsrB,KAAKo2I,+CAIlBpiK,KAAKo9J,2BACLp9J,KAAKoN,MAAM6zD,kEAGUgrF,GACrB,IAAMC,EAAqBlsJ,KAAKg6J,wBAEhC,GAAIh6J,KAAKkpB,cAAgBlpB,KAAK+N,MAAMysJ,iBAAiBjpF,eACrD,CACI,IAAM+wF,EAAQtiK,KAAKkpB,aACnBlpB,KAAK+N,MAAMysJ,iBAAiB5wI,WAAa5pB,KAAK+N,MAAMysJ,iBAAiBjpF,eAAe/wE,IAAI,SAAAg6B,GAAG,OAAAz7B,OAAA0G,EAAA,EAAA1G,CAAA,GAASy7B,KACpG,IAAI+nI,EAAaxjK,OAAAgO,EAAA,EAAAhO,CAAOiB,KAAK+N,MAAMysJ,iBAAiB5wI,aAC9CsiI,EAAmB3rJ,OAAS,GAAM0rJ,GAAoBA,EAAiB1rJ,OAAS,IAAOgiK,IAEzFA,EAAcv5I,QAAQ,SAAAwR,GAClB,GAAI0xH,EAAmBt/H,KAAK,SAAA2B,GAAE,OAAIA,EAAG9F,KAAO+R,EAAI/R,MAAQwjI,GAAoBA,EAAiBr/H,KAAK,SAAA2B,GAAE,OAAIA,EAAG9F,IAAM+R,EAAI/R,KAAM,CACvH,IAAIumE,EAAQ,IAAItuF,MAChB85B,EAAIgqC,wBAAwBx7C,QAAQ,SAAAgK,GAC3BA,GAAOsvI,EAAMl3I,kBAEd4jE,EAAKnhE,KAAKmF,KAGlBwH,EAAIgqC,wBAA0BwqB,KAGlChvF,KAAK+N,MAAM46I,gBAAkB3oJ,KAAK+N,MAAM02B,eAAiBzkC,KAAK+N,MAAM02B,cAAgB,EACpFzkC,KAAK47J,yBAAyB57J,KAAK+N,MAAMysJ,iBAAkBx6J,KAAK+N,MAAM46I,eAAgB3oJ,KAAK+N,MAAM02B,eAGjGzkC,KAAK26J,uBAAuB36J,KAAK+N,MAAMysJ,yDAsBnDx6J,KAAK4N,SAAS,CAAE01F,aAAa,EAAOC,eAAe,EAAO3sC,wBAAwB,kDAiGhE4N,EAAmChkC,EAAeo6H,GACpE,IAAM4H,EAAS,IAAI94I,IAAY86C,GAM/B,OALIo2F,EACA4H,EAAO74I,IAAI6W,GAEXgiI,EAAO7uE,OAAOnzD,GAEX9/B,MAAMsrB,KAAKw2I,iDA4BQ7Z,GAC1B,GAAK3oJ,KAAKipB,SAMH,CACH,IAAMm+G,EAAeroI,OAAA0G,EAAA,EAAA1G,CAAA,GAAQiB,KAAKipB,UAClCm+G,EAAgB/9G,OAASs/H,EACzB3oJ,KAAKoN,MAAMq1J,kBAAkBr7B,OATb,CAChB,IAAMA,EAAkB,CACpB/9G,OAAQs/H,EACRhlJ,WAAY3D,KAAKoN,MAAMzJ,YAE3B3D,KAAKoN,MAAMq1J,kBAAkBr7B,qDAsmBjC,IAAMs7B,EAAkC,GAGpC1iK,KAAK2iJ,SACev2G,GAAapsC,KAAKoN,MAAMud,SAASunC,aAAetjC,MAAU5uB,KAAK2iK,oBAAsB/zI,QACtF,IACf8zI,EAAiB70I,KACb3f,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIl2D,IAAK,EACL2O,MAAM,uBACNqkD,SAAS,yHACTpM,UAAW,EACXt/C,MAAO0I,GAAOiH,gBAI9B,IAAM6kJ,EAAuB5iK,KAAKoN,MAAMyb,MAAM3b,OAAO,SAAAkc,GAAI,OAAIA,EAAKG,qBAAqBwW,SAAS,MAAKx/B,OAAS,EAE1GP,KAAK6iK,oBACez2H,GAAapsC,KAAKoN,MAAMud,SAASunC,aAAetjC,MAAU5uB,KAAK2iK,oBAAsB/zI,QACtF,IACf8zI,EAAiB70I,KACb3f,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIl2D,IAAK,EACL2O,MAAM,uBACNqkD,SAAS,qIACTpM,UAAW,EACXt/C,MAAO0I,GAAOiH,eAItB6kJ,GACAF,EAAiB70I,KACb3f,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIl2D,IAAK,EACL2O,MAAM,4BACNqkD,SAAS,6FACTpM,UAAW,EACXt/C,MAAO0I,GAAOiH,gBAI9B,OAAO2kJ,qDAsBwBzC,GAC/B,IAAMxyF,EAAmBztE,KAAKoN,MAAMud,SAASf,WAAWppB,IAAwB,SAACg6B,GAC7E,IAAMsoI,EAA8B7C,EAAgBxyF,iBAAiBtkD,KAAK,SAAAw0H,GAAQ,OAAIA,EAAS/2E,aAAepsC,EAAI/R,KAC5GqiI,IAAagY,GACbA,EAA4BhY,WAElC,MAAO,CACHlkF,WAAYpsC,EAAI/R,GAChB4lH,iBAAkB7zG,EAAIogC,SACtBkwF,WAAYA,KAYpB,OARAr9E,EAAiB+lE,QAAQ,CACrB5sE,WAAY5mE,KAAKoN,MAAMud,SAASlC,GAChC4lH,iBAAkBruI,KAAKoN,MAAMud,SAASiwC,SACtCkwF,YAAY,IAGhBmV,EAAgBxyF,iBAAmBA,EAE5B,CACH4wF,0BAA2B4B,EAAgB5B,0BAC3C5wF,iBAAkBwyF,EAAgBxyF,iBAClCT,eAAgBizF,EAAgBjzF,eAAeziE,WAC/CikI,+BAAgCyxB,EAAgBzxB,+BAChDthE,YAAa+yF,EAAgB/yF,YAC7BE,kBAAmB7rD,GAAiBC,MACpC88B,iBAAkBt+C,KAAK+N,MAAMuwC,wEAkDPykH,GAA0B,IAAAv7J,EAAAxH,KAEpD,GADqB0oJ,GAAgB1oJ,KAAKoN,MAAMyb,MAAO7oB,KAAK+N,MAAM46I,iBAC5Coa,EAAtB,CAEA,IAAMp4I,EAAW3qB,KAAKoN,MAAMud,SACtB1B,EAAW0B,EAAS7B,UAAUK,KAAK,SAAA65I,GAAK,OAAIA,EAAM53I,mBAAqB5jB,EAAK4F,MAAM2rB,iBAClF8W,EAAS5mB,GAAYA,EAASglD,iBAAmBhlD,EAASglD,iBAAmB,GAC/EpB,EAA2C,GAE/C,GAAK5jD,GAAaA,EAASglD,iBAwBpB,CACH,GAAIjuE,KAAK26I,SAAU,CACf,IAAIsoB,EAAsB,GACtBh6I,EAASglD,kBAAoBhlD,EAASglD,iBAAiBpB,yBAAwBo2F,EAAsBh6I,EAASglD,iBAAiBpB,wBAEnIA,EAAuBh/C,KAAK,CACxBpF,GAAIkC,EAASlC,GACbmyC,SAAUjwC,EAASiwC,SACnBwP,YAAY,EACZrmB,QAASk/G,EAAoBr2I,KAAK,SAACgyI,GAAD,OAAwBA,EAAGn2I,KAAOkC,EAASlC,OAEjFkC,EAASf,WAAWZ,QAAQ,SAACwR,GACzBqyC,EAAuBh/C,KAAK,CACxBpF,GAAI+R,EAAI/R,GACRmyC,SAAUpgC,EAAIogC,SACdwP,YAAY,EACZrmB,QAASk/G,EAAoBr2I,KAAK,SAACgyI,GAAD,OAAwBA,EAAGn2I,KAAO+R,EAAI/R,SAKpF,IAAMy6I,EAAoBj6I,EAASglD,iBAAiBnB,SAC/CtsE,IAAI,SAAC2F,GACF,IAAI00I,EAAkBrzI,EAAKs4J,wBAAwBn1I,GAQnD,OAPIxkB,EAAOynB,UAAU,KAAQznB,EAAOynB,UAAU,GAAGu1I,eAAe,aAC5Dh9J,EAAOynB,UAAU5E,QAAQ,SAACwjH,GACtB,IAAI1/H,EAAQ+tI,EAAgB70G,UAAU,SAAC23G,GAAD,OAAkCA,EAASl1H,KAAO+jH,EAAO/jH,KAC/FoyH,EAAgB/tI,GAAOi3C,SAAU,IAErC59C,EAAOynB,UAAYitH,GAEhB97I,OAAA0G,EAAA,EAAA1G,CAAA,GACAoH,EACAA,EAAOqlE,gBAItB,OAAOzsE,OAAA0G,EAAA,EAAA1G,CAAA,GACA8wC,EADP,CAEIg9B,uBAAwBA,EACxBC,SAAUo2F,EACV5kH,iBAAkBt+C,KAAK+N,MAAMuwC,mBA/CjC,OAjBIt+C,KAAK26I,WAEL9tE,EAAuBh/C,KAAK,CACxBpF,GAAIkC,EAASlC,GACbmyC,SAAUjwC,EAASiwC,SACnBwP,YAAY,EACZrmB,SAAS,IAEbp5B,EAASf,WAAWZ,QAAQ,SAACwR,GACzBqyC,EAAuBh/C,KAAK,CACxBpF,GAAI+R,EAAI/R,GACRmyC,SAAUpgC,EAAIogC,SACdwP,YAAY,EACZrmB,SAAS,OAIdhlD,OAAA0G,EAAA,EAAA1G,CAAA,GACA8wC,EADP,CAEIg9B,uBAAwBA,EACxBC,SAAU,GACVxuB,iBAAkBt+C,KAAK+N,MAAMuwC,qDAoLnB,IAAAp2C,EAAAlI,KAAAq9D,EAC8Mr9D,KAAKoN,MAA7Nyb,EADUw0C,EACVx0C,MAAiB8B,GADP0yC,EACHr8C,SADGq8C,EACO1yC,UAAUy4I,EADjB/lG,EACiB+lG,wBAAyBvtB,EAD1Cx4E,EAC0Cw4E,sBAAuBmpB,EADjE3hG,EACiE2hG,+BAAgCC,EADjG5hG,EACiG4hG,0BAA2BC,EAD5H7hG,EAC4H6hG,mBAAoBC,EADhJ9hG,EACgJ8hG,2BAA4BC,EAD5K/hG,EAC4K+hG,8BAExLiE,GAA4BrjK,KAAK+N,MAAMyrJ,mBAAyBx5J,KAAK06B,eAAgB16B,KAAK26B,cAAwD,IAAzC36B,KAAK+N,MAAMg+I,mBAAmBxrJ,QACvI2oB,EAAew/H,GAAgB7/H,EAAO7oB,KAAK+N,MAAM46I,gBAEjD2a,EAAgBtjK,KAAK+N,MAAM4rJ,UADN,KACwC35J,KAAK+N,MAAM8hE,gBADnD,IAErB0zF,KAAUr6I,IAAgBA,EAAauzD,iBAAiBvzD,EAAauzD,eACrE+mF,EAAyBt6I,EAAeA,EAAa0V,aAAe/V,EAAM,GAAKA,EAAM,GAAG+V,aAAe,GACvG4sH,EAA8BxC,GAAyB9/H,GACvDkjI,EAAiClD,GAAiChgI,GAClEU,EAAae,EAASf,WACxB65I,GAAsB,EACtBrX,IACAqX,OAAoCrgK,GAAd8lB,IAA8BlpB,KAAKm8J,kBAAkBjzI,EAAa05C,cAAgB5iE,KAAK+N,MAAMyrJ,gBAIvH,IAAMkK,EAAwB1jK,KAAKkpB,cAAiBlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,+BAAgCC,GAAgBgkB,gBACvKm1H,EAAoB3jK,KAAKkpB,cAAiBlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,gBACvJo1H,EAAuB5jK,KAAKkpB,cAAiBlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,sBAAuBC,GAAgBgkB,gBAC7Jq1H,EAAoB7jK,KAAKkpB,cAAiBlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,gBACvJs1H,EAA4B9jK,KAAKkpB,cAAiBlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,2BAA4BC,GAAgBgkB,gBAEvKu1H,EAAM/jK,KAAK+uF,QAAQ/uF,KAAKoN,MAAM2rB,gBAAgBhyB,MAC9C4xI,EAAuC,OAArB34I,KAAKoN,MAAMgM,MAC7B4qJ,EAAqBhkK,KAAK2iJ,QAAU3iJ,KAAK4iJ,aAAgBqhB,GAA6Bxb,GACtFl/H,EAAuBL,EAAeA,EAAaK,qBAAuB,GAC1E+1H,EAAyB/1H,EAAqBwW,SAAS,GACvDs/G,EAA0B91H,EAAqBwW,SAAS,GACxD8sC,EAAyBtjD,EAAqBwW,SAAS,IACvDmkI,EAAwBlkK,KAAKy6I,WAAa4E,GAA6Br/I,KAAK62C,UAAYyoG,GAA4Bt/I,KAAK26I,UAAY9tE,EACrIntD,EAAgBsc,GAA4B9S,EAAcyB,EAASsR,UACnEkoI,EAAwB56I,EAAqBwW,SAAS,IACtDqkI,EAA6B76I,EAAqBwW,SAAS,IAC3DskI,EAAgC96I,EAAqBwW,SAAS,IAC9DwgH,EAAyBvgJ,KAAK8gK,uCAC9BwD,EAAoB/6I,EAAqBwW,SAAS,IAClDwkI,EAAqBh7I,EAAqBwW,SAAS,IACnDykI,OAA+CphK,GAAhB8lB,GAA+Bq7I,IAAuBjlB,GAA0BD,GAA2BxyE,GAE1I43F,EAD8BzkK,KAAKoN,MAAMyb,MAAM3b,OAAO,SAAAkc,GAAI,OAAIA,EAAKG,qBAAqBwW,SAAS,MAC3C7yB,OAAO,SAAAkc,GAAI,OAAIA,EAAKgC,mBAAqBljB,EAAKkF,MAAM2rB,iBAC1G2rI,EAA6BD,EAAwBv3J,OAAO,SAAAkc,GAAI,OAAIA,EAAKG,qBAAqBwW,SAAS,KAAIx/B,OAAS,EACpHokK,EAA8BF,EAAwBv3J,OAAO,SAAAkc,GAAI,OAAIA,EAAKG,qBAAqBwW,SAAS,KAAIx/B,OAAS,EACrHqkK,EAA6BH,EAAwBv3J,OAAO,SAAAkc,GAAI,OAAIA,EAAKG,qBAAqBwW,SAAS,MAAKx/B,OAAS,EACrHm9I,EAAmB8mB,GAA+BxkK,KAAK+N,MAAMk+I,iBAAiB1rJ,OAAS,IAAsC,IAAjCP,KAAK+N,MAAMy+I,oBACpGkY,GAA8BC,GAA+BC,KAAgE,IAAjC5kK,KAAK+N,MAAMy+I,kBAC1GqY,EAAyBjuH,GAAuB52C,KAAKoN,MAAM2rB,gBAE3D+rI,EAA8BvB,GAC/Br6I,GAAgBA,EAAayzD,yBAC5BunF,GAAuBxmB,KAAqBmnB,GAC9CV,GAAyBC,GAA8BC,GACtDX,GAAyBA,EAAsBnjK,OAAS,GACxDojK,GAAqBA,EAAkBpjK,OAAS,GAChDqjK,GAAwBA,EAAqBrjK,OAAS,GACtDsjK,GAAqBA,EAAkBtjK,OAAS,GAChDujK,GAA6BA,EAA0BvjK,OAAS,EAE/D2rJ,EAAqBlsJ,KAAKg6J,wBAE1B+K,IAA6B/kK,KAAKoN,MAAMqyJ,sBAAuBz/J,KAAKihK,uBAEpED,EAA+BhhK,KAAKghK,+BACpCgE,GAA6BjmK,OAAO8wC,OAAO7vC,KAAK+N,MAAM6rJ,wBAAwB1sJ,OAAO,SAAA7C,GAAC,OAAIA,IAAG9J,OAC7F0kK,GAAwBjlK,KAAK+N,MAAMk+I,iBAAiB/+I,OAAO,SAAAstB,GAAS,OAAQtyB,EAAK+xJ,cAAcz/H,GAAK,KAAUj6B,OAC9GmsJ,GAAqB1sJ,KAAK+5J,oBAAoB7wI,GAA8BlpB,KAAKoN,MAAMyb,MAAM,IAE7Fq8I,IADsBv6I,EAASrC,qBAA8BtoB,KAAK+N,MAAMy+I,oBAAsBE,KAAuB1sJ,KAAK+N,MAAM0rJ,eAAmBuL,IAA8BC,MACnIjlK,KAAK+N,MAAMyrJ,iBAAmBx5J,KAAK+N,MAAM46I,iBAAmBya,IAA6BE,EACvIx7B,GAAsB7zG,GAAsBj0B,KAAKoN,MAAMud,SAAU3qB,KAAKoN,MAAMuhB,iBAC5EuyH,GAAoBlhJ,KAAKoN,MAAMkyJ,wBAA0Bt/J,KAAKoN,MAAMkyJ,wBAAwBpe,uBAAoB99I,EAChH+hK,KACFj8I,IACIA,EAAayJ,sBAAwBmvC,GAAsBmE,gBAAmC7iE,IAAtB89I,IAC1EyP,GvPn6Bc,CACpByU,IAAK,QACLC,GAAI,SACJC,GAAI,YACJC,GAAI,eACJC,GAAI,UACJC,EAAG,YACH3qH,EAAG,cACHF,EAAG,UuP25BoC56C,KAAK+N,MAAM8rJ,sBAE5CzsF,MAAoBptE,KAAKoN,MAAMmyJ,4BAA8Bv/J,KAAKoN,MAAMmyJ,2BAA2BnyF,oBAAsB7rD,GAAiBH,MAC1Ig9I,GAA4Bp+J,KAAKoN,MAAMmyJ,4BAA8BnyF,GAAoBptE,KAAKoN,MAAMmyJ,2BAA2B7xF,sBAAmBtqE,EAClJsiK,IAA0Bt4F,IAAsBA,IAAqBgxF,IAA6BA,GAA0B79J,OAAS,EAErIolK,GAAmC3lK,KAAKo5J,uBACtCp5J,KAAK+N,MAAMy+I,qBACVxsJ,KAAK+N,MAAM0rJ,eACbz5J,KAAKmhK,qCAAqCnhK,KAAK+N,MAAM0rJ,eAExDmM,GAEAb,GACAG,KACClE,IACAnrB,GACDwtB,IACCrE,EAA+B9/G,UAC/B+/G,EAA0B//G,UAC1BggH,EAAmBhgH,UACnBigH,EAA2BjgH,UAC3Bl/C,KAAKoN,MAAMy4J,2BACZ7lK,KAAK+N,MAAMu1F,aACXtjG,KAAK+N,MAAMw1F,gBACV67D,EAA8BlgH,SAC/B4oF,IACAq9B,KACCO,IACAC,IAAoC3lK,KAAKoN,MAAM04J,oCAChD9lK,KAAKoN,MAAMkwD,YAEXyoG,GACAhB,GACAG,KACClE,IACAnrB,GACDwtB,GACArjK,KAAK+N,MAAMu1F,aACXtjG,KAAK+N,MAAMw1F,eACXukC,KACC49B,IACD1lK,KAAKoN,MAAMkwD,iBAE0Bl6D,GAAd8lB,GAA8BlpB,KAAKm8J,kBAAkBjzI,EAAa05C,eAEzFgjG,IAAkB,EAClBG,IAAwB,GAI5B,IvP12BiCvlI,GuP02BV5sB,GAIjB05I,IvP92B2B9sH,GuP82BsBxgC,KAAKoN,MAAM2rB,evP72BlEud,GAAwB,mBAAoB9V,KAAU8V,GAAwB,YAAa9V,IACpF,CAAC,MAER8V,GAAwB,yBAA0B9V,IAC3C,CAAC,KAAM,MAEX,IuPw2BG0wH,GAAuBlxJ,KAAKkxJ,qBAAqBlxJ,KAAKoN,MAAM2yJ,kBAC5Dz3I,KAAoBqC,GAAWA,EAASrC,kBAC9C,OACIpa,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAEMtO,KAAK2iJ,QAAU3iJ,KAAK4iJ,eAClB10I,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,wCACNqkD,SAAS,gFACTpM,UAAW,EACXqL,aAAc,EACdF,YAAY,EACZzqD,MAAO0I,GAAOiH,cAGtB7P,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAAS8qJ,EAAnC,aACA71J,EAAAhP,EAAAiP,cAAC63J,GAAD,CACIjtI,eAAgBgrI,IAEpB71J,EAAAhP,EAAAiP,cAAC83J,GAAD,UACA/3J,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOovJ,iBAA1B,2DAC4Dh4J,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOqvJ,gBAAiBpC,GADjG,UAGCc,EACG32J,EAAAhP,EAAAiP,cAACi4J,GAAD,CACI9Y,sBAAuBA,GACvB1jI,WAAYA,EACZmiI,mBAAoB/rJ,KAAK+N,MAAMg+I,mBAC/BE,iBAAkBjsJ,KAAK+N,MAAMk+I,iBAC7BC,mBAAoBA,EACpBkB,mBAAoBptJ,KAAKq7J,mBACzBhO,kBAAmBrtJ,KAAK07J,qBACxBjQ,kBAAmBzrJ,KAAKq6J,sBACxB7N,kBAAmBxsJ,KAAK+N,MAAMy+I,kBAC9BE,mBAAoBA,GACpBlB,4BAA6BA,EAC7BY,+BAAgCA,EAChCR,0BAA2B5rJ,KAAKs9J,mCAChC7Q,iBAAkBzsJ,KAAK+N,MAAMyrJ,cAC7B1N,+BAAgC9rJ,KAAKq9J,wBACrCzO,QAAS5uJ,KAAKg7J,wBACd7rE,OAAQnvF,KAAK+N,MAAMyrJ,cACnBzgI,eAAgB/4B,KAAKoN,MAAM2rB,iBAG/B7qB,EAAAhP,EAAAiP,cAACk4J,GAAD,CACIn1G,UAAWvmC,EAASumC,UACpB7iC,SAAU1D,EAAS0D,SACnBm+H,kBAAmBxsJ,KAAK+N,MAAMy+I,kBAC9BE,mBAAoBA,IAAsBpkI,GAC1Ck7I,uBAAwBA,EACxB55I,WAAYA,EACZmiI,mBAAoB/rJ,KAAK+N,MAAMg+I,mBAC/BE,iBAAkBjsJ,KAAK+N,MAAMk+I,iBAC7BC,mBAAoBA,EACpBkB,mBAAoBptJ,KAAKq7J,mBACzBhO,kBAAmBrtJ,KAAK07J,qBACxBjQ,kBAAmBzrJ,KAAKq6J,sBACxBzN,iBAAkB5sJ,KAAKg7J,wBACvB9xI,aAAcA,EACdujI,iBAAkBzsJ,KAAK+N,MAAMyrJ,cAC7BnjB,uBAAwBr2I,KAAK+N,MAAM0rJ,cACnC6M,wBAAyBtmK,KAAK+N,MAAM2rJ,uBACpC5N,+BAAgC9rJ,KAAKq9J,wBACrC7R,4BAA6BA,EAC7BY,+BAAgCA,EAChC1vE,YAAa18E,KAAK08E,YAClBsvE,iBAAkBhsJ,KAAK+N,MAAM6rJ,uBAC7BhO,0BAA2B5rJ,KAAKs9J,qCAExCpvJ,EAAAhP,EAAAiP,cAAC83J,GAAD,UACA/3J,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOovJ,iBAA1B,sBACwBnC,EAAIzxI,cAD5B,4BAGCtyB,KAAKumK,0BACJ/a,IAAgCY,GAAkCvjI,EAAMroB,IAAI,SAAA4oB,GAC1E,IAAM+4F,EAAaj6G,EAAKi0J,kBAAkB/yI,EAAKw5C,cAAgB16D,EAAK6F,MAAMyrJ,cACpE1rI,EAAW5lB,EAAK6F,MAAMyrJ,cAC5B,GAAItxJ,EAAK+gB,UAAY/gB,EAAK+gB,SAASoJ,eAE/B,GAAIvE,EAAU,CACV,IAAIw4G,EAAOp+H,EAAKkF,MAAMo5J,UAAUr9I,KAAK,SAAAs9I,GAAK,OAAIA,EAAMp9I,SAAWD,EAAKX,KAChE69G,IAAOA,EAAK7hG,cAAgB,EAAG6hG,EAAK5oH,aAAe,EAAG4oH,EAAK1oH,aAAe,QAE7E,GAAI1V,EAAK6F,MAAMwsJ,YAAa,CAC7B,IAAImM,EAAMx+J,EAAK+gB,UAAY/gB,EAAK+gB,SAASoJ,gBAAkBnqB,EAAK+gB,SAASoJ,eAAe+xC,0BAA4Bl8D,EAAK+gB,SAASoJ,eAAe+xC,0BAA4B,EACzKuiG,EAASv9I,GAAQA,EAAK+7C,eAAiB/7C,EAAK+7C,eAAiB,EAC7DyhG,EAASz1J,KAAKC,IAAIs1J,EAAKC,GAC3Bz+J,EAAK0F,SAAS,CAAE2sJ,aAAa,EAAO91H,cAAemiI,IACnD1+J,EAAK+gB,SAASoJ,eAAe+xC,0BAA4BwiG,EACrD1+J,EAAK6F,MAAM46I,iBAAmBv/H,EAAKX,IAAMvgB,EAAK0zJ,yBAAyB1zJ,EAAK6F,MAAMysJ,iBAAkBpxI,EAAKX,GAAIm+I,GAGzH,OACI14J,EAAAhP,EAAAiP,cAAC61J,EAAD,CACIl9J,IAAKsiB,EAAKX,GACVW,KAAMA,EACN0+H,YAAan9H,EAASunC,YAAc9lB,GAAazhB,EAASunC,kBAAe9uD,EACzEkjI,KAAMp+H,EAAKkF,MAAMo5J,UAAUr9I,KAAK,SAAAs9I,GAAK,OAAIA,EAAMp9I,SAAWD,EAAKX,KAC/DqzC,SAAU5zD,EAAK6F,MAAM46I,iBAAmBv/H,EAAKX,GAC7C43H,WAAY,kBAAMn4I,EAAK60J,iBAAiB3zI,EAAKX,KAC7C9G,SAAUwgG,EACVhzB,OAAQjnF,EAAK6F,MAAMyrJ,cACnBlZ,oBAAqBn+B,EAAaj6G,EAAK2zJ,qBAAqBzyI,EAAKw5C,kBAAex/D,EAChFm9I,uBAAwBA,EACxB97E,eAAgB95C,EAAS85C,eACzB5jD,gBAAiB3Y,EAAK2Y,gBACtB0iI,uBAAwBr7I,EAAKq7I,uBAC7BT,+BAAgC56I,EAAKu4J,0BACrCzc,aAAc97I,EAAK6F,MAAM46I,iBAAmBv/H,EAAKX,GACjDqF,SAAYA,OAWtB09H,GAA+BY,IAAmCljI,GAChEhb,EAAAhP,EAAAiP,cAAC61J,EAAD,CACI56I,KAAMF,EACNo9G,KAAMtmI,KAAKoN,MAAMo5J,UAAUr9I,KAAK,SAAAs9I,GAAK,OAAIA,EAAMp9I,SAAWH,EAAaT,KACvE23H,aAAcqjB,EAAoB,GAAG,yBACrCnjB,oBAAqBmjB,EAAsBzjK,KAAK67J,qBAAqB3yI,EAAa05C,kBAAex/D,EACjG04D,UAAU,EACVn6C,SAAU8hJ,EACVt0E,OAAQnvF,KAAK+N,MAAMyrJ,cACnB/0F,eAAgB95C,EAAS85C,eACzB5jD,gBAAiB7gB,KAAK6gB,gBACtB0iI,uBAAwBvjJ,KAAKujJ,uBAC7BT,+BAAgC9iJ,KAAKygK,0BACrCzc,cAAc,IAIlB8gB,GACA52J,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC83J,GAAD,UACA/3J,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOovJ,iBAA1B,4BAMQ,IAAZ3C,GACAr1J,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOy7I,SAAU3zJ,QAAQ,MAA5C,0BACAsP,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOlD,MAAjB,iGACA1F,EAAAhP,EAAAiP,cAAC04J,GAAD,CACIhW,aAAa,EACbhhF,gBAAiB7vE,KAAK+N,MAAM8hE,gBAC5B4gF,UAAWzwJ,KAAK+N,MAAM4rJ,UACtBlrH,oBAAqBzuC,KAAK+N,MAAM0gC,oBAChCsiH,UAAW/wJ,KAAKw9J,gBAChB1M,cAAe9wJ,KAAK29J,gCACpBz0I,aAAcA,EACdonI,mBA5RO,IA6RPwW,aAAc9mK,KAAK+N,MAAM8rJ,qBACzBlJ,cAAeA,GACfD,mBAAoBnmI,GAAY,SAAUC,GAAgBikB,qBAC1DmiH,sBAAuBrmI,GAAY,YAAaC,GAAgBikB,wBAKxEvlB,GAAgBA,EAAayzD,wBAC7BzuE,EAAAhP,EAAAiP,cAAC44J,GAAD,CACIp8I,SAAU3qB,KAAKoN,MAAMud,SACrBwjD,aAAcnuE,KAAK+N,MAAMogE,aACzB49E,mBAAoB/rJ,KAAK+N,MAAMg+I,mBAC/Br3I,KAAMwU,EAAa+zD,OACnB7xD,iBAAkBprB,KAAKoN,MAAM2rB,eAC7B65H,sBAAuB5yJ,KAAK4yJ,wBAGpC1kJ,EAAAhP,EAAAiP,cAAC64J,GAAD,CACI/4G,SAAU0qG,GACVzH,qBAAsBA,GACtBvmI,SAAU3qB,KAAKoN,MAAMud,SACrBoO,eAAgB/4B,KAAKoN,MAAM2rB,eAC3Bm2G,sBAAuBlvI,KAAK+N,MAAM46I,eAClCxX,wBAAyBnxI,KAAKkpB,aAAelpB,KAAKkpB,aAAa/I,gBAAkB,GACjFuvH,wBAAyB1vI,KAAK+N,MAAMyrJ,iBAEtC0K,GAAuBxmB,KAAqBmnB,GAC1C32J,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmwJ,oBACrB,oEAEL/4J,EAAAhP,EAAAiP,cAAC+4J,GAAD,CACI97I,iBAAkBprB,KAAKoN,MAAM2rB,eAC7BrZ,cAAiC,gBAAlBA,EAAkCA,EAAgB1f,KAAKoN,MAAMuhB,gBAAgBjP,cAAgBkP,IAAO5uB,KAAKoN,MAAMuhB,gBAAgBjP,eAAe2c,OAAO,cAAgB,YACpL2pB,cAAehmD,KAAKmnK,8BAA8BzpB,GAClD/yH,SAAUA,EACVpB,qBAAsBA,EACtB41H,8BAA+Bn/I,KAAK2+J,uCAAyCjhB,EAC7EA,gBAAiBA,EACjBvC,iCAAkCwqB,MAI7Cz8I,GAAgBo7I,GACbp2J,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOgD,aAAnB,+BAGA5L,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAO0I,GAAOojI,eAC7BhsI,EAAAhP,EAAAiP,cAAA,OAAKC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO6D,QAAY7D,GAAO60H,eAzNhD/3H,GAyN6E,kCAAArP,OAAmC2kB,EAAasc,YAAhD,KAxNzFt3B,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO0C,WAAY5F,MAyNZ1F,EAAAhP,EAAAiP,cAACs2C,GAAA,EAAD,CACI19C,MAAO/G,KAAK+N,MAAM67D,iBAAmB,IAAM,IAC3CrmB,SAAUvjD,KAAK6/J,sBACfzxJ,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOqD,WAAerD,GAAOuD,aAEzCnM,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,IAAO88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cAAgB9C,MAAM,QAC1E/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,IAAO88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cAAgB9C,MAAM,WAM1F/F,EAAAhP,EAAAiP,cAAA,YAGPg2J,GACGj2J,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOgD,aAA1B,wBAGA5L,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmwJ,oBAA1B,gGAGA/4J,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACi5J,GAAD,CAAkBphH,cAAehmD,KAAKsgK,6BAE1CpyJ,EAAAhP,EAAAiP,cAAA,YAGPi2J,GACGl2J,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOgD,aAA1B,8BAGA5L,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmwJ,oBAA1B,wJAGA/4J,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACk5J,GAAD,CAA6BrhH,cAAehmD,KAAKugK,0CAErDryJ,EAAAhP,EAAAiP,cAAA,YAGPk2J,GACGn2J,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOgD,aAA1B,iCAGA5L,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACm5J,GAAD,CAAwBthH,cAAehmD,KAAKwgK,0CAKpDxgK,KAAKkpB,cACLlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,sBAAuBC,GAAgBgkB,iBAChHxuC,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,sBAAuBC,GAAgBgkB,gBAAejuC,OAAS,GACxI2N,EAAAhP,EAAAiP,cAACo5J,GAAD,CACIniK,MAAOg6J,EAA8Bh6J,MACrC6oD,SAAUyqG,GACVj7E,UAAWz9E,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,sBAAuBC,GAAgBgkB,gBAC3HtH,qBAAsBlnC,KAAKknC,qBAC3BC,aAAcnnC,KAAKipB,UAAYjpB,KAAKipB,SAASilD,gBAC7C8oF,0BAA2Bh3J,KAAKoN,MAAM4pJ,0BACtCC,oCAAqCj3J,KAAKoN,MAAM6pJ,sCAKpDj3J,KAAKkpB,cACLlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,+BAAgCC,GAAgBgkB,iBACzHxuC,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,+BAAgCC,GAAgBgkB,gBAAejuC,OAAS,GACjJ2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAC8mJ,GAAD,CACI7vJ,MAAO45J,EAA+B55J,MACtC6oD,SAAUsqG,GACV96E,UAAWz9E,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,+BAAgCC,GAAgBgkB,gBACpItH,qBAAsBlnC,KAAKknC,qBAC3BC,aAAcnnC,KAAKwnK,uCAK3BxnK,KAAKkpB,cACLlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,iBAC7GxuC,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,gBAAejuC,OAAS,GACrI2N,EAAAhP,EAAAiP,cAACumJ,GAAD,CACItvJ,MAAO65J,EAA0B75J,MACjC6oD,SAAUqqG,GACV76E,UAAWz9E,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,gBACxHtH,qBAAsBlnC,KAAKknC,qBAC3B2tH,iBAAkBhsI,EAClBK,aAAcA,EACdie,aAAcnnC,KAAKynK,0BAIvBznK,KAAKkpB,cACLlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,iBAC7GxuC,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,gBAAejuC,OAAS,GACrI2N,EAAAhP,EAAAiP,cAAC+mJ,GAAD,CACI9vJ,MAAO85J,EAAmB95J,MAC1B6oD,SAAUuqG,GACV/6E,UAAWz9E,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,mBAAoBC,GAAgBgkB,gBACxHtH,qBAAsBlnC,KAAKknC,qBAC3BC,aAAcnnC,KAAK0nK,0BAIvB1nK,KAAKkpB,cACLlpB,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,2BAA4BC,GAAgBgkB,iBACrHxuC,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,2BAA4BC,GAAgBgkB,gBAAejuC,OAAS,GAC7I2N,EAAAhP,EAAAiP,cAACwpJ,GAAD,CACIvyJ,MAAO+5J,EAA2B/5J,MAClC6oD,SAAUwqG,GACVh7E,UAAWz9E,KAAKkpB,aAAau0D,UAAUvwE,OAAO,SAAA4nJ,GAAC,OAAIA,EAAEhuH,iBAAmBvc,GAAY,2BAA4BC,GAAgBgkB,gBAChItH,qBAAsBlnC,KAAKknC,qBAC3BC,aAAcnnC,KAAK2nK,kCAI3Bz5J,EAAAhP,EAAAiP,cAAA,YAEEnO,KAAKoN,MAAM8iB,mBACThiB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsH,gBACdpe,KAAKoN,MAAMyrI,gBAIpB3qI,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO8wJ,aACf15J,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIjmC,QAAS1W,KAAKoN,MAAMsrI,oBACpBtqI,MAAOuqI,EAAkB7hI,GAAOgiI,mBAAqBhiI,GAAOkpF,aAC5Dr+E,SAAU3hB,KAAK+N,MAAMu1F,aAAetjG,KAAK+N,MAAMw1F,cAC/Ch+C,UAAWozF,GAJf,WAQAzqI,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAE,IAAAlkB,OAAMw/J,EAAN,uBACFrtJ,QAAS,kBAAMxO,EAAKm9C,cAAa,IACjCj3C,MAAOuqI,EAAkB7hI,GAAO6xH,mBAAqB7xH,GAAOkpF,aAC5DphG,QAAQ,WACRimD,QAAS7kD,KAAK+N,MAAMu1F,YACpB3hF,SAAU3hB,KAAK+N,MAAMuwC,iBAAmBynH,GAAwBH,GAChErgH,UAAWozF,GAPf,QASUorB,GAEV71J,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAE,IAAAlkB,OAAMw/J,EAAN,mBACFrtJ,QAAS,kBAAMxO,EAAKm9C,cAAa,IACjCj3C,MAAOuqI,EAAkB7hI,GAAO6xH,mBAAqB,GACrD/pI,QAAQ,YACRmY,MAAM,UACN8tC,QAAS7kD,KAAK+N,MAAMw1F,cACpB5hF,SAAU3hB,KAAK+N,MAAMuwC,iBAAmBynH,GAAwBH,GAChErgH,UAAWozF,GARf,qBAaF7Q,IACE55H,EAAAhP,EAAAiP,cAAC23H,GAAD,CACIzuE,cAAer3D,KAAKiU,MACpB4+E,OAAQ7yF,KAAKqlD,aACbnG,QAASl/C,KAAK+N,MAAMuwC,kBAAoBynH,IAAyBH,GACjEzuG,QAASn3D,KAAKu5J,kBACdviG,aAAch3D,KAAK+N,MAAMu1F,aAAetjG,KAAK+N,MAAMw1F,kDAllDnE,OAAOvjG,KAAK85J,eAAe95J,KAAKoN,MAAMud,sEAItC,OAAQ3qB,KAAKoN,MAAMy6J,mCAAqCthI,GAAWvmC,KAAKoN,MAAMy6J,kCAAkCpqF,YAAgBz9E,KAAKipB,UAAYjpB,KAAKipB,SAASilD,gEAI/J,OAAQluE,KAAKoN,MAAM06J,uBAAyBvhI,GAAWvmC,KAAKoN,MAAM06J,sBAAsBrqF,YAAgBz9E,KAAKipB,UAAYjpB,KAAKipB,SAASilD,gEAIvI,OAAQluE,KAAKoN,MAAM26J,uBAAyBxhI,GAAWvmC,KAAKoN,MAAM26J,sBAAsBtqF,YAAgBz9E,KAAKipB,UAAYjpB,KAAKipB,SAASilD,wEAIvI,OAAQluE,KAAKoN,MAAM46J,+BAAiCzhI,GAAWvmC,KAAKoN,MAAM46J,8BAA8BvqF,YAAgBz9E,KAAKipB,UAAYjpB,KAAKipB,SAASilD,2DAIvJ,OAAOluE,KAAKoN,MAAMyb,MAAMtoB,OAAS,GAAKP,KAAKoN,MAAMyb,MAAM,GAAGnJ,mDAG3C,IAAAtX,EAAApI,KACf,OAAOA,KAAKoN,MAAMyb,MAAMM,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAOrgB,EAAK2F,MAAM46I,gDAG7C,IAAAsf,EAAAjoK,KAAE,OAAO6xC,GAAiB,YAAYjlB,KAAK,SAAAyS,GAAM,OAAIA,EAAO5W,KAAOw/I,EAAK76J,MAAM2rB,sDACxE,IAAAmvI,EAAAloK,KAAE,OAAO6xC,GAAiB,kBAAkBjlB,KAAK,SAAAyS,GAAM,OAAIA,EAAO5W,KAAOy/I,EAAK96J,MAAM2rB,2DAC/E,IAAAovI,EAAAnoK,KAAE,OAAO6xC,GAAiB,uBAAuBjlB,KAAK,SAAAyS,GAAM,OAAIA,EAAO5W,KAAO0/I,EAAK/6J,MAAM2rB,oDAChG,IAAAqvI,EAAApoK,KAAE,OAAO6xC,GAAiB,gBAAgBjlB,KAAK,SAAAyS,GAAM,OAAIA,EAAO5W,KAAO2/I,EAAKh7J,MAAM2rB,yDAG/F,OAAOlY,GAAgB7gB,KAAKoN,MAAM2T,uEAIlC,IAAIm2D,GAAS,EAYb,OAXIl3E,KAAKoN,MAAMywJ,yBACX3mF,GAA+E,IAArEl3E,KAAKoN,MAAMywJ,uBAAuBrxF,iCAC4B,IAApExsE,KAAKoN,MAAMywJ,uBAAuBlxF,gCAC0B,IAA5D3sE,KAAKoN,MAAMywJ,uBAAuBnxF,wBAC2B,IAA7D1sE,KAAKoN,MAAMywJ,uBAAuBjxF,yBACuB,IAAzD5sE,KAAKoN,MAAMywJ,uBAAuBpxF,oBACjCzsE,KAAKoN,MAAMywJ,uBAAuBhxF,wBAA0B7sE,KAAKoN,MAAMywJ,uBAAuBhxF,uBAAuBtsE,OAAS,GAC3HP,KAAKoN,MAAMywJ,uBAAuBhxF,uBAAuB3/D,OAAO,SAAAsiH,GAAC,OAAIA,EAAEzrE,UAASxjD,OAAS,GAI9F22E,gCAm7BP,IAAM73C,EAASr/B,KAAK+uF,QAAQ/uF,KAAKoN,MAAM2rB,gBAEvC,OADcsG,GAAUA,EAAOt4B,mDAIA,IAAA+1D,EACmB98D,KAAK+N,MAA/Cy+I,EADuB1vF,EACvB0vF,kBAAmBT,EADIjvF,EACJivF,mBAC3B,OAAO/rJ,KAAK0gK,8BAA8BlU,EAAmBT,UA7pCrCx9I,IAAMi5C,WAg2DtC,IAAM1wC,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7CmpF,GAD6C,CAEhD8X,aAAc,CACV/nF,OAAQ,GAEZ0wH,mBAAoB,CAChB1wH,OAAQ,YAEZ6gI,mBAAoB,CAChB7gI,OAAQ,WACRS,aAAc,IAElBwtJ,gBAAiB,CACb7sJ,WAAY,GACZnC,WAAY,GACZY,SAAU,GACVf,MAAO,QACP8C,aAAc,IAElBotJ,mBAAoB,CAChBnvJ,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExBq6D,iBAAkB,CACdl3D,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdquJ,eAAgB,CACZ1qJ,cAAe,cAEnBmsJ,YAAa,CACTv5J,UAAW,SAEfkkJ,SAAU,CACNx7I,MAAO9D,GAAQC,KAAKU,MAExBqF,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVZ,UAAW,GACXE,cAAe,IAEnB1C,KAAM,CACFqC,MAAO9D,GAAQiB,KAAKQ,KACpBqhD,eAAgB,YAChBj+C,SAAU,GACVZ,WAAY,GACZ2C,aAAc,IAElBkE,YAAa,CACTlE,aAAc,IAElBH,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,GACX2C,aAAc,GACdnC,WAAY,UAEhB2wJ,iBAAkB,CACdpwJ,OAAQ,iBAEZmG,eAAgB,CACZjD,UAAW,SACX9M,UAAW,QACXyJ,SAAU,IAEdlE,KAAM,CACFkE,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExBoH,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,QACtB2D,SAAU,GACVqD,UAAW,SACXhE,YAAa,IAEjB+D,YAAa,CACTnE,MAAO9D,GAAQC,KAAKU,KACpBuH,UAAW,SACXrD,SAAU,GACV+B,aAAc,IAElByuJ,aAAc,CACVhuJ,QAAS,OACTO,WAAY,SACZhB,aAAc,GAElB0uJ,eAAgB,CACZlvJ,WAAY,MAILwjC,gBACXC,YAxKJ,SAAyB/uC,EAAmBi6C,GACxC,IAAMr9B,EAAW5c,EAAM4c,SAASvC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOu/B,EAASrkD,aAC/Dqd,EAAWjT,EAAMiT,SAAS6uB,OAC1BhnB,EAAQ9a,EAAMqb,KAAKhB,KAAKlb,OAAO,SAAAkc,GAAI,OAAKA,EAAKgC,mBAAqB48B,EAASjvB,iBAC3Ew1G,EAAWxgI,EAAMqb,KAAKhB,KACtBytH,IAAwB9nI,EAAMmhB,WAAWqB,iBACzCi2I,EAAY77I,EAAW5c,EAAMw5H,gBAAgBn/G,KAAKlb,OAAO,SAAAs7J,GAC3D,OAAOA,EAAK5hG,aAAej8C,EAASlC,IAAMI,EAAM+D,KAAK,SAAA67I,GAAK,OAAIA,EAAMhgJ,KAAO+/I,EAAKn/I,WAC/E,GAECw0I,EAAyB5J,aAAczZ,GAAdyZ,CAAoClmJ,GAC7Dq1J,EAA0BlkH,aAAQs7F,GAARt7F,CAA8BnxC,GACxD+3J,EAA4G,IAAvE/mK,OAAOsN,KAAKw/H,aAAkB2O,GAAlB3O,CAAwC99H,IAAQxN,OACjGslK,EAA4B3mH,aAAQwpH,GAARxpH,CAAwCnxC,GAEpE0xJ,EAAuBxL,aAAc0U,GAAd1U,CAA8BlmJ,GACrD2xJ,EAAgCzL,aAAc2U,GAAd3U,CAA2ClmJ,GAC3EsxJ,EAA2BpL,aAAcyU,GAAdzU,CAA8ClmJ,GACzEuxJ,EAA0BrL,aAAc4U,GAAd5U,CAAqClmJ,GAE/D+6J,EAAmC7U,aAAcyE,GAAdzE,CAAqClmJ,GACxE+5J,EAAwB7T,aAAcqE,GAAdrE,CAAkClmJ,GAC1Dg6J,EAAwB9T,aAAcuE,GAAdvE,CAAkClmJ,GAC1D85J,EAAoC5T,aAAcsE,GAAdtE,CAAgDlmJ,GACpFi6J,EAAgC/T,aAAcwE,GAAdxE,CAA2ClmJ,GAE3EwxJ,EAA6BtL,aAAc0E,GAAd1E,CAAiClmJ,GAEpE,MAAO,CACHuvD,YAAa6iC,aAAUw4D,GAAVx4D,CAA6BpyF,IAAUoyF,aAAUy4D,GAAVz4D,CAA0BpyF,GAC9EwgI,WACA1lH,QACA8B,WACAgE,gBAAiB5gB,EAAMmhB,WACvBnO,QAAShT,EAAMmhB,WAAWnO,QAC1BC,WACAwlJ,YACA3I,yBACAuF,0BACA0C,qCACAjwB,wBACA4pB,uBACAC,gCACAJ,0BACAD,2BACAwG,4BACA7G,+BAAgChL,GAAyBuE,GAAzBvE,CAA2DjmJ,GAC3F85J,oCACA5I,0BAA2BjL,GAAyBsE,GAAzBtE,CAA6CjmJ,GACxE+5J,wBACA5I,mBAAoBlL,GAAyBwE,GAAzBxE,CAA6CjmJ,GACjEg6J,wBACA5I,2BAA4BnL,GAAyByE,GAAzBzE,CAAsDjmJ,GAClFi6J,gCACA5I,8BAA+BjJ,GAA4CuC,GAA5CvC,CAAmEpoJ,GAClGipJ,0BAA2B8R,EAC3BvJ,+BAIR,SAA4BlgK,EAAe2oD,GACvC,MAAO,CACH43G,eAAgB,SAAA32I,GAAQ,OAAI5pB,ElP3uD7B,SAAwB88C,EAAmBj5C,EAAsB+lB,GACpE,sBAAAy7G,EAAA3lI,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwlI,EAAOtlI,EAAeixC,GAAtB,IAAA1vC,EAAAmoK,EAAA,OAAA9pK,EAAAC,EAAAI,KAAA,SAAAulI,GAAA,cAAAA,EAAArlI,KAAAqlI,EAAAplI,MAAA,cAAAolI,EAAArlI,KAAA,EAAAqlI,EAAAplI,KAAA,EAEoBypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,cAAiE,CACpFimC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAUqc,KAJ1B,cAEOroB,EAFPikI,EAAAn9E,KAMCz+B,EAASR,GAAK7nB,EAAK6nB,GANpBo8G,EAAAplI,KAAA,EAOOJ,EAASmvD,GAAcrS,EAAWj5C,EAAc+lB,EAAStlB,aAPhE,OAQOolK,EAAWz4H,IAAWjR,OAAOwQ,OAAO5mB,EAASmC,kBAAkBrkB,MACrE1H,EAASX,EAAe,GAAA6F,OAAIwkK,EAAJ,mBAA+B,YATxDlkC,EAAAplI,KAAA,uBAAAolI,EAAArlI,KAAA,GAAAqlI,EAAAl9E,GAAAk9E,EAAA,SAWCxlI,EAAS0B,EAAyB8jI,EAAAl9E,GAAK,+BAXxCk9E,EAAAl9E,GAAA,yBAAAk9E,EAAAhlI,SAAA8kI,EAAA,kBAAP,gBAAAqkC,EAAAC,GAAA,OAAAvkC,EAAA3kI,MAAAC,KAAAC,YAAA,GkP0uDyC2/J,CAAe53G,EAAS7L,UAAW6L,EAAS9kD,aAAc+lB,KAC/F02I,eAAgB,SAAA12I,GAAQ,OAAI5pB,ElPztD7B,SAAwB88C,EAAmBj5C,EAAsB+lB,GACpE,sBAAAq7G,EAAAvlI,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAolI,EAAOllI,EAAeixC,GAAtB,IAAAy4H,EAAA,OAAA9pK,EAAAC,EAAAI,KAAA,SAAAklI,GAAA,cAAAA,EAAAhlI,KAAAglI,EAAA/kI,MAAA,cAAA+kI,EAAAhlI,KAAA,EAAAglI,EAAA/kI,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiE0kB,EAASR,IAAM,CACtF0gB,OAAQ,MACRC,KAAMv5B,KAAKjD,UAAUqc,KAJ1B,cAAAu7G,EAAA/kI,KAAA,EAMOJ,EAASmvD,GAAcrS,EAAWj5C,EAAc+lB,EAAStlB,aANhE,OAOOolK,EAAWz4H,IAAWjR,OAAOwQ,OAAO5mB,EAASmC,kBAAkBrkB,MACrE1H,EAASX,EAAe,GAAA6F,OAAIwkK,EAAJ,mBAA+B,YARxDvkC,EAAA/kI,KAAA,sBAAA+kI,EAAAhlI,KAAA,EAAAglI,EAAA78E,GAAA68E,EAAA,SAUCnlI,EAAS0B,EAAyByjI,EAAA78E,GAAK,iCAVxC68E,EAAA78E,GAAA,yBAAA68E,EAAA3kI,SAAA0kI,EAAA,iBAAP,gBAAA2kC,EAAAnkC,GAAA,OAAAT,EAAAvkI,MAAAC,KAAAC,YAAA,GkPwtDyC0/J,CAAe33G,EAAS7L,UAAW6L,EAAS9kD,aAAc+lB,KAC/F6lC,eAAgB,SAAAnkC,GAAQ,OAAItrB,EAASyvD,GAAe9G,EAAS7L,UAAW6L,EAAS9kD,aAAcynB,KAC/Fs2C,eAAgB,kBAAM5hE,EAAS4hE,QAAe79D,KAC9Ci+D,iBAAkB,SAAC12C,EAAUtB,EAAiB+a,GAA5B,OAAgD/kC,EAASgiE,GAAiB,CAAE12C,SAAUA,EAAUtB,OAAQA,EAAQ46C,kBAAmB7/B,MAErJm2G,iCAAkC,SAACngD,EAAerzF,GAAhB,OAAgC1H,EAAS2uD,aAAOwsF,GAAsBpgD,EAAOrzF,KAC/GkwJ,oCAAqC,SAAC78D,EAAerzF,GAAhB,OAAgC1H,EAAS2uD,aAAO0qG,GAAuBt+D,EAAOrzF,QAoGvHouB,eAFW0nB,CAGbg8G,ICriEIsQ,GAAgC56J,IAAMizC,KAAK,SAACp0C,GAC9C,IAAMud,EAAWpc,IAAM2xD,QAAQ,WAC3B,OAAO9yD,EAAM+a,cAAcC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOrb,EAAMzJ,cAC9D,CAACyJ,EAAMzJ,WAAYyJ,EAAM+a,cAAcC,OAHqBs5B,EAIjCnzC,IAAMozC,UAAS,GAJkBC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAIxDmD,EAJwDjD,EAAA,GAI/CmrC,EAJ+CnrC,EAAA,GAAA0qC,EAKX/9E,IAAMozC,UAAS,GALJ4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAKxDwrD,EALwDvrD,EAAA,GAKpCwrD,EALoCxrD,EAAA,GAOzDvmC,EAAgBz3C,IAAM2xD,QAAQ,WAChC,IAAMkpG,EAAaz+I,EAASkmD,mBAAqBlmD,EAASkmD,kBAAkB1nD,KAAK,SAAAjqB,GAAC,OAAIA,EAAE0nE,YAAcj8C,EAASlC,KAEzGonB,EAAmB,CACrBznB,KAAM,CAACrpB,OAAA0G,EAAA,EAAA1G,CAAA,GAEI4rB,EAAS0H,eAFd,CAGE5J,GAAIkC,EAASlC,GACbgV,IAAK9S,EAAS8S,IACdm9B,SAAUjwC,EAASiwC,SACnBvsC,SAAU1D,EAAS0D,SACnBrB,WAAYrC,EAASqC,WACrBkB,UAAU,EACVkZ,SAAS,EACTjjB,aAAcwG,EAASxG,aACvByT,KAAM,WACNw3C,iBAAeg6F,IAAcA,EAAWh6F,gBAAgBg6F,EAAWh6F,cACnED,iBAAei6F,IAAcA,EAAWj6F,gBAAgBi6F,EAAWj6F,cACnED,cAAYk6F,IAAcA,EAAWl6F,aAAak6F,EAAWl6F,cAIrEm8D,oBAAqB1gH,EAAS7B,UAAU8D,KAAK,SAAAkiH,GAAI,OAAIA,EAAK1gE,aAAe0gE,EAAK1gE,YAAYZ,SAAsD,GAA3CshE,EAAK1gE,YAAYZ,QAAQR,kBAmClI,OA/BAriD,EAASf,WAAWZ,QAAQ,SAAAwR,GACxB,IAAM6uI,EAAa1+I,EAASkmD,mBAAqBlmD,EAASkmD,kBAAkB1nD,KAAK,SAAAjqB,GAAC,OAAIA,EAAE0nE,YAAcpsC,EAAI/R,KAC1GonB,EAAOznB,KAAKyF,KAAZ9uB,OAAA0G,EAAA,EAAA1G,CAAA,GACOy7B,EAAInI,eADX,CAEI5J,GAAI+R,EAAI/R,GACRgV,IAAKjD,EAAI03B,YAAc9lB,GAAa5R,EAAI03B,kBAAe9uD,EACvDw3D,SAAUpgC,EAAIogC,SACdvsC,SAAUmM,EAAInM,SACdH,SAAUsM,EAAItM,SACdkZ,SAAU5M,EAAItM,SACdlB,WAAYwN,EAAIxN,WAChBs9C,WAAY9vC,EAAI8vC,WAChBM,wBAAyBpwC,EAAIowC,wBAC7BhzC,KAAM,YACNw3C,iBAAei6F,IAAcA,EAAWj6F,gBAAgBi6F,EAAWj6F,cACnED,iBAAek6F,IAAcA,EAAWl6F,gBAAgBk6F,EAAWl6F,cACnED,cAAYm6F,IAAcA,EAAWn6F,aAAam6F,EAAWn6F,gBAKrEr/B,EAAOznB,KAAKY,QAAQ,SAAA4N,QACIxzB,IAAhBwzB,EAAIxU,UACJwU,EAAIxU,QAAUmI,GAAY,cAAeC,GAAgBmjB,qBAE7BvqC,IAA5BwzB,EAAI4xC,sBACJ5xC,EAAI4xC,oBAAsBj+C,GAAY,SAAUC,GAAgBojB,8BAKjEiC,GACR,CAACllB,IAEE2+I,EAAqB/6J,IAAMuzC,YAAY,SAACs2F,GAC1CL,EAAsBK,GACtBx4I,WAAW,kBAAMwN,EAAMypD,cAAc,IACtC,IAEGixE,EAAsB7zG,GAAsBtJ,EAAUvd,EAAM8hB,YAC5Dm2B,EAAY,eAAAvmD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAG,SAAAC,EAAOkyD,GAAP,IAERi4G,EAFQ14F,EAAA24F,EAAA3O,EAAA4O,EAAA,OAAAxqK,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UAER8pK,EAFQ,SAEQzyI,UACdA,EAAIc,YACJd,EAAI8jC,gBACJ9jC,EAAIrO,UACJqO,EAAI2G,WACJ3G,EAAI9J,kBACJ8J,EAAIs4C,qBACJt4C,EAAIq4C,qBACJr4C,EAAIo4C,WAGXp4C,EAAI+wC,aAAe/wC,EAAI+wC,WACvB/wC,EAAIgxC,gBAAkBhxC,EAAIgxC,cAC1BhxC,EAAIixC,sBAAwBjxC,EAAIixC,oBAChCjxC,EAAIkxC,wBAA0BlxC,EAAIkxC,sBAClClxC,EAAImxC,uBAAyBnxC,EAAImxC,qBACjCnxC,EAAI2xC,wBAA0B3xC,EAAI2xC,sBAClC3xC,EAAI4xC,0BAA4B5xC,EAAI4xC,wBACpC5xC,EAAI6xC,wBAA0B7xC,EAAI6xC,sBAClC7xC,EAAI8xC,0BAA4B9xC,EAAI8xC,wBACpC9xC,EAAI+xC,wBAA0B/xC,EAAI+xC,sBAClC/xC,EAAIgyC,0BAA4BhyC,EAAIgyC,wBACpChyC,EAAIiyC,qBAAuBjyC,EAAIiyC,mBAC/BjyC,EAAIkyC,0BAA4BlyC,EAAIkyC,wBACpClyC,EAAImyC,gCAAkCnyC,EAAImyC,8BAC1CnyC,EAAIoyC,oCAAsCpyC,EAAIoyC,kCAE1CpyC,EAAIgxC,gBACJhxC,EAAI+wC,YAAa,KA7BrBigE,EADa,CAAAvoI,EAAAE,KAAA,eAAAF,EAAAw9C,OAAA,wBAiCX8zB,EAAwC,GAClBlmD,EAAS7B,UAAU8D,KAAK,SAAAkiH,GAAI,OAAIA,EAAK1gE,aAAe0gE,EAAK1gE,YAAYZ,SAAsD,GAA3CshE,EAAK1gE,YAAYZ,QAAQR,kBAE1GjuE,OAAAgO,EAAA,EAAAhO,CAAIuyD,EAAWlpC,MAAMY,QAAQ,SAAA8N,GAChD+5C,EAAkBhjD,KAAK,CACnB+4C,WAAY9vC,EAAIrO,GAChB2mD,cAAet4C,EAAIs4C,cACnBD,cAAer4C,EAAIq4C,cACnBD,WAAYp4C,EAAIo4C,WAChBtU,SAAU9jC,EAAI8jC,SACdqU,qBAAqB,EACrBvgC,aAAc5X,EAAI5I,UAAY4I,EAAIsQ,QAAU7c,GAAY,cAAeC,GAAgBkkB,cAAcnkC,WAAaggB,GAAY,aAAcC,GAAgBkkB,cAAcnkC,eAKhLi/J,EAjDWzqK,OAAA0G,EAAA,EAAA1G,CAAA,GAiD0BuyD,EAAWlpC,KAAK,IAE3DmhJ,EAAgBC,GACV3O,EApDW97J,OAAA0G,EAAA,EAAA1G,CAAA,GAqDV4rB,EArDU,CAsDbxG,aAAcqlJ,EAAgCA,EAA8BrlJ,kBAAe/gB,EAC3FivB,eAAetzB,OAAA0G,EAAA,EAAA1G,CAAA,GACRyqK,EADO,CAEVjhG,mBAAoBihG,EAAgCA,EAA8BjhG,wBAAqBnlE,EACvGolE,oBAAqBghG,GAAiCA,EAA8BjhG,mBAAqBihG,EAA8BhhG,yBAAsBplE,IAEjKytE,kBAAmBA,IAEjB44F,EA9DW1qK,OAAA0G,EAAA,EAAA1G,CAAA,GA+DV2yE,GAA6BmpF,GA/DnB,CAgEbjxI,WAAYe,EAASf,WAAWppB,IAAI,SAAAg6B,GAChC,IAAMkvI,EAASlvI,EACTmvI,EAAiBr4G,EAAWlpC,KAAK4d,UAAU,SAAA37B,GAAC,OAAIA,EAAEoe,KAAO+R,EAAI/R,KACnE,IAAuB,GAAnBkhJ,EAAsB,CACtB,IAAMC,EAAuB7qK,OAAA0G,EAAA,EAAA1G,CAAA,GAAQuyD,EAAWlpC,KAAKuhJ,IACrDJ,EAAgBK,GAChBF,EAAOp/F,WAAas/F,EAAwBt/F,WAC5Co/F,EAAO9+F,wBAA0Bg/F,EAAwBh/F,wBACzD8+F,EAAOr3I,eAAiBu3I,EACxBF,EAAOr3I,eAAem2C,oBAAsBkhG,EAAOr3I,eAAek2C,mBAAqBmhG,EAAOr3I,eAAem2C,yBAAsBplE,EAEvI,OAAOuuE,GAA+B+3F,OAI9C38E,GAAW,GA/EMxtF,EAAAE,KAAA,GAgFX2N,EAAM0hD,eAAe26G,GAhFV,QAiFjB18E,GAAW,GACX3/E,EAAM27G,UAAUz3D,GAChBlkD,EAAM+4C,OAAO2xF,GAnFI,yBAAAv4I,EAAAM,SAAAT,MAAH,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAsFZwsB,EAAqB7D,GAA8Bxb,EAAMmhI,SAAU5jH,EAAS7B,UAAW6B,EAASlC,IAEhG6jH,GADuB7/G,EAAmB9B,EAASlC,KAAO,IAAIiB,IAClDiB,EAASoC,qBAAuBpC,EAAS4lD,0BACrDooE,EAAkC,OAAhBvrI,EAAMgM,MAGxB4U,EADUL,GAAahD,GACEnqB,IAAI,SAAAmW,GAAC,OAAIA,EAAE8R,KACpCohJ,EAAiB97I,GAAyBpD,EAAUqD,GACpDE,IAAWvD,EAASf,WAAWT,KAAK,SAAA0D,GAAC,OAAIA,EAAEqB,WAC3CkZ,IAAUzc,EAASf,WAAWT,KAAK,SAAA0D,GAAC,OAAKA,EAAEqB,WAC3Cu+G,IAA2B9hH,EAASf,WAAWT,KAAK,SAAA0D,GAAC,OAAIA,EAAEwB,UAAY1D,EAAS0D,WAChFy7I,EAA0Bn/I,EAASkmD,mBAAqBlmD,EAASkmD,kBAAkBtwE,OAAS,EAC5FwpK,EAAiBt8I,GAAyBhB,IAAuBq9I,EAIvE,OAH2B/8I,GAAkBN,EAAoBo9I,EAAgB37I,EAAUkZ,EAASqlG,IACjEs9B,EAI3B77J,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO+vD,GAAiB5jD,eAApC,0BACArM,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO+vD,GAAiB3jD,kBAApC,iGACAtM,EAAAhP,EAAAiP,cAAC67J,GAAD,CACIrmK,WAAYyJ,EAAMzJ,WAClBqiD,cAAeA,EACfZ,SAAUC,EACV16B,SAAUA,EACV8B,mBAAoBA,EACpB6/G,UAAWA,EACXxE,oBAAqBA,IAEzB55H,EAAAhP,EAAAiP,cAAA,YAEEf,EAAM8iB,mBACJhiB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsH,gBACdhR,EAAMyrI,gBAIf3qI,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO+vD,GAAiBtlD,2BACzB3K,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIjmC,QAAStJ,EAAMsrI,oBACftqI,MAAOuqI,EAAkBx6E,GAAiBnlD,mCAAqCmlD,GAAiBrlD,6BAChGysC,UAAWozF,EACXh3H,SAAUvU,EAAM04C,YAAcjB,GAJlC,WAQA32C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAE,2CACF/R,QAAS,kBAAM4yJ,GAAmB,IAClCl7J,MAAOuqI,EAAkBx6E,GAAiB8rG,mCAAqC9rG,GAAiBrlD,6BAChGla,QAAQ,WACRimD,QAASz3C,EAAM04C,YAAcjB,EAC7BljC,SAAUmmH,GAAuBn9G,EAASrC,kBAC1Ci9B,UAAWozF,GAPf,+BAWAzqI,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,uCACH/R,QAAS,kBAAM4yJ,GAAmB,IAClCzkH,QAASz3C,EAAM04C,YAAcjB,EAC7BljC,SAAUmmH,GAAuBn9G,EAASrC,kBAC1C1pB,QAAQ,YACRmY,MAAM,UACN3I,MAAO+vD,GAAiBrlD,6BACxBysC,UAAWozF,GARf,qBAaF7Q,GACE55H,EAAAhP,EAAAiP,cAAC23H,GAAD,CACIzuE,cAAe,yBACfw7B,OAAQzlF,EAAMypD,WACd3X,QAAS9xC,EAAMkpG,MACfn/C,QAAS/pD,EAAMsxD,MACf1H,aAAc5pD,EAAM04C,cAO5B53C,EAAAhP,EAAAiP,cAAA,eAkChB,IAAM2I,GAAiD,CACnDsH,eAAgB,CACZjD,UAAW,SACX9M,UAAW,QACXyJ,SAAU,KAIH+kC,gBACXC,YAhCJ,SAAyB/uC,GACrB,IAAM+2D,EAAY/2D,EAAMqb,KAAKhB,KACvB8hJ,EAAar+B,aAAkBs+B,GAAlBt+B,CAA4C99H,GACzDuoG,EAAQp3D,aAAQirH,GAARjrH,CAAkCnxC,MAC1Cm8J,IAAeA,EAAW9hJ,OAAS8hJ,EAAW9hJ,KAAKe,KAAK,SAAC0D,GAAD,OAAYA,KAC1E,MAAO,CACH1E,cAAepa,EAAM4c,SACrBuE,WAAYnhB,EAAMmhB,WAClBq/G,SAAUzpE,EACVhf,WAAYkR,aAAamzG,GAAbnzG,CAAuCjpD,GACnD2wD,MAAOvH,aAAQgzG,GAARhzG,CAAkCppD,GACzCuoG,UAIR,SAA4Bj3G,EAAe2oD,GACvC,MAAO,CACH6O,WAAY,kBAAMx3D,EAASoV,aAAO01J,MAClCr7G,eAAgB,SAACnkC,GAAD,OAActrB,EAASyvD,GAAe9G,EAAS7L,UAAW6L,EAAS9kD,aAAcynB,EAAU,2BAC3Go+F,UAAW,SAACnoH,GAAD,OAAoBvB,EAASu6I,aAAWuwB,GAA0BvpK,QAcjFu0B,eAFW0nB,CAGbssH,ICvSIiB,GAAiC77J,IAAMizC,KAAK,SAACp0C,GAC/C,IAAMud,EAAWpc,IAAM2xD,QAAQ,WAC3B,OAAO9yD,EAAM+a,cAAcC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOrb,EAAMzJ,cAC9D,CAACyJ,EAAMzJ,WAAYyJ,EAAM+a,cAAcC,OAHsBs5B,EAIlCnzC,IAAMozC,UAAS,GAJmBC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAIzDmD,EAJyDjD,EAAA,GAIhDmrC,EAJgDnrC,EAAA,GAAA0qC,EAKZ/9E,IAAMozC,UAAS,GALH4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAKzDwrD,EALyDvrD,EAAA,GAKrCwrD,EALqCxrD,EAAA,GAM1DjuC,EAAmBlxC,EAAMuhB,gBAAgB2vB,iBAmCzC+rH,EAAgB97J,IAAMuzC,YAAY,SAACs2F,GACjCL,EAAsBK,GACtBx4I,WAAW,kBAAMwN,EAAMypD,cAAc,IAC1C,IACGixE,EAAsB7zG,GAAsBtJ,EAAUvd,EAAMuhB,iBAE5D02B,EAAY,eAAAvmD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAG,SAAAC,EAAOkyD,GAAP,IAAAg5G,EAAAzP,EAAA4O,EAAA,OAAAxqK,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,WACbqoI,EADa,CAAAvoI,EAAAE,KAAA,eAAAF,EAAAw9C,OAAA,wBAEXutH,EAAgC,GACtCh5G,EAAWlpC,KAAKY,QAAQ,SAACjiB,GACrB,IAAIwjK,EAAuB,CACvB57F,eAAgB5nE,EAAM4nE,eACtBD,uBAAwB3nE,EAAMyjK,iBAC9B/7F,aAAc1nE,EAAM0nE,aACpBG,eAAgB7nE,EAAMglB,QAEvBw+I,EAAqB57F,gBACxB27F,EAA8Bz8I,KAAK08I,KAIjC1P,EAfW97J,OAAA0G,EAAA,EAAA1G,CAAA,GAgBV4rB,EAhBU,CAiBbimD,sBAAuB05F,IAErBb,EAAqB/3F,GAA6BmpF,GACxD9tE,GAAW,GApBMxtF,EAAAE,KAAA,EAqBX2N,EAAM0hD,eAAe26G,GArBV,OAsBjB18E,GAAW,GACX3/E,EAAM27G,UAAUz3D,GAChBlkD,EAAM+4C,OAAO2xF,GAxBI,yBAAAv4I,EAAAM,SAAAT,MAAH,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GA2BZqsI,EAAY3hH,EAASoC,qBAAuBpC,EAAS4lD,yBACrDvqB,EAnEsB,WACxB,IAAMr7B,EAAWvd,EAAM+a,cAAcC,KAAKe,KAAK,SAAA9e,GAAC,OAAIA,EAAEoe,KAAOrb,EAAMzJ,cAAe,GAC5E8mK,EAAoB,IAAI/gJ,IAC1BiB,GACIA,EAASimD,uBACTjmD,EAASimD,sBAAsB5nD,QAAQ,SAAAlY,GACnC25J,EAAkB9gJ,IAAI7Y,EAAS89D,kBAK3C,IAAI87F,EAAehgJ,GAA2BC,EAAUvd,EAAMmhI,UAExD1+F,EAAmB,CACrBznB,KAAM,GACNk2B,iBAAkBlxC,EAAMuhB,gBAAgB2vB,kBAe5C,OAbAosH,EAAa1hJ,QAAQ,SAAClY,GAClB,IAAM4gF,EAAa5gF,EAAS2a,yBACtBG,EAAc9a,EAAS8a,YACvBgjD,EAAiB99D,EAASib,OAChC8jB,EAAOznB,KAAKyF,KAAK,CACb28I,iBAAkB94E,EAClBjjB,aAAc7iD,EACdnW,MAAO3E,EAAS6a,cAChBgjD,iBAAgBrwB,GAA0BmsH,EAAkB39I,IAAI8hD,GAChE9iD,YAAahb,EAASgb,YACtBC,OAAQ6iD,MAGT/+B,EAqCW86H,GAEhBhyB,EAAkC,OAAhBvrI,EAAMgM,MAC9B,OACIlL,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO+vD,GAAiB5jD,eAApC,mBACArM,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO+vD,GAAiB3jD,kBAApC,yCACAtM,EAAAhP,EAAAiP,cAACy8J,GAAD,CACIjnK,WAAYyJ,EAAMzJ,WAClBqiD,cAAeA,EACfZ,SAAUC,EACVx8B,MAAOzb,EAAMmhI,SACb5jH,SAAUA,EACV2hH,UAAWA,EACXxE,oBAAqBA,IAEzB55H,EAAAhP,EAAAiP,cAAA,YAEEf,EAAM8iB,mBACJhiB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsH,gBACdhR,EAAMyrI,gBAGf3qI,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO+vD,GAAiBtlD,2BACzB3K,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIjmC,QAAStJ,EAAMsrI,oBACftqI,MAAOuqI,EAAkBx6E,GAAiBnlD,mCAAqCmlD,GAAiBrlD,6BAChGysC,UAAWozF,EACXh3H,SAAUvU,EAAM04C,YAAcjB,GAJlC,WAQA32C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAE,4CACF/R,QAAU,kBAAM2zJ,GAAc,IAC9Bj8J,MAAOuqI,EAAkBx6E,GAAiB8rG,mCAAqC9rG,GAAiBrlD,6BAChGla,QAAQ,WACRimD,QAASz3C,EAAM04C,YAAcjB,EAC7BljC,SAAWmmH,GAAuBn9G,EAASrC,kBAC3Ci9B,UAAWozF,GAPf,kBAWAzqI,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,wCACH/R,QAAS,kBAAM2zJ,GAAc,IAC7BxlH,QAASz3C,EAAM04C,YAAcjB,EAC7BljC,SAAWmmH,GAAuBn9G,EAASrC,kBAC3C1pB,QAAQ,YACRmY,MAAM,UACN3I,MAAO+vD,GAAiBrlD,6BACxBysC,UAAWozF,GARf,qBAcF7Q,GACE55H,EAAAhP,EAAAiP,cAAC23H,GAAD,CACIzuE,cAAe,kBACfw7B,OAAQzlF,EAAMypD,WACd3X,QAAS9xC,EAAMkpG,MACfn/C,QAAS/pD,EAAMsxD,MACf1H,aAAc5pD,EAAM04C,gBA2BxC,IAAMhvC,GAAiD,CACnDsH,eAAgB,CACZjD,UAAW,SACX9M,UAAW,QACXyJ,SAAU,KAIH+kC,gBAA+BC,YA5B9C,SAAyB/uC,GACrB,IAAMwgI,EAAWxgI,EAAMqb,KAAKhB,KAC5B,MAAO,CACHD,cAAepa,EAAM4c,SACrB4jH,WACA5/G,gBAAiB5gB,EAAMmhB,WACvB42B,WAAYkR,aAAa6zG,GAAb7zG,CAA8CjpD,GAC1D2wD,MAAOvH,aAAQ0zG,GAAR1zG,CAAyCppD,GAChDuoG,MAAOp3D,aAAQ2rH,GAAR3rH,CAAyCnxC,KAIxD,SAA4B1O,EAAe2oD,GACvC,MAAO,CACH6O,WAAY,kBAAMx3D,EAASoV,aAAOo2J,MAClC/7G,eAAgB,SAACnkC,GAAD,OAActrB,EAASyvD,GAAe9G,EAAS7L,UAAW6L,EAAS9kD,aAAcynB,EAAU,2BAC3Go+F,UAAW,SAACnoH,GAAD,OAAoBvB,EAASu6I,aAAWixB,GAAiCjqK,QAY7Ei8C,CACbutH,ICvLaU,GAvBmB,SAAC19J,GAAiB,IAEzCzN,EAA6ByN,EAA7BzN,KAAM+lD,EAAuBt4C,EAAvBs4C,SAAUqlH,EAAa39J,EAAb29J,UAEvB,OACI78J,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMA,EAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,iBACnDvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,mJAIJzvC,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ5lC,MAAM,UAAUL,QAASgvC,GAAjC,UAGAx3C,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,0BAA0B1R,MAAM,UAAUL,QAASq0J,GAA9D,eCQDC,GAvByB,SAAC59J,GAAiB,IAE/CzN,EAA6ByN,EAA7BzN,KAAM+lD,EAAuBt4C,EAAvBs4C,SAAUqlH,EAAa39J,EAAb29J,UAEvB,OACI78J,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMA,EAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,uBACnDvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,6HAIJzvC,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ5lC,MAAM,UAAUL,QAASgvC,GAAjC,UAGAx3C,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,0BAA0B1R,MAAM,UAAUL,QAASq0J,GAA9D,eC8UVE,GAAenqJ,aAAW,SAACqyB,GAE7B,OAAIA,IADe5oB,GAAY,WAAYC,GAAgBuiB,kBAEhD,GAGJ,IAGLm+H,GAAiBpqJ,aAAW,SAAC+H,EAAe8B,EAAgChnB,GAC9E,IAAMgvB,EAAsBpI,GAAY,mBAAoBC,GAAgBoI,mBACxEu4I,EAAWrqI,KAActgC,IAAI,SAAAw5B,GAAC,OAAIA,EAAEvR,KACpC2iJ,EAAiBvqI,KAAoBrgC,IAAI,SAAAw5B,GAAC,OAAIA,EAAEvR,KAChD4iJ,EAAe,GAAA9mK,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAOosK,GAAPpsK,OAAAgO,EAAA,EAAAhO,CAAoBqsK,IAEjC/iJ,EAAMsC,EAASvC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAI1kB,aAAeA,IACzD,GAAI0kB,EACJ,CAEI,IAAIS,EAAaT,EAAIS,UAAU5b,OAAO,SAAA7O,GAAC,OAAIgtK,EAAgBtrI,SAAS1hC,EAAE+sB,oBAAsB/sB,EAAEyvB,WAAUttB,IAAI,SAAA6J,GAAC,OAAEA,EAAEgf,SAC7GiiJ,EAAyBziJ,EAAM3b,OAAO,SAAA7O,GAAC,OAAIgtK,EAAgBtrI,SAAS1hC,EAAE+sB,mBAAqBtC,EAAUiX,SAAS1hC,EAAEoqB,MAEpH,GAAI6iJ,EAAuB/qK,OAAS,EAEhC,OAD2B+qK,EAAuBp+J,OAAO,SAAA7O,GAAC,OAAIA,EAAEs0B,qBAAuBt0B,EAAEs0B,sBAAwBA,IACrFpyB,OAAS,EAI7C,OAAO,IAmCX,IC7ZYgrK,GD6ZNz0J,GAAiD,CACnDkpF,aAAc,CACV/nF,OAAQ,GAEZ0wH,mBAAoB,CAChB1wH,OAAQ,YAEZ2vJ,YAAa,CACTv5J,UAAW,SAEf+P,eAAgB,CACZjD,UAAW,SACX9M,UAAW,QACXyJ,SAAU,KAGH+kC,gBACXC,YAjDJ,SAAyB/uC,GACrB,IAAMolC,EAAqByjD,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,sBACzDslC,EAAcH,GAAgBC,GAC9Bm8B,EAAkBsnB,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,mBACtDpK,EAAaizF,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,cACvD,MAAO,CACHoa,cAAepa,EAAM4c,SACrB6gJ,sBAAuBz9J,EAAMmhB,WAAWnO,QAAQ0jD,eAChDnH,YAAa6iC,aAAUxF,GAAVwF,CAAqBpyF,GAClC8oI,8BAA+Bq0B,GAAen9J,EAAMqb,KAAKhB,KAAMra,EAAM4c,SAAUhnB,GAC/E+6D,MAAOvH,aAAQwjC,GAARxjC,CAAmBppD,GAC1B+3C,WAAYkR,aAAa2jC,GAAb3jC,CAAwBjpD,GACpCslC,cACAi8B,kBACA3gD,gBAAiB5gB,EAAMmhB,WACvB41C,UAAW/2D,EAAMqb,OAIzB,SAA4B/pB,EAAe2oD,GACvC,MAAO,CACHyjH,oBAAqB,kBAAMpsK,EAASX,EAAgB,+BAAgC,UAAW,MAC/Fm4D,WAAY,kBAAMx3D,EAASoV,aAAOkmF,MAClCi/C,WAAY,SAACh5I,GAAD,OAAUvB,EAASu6I,aAAWj/C,GAAW/5F,KACrD8tD,YAAa,SAAC/jC,GAAD,OAActrB,EAASqvD,GAAY1G,EAAS7L,UAAW6L,EAAS9kD,aAAcynB,KAC3FmkC,eAAgB,SAACnkC,GAAD,OAActrB,EAASyvD,GAAe9G,EAAS7L,UAAW6L,EAAS9kD,aAAcynB,EAAU,yBAC3G+gJ,sBAAuB,SAAC/nK,GAAD,OAAgBtE,EAASqsK,GAAsB1jH,EAAS7L,UAAW6L,EAAS9kD,aAAcS,KACjHs9D,eAAgB,kBAAM5hE,EAAS4hE,OAC/BI,iBAAkB,SAAC12C,EAAUtB,EAAiB+a,GAA5B,OAAgD/kC,EAASgiE,GAAiB,CAAE12C,SAAUA,EAAUtB,OAAQA,EAAQ46C,kBAAmB7/B,SAsBzJjP,eAFW0nB,CA7XQ,SAACzvC,GAAiB,IAAAs0C,EAEPnzC,IAAMozC,UAAS,GAFRC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAE9BmD,EAF8BjD,EAAA,GAErBmrC,EAFqBnrC,EAAA,GAAA0qC,EAGe/9E,IAAMozC,UAAS,GAH9B4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAG9BwrD,EAH8BvrD,EAAA,GAGVwrD,EAHUxrD,EAAA,GAAAG,EAIuBn+E,IAAMozC,UAAS,GAJtCgrC,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAI9Bi/E,EAJ8Bh/E,EAAA,GAINi/E,EAJMj/E,EAAA,GAAAE,EAKuCt+E,IAAMozC,UAAS,GALtDmrC,EAAA/tF,OAAAmN,EAAA,EAAAnN,CAAA8tF,EAAA,GAK9Bg/E,EAL8B/+E,EAAA,GAKEg/E,EALFh/E,EAAA,GAAAgjE,EAOWvhJ,IAAMozC,UAAS,GAP1BouG,EAAAhxJ,OAAAmN,EAAA,EAAAnN,CAAA+wJ,EAAA,GAO9Bic,EAP8Bhc,EAAA,GAOZic,EAPYjc,EAAA,GAAAG,EAQK3hJ,IAAMozC,UAAS,GARpBwuG,EAAApxJ,OAAAmN,EAAA,EAAAnN,CAAAmxJ,EAAA,GAQ9B+b,EAR8B9b,EAAA,GAQf+b,EARe/b,EAAA,GAAAgc,EASD59J,IAAMozC,SAASv0C,EAAMzJ,YATpByoK,EAAArtK,OAAAmN,EAAA,EAAAnN,CAAAotK,EAAA,GAW/BxhJ,GAX+ByhJ,EAAA,GAAAA,EAAA,GAWpBh/J,EAAM+a,cAAcC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOrb,EAAMzJ,cACjE0oK,IAAqB1hJ,GAAWA,EAASpC,aACzC+jJ,IAAiB3hJ,GAAWA,EAASrC,kBAbNikJ,EAcmBh+J,IAAMozC,SAAS0qH,GAdlCG,EAAAztK,OAAAmN,EAAA,EAAAnN,CAAAwtK,EAAA,GAc9BE,EAd8BD,EAAA,GAcRE,EAdQF,EAAA,GAAAG,EAeap+J,IAAMozC,SAAS2qH,GAf5BM,EAAA7tK,OAAAmN,EAAA,EAAAnN,CAAA4tK,EAAA,GAeXE,GAfWD,EAAA,GAAAA,EAAA,IAiB/B5mH,EAAgBz3C,IAAM2xD,QAAQ,WAChC,IAAM5hB,EAAmBlxC,EAAMuhB,gBAAgB2vB,iBAEzC2yF,EAActmH,GAAYA,EAAS2vB,mBAAmBnxB,KAAK,SAAAoc,GAAC,OAAIA,EAAEkiC,cAAgBf,GAAYu0D,OAC9F4W,OAA2DzuI,GAAxCgK,EAAMuhB,gBAAgBkjH,iBAA4B,EAAEzkI,EAAMuhB,gBAAgBkjH,iBAC7Fi7B,EAAiBniJ,GAAYA,EAAS2vB,mBAAmBnxB,KAAK,SAAAoc,GAAC,OAAIA,EAAEkiC,cAAgBf,GAAYm4B,OACjGhjD,EAAQlxB,GAAYA,EAAS2vB,oBAAsB3vB,EAAS2vB,mBAAmB/5C,OAAS,EAAIoqB,EAAS2vB,mBAAmB,GAAGuB,MAAQ,GACnIkxH,EAAe,CAAE3lG,eAAgB,GAAIE,KAAM,GAAIC,OAAQ,GAAI/sB,aAASp3C,EAAWokE,QAAS,GAAI3rB,MAAO,GAAI0C,MAAO,GAAIkpB,YAAaf,GAAYu0D,MAC3I3gF,EAAoD,CACrD3vB,GAAYsmH,EAAblyI,OAAA0G,EAAA,EAAA1G,CAAA,GAAiCkyI,EAAjC,CAA8CxpE,YAAaf,GAAYu0D,KAAMwc,WAAY9sH,EAAS8lD,wBAAlG1xE,OAAA0G,EAAA,EAAA1G,CAAA,GAAkIguK,EAAlI,CAAgJt1B,YAAY,EAAM57F,UACjKlxB,GAAYmiJ,EAAb/tK,OAAA0G,EAAA,EAAA1G,CAAA,GAAoC+tK,EAApC,CAAoDrlG,YAAaf,GAAYm4B,KAAM44C,WAAY9sH,EAAS8lD,wBAAxG1xE,OAAA0G,EAAA,EAAA1G,CAAA,GAAuIguK,EAAvI,CAAqJtlG,YAAaf,GAAYm4B,KAAM44C,WAAY9sH,GAAYA,EAAS8lD,sBAAuB50B,WAG1O1I,EAAqBxoB,GAAYA,EAASwoB,mBAAqBxoB,EAASwoB,mBAAqB,IAC7Fu8B,EAAc/kD,GAA6C,iBAAzBA,EAAS+kD,aAAoD,GAAxB/kD,EAAS+kD,YAAmB/kD,EAAS+kD,YAAcu7F,GAAa93H,GACvIsxB,EAAiB95C,GAAYA,EAAS85C,eAAiB95C,EAAS85C,eAAiBr3D,EAAMo+J,sBACvFl8F,EAAkB3kD,GAAYA,EAAS2kD,gBAAkB3kD,EAAS2kD,gBAAkBliE,EAAMkiE,gBAahG,OAXyBvwE,OAAA0G,EAAA,EAAA1G,CAAA,GAClB4rB,EADkB,CAErB2zB,iBAAkBA,EAClBnL,qBACAu8B,cACAjL,iBACA6K,kBACAh1B,qBACAu3F,sBAIL,CAACzkI,EAAMo+J,sBAAuB7gJ,IAM3BqiJ,EAAoB,SAACC,GACvBf,GAAiB,GACb9+J,EAAMkwD,YACNlwD,EAAMq+J,sBAGNgB,EACAX,GAAkC,GAE7BC,GAZFphJ,GAAYA,EAAS7B,WAAa6B,EAAS7B,UAAUvoB,OAAS,EAajEqrK,GAA0B,IAG1BA,GAA0B,GAC1BE,GAAkC,GAClClsK,WAAW,kBAAMwN,EAAMypD,cAAc,GACrCkhF,EAAsBk1B,KAKxBC,EAAa,eAAApuK,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAG,SAAAC,EAAOkyD,GAAP,IAAAwqD,EAAAi2B,EAAAo7B,EAAAC,EAAAC,EAAAnsK,EAAAgxD,EAAAo7G,EAAA,OAAAruK,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,WAEZq8G,EAAcpqC,GAA6BpgB,IACrChnC,iBAAmBK,EAAUL,iBACnCynH,EAAcxnH,GAAY,sBAAuBC,GAAgBsiB,eACjEqgI,GAAwBrxD,EAAYxzF,oBAAsBwzF,EAAYvzF,aACtE6kJ,EAAmBtxD,EAAY3oE,oBAAsB5oB,GAAY,WAAYC,GAAgBuiB,mBAAqB+uE,EAAY3oE,oBAAsB5oB,GAAY,QAASC,GAAgBuiB,kBAE/L+uE,EAAYlyF,WAAa0nC,EAAW1nC,WAAWppB,IAAI,SAAAg6B,GAC/C,IAAM6f,EAAuC7f,EAAImwC,sBAAwBmxC,EAAYxhE,mBAAmB,GAAM9f,EAAI8f,mBAAqB9f,EAAI8f,mBAAmB,QAAKl3C,EAMnK,OALwB,IAApBo3B,EAAIgwC,cACJhwC,EAAIgwC,YAAc,GAClBnwB,IACAA,EAAYotB,YAAcf,GAAYu0D,MAEnCl8H,OAAA0G,EAAA,EAAA1G,CAAA,GACAy7B,EADP,CAEI/R,GAAI+R,EAAI/R,IAAM,GACdypC,YAAa13B,EAAI03B,YAAc13B,EAAI03B,YAAYljC,QAAQ,OAAOqN,SAAW,GACzE81B,SAAU33B,EAAI23B,SACd7X,mBAAoBD,EAAc,CAACA,QAAej3C,EAClD4pB,WAAYwN,EAAIxN,WAChBy9C,oBAAqBjwC,EAAIiwC,oBACzB8iG,+BAAgC/yI,EAAIkwC,+BACpClG,wBAAyB,OAI7Bs3C,EAAYxsC,kBAAoByiE,GAAgBj2B,EAAYvsC,0BAC5DusC,EAAYvsC,yBAA0B,GAGtC49F,GAAuBC,IACvBtxD,EAAY3oE,mBAAqB5oB,GAAY,WAAYC,GAAgBuiB,mBAGzEukB,EAAWhX,mBAAmB/5C,OAAS,GAAK+wD,EAAWhX,mBAAmB,GAAGm9F,aAC7E37B,EAAYxhE,mBAAmB,GAA/Bv7C,OAAA0G,EAAA,EAAA1G,CAAA,GACO+8G,EAAYxhE,mBAAmB,GADtC,CAEImtB,YAAaf,GAAYm4B,QAKjCl0E,GAAYA,EAASf,WAAWgD,KAAK,SAAA4N,GACjC,IAAMuJ,GAASutB,EAAW1nC,WAAWT,KAAK,SAAAqkJ,GAAO,OAAIhzI,EAAI/R,KAAO+kJ,EAAQ/kJ,KAGxE,OAFIsb,IACAspI,EAAUtuK,OAAA0G,EAAA,EAAA1G,CAAA,GAAQy7B,EAAR,CAAagwC,YAAa,KACjCzmC,IAEPspI,IACQn7G,GADIhxD,EACwCmsK,GAA5Cn7G,YADIhxD,EACS05D,SAAa0yG,EADtBvuK,OAAAgX,GAAA,EAAAhX,CAAAmC,EAAA,4BAEZ46G,EAAYlyF,WAAWiE,KAAvB9uB,OAAA0G,EAAA,EAAA1G,CAAA,GACOuuK,EADP,CAEIp7G,YAAaA,EAAcA,EAAYljC,QAAQ,OAAOqN,SAAW,GACjEhK,oBAAgBjvB,MAvDN7D,EAAAC,KAAA,GA4DdutF,GAAW,IACPpiE,EA7DU,CAAAprB,EAAAE,KAAA,gBAAAF,EAAAE,KAAA,GA8DJ2N,EAAM0hD,eAAegtD,GA9DjB,eAAAv8G,EAAAE,KAAA,GA+DJ2N,EAAMs+J,sBAAsB5vD,EAAYrzF,IA/DpC,eAAAlpB,EAAAE,KAAA,GAgEJ2N,EAAM6zD,iBAhEF,QAiEN62E,EACA1qI,EAAM+4C,SAGN/4C,EAAMwsI,WAAWtoF,GArEX/xD,EAAAE,KAAA,wBAAAF,EAAAE,KAAA,GAyEJ2N,EAAMshD,YAAYotD,GAzEd,QA0ENg8B,EACA1qI,EAAM+4C,SAGN/4C,EAAMwsI,WAAWtoF,GA9EX,eAAA/xD,EAAAC,KAAA,GAkFdutF,GAAW,GAlFGxtF,EAAAw1H,OAAA,6BAAAx1H,EAAAM,SAAAT,EAAA,uBAAH,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAuGbwtK,EAAkB,SAACh5J,GACrBm3J,GAA0B,GAC1BE,GAAkC,GAClC/zB,EAAsBtjI,GACtB7U,WAAW,kBAAMwN,EAAMypD,cAAc,IAqBrCy1E,GAAY,EACZ2/B,EACA3/B,GAAY,EAEP3hH,IACL2hH,IAAc3hH,EAAS4lD,0BAG3B,IAAMooE,EAAkC,OAAhBvrI,EAAMgM,MACxBs0J,EAAgBtgK,EAAMypI,gCAAkCzpI,EAAMimC,YAC9Ds6H,IAA+BhjJ,GAAWsJ,GAAsBtJ,EAAUvd,EAAMuhB,iBAUtF,OACIzgB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACy/J,GAAD,CACIjqK,WAAYyJ,EAAMzJ,WAClBkzI,8BAA+B62B,EAC/B1nH,cAAeA,EACfsmF,UAAWA,EACXnwF,UAAW/uC,EAAM+uC,UACjBj5C,aAAckK,EAAMlK,aACpB8yI,sBAjBJtoI,GAAKwjB,oBAGF9jB,EAAM03D,UAAUp4C,sBACjBtf,EAAM03D,UAAUp4C,qBAAqBI,IAAIpL,GAAuBwD,0BAc9DyoJ,6BAA8BA,EAC9BvoH,SAAU8nH,EACV35B,kBAlDc,SAACgqB,EAAgBsQ,GACvC,GAAIljJ,EAAU,CACV,IAAMkwI,EAAe97J,OAAA0G,EAAA,EAAA1G,CAAA,GACd4rB,EADc,CAEjBf,WAAYe,EAASf,WAAWppB,IAAI,SAAAqpB,GAAS,OAAA9qB,OAAA0G,EAAA,EAAA1G,CAAA,GACtC8qB,EADsC,CAEzC26C,wBAAyB36C,EAAUpB,KAAO80I,EACtC,GAAK1zI,EAAU26C,8BAI3Bp3D,EAAMi0D,iBAAiBw5F,GAGvBmR,GAAoB,KAqChBh1B,4BAA6B01B,EAC7Bz1B,wBAAyB41B,EACzBh3B,sBAAuBzoI,EAAMyoI,sBAC7B3E,kBA9EiB,WAEzB,IAAIA,EAA0C,GAC1C48B,EAAsBnjJ,GAAYA,EAAS7B,WAAa6B,EAAS7B,UAAUvoB,OAAO,EAAIoqB,EAAS7B,UAAU5b,OAAO,SAAAhO,GAAC,OAAmB,IAAfA,EAAE4uB,gBAAsB1qB,EAWjJ,OAVI0qK,GAAsBA,EAAmBvtK,OAAS,GAClDutK,EAAmB9kJ,QAAQ,SAACC,GACpBA,EAASW,WAAWrpB,OAAS,GAC7B0oB,EAASW,WAAWZ,QAAQ,SAACwR,GACpBA,EAAI1M,UACLojH,EAAkBrjH,KAAK2M,OAKpC02G,EAgEsB68B,GACrBj6H,kBAAmB1mC,EAAM0mC,kBACzB+/F,0BAA2BzmI,EAAMymI,4BAErC3lI,EAAAhP,EAAAiP,cAAC6/J,GAAD,CACIruK,KAAMgsK,EACNjmH,SAAU,kBAAMkmH,GAA0B,IAC1Cb,UAAW,kBAAM0C,GAAgB,MAErCv/J,EAAAhP,EAAAiP,cAAC8/J,GAAD,CACItuK,KAAMksK,EACNnmH,SAAU,kBAAMomH,GAAkC,IAClDf,UAAW,kBAAM0C,GAAgB,MAErCv/J,EAAAhP,EAAAiP,cAAA,YAEEf,EAAM8iB,mBACJhiB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsH,gBACdhR,EAAMyrI,gBAIf3qI,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO8wJ,cACb6E,GACEv+J,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,kBACH/R,QAAS,kBAAMs2J,GAAkB,IACjC5+J,MAAOuqI,EAAkB7hI,GAAO6xH,mBAAqB7xH,GAAOkpF,aAC5DphG,QAAQ,WACRimD,QAASA,EACTljC,SAAUkjC,GAAW8oH,EACrBpoH,UAAWozF,GAEV,6BAGTzqI,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,6BACH/R,QAAS,kBAAMs2J,GAAkB,IACjC5+J,MAAOuqI,EAAkB7hI,GAAO6xH,mBAAqB,GACrD/pI,QAAQ,YACRmY,MAAM,UACN8tC,QAASA,EACTljC,SAAUkjC,GAAW8oH,EACrBpoH,UAAWozF,GAEV8zB,EAAuB,kBAAoB,oBAGpDv+J,EAAAhP,EAAAiP,cAAA,YACGw/J,GACCz/J,EAAAhP,EAAAiP,cAAC23H,GAAD,CACIzuE,cAAe,uBACfw7B,OAAQ,kBAAMm6E,GAAkB,IAChC9tH,SAAU9xC,EAAMkwD,YAChBnG,QAAS/pD,EAAMsxD,MACf1H,aAAc5pD,EAAM04C,qCEvVzBooH,GATA,SAAC9gK,GACZ,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAAY7nB,EACTc,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,kjCCwGdnV,GAAiD,CACnDlD,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExBu6J,UAAW,CACPr2J,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExBw6J,WAAY,CACRhuJ,UAAW,eAIJiuJ,GAlHS,SAACjhK,GACrB,IADsCkhK,EAElB,SAAC5+I,GACjB,QAAgBtsB,IAAZssB,EACA,MAAO,CACHu7C,QAJW,KAKXsjG,aALW,KAMXC,QANW,KAOXjwH,MAPW,KAQX1C,MARW,KASX4rB,YAAa,gBAIjB,IAAMkyC,EAAYxnE,KAAYhpB,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAOiH,EAAQ8qB,UACnDzsC,OAAuB3K,IAAdu2G,EAA2BA,EAAU5yG,MAdrC,KAeT0nK,EAAiB/+I,EAAQ83C,QAAUtI,GAAUxvC,EAAQ83C,SAAyB,GAC9EknG,EAAY,CAACh/I,EAAQ43C,KAAMv5D,EAAO0gK,GAAcvhK,OAAOV,SAASQ,KAAK,MACrE2hK,EAAe,CAACj/I,EAAQ03C,eAAgB13C,EAAQ23C,gBAAgBn6D,OAAOV,SAASQ,KAAK,KACrF4hK,EAAmBl/I,EAAQ6uB,MAAQygB,GAAYtvC,EAAQ6uB,OAAmB,GAChF,MAAO,CACH0sB,QAAS0jG,EACTJ,aAAcG,EACdF,QAAS9+I,EAAQ63C,OACjBhpB,MAAOygB,GAAY4vG,GACnB/yH,MAAOnsB,EAAQmsB,MACf4rB,YAAa/3C,EAAQ+3C,cAAgBf,GAAYm4B,KAAO,kBAAoBnvE,EAAQ+3C,cAAgBf,GAAYu0D,KAAO,eAAiB,iBAI9E5gF,CAAYjtC,GAA1E69D,EA9B8BqjG,EA8B9BrjG,QAASsjG,EA9BqBD,EA8BrBC,aAAcC,EA9BOF,EA8BPE,QAASjwH,EA9BF+vH,EA8BE/vH,MAAO1C,EA9BTyyH,EA8BSzyH,MAAO4rB,EA9BhB6mG,EA8BgB7mG,YACtD,OACIv5D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MACzC6zD,IAGTv5D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDrb,IAGT/8D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,qBAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDioF,IAGTrgK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,WAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDkoF,IAGTtgK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,iBAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrD/nC,IAGTrwC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,kBAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAOlD,KAASkD,GAAOs3J,YAAc9nF,MAAM,QAClFzqC,OCvCnB/kC,GAA2C,CAC7CwJ,QAAS,CACLrI,OAAQ,GAEZrE,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExBo5G,WAAY,CACR3+G,UAAW,SAEfwgK,UAAW,CACPxgK,UAAW,SAIJiJ,QAAWR,GAAXQ,CA/DW,SAAClK,GAAiB,IAAAqwC,EACTrwC,EAAvBoI,eADgC,IAAAioC,EACtB,GADsBA,EAClBpqB,EAASjmB,EAATimB,KAChBy7I,EAAW1hK,EAAM2hK,iBAAwB,CAAC,IAAK3hK,EAAM2hK,iBAAkB,KAAK7hK,OAAOV,SAASQ,KAAK,IAA7D,GAC1C,OACIkB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC2E,WAAW,SAASzM,MAAO0I,GAAOwJ,SAC9CpS,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC7c,MAAO0I,GAAOk2G,YACrB9+G,EAAAhP,EAAAiP,cAAC+8I,GAAA,EAAD,CAAMj1I,UAAWT,EAAQ6d,KAAMtc,MAAM,WAAWsc,IAEpDnlB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC7c,MAAO0I,GAAO+3J,WACrB3gK,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOlD,MACdxG,EAAM6G,MADX,IACmB66J,MAK/B5gK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDl5E,EAAMy/B,QAEX3+B,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,IAEtBt/C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDl5E,EAAM4hK,YAGf9gK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,IAEtBt/C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,IAEtBt/C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDl5E,EAAMoxC,UC6KzB1nC,GAAiD,CACnDwJ,QAAS,CACLrI,OAAQ,GAEZ+E,WAAY,CACRpB,gBAAiB3I,GAAQiB,KAAKC,SAElC2L,cAAe,CACX/I,MAAO,SAEXnD,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,OAIbq7J,GAhOY,SAAC7hK,GACxB,IACMib,EAAMjb,EAAMud,SACZukJ,EAAa38H,KAAappB,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAOJ,EAAK8pC,WAClDtlB,EAAWqiI,EAAaA,EAAWnoK,MAHlB,KAIjBooK,EAAgBp8H,KAAsB5pB,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAOJ,EAAI8qB,qBAC7Di8H,EAAcD,EAAgBA,EAAcpoK,MAL3B,KAMjBsoK,EAAiBhnJ,EAAI6pC,YAAc7pC,EAAI6pC,YAAY71B,OAAO,MANzC,KAOjBizI,EAAgBjnJ,EAAI4T,SAAW5T,EAAI4T,SAASI,OAAO,MAPlC,KAQjBkzI,EAAe/7H,KAAmBrqB,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAOJ,EAAIo8C,iBACzD+qG,EAAaD,EAAeA,EAAaxoK,MATxB,KAUjBgoF,EAAU3+C,KACVq/H,IAAkBpnJ,EAAKuB,WACvBooH,EAAS3pH,EAAIuB,WAAWT,KAAK,SAAAqR,GAAG,MAAyC,WAArCu0D,EAAQv0D,EAAIC,iBAAiB3zB,MACjE8iB,EAAavB,EAAIuB,WAAW1c,OAAO,SAAAstB,GAAG,MAAyC,WAArCu0D,EAAQv0D,EAAIC,iBAAiB3zB,MACvE4oK,EAAqB19B,EAAS,CAACA,GAAQztI,OAAOqlB,GAAcA,EAC5D+lJ,EAASh0I,GAAQtT,EAAKm2B,KACtBoxH,EAAcD,GAhBG,KAiBjBE,IAAgBxnJ,EAAKiyB,mBACrB22F,EAAc5oH,EAAIiyB,mBAAmBnxB,KAAK,SAAAoc,GAAC,OAAIA,EAAEkiC,cAAgBf,GAAYu0D,OAC7E60C,EAAiBznJ,EAAIiyB,mBAAmBptC,OAAO,SAAAq4B,GAAC,OAAIA,EAAEkiC,cAAgBf,GAAYm4B,OAClFkxE,EAAe9+B,EAAc,CAACA,GAAa1sI,OAAOurK,GAAkBA,EACpEE,EAAiB5iK,EAAM0mC,kBAAoBF,KAA6BF,KAC9E,OACIxlC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOwJ,SAChBpS,EAAAhP,EAAAiP,cAACw/C,GAAA,EAAD,CACIv/C,MAAO0I,GAAOkG,WACdvH,MACIvH,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOgJ,eACfuI,EAAKuyC,UAGdirE,OAAQz4H,EAAM6iK,kBACV/hK,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYE,QAAStJ,EAAM2qG,UACvB7pG,EAAAhP,EAAAiP,cAACskF,GAAAvzF,EAAD,CAAMkP,MAAO0I,GAAOgJ,mBAIhC5R,EAAAhP,EAAAiP,cAAC0/C,GAAA,EAAD,KACI3/C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAK01G,cAAY,GAArC,kBAIApmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,WAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDz5C,IAGT3+B,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,kBAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrD+oF,IAGTnhK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,QAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDspF,KAIb1hK,EAAAhP,EAAAiP,cAAA,WACC0hK,GACG3hK,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAK01G,cAAY,GAArC,qBAIHu7D,GAAeE,EAAavvK,IAAI,SAAA+kC,GAC7B,OACIr3B,EAAAhP,EAAAiP,cAAC+hK,GAAD,CACIppK,IAAKy+B,EAAEkiC,YACPL,eAAgB7hC,EAAE6hC,eAClBC,eAAgB9hC,EAAE8hC,eAClBC,KAAM/hC,EAAE+hC,KACRC,OAAQhiC,EAAEgiC,OACV/sB,QAASjV,EAAEiV,QACXgtB,QAASjiC,EAAEiiC,QACX3rB,MAAOtW,EAAEsW,MACT0C,MAAOhZ,EAAEgZ,MACTkpB,YAAaliC,EAAEkiC,gBAI3Bv5D,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAK01G,cAAY,GAArC,cAGApmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,aAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDj+D,EAAKonD,WAGdvhE,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,sBAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrD8oF,IAGTlhK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,eAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDgpF,IAGTphK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,mBAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDj+D,EAAIqnD,cAGbxhE,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAEJz7C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,MAA9C,kBAIJ1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGo0B,GAAI,GAClBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAO0I,GAAOlD,KAAM0yE,MAAM,QACrDkpF,KAIbthK,EAAAhP,EAAAiP,cAAA,WACCshK,GACGvhK,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAK01G,cAAY,GAArC,cAIHm7D,GAAiBC,EAAmBlvK,IAAI,SAAAg6B,GACrC,IAAMnH,EAA4C,WAArC07D,EAAQv0D,EAAIC,iBAAiB3zB,KAAyD,oBAArCioF,EAAQv0D,EAAIC,iBAAiB3zB,IAA4BoH,EAAAhP,EAAAiP,cAAC++I,GAAD,MAAmBh/I,EAAAhP,EAAAiP,cAACg/I,GAAAjuJ,EAAD,MACpIgwK,EAAa38H,KAAappB,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAO+R,EAAI23B,WACjDtlB,EAAWqiI,EAAaA,EAAWnoK,MAtL1C,KAuLOopK,EAAW31I,EAAI03B,YAAc13B,EAAI03B,YAAY71B,OAAO,MAvL3D,KAwLO+zI,EAASz0I,GAAQnB,EAAKgkB,IAAK,KAC3B6xH,EAAcL,EAAe7mJ,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAO+R,EAAKC,kBACrD44G,EAAYg9B,EAAcA,EAAYtpK,MAAQ,GAC9CupK,EAAgBF,GA3LvB,KA4LC,OACIliK,EAAAhP,EAAAiP,cAACoiK,GAAD,CACIzpK,IAAK0zB,EAAI/R,GACTxU,MAAK,GAAA1P,OAAKi2B,EAAI02B,UAAT,KAAA3sD,OAAsBi2B,EAAInM,UAC/BgF,KAAMA,EACNwZ,OAAQA,EACRmiI,UAAWmB,EACX3xH,IAAK8xH,EACLvB,iBAAkB17B,sBChLvCm9B,GAvBWjiK,IAAMizC,KAAK,SAACp0C,GAClC,GAAKA,EAAMgc,KAEN,CACD,IAAMu5H,EAAS9wG,GAAiB,YAAYjlB,KAAK,SAAAyS,GAAM,OAAIA,EAAO5W,KAAOrb,EAAMgc,KAAMgC,mBAC/Ew3H,EAAe/wG,GAAiB,kBAAkBjlB,KAAK,SAAAyS,GAAM,OAAIA,EAAO5W,KAAOrb,EAAMgc,KAAMgC,mBAE3F44I,EAAqBrhB,GAAUC,EAAgBgC,GAAiC0B,GAEtF,OACIp4I,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,UACzCx3C,EAAAhP,EAAAiP,cAAC61J,EAAD,CAAmB56I,KAAMhc,EAAMgc,KAC3Bq7C,eAAgBr3D,EAAMq3D,eACtB8gB,UAAU,EACV1kE,gBAAiBzT,EAAMyT,gBACvBylH,KAAMl5H,EAAMk5H,KACZ0d,cAAc,KAd1B,OAAO91I,EAAAhP,EAAAiP,cAAA,yBCwTAsiK,eAnSX,SAAAA,EAAYrjK,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAywK,IACtBzpK,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA0xK,GAAAljK,KAAAvN,KAAMoN,KAFV2hF,QAAU3+C,KACgBppC,EAiC1B0pK,wBAA0B,SAACj2I,GACvB,IAAM4E,EAASr4B,EAAK+nF,QAAQt0D,GAC5B,OAAO4E,EAASA,EAAOt4B,MAAQ,IAnCTC,EAsC1B2pK,2BAA6B,kBAAM3pK,EAAK4G,SAAS,CAAEgjK,iBAAiB,KAtC1C5pK,EAuC1B6pK,2BAA6B,kBAAM7pK,EAAK4G,SAAS,CAAEgjK,iBAAiB,KAvC1C5pK,EAyC1B8pK,WAAa,WACT9pK,EAAKoG,MAAM2qG,SAAS/wG,EAAKoG,MAAM6b,SAASmC,mBAvCxCpkB,EAAK+G,MAAQ,CACT6iK,iBAAiB,EACjBG,iBAAkB/pK,EAAKoG,MAAMgc,MALXpiB,wEAiEjB,IAAAQ,EAAAxH,KACC8tB,EAAW9tB,KAAKoN,MAAM6b,SAAS6E,SAC/Bw4G,EAAOtmI,KAAKoN,MAAMk5H,KAClBU,EAAmBhnI,KAAK6gB,gBAAgBI,iBACxCgmH,EAAmBjnI,KAAK6gB,gBAAgBK,iBACxC8vJ,EAAWhqC,GAAoBC,EAC/BgqC,EAAuBjxK,KAAKoN,MAAM6b,SAASW,WAAW1c,OAAO,SAAA2c,GAAS,OAA2B,IAAvBA,EAAUiE,WACpF41H,EAAiB,4FACvB,OACIx1I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAOygJ,GAAkBvuI,SAC3BpS,EAAAhP,EAAAiP,cAACw/C,GAAA,EAAD,CACIv/C,MAAO0f,EAAW+gI,GAAkBvvI,iBAAmBuvI,GAAkB7xI,WACzEvH,MACIvH,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOygJ,GAAkBhvI,iBAC1B3R,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAOygJ,GAAkB/uI,eAC7C9f,KAAKkxK,WAAWxtK,eAEpB1D,KAAKoN,MAAM+jK,UACRjjK,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAK8wK,WAAYvsH,UAAU,MAAM/zC,KAAK,QAAQmR,SAAU3hB,KAAKoN,MAAMuU,SAAUvT,MAAOygJ,GAAkBtvI,YACnHrR,EAAAhP,EAAAiP,cAACskF,GAAAvzF,EAAD,CAAMkP,MAAOygJ,GAAkBrvI,WAC/BtR,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkBpvI,UAA/B,YAMpBvR,EAAAhP,EAAAiP,cAAC0/C,GAAA,EAAD,KACK//B,EACG5f,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAA3E,mBACqBt0G,KAAKkxK,WAD1B,aAGAhjK,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAA3E,kBACoBt0G,KAAKoxK,qBAGzBljK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO85E,GAAajtE,oBAElC/M,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOygJ,GAAkB3zI,YAAao5F,cAAY,GAA9D,mJAQZpmG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOygJ,GAAkBnvI,cAAe40F,cAAY,GAAhE,aACet4E,GAA4Bh8B,KAAKoN,MAAMgc,KAAMppB,KAAKoN,MAAMud,SAASsR,UAC3Ej8B,KAAKoN,MAAMikK,aAAenjK,EAAAhP,EAAAiP,cAAA,kBAE/BD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,IACnBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkB1uI,gBAAiBm0F,cAAY,GACjFt0G,KAAKoN,MAAMgc,MAAQppB,KAAKoN,MAAMgc,KAAMjJ,mBAIhDngB,KAAKoN,MAAMikK,aACRnjK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC8pD,GAAA/4D,EAAD,CAAUkP,MAAO85E,GAAajtE,oBAElC/M,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOygJ,GAAkB3zI,YAAao5F,cAAY,GACzDt0G,KAAKoN,MAAMkkK,kBAK5BpjK,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,oBACHra,MAAOygJ,GAAkBxvI,OACzB3I,QAAS1W,KAAK2wK,2BACdhvJ,UAAW3hB,KAAK+N,MAAMgjK,eACtBh6J,MAAM,WALV,gBAQC/W,KAAK+N,MAAMgjK,gBACR7iK,EAAAhP,EAAAiP,cAACojK,GAAD,CACI5xK,KAAMK,KAAK+N,MAAM6iK,gBACjBlrH,SAAU1lD,KAAK6wK,2BACfznJ,KAAMppB,KAAKoN,MAAMgc,KACjBk9G,KAAMtmI,KAAKoN,MAAMk5H,KACjB7hE,eAAgBzkE,KAAKoN,MAAMud,SAAS85C,eACpC5jD,gBAAiB7gB,KAAK6gB,kBAG7B7gB,KAAKoN,MAAMud,SAASf,WAAWrpB,OAAS,GACrC2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,EAAChuB,MAAM,QAAlF,mBAGAp4E,EAAAhP,EAAAiP,cAACspD,GAAA,EAAD,KACIvpD,EAAAhP,EAAAiP,cAACypD,GAAA,EAAD,CAAUxpD,MAAOygJ,GAAkBxvI,QAC/BnR,EAAAhP,EAAAiP,cAACqjK,GAAA,EAAD,CAAcpjK,MAAOygJ,GAAkB9uI,UAChC/f,KAAKoN,MAAM6b,SAASO,mBACnBtb,EAAAhP,EAAAiP,cAACulG,GAAAx0G,EAAD,MAEAgP,EAAAhP,EAAAiP,cAACyI,GAAA1X,EAAD,OAGRgP,EAAAhP,EAAAiP,cAAC8xH,GAAA,EAAD,CACIwxC,OAAK,EACLt9J,QACIjG,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0yE,MAAM,QAChEtmF,KAAKoN,MAAMud,SAASiwC,aAKpC56D,KAAKoN,MAAMud,SAASf,WAAWppB,IAAI,SAAAg6B,GAAG,OACnCtsB,EAAAhP,EAAAiP,cAACypD,GAAA,EAAD,CAAU9wD,IAAK0zB,EAAI/R,GAAIra,MAAOygJ,GAAkBxvI,QAC5CnR,EAAAhP,EAAAiP,cAACqjK,GAAA,EAAD,CAAcpjK,MAAOygJ,GAAkB9uI,UAChCkxJ,EAAqB9nJ,KAAK,SAAAuoJ,GAAO,OAAIA,EAAQjpJ,KAAO+R,EAAI/R,KACvDva,EAAAhP,EAAAiP,cAACulG,GAAAx0G,EAAD,MAEAgP,EAAAhP,EAAAiP,cAACyI,GAAA1X,EAAD,OAGRgP,EAAAhP,EAAAiP,cAAC8xH,GAAA,EAAD,CACIwxC,OAAK,EACLt9J,QACIjG,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0yE,MAAM,QAChE9rD,EAAIogC,SADT,KACqBpzD,EAAKkpK,wBAAwBl2I,EAAIC,iBADtD,eAatC3M,IAAak5G,GAAoBC,IAC/B/4H,EAAAhP,EAAAiP,cAAC0/C,GAAA,EAAD,CAAaz/C,MAAO4iK,EAAQjyK,OAAA0G,EAAA,EAAA1G,CAAA,GAAQ8vJ,GAAkB5uI,eAAmB4uI,GAAkBjvI,iBAA/D7gB,OAAA0G,EAAA,EAAA1G,CAAA,GAAwF8vJ,GAAkB5uI,eAAmB4uI,GAAkBlvI,cACvKzR,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACV86J,GACG9iK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACY,QAAtBp5B,KAAK0d,aACFxP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOygJ,GAAkBt2I,YAC1BrK,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOygJ,GAAkB7uI,QAA9B,oBAAuD9R,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOiuI,EAAgBtuH,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,eAGrIjL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0yE,MAAM,UAArE,WAGAp4E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY2G,UAAU,KAAKn2C,MAAOygJ,GAAkBnxI,aAAc9e,QAAQ,KAAK0nF,MAAM,UAChFtmF,KAAK0d,eAIlBxP,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,QAAQwP,OAAO0f,GAAaw4G,GAASA,EAAKv/D,QAA8C8nF,GAAkBj7I,KAAtDi7I,GAAkBxuI,gBAA0CimE,MAAM,WACrIx4D,GAAaw4G,GAASA,EAAKv/D,QAAmB/mE,KAAKoN,MAAMud,SAAS85C,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMud,SAAS85C,gBAAiB19D,MAAQ,kBAAxG,MAG9CmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0yE,MAAM,UAArE,iBAGAp4E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY2G,UAAU,KAAKn2C,MAAOygJ,GAAkBnxI,aAAc9e,QAAQ,KAAK0nF,MAAM,UAChFtmF,KAAK4d,cAEV1P,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,QAAQwP,OAAO0f,GAAaw4G,GAASA,EAAKv/D,QAA8C8nF,GAAkBj7I,KAAtDi7I,GAAkBxuI,gBAA0CimE,MAAM,WACrIx4D,GAAaw4G,GAASA,EAAKv/D,QAAmB/mE,KAAKoN,MAAMud,SAAS85C,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMud,SAAS85C,gBAAiB19D,MAAQ,kBAAxG,QAKpDiqK,GAAYhqC,GACV94H,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAEY,QAAtBp5B,KAAK0d,aACFxP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOygJ,GAAkBt2I,YAC1BrK,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOygJ,GAAkB7uI,QAA9B,oBAAuD9R,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOiuI,EAAgBtuH,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,eAGrIjL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0yE,MAAM,UAArE,WAGAp4E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY2G,UAAU,KAAKn2C,MAAOygJ,GAAkBnxI,aAAc9e,QAAQ,KAAK0nF,MAAM,UAChFtmF,KAAK0d,eAIlBxP,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,QAAQwP,OAAO0f,GAAaw4G,GAASA,EAAKv/D,QAA8C8nF,GAAkBj7I,KAAtDi7I,GAAkBxuI,gBAA0CimE,MAAM,WACrIx4D,GAAaw4G,GAASA,EAAKv/D,QAAmB/mE,KAAKoN,MAAMud,SAAS85C,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMud,SAAS85C,gBAAiB19D,MAAQ,kBAAxG,OAIhDiqK,GAAY/pC,GACV/4H,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYwP,MAAOygJ,GAAkBj7I,KAAM0yE,MAAM,UAArE,iBAGAp4E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY2G,UAAU,KAAKn2C,MAAOygJ,GAAkBnxI,aAAc9e,QAAQ,KAAK0nF,MAAM,UAChFtmF,KAAK4d,cAEV1P,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,QAAQwP,OAAO0f,GAAaw4G,GAASA,EAAKv/D,QAA8C8nF,GAAkBj7I,KAAtDi7I,GAAkBxuI,gBAA0CimE,MAAM,WACrIx4D,GAAaw4G,GAASA,EAAKv/D,QAAmB/mE,KAAKoN,MAAMud,SAAS85C,eAAiBzkE,KAAK+uF,QAAQ/uF,KAAKoN,MAAMud,SAAS85C,gBAAiB19D,MAAQ,kBAAxG,6CA1Q1E,IAAMs4B,EAASr/B,KAAK+uF,QAAQ/uF,KAAKoN,MAAM6b,SAASmC,kBAChD,OAAOiU,EAASA,EAAOt4B,MAAQ,+CAI/B,GAAG/G,KAAKoN,MAAMud,SAASrC,mBAAuBtoB,KAAKoN,MAAMud,SAASoxF,eAAe,CAC7E,IAAM18E,EAASr/B,KAAK+uF,QAAQ/uF,KAAKoN,MAAMud,SAASoxF,gBAChD,OAAO18E,EAASA,EAAOt4B,MAAQ,GAC7B,GAAK/G,KAAKoN,MAAM6b,SAAS6hD,eAAgB,CAC3C,IAAMzrC,EAASr/B,KAAK+uF,QAAQ/uF,KAAKoN,MAAM6b,SAAS6hD,gBAChD,OAAOzrC,EAASA,EAAOt4B,MAAQ,GAE/B,MAAO,0CAMX,IADa/G,KAAKoN,MAAMgc,KACb,MAAO,GAClB,IAAMsjB,EAAU1sC,KAAKoN,MAAMgc,KAAMoc,YACjC,OAAOkH,GAAoB,wCAgB3B,OAAK1sC,KAAKoN,MAAM6b,SAAS6E,UAAY9tB,KAAKoN,MAAMk5H,MAAQtmI,KAAKoN,MAAMk5H,KAAKv/D,SAAW4qG,oBAAS3xK,KAAKoN,MAAMk5H,KAAK5oH,cACxG,GAAAnZ,OAAU+zB,GAAet4B,KAAKoN,MAAMk5H,KAAK5oH,eAElC,2CAKX,OAAK1d,KAAKoN,MAAM6b,SAAS6E,UAAY9tB,KAAKoN,MAAMk5H,MAAQtmI,KAAKoN,MAAMk5H,KAAKv/D,SAAW4qG,oBAAS3xK,KAAKoN,MAAMk5H,KAAK1oH,cACxG,GAAArZ,OAAU+zB,GAAet4B,KAAKoN,MAAMk5H,KAAK1oH,eAElC,8CAKX,OAAOiD,GAAgB7gB,KAAKoN,MAAM2T,gBAhEbxS,IAAMC,eC8BpBojK,GA/DX,SAAAA,EAAYC,GAAmB,IAAA7qK,EAAAhH,KAAAjB,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA4xK,GAAA5xK,KAJvB6xK,QAAoB,GAIG7xK,KAHvB46E,OAAmB,GAGI56E,KAFvB8xK,OAAmB,GAEI9xK,KADvB+xK,QAAoB,GACG/xK,KAI/BgyK,OAAS,WACL,OAAO,IAAIvqK,QAAQ,SAACC,EAASC,GACzBX,EAAK6qK,QAAQ7oJ,QAAQ,SAACuQ,GAClBvyB,EAAKirK,QAAQ14I,EAAK7xB,EAASC,QAPR3H,KAYvBiyK,QAAU,SAAC14I,EAAa7xB,EAAcC,GAC1C,OAAIX,EAAK4zE,OAAOvxE,QAAQkwB,IAAQ,EACrB9xB,QAAQC,QAAQ6xB,IAG3BvyB,EAAK+qK,QAAQlkJ,KAAK0L,GACXvyB,EAAKkrK,gBAAgB34I,GACvBryB,KAAK,WACFF,EAAK4zE,OAAO/sD,KAAK0L,GACbvyB,EAAK4zE,OAAOr6E,SAAWyG,EAAK6qK,QAAQtxK,QACpCmH,MAGPI,MAAM,WACHd,EAAK8qK,OAAOjkJ,KAAK0L,GACjB5xB,EAAO4xB,OA3BYv5B,KA+BvBkyK,gBAAkB,SAAC34I,GACvB,OAAO,IAAI9xB,QAAQ,SAACC,EAASC,GACzB,IAAIwqK,GAAW,EACXC,GAAU,EACVhpI,EAAOt4B,SAASuhK,qBAAqB,QAAQ,GAC7CC,EAAWxhK,SAAS3C,cAAc,UAEtCmkK,EAAI16I,KAAO,kBACX06I,EAAIC,OAAQ,EACZ,IAAMC,EAAa,SAACp5E,GAAgB+4E,GAAW,EAAMzqK,EAAQ6xB,IACvDk5I,EAAe,SAACr5E,GAAgBg5E,GAAU,EAAMzqK,EAAO4xB,IAiB7D,OAfA+4I,EAAII,mBAAqB,WACrB,GAAIP,EAAU,OAAOK,IACrB,GAAIJ,EAAS,OAAOK,IACpB,IAAM1kK,EAAQukK,EAAIK,WACJ,aAAV5kK,EACAykK,IACiB,UAAVzkK,GACP0kK,KAIRH,EAAI39I,iBAAiB,OAAQ69I,GAC7BF,EAAI39I,iBAAiB,QAAS89I,GAC9BH,EAAI/4I,IAAMA,EACV6P,EAAKwpI,YAAYN,GACVA,KAzDXtyK,KAAK6xK,QAAUA,aPMXtG,4HAOZ,IA+FesH,GA/FI,SAACzlK,GAChB,IAAM0lK,EAAWltK,OACXoM,EAAatE,GAAKsE,aAClB+gK,EAAYjjK,gBAEZkjK,EAA+DD,EAAUxyK,OAAS,EAclF60B,EAbkB,CAAC,CACrB3M,GAAI8iJ,GAAmB0H,YACvBC,UAAW,8BAEf,CACIzqJ,GAAI8iJ,GAAmB4H,eACvBD,UAAW,iCACZ,CACCzqJ,GAAI8iJ,GAAmB6H,aACvBF,UAAW,gCAIiB/pJ,KAAK,SAAA8C,GAAC,OAAIA,EAAExD,KAAOrb,EAAM8lK,YACnDA,EAAY99I,EAAUA,EAAQ89I,UAFb,sBAIvB3kK,IAAMq9C,UAAU,WACZ,GAAKonH,EAIL,GAAKhhK,EAAL,CAQI,IAAWuzB,EAAGrmC,EAMlB,GARK4zK,EAAIO,OAEM9tI,EAGR3/B,QAHW1G,EAGH,OAFAqmC,EAAErmC,IAAM,YAAeqmC,EAAErmC,GAAG41J,EAAIvvH,EAAErmC,GAAG41J,GAAK,IAAIjnI,KAAK5tB,YAC1DslC,EAAErmC,GAAGA,EACS6zK,gBADFxtI,EAAErmC,GAAGyX,OAFrB,GAMAm8J,EAAIQ,SAGJ,OAFAzvK,EAAOS,IAAI,mCACXivK,KAIsB,IAAtBnmK,EAAMomK,cACN3vK,EAAOS,IAAI,wBAGU,IAAIstK,GAAa,CAClC,2CADkC,wDAAArtK,OAEsBwuK,KAG/Cf,SAAS9qK,KAAK,WACnB4rK,EAAIQ,SACJC,IAEA1vK,EAAOuB,MAAM,mCAElB,SAACm0B,GACA11B,EAAOuB,MAAM,6BAA8Bm0B,WAnC/C11B,EAAOooD,KAAK,8CAJZpoD,EAAOS,IAAI,2CA2ChB,IAEH,IAAMivK,EAAmB,WAChBvhK,IAAqC,IAAtB5E,EAAMomK,cAG1BV,EAAIQ,SAASG,KArEM3jK,sBAsEnBgjK,EAAIO,IAAI,MAAO,aAAc3lK,GAAKm8B,WAAW5mC,sBAC7C6vK,EAAIO,IAAI,OAAQ,QAChBP,EAAIO,IAAI,MAAO,YAAY,GAC3BP,EAAIO,IAAI,MAAO,UAAW,SAAUhpK,GAChCxG,EAAOS,IAAI,UAAW+F,KAE1BxG,EAAOS,IAAI,uBAEf,OAAI0uK,EAEI9kK,EAAAhP,EAAAiP,cAAA,OAAKsa,GAAIyqJ,EAAW9kK,MAAO,CAAEkM,QAASlN,EAAMsmK,YAAc,QAAU,UAMxExlK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,OQ3BFqlK,eAsBF,SAAAA,EAAYvmK,GAAc,IAAApG,EAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA2zK,IACtB3sK,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA40K,GAAApmK,KAAAvN,KAAMoN,KAtBV2hF,QAAU3+C,KAqBgBppC,EApB1BotB,kBAAoB7J,GAAY,YAAaC,GAAgBC,gBAoBnCzjB,EAnB1B4sK,iBAAmBrpJ,GAAY,WAAYC,GAAgBC,gBAmBjCzjB,EAlB1B6sK,iBAAmBtpJ,GAAY,aAAcC,GAAgBC,gBAkBnCzjB,EAjB1B8sK,2BAA6BvpJ,GAAY,YAAaC,GAAgBC,gBAiB5CzjB,EAhB1B+sK,uBAAyBxpJ,GAAY,mBAAoBC,GAAgBC,gBAgB/CzjB,EAf1BgtK,8BAAgCzpJ,GAAY,0BAA2BC,GAAgBC,gBAe7DzjB,EAd1BitK,kBAAoB7tI,GAAe,oBAAqB5b,GAAgBQ,aAc9ChkB,EAb1BktK,uBAAyB3pJ,GAAY,yBAA0BC,GAAgB+jB,0BAarDvnC,EAZ1BmtK,iBAAmB5pJ,GAAY,mBAAoBC,GAAgB+jB,0BAYzCvnC,EAX1BotK,iCAAmC7pJ,GAAY,+BAAgCC,GAAgB+jB,0BAWrEvnC,EAV1BojE,WAAa18D,GAAKwjB,iBAUQlqB,EAT1BqtK,eAAiB3mK,GAAK+jB,6BASIzqB,EAR1B8mD,WAAapgD,GAAKyjB,iBAQQnqB,EAP1B+tD,SAAWrnD,GAAK+iB,0BAOUzpB,EAN1BstK,aAAe/pJ,GAAY,KAAMC,GAAgBzc,OAMvB/G,EAL1ButK,cAAgBhqJ,GAAY,KAAMC,GAAgBzc,OAKxB/G,EAJ1Bo7B,UAAY7X,GAAY,UAAWC,GAAgBuO,gBAIzB/xB,EA+C1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA/CjB79C,EAgD1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAhDlB79C,EAiD1BwtK,kBAAoB,WAChBrsI,GAAcE,cACdrhC,EAAK4G,SAAS,CAAEi3C,SAAS,KAnDH79C,EAqD1BytK,eAAiB,kBAAMztK,EAAK4G,SAAS,CAAE8mK,2BAA2B,KArDxC1tK,EAuD1B2tK,gBAAkB,SAACh+J,GACf,IAAM0H,EAAY1H,EAAE4yC,OAAOxiD,MAC3BC,EAAK4G,SAAS,CACVyQ,YACAu2J,kBAAmBv2J,EAAU9d,OAAS,KA3DpByG,EA8D1B6tK,oBAAsB,SAACl+J,GACnB,IAAMm+J,EAAgBn+J,EAAE4yC,OAAOxiD,MAC/BC,EAAK4G,SAAS,CACVmnK,sBAAuBD,EACvBE,8BAA8B,EAC9BC,2BAA6BH,EAAcv0K,OAAS,GAAKyG,EAAK+G,MAAMmnK,uBAAuB30K,OAAS,KAnElFyG,EAsE1BmuK,qBAAuB,SAACx+J,GACpB,IAAMy+J,EAAiBz+J,EAAE4yC,OAAOxiD,MAChCC,EAAK4G,SAAS,CACVsnK,uBAAwBE,EACxBC,+BAA+B,EAC/BJ,2BAA6BG,EAAe70K,OAAS,GAAKyG,EAAK+G,MAAMgnK,sBAAsBx0K,OAAS,KA3ElFyG,EA+E1BsuK,sBAAwB,SAAC3+J,GACrB,IAAM4+J,EAAkB5+J,EAAE4yC,OAAOxiD,MACjCC,EAAK4G,SAAS,CACV2nK,kBACAC,gBAAiBD,EAAgBh1K,OAAS,KAnFxByG,EAuF1ByuK,cAAgB,WACZzuK,EAAKoG,MAAMsoK,iBAAiBxuK,KAAK,SAACoB,GAC9BA,EAAMA,EAAInI,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IACxCq0B,GAAWmhJ,YAAYrtK,GAAKpB,KAAK,SAAC0D,GAC1BA,GACA5D,EAAKoG,MAAMwoK,qBAAqB1uK,KAAKF,EAAKytK,eAAgBztK,EAAK+iF,iBA5FrD/iF,EAkG1B6uK,iBAAmB,WACf7uK,EAAK4iF,YACL5iF,EAAK4G,SAAS,CACVgnK,mBAAoB5tK,EAAKojE,WACzB0rG,2BAA4B9uK,EAAK+uK,8BACjCC,mCAAmC,EACnCC,yCAAyC,IAE7CjvK,EAAKoG,MAAMmjD,2BAA2BrpD,KAAKF,EAAKwtK,kBAAmBxtK,EAAK+iF,aA1GlD/iF,EAoH1BkvK,sBAAwB,WAAM,IAAAh5D,EACDlvG,GAAOmvG,iBAAxBlvG,EADkBivG,EAClBjvG,KAAMsE,EADY2qG,EACZ3qG,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKoG,MAAM+uC,WACrDh8C,QAAQoS,EAAQrP,aAAe8D,EAAKoG,MAAMlK,cAC1C/C,QAAQoS,EAAQ5O,WAAaqD,EAAKoG,MAAMud,SAASlC,IACjDtoB,QAAQoS,EAAQ6qG,OAAS,IAC9B,OAAOx3G,OAAOC,SAAS2C,OAASilF,GA1HVzmF,EA8H1BmvK,yBAA2Br1J,aAAW,SAAC+H,GACnC,IAAIU,EAAiC,GAIrC,OAHAV,EAAMG,QAAQ,SAAAI,GACVG,EAAqBsE,KAArB9tB,MAAAwpB,EAAoBxqB,OAAAgO,EAAA,EAAAhO,CAASqqB,EAAKG,yBAE/BA,IAnIeviB,EA8I1BovK,4BAA8Bt1J,aAAW,SAAC+H,EAAe8B,GACrD,OAAO/B,GAA8BC,EAAO8B,EAAS7B,UAAW6B,EAASlC,MA/InDzhB,EAsJ1BqvK,4BAA8Bv1J,aAAW,SAACgI,GACtC,IAAMwtJ,EAAuBxtJ,EAAUtoB,IAAI,SAAAmW,GAAC,OAAI3P,EAAKuvK,UAAU5/J,EAAEiT,cAAa1c,OAAO,SAAAyJ,GAAC,OAAIA,IAC1F,OAAO2/J,GAAwBA,EAAqB/1K,OAAS,IAxJvCyG,EAmK1BuvK,UAAY,SAACvsB,GACT,IAAMwsB,EAAUxsB,EAAKxpJ,IAAI,SAAAyrB,GAAC,OAAIjlB,EAAKknB,WAAUhhB,OAAO,SAAAwgJ,GAAC,OAAIA,IACzD,OAAO8oB,GAAWA,EAAQj2K,OAAS,GArKbyG,EAwK1BknB,SAAW,SAACsM,GAER,QADcxzB,EAAKoG,MAAMud,SAASf,WAAWT,KAAK,SAAA8C,GAAC,OAAIA,EAAExD,KAAO+R,EAAI/R,IAAMwD,EAAEiC,YAzKtDlnB,EAmM1Bq+C,aAAe,WACXr+C,EAAK4G,SAAS,CAAEi3C,SAAS,IACzB,IAAM4xH,EAAuC,CACzC1mG,kBAAmB/oE,EAAK+G,MAAMsQ,UAC9B02J,sBAAuB/tK,EAAK+G,MAAMgnK,sBAClCG,uBAAwBluK,EAAK+G,MAAMmnK,uBACnCwB,cAAe1vK,EAAK+G,MAAM+nK,2BAC1Ba,mBAAoB3vK,EAAKkvK,wBACzBU,iBAAkB5vK,EAAK+G,MAAM+nK,6BAA+B9uK,EAAKmtK,mBAAqBntK,EAAKojE,WAC3FmrG,gBAAiBvuK,EAAK+G,MAAMwnK,gBAC5BsB,oBAAqB7vK,EAAK+G,MAAM8oK,oBAChCC,qBAAsB9vK,EAAK+G,MAAM+oK,qBACjCjnG,gBAAiB7oE,EAAKoG,MAAMud,SAASklD,gBACrCknG,2BAA4B/vK,EAAK+G,MAAMioK,kCACvCgB,iCAAkChwK,EAAK+G,MAAMkoK,wCAC7C33H,iBAAkBt3C,EAAK+G,MAAMuwC,iBAC7B24H,wBAAyBjwK,EAAKkwK,2BAElClwK,EAAKoG,MAAM+pK,yBAAyBV,GAAmBvvK,KAAKF,EAAKwtK,kBAAmBxtK,EAAK+iF,aArNnE/iF,EAwN1BowK,8BAAgC,WAC5BpwK,EAAK4G,SAAS,SAAAmpD,GAAS,OAAAh4D,OAAA0G,EAAA,EAAA1G,CAAA,GAChBg4D,EADgB,CAEnBi/G,mCAAoCj/G,EAAUi/G,uCA3N5BhvK,EA+N1BqwK,8BAAgC,WAC5BrwK,EAAK4G,SAAS,SAAAmpD,GAAS,OAAAh4D,OAAA0G,EAAA,EAAA1G,CAAA,GAChBg4D,EADgB,CAEnBk/G,yCAA0Cl/G,EAAUk/G,6CAlOlCjvK,EAsO1BgxD,aAAe,SAACpjC,GACZ,IAAInM,EAAKmM,EAAM20B,OAAOxiD,MACtBC,EAAK4G,SAAS,CAAEkoK,2BAA4BpqJ,SAASjD,EAAI,IAAKpK,UAAW,MAxOnDrX,EA2U1BswK,sBAAwBx2J,aAAW,SAAC+H,GAChC,IAAM0uJ,EAAe,IAAI7tJ,IAAI,CAAC1iB,EAAKstK,aAActtK,EAAKutK,gBACtD,OAAO1rJ,EAAM3b,OAAO,SAAA7O,GAAC,OAAIA,EAAE2sB,cAAgBhkB,EAAKitK,mBAAqB51K,EAAE+sB,mBAAqBpkB,EAAKo7B,WAAam1I,EAAazqJ,IAAIzuB,EAAEm8C,aA7U3GxzC,EAgV1BwwK,qBAAuB12J,aAAW,SAACgI,EAAuB2uJ,GACtD,OAAO3uJ,EAAU5b,OAAO,SAAA7O,GAAC,OAAIo5K,EAAYtuJ,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOpqB,EAAEgrB,WAAS9oB,OAAS,IAjVhEyG,EA8W1B0wK,+CAAiD52J,aAAW,SAAC+H,EAAeC,GAKxE,OAJWD,EAAMM,KAAK,SAAAC,GAAI,OACtBA,EAAKG,qBAAqBwW,SAASre,GAAuBgC,sCACvDoF,EAAU8D,KAAK,SAAA3D,GAAQ,OAAIA,EAASI,QAAUD,EAAKX,SA/W1D,IAOIqtJ,EAPAz3J,EAAY,GAQZjR,EAAMud,UAAYvd,EAAMud,SAASolD,oBACjC1xD,EAAYjR,EAAMud,SAASolD,mBAG/B,IAAM4nG,EAA4B3wK,EAAK4wK,qBAAuB5wK,EAAK6wK,2BAd7C,OAgBtB/B,EACK9uK,EAAKojE,WAEApjE,EAAKmtK,iBADH/mK,EAAMud,SAASL,mBAAqBtjB,EAAK+sK,uBAA0B/sK,EAAKmtK,iBAAqBwD,EAAiE3wK,EAAKmtK,iBAA1CntK,EAAK+uK,8BAG1I/uK,EAAK+G,MAAQ,CACT82C,SAAS,EACTvG,iBAAkBt3C,EAAKoG,MAAM8hB,WAAWovB,iBACxCs2H,mBAAoB5tK,EAAKojE,YAAqB/rD,EAAU9d,OAAS,EACjEu3K,2BAA2B,EAC3B9B,mCAAmC,EACnCC,yCAAyC,EACzC53J,YACA02J,sBA1BwB,GA2BxBG,uBA1ByB,GA2BzBD,4BAA4B,EAC5BD,8BAA8B,EAC9BK,+BAA+B,EAC/BS,6BACApB,0BAA2B1tK,EAAKoG,MAAMud,SAASmlD,wBAC/CylG,gBA/BkB,GAgClBsB,oBA/BsB,GAgCtBC,qBA/BuB,GAgCvBtB,iBAAiB,GAvCCxuK,mFA4CtBhH,KAAKoN,MAAM6zD,kDAuVN,IAAAz5D,EAAAxH,KACGmsC,GAAensC,KAAKoN,MAAM8hB,WAAWL,SAAa7uB,KAAKoN,MAAM8hB,WAAWkc,UAAYQ,GAA6B5rC,KAAKoN,MAAM8hB,WAAWkc,UAAWprC,KAAKoN,MAAM8hB,WAAWL,SAAW,CAAEsd,cAAU/oC,IAA/L+oC,SADH72B,EAEwEtV,KAAKoN,MAA1E8hB,EAFH5Z,EAEG4Z,WAAYvE,EAFfrV,EAEeqV,SAAU7B,EAFzBxT,EAEyBwT,UAAWivJ,EAFpCziK,EAEoCyiK,iBAAkBC,EAFtD1iK,EAEsD0iK,cAFtDl7G,EAGiF98D,KAAK+N,MAAnFsQ,EAHHy+C,EAGGz+C,UAAWk3J,EAHdz4G,EAGcy4G,gBAAiBR,EAH/Bj4G,EAG+Bi4G,sBAAuBG,EAHtDp4G,EAGsDo4G,uBAErD+C,GADmB/oJ,EAAWovB,iBACVpvB,EAAWsjD,QAAUtjD,EAAWL,QAASwN,OAAO,MAAQ,IAC5EuzC,EAAwBjlD,EAASilD,uBAAyBjlD,EAASilD,sBAAsBvzC,OAAO,MAGlGgrG,EAAsBtB,GAAsBuB,uBAAuBtnI,KAAKoN,MAAMm6H,gBAAgBn/G,KAAMpoB,KAAKoN,MAAM0b,UAAW9oB,KAAKoN,MAAMud,SAASlC,IAC5I++G,EAAuBH,EAAoBjB,cAC3CqB,EAAuBJ,EAAoBhB,cAC3CvkG,EAAgBulG,EAAoBvlG,cACpCzM,EAA8B,OAArBr1B,KAAKoN,MAAMgM,MAEpB4tH,EAAmBhnI,KAAK6gB,gBAAgBI,iBACxCgmH,EAAmBjnI,KAAK6gB,gBAAgBK,iBACxCuiI,EAAgBzc,GAAoBC,EACpCixC,EAAuBnyC,GAAsB4B,wBAAwB3nI,KAAKoN,MAAMud,SAAS85C,gBAE/F,OACIv2D,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACZJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAQinB,OAAoCjyB,EAA3ByrJ,GAAkB51I,SAC7CjZ,KAAKm4K,gCAAkCn4K,KAAKo4K,yBAA2Bp4K,KAAKoN,MAAM4qK,eAChE9pK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,mBACNqkD,SAAS,8EACTpM,UAAW,EACXqL,aAAc,EACdF,YAAY,EACZzqD,MAAOygJ,GAAkB9wI,eAIpD/d,KAAKm4K,gCAAkCn4K,KAAKo4K,wBACzBlqK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAW,YAC1B/H,EAAAhP,EAAAiP,cAACkqK,GAAD,CAAY3E,YAAa1zK,KAAKs4K,qBAAsBpF,UAAW3H,GAAmB0H,YAAaO,aAAa,KAGnIrnI,GACmBj+B,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMljB,UAAW,WAAYgV,MAAI,EAACmO,GAAI,GAAIyvB,GAAI7oD,KAAKm4K,8BAAgC,EAAI,IACnFjqK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC2E,WAAW,UACvB3M,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQ+kB,QAAM,GACVhnG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,GACXt/C,EAAAhP,EAAAiP,cAACoqK,GAAAr5K,EAAD,CAAYkP,MAAOygJ,GAAkBnwI,aAG7CxQ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,IACnBt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,KAAP,KAAajnB,MAAOygJ,GAAkBj7I,MAChEu4B,GAEJjd,EAAWsjD,SACRtkE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,QAAQwP,MAAOygJ,GAAkBj7I,MAArD,GAAArP,OACQ2qB,EAAWkc,UAAW/O,OAAO,OADrC,MACiD47I,MAOpFj4K,KAAKm4K,+BACcjqK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIyvB,GAAI,GACnB36C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC2E,WAAW,SAASzM,MAAO,CAAEqJ,WAAY,IACrDvJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAG4yB,GAAI,GAChBhsD,KAAKw4K,mBAAuEtqK,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,CAAakP,MAAOygJ,GAAkB3xI,kBAAxFhP,EAAAhP,EAAAiP,cAACsqK,GAAD,CAAQrqK,MAAOygJ,GAAkB5wI,cAEjE/P,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAOygJ,GAAkBvwI,YAC7Cte,KAAKw4K,mBAAqB,sBAA1B,gBAAAj0K,OAAkEqrE,QAQ3G1hE,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,IACTi2B,GAAYnsC,KAAKm4K,gCACCjqK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAOygJ,GAAkBpxI,QAASxH,UAAW,YAC5D/H,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,OAGvBq9E,GACmB94H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAOygJ,GAAkB1xI,cACvCjP,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAApE,UACYkzB,EAAuB,EAAI,IAAM,KAGjDt5H,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOygJ,GAAkBnxI,aAAc4oE,MAAM,SAAzD,GAAA/hF,OACQ+zB,GAAekvG,KAEvBt5H,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,QAAQwP,MAAOygJ,GAAkBj7I,KAAM0yE,MAAM,SAC5D4xF,KAKhCjxC,GACmB/4H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,EAAGhrB,MAAOygJ,GAAkB1xI,cACtCsmI,GAAiBv1I,EAAAhP,EAAAiP,cAAA,WAClBD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAApE,kBAIJpmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOygJ,GAAkBjxI,aAAc0oE,MAAM,SAAzD,GAAA/hF,OACQ+zB,GAAemvG,KAEvBv5H,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,QAAQwP,MAAOygJ,GAAkBj7I,KAAM0yE,MAAM,SAC5D4xF,KAKhCl4K,KAAKs4K,sBACcpqK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,KAAP,KAAai/E,cAAY,GAAxD,iBAGApmG,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,YAAP,KAAoBjnB,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAA9F,sDAIJpmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAItyB,IAAK9G,KAAKoN,MAAMud,SAASlC,IACxCva,EAAAhP,EAAAiP,cAACuqK,GAAD,CACI/tJ,SAAU3qB,KAAKoN,MAAMud,SACrBotF,SAAU/3G,KAAKoN,MAAM2qG,SACrBjkE,kBAAqB9zC,KAAK8zC,kBAC1Bm8H,iBAAkBjwK,KAAKuyF,eAM3DrkF,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAW,cAC1B/H,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOygJ,GAAkBj7I,KAAMhV,QAAUy2B,EAAgB,KAAP,KAAai/E,cAAY,GAAvF,mBAGApmG,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,YAAP,KAAoBjnB,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GACzD,IAAhCt0G,KAAKoN,MAAM0b,UAAUvoB,OAAe,kDAChBwlI,GAAsBa,sBAAsB99G,GAAWvoB,OAAS,EAAI,kDAAoD,KAGrJ2N,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACpBy9E,GAAsBa,sBAAsB99G,GAAWtoB,IAAI,SAAAsuI,GACxC,IAAM1lH,EAAO5hB,EAAK4F,MAAMyb,MAAMM,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOqmH,EAAKzlH,SACtDi9G,EAAOl9G,EAAO28G,GAAsBS,YAAY1kG,EAAe1Y,EAAMX,SAAMrlB,EAC3EiuK,IAAcjoJ,GAAOA,EAAKG,qBAAqBwW,SAASre,GAAuBuC,mBACjFqtJ,EAAiB,qIACf9tE,KAAgB6tE,IAAejoJ,IAAQA,EAAK4B,cAAgBob,GAAe,wBAAyB5b,GAAgBQ,aACpH04E,KAAc2tE,IAAejoJ,IAAQA,EAAK4B,cAAgBob,GAAe,sBAAuB5b,GAAgBQ,aAItH,OAHGw4E,GAAgBE,KACf4tE,EAAc,QAAA/sK,OAAW6kB,EAAMoc,YAAjB,iJAGdt3B,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAGllD,IAAKgoI,EAAKrmH,GAAIxS,UAAW,eAC/C/H,EAAAhP,EAAAiP,cAACwqK,GAAD,CACI1vJ,SAAU6lH,EACV1lH,KAAMA,EACNuB,SAAUnjB,EAAK4F,MAAMud,SACrBotF,SAAUvwG,EAAK4F,MAAM2qG,SACrBo5D,SAAU3pK,EAAK+qF,UACf+zC,KAAMA,EACN3kH,SAAUna,EAAK4wK,uBACfr3J,QAASvZ,EAAK4F,MAAM2T,QACpBswJ,YAAaA,EACbC,eAAgBA,QAOpDpjK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAOygJ,GAAkBjwI,uBACpCmnH,GAAsBW,mBAAmB59G,GAAWvoB,OAAS,GAC1C2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,YAAP,KAAoBjnB,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAA9F,6CAM5BpmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACpBy9E,GAAsBW,mBAAmB59G,GAAWtoB,IAAI,SAAAsuI,GACrC,IAAM1lH,EAAO5hB,EAAK4F,MAAMyb,MAAMM,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOqmH,EAAKzlH,SACtDi9G,EAAOl9G,EAAO28G,GAAsBS,YAAY1kG,EAAe1Y,EAAMX,SAAMrlB,EACjF,OACI8K,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAGllD,IAAKgoI,EAAKrmH,GAAIxS,UAAW,eAC/C/H,EAAAhP,EAAAiP,cAACwqK,GAAD,CACI1vJ,SAAU6lH,EACV1lH,KAAMA,EACNuB,SAAUnjB,EAAK4F,MAAMud,SACrBotF,SAAUvwG,EAAK4F,MAAM2qG,SACrBo5D,SAAU3pK,EAAK+qF,UACf+zC,KAAMA,EACN3kH,SAAUna,EAAK4wK,uBACfr3J,QAASvZ,EAAK4F,MAAM2T,QACpBswJ,aAAa,UAM9CrxK,KAAKo4K,wBAA2Bp4K,KAAKoqE,aAAepqE,KAAKm4K,+BAAiCn4K,KAAK44K,sBAAyB54K,KAAKoN,MAAM4qK,eAClH9pK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACMtO,KAAKoqE,YAAcpqE,KAAK43K,qBAAuB53K,KAAK63K,4BAClD3pK,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW,YACZ/H,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACItP,UAAW,EACXj4C,MAAM,uCACNqkD,SAAS,wPACTf,aAAczB,GAAiBviD,WAI1C/U,KAAKoqE,YAAcpqE,KAAK43K,qBAAuB53K,KAAK63K,4BACjD3pK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAW,WAAYrX,QAAUy2B,EAAgB,KAAP,KAAajnB,MAAOygJ,GAAkBpwI,aAAc61F,cAAY,GAAtH,yBACApmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACD,UAAW,YACvB/H,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,YAAP,KAAoBjnB,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAA9F,kHAGCt0G,KAAK+N,MAAM2mK,0BACRxmK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAOygJ,GAAkBjyI,eACxC1O,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,CAAakP,MAAOygJ,GAAkB3xI,kBACtChP,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,YAAP,KAAoBjnB,MAAOygJ,GAAkBlyI,cAAe23F,cAAY,GAAvG,wBAMRpmG,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIhrB,MAAOygJ,GAAkBjyI,eACxC1O,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAOygJ,GAAkB7zI,cAClC9M,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,YAAP,KAAoBjnB,MAAOygJ,GAAkBlyI,cAAe23F,cAAY,GAAvG,uBAIJpmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIjmC,QAAS1W,KAAKy1K,cACdrnK,MAAOygJ,GAAkBlwI,cACzB/f,QAAQ,YAHZ,yBAczBoB,KAAKs4K,sBAAwBt4K,KAAK64K,wBAA2B74K,KAAK84K,yBACjE5qK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAW,WAAYrX,QAAUy2B,EAAgB,KAAP,KAAajnB,MAAOygJ,GAAkBpwI,aAAc61F,cAAY,GAAtH,sBACE0jE,GACE9pK,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW,YACZ/H,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACItP,UAAW,EACXj4C,MAAM,mBACNqkD,SAAS,8EACTf,aAAczB,GAAiBviD,WAI3C7G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACD,UAAW,YACvB/H,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,KACRp5B,KAAKoqE,aAAe2tG,IAAsB/3K,KAAKs4K,sBAC9CpqK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOygJ,GAAkBrwI,qBAAsB81F,cAAY,GAAvE,4DAGApmG,EAAAhP,EAAAiP,cAACs2C,GAAA,EAAD,CACI19C,MAAO/G,KAAK+N,MAAM+nK,2BAA2BvrK,WAC7Cg5C,SAAUvjD,KAAKg4D,aACf5pD,MAAOygJ,GAAkB10I,YAEzBjM,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO/G,KAAKk0K,uBAAuB3pK,WACnC6D,MAAOygJ,GAAkBjiD,YACzB/oD,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,YAAY4K,UAAW3hB,KAAK+N,MAAMuwC,kBAAoBt+C,KAAK+4K,4BACjF9kK,MACI/F,EAAAhP,EAAAiP,cAAA,QAAMC,OAASpO,KAAK+N,MAAMuwC,kBAAoBt+C,KAAK+4K,0BAA6BlqB,GAAkBrxI,oBAAsBqxI,GAAkBxxI,aAA1I,oCACUrd,KAAK+N,MAAMuwC,oBAAsBt+C,KAAKg5K,+CACxC9qK,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIlyB,IAAK,kCACL2O,MAAK,iEAAAlR,OAAmEvE,KAAKg5K,8CAA8CxzI,YAAtH,eACLpQ,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAOygJ,GAAkB/vI,YAOvD5Q,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO/G,KAAKm0K,iBAAiB5pK,WAC7B6D,MAAOygJ,GAAkBjiD,YACzB/oD,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkBxxI,aAA/B,sDAEXnP,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI78C,MAAO/G,KAAKo0K,iCAAiC7pK,WAC7C6D,MAAOygJ,GAAkBjiD,YACzB/oD,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkBxxI,aAA/B,4DAIbrd,KAAKi5K,0BACH/qK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAW,YAC1B/H,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOygJ,GAAkBzxI,eAC1BlP,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAOygJ,GAAkBvuI,QAASotC,UAAW,GAC/Cx/C,EAAAhP,EAAAiP,cAACw/C,GAAA,EAAD,CACIv/C,MAAOygJ,GAAkB7xI,WACzBvH,MACIvH,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,YAAP,KAAoBjnB,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAA9F,kCAKRpmG,EAAAhP,EAAAiP,cAAC0/C,GAAA,EAAD,CAAaz/C,MAAOygJ,GAAkB5xI,aAClC/O,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAAS/jD,KAAK+N,MAAMioK,kCACpBzyH,SAAUvjD,KAAKo3K,8BACfrgK,MAAM,YACNhQ,MAAM,wBAGdkN,MACI/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkBxxI,aAA/B,2LAKRnP,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkBx1C,MAAOygJ,GAAkB/wI,SACvC+lC,QACI31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAAS/jD,KAAK+N,MAAMkoK,wCACpB1yH,SAAUvjD,KAAKq3K,8BACftgK,MAAM,YACNhQ,MAAM,wBAGdkN,MACI/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkBxxI,aAA/B,oZAW9Brd,KAAKk5K,oBACHhrK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAW,YAC1B/H,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIxD,UAAU,EACV/jD,MAAOvH,EAAAhP,EAAAiP,cAAA,SAAGD,EAAAhP,EAAAiP,cAAA,yCACV2rD,SACI5rD,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkBlxI,sBAA/B,6KAMR+vC,UAAW,OAM5B1tD,KAAKoqE,YAAc2tG,GAAoB/3K,KAAKm5K,sCAAwCn5K,KAAKs4K,sBACxFpqK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,YAAP,KAAoBjnB,MAAOygJ,GAAkBj7I,KAAM0gG,cAAY,GAA9F,0FAGApmG,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIq2E,WAAS,EACTE,KAAK,IACL4hD,aAxY9B,yWAyY8Bz3J,UAAQ,EACR4jC,WAAS,EACT3mD,QAAQ,WACRwP,MAAOygJ,GAAkB7wI,QAE7B9P,EAAAhP,EAAAiP,cAAA,WAECnO,KAAKq5K,0BACFnrK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,4DAIHs3H,GAA0BA,IAA2Bl1K,KAAKoN,MAAM2T,QAAQu5B,mBAAmB,GAAGE,QAASjwC,YACpG2D,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkBzpJ,OAA/B,2FAC6F+sC,KAAYhpB,KAAK,SAAAukI,GAAC,OAAIA,EAAEjlI,KAAOjhB,EAAK4F,MAAM2T,QAASu5B,mBAAmB,GAAIE,UAAWzzC,QAI1LmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAM/qB,MAAOygJ,GAAkB51I,OAAQgS,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACpDt/C,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIsE,WAAS,EACTngD,OAAQpF,KAAKs5K,mBACb16K,QAAQ,WACRqV,MAAM,iBACNlN,MAAOguK,EACPxxH,SAAUvjD,KAAK60K,uBAGvB3mK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAM/qB,MAAOygJ,GAAkB51I,OAAQgS,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACpDt/C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIwC,QAAM,EACNxvC,MAAM,eACNrV,QAAQ,WACRmI,MAAOmuK,EACP3xH,SAAUvjD,KAAKm1K,qBACf5vH,WAAS,EACT6G,YAAa,CAAEjB,QAAQ,GACvB/lD,MAAOpF,KAAK+N,MAAMsnK,+BAAiCH,IAA2Bl1K,KAAKoN,MAAM2T,QAAQu5B,mBAAmB,GAAGE,QAASjwC,YAEhI2D,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,cASrEmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAM/qB,MAAOygJ,GAAkB51I,OAAQgS,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACpDt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,4BAEJ1vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAM/qB,MAAOygJ,GAAkB51I,OAAQgS,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACpDt/C,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIt/B,SAAU3hB,KAAKu5K,uBACfh0H,WAAS,EACTngD,MAAOpF,KAAKu0G,2BACZp0D,WAAYngD,KAAKu0G,2BAA6B,0BAAuBnxG,EACrExE,QAAQ,WACRqV,MAAM,iBACNsvC,SAAUvjD,KAAK20K,gBACf5tK,MAAOsX,KAGfnQ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACft/C,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAuB,YAAd,YAA2BjnB,MAAOygJ,GAAkBj7I,MAAnF,4HAIJ1F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOygJ,GAAkBvxI,kBAC1BpP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOiQ,EAAYwwI,GAAkBxwI,UAAYwwI,GAAkBhxI,gBAAiBQ,MAIlGre,KAAKoqE,YAAc2tG,GAAoB/3K,KAAKm5K,qCAAuCn5K,KAAKw5K,4BAA8Bx5K,KAAKs4K,sBAC1HpqK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAM/qB,MAAOygJ,GAAkB51I,OAAQgS,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACpDt/C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,0BAEJ1vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAM/qB,MAAOygJ,GAAkB51I,OAAQgS,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACpDt/C,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIt/B,SAAU3hB,KAAKu5K,uBACfh0H,WAAS,EACTngD,MAAOpF,KAAKu0G,2BACZp0D,WAAYngD,KAAKu0G,2BAA6B,0BAAuBnxG,EACrExE,QAAQ,WACRqV,MAAM,iBACNsvC,SAAUvjD,KAAKs1K,sBACfvuK,MAAOwuK,KAGfrnK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACft/C,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAuB,YAAd,YAA2BjnB,MAAOygJ,GAAkBj7I,MAAnF,4HAIJ1F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOygJ,GAAkBvxI,kBAC1BpP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOmnK,EAAkB1mB,GAAkBxwI,UAAYwwI,GAAkBhxI,gBAAiB03J,MAM/GrnK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC+gC,GAAI,IACf99C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAA,KAAGC,MAAOygJ,GAAkBzwI,gBACvBpe,KAAK84K,yBAA2B,4BAChC94K,KAAKs4K,sBAAwB,uEAC7Bt4K,KAAKw4K,oBAAsB,6DAC1Bx4K,KAAK84K,0BAA4B94K,KAAKs4K,uBAAyBt4K,KAAKw4K,oBAAsB,4CAEhGtqK,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,sBACH7pB,QAAQ,YACRmY,MAAM,UACN3I,MAAOygJ,GAAkBtwI,iBACzBgnC,WAAS,EACT7uC,QAAS1W,KAAKqlD,aACdR,QAAS7kD,KAAK+N,MAAM82C,QACpBljC,UAAW3hB,KAAKy5K,qBAEfz5K,KAAKoqE,WAAa,sBAAyBpqE,KAAKi5K,yBAA2B,sBAAyBj5K,KAAKk5K,mBAAqB,kBAAoB,yBAQ7LlyC,GAAoBQ,EAAuB,EACzBt5H,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAOygJ,GAAkBjxI,aAAc0oE,MAAM,SACrDp4E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOygJ,GAAkB1vI,aAA/B,kFAMZ/b,EAIvBpD,KAAKs4K,qBAAuBpqK,EAAAhP,EAAAiP,cAAA,gBAAS/K,EACtC8K,EAAAhP,EAAAiP,cAACkqK,GAAD,CAAY3E,YAAa1zK,KAAKs4K,qBAAsBpF,UAAW3H,GAAmB4H,eAAgBK,aAAa,2DA/zBvG,OAAKxzK,KAAKoN,MAAM8hB,WAAWovB,kBAAsBt+C,KAAKg5K,8CAC3Ch5K,KAAKm0K,iBAETn0K,KAAKk0K,oEAsBZ,OAAOl0K,KAAKm2K,yBAAyBn2K,KAAKoN,MAAMyb,iDAIhD,IAAIymH,EAAgBtvI,KAAKoN,MAAMyb,MAAM3b,OAAO,SAAA7O,GAAC,OAAIA,EAAE2sB,YAAYtnB,gBAAkB0iC,GAAe,sBAAuB5b,GAAgBQ,eACvI,OAAOskH,GAAiBA,EAAc/uI,OAAO,qDAO7C,OAAOP,KAAKo2K,4BAA4Bp2K,KAAKoN,MAAMyb,MAAO7oB,KAAKoN,MAAMud,6DASrE,OAAO3qB,KAAKq2K,4BAA4Br2K,KAAKoN,MAAM0b,6DAInD,OAAO9oB,KAAK05K,6BAA+B15K,KAAKk5K,oBAAsBl5K,KAAKm5K,qCAAuCn5K,KAAKupB,qBAAqBwW,SAAS,8CAcrJ,OAAS//B,KAAKoqE,YAAepqE,KAAKm5K,qCAAwCn5K,KAAKw5K,2BAA6Bx5K,KAAK+N,MAAMynK,iBAC/Gx1K,KAAKi5K,0BAA8Bj5K,KAAKk5K,qBAAwBl5K,KAAKw5K,iFAG7E,OAAOx5K,KAAK+N,MAAMknK,4BAA8Bj1K,KAAK+N,MAAMmnK,yBAA2Bl1K,KAAKoN,MAAM2T,QAAQu5B,mBAAmB,GAAGE,QAASjwC,uDAGxI,OAASvK,KAAKoqE,YAAepqE,KAAKm5K,oCAAsCn5K,KAAK+N,MAAMsQ,UAAU9d,OAAS,IAAOP,KAAK+N,MAAM6mK,mBAChH50K,KAAKi5K,0BACLj5K,KAAKk5K,sBAAwBl5K,KAAKoqE,YAAepqE,KAAKoqE,YAAcpqE,KAAK+N,MAAMsQ,UAAU9d,OAAS,kDAI1G,SAAQP,KAAKoqE,YAAcpqE,KAAK+N,MAAM+nK,6BAA+B91K,KAAKm0K,0EAI1E,OAAOn0K,KAAKq5K,0BAA4Br5K,KAAK25K,uBAA0B35K,KAAK45K,mBAAqB55K,KAAK65K,qBAAuB75K,KAAK85K,+BAC3H95K,KAAK45K,mBAAqB55K,KAAK65K,+DA6CtC,OAAO75K,KAAKoN,MAAMud,SAASL,mBAAqBtqB,KAAK4zK,8DAIrD,OAAQ5zK,KAAKoN,MAAMud,SAASL,mBAAqBtqB,KAAKg0K,+BAAiCh0K,KAAKoN,MAAMud,SAASL,mBAAqBtqB,KAAKo0B,qBAAuBp0B,KAAK84K,qEAIjK,OAAO94K,KAAKoN,MAAMud,SAASL,mBAAqBtqB,KAAK8zK,iFAIrD,OAAO9zK,KAAKw4K,oBAAsBx4K,KAAKs4K,sBAAyB5qK,GAAK+jB,8BAAgCzxB,KAAK64K,gEAI1G,OAAO74K,KAAKoN,MAAMud,SAASL,mBAAqBtqB,KAAK+zK,yEAIrD,YAAwC3wK,GAAjCpD,KAAKoN,MAAMud,SAAS7B,WAA0B9oB,KAAKoN,MAAMud,SAAS7B,UAAU8D,KAAK,SAAAjW,GAAC,YAAqBvT,GAAjBuT,EAAEy3D,aAA4Bz3D,EAAEy3D,YAAYkwF,kFAMzI,OAAOt+J,KAAKoN,MAAM8hB,WAAWiF,wBAAyB,gDAGtD,QAAOn0B,KAAKoN,MAAM8hB,WAAWwjD,gEAK7B,OAAO1yE,KAAK+N,MAAM+nK,6BAA+B91K,KAAKk0K,kEAItD,OAAOl0K,KAAK+N,MAAM+nK,6BAA+B91K,KAAKm0K,4EAItD,OAAOn0K,KAAK+N,MAAM+nK,6BAA+B91K,KAAKo0K,qFAItD,SAAQp0K,KAAKoqE,aAAcpqE,KAAKoN,MAAM2qK,oBAA6B/3K,KAAKi5K,0BAA4Bj5K,KAAK+N,MAAMioK,mCAAqCh2K,KAAK+N,MAAMkoK,yCAA4Cj2K,KAAKk5K,oBAAsBl5K,KAAKm5K,mFAK3O,OAAOtnJ,GAAe7xB,KAAKoN,MAAM8hB,WAAYxG,GAAMirJ,iEAInD,OAAO3zK,KAAKs4K,sBAAyBt4K,KAAK64K,sBAAwBnrK,GAAK+jB,yEAIvE,IAAMsoJ,EAAU/5K,KAAKoN,MAAMyb,MAAMtoB,OAAS,EAC1C,OAAKw5K,GAAW7mI,GAAgBlzC,KAAKoN,MAAMud,SAASwoB,oBAAsB,IAC9DnzC,KAAKo4K,yBAA2Bp4K,KAAKs4K,sBAAwBt4K,KAAKoN,MAAM4qK,eAAiBh4K,KAAKg6K,kCAAoCh6K,KAAKi6K,oCAAsCj6K,KAAKk6K,8BAAgCl6K,KAAKu0G,2BAE1N7mG,GAAK+jB,6BAEHsoJ,IAAY/5K,KAAKs4K,uBAAyBt4K,KAAK+N,MAAMuwC,kBAAqBt+C,KAAKoN,MAAM4qK,eAAiBh4K,KAAKg6K,kCAAoCh6K,KAAKi6K,oCAAsCj6K,KAAKk6K,6BAEjMxsK,GAAKwjB,iBACH6oJ,KAAa/5K,KAAKs4K,sBAAwBt4K,KAAK64K,uBAAyB74K,KAAKoN,MAAM4qK,eAAiBh4K,KAAKg6K,kCAAoCh6K,KAAKu0G,2BAGlJwlE,IAAY/5K,KAAKo4K,yBAA2Bp4K,KAAKs4K,sBAAwBt4K,KAAKoN,MAAM4qK,eAAiBh4K,KAAKg6K,kCAAoCh6K,KAAKi6K,oCAAsCj6K,KAAKk6K,8BAAgCl6K,KAAKu0G,6DAK9O,OAAI7mG,GAAK+jB,8BACGzxB,KAAKs4K,uBAAyBt4K,KAAK64K,sBAEtC74K,KAAKo4K,yBAIFp4K,KAAKs4K,oEAIjB,OAAOt4K,KAAKs4K,uBAAyBt4K,KAAKoN,MAAM4qK,eAAiBh4K,KAAK64K,6DAItE,OAAOh4J,GAAgB7gB,KAAKoN,MAAM2T,qDAalC,OAAO/gB,KAAKw3K,qBAAqBx3K,KAAKoN,MAAM0b,UAAW9oB,KAAKs3K,sBAAsBt3K,KAAKoN,MAAMyb,2DAI7F,QACM7oB,KAAK+N,MAAMsQ,WAAcre,KAAK+N,MAAMsQ,UAAU9d,OAAS,+CAI7D,OACKP,KAAK+N,MAAMinK,gCAAmCh1K,KAAK+N,MAAMgnK,uBAA0B/0K,KAAK+N,MAAMgnK,sBAAsBx0K,OAAS,6DAKlI,SAAOP,KAAKoqE,YAAcpqE,KAAK63K,4BAA8B73K,KAAK43K,uBAAuB53K,KAAKoN,MAAMud,SAASmlD,2EAI7G,GAAI9vE,KAAKoN,MAAMud,SAAS2vB,oBAAsBt6C,KAAKoN,MAAMud,SAAS2vB,mBAAmB,GAAI,CACrF,IAAM6/H,EAAkBn6K,KAAKoN,MAAMud,SAAS2vB,mBAAmB,GAAGE,QAClE,MAAO,CAACx6C,KAAKs0K,aAAct0K,KAAKu0K,eAAe3nJ,KAAK,SAAAC,GAAC,OAAIA,IAAMstJ,IAC5D,OAAO,wEAYd,OAAOn6K,KAAK03K,+CAA+C13K,KAAKoN,MAAMyb,MAAO7oB,KAAKoN,MAAM0b,6DAIxF,OAAQ9oB,KAAK43K,qBAAuB53K,KAAK63K,8BAAiC73K,KAAKg5K,+FAI/E,IAAIoB,EAAap6K,KAAKoN,MAAMyb,MAAM3b,OAAO,SAAAkc,GAAI,OAAIA,EAAKG,qBAAqBwW,SAASre,GAAuB8B,8BAA6BhjB,IAAI,SAAA4oB,GAAI,OAAIA,EAAKX,KACzJ,OAAO2xJ,GAAcp6K,KAAKoN,MAAM0b,UAAUK,KAAK,SAAAF,GAAQ,OAAImxJ,EAAWr6I,SAAS9W,EAASI,iBAtZ7D9a,IAAMC,eAw+B1BquC,oBACXC,YAxBJ,SAAyB/uC,EAAmBi6C,GACxC,IAAMl/B,EAAYk/B,EAASr9B,SAAS7B,UAAU5b,OAAO,SAAA4hI,GAAI,QAAMA,EAAKzlH,QAAUylH,EAAKhhH,WAEnF,MAAO,CACHy5G,gBAAiBx5H,EAAMw5H,gBACvBr4G,WAAYnhB,EAAMmhB,WAClBnO,QAAShT,EAAMmhB,WAAWnO,QAC1B+H,YACAD,MAAO9a,EAAMqb,KAAKhB,OAI1B,SAA4B/oB,EAAe2oD,GACvC,MAAO,CACHmvH,yBAA0B,SAACV,GAAD,OAA0Cp3K,GhQ5vBnC88C,EgQ4vBqE6L,EAAS7L,UhQ5vB3Dj5C,EgQ4vBsE8kD,EAAS9kD,ahQ5vBzDm3K,EgQ4vBuEryH,EAASr9B,SAASlC,GhQ5vB/D9kB,EgQ4vBmEqkD,EAASr9B,SAAShnB,WhQ5vBjE22K,EgQ4vB6E7D,EhQ3vBzM,eAAApgD,EAAAt3H,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAm3H,EAAOj3H,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAi3H,GAAA,cAAAA,EAAA/2H,KAAA+2H,EAAA92H,MAAA,cAAA82H,EAAA/2H,KAAA,EAAA+2H,EAAA92H,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,eAAAqB,OAAiE81K,EAAjE,cAAA91K,OAA8FZ,GACpG,CACIwlC,OAAQ,OACRC,KAAMv5B,KAAKjD,UAAU0tK,KAL9B,cAAA/jD,EAAA92H,KAAA,EAQOJ,EAASmvD,GAAcrS,EAAWj5C,EAAcm3K,IARvD,OASCh7K,EAASX,EAAgB,mBAAoB,YAT9C63H,EAAA92H,KAAA,sBAAA82H,EAAA/2H,KAAA,EAAA+2H,EAAA5uE,GAAA4uE,EAAA,SAWCl3H,EAAS0B,EAAyBw1H,EAAA5uE,GAAK,iCAXxC4uE,EAAA5uE,GAAA,yBAAA4uE,EAAA12H,SAAAy2H,EAAA,iBAAP,gBAAAF,GAAA,OAAAC,EAAAt2H,MAAAC,KAAAC,YAAA,KADG,IAAkCk8C,EAAmBj5C,EAAsBm3K,EAA0B12K,EAAoB22K,GgQ6vBxH/pH,yBAA0B,kBAAMlxD,EAASkxD,GAAyBvI,EAAS7L,UAAW6L,EAAS9kD,aAAc8kD,EAASr9B,SAASlC,MAC/HitJ,eAAgB,kBAAMr2K,GhQzrBC88C,EgQyrBuB6L,EAAS7L,UhQxrB3Dp9C,OAAAC,EAAA,GAAAC,EAAAC,EAAAC,KAAO,SAAAo7K,IAAA,IAAAC,EAAA,OAAAv7K,EAAAC,EAAAI,KAAA,SAAAm7K,GAAA,cAAAA,EAAAj7K,KAAAi7K,EAAAh7K,MAAA,cAAAg7K,EAAAh7K,KAAA,EACqBypC,GAAI,UAAA3kC,OAAW43C,EAAX,aADzB,cACGq+H,EADHC,EAAA/yH,KAAA+yH,EAAA19H,OAAA,SAEIy9H,GAFJ,wBAAAC,EAAA56K,SAAA06K,QADJ,IAAwBp+H,GgQ0rBvBy5H,mBAAoB,kBAAMv2K,GhQnrBC88C,EgQmrB2B6L,EAAS7L,UhQnrBjBj5C,EgQmrB4B8kD,EAAS9kD,ahQnrBfS,EgQmrB6BqkD,EAASr9B,SAASlC,GhQnrB3BqM,GgQmrB+B,EhQlrB3H,eAAA4lJ,EAAA37K,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAw7K,EAAOt7K,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAs7K,GAAA,cAAAA,EAAAp7K,KAAAo7K,EAAAn7K,MAAA,cAAAm7K,EAAAp7K,KAAA,EAAAo7K,EAAAn7K,KAAA,EAEOypC,GAAI,UAAA3kC,OAAW43C,EAAX,KAAA53C,OAAwBrB,EAAxB,KAAAqB,OAAwCZ,EAAxC,mBAAAY,OAAoEuwB,GAAY,CAAEqU,OAAQ,SAFrG,OAGC9pC,EAASmvD,GAAcrS,EAAWj5C,EAAcS,IAHjDi3K,EAAAn7K,KAAA,sBAAAm7K,EAAAp7K,KAAA,EAAAo7K,EAAAjzH,GAAAizH,EAAA,SAKCv7K,EAAS0B,EAAyB65K,EAAAjzH,GAAK,gDALxCizH,EAAAjzH,GAAA,yBAAAizH,EAAA/6K,SAAA86K,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAA36K,MAAAC,KAAAC,YAAA,KADG,IAA4Bk8C,EAAmBj5C,EAAsBS,EAAoBmxB,GgQorBxFmsC,eAAgB,kBAAM5hE,EAAS4hE,UAOnC9rC,eAFW0nB,CAGb82H,IC5+Ba92H,oBACbC,YAAQ,KAPV,SAA4Bz9C,EAAe2oD,GACzC,MAAO,CACLuI,yBAA0B,kBAAMlxD,EAASkxD,GAAyBvI,EAAS7L,UAAW6L,EAAS9kD,aAAc8kD,EAASrkD,iBAI3Gk5C,CAvDS,SAACzvC,GAAiB,IAAAs0C,EACVnzC,IAAMozC,UAAS,GADLC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GACjCmD,EADiCjD,EAAA,GACxBmrC,EADwBnrC,EAAA,GAOxC,OACE1zC,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACEvnD,MACErI,EAAMkrK,qBACF,wBADJ,oBAAA/zK,OAEwB6I,EAAMwiE,uBAEhC9V,SACE1sD,EAAM0tK,mBACJ5sK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACEJ,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,SACED,EAAAhP,EAAAiP,cAAA,0DAEGf,EAAM6qK,kBAAN,OAAA1zK,OAAkC6I,EAAM6qK,kBAAxC,KAA+D,MAGnE7qK,EAAMkb,mBAAqBpa,EAAAhP,EAAAiP,cAAA,wOAC3Bf,EAAM2tK,sBAAwB7sK,EAAAhP,EAAAiP,cAAA,qHAEjCD,EAAAhP,EAAAiP,cAACw3C,GAAD,CACEl9B,GAAG,sBACH7pB,QAAQ,YACRmY,MAAM,UACNL,QA7BG,WACbq2E,GAAW,GACX3/E,EAAMmjD,2BAA2BrpD,KAAK,kBAAM6lF,GAAW,MA4B7CloC,QAASA,GALX,sBAWF32C,EAAAhP,EAAAiP,cAAA,yDAAiDf,EAAMkb,mBAAqBpa,EAAAhP,EAAAiP,cAAA,mHAA5E,KAGJu/C,UAAW,EACXmL,YAAY,EACZE,aAAczB,GAAiB0B,YAC/B5qD,MAAOygJ,GAAkB9wI,gBCUzBi9J,eA8BF,SAAAA,EAAY5tK,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAg7K,IACtBh0K,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAi8K,GAAAztK,KAAAvN,KAAMoN,KA9BV6tK,mBAAqB1wJ,GAAY,YAAaC,GAAgBC,gBA6BpCzjB,EA5B1Bk0K,oBAAsB3wJ,GAAY,YAAaC,GAAgBC,gBA4BrCzjB,EA3B1B4sK,iBAAmBrpJ,GAAY,WAAYC,GAAgBC,gBA2BjCzjB,EA1B1BgtK,8BAAgCzpJ,GAAY,0BAA2BC,GAAgBC,gBA0B7DzjB,EAxB1Bm0K,OAAS5wJ,GAAY,MAAOC,GAAgBuO,gBAwBlB/xB,EAvB1Bo0K,OAAS7wJ,GAAY,MAAOC,GAAgBuO,gBAuBlB/xB,EAtB1Bq0K,WAAa9wJ,GAAY,UAAWC,GAAgBuO,gBAsB1B/xB,EArB1Bs0K,UAAY/wJ,GAAY,SAAUC,GAAgBuO,gBAqBxB/xB,EApB1Bu0K,UAAYhxJ,GAAY,SAAUC,GAAgBuO,gBAoBxB/xB,EAnB1Bw0K,aAAejxJ,GAAY,YAAaC,GAAgBuO,gBAmB9B/xB,EAlB1By0K,aAAelxJ,GAAY,YAAaC,GAAgBuO,gBAkB9B/xB,EAjB1B00K,cAAgBnxJ,GAAY,aAAcC,GAAgBuO,gBAiBhC/xB,EAhB1B20K,YAAcpxJ,GAAY,WAAYC,GAAgBuO,gBAgB5B/xB,EAf1B40K,YAAcrxJ,GAAY,WAAYC,GAAgBuO,gBAe5B/xB,EAd1B60K,mBAAqBtxJ,GAAY,kBAAmBC,GAAgBuO,gBAc1C/xB,EAb1B80K,YAAcvxJ,GAAY,WAAYC,GAAgBuO,gBAa5B/xB,EAZ1B+0K,OAASxxJ,GAAY,eAAgBC,GAAgBuO,gBAY3B/xB,EAX1Bg1K,sBAAwBzxJ,GAAY,qBAAsBC,GAAgBuO,gBAWhD/xB,EAV1Bi1K,SAAW1xJ,GAAY,QAASC,GAAgBuO,gBAUtB/xB,EAT1Bk1K,OAAS3xJ,GAAY,SAAUC,GAAgBuO,gBASrB/xB,EAR1Bm1K,QAAU5xJ,GAAY,OAAQC,GAAgBuO,gBAQpB/xB,EAN1B8yB,QAAUH,KAMgB3yB,EAL1Bo1K,SAAWt7I,KAKe95B,EAH1Bq1K,mBAAqB9xJ,GAAY,UAAWC,GAAgBujB,iBAGlC/mC,EAD1B+nF,QAAU3+C,KACgBppC,EA6B1By7J,kBAAoB,SAACx5I,GACjBjiB,EAAK4G,SAAS,CAAEw5H,gBAAiBn+G,KA9BXjiB,EA2E1Bs1K,UAAYx7J,aAAW,SAACiJ,EAAuBpmB,GAAxB,OAA+ComB,EAAUZ,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAO9kB,MA3E7EqD,EAgF1Bu1K,oBAAsBz7J,aAAW,SAAC07J,EAAsC74K,GAAvC,OAA8D64K,EAAmBrzJ,KAAK,SAAA/Z,GAAM,OAAIA,EAAOqZ,IAAM9kB,MAhFpHqD,EAqF1By1K,kBAAoB37J,aAAW,SAACnd,EAAgC+4K,GAC5D,IAAK/4K,GAAyC,IAA3B+4K,EAAgBn8K,OAAc,OAAO,EACxD,IAAMo8K,EAAUjvK,GAAKu4C,cACf4jC,EAAW6yF,EAAgBxvK,OAAO,SAAAq4B,GAAC,OAAIA,EAAEsW,QAAU8gI,IACzD,SAAI9yF,EAAStpF,OAAS,GAAKspF,EAAS,GAAGlmF,aAC5BA,IAAekmF,EAAS,GAAGlmF,aA1FhBqD,EA+I1B41K,gBAAkB97J,aAAW,SAACmC,GAC1B,IAAM45J,EAAO,CAAE1oK,QAAS,EAAG2oK,WAAY,GAOvC,OANA75J,EAAc+F,QAAQ,SAAAwoD,GACdA,EAAIlD,oBAAsBtnE,EAAKq1K,mBAC/BQ,EAAK1oK,SAAWq9D,EAAIjD,kBAEpBsuG,EAAKC,YAActrG,EAAIjD,oBAExBsuG,IAvJe71K,EA0J1B+1K,kCAAoCj8J,aAAW,SAACgI,GAC5C,IAAMk0J,EAA2B9mI,KAEjC,OADeptB,EAAU8D,KAAK,SAAA2B,GAAE,OAAIyuJ,EAAyBx8K,IAAI,SAAA6+B,GAAM,OAAIA,EAAO5W,KAAIsX,SAASxR,EAAGnD,oBAAsBmD,EAAGT,aA5JrG9mB,EAgK1B6xB,YAAc,SAAC7F,GAAgB,IAEvB+3E,EAFuBx1F,EACFvO,EAAKoG,MAAtBoI,eADmB,IAAAD,EACT,GADSA,EAG3B,OAAQyd,GACJ,KAAKhsB,EAAKi2K,mBAEN,OADAlyE,EAAWmyE,KACJ,kBAAMhvK,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKq0K,WAEN,OADAtwE,EAAWz3E,GAAgB,WACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKu0K,UAEN,OADAxwE,EAAWz3E,GAAgB,UACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKs0K,UAEN,OADAvwE,EAAWz3E,GAAgB,UACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKo0K,OACV,KAAKp0K,EAAKm0K,OAEN,OADApwE,EAAWz3E,GAAgB,cACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKw0K,aACV,KAAKx0K,EAAK00K,cACV,KAAK10K,EAAKy0K,aACV,KAAKz0K,EAAK20K,YAEN,OADA5wE,EAAWz3E,GAAgB,QACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAK40K,YACV,KAAK50K,EAAK60K,mBACV,KAAK70K,EAAK80K,YAEN,OADA/wE,EAAWz3E,GAAgB,aACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAK+0K,OAEN,OADAhxE,EAAWz3E,GAAgB,OACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKg1K,sBAEN,OADAjxE,EAAWz3E,GAAgB,sBACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKi1K,SAEN,OADAlxE,EAAWz3E,GAAgB,SACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKk1K,OAEN,OADAnxE,EAAWz3E,GAAgB,UACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKm1K,QAEN,OADApxE,EAAWz3E,GAAgB,QACpB,kBAAMplB,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKo2K,oBAEN,OADAryE,EAAWsyE,KACJ,kBAAMnvK,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKs2K,6BAEN,OADAvyE,EAAWvK,GACJ,kBAAMtyF,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKu2K,qBAEN,OADAxyE,EAAWyyE,KACJ,kBAAMtvK,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,KAAKn2K,EAAKy2K,aAEN,OADA1yE,EAAW2yE,KACJ,kBAAMxvK,EAAAhP,EAAAiP,cAAC48F,EAAD,CAAU90F,UAAWT,EAAQ2nK,YAC9C,QACI,SA3Ncn2K,EA+N1B22K,mBAAqB,WAAM,IAAAroK,EACctO,EAAKoG,MAAlC+a,EADe7S,EACf6S,cAAe28C,EADAxvD,EACAwvD,UACnB38C,EAAcC,KAAK7nB,OAAS,GAAKukE,EAAU18C,KAAK7nB,OAAS,GACzDyG,EAAKoG,MAAMuwK,sBAlOO32K,EAsO1B42K,sBAAwB,YjIvOrB,SAAP/7K,EAAAo7C,EAAAiS,GAAA,OAAA2uH,GAAA99K,MAAAC,KAAAC,YiIwOQ29K,CAAsB52K,EAAKm1C,UAAWn1C,EAAK9D,aAAc8D,EAAKrD,YACzDuD,KAAK,SAAA0D,GAAM,OAAI5D,EAAK4G,SAAS,CAACmyJ,iBAAkBn1J,OAxO/B5D,EA2O1B82K,gBAAkB,WAEd,IAAMl1E,EAA8B,IAAIl/E,IAClC++E,EAA+B,IAAI/+E,IACnCg/E,EAAsC,IAAIh/E,IAC1CggF,EAAiB,GACjB3a,EAAU3+C,KACVzlB,EAAW3jB,EAAK2jB,SAEtB,IAAKA,EACD,MAAO,CACH++E,QAAOd,iBAAgBH,kBAAiBC,0BAIhD,IACIq1E,EADEtxJ,EAAqB7D,GAA8B5hB,EAAKoG,MAAM03D,UAAU18C,KAAMuC,EAAS7B,UAAW6B,EAASlC,IAI3GuF,EADUL,GAAahD,GACEnqB,IAAI,SAAAmW,GAAC,OAAIA,EAAE8R,KACpCohJ,EAAiB97I,GAAyBpD,EAAUqD,GACpDE,EAAWD,GAAoBtD,EAASf,WAAYoE,GACpDoZ,EAAUjZ,GAAmBxD,EAASf,WAAYoE,GAClDy+G,EAA2Br+G,GAAgCzD,EAAUqD,GACrE87I,EAA0Bn/I,EAASkmD,mBAAqBlmD,EAASkmD,kBAAkBtwE,OAAS,EAC5FwpK,EAAiBt8I,GAAyBhB,IAAuBq9I,EACvEiU,EAAqBhxJ,GAAkBN,EAAoBo9I,EAAgB37I,EAAUkZ,EAASqlG,IAA6Bs9B,EAE3H,IAAIiU,GAAoB,EA5BJrxJ,EAAA,SA6BX7lB,GAEL,GADc,CAAC,IAAI8lB,KAAK,SAAAC,GAAC,OAAIJ,EAAmB3lB,GAAKgmB,IAAID,KAGrD,OADAmxJ,GAAoB,EACpB,SAJR,IAAK,IAAIl3K,KAAO2lB,EAAoB,cAAAE,EAA3B7lB,GAID,MAIR,IAAIm3K,GAA6B,EAC7B3yJ,EAAYZ,GAA2BC,EAAU3jB,EAAKoG,MAAM03D,UAAU18C,MAY1E,GAXIkD,EAAU/qB,OAAS,IAAG09K,GAA6B,GAGvDv0E,EAAM77E,KACF,CACIpF,GAAIzhB,EAAKi2K,mBACThpK,MAAO,gBACPof,KAAMrsB,EAAK6xB,YAAY7xB,EAAKi2K,sBAIjCtyJ,EAASpC,aAER,OADAqgF,EAAej/E,IAAI3iB,EAAKi2K,oBACjB,CACHvzE,QAAOd,iBAAgBH,kBAAiBC,0BA6ChD,GAzCG/9E,EAASrC,mBACRsgF,EAAej/E,IAAI3iB,EAAKi2K,oBAG5Bj2K,EAAK6yB,cAAc7Q,QAAQ,SAAAgK,GACvB02E,EAAM77E,KAAK,CACPpF,GAAIuK,EACJ/e,MAAO86E,EAAQ/7D,GAAKjsB,MACpBssB,KAAMrsB,EAAK6xB,YAAY7F,OAI1BgrJ,GACDt0E,EAAM77E,KAAK,CACPpF,GAAIzhB,EAAKo2K,oBACTnpK,MAAO,gBACPof,KAAMrsB,EAAK6xB,YAAY7xB,EAAKo2K,uBAG/Ba,GACDv0E,EAAM77E,KAAK,CACPpF,GAAIzhB,EAAKs2K,6BACTrpK,MAAO,kBACPof,KAAMrsB,EAAK6xB,YAAY7xB,EAAKs2K,gCAGhCS,GACAr0E,EAAM77E,KAAK,CACPpF,GAAIzhB,EAAKu2K,qBACTtpK,MAAO,kBACPof,KAAMrsB,EAAK6xB,YAAY7xB,EAAKu2K,wBAIpC7zE,EAAM77E,KAAK,CACPpF,GAAIzhB,EAAKy2K,aACTxpK,MAAO,SACPof,KAAMrsB,EAAK6xB,YAAY7xB,EAAKy2K,gBAI5Bz2K,EAAK2jB,SAAU,CA8Bf,GA7BI3jB,EAAKk3K,oBAAsBl3K,EAAKk3K,mBAAmBnvG,qBACnD65B,EAAej/E,IAAI3iB,EAAKi2K,oBACjBj2K,EAAK2jB,SAAS4lD,0BACrBk4B,EAAgB9+E,IAAI3iB,EAAKi2K,oBAE7Bj2K,EAAK6yB,cAAc7Q,QAAQ,SAAAgK,GACvB,IAAM/J,EAAW0B,EAAS7B,UAAUK,KAAK,SAAAoF,GAAE,OAAIA,EAAGnD,mBAAqB4H,IACnE/J,SACY7lB,GAARrE,OAAAkuG,GAAA,EAAAluG,CAAAiI,SACkC5D,GAA3B4D,EAAKk3K,yBACmC96K,GAAxC4D,EAAKk3K,mBAAmB9tH,cACxBppD,EAAKk3K,mBAAmB9tH,aAAarwB,SAAS/M,GACrDy1E,EAAgB9+E,IAAIqJ,GAEpB41E,EAAej/E,IAAIqJ,IAEnBhsB,EAAKkqB,gBAAkBjI,EAASmlD,aAAenlD,EAASmlD,YAAYkwF,iCACpE51D,EAAuB/+E,IAAIqJ,MAInCrI,EAAS8kD,UAAa9kD,EAASrC,mBAC/BmgF,EAAgB9+E,IAAI3iB,EAAKi2K,oBAGxBtyJ,EAAS+kD,aAAgBx8B,GAAgBvoB,EAASwoB,oBAAsB,IACzEs1D,EAAgB9+E,IAAI3iB,EAAKi2K,qBAGxBe,EAAmB,CACpB,IAAMpB,EAAkB51K,EAAK41K,gBAAgB51K,EAAK2jB,SAAS1H,eAC3B,MAA5B25J,EAAgBzoK,SAAoB,CAAC,EAAG,KAAK4rB,SAAS68I,EAAgBE,aACtEl0E,EAAej/E,IAAI3iB,EAAKo2K,qBAI3Ba,GACGtzJ,EAASimD,uBAAyBtlD,EAAU/qB,OAAS,GAAK+qB,EAAU/qB,SAAWoqB,EAASimD,sBAAsBrwE,QAC9GqoG,EAAej/E,IAAI3iB,EAAKs2K,8BAI5BS,GACI/2K,EAAKk3K,oBAAsBl3K,EAAKk3K,mBAAmBpvG,wBACnD85B,EAAej/E,IAAI3iB,EAAKu2K,sBAG5Bv2K,EAAK2jB,SAASL,mBAAqBtjB,EAAKi0K,oBAAsBj0K,EAAK2jB,SAASL,mBAAqBtjB,EAAKgtK,+BAAiChtK,EAAK2jB,SAASL,mBAAqBtjB,EAAKk0K,qBAC/KtyE,EAAej/E,IAAI3iB,EAAKy2K,cAGhC,MAAO,CACH70E,iBACAH,kBACAC,yBACAgB,UArYkB1iG,EAyY1B0wG,WAAa,SAACv0B,GAAwC,IAC1CumB,EAAU1iG,EAAK82K,kBAAfp0E,MAEFiO,EAAcjO,EAAM1jE,UAAU,SAAAuiE,GAAI,OAAIA,EAAK9/E,KAAOzhB,EAAKwhG,aACvD21E,EAAWz0E,EAAMiO,GAA6B,cAAdx0B,GAA6B,EAAI,IAEnEg7F,GACAn3K,EAAK+wG,SAASomE,EAAS11J,KAhZLzhB,EAoZ1B+wG,SAAW,SAAC/kF,GACRhsB,EAAK4G,SAAS,CAAEw5H,gBAAiB,OACjC,IAAMg3C,EAAgBpwK,GAAOmvG,iBAAiB5qG,OAAQ6qG,OAAQj9G,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IACtFooG,EAAO78E,SAAS1kB,EAAKoG,MAAMgF,MAAMG,OAAO6rK,IACxC/oJ,EAA8B,OAArBruB,EAAKoG,MAAMgM,OAAuC,OAArBpS,EAAKoG,MAAMgM,MACnD4Z,IAAQu1E,GAAQlzE,EAChBruB,EAAKoG,MAAMioD,QAAQxnC,KAAK,QAExB7mB,EAAKoG,MAAMioD,QAAQxnC,KAAK7mB,EAAKq3K,WAAWrrJ,GAAOhsB,EAAKi2K,sBA5ZlCj2K,EA+Z1Bq3K,WAAa,SAACrrJ,GAAgB,IAAAkqF,EACDlvG,GAAOmvG,iBAAxBlvG,EADkBivG,EAClBjvG,KAAMsE,EADY2qG,EACZ3qG,OACd,OAAOtE,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WACxCh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACpC/C,QAAQoS,EAAQ5O,WAAaqD,EAAKrD,YAClCxD,QAAQoS,EAAQ6qG,OAASpqF,EAAIzoB,aApaZvD,EAua1Bs3K,kBAAoB,WAEhB,IAAIC,EAA6C,GAC3CxpH,EAAWrnD,GAAK+iB,0BAHA+tJ,EAIGx3K,EAAKoG,MAAtBoI,eAJc,IAAAgpK,EAIJ,GAJIA,EAMlBC,EAAkCvwK,EAAAhP,EAAAiP,cAAA,iJAmBtC,OAjBAnH,EAAK6yB,cAAc7Q,QAAQ,SAAAwX,GACvB+9I,EAAY/9I,GACRtyB,EAAAhP,EAAAiP,cAAA,WAAO4mD,IAAa/tD,EAAKoG,MAAMuhB,gBAAgB4B,iBAE3CriB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC2E,WAAW,SAAS5E,UAAWT,EAAQqJ,aACnD3Q,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAGlrB,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAAS+W,UAAWT,EAAQwF,eAC9C9M,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAInjB,UAAWT,EAAQ0F,aACjCujK,IAGPvwK,EAAAhP,EAAAiP,cAAA,aAEFD,EAAAhP,EAAAiP,cAAA,cAKLowK,GAhcev3K,EAmc1B03K,gBAAkB,SAAC5xK,GACf,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,KAvcNzmF,EA2c1B23K,eAAiB79J,aAAW,SAAC6J,GACzB,MAAO,CAAC,YAAa,iBAAmBA,EAASiwC,YA5c3B5zD,EAsd1B43K,OAAS,WACL53K,EAAK0wG,WAAW,cAvdM1wG,EA0d1B8sC,kBAAoB,WAChB,IAAIw7F,EAAgBtoI,EAAKoG,MAAM03D,UAAU18C,KAAKlb,OAAO,SAAA7O,GAAC,OAAIA,EAAE2sB,YAAYtnB,gBAAkB0iC,GAAe,sBAAuB5b,GAAgBQ,eAChJ,OAAOskH,GAAiBA,EAAc/uI,OAAO,GA5dvByG,EA8d1B6sI,0BAA4B,WACxB,IAAIvE,EAAgBtoI,EAAKoG,MAAM03D,UAAU18C,KAAKlb,OAAO,SAAA7O,GAAC,OAAIA,EAAE2sB,YAAYtnB,gBAAkB0iC,GAAe,sBAAuB5b,GAAgBQ,cAAgB3sB,EAAE+sB,mBAAqBb,GAAY,kBAAmBC,GAAgBuO,kBACtO,OAAOu2G,GAAiBA,EAAc/uI,OAAS,GAhezByG,EAme1Bm/C,OAAS,WACL,KADgClmD,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,KAAAA,UAAA,GACZ,CAChB,IAAM4+K,EAAa73K,EAAK+G,MAAM8wK,WAC1BA,EACA73K,EAAK4G,SAAS,CACVixK,WAAY,GACb,WACC73K,EAAK+wG,SAAS8mE,KAGlB73K,EAAK4G,SAAS,CACVixK,WAAY,GACb,WACC73K,EAAK0wG,WAAW,gBA9e5B1wG,EAAK+G,MAAQ,CACT+wK,gBAAgB,EAChB/e,iBAAkB,IAJA/4J,4MAkChB83E,EAA2B,CAC7B9+E,KAAKoN,MAAMohD,cAAcxuD,KAAKm8C,UAAWn8C,KAAKkD,aAAclD,KAAK2D,YACjE3D,KAAKoN,MAAMs+J,sBAAsB1rK,KAAKm8C,UAAWn8C,KAAKkD,aAAclD,KAAK2D,aAGzE+J,GAAKyjB,kBACL2tD,EAASjxD,KAAK7tB,KAAKoN,MAAMg/E,qBAAqBpsF,KAAKm8C,UAAWn8C,KAAKkD,eAGlElD,KAAKoN,MAAMuhB,gBAAgBlG,IAC5Bq2D,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,eAG9CwK,GAAKwjB,kBAAqE,IAAjDlxB,KAAKoN,MAAM44F,sBAAsB59E,KAAK7nB,QAC/Du+E,EAASjxD,KAAK7tB,KAAKoN,MAAM84F,sBAAsBlmG,KAAKm8C,UAAWn8C,KAAKkD,iCAI9DuE,QAAQu3E,IAAIF,UAEVnwD,EAAoB3uB,KAAKoN,MAAzBuhB,gBACF01D,EAAaxyD,GAAelD,EAAiBjG,GAAMq2J,iBAGzD/+K,KAAK29K,qBAEL39K,KAAK49K,wBAGA59K,KAAK2qB,WAAa3qB,KAAK2qB,SAASpC,eAC5BvoB,KAAK2qB,SAASL,mBAAqBtqB,KAAKi7K,oBAAsBj7K,KAAK2qB,SAASL,mBAAqBtqB,KAAKk7K,sBACtG72F,EACLrkF,KAAKoN,MAAMioD,QAAQl1D,QAAQH,KAAKq+K,WAAWr+K,KAAKy9K,eAEhDz9K,KAAKoN,MAAMioD,QAAQl1D,QAAQH,KAAKq+K,WAAWr+K,KAAKi9K,qBAEpDj9K,KAAK4N,SAAS,CAAEkxK,gBAAgB,2LAgb/B,IAAAt3K,EAAAxH,KAAAq9D,EAC+Dr9D,KAAKoN,MAAjEuhB,EADH0uC,EACG1uC,gBADH86E,EAAApsC,EACoB7nD,eADpB,IAAAi0F,EAC8B,GAD9BA,EACkC89B,EADlClqE,EACkCkqE,gBAAiBxmH,EADnDs8C,EACmDt8C,QAClDsjE,EAAaxyD,GAAelD,EAAiBjG,GAAMq2J,iBACjCl6H,EAAY7kD,KAAK+N,MAAjC+wK,eACFE,EAAetxK,GAAK+jB,6BAJrBwtJ,EAKsEj/K,KAAK89K,kBAAxEp0E,EALHu1E,EAKGv1E,MAAOd,EALVq2E,EAKUr2E,eAAgBH,EAL1Bw2E,EAK0Bx2E,gBAAiBC,EAL3Cu2E,EAK2Cv2E,uBAC1Cw2E,EAAgBl/K,KAAKwoG,aAAexoG,KAAKy9K,cAAgBz9K,KAAKm/K,iBAC9D9pJ,EAA8B,OAArBr1B,KAAKoN,MAAMgM,OAAuC,OAArBpZ,KAAKoN,MAAMgM,MACjDgxD,EAAa18D,GAAKwjB,iBAClBkuJ,EAASp/K,KAAK2qB,YAAc3qB,KAAK2qB,SAASunC,YAC1CmtH,EAA4Br/K,KAAKwoG,aAAexoG,KAAKy9K,aACrDvtJ,EnS7hBHH,GmS6hByCpB,GACxCkqH,EAAiB,GACfv6F,EAAmB3vB,EAAgB2vB,iBACnCsxB,EAAwB5vE,KAAK2qB,UAAY3qB,KAAK2qB,SAASilD,uBAAyB5vE,KAAK2qB,SAASilD,sBAAsBvzC,OAAO,OAAS,GACpI47I,EAAoBtpJ,EAAgB6jD,QAAU7jD,EAAgBE,QAASwN,OAAO,MAAQ,GACtF9T,EAAevoB,KAAK2qB,UAAY3qB,KAAK2qB,SAASpC,aAOpD,YALgCnlB,IAA5BurB,EAAgBE,UAChBgqH,EAAiB,SAAWlqH,EAAgBE,QAAQwN,OAAO,cAAgB,qCAI3EwoB,EACO32C,EAAAhP,EAAAiP,cAACq8C,GAAD,KACHt8C,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ+C,YACpBrK,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,QAKPpiD,KAAKwoG,YAAenzE,EAMpBr1B,KAAK2qB,SAMHzc,EAAAhP,EAAAiP,cAACmxK,GAAD,CAAqBn6C,QAAS,SAACnyG,GAClCxrB,EAAKoG,SAAS,CAAEixK,WAA2B,kBAAR7rJ,EAAmBA,OAAM5vB,MAC5D,SAAAm8K,GAAK,OAAIrxK,EAAAhP,EAAAiP,cAACq8C,GAAD,KACTt8C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAS,GAAA1R,OAAKiR,EAAQgqK,aAAb,KAAAj7K,OAA6B8wB,EAAS7f,EAAQiqK,YAAc,KAAO9wJ,EAAgB5N,QAAQ7E,MAAYhO,EAAAhP,EAAAiP,cAAA,YAE1HD,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQgxF,WAAb,eACRp8B,GACEl8D,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAO1uD,EAAKg/F,WACZnwC,iBAAkB7uD,EAAKk3K,kBAE7Bt0G,GACEl8D,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAUy2B,EAAgB,QAAP,KAAgBpf,UAAWT,EAAQ5B,MAC7DpM,EAAKghG,aAAekB,EAAMnpG,OAAS,EAAnC,GAAAgE,OAA0CoqB,EAAgByc,UAAWrO,OAArE,yBAAAx4B,OAAmGiD,EAAKmjB,SAAUiwC,UAAlH,2BAAAr2D,OAA0JiD,EAAKmjB,SAAUiwC,YAItL1sD,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAW,SACZ/H,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAS,KAAMqX,UAAWT,EAAQ5B,MAA9C,2BAA6EpM,EAAKmjB,SAAUiwC,WAE/FskH,GACGhxK,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAS,GAAA1R,OAAKiR,EAAQkqK,aAAb,cACVxxK,EAAAhP,EAAAiP,cAACwxK,GAAD,CAAOjpK,QAAS9Q,OAAOg6K,MAAO3pK,UAAWT,EAAQqqK,UAAW76F,aAAc,WAGlF92E,EAAAhP,EAAAiP,cAACqrG,GAAD,CACI9P,MAAOA,EACPlB,WAAYhhG,EAAKghG,WACjBI,eAAgBA,EAChBH,gBAAiBA,EACjBC,uBAAwBA,EACxBoB,sBACI57F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC2xK,GAAD,CACI54C,SAAUm4C,EACVj4C,gBAAiB5/H,EAAKuG,MAAMq5H,gBAC5Bz8G,SAAUnjB,EAAKmjB,SACf48G,gBAAiBA,EACjBxmH,QAASA,EACT3H,MAAM,OACVlL,EAAAhP,EAAAiP,cAACkqK,GAAD,CAAY3E,YAAalsK,EAAK23K,iBAAkBjM,UAAW3H,GAAmB6H,aAAcI,aAAa,KAGjHzpE,kBAAmBviG,EAAK2wK,gCAAkC9zF,EACtDn2E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC4xK,GAAD,CACQ5jI,UAAW30C,EAAK20C,UAChBj5C,aAAcsE,EAAKtE,aACnBS,WAAY6D,EAAKmjB,SAAUlC,GAC3B6vJ,qBAAsB9wK,EAAK8wK,qBAC3BhwJ,oBAAmB9gB,EAAKmjB,UAAWnjB,EAAKmjB,SAASrC,kBACjDsnD,sBAAuBA,EACvBkrG,mBAAoBtzK,EAAKszK,mBACzB7C,kBAAmBA,EACnB8C,qBAAsBxyJ,KAC5Bra,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAEVs7F,YAAa,SAACrB,GACV,IAAMyvE,EAAgB15H,GAAqBsqD,EAAep4F,MAAQk5F,EAAMx8F,OAAO,SAAAq7F,GAAI,OAAKA,EAAK6B,SAAQ7pG,OAAS,EAE9G,OAAQgoG,GACJ,KAAK/gG,EAAKy1K,mBACN,OACI/uK,EAAAhP,EAAAiP,cAAC6xK,GAAD,CACIr8K,WAAY6D,EAAK7D,WACjBT,aAAcsE,EAAKtE,aACnBi5C,UAAW30C,EAAK20C,UAChBgK,OAAQ3+C,EAAK2+C,OACbj2B,kBAAmBA,EACnB2oH,eAAgBA,EAChBhD,wBAAuBruI,EAAK4F,MAAMuhB,gBAAgB4B,iBAClDujB,kBAAmBtsC,EAAKssC,oBACxB+/F,0BAA2BrsI,EAAKqsI,8BAG5C,KAAKrsI,EAAK6zK,WACV,KAAK7zK,EAAK+zK,UACV,KAAK/zK,EAAK8zK,UACV,KAAK9zK,EAAKg0K,aACV,KAAKh0K,EAAKk0K,cACV,KAAKl0K,EAAKi0K,aACV,KAAKj0K,EAAKm0K,YACV,KAAKn0K,EAAK2zK,OACV,KAAK3zK,EAAK4zK,OACV,KAAK5zK,EAAKo0K,YACV,KAAKp0K,EAAKq0K,mBACV,KAAKr0K,EAAKs0K,YACV,KAAKt0K,EAAKu0K,OACV,KAAKv0K,EAAKw0K,sBACV,KAAKx0K,EAAKy0K,SACV,KAAKz0K,EAAK00K,OACV,KAAK10K,EAAK20K,QACN,OACIjuK,EAAAhP,EAAAiP,cAAC8xK,GAAD,CACIn5K,IAAKyhG,EACLxvE,eAAgBwvE,EAChBpsD,UAAW30C,EAAK20C,UAChBx4C,WAAY6D,EAAK7D,WACjBT,aAAcsE,EAAKtE,aACnBw1I,oBAAqB6mC,EAAM/3K,EAAKo3K,QAChCz4H,OAAQ3+C,EAAK2+C,OACbs8G,kBAAmBj7J,EAAKi7J,kBACxBvyI,kBAAmBA,EACnB2oH,eAAgBA,EAChBqnC,wBAAyB14K,EAAKuG,MAAMq5H,gBACpC24B,iBAAkBv4J,EAAKuG,MAAMgyJ,mBAGzC,KAAKv4J,EAAK41K,oBACN,OACIlvK,EAAAhP,EAAAiP,cAACgyK,GAAD,CACIx1J,SAAUnjB,EAAKmjB,SACf+tH,oBAAqB6mC,EAAM/3K,EAAKo3K,QAChCz4H,OAAQ3+C,EAAK2+C,OACbj2B,kBAAmBA,EACnB2oH,eAAgBA,EAChB/kG,kBAAmBtsC,EAAKssC,sBAGpC,KAAKtsC,EAAK81K,6BACN,OACIpvK,EAAAhP,EAAAiP,cAACiyK,GAAD,CACIz8K,WAAY6D,EAAK7D,WACjBw4C,UAAW30C,EAAK20C,UAChBj5C,aAAcsE,EAAKtE,aACnBw1I,oBAAqB6mC,EAAM/3K,EAAKo3K,QAChCz4H,OAAQ3+C,EAAK2+C,OACbj2B,kBAAmBA,EACnB2oH,eAAgBA,IAG5B,KAAKrxI,EAAK+1K,qBACN,OACIrvK,EAAAhP,EAAAiP,cAACkyK,GAAD,CACIlkI,UAAW30C,EAAK20C,UAChBj5C,aAAcsE,EAAKtE,aACnBS,WAAY6D,EAAK7D,WACjB+0I,oBAAqB6mC,EAAM/3K,EAAKo3K,QAChCz4H,OAAQ3+C,EAAK2+C,OACbj2B,kBAAmBA,EACnB2oH,eAAgBA,IAG5B,KAAKrxI,EAAKi2K,aACN,OACIvvK,EAAAhP,EAAAiP,cAACmyK,GAAD,CACI31J,SAAUnjB,EAAKmjB,SACfwxB,UAAW30C,EAAK20C,UAChBj5C,aAAcsE,EAAKtE,aACnB80K,cAAeA,EACfjgE,SAAUwnE,EAAM/3K,EAAKuwG,UACrBggE,iBAAkBvwK,EAAK0pB,gBAAkB1pB,EAAKuwK,mBAG1D,QACI,OAAQ7pK,EAAAhP,EAAAiP,cAAA,eAGpBwT,SAAWna,EAAK23K,mBAAqBH,IAAmBI,GAAW/6F,GAAeja,EAClFy/B,gBAAiBriG,EAAK82K,oBACtB5nK,QAAS6oK,EAAM/3K,EAAKuwG,eAtKjB7pG,EAAAhP,EAAAiP,cAACq8C,GAAD,KACHt8C,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3E,GAAOuyK,SAAStyK,QAP3BC,EAAAhP,EAAAiP,cAACq8C,GAAD,KACHt8C,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3S,KAAKq+K,WAAWr+K,KAAKi9K,0DA/gB3C,IAAMuD,EAAoBxyK,GAAOmvG,iBAAiB5qG,OAAQ5O,WAAYxD,QAAQ,IAAK,IACnF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOiuK,qCAI/B,IAAMlnE,EAAmBtrG,GAAOmvG,iBAAiB5qG,OAAQ4pC,UAAWh8C,QAAQ,IAAK,IACjF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAO+mG,wCAI/B,IAAMjnG,EAAsBrE,GAAOmvG,iBAAiB5qG,OAAQrP,aAAc/C,QAAQ,IAAK,IACvF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOF,sCAI/B,IAAM+rK,EAAgBpwK,GAAOmvG,iBAAiB5qG,OAAQ6qG,OAAQj9G,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IACtFooG,EAAO78E,SAAS1rB,KAAKoN,MAAMgF,MAAMG,OAAO6rK,IAC9C,OAAOqC,MAAMl4E,QAAQnlG,EAAYmlG,mCAmDjC,OAAOvoG,KAAKs8K,UAAUt8K,KAAKoN,MAAM+a,cAAcC,KAAMpoB,KAAK2D,uDAK1D,OAAO3D,KAAKu8K,oBAAoBv8K,KAAKoN,MAAM+a,cAAc2oD,eAAgB9wE,KAAK2D,qDAa9E,OAAO3D,KAAKy8K,kBAAkBz8K,KAAK2qB,SAAW3qB,KAAK2qB,SAASlC,QAAKrlB,EAAWpD,KAAKoN,MAAMszK,wDAIvF,OAAOhzK,GAAKwjB,uDAGZ,OAAO2I,GAAc75B,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAK2qB,qDAGrD,OAAO3qB,KAAK85B,QAAQ,GAAGrR,GAAK,8CAG5B,OAAOzoB,KAAK85B,QAAQ95B,KAAK85B,QAAQv5B,OAAS,GAAGkoB,GAAK,yDAGlD,OAAOzoB,KAAK85B,QAAQ95B,KAAK85B,QAAQv5B,OAAS,GAAGkoB,GAAK,iDAGlD,OAAOzoB,KAAK85B,QAAQ95B,KAAK85B,QAAQv5B,OAAS,GAAGkoB,GAAK,yCAGlD,OAAOzoB,KAAKu9K,qBAAuB,2CAGnC,OAAOv9K,KAAK2qB,WAAa3qB,KAAK2qB,SAASL,mBAAqBtqB,KAAKi7K,oBAAsBj7K,KAAK2qB,SAASL,mBAAqBtqB,KAAKk7K,kEAG/H,OAAOl7K,KAAK2qB,SAAUL,mBAAqBtqB,KAAKk7K,+DAGhD,OAAOl7K,KAAK2qB,SAAUL,mBAAqBtqB,KAAK4zK,8DAGhD,IAAMkF,EAA0B94K,KAAKoN,MAAMuhB,gBAAgBwF,wBAAyB,EACpF,OAAQn0B,KAAK2qB,SAAUL,mBAAqBtqB,KAAKg0K,+BAAiCh0K,KAAK2qB,SAAUL,mBAAqBtqB,KAAKi7K,sBAC/GnC,wDAGZ,OAAO94K,KAAKw4K,oBACLx4K,KAAKs4K,sBAEJ5qK,GAAK+jB,8BAAgCzxB,KAAK64K,gEAGlD,OAAO74K,KAAKs4K,sBAAyBt4K,KAAK64K,sBAAwBnrK,GAAK+jB,gEAoUvE,OAAIzxB,KAAK2qB,UAAY3qB,KAAK2qB,SAASiwC,SACxB56D,KAAK2+K,eAAe3+K,KAAK2qB,UAEzB,CAAC,YAAa,oBAjfFpc,IAAMC,eAgvBrC,IAAMsI,GAA2C,CAC7CqmK,SAAU,CACNrlK,SAAU,GACVf,MAAO9D,GAAQiB,KAAKC,QACpB5C,OAAQ,QAEZi1F,WAAY,CACRwe,MAAO,QAEXzsG,WAAY,CACRlK,UAAW,UAEfsyK,cAAe,CACXvmK,YAAa,GACb1B,aAAc,IAElBgnK,aAAc,CACV16D,MAAO,SAEX66D,UAAW,CACPhkK,OAAQ,UACR/D,SAAU,OACVZ,UAAW,QACXH,MAAO9D,GAAQC,KAAKc,UAExBwrK,aAAc,CACV1nK,SAAU,GACVyE,cAAe,IACfC,WAAY,IACZzF,MAAO9D,GAAQC,KAAKU,KACpB8D,WAAY,wCAEhB9D,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExB6rK,YAAa,CACT3nK,SAAU,UAEdkD,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,QACtB2D,SAAU,GACVuB,WAAY,IAgCLwjC,oBACXC,YA7BJ,SAAyB/uC,GACrB,MAAO,CACH6yK,sBAAqBC,IAAuB1pH,aAAQ0pH,GAAR1pH,CAA8BppD,GAC1E+yK,oBAAqB5hI,aAAQ2hI,GAAR3hI,CAA8BnxC,GACnDgzK,oBAAmB/nC,IAAgB7hF,aAAQ6hF,GAAR7hF,CAAuBppD,GAC1DizK,wBAAuB7W,IAA2BhzG,aAAQgzG,GAARhzG,CAAkCppD,GACpFkzK,gCAA+BpW,IAAkC1zG,aAAQ0zG,GAAR1zG,CAAyCppD,GAC1Goa,cAAepa,EAAM4c,SACrBm6C,UAAW/2D,EAAMqb,KACjBuF,gBAAiB5gB,EAAMmhB,WACvBwxJ,gBAAiB3yK,EAAMmhB,WAAWO,gBAClCu2E,sBAAuBj4F,EAAM6rE,gBAC7B2tD,gBAAiBx5H,EAAMw5H,gBACvBxmH,QAAShT,EAAMmhB,WAAWnO,UAIlC,SAA4B1hB,GACxB,MAAO,CACHmvD,cAAe,SAACrS,EAAWj5C,EAAcS,GAA1B,OAAyCtE,EAASmvD,GAAcrS,EAAWj5C,EAAcS,KACxG+nK,sBAAuB,SAACvvH,EAAWj5C,EAAcS,GAA1B,OAAyCtE,EAASqsK,GAAsBvvH,EAAWj5C,EAAcS,KACxHw2C,gBAAiB,SAAAj3C,GAAY,OAAI7D,EAAS86C,GAAgBj3C,KAC1DkpF,qBAAsB,SAACjwC,EAAWj5C,GAAZ,OAA6B7D,EAAS+sF,GAAqBjwC,EAAWj5C,KAC5FgjG,sBAAuB,SAAC/pD,EAAWj5C,GAAZ,OAA6B7D,EAAS6mG,GAAsB/pD,EAAWj5C,KAC9Fy6K,mBAAoB,kBAAMt+K,EAAS4hE,UAMvC3pD,KAAWR,IACXqe,eAHW0nB,CAIbm+H,IC91Ba//C,eA/BX,SAAAA,EAAY7tH,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAi7H,IACtBj0H,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAk8H,GAAA1tH,KAAAvN,KAAMoN,KALV4E,YAAa,EAIahL,EAH1Bk6K,aAAc,EAGYl6K,EAF1BujD,YAAcv8C,GAAOH,cAAcI,KAI/BjH,EAAKgL,WAAatE,GAAKsE,aACvBhL,EAAKk6K,YAA2C,cAA7Bt7K,OAAOC,SAAS6C,SAE9B1B,EAAKgL,YAAehL,EAAKk6K,aAC1BxzK,GAAKw8C,gBANaljD,wEAWtB,OAAKhH,KAAKgS,YAAehS,KAAKkhL,YAQ1BlhL,KAAKkhL,YAEDhzK,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3E,GAAOmzK,iBAAiBlzK,OAK1CC,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3E,GAAOH,cAAcI,OAb/BC,EAAAhP,EAAAiP,cAAA,UAAQC,MAAO,CAAEC,UAAW,WACxBH,EAAAhP,EAAAiP,cAAA,0CAnBDI,IAAMC,eCoCnB4yK,eAEF,SAAAA,EAAYh0K,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAohL,IACtBp6K,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAqiL,GAAA7zK,KAAAvN,KAAMoN,KAFV2hF,QAAU3+C,KACgBppC,EA2B1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA3BjB79C,EA4B1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA5BlB79C,EA+C1Bq6K,2BAA6B,WACrBr6K,EAAK2jB,WAAajd,GAAKsuC,iBACvBh1C,EAAKs6K,uBAELt6K,EAAK+iF,cAnDa/iF,EAuD1Bs6K,qBAAuB,WAAM,IAAApkE,EACAlvG,GAAOmvG,iBAAxBlvG,EADiBivG,EACjBjvG,KAAMsE,EADW2qG,EACX3qG,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAC/Ch8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACpC/C,QAAQoS,EAAQ5O,WAAaqD,EAAKrD,YAClCxD,QAAQoS,EAAQ6qG,OAAS,IAC9Bp2G,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IA7DFzmF,EAgE1Bu6K,mBAAqBzgK,aAAW,SAAC+pG,GAC7B,IAAM22D,EAAS32D,EAASrqH,IAAI,SAAA4oB,GAAI,OAAIA,EAAKgC,mBACnCq2J,EAAc7nJ,KAAU1sB,OAAO,SAAA8lB,GAAG,OAAIwuJ,EAAOn4K,QAAQ2pB,EAAIvK,KAAO,IAChEi5J,EAAW,IAAIh4J,IAErB,OADA+3J,EAAYz4J,QAAQ,SAAAgK,GAAG,OAAI0uJ,EAAS/3J,IAAIqJ,EAAIgd,UAAU,MAC/CtvC,MAAMsrB,KAAK01J,GAAUlhL,IAAI,SAAAggC,GAAK,OAAIx5B,EAAK+nF,QAAQvuD,OAlEtDx5B,EAAK+G,MAAQ,CACT82C,SAAS,GAJS79C,mFA+BtB,IAAM83E,EAA2B,GAE5B9+E,KAAK2qB,UACNm0D,EAASjxD,KAAK7tB,KAAKoN,MAAMohD,cAAcxuD,KAAKm8C,UAAWn8C,KAAKkD,aAAclD,KAAK2D,aAGnFm7E,EAASjxD,KAAK7tB,KAAKoN,MAAM++E,WAAWnsF,KAAKm8C,UAAWn8C,KAAKkD,aAAclD,KAAK2D,aAEvE3D,KAAKoN,MAAMuhB,gBAAgBlG,IAC5Bq2D,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,eAGlDlD,KAAK4pF,YACLniF,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAKqhL,2BAA4BrhL,KAAK+pF,6CA4B5D,IAAAviF,EAAAxH,KAAAsV,EACqCtV,KAAKoN,MAAvCuhB,EADHrZ,EACGqZ,gBADHpZ,EAAAD,EACoBE,eADpB,IAAAD,EAC8B,GAD9BA,EAEG42B,GAAaxd,EAAgB6jD,QAAU5mC,GAA6Bjd,EAAgByc,UAAYzc,EAAgBE,SAAY,CAAEsd,SAAU,OAAxIA,SACFw1I,EAAiBhzJ,EAAgBE,QAAUF,EAAgBE,QAAQwN,OAAO,QAAU,GACpFhH,EAA8B,OAArBr1B,KAAKoN,MAAMgM,MACpBwoK,EAAUvsJ,EAAgB,KAAP,KACnBwsJ,EAAgBxsJ,EAAgB,YAAP,KACzBysJ,EAAkB9hL,KAAKoN,MAAM+a,cAAcC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOjhB,EAAK7D,aAC5Eo+K,IAAeD,GAAkBA,EAAgBv5J,aACvD,OACIra,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKtO,KAAK+N,MAAM82C,QACR32C,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ21F,aACpBj9F,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,QAIRl0C,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKkkB,GAAsB7D,GACnBzgB,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAO6xC,UAAWwyE,KAElB7oH,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGryC,UAAWT,EAAQwsK,WAC3C9zK,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAS,GAAA1R,OAAKiR,EAAQkE,MAAb,KAAAnV,OAAsBiR,EAAQyD,SAC1C/K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASgjL,EAAQ3rK,UAAWT,EAAQ1B,UAC5C5F,EAAAhP,EAAAiP,cAAA,oBAAA5J,OAAevE,KAAK2qB,SAAUumC,UAA9B,OAEJhjD,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASijL,EAAc5rK,UAAS,GAAA1R,OAAKiR,EAAQ1B,SAAb,KAAAvP,OAA0B8wB,EAA+B,GAAtB7f,EAAQysK,cAClFF,EAAY,kMAAAx9K,OAAuMo9K,EAAvM,sBAEjBzzK,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACg1G,GAAAjkH,EAAD,CAAW+W,UAAWT,EAAQ0sK,YAC9Bh0K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASgjL,EAAQ3rK,UAAWT,EAAQ2sK,WAC3Ch2I,GAELj+B,EAAAhP,EAAAiP,cAAA,WACCwgB,EAAgB6jD,SACbtkE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,YAAYqX,UAAWT,EAAQ1B,UAAnD,GAAAvP,OACQoqB,EAAgByc,UAAW/O,OAAO,OAD1C,SAAA93B,OACyDoqB,EAAgBE,QAASwN,OAAO,WAKnG0lJ,GACE7zK,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAS,GAAA1R,OAAKiR,EAAQkE,MAAb,KAAAnV,OAAsBiR,EAAQ4sK,kBAC1Cl0K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASijL,EAAc5rK,UAAWT,EAAQ5B,MAAtD,+CAGA1F,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQ6sK,gBACpBn0K,EAAAhP,EAAAiP,cAAA,MAAI8H,UAAWT,EAAQ2V,iBAClBnrB,KAAKuhL,mBAAmBvhL,KAAKoN,MAAM03D,UAAU18C,MAAM5nB,IAAI,SAAAwyB,GACpD,IAAM4sD,EAAOtsD,GAAgBN,EAAIlsB,MAAQ+uB,GACzC,OACI3nB,EAAAhP,EAAAiP,cAAA,MAAIrH,IAAKksB,EAAIlsB,IAAKmP,UAAS,GAAA1R,OAAKiR,EAAQwd,IAAb,KAAAzuB,OAAoBiR,EAAQ5B,OACnD1F,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWT,EAAQ8sK,SACrBp0K,EAAAhP,EAAAiP,cAACyxE,EAAD,CAAM3pE,UAAYof,EAA2B7f,EAAQ+sK,cAA1B/sK,EAAQgtK,UACnCt0K,EAAAhP,EAAAiP,cAAA,QAAM8H,UAAWof,EAAS7f,EAAQysK,iBAAc7+K,GAAY4vB,EAAIjsB,eAShGmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOx0C,UAAS,GAAA1R,OAAKiR,EAAQkE,MAAb,KAAAnV,OAAsBiR,EAAQ4sK,kBAC1Cl0K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASijL,EAAc5rK,UAAWT,EAAQ5B,MAAtD,0CAGA1F,EAAAhP,EAAAiP,cAAA,MAAI8H,UAAS,GAAA1R,OAAKiR,EAAQitK,SAAb,KAAAl+K,OAAyB8wB,EAAS7f,EAAQktK,eAAiB,KACpEx0K,EAAAhP,EAAAiP,cAAA,MAAI8H,UAAWT,EAAQmtK,UACnBz0K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASijL,EAAc5rK,UAAWT,EAAQ5B,MAAtD,6BAIJ1F,EAAAhP,EAAAiP,cAAA,MAAI8H,UAAWT,EAAQmtK,UACnBz0K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASijL,EAAc5rK,UAAWT,EAAQ5B,MAAtD,gCAIJ1F,EAAAhP,EAAAiP,cAAA,MAAI8H,UAAWT,EAAQmtK,UACnBz0K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASijL,EAAc5rK,UAAWT,EAAQ5B,MAAtD,wCAIJ1F,EAAAhP,EAAAiP,cAAA,MAAI8H,UAAWT,EAAQmtK,UACnBz0K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAASijL,EAAc5rK,UAAWT,EAAQ5B,MAAtD,kCAQhB1F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACft/C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,6BACH/R,QAAS1W,KAAKshL,qBACd1iL,QAAQ,YACRmY,MAAM,UACNwuC,WAAS,GALb,+DAxK5C,IAAM+zD,EAAmBtrG,GAAOquC,gBAAgB9pC,OAAQ4pC,UAAWh8C,QAAQ,IAAK,IAChF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAO+mG,wCAI/B,IAAMjnG,EAAsBrE,GAAOquC,gBAAgB9pC,OAAQrP,aAAc/C,QAAQ,IAAK,IACtF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOF,sCAI/B,IAAMmuK,EAAoBxyK,GAAOquC,gBAAgB9pC,OAAQ5O,WAAYxD,QAAQ,IAAK,IAClF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOiuK,oCAGpB,IAAAt4K,EAAAlI,KACX,OAAOA,KAAKoN,MAAM+a,cAAcC,KAAKe,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOvgB,EAAKvE,oBA1B3C4K,IAAMC,eAmNpC,IAAMsI,GAA2C,CAC7CkrK,UAAW,CACP9qK,UAAW,IAEfwC,MAAO,CACHlC,QAAS,IAEbyB,OAAQ,CACJ5K,UAAW,UAEf6zK,UAAW,CACPpqK,SAAU,GACVf,MAAO9D,GAAQiB,KAAKC,SAExBguK,UAAW,CACPprK,MAAO9D,GAAQiB,KAAK,MAExBkuK,gBAAiB,CACb7wK,OAAQ,qBAEZ45F,YAAa,CACT98F,UAAW,UAEfg0K,eAAgB,CACZjoK,YAAa,oBAEjBkoK,QAAS,CACLhoK,QAAS,cACTO,WAAY,SACZ3D,UAAW,IAEfsrK,QAAS,CACL1qK,SAAU,GACVX,YAAa,IAEjBorK,cAAe,CACXzqK,SAAU,GACVX,YAAa,IAEjBgU,gBAAiB,CACby3J,UAAW,OACX9qK,SAAU,GACVN,QAAS,EACTS,OAAQ,GAEZ+a,IAAK,CACD/a,OAAQ,GACRF,WAAY,QAEhB0qK,SAAU,CACNG,UAAW,OACX/oK,aAAc,QAElB6oK,eAAgB,CACZlrK,QAAS,GAEbmrK,SAAU,CACN1qK,OAAQ,IAEZrE,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExBE,SAAU,CACNiD,MAAO9D,GAAQC,KAAKY,UAExBmuK,YAAa,CACTlqK,WAAY,MAoBL8kC,mBACXC,YAjBJ,SAAyB/uC,GACrB,MAAO,CACH+2D,UAAW/2D,EAAMqb,KACjBuF,gBAAiB5gB,EAAMmhB,WACvB/G,cAAepa,EAAM4c,WAI7B,SAA4BtrB,EAAe2oD,GACvC,MAAO,CACHmkC,WAAY,SAAChwC,EAAWj5C,EAAcS,GAA1B,OAAyCtE,EAASqsK,GAAsBvvH,EAAWj5C,EAAcS,KAC7Gw2C,gBAAiB,SAACgC,GAAD,OAAe98C,EAAS86C,GAAgBgC,KACzDqS,cAAe,SAACrS,EAAWj5C,EAAcS,GAA1B,OAAyCtE,EAASmvD,GAAcrS,EAAWj5C,EAAcS,QAM5GwxB,eACA7d,KAAWR,IAHA+lC,CAIbukI,ICpRItqK,GAA2C,CAC7C2iB,QAAS,CACLprB,UAAW,QACX+L,YAAa,OAEjByoK,cAAe,CACXzoK,YAAa,OAEjBiZ,KAAM,CACFvb,SAAU,GACVf,MAAO9D,GAAQC,KAAKS,UACpBwD,YAAa,QAEjB2rK,SAAU,CACNhrK,SAAU,GACVf,MAAO9D,GAAQC,KAAKS,UACpB8D,WAAY,MACZ2C,YAAa,OAEjBoB,WAAY,CACRC,cAAe,cAEnBS,KAAM,CACFnF,MAAO9D,GAAQiB,KAAKC,SAExB4uK,aAAc,CACVzoK,QAAS,OACTO,WAAY,SACZisE,WAAY,UAEhBk8F,SAAU,CACNnoK,WAAY,UAEhB9F,QAAS,CACLgC,MAAO9D,GAAQ6B,OAAOX,QACtBgD,YAAa,QAINgpE,MAAa7oE,KAAWR,GAAXQ,CA7FZ,SAAClK,GAAiB,IAAAqwC,EAEIrwC,EAA1BoI,eAFsB,IAAAioC,EAEZ,GAFYA,EAERroB,EAAYhoB,EAAZgoB,QAChBqE,EAAUZ,GAAYzD,EAAQhK,kBAC9B63J,EAAgBp/I,GAAuBzO,IAAY4O,GAAe5O,GAClE8tJ,EAAmB9tJ,EAAQ0M,cAAcvhC,OAAS,GAAK60B,EAAQ0M,cAAc7K,MAAM,SAAA+G,GAAI,MAA2B,kBAAhBA,EAAKoG,SACvG++I,EAAe/tJ,EAAQ8nD,aACvB6R,EAAUxgF,IAAM2xD,QAAQ9vB,GAAY,IAE1C,OACIliC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQikB,QAAb,KAAAl1B,OAAwBiR,EAAQ6d,OAC/CoG,GAELvrB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQqtK,gBAC5B9zF,EAAQ35D,EAAQhK,kBAAkBrkB,OAEvCmH,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQqtK,eAAiBz0K,MAAOmN,GAAcO,UAClE1O,EAAMgoB,QAAQjV,gBAAgB5f,OAAS,GACpC2N,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAOrI,EAAMgoB,QAAQjV,gBACrBiV,QACIlnB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY8jC,QAAQ,EAAMzrE,UAAS,GAAA1R,OAAKiR,EAAQ0G,KAAb,KAAA3X,OAAqBiR,EAAQgG,aAAepO,EAAMgoB,QAAQjV,mBAGnGjS,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY8jC,QAAQ,EAAMzrE,UAAS,GAAA1R,OAAKiR,EAAQ0G,KAAb,KAAA3X,OAAqBiR,EAAQgG,aAAepO,EAAMgoB,QAAQjV,kBAGvGjS,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQqtK,eAAkBz0K,MAAOmN,GAAcQ,YACpE7N,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY8jC,QAAM,EAACzrE,UAAWT,EAAQgG,YAAapO,EAAMgoB,QAAQoQ,cAErEt3B,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQqtK,gBAC5BI,EACG/0K,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQutK,cACpB70K,EAAAhP,EAAAiP,cAACulG,GAAAx0G,EAAD,CAAW+W,UAAWT,EAAQ6d,OADlC,YAKAnlB,EAAAhP,EAAAiP,cAAA,OAAK8H,UAAWT,EAAQutK,cACpB70K,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAO/B,UAD3B,iBAMR7G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQwtK,SAAb,KAAAz+K,OAAyBiR,EAAQqtK,gBACjD30K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQgG,YAAa0nK,EAAmBh1K,EAAAhP,EAAAiP,cAACulG,GAAAx0G,EAAD,CAAW+W,UAAWT,EAAQstK,WAAe,KAEhH50K,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWvkD,UAAS,GAAA1R,OAAKiR,EAAQwtK,SAAb,KAAAz+K,OAAyBiR,EAAQqtK,cAAjC,MAChB30K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY3nC,UAAWT,EAAQgG,YAAa2nK,EAAej1K,EAAAhP,EAAAiP,cAACulG,GAAAx0G,EAAD,CAAW+W,UAAWT,EAAQstK,WAAe,SCAlHhsK,GAAiD,CACnDsmD,gBAAiB,CACb3lD,WAAY,OAEhBu/D,SAAU,CACNjgE,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,QAEhBqrK,aAAc,CACVvoK,WAAY,SACZP,QAAS,QAEbU,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,UAGfkvK,GAjEU,SAACj2K,GACtB,IAAMk2K,GAAal2K,EAAMm2K,gBAAkD,IAAhCn2K,EAAMm2K,eAAehjL,OAChE,OACI2N,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAO6tK,EAAY,eAAiB,sBACtFA,EACGp1K,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,iBACazvC,EAAAhP,EAAAiP,cAAA,cAASf,EAAM4pE,UAD5B,gDAGA9oE,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,CAAmBvvC,MAAO0I,GAAOsmD,iBAAjC,2BAEJlvD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,gBACH/R,QAAS,kBAAMtJ,EAAM+4C,OAAO/4C,EAAM4pE,UAAY,KAC9CjgE,MAAM,WAHV,iBAUR7I,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,KACIzvC,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOssK,cACfl1K,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAOkE,cAD3B,2EAGC5N,EAAMm2K,eAAgB/iL,IAAI,SAAAw2E,GACvB,OAAQ9oE,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOkgE,UAAWA,MAG5C9oE,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,CAAmBvvC,MAAO0I,GAAOsmD,iBAAjC,uEAEJlvD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UC8ClBD,GAAiD,CACnD0sK,YAAa,CACT/rK,WAAY,OAEhBu/D,SAAU,CACNjgE,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,QAEhBqrK,aAAc,CACVvoK,WAAY,SACZP,QAAS,QAEbU,YAAa,CACTjE,MAAO9D,GAAQ6B,OAAOX,UAGfsvK,GAvFQ,SAACr2K,GAEpB,OACIc,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAO,aACtDvH,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,cACUzvC,EAAAhP,EAAAiP,cAAA,cAASf,EAAM4pE,UADzB,KAGA9oE,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACgBx1C,MAAO0I,GAAO6xE,YACd9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAAS32C,EAAMs2K,gBAAiBngI,SAAUn2C,EAAMu2K,qBAAsB5sK,MAAM,YAE/F9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0lF,UAApB,gBAEvBtuF,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO6xE,YACd9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAAS32C,EAAMw2K,WAAYrgI,SAAUn2C,EAAMy2K,gBAAiB9sK,MAAM,UAAU4K,UAAQ,IAEvG1N,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0lF,UAApB,oCAEXtuF,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO6xE,YAClB9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAAS32C,EAAM02K,YAAavgI,SAAUn2C,EAAM22K,iBAAkBhtK,MAAM,UAAU4K,SAAUvU,EAAM0zE,kBAE7G7sE,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0lF,UAApB,gBAEXtuF,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO6xE,YACd9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAAS32C,EAAM42K,gBAAiBzgI,SAAUn2C,EAAM62K,qBAAsBltK,MAAM,YAE/F9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0lF,UAApB,oDAEXtuF,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO6xE,YACd9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAAS32C,EAAM82K,oBAAqB3gI,SAAUn2C,EAAM+2K,yBAA0BptK,MAAM,YAEvG9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0lF,UAApB,wBAEXtuF,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAO6xE,YACd9kC,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAUC,QAAS32C,EAAMg3K,kBAAmB7gI,SAAUn2C,EAAMi3K,uBAAwBttK,MAAM,YAEnG9C,MAAO/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0lF,UAApB,+BAEXtuF,EAAAhP,EAAAiP,cAAA,YAIJD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,cACH/R,QAAS,kBAAMtJ,EAAM+4C,OAAO/4C,EAAM4pE,UAAY,KAC9CjgE,MAAM,WAHV,iBCXlB8rE,eAEF,SAAAA,EAAYz1E,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA6iF,IACtB77E,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA8jF,GAAAt1E,KAAAvN,KAAMoN,KAsBV01E,aAAehiE,aAAW,SAACsU,EAAgB2tD,GACvC,IAAIC,EAAgB5tD,EAAQ9rB,QACtB25E,EAAYF,EAAqB55D,KAAK,SAAA+5D,GAAG,OAAsB,IAAlBA,EAAIC,YAKvD,OAJIF,GACAD,EAAc12E,KAAKiqB,GAAc0sD,EAAUx6D,GAA4B,SAAxBw6D,EAAUE,YAGtDH,IA9Beh8E,EAoC1Bo8E,WAAa,SAACt8E,EAAasuB,GACvB,IAAMiuD,EAAmBr8E,EAAKoG,MAAM21E,sBAAwB,GAC5D/7E,EAAK4G,SAAS,SAAAmpD,GACV,IAAIusB,EAAgBvsB,EAAUgsB,qBAC1BM,EAAiB9iF,OAASw2D,EAAUgsB,qBAAqBxiF,SAAQ+iF,EAAgBD,GACrF,IAAME,EAAkBD,EAAch6E,QAChCk6E,EAAmBpuD,EAezB,OAdAmuD,EAAgBv6D,QAAQ,SAAAk6D,GAChBA,EAAIz6D,KAAO3hB,GACW,IAAlBo8E,EAAIC,WAAyC,SAAlBD,EAAIC,WAC/BD,EAAIC,UAAY,MAChBK,EAAiBl3E,KAAKiqB,GAAczvB,GAAK,KAChB,QAAlBo8E,EAAIC,YACXD,EAAIC,UAAY,OAChBK,EAAiBl3E,KAAKiqB,GAAczvB,GAAK,KAG7Co8E,EAAIC,WAAY,IAIjBpkF,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEI0sB,aAAcF,EACdP,cAAeQ,OA5DDx8E,EAiE1BqvD,iBAAmB,SAACqtB,EAAaC,GAC7B38E,EAAK4G,SAAS,SAAAmpD,GAAS,OAAAh4D,OAAA0G,EAAA,EAAA1G,CAAA,GAChBg4D,EADgB,CAEnB6sB,WAAW7kF,OAAA0G,EAAA,EAAA1G,CAAA,GACJg4D,EAAU6sB,WADP,CAEND,cAtEc38E,EA2E1B68E,oBAAsB,SAACjvD,GACnB,IAAMkvD,EAAclvD,EAAM20B,OAAOxiD,MACjCC,EAAK4G,SAAS,SAAAmpD,GAAS,OAAAh4D,OAAA0G,EAAA,EAAA1G,CAAA,GAChBg4D,EADgB,CAEnB6sB,WAAW7kF,OAAA0G,EAAA,EAAA1G,CAAA,GACJg4D,EAAU6sB,WADP,CAENpzE,KAAMszE,EACNH,KAAM,SAlFQ38E,EAuF1B+8E,sBAAwB,WACpB/8E,EAAK+G,MAAMi2E,YAAch9E,EAAKoG,MAAMuzE,SAAS35E,EAAK+G,MAAMi2E,WAAYh9E,EAAK+G,MAAM40E,cAAgB,IAC/F37E,EAAKi9E,yBAzFiBj9E,EA4F1Bi9E,sBAAwB,WACpBj9E,EAAK4G,SAAS,CAAE6uD,kBAAkB,EAAOunB,gBAAY5gF,EAAWu/E,kBAAcv/E,EAAW8gF,kBAAc9gF,EAAWkhL,4BAAwBlhL,KA7FpH4D,EAgG1Bm9E,mBAAqB,SAAC17D,EAAYvM,EAAc0b,GAC5C,IAAI0sJ,OAAyBlhL,EACF,SAAvB4D,EAAKoG,MAAMwzE,UACX0jG,EAA0Bt9K,EAAKoG,MAAMgoB,QAA6BjM,KAAK,SAAA9e,GAAC,OAAIA,EAAEoe,KAAOA,IAAK86J,gBAE9Fv8K,EAAK4G,SAAS,CAAE6uD,kBAAkB,EAAMunB,WAAYv7D,EAAIk6D,aAAczmE,EAAMgoE,aAActsD,EAAM0sJ,uBAAwBA,KArGlGt9K,EAuG1Bu9K,oBAAsB,WAClB,IAAMr6K,EAAuB,CACzBmf,OAAQriB,EAAK+G,MAAMy2K,UAAY,GAC/BZ,WAAY58K,EAAK+G,MAAM61K,WACvBE,YAAa98K,EAAK+G,MAAM+1K,YACxBI,oBAAqBl9K,EAAK+G,MAAMm2K,oBAChCF,gBAAiBh9K,EAAK+G,MAAMi2K,gBAC5BI,kBAAmBp9K,EAAK+G,MAAMq2K,mBAGlCp9K,EAAK+G,MAAMy2K,UAAYx9K,EAAKoG,MAAM2zE,OAAO/5E,EAAK+G,MAAMy2K,SAAUx9K,EAAK+G,MAAM02K,YAAc,GAAIv6K,GAC3FlD,EAAK09K,uBAlHiB19K,EAqH1B09K,oBAAsB,WAClB19K,EAAK4G,SAAS,CAAE+2K,gBAAgB,EAAOH,cAAUphL,EAAWqhL,gBAAYrhL,KAtHlD4D,EAyH1B49K,iBAAmB,SAACn8J,EAAYvM,EAAc2oK,EAAkB/jG,GAE5D95E,EAAK4G,SAAS,CAAG+2K,gBAAgB,EAAMH,SAAU/7J,EAAIg8J,WAAYvoK,EAAM4kE,gBAAgBA,KA3HjE95E,EA+H1Bo9E,YAAc,SAAChvD,EAAc3M,EAAY47D,GACrC,OACIn2E,EAAAhP,EAAAiP,cAAC22K,GAAD,CACIh+K,IAAK2hB,EACL2M,QAASA,EACTorD,aAAa,kBACb9pE,QAAS1P,EAAKoG,MAAMm3E,eACpB5D,SAAU0D,EAAa,aAAYr9E,EAAKm9E,mBACxCpD,OAAQsD,EAAa,aAAYr9E,EAAK49K,iBACtC3jG,SAAUj6E,EAAKoG,MAAM6zE,SACrBL,QAAQ,UAzIM55E,EA8I1Bg+E,aAAelkE,aAAW,WACtB,MAAO,iBA/Ie9Z,EAkJ1B+9K,yBAA2B,SAACC,EAASjhI,GACjC/8C,EAAK4G,SAAS,CAAE81K,gBAAiB3/H,IAGjC/8C,EAAK4G,SAAS,CAAEk2K,YAAa98K,EAAK+G,MAAM+yE,gBAAkB95E,EAAK+G,MAAM+yE,gBAAkB/8B,IACvF/8C,EAAK4G,SAAS,CAAEo2K,gBAAiBjgI,IACjC/8C,EAAK4G,SAAS,CAAEs2K,oBAAqBngI,IACrC/8C,EAAK4G,SAAS,CAAEw2K,kBAAmBrgI,KAzJb/8C,EA2J1Bi+K,oBAAsB,SAACD,GAGnBh+K,EAAK4G,SAAS,CAAEg2K,YAAY,KA9JN58K,EAgK1Bk+K,qBAAuB,SAACF,EAASjhI,GAC7B/8C,EAAK4G,SAAS,CAAEk2K,YAAa98K,EAAK+G,MAAM+yE,gBAAkB95E,EAAK+G,MAAM+yE,gBAAkB/8B,KAjKjE/8C,EAmK1Bm+K,yBAA2B,SAACH,EAASjhI,GACjC/8C,EAAK4G,SAAS,CAAEo2K,gBAAiBjgI,KApKX/8C,EAsK1Bo+K,6BAA+B,SAACJ,EAASjhI,GACrC/8C,EAAK4G,SAAS,CAAEs2K,oBAAqBngI,KAvKf/8C,EAyK1Bq+K,2BAA6B,SAACL,EAASjhI,GACnC/8C,EAAK4G,SAAS,CAAEw2K,kBAAmBrgI,KAvKnC/8C,EAAK+G,MAAQ,CACT61E,WAAY,CACRD,KAAM,EACNnzE,KAAM,IAEVm0K,gBAAgB,EAChBloH,kBAAkB,EAClBwoB,eAAe,EACflC,qBAAsB31E,EAAM21E,sBAAwB,GACpDC,cAAe51E,EAAMgoB,QAAQ9rB,QAC7Bo6K,iBAAiB,EACjBE,YAAY,EACZE,aAAa,EACbI,qBAAqB,EACrBF,iBAAiB,EACjBI,mBAAmB,EACnBtjG,iBAAgB,GAnBE95E,wEA6KjB,IAAAQ,EAAAxH,KAAA88D,EACgE98D,KAAK+N,MAAtE40E,EADC7lB,EACD6lB,aAAciB,EADb9mB,EACa8mB,WAAY0gG,EADzBxnH,EACyBwnH,uBAAwBG,EADjD3nH,EACiD2nH,WAClD9gG,EAAeC,EAAfD,KAAMnzE,EAASozE,EAATpzE,KACRuyE,EAAuB/iF,KAAKoN,MAAM21E,sBAAwB/iF,KAAK+N,MAAMg1E,qBACrEoC,EAAWnlF,KAAKgjF,cAJboC,EAKoBplF,KAAKoN,MAA1B6zE,gBALC,IAAAmE,KAOHJ,EAAehlF,KAAKglF,eACpBvB,EAAezjF,KAAKoN,MAAMq2E,cAAgB,GAC1C4B,EAAe74E,QAAQxM,KAAKoN,MAAMk4E,YAAkC,IAApBH,EAAS5kF,QAE/D,OACI2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOyuE,UACfr3E,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAO7iD,QAAQ,UAAUhH,KAAK,SAC1BtC,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,MACMv6D,KAAKoN,MAAMo4E,iBACTt3E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAO2uE,aACnBxE,IAAajhF,KAAKoN,MAAMs4E,eACtBx3E,EAAAhP,EAAAiP,cAACw3E,GAAA,EAAD,CACIn1E,KAAK,QACLuG,MAAM,YACNL,QAAS1W,KAAKoN,MAAMw4E,UAEpB13E,EAAAhP,EAAAiP,cAACmnB,GAAA,EAAD,CAASC,UAAW,YAAa9f,MAAOuvE,GAAc92E,EAAAhP,EAAAiP,cAAC0vD,GAAA3+D,EAAD,CAASkP,MAAO0I,GAAO+uE,eAMxF9C,EAAqBviF,IAAI,SAAAyY,GAAM,OAC3B/K,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOivE,KAAMj/E,IAAKmS,EAAOwP,GAAI/R,QAAS,kBAAMlP,EAAK47E,WAAWnqE,EAAOwP,GAAI08D,IAAWa,cAAe/sE,EAAOkqE,YAC9F,IAApBlqE,EAAOgtE,SACJ/3E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAA,YAAMD,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACFvjB,MAAOwD,EAAOitE,aAAe,GAC7B9wD,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,UAGjC5Q,EAAAhP,EAAAiP,cAACg4E,GAAA,EAAD,CACIjP,QAA6B,IAArBj+D,EAAOkqE,UACfA,WAAgC,IAArBlqE,EAAOkqE,eAAsB//E,EAAY6V,EAAOkqE,WAE1DlqE,EAAOhF,QAKhB/F,EAAAhP,EAAAiP,cAACg4E,GAAA,EAAD,CACIjP,QAA6B,IAArBj+D,EAAOkqE,UACfA,WAAgC,IAArBlqE,EAAOkqE,eAAsB//E,EAAY6V,EAAOkqE,WAE1DlqE,EAAOhF,UAO/BjU,KAAKoN,MAAMo4E,iBAAmBt3E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,QAGvCtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACK0qB,EAAS77E,MAAMq6E,EAAOnzE,EAAMmzE,EAAOnzE,EAAOA,GAAMhQ,IAAI,SAAC40B,EAAc3M,GAChE,OAAOjhB,EAAK48E,YAAYhvD,EAAS3M,EAAIw4D,KAGxCoE,GACGn3E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKJ,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOsvE,OAAQC,QAASrmF,KAAK+N,MAAMg1E,qBAAqBxiF,OAAS,EAAIP,KAAK+N,MAAMg1E,qBAAqBxiF,OAAS,EAAIkjF,EAAaljF,OAAS,EAAG+lF,MAAM,UAC/JtmF,KAAKoN,MAAMm5E,oBAAsBvmF,KAAKoN,MAAMm5E,oBAAsBr4E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY0oC,MAAM,UAAlB,0BAMrFtmF,KAAKoN,MAAMo5E,YACTt4E,EAAAhP,EAAAiP,cAACs4E,GAAA,EAAD,CACIliC,UAAU,MACVhxB,MAAOvzB,KAAKoN,MAAMgoB,QAAQ70B,OAC1BojF,KAAM3jF,KAAK+N,MAAM61E,WAAWD,KAC5BG,YAAa9jF,KAAK+N,MAAM61E,WAAWpzE,KACnCk2E,aAAc1mF,KAAKq2D,iBACnBswB,oBAAqB3mF,KAAK6jF,uBAItC31E,EAAAhP,EAAAiP,cAACm3K,GAAD,CACI3lL,KAAMK,KAAK+N,MAAM0uD,iBACjBua,SAAU2L,GAAgB,GAC1B4gG,eAAgBe,EAChBn+H,OAAQnmD,KAAK+jF,sBACbr+B,SAAU1lD,KAAKikF,wBAEnB/1E,EAAAhP,EAAAiP,cAACo3K,GAAD,CACI5lL,KAAMK,KAAK+N,MAAM42K,eACjB3tG,SAAUytG,GAAc,GACxBt+H,OAAQnmD,KAAKukL,oBACb7+H,SAAU1lD,KAAK0kL,oBACfhB,gBAAiB1jL,KAAK+N,MAAM21K,gBAC5BC,qBAAsB3jL,KAAK+kL,yBAC3BnB,WAAY5jL,KAAK+N,MAAM61K,WACvBC,gBAAiB7jL,KAAKilL,oBACtBnB,YAAa9jL,KAAK+N,MAAM+1K,YACxBC,iBAAkB/jL,KAAKklL,qBACvBlB,gBAAiBhkL,KAAK+N,MAAMi2K,gBAC5BC,qBAAsBjkL,KAAKmlL,yBAC3BjB,oBAAqBlkL,KAAK+N,MAAMm2K,oBAChCC,yBAA0BnkL,KAAKolL,6BAC/BhB,kBAAmBpkL,KAAK+N,MAAMq2K,kBAC9BC,uBAAwBrkL,KAAKqlL,2BAC7BvkG,gBAAiB9gF,KAAK+N,MAAM+yE,yDA5PpC,OAAO9gF,KAAK8iF,aAAa9iF,KAAKoN,MAAMgoB,QAASp1B,KAAK+N,MAAMg1E,6BAnCpCx0E,IAAMC,eAuS5BsI,GAAiD,CACnD+uE,UAAW,CACP5D,KAAM,SAEV4E,SAAU,CACNnzE,OAAQ,OACR+D,WAAY,IAEhB2uE,OAAQ,CACJ1yE,OAAQ,OACR+D,WAAY,IAEhBguE,WAAY,CACRrsE,MAAO,GACP3B,WAAY,GACZL,cAAe,GACfsB,aAAc,GACd0B,YAAa,IAEjB2rE,KAAM,CACFe,WAAY,SACZ1sE,YAAa,OAEjB7B,WAAY,CACRlK,UAAW,UAEfyQ,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACRwN,cAAe,UAEnBwmE,SAAU,CACNwB,UAAW,QAEfhyE,QAAS,CACL+C,SAAU,GACV+B,cAAe,EACf9C,MAAO9D,GAAQ6B,OAAOX,UAIf0uE,MChZTrlB,GAAmB3f,GAAS,0BAC5BqN,GAAe,CAAEC,QAAQ,GACzBq6H,G3Q0L4B,SAACp0K,GAAD,OAAiB,SAACrK,GAAD,OAAoBA,GAASA,EAAQqK,EAAO,6BAA+BA,OAAMhO,G2Q1LtGqiL,CAAmB,KAGpC9qF,GAAY,mBAwBnB+qF,GAAiBn3K,IAAMizC,KAAK,SAACp0C,GAAiB,IAAAs0C,EAClBnzC,IAAMozC,UAAS,GADGC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAAAE,EAAA,GAAAA,EAAA,GAGhD,OACI1zC,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOmuC,MAChB/2C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,UACLqoC,UAAWnD,GACXntC,MAAM,QACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUgY,GACV77C,UAAU,EACVk8B,UAAQ,EACR4H,WAAS,EACT2G,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OAChB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gBACLqoC,UAAWhC,GACXtuC,MAAM,iBACNrV,QAAQ,WACR2mD,WAAS,EACT4G,UAAW1wB,GACX+pB,SAAUnG,GACV19B,SAAUvU,EAAM04C,YAAc14C,EAAMu4K,cACpCvlI,sBAAsB,EACtBvC,UAAQ,KAGhB3vC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,mBACLqoC,UAAWnD,GACXntC,MAAM,mBACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACR2H,SAAUgY,GACV77C,SAAUvU,EAAM04C,YAAc14C,EAAMu4K,cACpCv5H,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb0qC,KAAcjxC,IAAI,SAAAo2B,GAAG,OAClB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrDmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAOoB,YACpChK,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWnD,GACXntC,MAAM,UACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUgY,GACV77C,SAAUvU,EAAM04C,YAAwC,IAA1B14C,EAAMy3B,SAAStkC,QAAgB6M,EAAMw4K,iBAAmBx4K,EAAMu4K,cAC5F9nI,UAAQ,EACRuO,YAAalB,IAEbh9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbqG,EAAMy3B,SAASrkC,IAAI,SAAAo2B,GAAG,OACnB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAI5L,YAAajkB,MAAO6vB,EAAI5L,aAAc4L,EAAI4O,gBAGlEp4B,EAAMw4K,iBAAmB13K,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,CAAkB5xC,KAAM,GAAI6xC,UAAW,EAAGj0C,MAAO0I,GAAOqB,eAAgBpB,MAAM,eAE5G7I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,UACLqoC,UAAWnD,GACXntC,MAAM,mBACNrV,QAAQ,WACR2mD,WAAS,EACTnC,YAAY,kBACZoC,SAAU,CAACgY,GAAkB/e,IAC7B98B,SAAUvU,EAAM04C,YAAc14C,EAAMu4K,cACpC9nI,UAAQ,EACRxhB,OAAQ6iC,GACR/S,UAAWpxB,MAGnB7sB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,QACC5oD,IAAnBgK,EAAMy4K,UAA0Bz4K,EAAMy4K,SAAStlL,OAAS,GACrD2N,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,SACLqoC,UAAWnD,GACXntC,MAAM,iBACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUgY,GACV77C,SAAUvU,EAAM04C,YAAc14C,EAAMu4K,eAA2C,IAA1Bv4K,EAAMy4K,SAAStlL,QAAgB6M,EAAM04K,gBAC1FjoI,UAAQ,EACR4F,QAAM,EACN2I,YAAalB,IAEbh9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbqG,EAAMy4K,SAASrlL,IAAI,SAAAo2B,GAAG,OACnB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAImvJ,WAAYh/K,MAAO6vB,EAAImvJ,YAAanvJ,EAAImvJ,WAAW/9I,OAAO,GAAGtkC,cAAgBkzB,EAAImvJ,WAAWhqJ,OAAO,GAAGzJ,uBAI9GlvB,IAAnBgK,EAAMy4K,eAA8CziL,GAAlBgK,EAAMy4K,UAAyBz4K,EAAMy4K,SAAStlL,QAAU,GACxF2N,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,SACLqoC,UAAWnD,GACXntC,MAAM,iBACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUgY,GACV77C,SAAUvU,EAAM04C,YAAc14C,EAAMu4K,eAA2C,IAA1Bv4K,EAAMy4K,SAAStlL,QAAgB6M,EAAM04K,gBAC1FjoI,UAAQ,IAIfzwC,EAAM04K,iBAAmB53K,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,CAAkB5xC,KAAM,GAAI6xC,UAAW,EAAGj0C,MAAO0I,GAAOkvK,cAAejvK,MAAM,eAE3G7I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,YACLqoC,UAAWnD,GACXntC,MAAM,aACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAACgY,GAAkB7e,GAAgB6mI,IAC7C7jK,SAAUvU,EAAM04C,YAAc14C,EAAMu4K,cACpC9nI,UAAQ,EACRsO,UAAWtxB,MAGnB3sB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,UACLqoC,UAAWnD,GACXntC,MAAM,iBACNrV,QAAQ,WACR2mD,WAAS,EACTnC,YAAY,YACZoC,SAAU,CAAC9G,IACX/8B,SAAUvU,EAAM04C,YAAc14C,EAAMu4K,cACpCx5H,UAAWtxB,OAIvB3sB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO0I,GAAOk3F,iBAC1B9/F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACft/C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAIo0B,GAAI,GACnBt/C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACId,QAASz3C,EAAM04C,WACfnkC,SAAUvU,EAAMw4C,SAAWx4C,EAAMu4K,cACjC/mL,QAAQ,WACRmY,MAAM,UACNL,QAAStJ,EAAMi4C,aACfztB,KAAK,SACL2tB,WAAS,EACTn3C,MAAO0I,GAAOmvK,cARlB,yBAkBdnvK,GAAiD,CACnDmuC,KAAM,CACFztC,QAAS,IAEbU,WAAY,CACRlB,SAAU,YAEdmB,eAAgB,CACZnB,SAAU,WACVhI,IAAK,MACLoJ,KAAM,OAEV4tK,cAAe,CACXhvK,SAAU,WACVhI,IAAK,MACLoJ,KAAM,OAEV41F,gBAAiB,CACb92F,UAAW,KAOJiuC,gBAAoC,CAAEF,KAAM01C,IAA5Cx1C,CAAyDugI,ICtOzDQ,OAbf,SAAqB1rI,EAAiBD,EAAmB/Z,GAAe,IAAAkhB,EACtCnzC,IAAMozC,UAAS,GADuBC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAC7DmD,EAD6DjD,EAAA,GACpDmrC,EADoDnrC,EAAA,GAUpE,OAPArzC,IAAMq9C,UAAU,WACRrR,GAAa/Z,IACbusD,GAAW,GACX18C,GAAMhxC,SAASmqH,GAAYhvE,EAASD,EAAW/Z,IAAet5B,KAAK,kBAAM6lF,GAAW,IAAQ,kBAAMA,GAAW,OAElH,CAACxyC,EAAW/Z,EAAOga,IAEfqK,GCGIshI,OAbf,SAAqB3+G,GAA6B,IAAA9lB,EAChBnzC,IAAMozC,UAAS,GADCC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GACvCmD,EADuCjD,EAAA,GAC9BmrC,EAD8BnrC,EAAA,GAU9C,OAPArzC,IAAMq9C,UAAU,WCCb,IAAmBw6H,ODAFhjL,IAAZokE,GAAqC,OAAZA,GAAuC,IAAnBA,EAAQjnE,SACrDwsF,GAAW,GACX18C,GAAMhxC,UCFQ+mL,EDEW5+G,ECDjC,eAAA1oE,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAwmL,EAAAQ,EAAA,OAAApnL,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAE4CypC,GAAI,WAAA3kC,OAAY6hL,IAF5D,OAEOP,EAFPtmL,EAAAmoD,KAIO2+H,EAAoBR,EAASrlL,IAAI,SAAA+mE,GACnC,IAAMw+G,EAAax+G,EAAOw+G,WAC1B,OAAIA,GAAcA,EAAWxlL,OAAS,EAC3BxB,OAAA0G,EAAA,EAAA1G,CAAA,GACAwoE,EADP,CAEIw+G,WAAYA,EAAWl8K,UAAU,EAAG,GAAGnG,cAAgBqiL,EAAWl8K,UAAU,GAAGyoB,gBAGhFvzB,OAAA0G,EAAA,EAAA1G,CAAA,GACAwoE,KAIXloE,EAASinL,GAAcD,IAjBxB9mL,EAAAE,KAAA,sBAAAF,EAAAC,KAAA,EAAAD,EAAAooD,GAAApoD,EAAA,SAAAA,EAAAooD,GAAA,yBAAApoD,EAAAM,SAAAT,EAAA,iBAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,KDCkDiH,KAAK,kBAAM6lF,GAAW,IAAQ,kBAAMA,GAAW,OAE9F,CAACvlB,IAEG3iB,GEqEI0hI,GArESh4K,IAAMizC,KAAK,SAACp0C,GAChC,IADiDs0C,EAEbnzC,IAAMozC,SAAS,IAFFC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAE1Cg6D,EAF0C95D,EAAA,GAE9B4kI,EAF8B5kI,EAAA,GAAA0qC,EAGzB/9E,IAAMozC,SAAS,GAHU4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAG1C3I,EAH0C4I,EAAA,GAGpCk6F,EAHoCl6F,EAAA,GAAAG,EAIzBn+E,IAAMozC,SAHV,IAD6BgrC,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAI1Cl8E,EAJ0Cm8E,EAAA,GAIpC+5F,EAJoC/5F,EAAA,GAK3Cg6F,EAAmBp4K,IAAM2xD,QAAQ,iBAAO,CAC1Cg6C,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAQ9I,EAAAhP,EAAAiP,cAACuwG,GAAAx/G,EAAD,CAAY6X,MAAM,eACpE,IAEEkhJ,EAAe1pJ,IAAM2xD,QAAQ,WAE/B,OADAumH,EAAQ,GACJ/qE,EACOtuG,EAAMxM,KAAKsM,OAAO,SAAA+d,GAAI,OAAIA,EAAK+rD,SAAS1kD,cAAcjpB,QAAQqyG,EAAWppF,gBAAkB,IAE3FllB,EAAMxM,MAClB,CAAC86G,EAAYtuG,EAAMxM,OAStB,OACIsN,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EAAGt/C,MAAO0I,GAAO4C,OAC/BxL,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIl6C,MAAO20G,EACPn4D,SAXe,SAAC3uB,GAAD,OAAmC4xJ,EAAc5xJ,EAAM20B,OAAOxiD,QAY7EkR,OAAO,QACPrZ,QAAQ,WACRwkD,YAAY,SACZ7C,WAAYomI,EACZv4K,MAAO0I,GAAOlN,OACd+X,SAAUvU,EAAMu4K,gBAEnBv4K,EAAMu4K,eAAiBz3K,EAAAhP,EAAAiP,cAAC+8E,GAAA,EAAD,MACxBh9E,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACInsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUnsD,MAAO0I,GAAO04F,WACpBthG,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,kBACAtsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,QAGRtsD,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKw9F,EAAa3uJ,MAAMq6E,EAAOnzE,EAAMmzE,EAAOnzE,EAAOA,GAAMhQ,IAAI,SAAA6jD,GAAG,OACxDn2C,EAAAhP,EAAAiP,cAACy4K,GAAD,CACI9/K,IAAKu9C,EAAIh7B,OACTzoB,KAAMyjD,EACN1iC,SAAUvU,EAAMu4K,cAChBjvK,QAAS,kBAAMtJ,EAAMy5K,eAAexiI,EAAIh7B,OAAQg7B,EAAIyiI,wBAKnE7uB,EAAa13J,OAtDF,IAuDR2N,EAAAhP,EAAAiP,cAACs4E,GAAA,EAAD,CACIliC,UAAU,MACVhxB,MAAO0kI,EAAa13J,OACpBojF,KAAMA,EACNG,YAAatzE,EACbk2E,aA3CS,SAAChD,EAAsCC,GAAvC,OAAwD8iG,EAAQ9iG,IA4CzEgD,oBA3CY,SAAC/xD,GACzB6xJ,EAAQ,GACRC,EAAQ9xJ,EAAM20B,OAAOxiD,aAmDvB6/K,GAAgBr4K,IAAMizC,KAAK,SAACp0C,GAAoB,IAAAy/E,EACnBt+E,IAAMozC,UAAS,GADImrC,EAAA/tF,OAAAmN,EAAA,EAAAnN,CAAA8tF,EAAA,GAC3Cp3B,EAD2Cq3B,EAAA,GAC/Bi6F,EAD+Bj6F,EAAA,GAM5Ck6F,EAAWvxH,EAAa3+C,GAAO6E,WAAQvY,EAE7C,OACI8K,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAU1E,aANW,kBAAMkxH,GAAS,IAMMjxH,aALrB,kBAAMixH,GAAS,IAKsC34K,MAAO44K,GAC7E94K,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACKptD,EAAMxM,KAAKo2E,UAEhB9oE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAO2uE,YACpBhwB,GAAcvnD,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ5lC,MAAM,UAAUvG,KAAK,QAAQmR,SAAUvU,EAAMuU,SAAUjL,QAAStJ,EAAMsJ,SAA9E,mBAMzBI,GAAiD,CACnD4C,MAAO,CACH1C,SAAU,YAEd2E,MAAO,CACHC,gBAAiB3I,GAAQC,KAAKC,SAElCsyE,WAAY,CACRp3E,UAAW,SAEfzE,OAAQ,CACJoN,SAAU,WACVE,UAAW,GACXD,MAAO,KC1DTgwK,GAAmB14K,IAAMizC,KAAK,SAACp0C,GAAiB,IAC1C85K,EAAiK95K,EAAjK85K,aAAcC,EAAmJ/5K,EAAnJ+5K,cAAeC,EAAoIh6K,EAApIg6K,eAAgBC,EAAoHj6K,EAApHi6K,cAAe7sI,EAAqGptC,EAArGotC,QAAS8sI,EAA4Fl6K,EAA5Fk6K,gBAAiBC,EAA2En6K,EAA3Em6K,YAAaC,EAA8Dp6K,EAA9Do6K,WAAYC,EAAkDr6K,EAAlDq6K,mBAAoB30G,EAA8B1lE,EAA9B0lE,QAAS1nD,EAAqBhe,EAArBge,iBAC5I1L,EAAkB4nK,EAAlB5nK,cAF0CgiC,EAGlBnzC,IAAMozC,SAAS,IAHGC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAG3CmpE,EAH2CjpE,EAAA,GAGjC8lI,EAHiC9lI,EAAA,GAAA0qC,EAIR/9E,IAAMozC,UAAS,GAJP4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAI3Cq5F,EAJ2Cp5F,EAAA,GAI5Bo7F,EAJ4Bp7F,EAAA,GAAAG,EAKRn+E,IAAMozC,SAAS,IALPgrC,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAK3Ck7F,EAL2Cj7F,EAAA,GAKzBk7F,EALyBl7F,EAAA,GAM5CoC,EAAUxgF,IAAM2xD,QAAQ9vB,GAAY,IACpCw1I,EAAkBM,GAAY94K,EAAMotC,SAAW,EAAGptC,EAAMmtC,UAAWntC,EAAMge,kBACzE06J,EAAkBK,GAAY/4K,EAAMo6D,SARQqlB,EASpBt+E,IAAMozC,UAAS,GATKmrC,EAAA/tF,OAAAmN,EAAA,EAAAnN,CAAA8tF,EAAA,GASlCE,GATkCD,EAAA,GAAAA,EAAA,IAU5C3wC,EAAY/uC,EAAMk6K,gBAAgBvmK,QAAQ0H,GAC1CvlB,EAAekK,EAAMk6K,gBAAgB7+J,GAG3Cla,IAAMq9C,UAAU,WACZmhC,GAAW,GAEX,IAAMjO,EAA2B,GAEO,IAApC1xE,EAAM+a,cAAcC,KAAK7nB,QACzBu+E,EAASjxD,KAAKzgB,EAAMihD,eAAelS,EAAWj5C,IAGlDuE,QAAQu3E,IAAIF,GAAU53E,KAAK,kBAAM6lF,GAAW,IAAQ,kBAAMA,GAAW,MACtE,CAAC3/E,EAAM+a,cAAcC,KAAK7nB,OAAQ6M,EAAMihD,eAAgBlS,EAAWj5C,IAEtE,IAAIisB,EAAY,EACqC,OAAjD/hB,EAAMk6K,gBAAgB70G,6BAAoFrvE,IAAjDgK,EAAMk6K,gBAAgB70G,uBAI3EtjD,EAFA/hB,EAAM+a,cAAcC,KAAK7nB,OAAS6M,EAAMk6K,gBAAgB70G,uBAE5CrlE,EAAM+a,cAAcC,KAAK7nB,OAIzB6M,EAAMk6K,gBAAgB70G,uBAGe,OAAjDrlE,EAAMk6K,gBAAgB70G,wBAAmCrlE,EAAM+a,cAAcC,KAAK7nB,OAAS,IAE/F4uB,EAAY/hB,EAAM+a,cAAcC,KAAK7nB,QAGzCgO,IAAMq9C,UAAU,WAKZ,IAJwB,IAApBg6H,GACAsB,KAGoB,IAApBpB,EACAqB,SAEC,IAAwB,IAApBrB,EACL,QAA2B1iL,GAAvBgK,EAAM06K,oBAAmE1kL,GAArCgK,EAAM06K,cAAc7pG,eAA2E,IAA7C7wE,EAAM06K,cAAc7pG,cAAc19E,OAExH6M,EAAM26K,aAAa36K,EAAM06K,cAAc7pG,cAAc,GAAG8nG,iBAEvD,QAA2B3iL,GAAvBgK,EAAM06K,oBAAmE1kL,GAArCgK,EAAM06K,cAAc7pG,eAA8B7wE,EAAM06K,cAAc7pG,cAAc19E,OAAS,QAAsB6C,GAAjBikL,EAA4B,CACvK,IAAIW,EAAc56K,EAAM06K,cAAc7pG,cAAcj4C,UAAU,SAAA37B,GAAC,OAAIA,EAAE07K,WAAWzzJ,eAAiB+0J,EAAc/0J,gBAC3G01J,GAAe,GACf56K,EAAM26K,aAAa36K,EAAM06K,cAAc7pG,cAAc+pG,GAAajC,sBAIzC3iL,IAAxBgK,EAAM06K,oBAAuD1kL,GAAvBgK,EAAM06K,oBAAmE1kL,GAArCgK,EAAM06K,cAAc7pG,eAA2E,IAA7C7wE,EAAM06K,cAAc7pG,cAAc19E,SACnK6M,EAAM26K,aAAa,KAG5B,CAACb,EAAcC,EAAevB,EAAiBE,IAElD,IAAM9/H,EAAgBz3C,IAAM2xD,QAAQ,WAUhC,MATkC,CAC9BsH,QAAS4/G,EACT5sI,QAASA,EACT96B,cAAeA,EAAgBkP,IAAOlP,GAAiBkP,MAASjF,IAAI,EAAG,SAASqF,QAAQ,SACxFG,UAAWA,EACXmvB,iBAAkBlxC,EAAMk6K,gBAAgBhpI,iBACxCw0B,QAASA,EACT1nD,iBAAkBA,IAGvB,CAACg8J,EAAgBC,EAAe7sI,EAAS96B,EAAeyP,EAAW2jD,EAAS1nD,IAEzEi6B,EAAe92C,IAAMuzC,YAAN,eAAAhjD,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAkB,SAAAC,EAAOkyD,GAAP,IAAAhiD,EAAAu7G,EAAA,OAAA5rH,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACnCooL,EAAcv2H,GACRhiD,EAA6B,CAC/Bi+B,mBAAoBwhD,EAAQz9B,EAAWlmC,kBAAkBrkB,MACzDwoH,aAAc,CAACj+D,EAAWtmC,aAC1Bi9J,UAAWl5F,EAAQz9B,EAAW9W,SAAS1zC,IACvC4Y,cAAe4xC,EAAW5xC,cAAc2c,SACxC0pJ,WAAYz0H,EAAWiW,OACvBp4C,UAAWmiC,EAAWniC,UACtB2jD,QAASxhB,EAAWwhB,SATWvzE,EAAAE,KAAA,EAWE8nL,EAAYj4K,GAXd,OAW7Bu7G,EAX6BtrH,EAAAmoD,KAYnCggI,EAAY78D,EAASv+G,KAAKiqB,GAAc,cAZL,wBAAAh3B,EAAAM,SAAAT,MAAlB,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAalB,CAACsnL,EAAax4F,IAEXm5F,EAAqB35K,IAAMuzC,YAAN,eAAA5gD,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAkB,SAAAgC,EAAOkoB,EAAgBy9J,GAAvB,IAAAqB,EAAAC,EAAAC,EAAA,OAAAppL,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cACzCkoL,GAAiB,GADwBtmL,EAAA7B,KAAA,EAG/B2oL,EAAc/3I,KAAaw3I,EAAiBptI,SAC5C4tI,EAAoC,CACtC/+J,OAAQA,EACRy9J,gBAAiBA,EACjBv/G,OAAQqgH,EAAiBrgH,OACzB0gH,UAAWE,EAAYrhL,IACvB0gE,QAAS76D,OAAOi7K,EAAiBpgH,SACjC9nD,cAAekoK,EAAiBloK,cAAc2c,SAC9ClN,UAAWxiB,OAAOi7K,EAAiBz4J,WACnC2jD,QAASnmE,OAAOi7K,EAAiB90G,UAZAzxE,EAAA5B,KAAA,EAcb+nL,EAAWY,GAdE,OAc/BC,EAd+BhnL,EAAAqmD,KAerC+/H,EAAmBY,GAfkBhnL,EAAA5B,KAAA,iBAAA4B,EAAA7B,KAAA,GAAA6B,EAAAsmD,GAAAtmD,EAAA,SAkBrCsmL,GAAiB,GAlBoB,yBAAAtmL,EAAAxB,SAAAsB,EAAA,kBAAlB,gBAAAI,EAAAM,GAAA,OAAAX,EAAAnB,MAAAC,KAAAC,YAAA,GAoBxB,CAAC2nL,EAAiBptI,QAASotI,EAAiBloK,cAAekoK,EAAiBrgH,OAAQqgH,EAAiBpgH,QAASogH,EAAiB90G,QAAS00G,EAAYC,IAEvJl5K,IAAMq9C,UAAU,WACPx+C,EAAMzN,MAAM+nL,EAAY,KAC9B,CAACt6K,EAAMzN,OAEV,IAiBM2oL,EAAuBxnK,aAAW,SAAC+jB,EAAyB7Z,GAC9D,IAAKA,EAAa,OAAO,EACzB,IAAM0hB,EAAU7H,EAAS1b,KAAK,SAAAoc,GAAC,OAAIA,EAAEva,cAAgBA,IACrD,OAAO0hB,GAAUA,EAAQjH,oBAO7B,OACIv3B,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMsI,QAASE,cAAe+vK,EAAelwK,MAAM,eAAeqG,SAAU,MAC/G5N,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgBr4F,MAA5B,sEACA1F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgBs8E,QAC5Br6K,EAAAhP,EAAAiP,cAACq6K,GAAD,CACI3jJ,SAAUz3B,EAAMy3B,SAChB+gJ,gBAAiBA,EACjB5/H,cAAeA,EACf2/H,cAAeA,EACfvgI,SAAUC,EACVwgI,SAA6B,KAAlBz4K,EAAMo6D,SAAkBp6D,EAAM06K,cAAc7pG,cAAiB7wE,EAAM06K,cAAc7pG,cAAgB,GAC5G6nG,gBAAiBA,IAGrB53K,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgBs8E,QAC3B19D,EAAStqH,OAAS,GAAK2N,EAAAhP,EAAAiP,cAACs6K,GAAD,CAAiB7nL,KAAMiqH,EAAUg8D,eAAgBqB,EAAoBvC,cAAeA,IAnB7Gv4K,EAAM03B,kBAAoBwjJ,EAAqBl7K,EAAMy3B,SAAUz3B,EAAM4d,cAqBhE9c,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOiD,UAAW,EAAGt/C,MAAO69F,GAAgBvyF,OACxCxL,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO69F,GAAgBr4F,MAA4B,IAApBi3G,EAAStqH,QAAgB6M,EAAMgd,UAAa,oBAAsB,wBACvGlc,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO69F,GAAgBs8E,QAC5Br6K,EAAAhP,EAAAiP,cAACioD,GAAD,CAAM1/C,QAhDD,WACrB,IAAM6xG,EAAcn7G,EAAM4d,YAAc5d,EAAMy3B,SAAS1b,KAAK,SAAAoc,GAAC,OAAIA,EAAEva,cAAgB5d,EAAM4d,mBAAe5nB,EAExGgK,EAAMs7K,qBAAqB,CACvBluI,QAASptC,EAAMotC,QACfpvB,iBAAkBhe,EAAMge,iBACxBJ,YAAa5d,EAAM4d,YACnBwa,YAAa+iF,GAAeA,EAAY/iF,YACxC9lB,cAAetS,EAAMsS,cACrB8nD,QAASp6D,EAAMo6D,QACfD,OAAQn6D,EAAMm6D,OACduL,QAAS1lE,EAAM0lE,UAGnB1lE,EAAMq6K,mBAAmB,SAkCT,oBACAv5K,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,0EAAiED,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WAAvE,0HAA2MinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,kBAQjR8yF,GAAuDltG,OAAA0G,EAAA,EAAA1G,CAAA,GACtD+X,GADsD,CAEzDlD,KAAM,CACFmD,MAAO9D,GAAQC,KAAKU,MAExB8F,MAAO,CACHlC,QAAS,GACTnJ,UAAW,UAEfk6K,MAAO,CACH1uK,aAAc,IAElBiF,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACP3B,WAAY,MA0DLqlC,mBAhDf,SAAyB/uC,EAAmBi6C,GACxC,IAAM58B,EAAmBwrE,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,oBACvDssC,EAActsC,EAAMmhB,WAAWnO,QAAQu5B,mBAAmB,IAAM,GAChEE,EAAUH,EAAYG,QACtBgtB,EAAUovB,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,WAC9C2R,EAAgBk3E,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,iBACpDid,EAAc4rE,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,eAClD46K,EACF5pL,OAAO8wC,OAAO9hC,EAAMiT,SAAS6uB,QAAQ1mB,KAAK,SAAA0+B,GAAO,MAAoB,uBAAhBA,EAAQ/gD,MAC3Dg+B,EAAmBt4B,QAAQm8K,IAA6BA,EAAwB5hL,OAA0D,UAAhD4hL,EAAwB5hL,MAAMurB,eAAgE,MAAjCq2J,EAAwB5hL,QAC/K89B,EAAWF,GAAevZ,EAAkBrd,EAAMsxB,OAAOwF,SAAU92B,EAAMqb,KAAKhB,MAAM,GAAO,GAC3Fm/C,EAASqvB,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,UAC7CwsC,EAAYC,EAAUpK,KAAaoK,GAASzzC,MAAQ,YACpDqjB,EAAYgtC,aAAmBujC,GAAnBvjC,CAA8BrpD,GAC1C+kE,EAAU/kE,EAAMmhB,WAAWnO,QAAQ+xD,QAEzC,MAAO,CACHjuC,WACAijJ,cAAe/5K,EAAM83K,SACrBz6J,mBACAmvB,YACAnwB,YACAg9J,eAAgB/sI,EAAYmtB,QAC5B6/G,cAAehtI,EAAYktB,OAC3BC,UACA9nD,gBACAsL,cACAu8C,SACA/sB,UACA1V,mBACAwiJ,gBAAiBv5K,EAAMmhB,WACvB/G,cAAepa,EAAM4c,SACrBmoD,YAIR,SAA4BzzE,GACxB,MAAO,CACHkoL,YAAa,SAAAj4K,GAAO,OAAIjQ,ECtHzB,SAAqBiQ,GACxB,sBAAAo1H,EAAA3lI,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwlI,EAAOtlI,EAAeixC,GAAtB,IAAAs4I,EAAA15J,EAAAtuB,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAAulI,GAAA,cAAAA,EAAArlI,KAAAqlI,EAAAplI,MAAA,cAAAolI,EAAArlI,KAAA,EAAAopL,EAEwBt4I,IAAfphB,EAFT05J,EAES15J,WAFT21G,EAAAplI,KAAA,EAGwCypC,GAAI,aAAA3kC,OAAc2qB,EAAWnO,QAAQ0H,GAAjC,iBAAAlkB,OAAmD2qB,EAAWzG,GAA9D,iBAAiF,CAAE0gB,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAU0C,KAHpK,cAGO1O,EAHPikI,EAAAn9E,KAAAm9E,EAAA9nF,OAAA,SAIQn8C,EAAKioB,OAJb,aAAAg8G,EAAArlI,KAAA,EAAAqlI,EAAAl9E,GAAAk9E,EAAA,SAMCxlI,EAAS0B,EAAyB8jI,EAAAl9E,GAAK,2BANxCk9E,EAAAl9E,GAAA,yBAAAk9E,EAAAhlI,SAAA8kI,EAAA,iBAAP,gBAAAskC,EAAAC,GAAA,OAAAxkC,EAAA3kI,MAAAC,KAAAC,YAAA,GDqHqCsnL,CAAYj4K,KAC7Ck4K,WAAY,SAAAl4K,GAAO,OAAIjQ,EC/FxB,SAAoBiQ,GACvB,sBAAAg1H,EAAAvlI,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAolI,EAAOllI,EAAeixC,GAAtB,IAAAu4I,EAAA35J,EAAA45J,EAAA,OAAA7pL,EAAAC,EAAAI,KAAA,SAAAklI,GAAA,cAAAA,EAAAhlI,KAAAglI,EAAA/kI,MAAA,cAAA+kI,EAAAhlI,KAAA,EAAAqpL,EAEwBv4I,IAAfphB,EAFT25J,EAES35J,WAFTs1G,EAAA/kI,KAAA,EAIqCypC,GAAI,aAAA3kC,OAAc2qB,EAAWnO,QAAQ0H,GAAjC,iBAAAlkB,OAAmD2qB,EAAWzG,GAA9D,kBAAAlkB,OAAiF2qB,EAAWmkD,qBAAuB,CAAElqC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAU0C,KAJnM,cAIOw5K,EAJPtkD,EAAA98E,KAMCroD,EAAS0pL,GAAUD,IACnBzpL,EAASX,EAAgB,gBAAiB,YAP3C8lI,EAAAznF,OAAA,SAQQ+rI,EAAargK,IARrB,cAAA+7G,EAAAhlI,KAAA,GAAAglI,EAAA78E,GAAA68E,EAAA,SAUCnlI,EAAS0B,EAAyByjI,EAAA78E,GAAK,2BAVxC68E,EAAA78E,GAAA,yBAAA68E,EAAA3kI,SAAA0kI,EAAA,kBAAP,gBAAAQ,EAAA1J,GAAA,OAAAiJ,EAAAvkI,MAAAC,KAAAC,YAAA,GD8FoCunL,CAAWl4K,KAC3C43K,aAAc,kBAAM7nL,EAAS2pL,aAAYruF,IAAW,GAAO,EAAO,iBAClE+tF,qBAAsB,SAAA74I,GAAM,OAAIxwC,EAAS4pL,GAAsBp5I,KAC/Ds3I,cAAe,kBAAM9nL,EAAS2pL,aAAYruF,IAAW,GAAO,EAAO,YACnEotF,aAAc,SAAChC,GAAD,OAAwB1mL,EAAS2uD,aAAO2sC,GAAW,SAAUorF,KAC3E13H,eAAgB,SAAClS,EAAWj5C,GAAZ,OAA6B7D,EAASgvD,GAAelS,EAAWj5C,OAIzE45C,CAA6CmqI,IE7QtDiC,eAoBF,SAAAA,EAAY97K,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAkpL,IACtBliL,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAmqL,GAAA37K,KAAAvN,KAAMoN,KApBVq2E,aAMM,CACE,CAAEh7D,GAAI,SAAU06D,WAAW,EAAOlvE,MAAO,IACzC,CAAEwU,GAAI,OAAQ06D,WAAW,EAAOlvE,MAAO,IACvC,CAAEwU,GAAI,cAAe06D,WAAW,EAAOlvE,MAAO,oBAC9C,CAAEwU,GAAI,WAAY06D,WAAW,EAAOlvE,MAAO,aAC3C,CAAEwU,GAAI,UAAW06D,WAAW,EAAOlvE,MAAO,WAC1C,CAAEwU,GAAI,aAAc06D,WAAW,EAAOlvE,MAAO,cAAegyE,UAAU,EAAMC,YAAc,6RAC1F,CAAEz9D,GAAI,eAAgB06D,WAAW,EAAOlvE,MAAO,eAAgBgyE,UAAU,EAAMC,YAAa,qFAC5F,CAAEz9D,GAAI,aAAc06D,WAAW,EAAOlvE,MAAO,cAAegyE,UAAU,EAAMC,YAAa,wFAKvEl/E,EAF1Bw/F,WAAa,CAAC,YAAa,SAEDx/F,EAD1B8mD,WAAapgD,GAAKyjB,iBACQnqB,EAqB1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEu7K,cAAc,KArBtBniL,EAsB1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEu7K,cAAc,KAtBvBniL,EAuB1Bw0D,WAAa,kBAAMx0D,EAAK4G,SAAS,CAAEw7K,sBAAsB,KAvB/BpiL,EAwB1BqiL,aAAe,kBAAMriL,EAAK4G,SAAS,CAAEw7K,sBAAsB,KAxBjCpiL,EAkC1BsiL,cAAgB,SAACjgK,GAAoB,IAAAkgK,EACRv7K,GAAOi/E,UAAxBh/E,EADyBs7K,EACzBt7K,KAAMsE,EADmBg3K,EACnBh3K,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cAAc/C,QAAQoS,EAAQ8W,OAASA,GAAU,OACpJriB,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IArCFzmF,EAwC1BqvD,iBAAmB,SAACvpD,GAChB,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,KA5CNzmF,EAgD1BiyF,UAAY,SAAC5vE,GACTriB,EAAKqiL,eACLriL,EAAKsiL,cAAcjgK,IAlDGriB,EAqD1BkjF,aAAe,SAACzhE,EAAYvM,GACxBlV,EAAK4iF,YACL5iF,EAAKoG,MAAMm0H,WAAWv6H,EAAKm1C,UAAWn1C,EAAK9D,aAAculB,EAAIvM,GAAMhV,KAAKF,EAAK+iF,WAAY/iF,EAAK+iF,aAvDxE/iF,EAyD1BwiL,WAAa,SAAC/gK,EAAYvM,EAAchS,GACpClD,EAAK4iF,YAEL5iF,EAAKoG,MAAMq8K,SAASziL,EAAKm1C,UAAWn1C,EAAK9D,aAAculB,EAAIvM,EAAMhS,GAAShD,KAAKF,EAAK+iF,WAAY/iF,EAAK+iF,aA5D/E/iF,EA8D1Bu9E,eAAiB,SAACl7D,GAAmB,IAAAqgK,EACR17K,GAAOi/E,UAAxBh/E,EADyBy7K,EACzBz7K,KAAMsE,EADmBm3K,EACnBn3K,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cAAc/C,QAAQoS,EAAQ8W,OAASA,GAC1IriB,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IAjEFzmF,EAoE1B2iL,mBAAqB7oK,aAAW,SAAC+H,GAC7B,IAAMsC,EAAkB,IAAIzB,IAI5B,OAHAb,EAAMG,QAAQ,SAACH,GACXsC,EAAgBxB,IAAId,EAAMuC,oBAEvBD,IAzEenkB,EA4E1B4iL,UAAY9oK,aAAW,SAAC+H,GACpB,OAAOA,EAAMvf,QAAQgD,KAAKiqB,GAAc,oBAAoB,MA1E5DvvB,EAAK+G,MAAQ,CACTo7K,cAAc,EACdC,sBAAsB,GALJpiL,mFAUtB,IAAM83E,EAA2B,GAEjCA,EAASjxD,KAAK7tB,KAAKoN,MAAM++E,WAAWnsF,KAAKm8C,UAAWn8C,KAAKkD,eAEpDlD,KAAKoN,MAAM8hB,WAAWzG,IACvBq2D,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,eAElDlD,KAAK4pF,YACLniF,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAK+pF,WAAY/pF,KAAK+pF,6CA8D5C,IAAAjtB,EAC0C98D,KAAK+N,MAA5Co7K,EADHrsH,EACGqsH,aAAcC,EADjBtsH,EACiBssH,qBADjB9zK,EAEyBtV,KAAKoN,MAA3Byb,EAFHvT,EAEGuT,MAAOqG,EAFV5Z,EAEU4Z,WACT/D,EAAkBnrB,KAAK2pL,mBAAmB9gK,GAC1CghK,EAAYhhK,EAAMtoB,OAElBupL,EAAe9pL,KAAK4pL,UAAU/gK,GAAOroB,IAAI,SAAA4oB,GAC3C,IAAMm6J,EAAiB16J,EAClB3b,OAAO,SAAA7C,GAAC,OAAIA,EAAEu4D,YAAYz5C,KAAK,SAAAk5I,GAAC,OAAIA,EAAEx/F,WAAaC,GAAeC,SAAWs/F,EAAE55I,KAAOW,EAAKX,OAC3FjoB,IAAI,SAAA4oB,GAAI,OAAIA,EAAKjJ,kBACtB,OAAOphB,OAAA0G,EAAA,EAAA1G,CAAA,GAAKqqB,EAAZ,CAAkBm6J,eAAgBA,MAGhCtiG,IAAa/xD,EAAWqB,kBAAoBvwB,KAAK8tD,YAAcj8B,GAAe7xB,KAAKoN,MAAM8hB,WAAYxG,GAAMqhK,UAEjH,OACI77K,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAWswB,EAAWnO,QAAQ7E,MAAahO,EAAAhP,EAAAiP,cAAA,YAE9DD,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAOl2D,KAAKwmG,WACZnwC,iBAAkBr2D,KAAKq2D,mBAE3BnoD,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,KACIv8C,EAAAhP,EAAAiP,cAAC88E,GAAD,CACIx1E,MAAM,QACN8xE,sBAAuBtG,EACvBwG,kBAAmBv5E,EAAAhP,EAAAiP,cAAC0vD,GAAA3+D,EAAD,MACnBmoF,kBAAkB,eAClBG,oBAAqBxnF,KAAKw7D,WAC1B4rB,OAAQ,CACJ,CAAEhjD,OAAQjZ,EAAgB3a,KAAMonB,KAAM,qBACtC,CAAEwM,OAAQylJ,EAAWjyJ,KAAM,YAGlCuxJ,GAAgBj7K,EAAAhP,EAAAiP,cAAC+8E,GAAA,EAAD,MACjBh9E,EAAAhP,EAAAiP,cAAC67K,GAAD,CACItkG,eAAe,EACf/E,SAAU3gF,KAAKkqF,aACfnJ,OAAQ/gF,KAAKwpL,WACbzmG,qBAAsB/iF,KAAKyjF,aAC3BruD,QAAS00J,EACTvlG,eAAgBvkF,KAAKukF,eACrBtD,SAAUA,EACVL,QAAQ,OACR4F,WAAYsjG,EAAavpL,OAAS,MAG1C2N,EAAAhP,EAAAiP,cAAC87K,GAAD,CAAkBtqL,KAAMypL,EAAsB1zK,QAAS1V,KAAKqpL,aAAc5B,mBAAoBznL,KAAKi5F,+CAtG3G,OAAOj5F,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQ4pC,UAAWh8C,QAAQ,IAAK,0CAIhF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQrP,aAAc/C,QAAQ,IAAK,YAnDpEoO,IAAMC,eAwKdyE,GAAQC,KAAKU,KASbX,GAAQC,KAAKU,KAqBbkpC,mBAhBf,SAAyB/uC,GACrB,MAAO,CACH8a,MAAO9a,EAAMqb,KAAKhB,KAClB8G,WAAYnhB,EAAMmhB,aAI1B,SAA4B7vB,EAAe2oD,GACvC,MAAO,CACHmkC,WAAY,SAAChwC,EAAWj5C,GAAZ,OAA6B7D,EAAS8sF,GAAWhwC,EAAWj5C,KACxEq+H,WAAY,SAACplF,EAAWj5C,EAAculB,EAAIvM,GAA9B,OAAuC7c,EAASkiI,GAAWplF,EAAWj5C,EAAculB,EAAIvM,KACpGi+B,gBAAiB,SAACj3C,GAAD,OAAkB7D,EAAS86C,GAAgBj3C,KAC5DumL,SAAU,SAACttI,EAAWj5C,EAAculB,EAAIvM,EAAMhS,GAApC,OAAgD7K,EAASoqL,GAASttI,EAAWj5C,EAAculB,EAAIvM,EAAMhS,OAIxG4yC,CAA6CosI,IC/NrD,SAASgB,GAAqBC,GACjC,IAAMx/J,EAAWJ,GAAY,WAAYC,GAAgB0V,aACnD8xG,EAASznH,GAAY,SAAUC,GAAgB0V,aAC/C0hC,EAAQr3C,GAAY,WAAYC,GAAgB0V,aACrCiqJ,EAAU5gK,qBAAqBwW,SAASre,GAAuBqD,UAuChF,MAtC8C,CAC1C,CACIoZ,cAAexT,EACf4wD,eAAe,EACfC,WAAW,EACXj+C,OAAQ,KACRC,OAAQ,MAEZ,CACIW,cAAe6zG,EACfz2D,eAAe,EACfC,WAAW,EACXj+C,OAAQ,KACRC,OAAQ,MAEZ,CACIW,cAAeyjC,EACf2Z,eAAe,EACfC,WAAW,EACXj+C,OAAQ,KACRC,OAAQ,MAEZ,CACIW,cAAeyjC,EACf2Z,eAAe,EACfC,WAAW,EACXj+C,OAAQ,KACRC,OAAQ,MAGZ,CACIW,cAAeyjC,EACf2Z,eAAe,EACfC,WAAW,EACXj+C,OAAQ,KACRC,OAAQ,OAMpB,IA2DM1mB,GAAiD,CACnDmC,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,MAExBsF,WAAY,CACRpB,SAAU,GACVG,OAAQ,UAEZyB,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,IAEfgpB,YAAa,CACT5lB,QAAS,OACTO,WAAY,WAILuvK,GA/EiD,SAACh9K,GAAiB,IACtE20C,EAAiB30C,EAAjB20C,OAAQ34B,EAAShc,EAATgc,KAEVuB,EAAWJ,GAAY,WAAYC,GAAgB0V,aACnD8xG,EAASznH,GAAY,SAAUC,GAAgB0V,aAC/C0hC,EAAQr3C,GAAY,WAAYC,GAAgB0V,aAChDmqJ,IAAyBjhK,GAAQA,EAAKG,qBAAqBwW,SAASre,GAAuB+B,kBAC3F4gE,GAAkC,IAArBj3E,EAAMi3E,YAAuBgmG,EAC1CtlK,EAAW3X,EAAMgc,KAAKG,qBAAqBwW,SAASre,GAAuBqD,UAC3EulK,EAAejmG,GAAct/D,EAEnC,OACI7W,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,oBACAhL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IAAKlrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAf,WAAgClrB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAf,WACnD2oB,EAAOvhD,IAAI,SAAC0b,EAAMpP,GACf,IAAMy9K,EAAiBxoI,EAAOn5C,IAAIkE,GAC5BozB,EAAcyU,KAAiBxrB,KAAK,SAAAqhK,GAAC,OAAIA,EAAE/hK,KAAO8hK,EAAepsJ,gBACvE,IAAK+B,EACD,OAAOhyB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MAEX,IAAMqT,EAAW4oK,EAAehvG,cAC1Bn5D,EAAUmoK,EAAe/uG,UACzBvnE,EAAK,GAAA1P,OACP27B,EAAYzX,KAAOkC,EAAW,WAC1BuV,EAAYzX,KAAOupH,EAAS,0BACxB9xG,EAAYzX,KAAOm5C,EAAQ,cACvB,IAJLr9D,OAKHod,GAAYS,EAAb,MAAA7d,OAA8Bod,EAAW,WAAaS,EAAU,UAAY,IAAO,IAC1F,OAAOlU,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACHJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAAC7c,MAAO0I,GAAOopB,YAAa9G,GAAI,GAAInlB,GAC9C/F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAGlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACdf,UAAWnD,GACXllC,KAAI,GAAA3X,OAAK2X,EAAL,WACJtd,QAAQ,WACR2mD,WAAS,EACT3tB,KAAK,SACLjW,SAAU2oK,EACV9kI,SAAU3G,MAEd3wC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAGlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACdf,UAAWnD,GACXllC,KAAI,GAAA3X,OAAK2X,EAAL,WACJtd,QAAQ,WACR2mD,WAAS,EACT3tB,KAAK,SACLjW,SAAU2oK,EACV9kI,SAAU3G,aC9EpC4rI,eACF,SAAAA,EAAYr9K,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAyqL,IACtBzjL,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA0rL,GAAAl9K,KAAAvN,KAAMoN,KAUVs9K,qBAAuB,SAAC3jL,EAAeg3C,GAAhB,OAAyCA,EAAU4sI,WAAa5jL,OAAQ3D,EAAY,gBAAaA,GAX9F4D,EAa1B4jL,gBAAkB9pK,aAAW,SAAC+pK,EAA4BC,EAAkBzhK,GACxE,GAAIyhK,EAAS3hK,KAAK,SAAAC,GAAI,QAAMA,EAAK8zD,cAAyC,IAAzB9zD,EAAK4zD,SAASz8E,QAAgB6oB,EAAKX,KAAOY,KAAuC,IAA5BwhK,EAAiBtqL,OACnH,OAAO,EAMX,IAJA,IAAMy8E,EAAW8tG,EACZ59K,OAAO,SAAAkc,GAAI,OAAIA,EAAKX,KAAOY,GAAUD,EAAK8zD,eAC1C18E,IAAI,SAAA4oB,GAAI,OAAIA,EAAK4zD,WAClB+tG,GAAO,EACFl+J,EAAI,EAAGA,EAAImwD,EAASz8E,OAAQssB,IACjC,GAAImwD,EAASnwD,IAAMmwD,EAASnwD,GAAG3f,OAAO,SAAAyxE,GAAO,OAAIksG,EAAiBxhL,QAAQs1E,IAAY,IAAGp+E,OAAS,EAAG,CACjGwqL,GAAO,EACP,MAIR,OAAOA,IAzBP/jL,EAAK+G,MAAQ,GAHS/G,wEAgCtB,IACMgkL,EAAoBhrL,KAAKgrL,kBACzB3mG,GAAuC,IAA1BrkF,KAAKoN,MAAMi3E,WAC9B,OACIn2E,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,oBAEJhL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0nD,YACftwD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,aACLqoC,UAAWP,GACX/vC,MAAM,8CACN0N,SAAUqpK,GAAqB3mG,GAAcrkF,KAAKoN,MAAMkhB,6BAE5DpgB,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAfF,6IAgBV2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,qDAxC7C,OAAQ9e,KAAK4qL,gBAAgB5qL,KAAKoN,MAAM69K,iBAAkBjrL,KAAKoN,MAAM09K,SAAU9qL,KAAKoN,MAAMic,eATrE9a,IAAMC,eAyDtBsI,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GACpDmsL,GADoD,CAEvDpsK,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,GACPC,WAAY,QAEhBmvE,QAAS,CACLC,QAAS,GACTrxE,cAAe,OAEnBonD,WAAY,CACR3jD,WAAY,SACZP,QAAS,OACTmkD,aAAc,UAElB0sH,UAAW,CACPj0K,UAAW,QACXkD,YAAa,UAgBN0iC,mBAZf,SAAyB/uC,EAAmBi6C,GACxC,IAAM2iI,EAAa/zF,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,cAI/D,MAAO,CACHk9K,kBAJar0F,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,YAAc,IAC1Cb,OAAO,SAAAgjG,GAAC,OAAIA,EAAEp0C,WAAUt7D,IAAI,SAAA0vG,GAAC,OAAIA,EAAEznF,KAIhEkiK,aACAG,SAJa/8K,EAAMqb,KAAKhB,KAAKlb,OAAO,SAAAkc,GAAI,OAAIA,EAAKgC,mBAAqB48B,EAAS58B,qBAQxE0xB,CAAyB2tI,yBCrElC3zK,GAA2C,CAC7CwJ,QAAS,CACLrI,OAAQ,GAEZyB,MAAO,CACHY,QAAS,cACTO,WAAY,SACZrD,QAAS,GACTyE,SAAU,SAEd0F,SAAU,CACN/F,gBAAiB3I,GAAQC,KAAKI,KAC9ByD,MAAO9D,GAAQC,KAAKS,UACpBD,OAAM,aAAAnP,OAAe0O,GAAQC,KAAKQ,SAEtC03K,OAAQ,CACJ13K,OAAM,aAAAnP,OAAe0O,GAAQC,KAAKQ,SAEtC23K,iBAAkB,CACdpzK,OAAQ,EACRmB,MAAO,QAEXgxI,eAAgB,CACZ9vI,QAAS,cACTO,WAAY,SACZrD,QAAS,GACT4B,MAAO,OACPjC,YAAa,GACbkC,WAAY,GACZ9H,OAAQ,IAEZ+5K,kBAAmB,CACf1vK,gBAAiB3I,GAAQiB,KAAK,MAElCq3K,4BAA6B,CACzB3vK,gBAAiB3I,GAAQiB,KAAK,KAC9BR,OAAM,aAAAnP,OAAe0O,GAAQC,KAAKQ,SAEtCE,KAAM,CACF4D,QAAS,iBAEb6b,KAAM,CACFnc,UAAW,OACXH,MAAO9D,GAAQiB,KAAKC,SAExBy5H,aAAc,CACV12H,UAAW,OACXH,MAAO9D,GAAQC,KAAKU,OAIb0D,QAAWR,GAAXQ,CA1FI,SAAClK,GAAiB,IAAAqwC,EACuBrwC,EAAhDoI,eADyB,IAAAioC,EACf,GADeA,EACXxpC,EAAkC7G,EAAlC6G,MAAOof,EAA2BjmB,EAA3BimB,KAAM0wB,EAAqB32C,EAArB22C,QAASrtC,EAAYtJ,EAAZsJ,QAE5C,OACIxI,EAAAhP,EAAAiP,cAACwpF,GAAA,EAAD,CACIpzC,UAAU,OACV5iC,SAAUvU,EAAMuU,UAAYvU,EAAM29I,eAClC90I,UAAW7I,EAAMm4C,UAAY/vC,EAAQ61K,iBAAmB71K,EAAQ8K,SAEhEpS,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CACIiD,UAAWtgD,EAAMg+K,QAAUh+K,EAAMuU,UAAYvU,EAAM29I,eAAiB,EAAI,EACxE90I,UAAS,6BAAA1R,OAEC6I,EAAMm4C,UAAY/vC,EAAQ40I,eAAiB50I,EAAQkE,MAFpD,qCAAAnV,OAGCw/C,EAAU32C,EAAM29I,eAAiBv1I,EAAQ+1K,4BAA8B/1K,EAAQ81K,uBAAoBloL,EAHpG,+BAAAmB,QAIEw/C,GAAW32C,EAAMuU,UAAYnM,EAAQmM,SAJvC,8BAAApd,QAKEw/C,IAAY32C,EAAMuU,UAAYvU,EAAMg+K,QAAU51K,EAAQ41K,OALxD,0BAQT10K,QAAS,kBAAMA,GAAWA,MAE1BxI,EAAAhP,EAAAiP,cAAC88I,GAAA/rJ,EAAD,CAAMgX,WAAS,GACXhI,EAAAhP,EAAAiP,cAAC88I,GAAA/rJ,EAAD,CAAM+rB,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC+8I,GAAA,EAAD,CAAMj1I,UAAW7I,EAAMuU,SAAWnM,EAAQo4H,aAAep4H,EAAQ6d,MAAOA,IAE5EnlB,EAAAhP,EAAAiP,cAAC88I,GAAA/rJ,EAAD,CAAM+rB,MAAI,EAACmO,GAAI,GAAInjB,UAAWT,EAAQ5B,MAClC1F,EAAAhP,EAAAiP,cAAA,YAAO8F,IAEX/F,EAAAhP,EAAAiP,cAAC88I,GAAA/rJ,EAAD,CAAM+rB,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAAC+8I,GAAA,EAAD,CAAMn0I,MAAOgtC,EAAU,YAAc,WAChCA,EAAU71C,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,MAAkBgP,EAAAhP,EAAAiP,cAACq9K,GAAAtsL,EAAD,aCbnDusL,GAAgBl9K,IAAMizC,KAAK,SAACp0C,GAAiB,IACvCs+K,EAAkCt+K,EAAlCs+K,qBAAsBC,EAAYv+K,EAAZu+K,QADiBjqI,EAELnzC,IAAMozC,SAAS+pI,GAFV9pI,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GAExCkqI,EAFwChqI,EAAA,GAEzBiqI,EAFyBjqI,EAAA,GAGzCyiC,GAAkC,IAArBj3E,EAAMi3E,WAUzB,OACIn2E,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,WACAhL,EAAAhP,EAAAiP,cAAA,yEAEAD,EAAAhP,EAAAiP,cAAA,WAFA,0CAG2CD,EAAAhP,EAAAiP,cAAA,QACnCC,MAAQi2E,OAAcjhF,EAAY0T,GAAOpC,KACzCgC,QAAU2tE,OAAcjhF,EAAYgK,EAAM0+K,cAFP,iBAQ/C59K,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI3vC,MAAM,oCACN4vC,QAAS31C,EAAAhP,EAAAiP,cAAC81C,GAAA,EAAD,CACLltC,MAAM,YACNgtC,QAAS6nI,EACTroI,SAAU,kBA7B1BsoI,EADc9kL,GA8B4B6kL,SA5BtC7kL,GAASqG,EAAM2+K,cAAgB3+K,EAAM2+K,aAAaxrL,OAAS,GAC3D6M,EAAM2+K,aAAa/iK,QAAQ,SAACuc,EAAG1Y,GAC3Bzf,EAAM4+K,cAAczmJ,EAAG1Y,MAJlB,IAAC9lB,GA+BE4a,UAAWgqK,GAAWtnG,OAIjCunG,GACG19K,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,UAAUqoC,UAAW0nI,GAAuBtqK,SAAUnV,SAASo/K,IAAkBvnG,QAOrGvtE,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GACpDmsL,GADoD,CAEvDgB,YAAa,CACTn1K,MAAO9D,GAAQiB,KAAKQ,KACpBnD,OAAQ,OACR6H,MAAO,QAEX1E,KAAM,CACFqC,MAAO9D,GAAQiB,KAAKQ,MAExBkhD,UAAW,CACP7+C,MAAO9D,GAAQiB,KAAKQ,KACpBqhD,eAAgB,YAChBl6C,OAAQ,aAkBAihC,mBAbhB,SAAyB/uC,GAErB,MAAO,CACHg+K,aAFiBn1F,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,aAM7D,SAA4B1O,EAAe2oD,GACvC,MAAO,CACHgkI,cAAe,SAACzmJ,EAAcz4B,GAAf,OAAiCzN,EAAS2uD,aAAO2sC,GAAD,WAAAp2F,OAAuBuI,EAAvB,KAAiC,CAAC2b,GAAI8c,EAAE9c,GAAIvM,KAAKqpB,EAAErpB,KAAM4/C,UAAW,QAI3Hhf,CAA6C2uI,IAOvDQ,GAAwB,SAAC7+K,GAC3B,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,GACrB,IAAMuuD,EAASjuD,EAAM20C,OAAOn5C,IAAIkE,GAC1B6U,EAAWvU,EAAMuU,SACvB,OACIzT,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIx+C,IAAKoV,EACLA,KAAI,GAAA3X,OAAK2X,EAAL,aACJqoC,UAAW,SAACn3C,GAAD,OACPc,EAAAhP,EAAAiP,cAACg+K,GAAD,CACIl4K,MAAOonD,EAAOn/C,KACdyF,SAAUA,EACVoiC,UAAW32C,EAAM1C,MAAM3D,MACvBqkL,QAASh+K,EAAM1C,MAAM3D,MACrBssB,KAAMnlB,EAAAhP,EAAAiP,cAACi+K,GAAAltL,EAAD,CAAgBkP,MAAO0I,GAAOo1K,cACpCx1K,QAAS,kBAAMtJ,EAAM1C,MAAM64C,UAAUn2C,EAAM1C,MAAM3D,iBC5G3EslL,GAAuB99K,IAAMizC,KAAK,SAACp0C,GAAiB,IAC9Ck/K,EAAwBl/K,EAAxBk/K,oBACFjoG,GAAkC,IAArBj3E,EAAMi3E,WAEnBkoG,EAAsBn/K,EAAM+8K,UAAUntG,SAExCwvG,EAAiBj+K,IAAM2xD,QAAQ,WAE/B,IAAIusH,EAAsBH,EAAoBp/K,OAAO,SAAA+1D,GAAU,OAAIA,EAAW+Z,SAASz8E,SAAWgsL,EAAoBhsL,QAAU0iE,EAAW+Z,SAAS/lD,MAAM,SAACy1J,EAAU7/J,GAAX,OAAiB6/J,IAAaH,EAAoB1/J,OAC5M,OAAQ4/J,GAAuBA,EAAoBlsL,WAAa+rL,GAAuBA,EAAoB/rL,SAC5G,CAAC+rL,IAEJ,OAAIl/K,EAAM20C,OAAOxhD,OAET2N,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,gBACAhL,EAAAhP,EAAAiP,cAAA,qGAGCq+K,GACGt+K,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOisK,cACf70K,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAOhC,SAD3B,iEAMR5G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACV9I,EAAM20C,OAAOxhD,QAAU6M,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GACnD,IAAInhD,EAAOmhD,EAAOn5C,IAAIkE,GACtB,OACIoB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMryB,IAAKoV,EAAM+O,MAAI,EAACmO,GAAI,IACtBlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,aACJqoC,UAAWZ,GACX1vC,MAAOrT,EAAKmjK,IAAM,MAAQnjK,EAAKsb,KAC/ByF,SAAU0iE,SAalCn2E,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,gBACAhL,EAAAhP,EAAAiP,cAAA,2CAUd2I,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7CmpF,GAD6C,CAEhDjvE,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,MAExBsF,WAAY,CACRpB,SAAU,GACVG,OAAQ,UAEZyB,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,IAEfy1K,WAAY,CACR51K,MAAO9D,GAAQ6B,OAAOX,SAE1BwG,QAAS,CACL7C,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExBmvK,aAAc,CACVzoK,QAAS,OACTO,WAAY,SACZisE,WAAW,YAiBJhqC,mBAbf,SAAyB/uC,EAAmBi6C,GACxC,IAAM4kI,EAAsBh2F,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,uBAClE+2D,EAAY/2D,EAAMqb,KAElByjK,EAAwBD,EAAsBA,EAAoB1/K,OAAO,SAAA+1D,GAAU,OAAIA,EAAWnH,WAAUt7D,IAAI,SAAAyiE,GAAU,OAAIA,EAAWx6C,KAAM,GAGrJ,MAAO,CACH6jK,oBAHwBxnH,EAAU18C,KAAKlb,OAAO,SAAAkc,GAAI,OAAIyjK,EAAsB9sJ,SAAS3W,EAAKX,QAQnFq0B,CAAyBuvI,IC5GlCS,GAAuBv+K,IAAMizC,KAAK,SAACp0C,GAAiB,IAC9C2/K,EAAsD3/K,EAAtD2/K,qBAAsBC,EAAgC5/K,EAAhC4/K,4BAExBC,EAAwBpvI,GAAS,oDAIjCqvI,GAAmC,IAArB9/K,EAAMi3E,WAC1B,OACIn2E,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,2BACAhL,EAAAhP,EAAAiP,cAAA,yLAGJD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sBACLqoC,UAAWL,GACXjwC,MAAM,sBACNkwC,UAAU,iBACVxiC,SAAWurK,EACXrvI,UAAQ,GAGJkvI,EAAqBvsL,IAAI,SAACoxB,GACtB,OAAO1jB,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACH98C,IAAK8qB,EAAOgL,oBACZ71B,MAAK,GAAAxC,OAAKqtB,EAAOgL,qBACjB3oB,MAAO2d,EAAO2f,sBACdsS,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,mBAMtC7I,EAAAhP,EAAAiP,cAAA,YACE6+K,IAAgC11E,OAAOjmE,KAAyBnkC,OAAO,SAAAigL,GAAE,MAAiC,8CAA7BA,EAAG57I,wBAAuE,GAAG3U,sBACrJowJ,IAAgC11E,OAAOjmE,KAAyBnkC,OAAO,SAAAigL,GAAE,MAAiC,sCAA7BA,EAAG57I,wBAA+D,GAAG3U,uBACrJ1uB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gBACLqoC,UAAWnD,GACXntC,MAAM,kBACN0N,SAAUurK,EACV1nI,SAAU,CAACynI,EAAuBtuI,GAzC7B,SAAC53C,GAC1B,OAAOA,EAAQ,GAAK,2EAAwE3D,IAyCxEy6C,UAAQ,SAgBpC,IAAM/mC,GAAiD,CACnDmC,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,MAExBsF,WAAY,CACRpB,SAAU,GACVG,OAAQ,UAEZyB,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,KAIJ4lC,eAvBf,SAAyB/uC,EAAmBi6C,GAExC,MAAO,CACHglI,4BAFgCp2F,aAAkB+D,GAAlB/D,CAA6B7oF,EAAO,yBAsB7D+uC,CAAyBgwI,IC3ClCh2K,GAAiD,CACnDmC,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,MAExBsF,WAAY,CACRpB,SAAU,GACVG,OAAQ,UAEZyB,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,IAEfk2K,SAAU,CACNt1K,SAAU,GACV+B,cAAe,EACf9C,MAAO9D,GAAQ6B,OAAOX,SAE1Bk5K,YAAa,CACTv1K,SAAU,KAIHw1K,GAnE6C,SAAClgL,GACzD,IAAM2hF,EAAU3+C,KACVi0C,GAAkC,IAArBj3E,EAAMi3E,WACzB,OACIn2E,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAOm/K,GAAc3yK,mBACpB1M,EAAAhP,EAAAiP,cAAA,4BACAD,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAM,uMACN2f,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAOm/K,GAAcp0K,cAIvCjL,EAAAhP,EAAAiP,cAAA,6DAEID,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAOs2K,WAH3B,OAG6Cl/K,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOu2K,aAApB,kEAGjDn/K,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACV9I,EAAM20C,OAAOn5C,IAAI,IAAMwE,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAAW,IACtDniB,EAAsBmiB,EAAOn5C,IAAIkE,GAAjC8yB,kBACF3rB,EAAQ86E,EAAQnvD,GAAmB74B,MACnCymL,EpS1CW,SAACpiK,EAA0BwU,GAC5D,IAAM6tJ,EAAkB/1I,GAAMtsB,GACxBsiK,EAAiBj2I,GAAMrsB,GACvBuiK,EAAYp2I,GAAYnsB,GACxBwiK,EAAWp2I,GAAWpsB,GACtByiK,EAAanzJ,GAAatP,GAC1B0iK,EAAYnzJ,GAAYvP,GACxB2iK,EAAM32I,GAAMhsB,GACZwX,EAAW0U,GAAWlsB,GACtB4iK,EAAQ32I,GAAQjsB,GAEhBznB,EAAa4mB,GAAY,WAAYC,GAAgBgV,sBACrDyC,EAAW1X,GAAY,SAAUC,GAAgBgV,sBACjD0C,EAAe3X,GAAY,kBAAmBC,GAAgBgV,sBAC9D2C,EAAU5X,GAAY,QAASC,GAAgBgV,sBAErD,OAAIuuJ,GAAOC,EACA,CACHC,SAAUruJ,IAAsBj8B,EAChCk6C,SAAUje,IAAsBj8B,GAIpCi/B,EACO,CACHqrJ,UAAU,EACVpwI,UAAU,GAGd4vI,GAAmBC,EACZ,CACHO,SAAUruJ,IAAsBj8B,EAChCk6C,SAAUje,IAAsBj8B,GAE7BgqL,GAAaC,EACb,CACHK,UAAU,EACVpwI,SAAUje,IAAsBj8B,GAE7BkqL,EACA,CACHI,SAAUruJ,IAAsBqC,GAAYrC,IAAsBsC,EAClE2b,SAAUje,IAAsBqC,GAE7B6rJ,EACA,CACHG,SAAUruJ,IAAsBuC,EAChC0b,SAAUje,IAAsBuC,GAG7B,CACH8rJ,UAAU,EACVpwI,UAAU,GoSVkBqwI,CAAsB9gL,EAAMge,iBAAkBwU,GAClE,OACI1xB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMryB,IAAKoV,EAAM+O,MAAI,EAACmO,GAAI,IACtBlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,cACJqoC,UAAWZ,GACX1vC,MAAOA,EACP0N,UAAW6rK,EAAYS,UAAYT,EAAY3vI,UAAYwmC,UCtB5E8pG,GApBkB,SAAC/gL,GAC9B,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM2H,SACH7G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACXt/C,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACAvnD,MAAO,iBACPqkD,SAAU1sD,EAAMghL,aACZ1gI,UAAW,EACXmL,YAAY,EACZE,aAAc,QCQpCjiD,GAAiD,CACnD00C,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAIPw0K,GA5BiB,SAACjhL,GAC7B,OACAc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACUlB,EAAMwvD,aAAexvD,EAAMgnG,iCAAmC,GAC5DlmG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO00C,WAC/Bt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACXt/C,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,qBACNqkD,SAAU1sD,EAAMkhL,qBAChB5gI,UAAW,EACXmL,YAAY,EACZE,aAAc,QCA7B4hC,GAAY,qBA2LnB7jF,GAA8C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7CmsL,GAD6C,CAEhDlrF,aAAc,CACV7oF,YAAa,OAEjB8B,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBq5E,UAAW,CACPn8E,MAAO9D,GAAQC,KAAKU,MAExB43C,SAAU,CACN1zC,SAAU,GACV+B,aAAc,GACd9C,MAAO9D,GAAQC,KAAKU,MAExB2qD,QAAS,CACLzmD,SAAU,GACVqD,UAAW,SACXhE,YAAa,OACbJ,MAAO9D,GAAQC,KAAKU,MAExB4qD,WAAY,CACR3jD,WAAY,SACZP,QAAS,OACTmkD,aAAc,UAElB3/C,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,MAGA+rC,gBAA+C,CAAEF,KAAM01C,GAAWn1C,SApMhE,SAAC3V,GACd,IAAMhxC,EAA0C,CAC5Ci+E,gBAAiB,IAEjByxG,EAAiB1+I,EAAOitC,gBA6B5B,OA5BMyxG,GACFA,EAAevlK,QAAQ,SAACuhK,EAAgBz9K,GACpC,IAAMo1H,EAAOqoD,EAAehtJ,QAAU7R,SAAS6+J,EAAehtJ,OAAOhzB,YAC/D6G,EAAOm5K,EAAe/sJ,QAAU9R,SAAS6+J,EAAe/sJ,OAAOjzB,YAE/D23H,GAAS9wH,IAAQqvK,MAAMv+C,KAASu+C,MAAMrvK,IAAQ8wH,GAAO9wH,IACvDvS,EAAOi+E,gBAAiBhwE,GAAS,CAC7BywB,OAAQ,oCACRC,OAAQ,0CAGX0kG,GAAe,IAARA,GAAe9wH,IACvBvS,EAAOi+E,gBAAiBhwE,GAAS,CAC7BywB,OAAQ,+BAGXnsB,GAAS8wH,IACVrjI,EAAOi+E,gBAAiBhwE,GAAS,CAC7B0wB,OAAQ,8BAGJ,IAARpsB,IACAvS,EAAOi+E,gBAAiBhwE,GAAS,CAC7B0wB,OAAQ,gDAKjB3+B,IAmKIsmD,CAhKwB,SAAC/3C,GACpC,IACQ04C,EAAsK14C,EAAtK04C,WAAYF,EAA0Jx4C,EAA1Jw4C,QAASF,EAAiJt4C,EAAjJs4C,SAAU8oI,EAAuIphL,EAAvIohL,uBAAwBnpI,EAA+Gj4C,EAA/Gi4C,aAAc8kI,EAAiG/8K,EAAjG+8K,UAAWv3G,EAAsFxlE,EAAtFwlE,kBAAoC+oB,GAAkDvuF,EAAnEqhL,gBAAmErhL,EAAlDuuF,aAAai+C,EAAqCxsI,EAArCwsI,WAAYmzC,EAAyB3/K,EAAzB2/K,qBAC/I2B,EAAuBthL,EAAMwvD,aAAelvD,GAAK+iB,0BA8BvD,OA7BAliB,IAAMq9C,UAAU,WACZguF,EAAW,CACPpkI,QAASo9D,EAAkBpyE,IAAI,SAAA+kC,GAAC,MAAK,CAAE9c,GAAI8c,EAAE9c,GAAIvM,KAAMqpB,EAAEtvB,UAAW6lD,SAAUquH,EAAUntG,SAASpwD,KAAK,SAAAnE,GAAE,OAAI8c,EAAE9c,KAAOA,OACrHmW,aAAa7/B,OAAAgO,EAAA,EAAAhO,CACNijC,GAAyBmoJ,EAAU/+J,kBAAkB5qB,IAAI,SAAAmuL,GAAW,OAAA5vL,OAAA0G,EAAA,EAAA1G,CAAA,GAChE4vL,EACAxE,EAAUvrJ,aAAazV,KAAK,SAAA9qB,GAAC,OAAIA,EAAEuhC,oBAAsB+uJ,EAAY/uJ,wBAGhF+qJ,aAAcR,EAAUjtG,aACxBA,aAAY,GAAA34E,OAAK4lL,EAAUjtG,aAAeitG,EAAUjtG,aAAepnC,KAAqB,GAAGrtB,IAC3FmkK,oBAAqB4B,EAAuBhuL,IAAI,SAAAouL,GAAY,MAAK,CAC7DnmK,GAAImmK,EAAanmK,GACjBvM,KAAM0yK,EAAazuK,gBACnB27C,SAAUquH,EAAUvnH,YAAYh2C,KAAK,SAAAq2C,GAAU,OAAIA,EAAWx6C,KAAOmmK,EAAanmK,IAAMw6C,EAAWJ,WAAaC,GAAe75C,WAC/H86I,IAAKnzH,GAAQg+I,EAAaxjK,qBAE9B0xD,gBAAiBotG,GAAqB98K,EAAM+8K,WAAW3pL,IAAI,SAAA+pL,GAAc,OAAAxrL,OAAA0G,EAAA,EAAA1G,CAAA,GAClEwrL,GACCJ,EAAUrtG,iBAAmB,IAAI3zD,KAAK,SAAAjqB,GAAC,OACvCA,EAAEi/B,gBAAkBosJ,EAAepsJ,eACnCj/B,EAAEs8E,YAAc+uG,EAAe/uG,WAC/Bt8E,EAAEq8E,gBAAkBgvG,EAAehvG,mBAE3C3+C,oBAAqButJ,EAAUvtJ,oBAAsB06E,OAAO6yE,EAAUvtJ,qBAAuB06E,OAAOjmE,KAAyBnkC,OAAO,SAAAigL,GAAE,MAAiC,cAA7BA,EAAG57I,wBAAuC,GAAG3U,qBACvLM,cAAeitJ,EAAUjtJ,iBAE9B,CAACitJ,EAAWqE,EAAwB57G,EAAmBgnE,IAGtD1rI,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,eACC7L,EAAMgnG,iCAAiC,EAClClmG,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO0nD,YACjBtwD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOynD,SAA1B,sCACArwD,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAvCA,4EAwCA2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,UAGnC5Q,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,iEACNt9C,EAAAhP,EAAAiP,cAAC0gL,GAAD,CACIjyH,YAAaxvD,EAAMwvD,YACnBw3C,iCAAkChnG,EAAMgnG,iCACxCk6E,qBAAsBlhL,EAAMkhL,uBAGhCpgL,EAAAhP,EAAAiP,cAAC2gL,GAAD,CACI/5K,QAAS3H,EAAM2hL,4BACfX,aAAchhL,EAAM4hL,uBAExB9gL,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAAC8gL,GAAD,CACInD,aAAc1+K,EAAM0+K,aACpBH,QAAS/4G,EAAkBryE,OAAS,EACpCmrL,qBAAsB94G,EAAkBhmD,KAAK,SAAAsiK,GAAE,OAAI/E,EAAUntG,SAASpwD,KAAK,SAAAnE,GAAE,OAAIA,IAAOymK,EAAGzmK,OAC3F47D,WAAYj3E,EAAMi3E,YAAcj3E,EAAMkhB,6BAE1CpgB,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,eACLqoC,UAAW+oI,GACXliK,iBAAkB++J,EAAU/+J,iBAC5Bi5D,WAAYj3E,EAAMi3E,aAEtBn2E,EAAAhP,EAAAiP,cAAA,YACEyoC,GAAuBxpC,EAAM+8K,UAAU/+J,mBACzCld,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACghL,GAAD,CACI9lK,OAAQ8gK,EAAU1hK,GAClB2C,iBAAkB++J,EAAU/+J,iBAC5BgkK,cAAejF,EAAU/+J,iBACzB6iC,SAAU0sC,GACVtW,WAAYj3E,EAAMi3E,WAClB/1D,2BAA4BlhB,EAAMkhB,6BAEtCpgB,EAAAhP,EAAAiP,cAAA,aAIFyoC,GAAuBxpC,EAAM+8K,UAAU/+J,mBACzCld,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,sBACLqoC,UAAW8nI,GACXhoG,WAAYj3E,EAAMi3E,WAClBp2B,SAAU0sC,GACVwvF,UAAWA,IAEfj8K,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/gD,KAAK,kBACLqoC,UAAW6lI,GACX/lG,WAAYj3E,EAAMi3E,YAAcj3E,EAAMgnG,iCAAiC,EACvEhrF,KAAMhc,EAAM+8K,aAIpBj8K,EAAAhP,EAAAiP,cAACkhL,GAAD,CACItC,qBAAsBA,EACtB1oG,WAAYj3E,EAAMi3E,aAGtBn2E,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAEC,UAAW,UACrBH,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOkpF,aAActpF,QAASgvC,GAA7C,UACAx3C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIjvC,QAAS2uC,EACTzmD,QAAQ,YACRmY,MAAM,UACN8tC,QAASiB,EACTnkC,SAAUikC,GAAW+1C,GAAe+yF,GALxC,yBCxLd9tI,GAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAUfs4K,GAAc,SAAAxwL,GAAA,IAAG6iB,EAAH7iB,EAAG6iB,SAAU4tK,EAAbzwL,EAAaywL,SAAUziL,EAAvBhO,EAAuBgO,MAAvB,OAAwCoB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC+U,MAAI,EAACmO,IAAE,GAC/ElrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,SAAA3X,OAAWuI,EAAX,MAAAvI,OAAqBgrL,GACzBhrI,UAAWnD,GACXoE,SAAU5G,GACVhgD,QAAQ,WACRg5B,KAAK,OACL2oB,WAAYK,GACZwC,YAAY,OACZzhC,SAAUA,MA0JZ7K,GAAiD,CACnDutC,IAAK,CACDntC,UAAW,GACXO,WAAY,GACZoD,WAAY,QAEhB5B,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,KAEhBy3K,aAAc,CACVz4K,MAAO9D,GAAQC,KAAKS,WAExBszE,UAAW,CACPlwE,MAAO9D,GAAQC,KAAKS,UACpBmE,SAAU,QACVL,WAAY,QAEhBg4K,gBAAiB,CACb3oG,WAAY,SACZroB,aAAc,OACd5jD,WAAY,OACZzB,MAAO,OACP0C,SAAU,QAEd4zK,cAAe,CACX3vE,UAAW,WAEf4vE,UAAW,CACPv2K,MAAO,SAuBAw2K,OA1MiB,SAACxiL,GAAiB,IACtCyiL,EAAiGziL,EAAjGyiL,gBAAiBC,EAAgF1iL,EAAhF0iL,iBAAkB5nJ,EAA8D96B,EAA9D86B,SAAU6nJ,EAAoD3iL,EAApD2iL,8BAC/C5rJ,EADmG/2B,EAArB1C,MAAS3D,OAC5D,GAC3BgoF,EAAU3+C,KAGVo/B,EAAiBzwE,OAClBsN,KAAK0iF,GACLvuF,IAAI,SAAAioB,GAAE,OAAA1pB,OAAA0G,EAAA,EAAA1G,CAAA,GAAUgwF,EAAQtmE,GAAlB,CAAuBA,GAAIiD,SAASjD,OAC1Cvb,OAAO,SAAA8sB,GAAC,OAAIA,EAAExO,SAAWhB,GAAgBuU,gBAGxCixJ,EAAejxL,OAChBsN,KAAK0iF,GACLvuF,IAAI,SAAAioB,GAAE,OAAA1pB,OAAA0G,EAAA,EAAA1G,CAAA,GAAUgwF,EAAQtmE,GAAlB,CAAuBA,GAAIiD,SAASjD,OAC1Cvb,OAAO,SAAA8sB,GAAC,OAAIA,EAAExO,SAAWhB,GAAgB0V,cAExC+vJ,EAAqB,SAACjyJ,GACxB,MAAiB,mBAAbkK,EACOlK,EAAKE,iBAAmB,EAEb,wBAAbgK,EACElK,EAAKG,eAAiB,GAGrB,GAsBZogF,EAAkC,GACtC,GAAiB,mBAAbr2E,EAEIq2E,GADkC,IAAlCwxE,EACUxxE,EAAQh6G,OAAO,CACrB,WACA,OACA,WACA,OACA,WACA,OACA,WACA,SAIEg6G,EAAQh6G,OAAOirE,QAIxB,GAAiB,wBAAbtnC,EAAoC,CAEzC,IAAIgoJ,EAAuBxvL,MAAMsrB,KAAK,IAAItC,IAAIya,EAAM3jC,IAAI,SAAAw9B,GAAI,OAAIA,EAAKG,kBACrEogF,EAAUA,EAAQh6G,OAAOyrL,EAAa9iL,OAAO,SAAAgzB,GAAW,OAAIgwJ,EAAqBnwJ,SAASG,EAAYzX,WAEpF,cAAbyf,IAGGq2E,EAFJsxE,EACIC,EACUvxE,EAAQh6G,OAAO,CACrB,gBACA,YACA,gBACA,cAGMg6G,EAAQh6G,OAAO,CACrB,OACA,WAIJurL,EACUvxE,EAAQh6G,OAAO,CAAC,cAAe,YAE/Bg6G,EAAQh6G,OAAO,CAAC,MAKtC,IAAM4rL,EAAYhsJ,EAAM53B,OAAO,SAAC+wB,EAAQU,EAAMlxB,GAE1C,IAAI4xB,EAAQpB,EAAOnU,KAAK,SAAAuV,GAAK,OAAIA,EAAMnB,SAAWS,EAAKT,QAAUmB,EAAMlB,SAAWQ,EAAKR,SAClFkB,IAEDA,EAAQ,CAAEnB,OAAQS,EAAKT,OAAQC,OAAQQ,EAAKR,OAAQ2G,MAAO,IAC3D7G,EAAM,GAAA/4B,OAAAxF,OAAAgO,EAAA,EAAAhO,CAAOu+B,GAAP,CAAeoB,KAEzB,IAAM0xJ,EAAWrxL,OAAA0G,EAAA,EAAA1G,CAAA,GAAQi/B,EAAR,CAAclxB,UAW/B,OAVA4xB,EAAMyF,MAAQzF,EAAMyF,MACf5/B,OAAO,CAAC6rL,IACR9jL,KAAK,SAAC+jL,EAAOC,GACV,IAAMC,EAAoBhyE,EACrBrxG,OAAO,SAAAsjL,GAAC,MAAiB,kBAANA,IACnBhwL,IAAI,SAAAgwL,GAAC,OAAKA,EAAgB/nK,KACzBgoK,EAAgBR,EAAmBI,GACnCK,EAAgBT,EAAmBK,GACzC,OAAOC,EAAkBlnL,QAAQonL,GAAiBF,EAAkBlnL,QAAQqnL,KAE7EpzJ,GACR,IAEH,OAAOpvB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACHJ,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO0I,GAAO24K,iBACtCvhL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,IAAE,GAAClrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOmwE,WAAvC,QACbs3B,EAAQ/9G,IAAI,SAACyY,EAAQ4T,GAAT,OAAe3e,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,IAAE,EAACtyB,IAAK+lB,GAAG3e,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOmwE,WA7F9E,SAAChuE,GACpB,MAAsB,kBAAXA,EAEU,mBAAbivB,EACOjvB,EAAOnS,IAEI,wBAAbohC,EACEjvB,EAAOlS,MAGP,GAKJkS,EA8EkG03K,CAAe13K,SAG5H/K,EAAAhP,EAAAiP,cAAA,WAAMgiL,EAAU3vL,IAAI,SAACowL,GAAD,OAAc1iL,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAG,GAAAvC,OAAKqsL,EAASrzJ,OAAd,KAAAh5B,OAAwBqsL,EAASpzJ,SAClFtvB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO0I,GAAOutC,KACtCn2C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC+U,MAAI,EAACmO,IAAE,GACnBlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,OAAQra,QAAQ,MAkE9D,SAAAsC,EAAkE2vL,GAAgB,IAA9C3uD,EAA8ChhI,EAAtDq8B,OAAqBnsB,EAAiClQ,EAAzCs8B,OACrC,OAAI0kG,IAAQ2uD,EACR,GAAAtsL,OAAU29H,EAAV,KACOA,IAAQ9wH,GAAQA,EAGvB,GAAA7M,OAAU29H,EAAV,KAAA39H,OAAiB6M,GAFV8wH,EAtEqD4uD,CAAiBF,EAAUT,EAAUA,EAAU5vL,OAAS,GAAGg9B,UAE9GqzJ,EAASzsJ,MAAM3jC,IAAI,SAAAw9B,GAAI,OAAI9vB,EAAAhP,EAAAiP,cAACD,EAAAhP,EAAMoP,SAAP,CAAgBxH,IAAG,GAAAvC,OAAKy5B,EAAKT,OAAV,KAAAh5B,OAAoBy5B,EAAKR,OAAzB,KAAAj5B,OAAmCy5B,EAAKG,cAAxC,KAAA55B,OAAyDy5B,EAAKE,mBACvG2xJ,GAAmB3hL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACjBJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC+U,MAAI,EAACmO,IAAE,GAAClrB,EAAAhP,EAAAiP,cAAC4iL,GAAD,CAAajkL,MAAOkxB,EAAKlxB,MAAO6U,SAAUvU,EAAM+0G,WAAYotE,SAAS,aAC3FO,GAAoBC,IAAkC7hL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACpDJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC+U,MAAI,EAACmO,IAAE,GAAClrB,EAAAhP,EAAAiP,cAAC4iL,GAAD,CAAajkL,MAAOkxB,EAAKlxB,MAAO6U,SAAUvU,EAAM+0G,WAAYotE,SAAS,qBAGpGM,GAAmB3hL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAChBJ,EAAAhP,EAAAiP,cAAC4iL,GAAD,CAAajkL,MAAOkxB,EAAKlxB,MAAO6U,SAAUvU,EAAM+0G,WAAYotE,SAAS,eACpEO,GAAoB5hL,EAAAhP,EAAAiP,cAAC4iL,GAAD,CAAajkL,MAAOkxB,EAAKlxB,MAAO6U,SAAUvU,EAAM+0G,WAAYotE,SAAS,sBAC1FrhL,EAAAhP,EAAAiP,cAAC4iL,GAAD,CAAajkL,MAAOkxB,EAAKlxB,MAAO6U,SAAUvU,EAAM+0G,WAAYotE,SAAS,iBACpEO,GAAoB5hL,EAAAhP,EAAAiP,cAAC4iL,GAAD,CAAajkL,MAAOkxB,EAAKlxB,MAAO6U,SAAUvU,EAAM+0G,WAAYotE,SAAS,mCCpK5G3uI,GAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAgDfF,GAAiD,CACnDmC,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,KAEhBi5K,kBAAmB,CACf95K,UAAW,IAEfs0C,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBo3K,oBAAqB,CACjBn5K,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBsD,UAAW,EACX2C,cAAe,IAIRq3K,GA5D+C,SAAC9jL,GAC3D,IAAM2hF,EAAU3+C,KACVi0C,GAAkC,IAArBj3E,EAAMi3E,WACzB,OACIn2E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOmC,QAAvC,mBACC7L,EAAM+jL,iBACHjjL,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIC,WAAS,EACTrpC,KAAK,cACLyF,SAAU0iE,EACV9/B,UAAW,SAACn3C,GAAD,OAAgBc,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOm6K,qBAA1B,aAA0D7jL,EAAM1C,MAAM3D,OAAS,EAA/E,mBAGnCmH,EAAAhP,EAAAiP,cAAA,WACCf,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAAW,IAC/B7jB,EAAoB6jB,EAAOn5C,IAAIkE,GAA/BoxB,gBACFjqB,EAAQiqB,EAAkB6wD,EAAQ7wD,GAAiBn3B,MAAQ,GACjE,OACImH,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIx+C,IAAG,GAAAvC,OAAK0P,EAAL,KAAA1P,OAAcuI,GACjBoP,KAAI,GAAA3X,OAAK2X,EAAL,WACJqoC,UAAWnD,GACXoE,SAAU5G,GACV3qC,MAAOA,EACPsxC,WAAS,EACT3mD,QAAQ,WACRwP,MAAO0I,GAAOk6K,kBACdp5J,KAAK,OACL2oB,WAAYK,GACZwC,YAAY,OACZzhC,SAAU0iE,QCzC5BzjC,GAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAyCfF,GAAiD,CACnDmC,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,KAEhBq5K,aAAc,CACVl6K,UAAW,IAEfs0C,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBo3K,oBAAqB,CACjBn5K,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBsD,UAAW,EACX2C,cAAe,IAIRw3K,GArD0C,SAACjkL,GACtCgjC,KAAhB,IACMi0C,GAAkC,IAArBj3E,EAAMi3E,WACzB,OACIn2E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOmC,QAAvC,aACC7L,EAAM+jL,iBACHjjL,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIC,WAAS,EACTrpC,KAAK,cACLyF,SAAU0iE,EACV9/B,UAAW,SAACn3C,GAAD,OAAgBc,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOm6K,qBAA1B,aAA0D7jL,EAAM1C,MAAM3D,OAAS,EAA/E,mBAGnCmH,EAAAhP,EAAAiP,cAAA,WACQD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,iBACJqoC,UAAWnD,GACXoE,SAAU5G,GACV3qC,MAAO,SACPsxC,WAAS,EACT3mD,QAAQ,WACRwP,MAAO0I,GAAOs6K,aACdx5J,KAAK,OACL2oB,WAAYK,GACZwC,YAAY,OACZzhC,SAAU0iE,MCrC5BzjC,GAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAoDfF,GAAiD,CACnDmC,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,KAEhBi5K,kBAAmB,CACf95K,UAAW,IAEfs0C,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBo3K,oBAAqB,CACjBn5K,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBsD,UAAW,EACX2C,cAAe,IAIRy3K,GAjEgD,SAAClkL,GAC5D,IAAM2hF,EAAU3+C,KACVuxH,EAAqBp3I,GAAY,WAAYC,GAAgB0V,aACnE,OACIhyB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOmC,QAAvC,mBACC7L,EAAM+jL,iBACHjjL,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIC,WAAS,EACTrpC,KAAK,cACLyF,SAAUvU,EAAMqhL,gBAChBlqI,UAAW,SAACn3C,GAAD,OAAgBc,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOm6K,qBAA1B,aAA0D7jL,EAAM1C,MAAM3D,OAAS,EAA/E,mBAGnCmH,EAAAhP,EAAAiP,cAAA,WACCf,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAAW,IAC/B5jB,EAAkB4jB,EAAOn5C,IAAIkE,GAA7BqxB,cACJlqB,EAAQ,GACZ,GAAIkqB,EAAe,CACf,IAAMkB,EAAS0vD,EAAQ5wD,GAEvBlqB,GADgBkqB,IAAkBwjI,EACf9xJ,KAAKpF,MAAM40B,EAAO0R,oBAAoBo3G,YAAc9oH,EAAOt4B,OAAS,QAE3F,OACImH,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIx+C,IAAG,GAAAvC,OAAK0P,EAAL,KAAA1P,OAAcuI,GACjBoP,KAAI,GAAA3X,OAAK2X,EAAL,WACJqoC,UAAWnD,GACXoE,SAAU5G,GACV3qC,MAAOA,EACPsxC,WAAS,EACT3mD,QAAQ,WACRwP,MAAO0I,GAAOk6K,kBACdp5J,KAAK,OACL2oB,WAAYK,GACZwC,YAAY,OACZzhC,SAAUvU,EAAMqhL,sBCnC3B9zF,GAAY,eA+BnB/5C,GAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAWfu6K,eAEF,SAAAA,EAAYnkL,GAAc,IAAApG,EAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAuxL,IACtBvqL,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAwyL,GAAAhkL,KAAAvN,KAAMoN,KAFVokL,eAC0B,EAAAxqL,EAc1ByqL,eAAiB,SAAC78J,GACd,IAAMsT,EAAWD,GAAkBrT,EAAM20B,OAAOxiD,OAChDC,EAAK4G,SAAS,CAAE8jL,aAA2B,cAAbxpJ,KAhBRlhC,EAmB1B2qL,2BAA6B,SAACC,GAC1B,IAAM7tJ,EAAQ6tJ,EAAwBroI,OAAOxF,QAC7C/8C,EAAK4G,SAAS,CAAEikL,iBAAkB9tJ,KArBZ/8B,EAwB1B8qL,0BAA4B,SAACC,GACzB,IAAMhuJ,EAAQguJ,EAAuBxoI,OAAOxF,QAC5C/8C,EAAK4G,SAAS,CAAEokL,gBAAiBjuJ,KAxBjC,IAAMmE,EAAWD,GAAkBjhC,EAAKoG,MAAM6wB,YAAcj3B,EAAKoG,MAAM44C,cAAc/nB,YAF/D,OAKtBj3B,EAAK+G,MAAQ,CACT2jL,aAA2B,cAAbxpJ,EACd8pJ,iBAAyD,IAAxC5kL,EAAM44C,cAAc6pI,gBACrCgC,kBAA2D,IAAzCzkL,EAAM44C,cAAc8pI,kBAG1C9oL,EAAKwqL,UAAY7wJ,GAAavzB,EAAMge,kBAXdpkB,wEA6BjB,IAAAsO,EAC+OtV,KAAKoN,MAAjPgnG,EADH9+F,EACG8+F,iCAAkCk6E,EADrCh5K,EACqCg5K,qBAAsBrwJ,EAD3D3oB,EAC2D2oB,WAAY6nB,EADvExwC,EACuEwwC,WAAYF,EADnFtwC,EACmFswC,QAASP,EAD5F/vC,EAC4F+vC,aAAcj6B,EAD1G9V,EAC0G8V,iBAAkBuwE,EAD5HrmF,EAC4HqmF,YAAa/+B,EADzItnD,EACyIsnD,YAAa5W,EADtJ1wC,EACsJ0wC,cAAeN,EADrKpwC,EACqKowC,SAAUusI,EAD/K38K,EAC+K28K,iBAD/KC,EAAA58K,EACiM+uE,kBADjM,IAAA6tG,KACoNC,EADpN78K,EACoN68K,uBACnNhB,EAAkB/lK,IAAqBorB,GAAgBprB,IAAqBqrB,GAAUrrB,IACtF8c,EAAWD,GAAkBhK,GAAc+nB,EAAc/nB,YACzD4xJ,EAAkB7vL,KAAK+N,MAAMikL,iBAAgC,cAAb9pJ,EAChD4nJ,EAAmB9vL,KAAK+N,MAAM8jL,kBAAiC,cAAb3pJ,EAClD6nJ,EAA6C,mBAAb7nJ,IAA8E,IAA7CloC,KAAKoN,MAAM2iL,8BAC5EqC,EAAqBv0I,GAAS,wBAEpC,OACI3vC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,SACA/K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,SAAUz0C,MAAM,iBAA1C,kDACCo7K,GACGjkL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOu7K,gBAAiBt7K,MAAM,iBAAgB7I,EAAAhP,EAAAiP,cAAA,kBAAjE,sSAEJD,EAAAhP,EAAAiP,cAAC0gL,GAAD,CACIjyH,YAAaA,EACbw3C,sCAAsEhxG,GAApCgxG,EAAgDA,EAAmC,EACrHk6E,0BAA8ClrL,GAAxBkrL,EAAoCA,EAAuB,KAEpF2D,GACG/jL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,gBACPqkD,SAAS,oGACTpM,UAAW,EACXmL,YAAY,EACZE,aAAc,MAM9B7qD,EAAAhP,EAAAiP,cAAC2gL,GAAD,CACI/5K,QAAS/U,KAAKoN,MAAM2hL,4BACpBX,aAAcpuL,KAAKoN,MAAM4hL,wBAE5BhvL,KAAKoN,MAAM8N,iBAYV9X,GACF8K,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOw7K,aACfpkL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,cAEJhL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO06K,WACftjL,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,aACLqoC,UAAWL,GACXC,UAAU,YACVZ,SAAUvjD,KAAKyxL,eACf9vK,SAAU0iE,EACV5+B,WAAS,GAERzlD,KAAKwxL,UAAUhxL,IAAI,SAAA0nC,GAAQ,OACxBh6B,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACI98C,IAAKohC,EAASzf,GACdra,MAAO0I,GAAOoxB,SACdnhC,MAAK,GAAAxC,OAAK2jC,EAASzf,IACnBo7B,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MAAK,GAAA1P,OAAK2jC,EAASnhC,OACnB4a,SAAU0iE,QAKzB8sG,GACGjjL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAOmuD,aACpC/2D,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLspC,SAAU,CAAC7G,GAAgByzI,GAC3B7tI,UAAWnD,GACXntC,MAAM,kBACNrV,QAAQ,WACR2mD,WAAS,EACT3tB,KAAK,SACL2oB,WAAYK,GACZj/B,SAAU0iE,EACVjkC,sBAAsB,MAIxB,cAAblY,GAA4Bh6B,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAYonB,WAAYA,EAAYnoE,KAAK,QAAQ0gD,YAAaA,EAAarY,UAAW2sI,GAAyBC,gBAAiBA,IAC/I,SAAbjpJ,GAAuBh6B,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAYonB,WAAYA,EAAYnoE,KAAK,QAAQ0gD,YAAaA,EAAarY,UAAW8sI,GAAoBF,gBAAiBA,KACpI,cAAbjpJ,GAAyC,wBAAbA,GAAmD,mBAAbA,IAChEh6B,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,MACe,cAAb45B,GAAyC,wBAAbA,IAC1Bh6B,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOmC,QAAvC,oBACW,mBAAbivB,GACEh6B,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOmC,QAAvC,yBACH82K,GACG7hL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOm6K,qBAA1B,oCAECE,GACGjjL,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLyF,SAAU0iE,EACV9/B,UAAW,SAACn3C,GAAD,OAAgBc,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOm6K,qBAA1B,aAA0D7jL,EAAM1C,MAAM3D,OAAS,EAA/E,mBAElC/G,KAAK+N,MAAM2jL,cAAgBxjL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOy7K,gBAC3CrkL,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,mBACLqoC,UAAWP,GACXT,SAAUvjD,KAAK2xL,2BACf19K,MAAM,wBACN0N,SAAU0iE,IAEdn2E,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,kBACLqoC,UAAWP,GACXT,SAAUvjD,KAAK8xL,0BACf79K,MAAM,uBACN0N,SAAU0iE,KAItBn2E,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CAAOppC,KAAK,QACRqoC,UAAWiuI,GACXtqJ,SAAUA,EACV2nJ,gBAAiBA,EACjBC,iBAAkBA,EAClB3tE,WAAY99B,EACZ0rG,8BAA+BA,KAGzB,eAAb7nJ,GAA6Bh6B,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAY/gD,KAAK,QAAQ0gD,YAAaA,EAAaj7C,SAAU0iE,EAAY9/B,UAAW+sI,GAA0BH,gBAAiBA,KAEjKjjL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsnD,WACflwD,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOkpF,aAActpF,QAASgvC,GAA7C,UACAx3C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,iBACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAS2uC,EACTR,QAASiB,EACTnkC,SAAUikC,GAAW+1C,GAAetX,GANxC,wBA7KM91E,IAAMC,eA8L9BsI,GAAiD,CACnD4C,MAAO,CACHlC,QAAS,aAEbwoF,aAAc,CACV7oF,YAAa,OAEjBm7K,YAAa,CACTz4K,aAAc,IAElBukD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEf4K,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBX,WAAY,CACRpB,SAAU,GACV+B,aAAc,GACd3C,UAAW,GAEfs0C,SAAU,CACN1zC,SAAU,GACV+B,aAAc,IAElBw4K,gBAAiB,CACbv6K,SAAU,GACVqD,UAAW,SACXtB,aAAc,IAElBo3K,oBAAqB,CACjBn5K,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,GACd3C,WAAY,GAEhB+tD,YAAa,CACT/tD,UAAW,IAEfgxB,SAAU,CACNlxB,SAAU,WACVE,WAAY,IAEhBq7K,eAAgB,CACZz6K,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,cAAe,EACf3C,WAAY,GAEhBu7K,aAAc,CACV17K,MAAO9D,GAAQC,KAAKU,KACpByF,YAAa,GACbvB,SAAU,IAEd05K,UAAW,CACPt6K,UAAW,SAIJiuC,gBAAoC,CAC/CF,KAAM01C,IADKx1C,CAEZosI,ICtQGmB,eAMF,SAAAA,EAAYtlL,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA0yL,IACtB1rL,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA2zL,GAAAnlL,KAAAvN,KAAMoN,KANVulL,cAAgBpoK,GAAY,cAAeC,GAAgB1Z,UAKjC9J,EAJ1B4rL,YAAcroK,GAAY,gBAAiBC,GAAgB1Z,UAIjC9J,EAH1B4jB,qBAAuBL,GAAY,yBAA0BC,GAAgBK,cAGnD7jB,EAF1B6rL,qBAAuB,iKAEG7rL,EAU1B01D,gBAAkB,SAAC82B,GACf,IAAMI,EAAM5sF,EAAKoG,MAAMgc,KAAKkC,UAAUnC,KAAK,SAAAyqE,GAAG,OAAIA,EAAInrE,KAAO+qE,IAC7DxsF,EAAK4G,SAAS,CACVkmF,YAAaN,EACb/9E,MAAOm+E,EAAIn+E,MACXs+E,oBAAoB,KAfF/sF,EAmB1B21D,iBAAmB,WACf31D,EAAK4G,SAAS,CACVkmF,iBAAa1wF,EACbqS,WAAOrS,EACP2wF,oBAAoB,KAvBF/sF,EA2B1B4iF,UAAY,SAAC4J,GAAD,OAAmBxsF,EAAK4G,SAAS,SAAAmpD,GACzC,IAAM08B,EAAS,IAAI/pE,IAAIqtC,EAAU28B,YAEjC,OADAD,EAAO9pE,IAAI6pE,GACJ,CACHE,WAAYD,MA/BMzsF,EAmC1B+iF,WAAa,SAACyJ,GAAD,OAAmBxsF,EAAK4G,SAAS,SAAAmpD,GAC1C,IAAM08B,EAAS,IAAI/pE,IAAIqtC,EAAU28B,YAEjC,OADAD,EAAOE,OAAOH,GACP,CACHE,WAAYD,MAvCMzsF,EAmD1B8rL,iBAAmB,WACf,IAAIrlG,EAAQ,KACZ,GAAIzmF,EAAK+rL,4BAIL,KAAAhtF,EACuB/3F,GAAO6lF,iBAAvB5lF,EADP83F,EACO93F,KAAMsE,EADbwzF,EACaxzF,OACbk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKoG,MAAM+uC,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAKoG,MAAMlK,kBANxE,KAAAghI,EACVl2H,GAAOk5F,eAAvBj5F,EAD0Bi2H,EAC1Bj2H,KAAMsE,EADoB2xH,EACpB3xH,OACbk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKoG,MAAM+uC,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAKoG,MAAMlK,cAAc/C,QAAQoS,EAAQ2tF,kBAAoBl5F,EAAKk5F,mBAMpKl5F,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IA7DFzmF,EAgE1BgsL,kBAAoBlyK,aAAW,SAACyK,GAAD,OAAsBA,EAAKre,OAAO,SAAA0mF,GAAG,OAAIA,EAAIpoE,SAAWxkB,EAAK2rL,kBAhElE3rL,EAqE1BisL,gBAAkBnyK,aAAW,SAACyK,GAAD,OAAsBA,EAAKre,OAAO,SAAA0mF,GAAG,OAAIA,EAAIpoE,SAAWxkB,EAAK4rL,aAAeh/F,EAAIpoE,SAAWxkB,EAAK4jB,yBArEnG5jB,EAmF1BksL,iBAAmB,SAACt+J,GAChB,IAAMu/D,EAAYv/D,EAAM20B,OAAO6qC,MAAM,GACrC,GAAID,GAAgC,oBAAnBA,EAAUv8D,KAA4B,CACnD,IAAM28D,EAAyB,CAC3BF,KAAMF,EACN1+E,MAAO,eACP+V,OAAQxkB,EAAK2rL,eAEjB3rL,EAAK4iF,UAAU,eACf5iF,EAAKoG,MAAM+lL,qBAAqBnsL,EAAKoG,MAAMgc,KAAKX,GAAI8rE,GAC/CrtF,KAAK,kBAAMF,EAAK+iF,WAAW,gBAAgB,kBAAM/iF,EAAK+iF,WAAW,sBAEtE/iF,EAAKoG,MAAM1O,gBAAgB,iDAAkD,YA/F3DsI,EAmG1BosL,eAAiB,SAACx+J,GACd,IAAMu/D,EAAav/D,EAAM20B,OAAe6qC,MAAM,GAC1CD,GAAgC,oBAAnBA,EAAUv8D,KACvB5wB,EAAK4G,SAAS,CACVymF,KAAMF,EACN3oE,OAAQxkB,EAAK4rL,YACbp3H,YAAY,EACZqZ,SAAUsf,EAAUj4E,OAGxBlV,EAAKoG,MAAM1O,gBAAgB,iDAAkD,YA7G3DsI,EAiH1BstF,aAAe,SAAC7+E,EAAgBqW,EAAsBooF,GAClD,GAAIltG,EAAK+G,MAAMsmF,OAASrtF,EAAK+G,MAAMslL,UAAW,CAC1CrsL,EAAK4iF,UAAL,kBACA,IAAI0pG,EAAa79K,GAAgBzO,EAAK+G,MAAMsmF,KAAKn4E,KACjDlV,EAAKoG,MAAM+lL,qBAAqBnsL,EAAKoG,MAAMgc,KAAKX,GAAI,CAChD4rE,KAAMrtF,EAAK+G,MAAMsmF,KACjB5+E,MAAO69K,EACP9nK,OAAQ0oF,EAA2BltG,EAAK4jB,qBAAuB5jB,EAAK4rL,YACpE9mK,gBACD5kB,KAAK,kBAAMF,EAAK+iF,WAAL,mBAAmC,kBAAM/iF,EAAK+iF,WAAL,wBACpD,CACH/iF,EAAK4iF,UAAL,GAAArlF,OAAkByC,EAAK+G,MAAMslL,YAC7B,IAAIz/F,EAAM5sF,EAAKoG,MAAMgc,KAAKkC,UAAUnC,KAAK,SAAAyqE,GAAG,OAAIA,EAAInrE,KAAOzhB,EAAK+G,MAAMslL,YACtEz/F,EAAIn+E,MAAUA,GAAgBm+E,EAAIn+E,MAClCm+E,EAAI9nE,YAAcA,EAClB8nE,EAAIpoE,OAAS0oF,EAA2BltG,EAAK4jB,qBAAuB5jB,EAAK4rL,YACzE5rL,EAAKoG,MAAM+lL,qBAAqBnsL,EAAKoG,MAAMgc,KAAKX,GAAImrE,GAC/C1sF,KAAK,kBAAMF,EAAK+iF,WAAL,GAAAxlF,OAAmBqvF,EAAInrE,MAAO,kBAAMzhB,EAAK+iF,WAAL,GAAAxlF,OAAmBqvF,EAAInrE,SAlIzDzhB,EAsI1BytF,aAAe,SAAChsE,GACZ,IAAMmrE,EAAM5sF,EAAKoG,MAAMgc,KAAKkC,UAAUnC,KAAK,SAAAyqE,GAAG,OAAIA,EAAInrE,KAAOA,IACzDyrF,GAA2B,EAC3BtgB,EAAIpoE,SAAQ0oF,EAA2BtgB,EAAIpoE,SAAWxkB,EAAK4jB,sBAC/D5jB,EAAK4G,SAAS,CACV6H,MAAOm+E,EAAIn+E,MACXqW,YAAa8nE,EAAI9nE,YACjBynK,uBAAwBr/E,EACxB14C,YAAY,EACZ63H,UAAW5qK,EACXosD,SAAU+e,EAAI/e,YAhJI7tE,EAoJ1BovG,WAAa,WACTpvG,EAAK4G,SAAS,CACV4tD,YAAY,EACZ63H,eAAWjwL,EACXqS,WAAOrS,EACP0oB,iBAAa1oB,EACbixF,UAAMjxF,EACNooB,YAAQpoB,EACRyxE,cAAUzxE,KA5JQ4D,EAgK1B2tF,eAAiB,SAAClsE,GACdzhB,EAAK4iF,UAAL,GAAArlF,OAAkBkkB,IAClB,IAAIosD,EAAW7tE,EAAK+G,MAAM0H,OAAS,GACnCzO,EAAKoG,MAAMunF,eAAe3tF,EAAKoG,MAAMgc,KAAKX,GAAIA,EAAIosD,GAC7C3tE,KAAK,kBAAMF,EAAK+iF,WAAL,GAAAxlF,OAAmByC,EAAK+G,MAAMslL,aAAc,kBAAMrsL,EAAK+iF,WAAL,GAAAxlF,OAAmByC,EAAK+G,MAAMslL,cAChGrsL,EAAK21D,oBAlKL31D,EAAK+G,MAAQ,CACTgmF,oBAAoB,EACpBv4B,YAAY,EACZk4B,WAAY,IAAIhqE,KANE1iB,wEAwKjB,IAAAQ,EAAAxH,KACL,OACIkO,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,aACA/K,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOunD,MACfnwD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,2DACAt9C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,6EACAt9C,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO08K,SAC1BtlL,EAAAhP,EAAAiP,cAAA,QACIC,MAAQpO,KAAKoN,MAAMkjB,YAAexZ,GAAOpC,UAAOtR,EAChDsT,QAAU1W,KAAKoN,MAAMkjB,YAAetwB,KAAK8yL,sBAAmB1vL,GAFhE,sCAMI8K,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACgBvjB,MAAOzV,KAAK6yL,qBACZz9J,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,cAIlDjL,EAAAhP,EAAAiP,cAAC0gL,GAAD,CACIjyH,YAAa58D,KAAKoN,MAAMwvD,YACxBw3C,iCAAkCp0G,KAAKoN,MAAMgnG,iCAC7Ck6E,qBAAsBtuL,KAAKoN,MAAMkhL,uBAErCpgL,EAAAhP,EAAAiP,cAAC2gL,GAAD,CACI/5K,QAAS/U,KAAKoN,MAAM2hL,4BACpBX,aAAcpuL,KAAKoN,MAAM4hL,wBAGjC9gL,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY02D,cAAY,EAAClmG,MAAO0I,GAAO28K,YAAvC,gBAGAvlL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY02D,cAAY,EAAClmG,MAAO0I,GAAO48K,eAAvC,6CAIC1zL,KAAK2zL,YAAYnzL,IAAI,SAAAozF,GAAG,OACrB1lF,EAAAhP,EAAAiP,cAAC2oG,GAAD,CACIhwG,IAAK8sF,EAAInrE,GACT3X,SAAU8iF,EACV/uC,QAASr9C,EAAKuG,MAAM2lF,WAAW5mE,IAAI8mE,EAAInrE,IACvCosF,WAAW,EACXl0B,SAAUn5E,EAAKk1D,gBACfi/B,YAAan0F,EAAK4F,MAAMuuF,gBAGH,IAA5B37F,KAAK2zL,YAAYpzL,QACd2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,MAChB7O,EAAAhP,EAAAiP,cAAC+jF,GAAAhzF,EAAD,CAAkBizF,OAAQnyF,KAAK+N,MAAM2lF,WAAW5mE,IAAI,eAAgBslE,sBAAoB,EAACx6D,KAAK,QAC1F1pB,EAAAhP,EAAAiP,cAACgnF,GAAD,CACI1sE,GAAG,qBACH8oE,WAAW,kBACX76E,QAAS1W,KAAKkzL,iBACd9kL,MAAO0I,GAAO4/F,aACd3/F,MAAM,UACN4K,SAAU3hB,KAAKoN,MAAMuuF,aAAe37F,KAAKoN,MAAMwvD,aAE/C1uD,EAAAhP,EAAAiP,cAAA,4BAIZD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY02D,cAAY,EAAClmG,MAAO0I,GAAO6/F,kBAAmBrwB,MAAM,UAAhE,oCAKRp4E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY02D,cAAY,EAAClmG,MAAO0I,GAAO88K,iBAAvC,mBAGA1lL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY02D,cAAY,EAAClmG,MAAO0I,GAAO48K,eAAvC,4EAGC1zL,KAAKsjJ,UAAU9iJ,IAAI,SAAAozF,GAAG,OACnB1lF,EAAAhP,EAAAiP,cAAC2oG,GAAD,CACIhwG,IAAK8sF,EAAInrE,GACT3X,SAAU8iF,EACV/uC,QAASr9C,EAAKuG,MAAM2lF,WAAW5mE,IAAI8mE,EAAInrE,IACvCosF,WAAW,EACXriB,OAAQhrF,EAAKitF,aACb9T,SAAUn5E,EAAKk1D,gBACfi/B,YAAan0F,EAAK4F,MAAMuuF,gBAGhCztF,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,MAChB7O,EAAAhP,EAAAiP,cAAC+jF,GAAAhzF,EAAD,CAAkBizF,OAAQnyF,KAAK+N,MAAM2lF,WAAW5mE,IAAI,kBAAmBslE,sBAAoB,EAACx6D,KAAK,QAC7F1pB,EAAAhP,EAAAiP,cAACgnF,GAAD,CACI1sE,GAAG,mBACH8oE,WAAW,kBACX76E,QAAS1W,KAAKozL,eACdhlL,MAAO0I,GAAO4/F,aACd3/F,MAAM,UACN4K,SAAU3hB,KAAKoN,MAAMuuF,aAAe37F,KAAKoN,MAAMwvD,aAE/C1uD,EAAAhP,EAAAiP,cAAA,4BAIZD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY02D,cAAY,EAAClmG,MAAO0I,GAAO6/F,kBAAmBrwB,MAAM,UAAhE,mCAGAp4E,EAAAhP,EAAAiP,cAACyoG,GAAD,CACIt4D,iBAAkBt+C,KAAKoN,MAAMkxC,iBAC7B3+C,KAAMK,KAAK+N,MAAMytD,WACjBqZ,SAAU70E,KAAK+N,MAAM8mE,SAAW70E,KAAK+N,MAAM8mE,SAAW,OACtDw/B,cAAer0G,KAAK62G,gBACpBzC,iCAAkCp0G,KAAKoN,MAAMgnG,iCAC7CvhB,OAAQ7yF,KAAKs0F,aACb5uC,SAAU1lD,KAAKo2G,aAElBp2G,KAAK+N,MAAM+lF,aACR5lF,EAAAhP,EAAAiP,cAAConF,GAAD,CACI51F,KAAMK,KAAK+N,MAAMgmF,mBACjBlf,SAAU70E,KAAK+N,MAAM0H,MACrBi8E,WAAY1xF,KAAK+N,MAAM+lF,YACvB3tC,OAAQnmD,KAAK20F,eACbjvC,SAAU1lD,KAAK28D,+DApPnC,OAAO38D,KAAKoN,MAAMwsE,iBAAmB55E,KAAKoN,MAAMwsE,gBAAgBnxD,uDAIhE,OAAOzoB,KAAKoN,MAAMwsE,iBAAmB55E,KAAKoN,MAAMwsE,gBAAgB3B,gCAAkC3oC,GAAiCK,+CAkBnI,OAAO3vC,KAAKgzL,kBAAkBhzL,KAAKoN,MAAMgc,KAAKkC,6CAK9C,OAAOtrB,KAAKizL,gBAAgBjzL,KAAKoN,MAAMgc,KAAKkC,mDAI5C,MAAO,CACH7V,MAAOzV,KAAK+N,MAAM0H,MAClBqW,YAAa9rB,KAAK+N,MAAM+d,YACxBooF,yBAA0Bl0G,KAAK+N,MAAMwlL,+BApFrBhlL,IAAMC,eA+S5BsI,GAAiD,CACnDiG,KAAM,CACF40E,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,SACbna,YAAa,QACb9oC,UAAW,GACX3F,OAAQ,GACRyF,SAAU,YAEdy8K,WAAY,CACR18K,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd87K,gBAAiB,CACb78K,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVZ,UAAW,IAEfw8K,cAAe,CACX38K,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEd4B,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,GACZP,UAAW,IAEfw/F,aAAc,CACVx/F,UAAW,GACXmC,WAAY,MACZf,UAAW,oBAEfW,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBwkD,KAAM,CACFxkD,aAAc,IAElB2xC,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExB4/K,QAAS,CACL17K,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,MAExBc,KAAM,CACFqC,MAAO9D,GAAQiB,KAAKQ,KACpBmH,OAAO,YAIAugF,eAAWs2F,ICnYpB57K,GAA2C,CAC7C7C,MAAO,CACH8C,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVJ,WAAY,WAILm8K,GAlBQ,SAACzmL,GACpB,OACIc,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO7C,OAAQ7G,EAAM0mL,WAClC5lL,EAAAhP,EAAAiP,cAAC81C,GAAA,EAAD,CAAQltC,MAAM,UAAUgtC,QAAS32C,EAAM22C,QAASR,SAAUn2C,EAAMm2C,SAAU5hC,SAAUvU,EAAMmxD,UAC1FrwD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO7C,OAAQ7G,EAAM2mL,cCaxCC,GAAe,SAACjtL,EAA2B65E,EAAiBqzG,GAC9D,YAAc7wL,IAAV2D,EACO,IAAMA,EAAM4xB,QAAQ,GAGX,WAAZioD,GAAsC,cAAdqzG,EACjB,UAGA,MAKbn9K,GAAiD,CACnDo9K,WAAY,CACRt4K,gBAAiB3I,GAAQC,KAAKa,YAC9BgD,MAAO9D,GAAQC,KAAKS,WAExBwgL,SAAU,CACNp9K,MAAO9D,GAAQC,KAAKY,UAExBiyE,KAAK,CACDrtE,aAAc,QAElB07K,SAAS,CACL17K,aAAc,EACdU,MAAO,SAIAi7K,GAvDgB,SAACjnL,GAAiB,IACrCknL,EAAmBlnL,EAAnBknL,eACFC,EAAuC,UAA3BD,EAAe1zG,SAAkD,WAA3B0zG,EAAe1zG,QAAuB9pE,GAAOq9K,SAAWr9K,GAAOo9K,WACvH,OACIhmL,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAMw1L,GAAY/jL,KAAM,SACnC8jL,EAAep4K,MAEpBhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAMw1L,GAAY/jL,KAAM,SACnC8jL,EAAev1J,eAEpB7wB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAMw1L,EAAaz9K,GAAOivE,MAAOO,MAAM,QAAQ91E,KAAM,SAChEwjL,GAAaM,EAAe52K,aAAc42K,EAAe1zG,QAAS,iBAEvE1yE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAMw1L,EAAaz9K,GAAOivE,MAAOO,MAAM,QAAQ91E,KAAM,SAChEwjL,GAAaM,EAAe12K,aAAc02K,EAAe1zG,QAAS,iBAEvE1yE,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAMw1L,EAAaz9K,GAAOivE,MAAOO,MAAM,QAAQ91E,KAAM,SAChEwjL,GAAaM,EAAeztH,UAAWytH,EAAe1zG,QAAS,gBCJ1E4zG,eACF,SAAAA,EAAYpnL,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAw0L,IACtBxtL,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAy1L,GAAAjnL,KAAAvN,KAAMoN,KAaVd,KAAOwU,aAAW,SAAC2zK,EAAmChxE,GAClD,IAAIixE,EAAwBD,EAAgBnrL,QACtC25E,EAAYwgC,EAAct6F,KAAK,SAAC+5D,GAAD,OAAgC,IAAlBA,EAAIC,YAKvD,OAJIF,GACAyxG,EAAsBpoL,KAAKiqB,GAAc0sD,EAAUgxG,UAAmC,SAAxBhxG,EAAUE,YAGrEuxG,IArBe1tL,EAwB1B2tL,gBAAkB,SAAC7tL,GACf,IAAM8tL,EAA4B5tL,EAAKoG,MAAMqnL,gBAAgBnrL,QAC7D,GAAS,WAANxC,GAEC,GAAsB,IADN8tL,EAA0Bp0L,IAAI,SAAA+kC,GAAC,OAAEA,EAAE7nB,eAAcxQ,OAAO,SAAAq4B,GAAC,OAAQ,IAANA,IAChEhlC,OAAc,YACvB,GAAS,WAANuG,EAAe,CAEpB,GAAsB,IADN8tL,EAA0Bp0L,IAAI,SAAA+kC,GAAC,OAAEA,EAAE3nB,eAAc1Q,OAAO,SAAAq4B,GAAC,OAAQ,IAANA,IAChEhlC,OAAc,YACvB,GAAW,cAARuG,EAAoB,CAEzB,GAAyB,IADN8tL,EAA0Bp0L,IAAI,SAAA+kC,GAAC,OAAEA,EAAEshC,YAAW35D,OAAO,SAAAq4B,GAAC,OAAQ,IAANA,IAC7DhlC,OAAc,OAEhCyG,EAAK4G,SAAS,SAAAmpD,GACV,IAAMysD,EAAmBzsD,EAAU0sD,cAAcn6G,QAejD,OAdAk6G,EAAiBx6F,QAAQ,SAAAk6D,GACjBA,EAAIz6D,KAAO3hB,GACW,IAAlBo8E,EAAIC,WAAyC,SAAlBD,EAAIC,WAC/BD,EAAIC,UAAY,MAChByxG,EAA0BtoL,KAAKiqB,GAAc2sD,EAAI+wG,WAAW,KACnC,QAAlB/wG,EAAIC,YACXD,EAAIC,UAAY,OAChByxG,EAA0BtoL,KAAKiqB,GAAc2sD,EAAI+wG,WAAW,KAGhE/wG,EAAIC,WAAY,IAIjB,CACHsgC,cAAeD,EACfkxE,sBAAuBE,MAnD/B5tL,EAAK+G,MAAQ,CACT01G,cAAe,CACX,CAAEh7F,GAAI,WAAY06D,UAAW,MAAOlvE,MAAO,WAAYggL,UAAW,OAAQY,SAAS,EAAO7nE,YAAY,GACtG,CAAEvkG,GAAI,WAAY06D,WAAW,EAAOlvE,MAAO,WAAYggL,UAAW,gBAAiBY,SAAS,EAAO7nE,YAAY,GAC/G,CAAEvkG,GAAI,SAAU06D,WAAW,EAAOlvE,MAAO,UAAWggL,UAAW,eAAgBY,SAAS,EAAM7nE,YAAY,GAC1G,CAAEvkG,GAAI,SAAU06D,WAAW,EAAOlvE,MAAO,UAAWggL,UAAW,eAAgBY,SAAS,EAAM7nE,YAAY,GAC1G,CAAEvkG,GAAI,YAAa06D,WAAW,EAAOlvE,MAAO,kBAAmBggL,UAAW,YAAaY,SAAS,EAAM7nE,YAAY,KATpGhmH,wEA2DjB,IAAAQ,EAAAxH,KACC00L,EAAwB10L,KAAKsM,KAAKtM,KAAKoN,MAAMqnL,gBAAiBz0L,KAAK+N,MAAM01G,eAC/E,OACIv1G,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOjsD,MAAO0I,GAAOg+K,aAActkL,KAAM,SACrCtC,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACKv6D,KAAK+N,MAAM01G,cAAcjjH,IAAI,SAAA8jH,GAAM,OAChCp2G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CACI1zD,IAAKw9G,EAAO77F,GACZ/R,QAAS,kBAAMlP,EAAKmtL,gBAAgBrwE,EAAO77F,KAC3Cu9D,cAAes+B,EAAOnhC,UACtB/0E,MAAOk2G,EAAO0I,WAAal2G,GAAOi+K,eAAiBj+K,GAAOivE,KAC1Dv1E,KAAM,SAENtC,EAAAhP,EAAAiP,cAACg4E,GAAA,EAAD,CACI/3E,MAAO0I,GAAOynG,QACdrnC,QAA6B,IAArBotC,EAAOnhC,UACfA,WAAgC,IAArBmhC,EAAOnhC,eAAsB//E,EAAYkhH,EAAOnhC,WAE1DmhC,EAAOrwG,YAM5B/F,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKi6H,EAAsBl0L,IAAI,SAAA6jD,GAAG,OAC1Bn2C,EAAAhP,EAAAiP,cAAC6mL,GAAD,CAAwBV,eAAgBjwI,EAAKv9C,IAAKu9C,EAAI57B,OAEzDzoB,KAAKoN,MAAM6nL,uBAAuBz0L,IAAI,SAAA6jD,GAAG,OACtCn2C,EAAAhP,EAAAiP,cAAC6mL,GAAD,CAAwBV,eAAgBjwI,EAAKv9C,IAAKu9C,EAAI57B,gBA1FvCla,IAAMC,eAkGvCsI,GAAiD,CACnDynG,QAAS,CACLzmG,SAAU,GACVgvE,WAAY,SACZtvE,QAAS,GAEbs9K,aAAc,CACV/9K,MAAO9D,GAAQC,KAAKU,MAExBmhL,eAAgB,CACZ1mL,UAAW,QACXqK,aAAc,OAElBqtE,KAAK,CACDrtE,aAAc,QAKP87K,MCxFTU,eACF,SAAAA,EAAY9nL,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAk1L,IACtBluL,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAm2L,GAAA3nL,KAAAvN,KAAMoN,KAMV0mC,kBAAoB9sC,EAAKoG,MAAMgc,KAAK4B,cAAgBob,GAAe,sBAAuB5b,GAAgBQ,aAPhFhkB,EAQ1Bw6D,cAAgBzrB,KAA0Bv1C,IAAI,SAAA6J,GAAC,OAAIA,EAAEoe,KAR3BzhB,EAS1By6D,aAAexrB,GAAuBjvC,EAAK8sC,mBAAmBtzC,IAAI,SAAA6J,GAAC,OAAIA,EAAEoe,KAT/CzhB,EAW1BmuL,gBAAkB5qK,GAAY,UAAWC,GAAgBwiB,cAX/BhmC,EAY1B+nF,QAAU3+C,KAZgBppC,EAa1BmrF,OAAQ,EAbkBnrF,EAe1BouL,aAAet0K,aAAW,SAAC2zK,GACvB,OAAOA,EAAgBvnL,OAAO,SAAA7C,GAAC,MAAkB,UAAdA,EAAEu2E,SAAqC,WAAdv2E,EAAEu2E,YAhBxC55E,EAmB1BquL,eAAiBv0K,aAAW,SAAC2zK,GACzB,OAAOA,EAAgBvnL,OAAO,SAAA7C,GAAC,MAAkB,UAAdA,EAAEu2E,UAAqBt0E,KAAKiqB,GAAc,QAAQ,MApB/DvvB,EAkC1BsuL,uBAAyB,SAAC1gK,GACtB5tB,EAAK4G,SAAS,CAAE2nL,iBAAkB3gK,EAAM20B,OAAOxF,SAAW/8C,EAAKwuL,qBAnCzCxuL,EAsC1BwuL,mBAAqB,WACjB,IAAMC,EAAUzuL,EAAK0uL,8BACrB1uL,EAAKoG,MAAM6zD,eAAew0H,GAC1BzuL,EAAK2uL,YAzCiB3uL,EA4C1B0uL,4BAA8B,WAE1B,IAAMr3I,EAAWr3C,EAAKoG,MAAMwoL,aACtBjzH,EAAkB37D,EAAKoG,MAAMgc,KAAKw5C,YAAYz5C,KAAK,SAAA9e,GAAC,OAAIA,EAAEw4D,WAAaC,GAAeC,UACtFC,EAAeL,EAAkBA,EAAgBl6C,QAAKrlB,EACtD6/D,EAAaD,EAAeh8D,EAAKoG,MAAMyb,MAAMM,KAAK,SAAA9e,GAAC,OAAIA,EAAEoe,KAAOu6C,SAAiB5/D,EAEjFggE,EAAW52D,QAAQ6xC,EAASw3I,YAAc7uL,EAAKoG,MAAMyb,MAAMM,KAAK,SAAA9qB,GAAC,OAAIA,EAAEoqB,KAAO41B,EAASw3I,kBAAczyL,EAErGs/D,EAAaD,GAAkBz7D,EAAKoG,MAAMyb,OAC1Cw6C,EAA8Br8D,EAAKoG,MAAMgc,KAAKG,sBAAwBviB,EAAKoG,MAAMgc,KAAKG,qBAAqBwW,SAASre,GAAuB2D,0BAE3I+D,EAAiB,CACnBX,GAAIzhB,EAAKoG,MAAMgc,KAAKX,GACpB/I,cAAe1Y,EAAKoG,MAAMgc,KAAK1J,cAAgB1Y,EAAKoG,MAAMgc,KAAK1J,cAAc2c,SAAW,GACxFkR,mBAAoBuE,GAAiB9qC,EAAKoG,MAAMgc,KAAKgC,kBACrD2N,eAAgB/xB,EAAKoG,MAAMgc,KAAKgC,iBAChC2V,kBAAmBp0B,OAAO0xC,EAASpd,qBACnCC,sBAAuBv0B,OAAO0xC,EAASxc,yBACvCC,cAAeuc,EAASvc,cAAc50B,OAAO,SAAA7C,GAAC,OAAIA,EAAE+5B,SAAQ5jC,IAAI,SAAA8iE,GAC5D,MAAO,CACHvkC,cAAeukC,EAAaplC,gBAC5BgC,YAAaojC,EAAanlC,cAC1BolC,2BAA4BD,EAAavhC,6BACzCqC,OAAQk/B,EAAal/B,OACrBo/B,UAAWF,EAAaE,aAGhCt7B,SAAUv7B,OAAO3F,EAAKoG,MAAMgc,KAAK6U,YACjCkG,MAAOn9B,EAAKoG,MAAMgc,KAAK+a,MAAMj3B,OAAO,SAAA7C,GAAC,OAAiB,OAAbA,EAAE+5B,SAAiB5jC,IAAI,SAAAw9B,GAC5D,MAAO,CACHe,cAAef,EAAKE,gBACpBgC,YAAalC,EAAKG,cAClBZ,OAAQS,EAAKT,OACbC,OAAQQ,EAAKR,OACb4G,OAAQpG,EAAKoG,OACbq/B,cAAezlC,EAAKylC,cACpBn/B,WAAYtG,EAAKsG,WACjBo/B,kBAAmB1lC,EAAK0lC,kBACxBr/B,aAAcrG,EAAKqG,aACnBs/B,oBAAqB3lC,EAAK2lC,uBAGlCC,YAAaC,GAAoB78D,EAAKoG,MAAMgc,KAAM65C,GAClDa,qBAAsBV,GAAYV,EAAWU,GAC7CW,eAAgB/8D,EAAKoG,MAAMgc,KAAK26C,eAChCV,4BAA6BA,GA8BjC,MALoC,CAChCt5C,UAvBc/iB,EAAKoG,MAAM+a,cAAcC,KAAK5nB,IAAI,SAAA6nB,GAChD,MAAO,CACHI,GAAIJ,EAAII,GACRypC,YAAa7pC,EAAI6pC,YAAc7pC,EAAI6pC,YAAY71B,cAAWj5B,EAC1D4pC,aAAchmC,EAAK+G,MAAMwnL,iBAAmBvuL,EAAKmuL,gBAAkBnuL,EAAKoG,MAAMo+J,sBAC9Ex+I,WAAY3E,EAAI2E,WAChB6f,OAAQxkB,EAAI8pC,SACZqS,wBAAyBn8C,EAAIm8C,wBAC7BG,aAAct8C,EAAIs8C,aAClB/6C,WAAYvB,EAAIuB,WAAWppB,IAAI,SAAAqpB,GAC3B,MAAO,CACHpB,GAAIoB,EAAUpB,GACdypC,YAAaroC,EAAUqoC,YAAcroC,EAAUqoC,YAAY71B,cAAWj5B,EACtE6pC,cAAes0B,GAAuB13C,EAAU4Q,gBAAiBzzB,EAAKw6D,cAAex6D,EAAKy6D,cAC1Fz0C,WAAYnD,EAAUmD,WACtB6f,OAAQhjB,EAAUsoC,SAClBqS,wBAAyB36C,EAAU26C,8BAQ/C37C,MAAO,CAACO,KArHUpiB,EA2H1B2uL,SAAW,kBAAM3uL,EAAKmrF,OAAQ,GA3HJnrF,EA4H1B8uL,YAAc,kBAAM9uL,EAAKmrF,OAAQ,GAzH7BnrF,EAAK+G,MAAQ,CACTwnL,kBAAkB,GAJAvuL,mFAwBtBpH,WAAWI,KAAKw1L,mBAAoB,gDAGrB1+H,GACX92D,KAAKmyF,OAASr7B,EAAU8+H,eAAiB51L,KAAKoN,MAAMwoL,eACpD51L,KAAK81L,cACLl2L,WAAWI,KAAKw1L,mBAAoB,uCAiGxC,IAAMx+G,EAAWh3E,KAAKoN,MAAMgc,KAAKjJ,gBAC3B41K,EAAU/1L,KAAKoN,MAAMgc,KAAKgC,iBAAmBprB,KAAK+uF,QAAQ/uF,KAAKoN,MAAMgc,KAAKgC,kBAAkBrkB,MAAQ,GACpGivL,EAAeh2L,KAAKoN,MAAMo+J,sBAAwBxrK,KAAK+uF,QAAQ/uF,KAAKoN,MAAMo+J,uBAAuBzkK,MAAQ,GACzGkvL,EAAgBj2L,KAAKoN,MAAMo+J,wBAA0BxrK,KAAKm1L,gBAC1De,EAAYl2L,KAAKo1L,aAAap1L,KAAKoN,MAAMqnL,iBACzC0B,EAAcn2L,KAAKq1L,eAAer1L,KAAKoN,MAAMqnL,iBACnD,OACIvmL,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOrB,OAAvC,wBACAvH,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOnY,SACfuP,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,wCACNqkD,SAAS,sIACTpM,UAAW,KAGnBx/C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOkgE,UACf9oE,EAAAhP,EAAAiP,cAAA,YAAQ4nL,EAAR,UAAwB/+G,IAE3Bi/G,GACG/nL,EAAAhP,EAAAiP,cAACioL,GAAD,CACItC,UAAW,8BAAgCkC,EAAa1jK,cAAgB,IACxEyhK,WAAY,uBACZhwI,QAAS/jD,KAAK+N,MAAMwnL,iBACpBhyI,SAAUvjD,KAAKs1L,uBACf/2H,QAASv+D,KAAKoN,MAAMwvD,cAAyC,IAA1B58D,KAAKoN,MAAMi3E,aAEtDn2E,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAOwyE,OACjBp7E,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOe,YAAvC,eAAgE7X,KAAK+N,MAAMwnL,iBAAmB,UAAYS,EAA1G,KACA9nL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOu/K,WACfnoL,EAAAhP,EAAAiP,cAACmoL,GAAD,CACI7B,gBAAiByB,EACjBjB,uBAAwBkB,MAIpCjoL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAKwP,MAAO0I,GAAOy/K,UAAvC,mFApKwBhoL,IAAMC,eA0KxCsI,GAAiD,CACnDy/K,SAAU,CACNr/K,UAAW,GACXH,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,IAEdnZ,QAAS,CACLuY,UAAW,IAEf8/D,SAAU,CACN9/D,UAAW,GACXH,MAAO9D,GAAQC,KAAKU,KACpBmE,WAAY,OACZD,SAAU,IAEdu+K,UAAW,CACPtvG,UAAW,QAEfuC,MAAO,CACHpyE,UAAW,IAEfW,WAAY,CACRJ,WAAY,GACZ4B,WAAY,GACZtC,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,GACVC,WAAY,KAEhBtC,MAAO,CACHyB,UAAW,GACXH,MAAO9D,GAAQC,KAAKU,KACpBkE,SAAU,KAIlB,SAAS0+K,GAA0Br1H,EAAqCp3C,EAAuBqB,GAC3F,IAAM2jE,EAAU3+C,KA0ChB,OAzCwB+wB,EAAiB3gE,IAAI,SAAAgoK,GACzC,IAAM79I,EAAWZ,EAAUZ,KAAK,SAAA9e,GAAC,OAAIA,EAAEoe,KAAO+/I,EAAK5hG,aAC7C7nC,EAAgBpU,EAAS6kD,eAAermD,KAAK,SAAA9e,GAAC,OAAIA,EAAE+gB,mBAAqBA,KAAsB/gB,EAAE6zB,kBAEvG,IAAKa,EACD,MAAO,CACHtW,GAAE,GAAAlkB,OAAKomB,EAASlC,GAAd,KAAAlkB,OAAoBikK,EAAKn/I,QAC3Bu3D,QAAS,QACT1kE,KAAMyO,EAASiwC,SACf77B,cAAe,QAIvB,IAAI03J,EAAsB1nG,EAAQhwD,EAAcb,iBAAiBp3B,IAQjE,MAPI,eAAiBioF,EAAQ3jE,GAAkBtkB,IAC3C2vL,EAAsB,SAEjB,cAAgB1nG,EAAQ3jE,GAAkBtkB,MAC/C2vL,EAAsB,cAGrBjuB,EAAKzhG,QASH,CACHt+C,GAAE,GAAAlkB,OAAKomB,EAASlC,GAAd,KAAAlkB,OAAoBikK,EAAKn/I,QAC3Bu3D,QAAS,QACT1kE,KAAMyO,EAASiwC,SACf77B,cAAe03J,EACf/4K,aAAc8qJ,EAAK9qJ,aACnBE,aAAc4qJ,EAAK5qJ,aACnBipD,UAAW2hG,EAAK3hG,WAfT,CACHp+C,GAAE,GAAAlkB,OAAKomB,EAASlC,GAAd,KAAAlkB,OAAoBikK,EAAKn/I,QAC3Bu3D,QAAS,SACT1kE,KAAMyO,EAASiwC,SACf77B,cAAe03J,KA6ChB35I,mBA3Bf,SAAyB/uC,EAAmBi6C,GACxC,IAAM4tI,EAAe3hC,aAAcjsG,EAASiG,SAAvBgmG,CAAiClmJ,GAChDqb,EAAOrb,EAAMqb,KAAKhB,KAAKe,KAAK,SAAA9e,GAAC,OAAIA,EAAEoe,KAAOu/B,EAAS3+B,SACnDR,EAAQ9a,EAAMqb,KAAKhB,KACzB,MAAO,CACHqsK,gBAAiB+B,GAA0BzoL,EAAMw5H,gBAAgBn/G,KAAMra,EAAM4c,SAASvC,KAAMgB,EAAKgC,kBACjGogJ,sBAAuBz9J,EAAMmhB,WAAWnO,QAAQ0jD,eAChDt8C,cAAepa,EAAM4c,SACrB9B,MAAOA,EACPO,KAAMA,EACNwsK,iBAIR,SAA4Bv2L,GACxB,MAAO,CACH4hE,eAAgB,SAACC,GAAD,OAAwB7hE,EAAS4hE,GAAeC,OAWzDpkB,CAA6Co4I,ICxTtDwB,GAAuBnoL,IAAMizC,KAAK,SAACp0C,GACrC,IAAM2hF,EAAU3+C,KAChB,OACIliC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM00B,cAAc,GAAGb,qBAAuB7zB,EAAM00B,cAActhC,IAAI,SAAC8iE,EAAcx2D,GAAU,IACpFoxB,EAAmColC,EAAnCplC,gBAAiBC,EAAkBmlC,EAAlBnlC,cACnBlqB,EAAQiqB,EAAkB6wD,EAAQ7wD,GAAiBp3B,IAAMq3B,EAAgB4wD,EAAQ5wD,GAAep3B,MAAQ,GACxGs9G,EAAUj3G,EAAM00B,cAAcvhC,OAAS,EACvCwG,EAAQu8D,EAAal/B,OAASz3B,OAAO22D,EAAal/B,QAAU,EAC5D48G,EAAW19E,EAAaE,UAAY,IAAM72D,OAAO22D,EAAaE,WAAa,MACjF,OACIt1D,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUzzD,IAAKw8D,EAAa76C,IACxBva,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,QAAUvtG,GAAOivE,MAC1D73E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0tG,WAAYvwG,IAEpC/F,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,QAAUvtG,GAAOivE,MACzD34E,EAAMupL,YAAczoL,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0tG,WAApB,KACrBt2G,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0tG,WAAYp3G,EAAMupL,WAAa5vL,EAAM4xB,QAAQ,GAAK5xB,IACpEqG,EAAMupL,YAAczoL,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0tG,WAApB,OAExBp3G,EAAMupL,YACJzoL,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,QAAUvtG,GAAOivE,MAC1D73E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO0tG,WAAYw8B,UAU1DlqI,GAAiD,CACnDutG,QAAS,CACL9mG,aAAc,EACdlP,UAAW,UAEf03E,KAAM,CACF13E,UAAW,UAEfm2G,UAAW,CACPztG,MAAO9D,GAAQC,KAAKY,SACpB4D,WAAY,WAULolC,mBANf,SAAyB/uC,EAAmBi6C,GACxC,MAAO,CACHlmB,cAAe80D,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,mBAIpD+uC,CAAyB45I,ICjClCE,eACF,SAAAA,EAAYxpL,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA42L,IACtB5vL,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA63L,GAAArpL,KAAAvN,KAAMoN,KAwCVg2E,WAAa,SAACt8E,GACVE,EAAK4G,SAAS,SAAAmpD,GACV,IAAMysD,EAAmBzsD,EAAU0sD,cAAcn6G,QAC3CutL,EAAiB7vL,EAAKoG,MAAMy9G,SAAUvhH,QAuB5C,OArBAk6G,EAAiBx6F,QAAQ,SAAAk6D,GACjBA,EAAIz6D,KAAO3hB,GACW,IAAlBo8E,EAAIC,WAAyC,SAAlBD,EAAIC,WAC/BD,EAAIC,UAAY,MAChB0zG,EAAevqL,KAAKiqB,GAAczvB,GAAK,KACd,QAAlBo8E,EAAIC,YACXD,EAAIC,UAAY,OAChB0zG,EAAevqL,KAAKiqB,GAAczvB,GAAK,KAG3Co8E,EAAIC,WAAY,IAKxB0zG,EAAer2L,IAAI,SAAAnC,GACf,IAAM+qB,EAAO2tC,EAAU+/H,YAAY3tK,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOpqB,EAAEoqB,KAE9D,OADApqB,EAAEy9D,WAAW1yC,GAAOA,EAAK0yC,SAClBz9D,IAGJU,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEI0sD,cAAeD,EACfszE,YAAaD,OAtEC7vL,EA2E1B+vL,WAAa,SAAChzE,EAAkBC,EAAqB3lH,GACjD,OAAI0lH,EACOhlH,OAAA0G,EAAA,EAAA1G,CAAA,GACAV,EADP,CAEIy9D,SAAUkoD,IAIPjlH,OAAA0G,EAAA,EAAA1G,CAAA,GAAMV,IAnFK2I,EAuF1BgwL,YAAc,SAAChkG,GACX,IACMikG,EADQjwL,EAAK+G,MAAM+oL,YACet2L,IAAI,SAACnC,EAAGwuB,GAC5C,OAAO7lB,EAAK+vL,WAAW14L,EAAEoqB,KAAOuqE,EAAGzpC,OAAOxiD,MAAOisF,EAAGzpC,OAAOxF,QAAS1lD,KAExE2I,EAAK4G,SAAS,CAAEkpL,YAAaG,KA5FPjwL,EA+F1BkwL,kBAAoB,WAChBlwL,EAAKoG,MAAM+pL,cAAenwL,EAAK+G,MAAM+oL,cAhGf9vL,EAmG1Bo9G,wBAA0BtjG,aAAW,SAACg2K,GAAD,OAA8BA,EAAY5pL,OAAO,SAAA7O,GAAC,OAAmB,IAAfA,EAAEy9D,WAAmBv7D,SAjG5GyG,EAAK+G,MAAQ,CACT01G,cAAe,CACX,CAAEh7F,GAAI,SAAU06D,WAAW,EAAOlvE,MAAO,IACzC,CAAEwU,GAAI,UAAW06D,WAAW,EAAOlvE,MAAO,oBAC1C,CAAEwU,GAAI,WAAY06D,WAAW,EAAOlvE,MAAO,cAE/C6iL,YAAa1pL,EAAMy9G,SAAUvhH,QAC7BmsD,YAAY,GATMzuD,kFAaP8vD,GAAkB,IAAAtvD,EAAAxH,KAC7B82D,EAAU+zD,SAAUtqH,SAAWP,KAAKoN,MAAMy9G,SAAUtqH,QACpDP,KAAK4N,SAAS,SAAAmpD,GACV,IAAM8/H,EAAiBrvL,EAAK4F,MAAMy9G,SAAUvhH,QACtC8tL,EAAgB5vL,EAAKuG,MAAM01G,cAAct6F,KAAK,SAAA9e,GAAC,QAAMA,EAAE84E,YAgB7D,OAdIi0G,GAA6C,QAA5BA,EAAcj0G,UAC/B0zG,EAAevqL,KAAKiqB,GAAc6gK,EAAc3uK,IAAI,IAE/C2uK,GAA6C,SAA5BA,EAAcj0G,WACpC0zG,EAAevqL,KAAKiqB,GAAc6gK,EAAc3uK,IAAI,IAIxDouK,EAAer2L,IAAI,SAAAnC,GACf,IAAM+qB,EAAO2tC,EAAU+/H,YAAY3tK,KAAK,SAAAC,GAAI,OAAIA,EAAKX,KAAOpqB,EAAEoqB,KAE9D,OADApqB,EAAEy9D,WAAW1yC,GAAOA,EAAK0yC,SAClBz9D,IAGJU,OAAA0G,EAAA,EAAA1G,CAAA,GACAg4D,EADP,CAEI+/H,YAAaD,uCAqEpB,IAAA3uL,EAAAlI,KAAAuV,EACoBvV,KAAKoN,MAAtBoI,eADH,IAAAD,EACa,GADbA,EAECksE,EAAazhF,KAAK+N,MAAM0nD,WAAajgD,EAAQmG,MAAQ,GACrDg7K,EAAa32L,KAAKoN,MAAMy0B,0BAA4BtX,GAAY,aAAcC,GAAgB0W,uBAC9FmjF,EAAUrkH,KAAKoN,MAAMy9G,SAAW7qH,KAAKoN,MAAMy9G,SAAStqH,OAAS,EAAI,EACvE,OACI2N,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMK,KAAKoN,MAAMiqL,WAAY3hL,QAAS1V,KAAKoN,MAAMs4C,SAAUjwC,MAAM,sBACzEvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,oEAGAzvC,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO6tG,qBACfz2G,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO+tG,gBACf32G,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOjsD,MAAO0I,GAAO8tG,UACjB12G,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOguG,gBAAzB,YACA52G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOguG,gBAAzB,iBAAwD6xE,EAAa,IAAM,IAA3E,MACEA,GACEzoL,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOguG,gBAAzB,0BAIZ52G,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACIvsD,EAAAhP,EAAAiP,cAACmpL,GAAD,CAAsBX,WAAYA,EAAY1oI,SAAUjuD,KAAKoN,MAAM6gD,eAKnF//C,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,mDACNqkD,SAAS,qIACTpM,UAAW,IAEfx/C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwxE,aACfp6E,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOjsD,MAAO0I,GAAOwyE,MAAO9xE,QAAS,YACjCtJ,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACKv6D,KAAK+N,MAAM01G,cAAcjjH,IAAI,SAAA8jH,GAAM,OAChCp2G,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOytG,kBAAmBz9G,IAAKw9G,EAAO77F,GAAI/R,QAAS,kBAAMxO,EAAKk7E,WAAWkhC,EAAO77F,KAAKu9D,cAAes+B,EAAOnhC,WACzHj1E,EAAAhP,EAAAiP,cAACg4E,GAAA,EAAD,CACIjP,QAA6B,IAArBotC,EAAOnhC,UACfA,WAAgC,IAArBmhC,EAAOnhC,eAAsB//E,EAAYkhH,EAAOnhC,WAE1DmhC,EAAOrwG,YAM5B/F,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACKz6D,KAAK+N,MAAM+oL,YAAYt2L,IAAI,SAAC6jD,EAAKv3C,GAAN,OACxBoB,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CACItkD,UAAWwrE,EACX36E,IAAKu9C,EAAI57B,IAETva,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CACIC,QAASM,EAAIyX,SACbvY,SAAUr7C,EAAK8uL,YACfjgL,MAAM,YACNhQ,MAAOs9C,EAAI57B,MAGnBva,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0tG,WAAYngE,EAAIk+B,UAE9Cr0E,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO0tG,WAAYngE,EAAI2yB,iBAOlE9oE,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOiuG,uBAAwB/kH,KAAK+kH,sBAAvD,sBAEJ72G,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAKoN,MAAMs4C,SAAU3uC,MAAM,WAA5C,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS1W,KAAKk3L,kBAAmBngL,MAAM,WAA/C,iEApFZ,OAAO/W,KAAKokH,wBAAwBpkH,KAAK+N,MAAM+oL,oBAtGlBvoL,IAAMC,eAkMrCsI,GAA2C,CAC7C6tG,oBAAqB,CACjBztG,UAAW,GACX2C,aAAc,GACd4kD,aAAc,SACdpwD,UAAW,UAEfsN,MAAO,CACHC,gBAAiB3I,GAAQC,KAAKC,QAC9B0I,OAAQ,WAEZytE,MAAO,CACHvC,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,QAEXkvE,YAAa,CACT50E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BqzE,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,OACP+E,aAAc,EACd7D,QAAS,eACTpD,UAAW,GACXwiB,UAAW,KAEfkrF,SAAU,CACN79B,UAAW,OACXwB,OAAQ,IACRzsE,SAAU,QAEd+oG,eAAgB,CACZnxG,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BqzE,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,OACP0C,SAAU,OACVqC,aAAc,EACd7D,QAAS,eACTpD,UAAW,IAEfmtG,QAAS,CACL9mG,aAAc,GAElBunG,eAAgB,CACZz2G,UAAW,SACXy4E,WAAY,UAEhBy9B,kBAAmB,CACfl2G,UAAW,OACXy4E,WAAY,UAEhB09B,UAAW,CACPztG,MAAO9D,GAAQC,KAAKY,UAExBixG,sBAAuB,CACnBC,MAAO,QACP9tG,UAAW,KAGJI,QAAWR,GAAXQ,CAAmBs/K,ICzRrBW,GAAuB,SAAAz4L,EAAiFiwF,GAAoB,IAAlG7wD,EAAkGp/B,EAAlGo/B,gBAAiBC,EAAiFr/B,EAAjFq/B,cAAe4D,EAAkEjjC,EAAlEijC,6BAC7D4/H,EAAqBp3I,GAAY,WAAYC,GAAgB0V,aACnE,GAAIhC,EACA,OAAO6wD,EAAQ7wD,GAAiBn3B,MAAMkE,MAAM,SAAS,GACpD,GAAIkzB,EAAe,CACpB,IAAMkB,EAAS0vD,EAAQ5wD,GAEvB,OADgBA,IAAkBwjI,EAChB9xJ,KAAKpF,MAAM40B,EAAO0R,oBAAoBo3G,YAAc9oH,EAAOt4B,MAE5E,OAAIg7B,EACEgtD,EAAQhtD,GAA8Bh7B,WAD5C,GAqEH+P,GAAiD,CACnDutG,QAAS,CACL9mG,aAAc,GAElB9E,aAAc,CACVC,aAAc,IAIP8+K,GAzE8C,SAACpqL,GAC1D,IAAM2hF,EAAU3+C,KACV8pE,EACN,CACIA,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAEfyB,EACN,CACIA,aAAevK,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBlqF,MAAO0I,GAAO2B,aAAczB,SAAS,OAArD,MAEnB,OACI9I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAC5B,IAAMuhB,EAAevhB,EAAOn5C,IAAIkE,GAC1BmH,EAAQsjL,GAAqBj0H,EAAcyrB,GAC3Cs1B,EAAUj3G,EAAM20C,OAAOxhD,OAAS,EACtC,OACI2N,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUzzD,IAAKoV,GACXhO,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GAClD6Q,IAEH7G,EAAMqqL,YACJvpL,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACI3jC,SAAUvU,EAAMwvD,aAAexvD,EAAMi3E,WACrCnoE,KAAI,SAAA3X,OAAWuI,EAAX,YACJy3C,UAAW,SAACn3C,GAAD,OAAgBc,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY0oC,MAAO,SAAUl5E,EAAM1C,MAAM3D,MAAQ,IAAMqG,EAAM1C,MAAM3D,MAAM4xB,QAAQ,GAAK,UAG7HzqB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIx+C,IAAG,GAAAvC,OAAK0P,EAAL,KAAA1P,OAAcuI,GACjBoP,KAAI,GAAA3X,OAAK2X,EAAL,WACJqoC,UAAWnD,GACXoE,SAAUp4C,EAAMupL,WAAa/3I,GAAoBG,GACjDnnB,KAAK,SACL2oB,WAAYnzC,EAAMupL,WAAaz8E,EAAiBzhG,EAChD7Z,QAAQ,WACRwkD,YAAY,OACZzhC,SAAUvU,EAAMwvD,aAAexvD,EAAMi3E,eAG3Cj3E,EAAMupL,YACJzoL,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAOtB,IAAUu3G,EAAUvtG,GAAOutG,aAAUjhH,GACnD8K,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIx+C,IAAG,GAAAvC,OAAK0P,EAAL,KAAA1P,OAAcuI,GACjBoP,KAAI,GAAA3X,OAAK2X,EAAL,cACJqoC,UAAWnD,GACXoE,SAAU5G,GACVhnB,KAAK,SACL2oB,WAAY25D,EACZt7G,QAAQ,WACRwkD,YAAY,OACZzhC,SAAUvU,EAAMwvD,aAAexvD,EAAMi3E,mBClD1DqzG,GApBqB,SAACtqL,GACjC,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM2H,SACH7G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACXt/C,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACAvnD,MAAO,oBACHqkD,SAAU1sD,EAAMghL,aAChB1gI,UAAW,EACXmL,YAAY,EACZE,aAAc,QCL7B4hC,GAAY,uBACnBzvC,GAAe,CAAEC,QAAQ,GAuDzBwsI,eAEF,SAAAA,EAAYvqL,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA23L,IACtB3wL,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA44L,GAAApqL,KAAAvN,KAAMoN,KAFV2hF,QAAU3+C,KACgBppC,EAS1Bo4B,oBAAsB7U,GAAY,YAAaC,GAAgBiU,cATrCz3B,EAU1By5B,eAAiBlW,GAAY,OAAQC,GAAgBiU,cAV3Bz3B,EAW1Bs5B,qBAAuB/V,GAAY,aAAcC,GAAgBiU,cAXvCz3B,EAY1Bw3B,oBAAsBjU,GAAY,YAAaC,GAAgBiU,cAZrCz3B,EAa1B63B,yBAA2BtU,GAAY,iBAAkBC,GAAgBiU,cAb/Cz3B,EAc1Bi4B,8BAAgC1U,GAAY,sBAAuBC,GAAgBiU,cAdzDz3B,EAe1Bs6B,4BAA8B/W,GAAY,gBAAiBC,GAAgBuW,mBAfjD/5B,EAgB1B4wL,8BAAgCrtK,GAAY,cAAeC,GAAgBuW,mBAhBjD/5B,EAiB1Bo6B,6CAA+C7W,GAAY,6BAA8BC,GAAgBuW,mBAjB/E/5B,EAkB1B6wL,gCAAkCttK,GAAY,gBAAiBC,GAAgBuW,mBAlBrD/5B,EAmB1B8wL,kCAAoCvtK,GAAY,aAAcC,GAAgB0W,uBAnBpDl6B,EAoB1B+wL,+BAAiCxtK,GAAY,aAAcC,GAAgB0W,uBApBjDl6B,EAqB1Bu4B,sBAAwBhV,GAAY,WAAYC,GAAgBgV,sBArBtCx4B,EAuB1BgxL,4BAA8B,SAACC,GACvBA,EAAsB1uI,OAAOxF,QAC7B/8C,EAAKoG,MAAM4gD,OAAO,0BAAlB,GAAAzpD,OAAgDyC,EAAK8wL,oCAErD9wL,EAAKoG,MAAM4gD,OAAO,0BAAlB,GAAAzpD,OAAgDyC,EAAK+wL,kCA3BnC/wL,EA6C1BkxL,qCAAuCp3K,aAAW,SAAC+H,EAAoBsvK,GACnE,OAAOtvK,EAAM3b,OAAO,SAAA7C,GAAC,OAAIA,EAAE4zB,cAAgBk6J,GAA8B9tL,EAAE4zB,aAAej3B,EAAKw3B,yBA9CzEx3B,EAiD1BoxL,oCAAsCt3K,aAAW,SAAC8d,GAC9C,IAAIy5J,GAAc,EACdl+J,GAAe,EAQnB,OAPAyE,EAAa5V,QAAQ,SAAApZ,GACbA,EAAKgwB,oBAAsB54B,EAAKu4B,uBAAyB3vB,EAAKiwB,UAC9Dw4J,GAAc,EACPzoL,EAAKiwB,YACZ1F,GAAe,KAGhBk+J,GAAel+J,IA3DAnzB,EA8D1BsxL,kBAAoB,kBAAMtxL,EAAK4G,SAAS,CAAEypL,YAAY,KA9D5BrwL,EA+D1BuxL,WAAa,kBAAMvxL,EAAK4G,SAAS,CAAEypL,YAAY,KA/DrBrwL,EAiE1BwxL,uBAAyB,SAAC3tE,GACtB,GAAIA,GAAYA,EAAS1hG,KAAK,SAAA9qB,GAAC,OAAIA,EAAEy9D,WAAW,CAC5C,IAAMjzC,EAAuBgiG,EAAS39G,OAAO,SAAA7C,GAAC,OAAIA,EAAEyxD,WAC/Ct7D,IAAI,SAAAnC,GAAC,MAAK,CACPoqB,GAAIpqB,EAAEoqB,GACNwV,WAAY5/B,EAAE4/B,WAAa5/B,EAAE4/B,WAAa,KAElDj3B,EAAK4G,SAAS,CAAEypL,YAAY,IAC5BrwL,EAAKoG,MAAMqrL,YAAa5vK,KAzEN7hB,EA6E1B0xL,4BAA8B,SAAC/hL,EAAQigB,GACnC,IAAI+hK,EAAmB3nJ,GAAsBtlB,SAASkL,EAAK,KACvD7vB,EAAQ4xL,EAAmBA,EAAgB,YAAkB,WACjE3xL,EAAK4G,SAAS,CAAEgrL,yBAA0B7xL,KAhFpBC,EAmF1B6xL,wBAA0B,SAACv1H,GACvB,IAAMw1H,EAAW9xL,EAAKoG,MAAMg2D,UAAYp8D,EAAKoG,MAAMg2D,SAASj/B,MAAMhb,KAAK,SAAA0U,GAAC,OAAIA,GAAKA,EAAEK,kBAAoBolC,EAAaplC,kBAC9G66J,EACFz1H,GACAA,EAAal/B,QAAU00J,GACrBx1H,EAAal/B,OAAU,KAAQ00J,EAAS10J,QAAU,GAElD40J,EAAgBhyL,EAAKoG,MAAM+8K,UAAUhmJ,MAAMhb,KAAK,SAAA0U,GAAC,OAAEA,EAAEK,kBAAoBolC,EAAaplC,kBACtF+6J,EAAmBD,GAAiBA,EAAc50J,QAAW,EAC7D80J,EAAiBD,GAAmBF,GAAqC,GAAKE,EAAkBF,EACtG,OAAOG,EAAiBA,EAAevgK,QAAQ,GAAK,QA1FpD3xB,EAAK+G,MAAQ,CACTspL,YAAY,EACZuB,yBAA0B,YALR5xL,8EA+BtB,IAAMmxL,EAA6Bn4L,KAAKoN,MAAM6zB,sBAAwBjhC,KAAK43L,8BACrEuB,EAAiCn5L,KAAKk4L,qCAAqCl4L,KAAKoN,MAAMy9G,SAAWstE,GACvG,OACIjqL,EAAAhP,EAAAiP,cAACirL,GAAD,CACI/B,WAAYr3L,KAAK+N,MAAMspL,WACvB3xI,SAAU1lD,KAAKu4L,WACfpB,cAAen3L,KAAKw4L,uBACpB32J,wBAAyB7hC,KAAKoN,MAAMy0B,wBACpCgpF,SAAUsuE,EACVlrI,SAAU0sC,sCAwDb,IAAAnzF,EAAAxH,KAAAsV,EAC2ItV,KAAKoN,MAA7I04C,EADHxwC,EACGwwC,WAAYF,EADftwC,EACeswC,QAASP,EADxB/vC,EACwB+vC,aAAc8kI,EADtC70K,EACsC60K,UAAWxuF,EADjDrmF,EACiDqmF,YAAa/+B,EAD9DtnD,EAC8DsnD,YAAa37B,EAD3E3rB,EAC2E2rB,oBAAqBo4J,EADhG/jL,EACgG+jL,mBAAoBj2H,EADpH9tD,EACoH8tD,SAAU1d,EAD9HpwC,EAC8HowC,SAC7HvhB,EAAQnkC,KAAKoN,MAAM44C,cAAc7hB,OAAS,GAE1CwyJ,EAAa32L,KAAKoN,MAAMy0B,0BAA4B7hC,KAAK83L,kCACzDwB,EAAqB7iJ,GAAUz2C,KAAKoN,MAAM44C,cAAc56B,mBAAsBorB,GAAgBx2C,KAAKoN,MAAM44C,cAAc56B,kBAEvHmuK,EAAsBv5L,KAAKoN,MAAM44C,cAAc56B,mBAAsBb,GAAY,UAAWC,GAAgBuO,iBAC3G/4B,KAAKoN,MAAM44C,cAAc56B,mBAAsBb,GAAY,SAAUC,GAAgBuO,iBACrF/4B,KAAKoN,MAAM44C,cAAc56B,mBAAsBb,GAAY,SAAUC,GAAgBuO,gBACtFygK,EAA6Bv4J,IAAwBjhC,KAAKshC,4BAC1Dm4J,EAAoCD,GAA8Bp2H,GAAYA,EAASthC,cAAcvhC,OACrGm5L,EACDF,IAA+BC,GAC/BA,GAAqCr2H,EAAUnlC,aAAej+B,KAAKo/B,oBAEpE,OACAlxB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO6iL,gBAA1B,iBACAzrL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,0DACAt9C,EAAAhP,EAAAiP,cAAC0gL,GAAD,CACIjyH,YAAaA,EACbw3C,iCAAkCp0G,KAAKoN,MAAMgnG,iCAC7Ck6E,qBAAsBtuL,KAAKoN,MAAMkhL,uBAEjCpgL,EAAAhP,EAAAiP,cAAC2gL,GAAD,CACI/5K,QAAS/U,KAAKoN,MAAM2hL,4BACpBX,aAAcpuL,KAAKoN,MAAM4hL,uBAE7B9gL,EAAAhP,EAAAiP,cAACyrL,GAAD,CACI7kL,QAAS/U,KAAKoN,MAAMysL,4BACpBzL,aAAcpuL,KAAKoN,MAAM0sL,2BAEjC5rL,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOse,SACflnB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,sBAEJhL,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sBACLqoC,UAAWL,GACXjwC,MAAM,GACNkwC,UAAU,qBACV/1C,MAAO0I,GAAOiqB,kBACdwiB,SAAUvjD,KAAK04L,6BAEfxqL,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAOijL,mBACdhzL,MAAK,GAAAxC,OAAKvE,KAAK63L,iCACfl2K,SAAUwoK,EAAUlsJ,aAAej+B,KAAKsgC,sBAAwBs8B,GAAe08H,GAAsBt5L,KAAKoN,MAAMi3E,WAChHxgC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MACI/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO4xE,aAApB,kCAECyhG,EAAUlsJ,aAAej+B,KAAKsgC,sBACvBpyB,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQ+kB,QAAM,GACVhnG,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAM,mGACN2f,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,aAQhD5Q,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAOkjL,iBACVjzL,MAAK,GAAAxC,OAAKvE,KAAK43L,+BACfj2K,SAAUwoK,EAAUlsJ,aAAej+B,KAAKo/B,qBAAuB+qJ,EAAUlsJ,aAAej+B,KAAKygC,gBAAkB0pJ,EAAUlsJ,aAAej+B,KAAK6+B,0BAA4B+9B,GAAe58D,KAAKoN,MAAMi3E,WACvMxgC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MACI/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO4xE,aAApB,6CAEMyhG,EAAUlsJ,aAAej+B,KAAKo/B,qBAAuB+qJ,EAAUlsJ,aAAej+B,KAAKygC,iBACjFvyB,EAAAhP,EAAAiP,cAACgiF,GAAA,EAAD,CAAQ+kB,QAAM,GACVhnG,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAM,mFACN2f,QACIlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOgI,aAQ/C9e,KAAKo4L,oCAAoCp4L,KAAKoN,MAAM+8K,UAAUvrJ,eAC3D1wB,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACIx1C,MAAO0I,GAAOkjL,iBACdjzL,MAAK,GAAAxC,OAAKvE,KAAKohC,8CACfzf,SAAUi7C,GAAe58D,KAAKoN,MAAMi3E,WACpCxgC,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOhrE,MAAM,cACtB9C,MACI/F,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO4xE,aAApB,+CAMX6wG,GAAuBrrL,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAChBx1C,MAAO0I,GAAOmjL,cACdp2I,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOpgE,SAAU3hB,KAAKoN,MAAMi3E,YAA4C,IAA9Bg1G,EAAmB94L,OAAcwW,MAAM,cAC1F9C,MAAO/F,EAAAhP,EAAAiP,cAAA,yBACPpH,MAAK,GAAAxC,OAAKvE,KAAKshC,iCAI/BpzB,EAAAhP,EAAAiP,cAAA,WAECqrL,GAA8BH,EAAmB94L,OAAS,GAAK2N,EAAAhP,EAAAiP,cAAA,WAC5DD,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,aACLqoC,UAAWnD,GACXntC,MAAM,YACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACR4H,WAAS,EACT2G,YAAalB,GACbvpC,SAAU3hB,KAAKoN,MAAMi3E,YAErBn2E,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbsyL,EAAmB74L,IAAI,SAAA4oB,GAAI,OACxBlb,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAKsiB,EAAKX,GAAI1hB,MAAOqiB,EAAKX,IAAKW,EAAKjJ,qBAKxDjS,EAAAhP,EAAAiP,cAAA,YAEEurL,GAAyBxrL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACvBJ,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOojL,0BAAjB,wBAGFV,EAWOtrL,EAAAhP,EAAAiP,cAAA,WAXsBD,EAAAhP,EAAAiP,cAAA,WAC3BD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOo5E,YAApB,kBACAhiF,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIvuC,MAAM,UACNmF,KAAK,aACLqoC,UAAWP,GACXT,SAAUvjD,KAAKg4L,4BACf/jL,MAAM,GACN0N,SAAUi7C,GAAe58D,KAAKoN,MAAMi3E,aAExCn2E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOkvD,YAApB,oBAEJ93D,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOwxE,aACfp6E,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,CAAOjsD,MAAO0I,GAAOwyE,MAAO94E,KAAM,SAC9BtC,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACIpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACIrsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOrD,aACpBzT,KAAK+N,MAAM6qL,2BAEVzO,EAAUlsJ,aAAej+B,KAAKo/B,qBAAuB+qJ,EAAUlsJ,aAAej+B,KAAKygC,iBACrFvyB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOrD,aAAzB,qBAEJvF,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOrD,aAAzB,0BAA8D+lL,IAA+B7C,EAAa,MAAQ,SAChHA,GACEzoL,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOrD,aAAzB,mCAIZvF,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACM++H,EAQIp2H,GAAYA,EAASthC,cAActhC,IAAI,SAAC8iE,EAAcukB,GAAf,OAAuB35E,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,CAAUzzD,IAAKw8D,EAAa76C,IACxFva,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACK+8H,GAAqBj0H,EAAc97D,EAAKunF,UAE5Co7F,EAAUlsJ,aAAez2B,EAAK43B,qBAAuBlxB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAClDtsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY0oC,MAAO,SAAUniD,EAAM0jD,GAAKzjD,OAAX,IAAA7/B,OAAwB4/B,EAAM0jD,GAAKzjD,OAAQzL,QAAQ,IAAO,OAE3FzqB,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KACItsD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAY0oC,MAAO,SAAnB,IAAA/hF,OACQ++D,EAAazhC,0BAA4Br6B,EAAKswL,kCACxB,MAArBx0H,EAAal/B,OAAa,EAAEk/B,EAAal/B,OAC1C58B,EAAKqxL,wBAAwBv1H,SAlB3Cp1D,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACE/gD,KAAK,gBACDqoC,UAAWizI,GACXC,WAAYtN,EAAUlsJ,aAAej+B,KAAKo/B,qBAAuB+qJ,EAAUlsJ,aAAej+B,KAAKygC,eACnGk2J,WAAYA,EACZ/5H,YAAaA,EACbynB,WAAYrkF,KAAKoN,MAAMi3E,mBAqBjDi1G,IAAuBE,GACrBtrL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOqjL,eACfjsL,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIjmC,QAAS1W,KAAKs4L,kBACd15L,QAAQ,WACRwP,MAAO0I,GAAOuI,OACdsC,SAAUg6E,GAAe/+B,GAAehX,GAAW5lD,KAAKoN,MAAMi3E,YAE9Dn2E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOsjL,gBAApB,sCAEJlsL,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MA7MR,4EA8MQ2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOujL,qBAK7CnsL,EAAAhP,EAAAiP,cAACmsL,GAAD,CAA4BjxK,OAAQrpB,KAAKoN,MAAM44C,cAAcv9B,GAAKm0C,YAAaA,EAAa3O,SAAUjuD,KAAKoN,MAAM63C,OACjH/2C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsnD,WACflwD,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOkpF,aAActpF,QAASgvC,GAA7C,UACAx3C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,wBACH7pB,QAAQ,YACRmY,MAAM,UACNL,QAAS2uC,EACTR,QAASiB,EACTnkC,SAAUikC,GAAW+1C,GAAe/+B,GAAe58D,KAAKoN,MAAMi3E,YANlE,uBAWHrkF,KAAK89D,wBAtUYvvD,IAAMC,eA6UtCsI,GAAiD,CACnDmjL,cAAe,CACXpgL,cAAe,IAEnBwF,OAAQ,CACJlI,YAAa,IAEjBinD,UAAW,CACPlnD,UAAW,GACX7I,UAAW,SAEf2xF,aAAc,CACV7oF,YAAa,OAEjBie,QAAS,CACLvb,aAAc,IAElBqgL,yBAA0B,CACtBpiL,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,cAAe,EACf3C,WAAY,GAEhB6pB,kBAAmB,CACf/pB,SAAU,WACVE,WAAY,IAEhBmjL,eAAgB,CACZtjL,MAAO9D,GAAQC,KAAKU,KACpBrC,OAAQ,GACR6H,MAAO,IAEX+gL,cAAe,CACX5oL,OAAQ,GACRsJ,WAAY,SACZP,QAAS,OACTmkD,aAAc,UAElB27H,eAAgB,CACZrjL,MAAO9D,GAAQiB,KAAKC,QACpBiF,MAAO,KAEX2gL,mBAAoB,CAChBlgL,cAAe,GACf3C,UAAW,GAEf8uD,WAAY,CACRjvD,MAAO9D,GAAQC,KAAKU,KACpByF,YAAa,GACbvB,SAAU,IAEdmB,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,MAExBsF,WAAY,CACRpB,SAAU,GACV+B,aAAc,GACd3C,UAAW,GAEfyiL,eAAgB,CACZ7hL,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBiF,KAAM,CACF/H,MAAO9D,GAAQC,KAAKU,KACpByF,WAAY,GACZ9H,OAAQ,GACR6H,MAAO,IAEXoyC,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBmgL,iBAAkB,CACdngL,cAAe,IAEnBH,MAAO,CACHlC,QAAS,aAEb04E,WAAY,CACRn5E,MAAO9D,GAAQC,KAAKU,KACpBuD,YAAa,GACbW,SAAU,IAEdwxE,MAAO,CACHvC,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,OACP0C,SAAU,QAEdwsE,YAAa,CACT50E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKQ,OAC1BqzE,UAAW,OACXwB,OAAQ,IACRnvE,MAAO,OACP0C,SAAU,OACVqC,aAAc,EACd7D,QAAS,gBAEb7G,YAAa,CACTqzE,WAAY,UAEhB0B,QAAS,CACLC,QAAS,GACTl3E,OAAQ,GACR6H,MAAO,IAEXsvE,YAAa,CACTpuE,QAAS,OACTO,WAAY,WAILsqC,gBAAoC,CAAEF,KAAM01C,GAAWn1C,SA/crD,SAAC3V,GACd,IAAMhxC,EAA0C,CAC5Cg3L,WAAY,IAGVv0J,EAA8B/W,GAAY,gBAAiBC,GAAgBuW,mBAKjF,OAJI8O,EAAO5O,sBAAwBK,EAA4B/2B,YAAeslC,EAAOgmJ,aACjFh3L,EAAOg3L,WAAa,2BAGjBh3L,IAqcIsmD,CAAmEwyI,IC3f5E/2I,GAAa,CACfnoC,aAAevK,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBlqF,MAAO85E,GAAazvE,aAAczB,SAAS,OAA3D,KACfkrH,IAAK,EACL9wH,IAAK,KAGHmpL,GAAuDhsL,IAAMizC,KAAK,SAACp0C,GACrE,IAAMotL,EAAeptL,EAAM20C,OAAOxhD,OAAS,EAErC+/C,EAAa,CAAES,QAAQ,GACvB7yB,EAAWwM,GAAattB,EAAMozB,OAC9B6jD,GAAkC,IAArBj3E,EAAMi3E,WACzB,OACIn2E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAEQlB,EAAM20C,OAAOn5C,IAAI,IAAMwE,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAClD,IAAM9tC,EAAK,OAAA1P,OAAUw9C,EAAOn5C,IAAIkE,GAAOywB,QACvC,OACIrvB,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACpP,IAAKoV,EAAMosC,QAAS,GAChCp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO7C,OACrBA,EAAOnH,IAAU0tL,GAAgB,MAG1CtsL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,WACJqoC,UAAWnD,GACXoE,SAAUzG,GACV9qC,MAAOia,EAAW,0BAA4B,WAC9Cq3B,WAAS,EACT3mD,QAAQ,WACRg5B,KAAK,SACL0oB,WAAYA,EACZC,WAAYK,GACZwC,YAAY,IACZzhC,SAAUvU,EAAMwvD,aAAeynB,WAW7DvtE,GAAiD,CACnD7C,MAAO,CACH6D,SAAU,GACVJ,WAAY,SACZX,MAAO9D,GAAQC,KAAKe,MACpB4F,cAAe,EACf3C,UAAW,KAIJqjL,MCjBTzjL,GAAiD,CACnDmC,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,KACpBiG,cAAe,IAEnBX,WAAY,CACRpB,SAAU,GACVG,OAAQ,SACRP,WAAY,UAEhB+C,cAAe,CACX/C,WAAY,SACZI,SAAU,IAEd4B,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,KAwBJ4lC,mBApBf,SAAyB/uC,EAAmBi6C,GACxC,IAAM58B,EAAmBwrE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,oBAC/D2+B,EAAUkqD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,eAI5D,MAAO,CACH0sL,oBAJwBhkJ,GAAUrrB,IAAqB0rB,GAAc1rB,EAAkBshB,GAKvFA,UACAthB,mBACAm7C,cANkBqwB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,mBAUtE,SAA4B1O,EAAe2oD,GACvC,MAAO,CACH0yI,oBAAqB,SAAAn0H,GAAa,OAAIlnE,EAAS2uD,aAAOhG,EAASiG,SAAU,gBAAiBsY,OAInFzpB,CAjEY,SAAC1vC,GAOxB,OANAmB,IAAMq9C,UAAU,WACRx+C,EAAMqtL,qBAA8D,KAAtCrtL,EAAMm5D,eAAiB,IAAIhmE,QACzD6M,EAAMstL,oBvT2HP,CACH,CACIjyK,GAAI,GACJ8U,OAAQ,GACRC,OAAQ,GACR4G,YAAQhhC,GAEZ,CACIqlB,GAAI,GACJ8U,OAAQ,GACRC,OAAQ,GACR4G,YAAQhhC,GAEZ,CACIqlB,GAAI,GACJ8U,OAAQ,GACRC,OAAQ,GACR4G,YAAQhhC,GAEZ,CACIqlB,GAAI,GACJ8U,OAAQ,GACRC,OAAQ,IACR4G,YAAQhhC,MuThJb,CAACgK,EAAMqtL,oBAAqBrtL,EAAMm5D,gBAEjCn5D,EAAMqtL,sBAAwB9/J,GAAYvtB,EAAMge,kBAAoB,GAEhEld,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,iBACAhL,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO2D,eAAjB,8DAIJvM,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CAAYonB,YAAiC,IAArBj3E,EAAMi3E,WAAqBnoE,KAAK,gBAAgBskB,MAAOpzB,EAAMge,iBAAkBwxC,YAAaxvD,EAAMwvD,YAAarY,UAAWg2I,MAItJrsL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,QCcGwuC,mBATf,SAAyB/uC,EAAmBi6C,GAGxC,MAAO,CACH2yI,WAHe/jG,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,0BAI3Dqd,iBAHqBwrE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,sBAO1D+uC,CAxCQ,SAAC1vC,GACpB,IAAMqtI,EAAYrtI,EAAMge,mBAAqBb,GAAY,UAAWC,GAAgBuO,gBAC9EsrD,GAAkC,IAArBj3E,EAAMi3E,WACzB,OAAIj3E,EAAMutL,WAEFzsL,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAauhI,EAAY,oCAAsC,oCAChFvsI,EAAAhP,EAAAiP,cAAA,+DAAA5J,OAC2Dk2I,EAAY,wBAA0B,uBADjG,wBAIJvsI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,SACLqoC,UAAWnD,GACXntC,MAAK,WAAA1P,OAAak2I,EAAY,MAAQ,uBAAjC,2BACL77I,QAAQ,WACR2mD,WAAS,EACTC,SAAUl9C,GACVqZ,SAAUvU,EAAMwvD,aAAeynB,OAO/Cn2E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,QCoCGssL,GArE8C,SAACxtL,GAC1D,IAAM2hF,EAAU3+C,KACVi0C,GAAkC,IAArBj3E,EAAMi3E,WACnBw2G,EAA0BtsL,IAAMuzC,YAAYpD,GAAsB,IAClE8nG,EAA6Bj8H,GAAY,uCAAwCC,GAAgBmiB,aACjGiU,EAAa,CACfs5D,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAErB,OACI9I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM20C,OAAOxhD,OAAS,GAAK2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACxBJ,EAAAhP,EAAAiP,cAAA,WACCf,EAAM8N,aAAe9N,EAAM8N,YAAY3a,OAAS,GAC7C2N,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAOrI,EAAM8N,YACbwyC,UAAW,EACXmL,YAAY,EACZC,gBAAgB,EAChBC,aAAc,IAGtB7qD,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,iBACAhL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO2D,eAAnB,iGAIHrN,EAAM20C,OAAOvhD,IAAI,SAAC0b,EAAMpP,EAAOi1C,GAAW,IAC/B+4B,EAAc1tE,EAAM20C,OAAOn5C,IAAIkE,GAA/BguE,UACFmpE,EAAcl1D,EAAQjU,GAAW/zE,MACjC+zL,EAAYhgH,IAAc0rE,EAChC,OACIt4I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMryB,IAAKoV,EAAMhG,WAAS,EAAC2E,WAAW,WAAWytC,QAAS,GACtDp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAAA,SAAI81I,GACJ/1I,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,oBACJqoC,UAAWnD,GACXntC,MAAO7G,EAAMsvE,YAAc,SAAW,aACtC99E,QAAQ,WACR2mD,WAAS,EACTC,SAAUs1I,EAAYD,OAA0Bz3L,EAChDm9C,WAAYu6I,EAAYl6I,OAAax9C,EACrCw0B,KAAMkjK,EAAY,SAAW,OAC7Bn5K,SAAUvU,EAAMwvD,aAAeynB,MAGrCj3E,EAAMsvE,aACJxuE,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,GAAA3X,OAAK2X,EAAL,uBACJqoC,UAAWnD,GACXntC,MAAM,iBACNrV,QAAQ,WACR2mD,WAAS,EACT5jC,SAAUvU,EAAMwvD,aAAeynB,YCiB5DvnC,mBAPf,SAAyB/uC,EAAmBi6C,GAExC,MAAO,CACH58B,iBAFqBwrE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,sBAM1D+uC,CAhEY,SAAC1vC,GACxB,IAAMqtI,EAAYrtI,EAAMge,mBAAqBb,GAAY,UAAWC,GAAgBuO,gBAC9E8d,EAAWzpC,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,gBAC5E4hH,EAAWvtI,EAAMge,mBAAqBb,GAAY,SAAUC,GAAgBuO,gBAC5EugK,EAAqBlsL,EAAMge,mBAAqBqrB,GAAUrpC,EAAMge,mBAAqBorB,GAAgBppC,EAAMge,mBAC3G2vK,EAAgBtgD,GAAa5jG,GAAY8jG,GAAY2+C,EACrD0B,EAAmBvgD,GAAa5jG,EAChCokJ,EAAkBxgD,EAClBp2D,GAAkC,IAArBj3E,EAAMi3E,WACzB,OACIn2E,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACPysL,GACe7sL,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACnB/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,gBACIhL,EAAAhP,EAAAiP,cAAC6qB,GAAD,CAAgBvjB,MAAOvH,EAAAhP,EAAAiP,cAAA,sOAA6ND,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WAAnO,sJAAmYinB,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,eAG3bjL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,mBACLqoC,UAAWP,GACX/vC,MAAM,kCACN0N,SAAUvU,EAAMwvD,aAAeynB,KAItC22G,GACG9sL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,yBACLqoC,UAAWP,GACX/vC,MAAOwmI,EAAY,2BAA6B,uCAChD94H,SAAUvU,EAAMwvD,aAAeynB,KAK1C42G,GACG/sL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iBACLqoC,UAAWP,GACX/vC,MAAM,4BACN0N,SAAUvU,EAAMwvD,aAAeynB,UC3C7D62G,GAAkB,CACpBhhF,eAAiBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,MAEfmkL,GAAgB,CAClB1iL,aAAevK,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBlqF,MAAO85E,GAAazvE,aAAczB,SAAS,OAA3D,MAoBbk0C,GAAe,CAAEC,QAAQ,GAEzBnG,GAAoB7G,GAAe,KACnCqf,GAAmB3f,GAAS,0BAE5Bu9I,8MACFC,aAAe9wK,GAAY,aAAcC,GAAgBoI,qBACzD0oK,aAAe/wK,GAAY,mBAAoBC,GAAgBoI,qBAC/D2oK,kBAAoBhxK,GAAY,sBAAuBC,GAAgBoI,qBACvE4oK,eAAiBjxK,GAAY,eAAgBC,GAAgBoI,qBAC7D6oK,YAAclxK,GAAY,YAAaC,GAAgBgjB,kBACvDgc,IAAM,wBACNkyI,8BAAgC,CAE5BjjL,aAAcvK,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBlqF,MAAO0I,GAAO2B,aAAczB,SAAS,OAC/D9I,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACIvjB,MAAM,sGACN2f,QAASlnB,EAAAhP,EAAAiP,cAACs7C,GAAAvqD,EAAD,CAAMkP,MAAO85E,GAAa/uE,cAG3C+gG,eAAgBhsG,EAAAhP,EAAAiP,cAACmqF,GAAA,EAAD,CAAgBthF,SAAS,SAAzB,QAGpB2kL,qBAAuB,SAAC36C,EAAkBnxG,GACtC,IAAM+rJ,EAAW/rJ,EAAOs1B,eACxB,GAAKy2H,GAAa56C,EAAlB,CAGA,IAAM9e,EAAMv1H,OAAOivL,GAAY,GAE/B,OADYjvL,OAAOq0I,GAAY,IACjB9e,OAAM9+H,EAAY,qEAIpCy4L,YAAc,SAAC76C,EAAkBnxG,GAC7B,IAAM+rJ,EAAW/rJ,EAAOs1B,eACxB,GAAKy2H,GAAa56C,EAAlB,CAGA,IAAM9e,EAAMv1H,OAAOivL,GAAY,GAE/B,OADYjvL,OAAOq0I,GAAY,IACjB9e,OAAM9+H,EAAY,wDAGpC04L,sBAAwB,SAAC96C,EAAkBnxG,GACvC,IAAM+rJ,EAAW/rJ,EAAOs1B,eACxB,GAAKy2H,GAAa56C,EAAlB,CAGA,IAAM9e,EAAMv1H,OAAOivL,GAAY,GAE/B,OADYjvL,OAAOq0I,GAAY,IACjB9e,OAAM9+H,EAAY,iEAGpC24L,sBAAwB,SAACH,EAAkB/rJ,GACvC,IAAMmxG,EAAWnxG,EAAO01B,sBACxB,GAAKq2H,GAAa56C,EAAlB,CAGA,IAAM9e,EAAMv1H,OAAOivL,GAAY,GAE/B,OADYjvL,OAAOq0I,GAAY,IACjB9e,OAAM9+H,EAAY,qEAIpC44L,SAAW,eAIXC,sBAAwBr8I,GAAgC,wBACxDs8I,0BAA4Bt8I,GAAgC,6BAC5Du8I,gBAAkBv8I,GAAgC,4BAClDw8I,yBAA2Bx8I,GAAgC,kGAElD,IAAAp4C,EAAAxH,KACC4iJ,EAAe5iJ,KAAKoN,MAAMge,kBAAoBorB,GAAgBx2C,KAAKoN,MAAMge,kBACzEqsB,EAAQz3C,KAAKoN,MAAMge,kBAAoBb,GAAY,MAAOC,GAAgBuO,gBAC1E2e,EAAQ13C,KAAKoN,MAAMge,kBAAoBb,GAAY,MAAOC,GAAgBuO,gBAC1E4pH,EAAS3iJ,KAAKoN,MAAMge,kBAAoBqrB,GAAUz2C,KAAKoN,MAAMge,kBAC7Dgc,EAAUpnC,KAAKoN,MAAMge,kBAAoBuP,GAAY36B,KAAKoN,MAAMge,kBAChE8C,EAAWluB,KAAKoN,MAAMge,kBAAoBsP,GAAa16B,KAAKoN,MAAMge,kBAClEixK,EAAqBr8L,KAAKoN,MAAMulB,sBAAwB3yB,KAAKs7L,aAC7DgB,EAAoBt8L,KAAKoN,MAAMulB,sBAAwB3yB,KAAKu7L,kBAC5DgB,EAAev8L,KAAKoN,MAAMulB,sBAAwB3yB,KAAKq7L,aACvDmB,EAAiBx8L,KAAKoN,MAAMulB,sBAAwB3yB,KAAKw7L,eACzDiB,EAAkBJ,GAAsBz5C,GAAiB45C,EACzDn4G,GAAuC,IAA1BrkF,KAAKoN,MAAMi3E,WACxBq4G,EAAwBL,GAAsBG,GAAkBF,EAChEK,EAAqBL,EAAoB,mBAAqBD,EAAqB,8BAAgC,SACzH,OAAI15C,GAAUC,EAEN10I,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,iBACAhL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO2D,eAAnB,kGAIJvM,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO8lL,mBAAjB,mBAEJ1uL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sBACLqoC,UAAWnD,GACXntC,MAAM,cACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACRuO,YAAalB,GACbiB,UAAW5wB,GACXiqB,SAAUxlD,KAAKk8L,0BACfjwI,KAAMjO,GACNr8B,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,GAEpCn2E,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KpTgUV,SAACisB,GACjC,IAAMme,EAAef,KACrB,OAAOwE,GAAsBzD,EAAcne,GoTjUd6pK,CAAqB78L,KAAKoN,MAAMge,kBAAkB5qB,IAAI,SAAAo2B,GAAG,OACtD1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKk6H,EAAS/rH,EAAI7vB,MAAQ6vB,EAAIkmK,iBAI1E5uL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gBACLqoC,UAAWnD,GACXntC,MAAO0oL,EACP/9L,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACRjmB,KAAK,SACL0oB,WAAY,CAAES,QAAQ,GACtBR,WAAYk8I,EAAiBtB,GAAgBoB,GAAgBD,EAAoBpB,QAAkB93L,EACnGgL,MAAOmuL,EAAezlL,GAAOyC,oBAAiBnW,EAC9CoiD,SAAU,CAACxlD,KAAKi8L,sBAAuBQ,EAAiB19I,GAAkBH,GAAmB09I,EAAoBt8L,KAAK+7L,sBAAwB/7L,KAAKg8L,UACnJ/vI,KAAMjO,GACNr8B,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,KAG1Cq4G,GACExuL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iBACLqoC,UAAWnD,GACXntC,MAAM,UACNrV,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACR2H,SAAU,CAAC5G,GAAmB5+C,KAAK87L,sBAAuB97L,KAAKm8L,iBAC/D/tL,MAAO0I,GAAOyC,eACdgnC,WAAY26I,GACZtjK,KAAK,SACLjW,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,KAG3Cs+D,GACGz0I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,wBACLqoC,UAAWnD,GACXntC,MAAM,0BACNrV,QAAQ,WACR2mD,WAAS,EACT1H,UAAQ,EACR2H,SAAU,CAAC5G,GAAmB5+C,KAAK87L,sBAAuB97L,KAAK27L,qBAAsB37L,KAAKo8L,0BAC1F77I,WAAYvgD,KAAK07L,8BACjB9jK,KAAK,SACLxpB,MAAO0I,GAAOyC,eACdoI,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,KAI/Cu+D,GACG10I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,iBACLqoC,UAAWnD,GACXntC,MAAM,UACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAAC5G,GAAmB5+C,KAAK67L,aACnCztL,MAAO0I,GAAOyC,eACdqe,KAAK,SACL2oB,WAAY26I,GACZv5K,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,MAOvDm4G,GACGtuL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,sBACLqoC,UAAWnD,GACXoE,SAAUgY,GACV3f,UAAQ,EACR5pC,MAAM,gBACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbvpC,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,GAEpCn2E,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb/G,KAAKoN,MAAM2vL,iBAAiBv8L,IAAI,SAAA4oB,GAAI,OACjClb,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAKsiB,EAAKX,GAAI1hB,MAAOqiB,EAAKX,IAAKW,EAAKjJ,sBAK1Ds3B,GAASC,IAAU2kJ,GACjBnuL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO8lL,mBAAjB,yBAEJ1uL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GAAvB,yBAEI99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACAppC,KAAK,0CACLqoC,UAAWP,GACX/vC,MAAM,sBAMlB/F,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO8lL,mBAAjB,oBAEHh6C,EACG10I,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,kBACLqoC,UAAWnD,GACXntC,MAAM,WACNrV,QAAQ,WACR2mD,WAAS,EACT5jC,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,KAG5Cn2E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,oBACLqoC,UAAWnD,GACXntC,MAAM,qBACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUR,GACVrjC,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,MAKhDn2E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gBACLqoC,UAAWnD,GACXntC,MAAM,eACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUR,GACVrjC,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,KAIhDn2E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWnD,GACXntC,MAAM,QACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAUR,GACVrjC,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,MAG1Cj9C,IAAYlZ,GAAYmuK,GACtBnuL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAO8lL,mBAAjB,yBAEJ1uL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,wBACLqoC,UAAWnD,GACXntC,MAAM,gBACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbiB,UAAW5wB,GACX5Z,UAAW06K,GAAsBr8L,KAAKoN,MAAMwvD,aAAeynB,GAE3Dn2E,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KpTmJrB,WAC7B,IAAMoqC,EAAef,KACrB,OAAOyE,GAAmB1D,GoTpJW6rJ,GAAoBx8L,IAAI,SAAAo2B,GAAG,OACxB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,cAM1D/G,KAAKoN,MAAMs4D,uBAAyB1lE,KAAKoN,MAAMs4D,wBAA0B1lE,KAAKy7L,aAAeY,GAC5FnuL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gCACLqoC,UAAWL,GACXjwC,MAAM,GACNkwC,UAAU,mBACVsB,WAAS,EACT9jC,SAAU3hB,KAAKoN,MAAMwvD,aAErB1uD,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,IAAO88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOpgE,SAAU0iE,EAAYttE,MAAM,cAAgB9C,MAAM,OAChG/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,OAAU88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOpgE,SAAU0iE,EAAYttE,MAAM,cAAgB9C,MAAM,WACnG/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,OAAU88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOpgE,SAAU0iE,EAAYttE,MAAM,cAAgB9C,MAAM,WACnG/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,QAAW88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOpgE,SAAU0iE,EAAYttE,MAAM,cAAgB9C,MAAM,YACpG/F,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CAAkB78C,MAAK,QAAW88C,QAAS31C,EAAAhP,EAAAiP,cAAC4zE,GAAA,EAAD,CAAOpgE,SAAU0iE,EAAYttE,MAAM,cAAgB9C,MAAM,MAExG/F,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAM,wBACNqoC,UAAWnD,GACXntC,MAAM,GACNmvC,YAAY,GACZxkD,QAAQ,WACR2mD,WAAS,EACTC,SAAU3G,GACV0B,WAAY26I,GACZ9sL,MAAO0I,GAAOmmL,YACdrlK,KAAK,SACLjW,SAAU3hB,KAAKoN,MAAMwvD,aAAeynB,EACpC3tE,QAAS,kBAAMlP,EAAK4F,MAAM4mI,YAAY,gCAAiC,UACvEzwF,SAAuD,UAA7CvjD,KAAKoN,MAAM8vL,8BAA4C,kBAAM11L,EAAK4F,MAAM4mI,YAAY,gCAAiC,eAAW5wI,OAQ9J8K,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,aAlVsBC,IAAMC,eAsVtCsI,GAAiD,CACnDmC,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElBX,WAAY,CACRpB,SAAU,GACVG,OAAQ,SACRP,WAAY,UAEhB+C,cAAe,CACX3C,SAAU,GACVJ,WAAY,UAEhBklL,kBAAmB,CACf9kL,SAAU,GACVJ,WAAY,SACZX,MAAO9D,GAAQC,KAAKe,MACpB4F,cAAe,EACf3C,UAAW,GAEfwC,MAAO,CACH1C,SAAU,WACVQ,QAAS,GACTC,WAAY,EACZP,UAAW,IAEf6C,sBAAuB,CACnB/C,SAAU,WACVhI,IAAK,EACLiI,MAAO,IAEXgmL,YAAa,CACT/lL,WAAY,GACZmC,WAAY,GACZD,MAAO,qBAEXG,eAAgB,CACZH,MAAO,qBAEXX,aAAc,CACVC,aAAc,KAsBPokC,mBAlBf,SAAyB/uC,EAAmBi6C,GACxC,IAAM58B,EAAmBwrE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,oBAC/D4kB,EAAsBikE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,uBAClEmvL,EAAgCtmG,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,iCAC5E23D,EAAwBkxB,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,yBAEpEovL,EAAc,CAAC5yK,GAAY,YAAaC,GAAgBuO,gBAAiBxO,GAAY,WAAYC,GAAgBuO,iBAGvH,MAAO,CACH3N,mBACAuH,sBACAuqK,gCACAx3H,wBACAq3H,iBAPqBhvL,EAAMqb,KAAKhB,KAAKlb,OAAO,SAAAkc,GAAI,OAAI+zK,EAAYp9J,SAAS3W,EAAKgC,sBAWvE0xB,CAAyBs+I,IClclCgC,GAAoBj/I,GAAe,KAmC1Bk/I,GAjCS,SAACjwL,GAErB,OACIw6E,EAAA,cAACn9B,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBkuE,EAAA,qBAAKx5E,MAAO0I,GAAOmC,QACf2uE,EAAA,mBAAGx5E,MAAO0I,GAAO8D,mBACbgtE,EAAA,wCACAA,EAAA,cAAC5uD,GAAD,CACIvjB,MAAM,6FACN2f,QACIwyD,EAAA,cAACn+B,GAAAvqD,EAAD,CAAMkP,MAAO0I,GAAOqC,eAKpCyuE,EAAA,cAACzuD,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBs/B,EAAA,cAACzuD,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB47B,EAAA,cAACtiC,GAAA,EAAD,CACIppC,KAAK,QACLqoC,UAAWnD,GACXntC,MAAM,aACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU43I,GACV9lE,WAAS,EACT31G,SAAUvU,EAAMwvD,aAAexvD,EAAMi3E,iBCgBvDvtE,GAAiD,CACnD6/E,QAAS,CACLz/E,UAAW,SAIJomL,GAnDU,SAAClwL,GACtB,IAAMmwL,IAAsCnwL,EAAMo4B,aAAep4B,EAAMo4B,YAAYjlC,OAAS,IAC5F,OACI2N,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMyN,EAAMzN,KAAM+V,QAAStI,EAAMs4C,SAAUjwC,MAAM,sBACzDvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,KACIpI,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,kDAGAzvC,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIwE,WAAS,EACTr3C,MAAO0I,GAAO6/E,QACdluE,GAAG,iBACHxU,MAAM,mBACN2jB,KAAK,OACLh5B,QAAQ,WACRmI,MAAOqG,EAAMo4B,YACb+d,SAAUn2C,EAAMowL,cAChBj4I,WAAS,EACT0tC,WAAY,SAACD,GACM,UAAXA,EAAGlsF,KACHsG,EAAM+4C,UAGd/gD,MAAOm4L,EACPp9I,WAAYo9I,EAAoC,0BAAuBn6L,KAG/E8K,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAStJ,EAAMs4C,SAAU3uC,MAAM,WAAvC,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,gBACH/R,QAAS,kBAAMtJ,EAAM+4C,UACrBpvC,MAAM,UACN6gB,KAAK,SACLjW,SAAU47K,GALd,kBCaVE,GAAoBt/I,GAAe,KACnCu/I,GAAgB7/I,GAAS,qBACzB8/I,GAAyB9/I,GAAS,gCAClC+/I,GAAkB//I,GAAS,uBAW3BggJ,GAAmB,CAACj+I,GAAgC,yBAT9B,SAAC74C,EAAeu4C,GACxC,IAAGA,EAAShB,iBAAZ,CAEA,IAAMw/I,EAAiB1tJ,KAAarpC,GACpC,OAAK+2L,GAAmBx+I,EAASl0B,mBAAsF,IAAlE0yK,EAAe9tJ,UAAU3mC,QAAQi2C,EAASl0B,kBACpF,iDAEP,KAGF2yK,GAA0BlgJ,GAAS,iCACnCmgJ,GAAyBp+I,GAAgC,gCACzDq+I,GAA4B,CAACr+I,GAAgC,8BAA+BP,IAC5F6L,GAAe,CAAEC,QAAQ,GASzB+yI,eACF,SAAAA,EAAY9wL,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAk+L,IACtBl3L,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAm/L,GAAA3wL,KAAAvN,KAAMoN,KAwBV28E,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAzBlB79C,EA2B1Bm3L,YAAc,WACVn3L,EAAK4G,SAAS,CAAEwwL,WAAY,KAC5Bp3L,EAAKq3L,cA7BiBr3L,EAgC1Bq3L,WAAa,WACTr3L,EAAK4G,SAAS,CAAE0wL,cAAc,KAjCRt3L,EAoC1Bu3L,UAAY,SAAC3pK,GACT,IAAM7tB,EAAQ6tB,EAAM20B,OAAOxiD,MACb,UAAVA,GAAqBA,IAAUC,EAAK+G,MAAMqwL,YAC1Cp3L,EAAK4G,SAAS,CAAE0wL,cAAc,KAvCZt3L,EA2C1Bw3L,SAAW,WACPx3L,EAAKoG,MAAMowL,cAAcx2L,EAAK+G,MAAMqwL,YACpCp3L,EAAKq3L,cA7CiBr3L,EAgD1By3L,YAAc,SAAC7pK,GACmB,UAA1B5tB,EAAK+G,MAAMqwL,YACXp3L,EAAK4G,SAAS,CAAEwwL,WAAYxpK,EAAM20B,OAAOxiD,SAlDvBC,EAqD1B03L,kBAAoB,SAAC9pK,GACjB,GAAIA,EAAM20B,OAAQ,CACd,IAAMlqB,EAAS3T,SAASkJ,EAAM20B,OAAOxiD,OAC/B0zI,EAAYp7G,IAAW9U,GAAY,UAAWC,GAAgBuO,gBAC9D8d,EAAWxX,IAAW9U,GAAY,SAAUC,GAAgBuO,gBAC5D4hH,EAAWt7G,IAAW9U,GAAY,SAAUC,GAAgBuO,gBAC5D4lK,EAAwBlkD,GAAa5jG,GAAY8jG,EACvD3zI,EAAK4G,SAAS,CAAE6sI,UAAWA,IAC3BkkD,EAAuB33L,EAAKoG,MAAM4mI,YAAY,oBAAoB,GAAQhtI,EAAKoG,MAAM4mI,YAAY,oBAAoB,KA7DnGhtI,EAiE1B69B,SAAW,WACP,OAAOF,GAAe39B,EAAKoG,MAAMge,mBAAqB,EAAGpkB,EAAKoG,MAAMy3B,SAAU79B,EAAKoG,MAAMyb,MAAO7hB,EAAKoG,MAAM03B,kBAAkB,EAAO99B,EAAK+G,MAAMqwL,aAlEzHp3L,EAqE1Bq9E,WAAa,WACT,OAAiC,IAA1Br9E,EAAKoG,MAAMi3E,YApElBr9E,EAAK+G,MAAQ,CACTqwL,WAAY,GACZE,cAAc,EACdz5I,SAAS,EACT41F,WAAW,GANOzzI,kFAUP8vD,GAAkB,IAAAxhD,EACsBtV,KAAKoN,MAApDotC,EADyBllC,EACzBklC,QAASpvB,EADgB9V,EAChB8V,iBAAkB2jE,EADFz5E,EACEy5E,QAAS6vG,EADXtpL,EACWspL,OACtCC,EAAiB/nI,EAAUtc,UAAYA,EACvCskJ,EAAoBhoI,EAAU1rC,mBAAqBA,EACrDmvB,EAAY,GAEZC,IAASD,EAAYw0C,EAAQv0C,GAASzzC,OAC1C,IAAM0zI,EAAYrvH,IAAqBb,GAAY,UAAWC,GAAgBuO,gBAC9E/4B,KAAK4N,SAAS,CAAE6sI,UAAWA,IACvBjgG,IAAYokJ,GAAwB,KAAdrkJ,GAAoBnvB,IAAqByzK,GAAkBC,KACjF9+L,KAAK4N,SAAS,CAAEwwL,WAAY,GAAIv5I,SAAS,IACzC7kD,KAAKoN,MAAMo8G,YAAYhvE,EAASD,EAAWnvB,GAAkBlkB,KAAKlH,KAAK+pF,WAAY/pF,KAAK+pF,8CAqDvF,IAAAviF,EAAAxH,KACL,OAEIkO,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAEZJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOoC,YAAjB,kBAEJhL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,UACLqoC,UAAWnD,GACXntC,MAAM,QACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUk4I,GACV/7K,UAAQ,EACRk8B,UAAQ,EACR4H,WAAS,EACT2G,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACborC,KAAY3xC,IAAI,SAAAo2B,GAAG,OACA1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrEmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,mBACLqoC,UAAWnD,GACXntC,MAAM,mBACNwvC,QAAM,EACN7kD,QAAQ,WACR2kD,SAAUvjD,KAAK0+L,kBACfn5I,WAAS,EACT1H,UAAQ,EACR2H,SAAUm4I,GACVh8K,SAAU3hB,KAAKoN,MAAMwxL,QAAU5+L,KAAKoN,MAAMwvD,aAAe58D,KAAKqkF,aAC9Dj4B,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb6yB,KAAUp5B,IAAI,SAAAo2B,GAAG,OACE1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIrEmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,EAAG59C,MAAO0I,GAAOoB,YACnClY,KAAKoN,MAAMwxL,OACQ1wL,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWnD,GACXntC,MAAM,UACNrV,QAAQ,WACR2mD,WAAS,EACT5jC,UAAQ,EACRk8B,UAAQ,IAGZ3vC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWnD,GACXntC,MAAM,UACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUo4I,GACVr6I,SAAUvjD,KAAKu+L,UACf58K,SAAqC,IAA3B3hB,KAAK6kC,WAAWtkC,QAAgBP,KAAK+N,MAAM82C,SAAW7kD,KAAKoN,MAAMwvD,aAAe58D,KAAKqkF,aAC/FxmC,UAAQ,EACRuO,YAAalB,IAEbh9C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACb/G,KAAK6kC,WAAWrkC,IAAI,SAAAo2B,GAAG,OACpB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAI5L,YAAajkB,MAAO6vB,EAAI4O,aAAc5O,EAAI4O,gBAGlExlC,KAAK+N,MAAM82C,SAAW32C,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,CAAkB5xC,KAAM,GAAI6xC,UAAW,EAAGj0C,MAAO0I,GAAOqB,eAAgBpB,MAAM,gBAIjI7I,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,aACLqoC,UAAWnD,GACXntC,MAAM,YACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACTC,SAAUq4I,GACV5xI,KAAMjO,GACNr8B,UAAW3hB,KAAKoN,MAAMge,kBAAoBprB,KAAKoN,MAAMwvD,aAAe58D,KAAKqkF,aACzEj4B,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KACbkrC,KAAe/kC,OAAO,SAAAmyB,GAAM,OAAIA,EAAO2Q,UAAU3mC,QAAQ7B,EAAK4F,MAAMge,mBAAsB,IAAG5qB,IAAI,SAAAo2B,GAAG,OACjF1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAIpE/G,KAAK+N,MAAM0sI,WACZvsI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,cACLqoC,UAAWnD,GACXntC,MAAM,eACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT5jC,SAAU3hB,KAAKoN,MAAM2xL,mBACrB3yI,YAAalB,GACbiB,UAAW5wB,IAEXrtB,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KvTvFI,WAC9B,IAAMoqC,EAAef,KACrB,OAAOa,GAAoBE,GuTsFd6tJ,GAAqBx+L,IAAI,SAAAo2B,GAAG,OACT1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAKrEmH,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,kBACLqoC,UAAWnD,GACXntC,MAAM,oBACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAACu4I,GAAyBN,IACpC5/I,UAAQ,EACRl8B,SAAU3hB,KAAKoN,MAAMwvD,aAAe58D,KAAKqkF,gBAGjDn2E,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,IACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,aACLqoC,UAAWnD,GACXntC,MAAM,cACNrV,QAAQ,WACR2mD,WAAS,EACTC,SAAU,CAACw4I,GAAwBP,IACnCxxI,KAAMjO,GACNr8B,UAAW3hB,KAAKoN,MAAMu4B,YAI5B3lC,KAAKoN,MAAMqtI,WAAaz6I,KAAKoN,MAAMypC,SACjB3oC,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,eACLqoC,UAAWnD,GACXntC,MAAM,cACNwvC,QAAM,EACN7kD,QAAQ,WACR2mD,WAAS,EACT6G,YAAalB,GACbiB,UAAWzwB,GACX/Z,SAAU3hB,KAAKoN,MAAMwvD,aAAe58D,KAAKqkF,cAEzCn2E,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KvTgGpB,WAC1B,IAAMoqC,EAAef,KACrB,OAAO+D,GAAgBhD,GuTjGU8tJ,GAAiBz+L,IAAI,SAAAo2B,GAAG,OACrB1oB,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAK8vB,EAAInO,GAAI1hB,MAAO6vB,EAAInO,IAAKmO,EAAI7vB,WAInDmH,EAAAhP,EAAAiP,cAAA,aAEtBD,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GAAI4yB,GAAI,GACnB99C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,gBACLqoC,UAAWhC,GACXtuC,MAAM,iBACNrV,QAAQ,WACR2mD,WAAS,EACT4G,UAAW1wB,GACX+pB,SAAUy4I,GACVhyI,KAAMjO,GACNr8B,SAAU3hB,KAAKoN,MAAMwvD,aAAe58D,KAAKqkF,mBAMvDrkF,KAAKqkF,cACan2E,EAAAhP,EAAAiP,cAAC+wL,GAAD,CACIv/L,KAAMK,KAAK+N,MAAMuwL,aACjB94J,YAAaxlC,KAAK+N,MAAMqwL,WACxBZ,cAAex9L,KAAKy+L,YACpBt4I,OAAQnmD,KAAKw+L,SACb94I,SAAU1lD,KAAKq+L,qBA9QN9vL,IAAMC,eAwTxBsuC,mBAlCf,SAAyB/uC,EAAmBi6C,GACxC,IAAM58B,EAAmBwrE,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,oBAE/DysC,GADczsC,EAAMmhB,WAAWnO,QAAQu5B,mBAAmB,IAAM,IAC1CE,QACtBhV,EAAcoxD,aAAkB5uC,EAASiG,SAA3B2oC,CAAqC7oF,EAAO,eAC1D82B,EAAW92B,EAAMsxB,OAAOwF,SACxBkqD,EAAUhhF,EAAMsxB,OAAOwQ,OACvB4qG,EAAYrvH,IAAqBb,GAAY,UAAWC,GAAgBuO,gBACxE8d,EAAWzrB,IAAqBb,GAAY,SAAUC,GAAgBuO,gBACtE4vJ,EACF5pL,OAAO8wC,OAAO9hC,EAAMiT,SAAS6uB,QAAQ1mB,KAAK,SAAA0+B,GAAO,MAAoB,uBAAhBA,EAAQ/gD,MAC3Dg+B,EACFt4B,QAAQm8K,IAA6BA,EAAwB5hL,OAA0D,UAAhD4hL,EAAwB5hL,MAAMurB,eAAgE,MAAjCq2J,EAAwB5hL,QAEhK,MAAO,CACH8hB,MAAO9a,EAAMqb,KAAKhB,KAClBgD,mBACAovB,UACA3V,WACAkqD,UACAvpD,cACAi1G,YACA5jG,WACA/R,qBAIR,SAA4BzlC,GACxB,MAAO,CACHmqH,YAAa,SAAChvE,EAASD,EAAWnvB,GAArB,OAA0C/rB,EAASmqH,GAAYhvE,EAASD,EAAWnvB,KAChGoyK,cAAe,SAACthL,GAAD,OAAkB7c,EAAS2uD,aAAO,cAAe,cAAe9xC,OAIxE4gC,CAA6CohJ,IC/W7CiB,GApBuB,SAAC/xL,GACnC,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM2H,SACH7G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACXt/C,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,4BACPqkD,SAAU1sD,EAAMghL,aAChB1gI,UAAW,EACXmL,YAAY,EACZE,aAAc,QCSpCjiD,GAAiD,CACnD00C,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAIPulL,GA5BoB,SAAChyL,GAChC,OACAc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACSlB,EAAMiyL,gCACHnxL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO00C,WAC/Bt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACft/C,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAOrI,EAAMkyL,cACTxlI,SAAU1sD,EAAMmyL,yBAChB7xI,UAAW,EACXmL,YAAY,EACZE,aAAc,QCOpCjiD,GAAiD,CACnD00C,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAIP2lL,GA5BuB,SAACpyL,GACnC,OACIc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACKlB,EAAM2H,SACH7G,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO00C,WAC/Bt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACft/C,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACQvnD,MAAO,oBACPqkD,SAAU1sD,EAAMghL,aAChB1gI,UAAW,EACXmL,YAAY,EACZE,aAAc,QCS7B4hC,GAAY,cAyNnB7jF,GAAiD,CACnDy2C,YAAa,CACTl/C,UAAW,QACX6I,UAAW,IAEf8oF,aAAc,CACV7oF,YAAa,OAEjB8B,OAAQ,CACJnB,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElB2xC,SAAU,CACN1zC,SAAU,GACVf,MAAO9D,GAAQC,KAAKU,KACpBiG,aAAc,IAElB4lL,eAAgB,CACZ5lL,aAAc,QAIPsrC,gBAAoC,CAAEF,KAAM01C,IAA5Cx1C,CA1MQ,SAAC/3C,GAAiB,IAC7BwxL,EAA6KxxL,EAA7KwxL,OAAQ94I,EAAqK14C,EAArK04C,WAAYF,EAAyJx4C,EAAzJw4C,QAASF,EAAgJt4C,EAAhJs4C,SAAUL,EAAsIj4C,EAAtIi4C,aAAckuD,EAAwHnmG,EAAxHmmG,kBAAmBmsF,EAAqGtyL,EAArGsyL,uBAAwB1/H,EAA6E5yD,EAA7E4yD,MAAO2/H,EAAsEvyL,EAAtEuyL,qBAAsBC,EAAgDxyL,EAAhDwyL,mBAAoBxiH,EAA4BhwE,EAA5BgwE,YAAayiH,EAAezyL,EAAfyyL,WAChKC,EAAoBtoJ,GAAWpqC,EAAM2rB,gBAAkB,IAAMwe,GAAYnqC,EAAM2rB,gBAAkB,GACjG2jD,EAAc/lC,GAAevpC,EAAM2rB,gBAAkB,GACrDqtH,EAAWzuG,GAAMvqC,EAAM2rB,gBAAkB,GACzCwsH,EAAmB7oE,GAAe0pE,EAIxC73I,IAAMq9C,UAAU,WACRgzI,GAEA5+H,EAAKjgE,WAAL,EAAAhB,OAAAgO,EAAA,EAAAhO,CADoB,CAAC,gBAAiB,sBAAuB,gBAAiB,wBAAyB,qBAG5G,CAAC6/L,EAAQ5+H,IAEZ,IAAMl8C,EAA2BvV,IAAM2xD,QAAQ,kBAAMpuC,GAAe1kB,EAAM2yL,mBAAoBr3K,GAAMsJ,eAChG,CAAC5kB,EAAM2yL,qBAELhB,GAAsB3xL,EAAMu4B,UAAYv4B,EAAMwvD,aAAexvD,EAAMkjB,YACzE,OACIpiB,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAOmC,QAA1B,uBACA/K,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO2oL,gBACfvxL,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAA1B,yEACAt9C,EAAAhP,EAAAiP,cAAC0gL,GAAD,CACIjyH,YAAaxvD,EAAMwvD,YACnBw3C,iCAAkChnG,EAAMgnG,iCACxCk6E,qBAAsBlhL,EAAMkhL,uBAEhCpgL,EAAAhP,EAAAiP,cAAC2gL,GAAD,CACI/5K,QAAS3H,EAAM2hL,4BACfX,aAAchhL,EAAM4hL,uBAExB9gL,EAAAhP,EAAAiP,cAAC6xL,GAAD,CACIjrL,QAAS3H,EAAM6yL,uBACf7R,aAAchhL,EAAM8yL,0BAExBhyL,EAAAhP,EAAAiP,cAACgyL,GAAD,CACIvjI,YAAaxvD,EAAMwvD,YACnByiI,+BAAgCjyL,EAAMiyL,+BACtCE,yBAA0BnyL,EAAMmyL,yBAChCD,cAAelyL,EAAMgzL,6BAEzBlyL,EAAAhP,EAAAiP,cAACkyL,GAAD,CACItrL,QAAS3H,EAAMkzL,4BACflS,aAAchhL,EAAMmzL,+BAEvBnzL,EAAMozL,mBAAqBtyL,EAAAhP,EAAAiP,cAACk3F,GAAD,CACxBx/F,SAAU,IAEbuH,EAAMqzL,qBACHvyL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAO+X,GAAO00C,WAC/Bt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACXt/C,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAM,wBACNqkD,SAtCJ,qKAuCIpM,UAAW,EACXmL,YAAY,EACZE,aAAc,MAK7Bj1C,EAAyB/c,QAAS,EAalC24L,GACGxxL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,gBACPqkD,SA5EM,ohBA6ENpM,UAAW,EACXqL,aAAc,EACdF,YAAY,MAK3B+mI,GACG1xL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,uBACPqkD,SAAQ,+BAAAv1D,OAAiC64E,EAAjC,sCAAA74E,OAAiFs7L,EAAjF,yFACRnyI,UAAW,EACXqL,aAAc,EACdF,YAAY,MAK3B06C,GACGrlG,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,mBACPqkD,SAAS,sGACTpM,UAAW,EACXqL,aAAc,EACdF,YAAY,MAK3BinI,GACG5xL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,mBACPqkD,SAAS,wMACTpM,UAAW,EACXmL,YAAY,MAK3B8mI,EAAqBe,0BAClBxyL,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAAC9H,MAAO85E,GAAa18B,UAChCt9C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,IACXlrB,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACIvnD,MAAO,iBACPqkD,SAAU,kHAAoH6lI,EAAqBxiH,sBAAwB,IAC3KzvB,UAAW,EACXmL,YAAY,EACZE,aAAc,OAMlC7qD,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,WAC1Bt9C,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYxvC,MAAO0I,GAAO00C,UAAUt9C,EAAAhP,EAAAiP,cAAA,iDAApC,MAEJD,EAAAhP,EAAAiP,cAAA,YACID,EAAAhP,EAAAiP,cAACwyL,GAAD,CAAoBt8G,WAAYj3E,EAAMi3E,WAAYu6G,OAAQA,EAAQ5qD,YAAa5mI,EAAM4gD,OAAQC,SAAU0sC,GAAW/9B,YAAaxvD,EAAMwvD,YAAaj3B,SAAUv4B,EAAMu4B,SAAWo5J,mBAAoBA,IACjM7wL,EAAAhP,EAAAiP,cAACyyL,GAAD,CAAoBv8G,WAAYj3E,EAAMi3E,WAAYp2B,SAAU0sC,GAAW/9B,YAAaxvD,EAAMwvD,cAC1F1uD,EAAAhP,EAAAiP,cAAC0yL,GAAD,CAAgBx8G,WAAYj3E,EAAMi3E,WAAYp2B,SAAU0sC,GAAW/9B,YAAaxvD,EAAMwvD,cACtF1uD,EAAAhP,EAAAiP,cAAC2yL,GAAD,CAAyBz8G,WAAYj3E,EAAMi3E,WAAYp2B,SAAU0sC,GAAWq5C,YAAa5mI,EAAM4gD,OAAQ4O,YAAaxvD,EAAMwvD,cAC1H1uD,EAAAhP,EAAAiP,cAAC8uD,GAAA,EAAD,CACI/hD,YAAY,GACZmpE,WAAYj3E,EAAMi3E,YAAcvgE,EAAyB/c,MACzDmV,KAAK,WACL0gD,YAAaxvD,EAAMwvD,YACnB8f,YAAa6oE,EACbhhG,UAAWq2I,KAEf1sL,EAAAhP,EAAAiP,cAAC4yL,GAAD,CAAoB18G,WAAYj3E,EAAMi3E,WAAYp2B,SAAU0sC,GAAW/9B,YAAaxvD,EAAMwvD,cAC1F1uD,EAAAhP,EAAAiP,cAAC6yL,GAAD,CAAiB38G,WAAYj3E,EAAMi3E,WAAYp2B,SAAU0sC,GAAW/9B,YAAaxvD,EAAMwvD,cACvF1uD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOy2C,aACfr/C,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQvuC,MAAO0I,GAAOkpF,aAActpF,QAASgvC,GAA7C,UACAx3C,EAAAhP,EAAAiP,cAACw3C,GAAD,CACIl9B,GAAG,gBACH/R,QAAS2uC,EACTzmD,QAAQ,YACRmY,MAAM,UACN8tC,QAASiB,EACTnkC,SAAUikC,GAAWx4C,EAAMuuF,aAAevuF,EAAMwvD,cAAoC,IAArBxvD,EAAMi3E,YANzE,uBCjHd48G,eAmCF,SAAAA,EAAY7zL,GAAc,IAAApG,EAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAihM,IACtBj6L,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAkiM,GAAA1zL,KAAAvN,KAAMoN,KAnCV0gD,WAAapgD,GAAKyjB,iBAkCQnqB,EAjC1Bk6L,YAAcxzL,GAAK+jB,6BAiCOzqB,EA/B1Bm6L,iBAAmB,YA+BOn6L,EA9B1Bo6L,iBAAmB,YA8BOp6L,EA7B1Bq6L,sBAAwB,iBA6BEr6L,EA5B1Bs6L,2BAA6B,sBA4BHt6L,EA3B1Bu6L,6BAA+B,gBA2BLv6L,EA1B1Bw6L,6BAA+B,gBA0BLx6L,EAzB1By6L,2BAA6B,cAyBHz6L,EAxB1B06L,0CAA4C,6BAwBlB16L,EAvB1B26L,YAAc,OAuBY36L,EArB1B46L,MAAQr3K,GAAY,MAAOC,GAAgBuO,gBAqBjB/xB,EApB1B66L,MAAQt3K,GAAY,MAAOC,GAAgBuO,gBAoBjB/xB,EAnB1Bq0K,WAAa9wJ,GAAY,UAAWC,GAAgBuO,gBAmB1B/xB,EAlB1Bu0K,UAAYhxJ,GAAY,SAAUC,GAAgBuO,gBAkBxB/xB,EAjB1Bs0K,UAAY/wJ,GAAY,SAAUC,GAAgBuO,gBAiBxB/xB,EAhB1Bo4B,oBAAsB7U,GAAYvjB,EAAKm6L,iBAAkB32K,GAAgBiU,cAgB/Cz3B,EAf1By5B,eAAiBlW,GAAYvjB,EAAK26L,YAAan3K,GAAgBiU,cAerCz3B,EAd1Bs5B,qBAAuB/V,GAAY,aAAcC,GAAgBiU,cAcvCz3B,EAb1Bw3B,oBAAsBjU,GAAYvjB,EAAKo6L,iBAAkB52K,GAAgBiU,cAa/Cz3B,EAZ1B63B,yBAA2BtU,GAAYvjB,EAAKq6L,sBAAuB72K,GAAgBiU,cAYzDz3B,EAX1Bi4B,8BAAgC1U,GAAYvjB,EAAKs6L,2BAA4B92K,GAAgBiU,cAWnEz3B,EAV1Bs6B,4BAA8B/W,GAAYvjB,EAAKw6L,6BAA8Bh3K,GAAgBuW,mBAUnE/5B,EAT1Bm6B,0BAA4B5W,GAAYvjB,EAAKy6L,2BAA4Bj3K,GAAgBuW,mBAS/D/5B,EAR1Bq6B,4BAA8B9W,GAAYvjB,EAAKu6L,6BAA8B/2K,GAAgBuW,mBAQnE/5B,EAP1B86L,sBAAwBv3K,GAAY,aAAcC,GAAgB0W,uBAOxCl6B,EAN1B+6L,eAAiBx3K,GAAY,SAAUC,GAAgBsjB,SAM7B9mC,EAL1Bg7L,gBAAkBz3K,GAAY,UAAWC,GAAgBsjB,SAK/B9mC,EAJ1Bw0L,eAAiBjxK,GAAY,eAAgBC,GAAgBoI,mBAInC5rB,EAH1Bi7L,qBAAuB13K,GAAY,mBAAoBC,GAAgBoI,mBAG7C5rB,EAgE1Bk7L,gBAA0B,EAhEAl7L,EAiE1Bm7L,yBAjE0B,EAAAn7L,EAuH1Bo7L,mBAAqB,SAAC70G,GAClB,IAAMnkE,EAAOpiB,EAAKq7L,SAASr7L,EAAKoG,MAAM03D,UAAU18C,KAAMphB,EAAKoG,MAAMic,QAEjE,GAA+B,wBAA3BkkE,EAAS7pF,cAAyC,CAClD,IAAM4+L,KAAkBl5K,IAAQA,EAAKuJ,sBAAuBvJ,EAAKuJ,sBAAwB3rB,EAAKi7L,sBAAiCt5K,GAAgC3hB,EAAKoG,MAAM+a,eAAe5nB,OAAS,EAC5LgiM,IAAuBn5K,IAAQ6a,GAAkB7a,GACjDu2K,IAAuBv2K,IAAQ8a,GAAoB9a,GACzD,OAAOk5K,GAAiBC,GAAwB5C,EAE/C,MAA+B,UAA3BpyG,EAAS7pF,kBACO0lB,IAAQ4a,GAAe5a,KAjI1BpiB,EA4I1Bw7L,2BAA6B,SAACp5K,GAC1B,IAAMq5K,EAAer5K,EAAKyzD,SAC1B,OAAOxqC,KACFnlC,OAAO,SAAAmyB,GAAM,OAAIA,EAAO2Q,UAAU3mC,QAAQ+f,EAAKgC,mBAAqB,IACpE5qB,IAAI,SAAA6+B,GAAM,MAAK,CACZy7C,UAAWz7C,EAAO5W,GAClBsyD,gBAAyC,IAAxB0nH,EAAaliM,YAAe6C,EACzCgmB,EAAKyzD,SAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcz7C,EAAO5W,KAAMW,EAAKyzD,SAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcz7C,EAAO5W,KAAKsyD,qBAAkB33E,EAC/H43E,mBAA4C,IAAxBynH,EAAaliM,YAAe6C,EAC5CgmB,EAAKyzD,SAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcz7C,EAAO5W,KAAMW,EAAKyzD,SAAS1zD,KAAK,SAAAzc,GAAC,OAAIA,EAAEouE,YAAcz7C,EAAO5W,KAAKuyD,wBAAqB53E,MArJpH4D,EAyJlB07L,eAAiB5hL,aAAW,SAACsH,EAAciB,GAC/C,IAAM0lE,EAAU3+C,KAChB,OAAOhoB,EACFlb,OAAO,SAAAkc,GAAI,OAAIA,EAAKX,KAAOY,GAAUD,EAAKgC,iBAAmB,GAAKhC,EAAK6U,YAAc7U,EAAK6U,WAAa,IAAMwY,GAAUrtB,EAAKgC,oBAAsBorB,GAAgBptB,EAAKgC,oBACvK5qB,IAAI,SAAA4oB,GAAI,MACJ,CACGX,GAAIW,EAAKX,GACT85D,QAASwM,EAAQ3lE,EAAKgC,kBAAkBrkB,MACxCiwE,SAAU5tD,EAAKjJ,iBAAmB,GAClC8d,WAAY7U,EAAK6U,WACjB69B,UAAU,OAnKA90D,EA2KlB27L,mBAAqB7hL,aAAW,SAACsH,EAAciB,GACnD,OAAOjB,EACFlb,OAAO,SAAA7C,GAAC,OAAIA,EAAEu4D,YAAYz5C,KAAK,SAAAk5I,GAAC,OAAIA,EAAEx/F,WAAaC,GAAeC,SAAWs/F,EAAE55I,KAAOzhB,EAAKoG,MAAMic,WACjG7oB,IAAI,SAAA4oB,GAAI,OAAIA,EAAKjJ,oBA9KAnZ,EA0L1B47L,iBAAmB9hL,aAAW,SAACmd,EAAoB7U,GAC/C,IAAI+a,EAAQ,GACRvF,OAAex7B,EACfgmB,IACA+a,EAAQ/a,EAAK+a,MACbvF,EAAexV,EAAKwV,cAExB,IAEIikK,EADAz5K,GAAQA,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuBuD,mBAGnG,IAAIuY,EAAS,GACTzY,GAAW,EAIf,GAHIqE,GAAQA,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuB2B,YAAWma,EAAS,IACnHpU,GAAQA,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuBoD,YAAW0Y,EAAS,IACnHpU,GAAQA,EAAKG,sBAAwBH,EAAKG,qBAAqBwW,SAASre,GAAuBqD,YAAWA,GAAW,GACrHkZ,IAAej3B,EAAKo4B,oBACpByjK,EAAiB1jK,GAAkCgF,QAElD,GAAIlG,IAAej3B,EAAKw3B,oBACzBqkK,EAAkBtkK,GAA8B4F,EAAO3G,EAAQzY,QAE9D,GAAIkZ,IAAej3B,EAAKs5B,qBACzBuiK,EAAiBxiK,GAA+B8D,EAAOvF,QAEtD,GAAIX,IAAej3B,EAAK63B,yBACzBgkK,EAAkBlkK,GAAmCwF,EAAOpf,EAAUE,EAAmB2Z,EAAcpB,QAEtG,GAAIS,IAAej3B,EAAKi4B,8BACzB4jK,EAAiB7jK,GAAwCmF,EAAOvF,EAAcpB,OAE7E,IAAIS,IAAej3B,EAAKy5B,eAIzB,MAAO,GAHPoiK,EAAiB1jK,GAAkCgF,GAQvD,OAHIpf,IACA89K,EAAkBA,EAAe31L,OAAO,SAAA2wB,GAAC,OAAIA,EAAEN,OAAO,MAEnDslK,IAlOe77L,EAqO1Bq7L,SAAWvhL,aAAW,SAACsI,EAAcC,GAAf,OAAkCD,EAAKD,KAAK,SAAAd,GAAG,OAAIA,EAAII,KAAOY,MArO1DriB,EAya1B87L,gBAAkB,kBAAM97L,EAAK4G,SAAS,CAAEm1L,eAAe,KAza7B/7L,EA0a1Bg8L,iBAAmB,kBAAMh8L,EAAK4G,SAAS,CAAEm1L,eAAe,KA1a9B/7L,EA2a1Bi8L,cAAgB,kBAAMj8L,EAAK4G,SAAS,CAAEs1L,aAAa,KA3azBl8L,EA4a1Bm8L,eAAiB,kBAAMn8L,EAAK4G,SAAS,CAAEs1L,aAAa,KA5a1Bl8L,EA+a1B2pK,2BAA6B,kBAAM3pK,EAAK4G,SAAS,CAAEgjK,iBAAiB,KA/a1C5pK,EAgb1B6pK,2BAA6B,kBAAM7pK,EAAK4G,SAAS,CAAEgjK,iBAAiB,KAhb1C5pK,EAkb1Bo8L,oBAAsB,SAACt2L,GACnB9F,EAAKk7L,gBAAiB,EACtBl7L,EAAKm7L,oBAAsBr1L,EACK,IAA5B9F,EAAK+G,MAAMs1L,cAAsBr8L,EAAK8mD,WACtC9mD,EAAK4G,SAAS,CAAEy1L,aAAcv2L,IAE9B9F,EAAK4G,SAAS,CAAEspD,WAAW,KAxbTlwD,EA2b1Bs8L,kCAAoC,WAChC,IAAMl6K,EAAOpiB,EAAKq7L,SAASr7L,EAAKoG,MAAM03D,UAAU18C,KAAMphB,EAAKoG,MAAMic,QACjEriB,EAAK4G,SAAS,CAAEspD,WAAW,EAAOqsI,aAAcn6K,EAAOA,EAAKX,GAAK,SA7b3CzhB,EAgc1Bw8L,yBAA2B,SAACn6K,GACxBriB,EAAKk7L,gBAAiB,EACP,QAAX74K,GACAriB,EAAK4G,SAAS,CAAEy1L,aAAc,IAGlCr8L,EAAK4G,SAAS,CAAE21L,aAAcl6K,IACzBriB,EAAK8mD,YACN9mD,EAAK4G,SAAS,CAAEspD,WAAW,KAEC,IAA5BlwD,EAAK+G,MAAMs1L,cAAsBr8L,EAAK8mD,aACtC9mD,EAAKoG,MAAMq2L,aAAap6K,IA3cNriB,EA+c1B08L,8BAAgC,gBACKtgM,IAA7B4D,EAAKm7L,qBACLn7L,EAAK4G,SAAS,CAAEy1L,aAAcr8L,EAAKm7L,oBAAqBjrI,WAAW,KAjdjDlwD,EAod1B28L,2BAA6B,WACzB38L,EAAKoG,MAAMq2L,aAAaz8L,EAAK+G,MAAMw1L,cACnCv8L,EAAK4G,SAAS,CAAEspD,WAAW,KAtdLlwD,EAyd1ByxL,YAAc,SAACrvK,EAAYw6K,GACvB,IAAMC,EAAU,CACZ/hK,cAAe96B,EAAKoG,MAAM00B,cAC1B+5C,QAAS+nH,GAEb58L,EAAKoG,MAAM02L,iBAAiB16K,EAAKX,GAAIo7K,IA9df78L,EAie1B01D,gBAAkB,SAACrzC,GACfriB,EAAK4G,SAAS,CACVm2L,iBAAkB,GAClBtnI,kBAAkB,KApeAz1D,EAue1Bg9L,cAAgB,WACZh9L,EAAK4G,SAAS,CACVm2L,iBAAkB,GAClBpf,gBAAgB,EAChBjB,iBAAiB,EACjBE,YAAY,EACZE,aAAa,EACbI,qBAAqB,EACrBF,iBAAiB,EACjBI,mBAAmB,KAhfDp9K,EAmf1B21D,iBAAmB,WACf31D,EAAK4G,SAAS,CACVm2L,iBAAkB,GAClBtnI,kBAAkB,KAtfAz1D,EA0f1Bi9L,eAAiB,WACbj9L,EAAK4G,SAAS,CACVm2L,iBAAkB,GAClBpf,gBAAgB,KA7fE39K,EAggB1BkjF,aAAe,SAAChuE,GACZlV,EAAK87L,kBACL97L,EAAK4G,SAAS,CAAEmjK,gBAAgB,IAChC/pK,EAAKoG,MAAMm0H,WAAWv6H,EAAKoG,MAAMic,OAAQnN,GAAMhV,KAAKF,EAAKoG,MAAMwxK,OAAQ53K,EAAKg8L,mBAngBtDh8L,EAqgB1BwiL,WAAa,SAACttK,GACVlV,EAAKi8L,gBACLj8L,EAAK4G,SAAS,CAAEmjK,gBAAgB,IAChC,IAAM7mK,EAAuB,CACzBmf,OAAQriB,EAAKoG,MAAMic,OACnBu6J,WAAY58K,EAAK+G,MAAM61K,WACvBE,YAAa98K,EAAK+G,MAAM+1K,YACxBI,oBAAqBl9K,EAAK+G,MAAMm2K,oBAChCF,gBAAiBh9K,EAAK+G,MAAMi2K,gBAC5BI,kBAAmBp9K,EAAK+G,MAAMq2K,mBAGlCp9K,EAAKoG,MAAMq8K,SAASziL,EAAKoG,MAAMic,OAAQnN,EAAMhS,GAAShD,KAAKF,EAAKoG,MAAMwxK,OAAQ53K,EAAKm8L,iBAjhB7Dn8L,EAohB1Bk9L,iBAphB0B,eAAAplM,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAohBP,SAAAC,EAAOkyD,EAA0BloC,GAAjC,IAAA+6K,EAAAn5K,EAAAkO,EAAAkrK,EAAAzhD,EAAA0hD,EAAAz+H,EAAAF,EAAA4+H,EAAAC,EAAAC,EAAAC,EAAA7hI,EAAAluD,EAAAgwL,EAAAjgK,EAAAo4C,EAAAc,EAAAgnH,EAAA7mH,EAAA,OAAA7+E,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UACT0kM,EAAkBn9L,EAAKoG,MAAMy3B,SAAS1b,KAAK,SAAA9e,GAAC,OAAIA,EAAEm7B,cAAgB8rB,EAAW9rB,cAC7Exa,EAAc5B,EAAOA,EAAK4B,YAAcm5K,EAAkBA,EAAgBn5K,YAAc,SACxFkO,EAAc9P,EAAOA,EAAK8P,YAAcirK,EAAkBA,EAAgBjrK,YAAc,GACxFkrK,EAAmBh7K,GAAQA,EAAKuJ,qBAAuBvJ,EAAKuJ,sBAAwB3rB,EAAKi7L,qBACzFt/C,EAASlsG,GAAU6a,EAAWlmC,kBAC9Bi5K,EAAc7tJ,GAAgB8a,EAAWlmC,mBAG1Cu3H,IAAU0hD,GAAiBD,GAI5B1+H,EAAwBpU,EAAWoU,sBAE/BE,EAD6C,UAA7CtU,EAAW4rI,8BACe5rI,EAAWszI,sBAETtzI,EAAW4rI,8BAAgCvwL,OAAO2kD,EAAW4rI,oCAAiC95L,IAP9HwiE,OAA0BxiE,EAC1BsiE,OAAwBtiE,GAUtBkhM,EAAoB/jK,GAAqB+wB,EAAWlmC,kBACpDm5K,EAA6B3jK,GAA8B0wB,EAAWlmC,kBACtEo5K,EAA+Bx9L,EAAK86L,sBACpC2C,EAAsBziK,GAAyBsvB,EAAWlmC,kBAE5Dw3C,EAAcx5C,EAAOA,EAAKw5C,YAAc,GACtCluD,EAAOkuD,EAAYz5C,KAAK,SAAA6Q,GAAC,OAAIA,EAAE6oC,WAAaC,GAAeC,UAE7DzR,EAAW3+B,qBAAuB2+B,EAAW3+B,sBAAwB3rB,EAAKw0L,eACrE9mL,EAGDA,EAAK+T,GAAK6oC,EAAWuzI,oBAFrBjiI,EAAY/0C,KAAK,CAAEpF,GAAI6oC,EAAWuzI,oBAAsBhiI,SAAUC,GAAeC,UAIrFH,EAAcA,EAAY11D,OAAO,SAAA8sB,GAAC,OAAIA,EAAE6oC,WAAaC,GAAeC,UAGlE2hI,EAA2BpzI,EAAW3+B,qBAAuB2+B,EAAW3+B,sBAAwB3rB,EAAKi7L,sBAAwBoC,EAC7H5/J,EAAgBigK,GAA4BpzI,EAAW7sB,cAAgB6sB,EAAW7sB,cAAgB,GAAK,IAAM6sB,EAAW7sB,cAExHo4C,EAAW/qD,GAAe1I,GAAQA,EAAK2I,eAAiB3I,EAAK2I,eAAiB,GAAIrJ,GAAMsJ,cAAcjrB,MACvGqiB,GAAQA,EAAKyzD,SAAWzzD,EAAKyzD,SAAW,GACzCvrB,EAAWurB,SAAS3vE,OAAO,SAAA61D,GAAO,OAAIA,EAAQgY,iBAAmBhY,EAAQiY,qBAAoBx6E,IAAI,SAAAuiE,GAAO,MAAK,CACzG+X,UAAW/X,EAAQ+X,UACnBC,gBAAiBhY,EAAQgY,gBACzBC,mBAAoBjY,EAAQiY,sBAG9B2C,EAAcrsB,EAAWqsB,YACzBgnH,EAAgBhnH,IAAgBpzD,GAAY,cAAeC,GAAgBykB,iBAE3E6uC,EApDS/+E,OAAA0G,EAAA,EAAA1G,CAAA,GAqDRuyD,EArDQ,CAsDX7sB,gBACAzZ,cACAkO,cACAzQ,GAAIW,EAAOA,EAAKX,GAAK,GACrBo0D,WACAvxD,UAAWlC,EAAOA,EAAKkC,UAAY,GACnC2S,WAAY7U,EAAOA,EAAK6U,WAAaqmK,EACrCngK,MAAO/a,GAAQA,EAAK+a,MAAQ/a,EAAK+a,MAAQn9B,EAAK47L,iBAAiB0B,EAAmBl7K,GAClF6X,oBAAqB7X,GAAQA,EAAK6X,oBAAsB7X,EAAK6X,oBAAsBsjK,EACnFziK,cAAe1Y,EAAOA,EAAK0Y,cAAgBd,GAAyBujK,EAA4BC,EAA8BC,GAC9H7lK,aAAcxV,EAAOA,EAAKwV,aAAe6lK,EACzCl+H,cAAejV,EAAWiV,eAAiB,GAC3CuW,gBAAiB1zD,EAAOA,EAAK0zD,gBAAkB,GAC/CE,SAAU5zD,EAAOA,EAAK4zD,SAAW,GACjCE,aAAc9zD,EAAOA,EAAK8zD,kBAAe95E,EACzC65E,OAAQ3rB,EAAW2rB,OAAS3rB,EAAW2rB,YAAS75E,EAChD2gE,iBAAgB36C,GAAOA,EAAK26C,eAC5B6B,0BACAF,wBACAhmD,cAAe4xC,EAAW5xC,eAAiB4xC,EAAW5xC,cAAcsP,QAAQ,OAAOqN,SACnF9S,qBAAsBH,EAAOA,EAAKG,qBAAuB,GACzDq5C,cACAhmC,oBAAqBxT,EAAOA,EAAKwT,oBAAsByU,KAAyBnkC,OAAO,SAAAigL,GAAE,MAAiC,cAA7BA,EAAG57I,wBAAuC,GAAG3U,oBAC1IM,cAAe9T,EAAOA,EAAK8T,mBAAgB95B,EAC3Cq6E,UAAWr0D,EAAOA,EAAKq0D,UAAY,GACnCjjC,QAASxzC,EAAKoG,MAAMitC,YAAYG,QAC9BmjC,YAAaA,EACbj6C,gBAAiBihK,IAGrBv7K,GAAQpiB,EAAK4G,SAAS,CAAEmjK,gBAAgB,KAEtC3nJ,EAtFW,CAAA7pB,EAAAE,KAAA,gBAAAF,EAAAw9C,OAAA,SAuFJ/1C,EAAKoG,MAAM03L,WAAWhnH,GAAS52E,KAAK,WACvC,IAAMy4L,EAAuB34L,EAAK+9L,wBAAwBzzI,EAAW5xC,cAAe0J,EAAK+zD,uBACzFn2E,EAAK4G,SAAS,CAAE+xL,yBAChBx3J,GAAcE,eACfF,GAAcE,cA3FN,eAAA9oC,EAAAw9C,OAAA,SA6FJ/1C,EAAKoG,MAAM43L,QAAQlnH,GACrB52E,KAAK,SAACmiB,GACHriB,EAAKoG,MAAMq2L,aAAyC,QAA5Bz8L,EAAK+G,MAAMw1L,aAAyBl6K,EAASriB,EAAK+G,MAAMw1L,eACjFp7J,GAAcE,cAhGV,yBAAA9oC,EAAAM,SAAAT,MAphBO,gBAAAU,EAAAyB,GAAA,OAAAzC,EAAAiB,MAAAC,KAAAC,YAAA,GAAA+G,EAunB1Bi+L,wBAvnB0B,eAAA/jM,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAunBA,SAAAgC,EAAOmwD,EAAiCloC,GAAxC,IAAA5T,EAAAm1K,EAAAua,EAAApF,EAAAqF,EAAAC,EAAAjhK,EAAAkhK,EAAAvjK,EAAAb,EAAAqkK,EAAAC,EAAA,OAAAtmM,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cACd+V,EAAwB87C,EAAxB97C,QAASm1K,EAAer5H,EAAfq5H,WACXua,GAAgB1vL,GAAW,IAAItI,OAAO,SAAAq4B,GAAC,OAAIA,EAAEu2B,WAAUt7D,IAAI,SAAA+kC,GAAC,OAAIA,EAAE9c,KAClEq3K,EAAoBtoJ,GAAWpuB,EAAKgC,kBAAoB,IAAMmsB,GAAYnuB,EAAKgC,kBAAoB,GACzGkmC,EAAW4rB,aAAe,GACtB5rB,EAAWq5H,aAEPr5H,EAAW4rB,aADX4iH,EAC0B5wJ,GAAwBC,cAExBD,GAAwBE,wBAKtD+1J,GAAsB,EAC1B7zI,EAAW1yB,aAAa5V,QAAQ,SAAAw8K,GAC5B,IAAMC,EAAcr8K,EAAKwV,aAAazV,KAAK,SAAAu8K,GAAQ,OAAIA,EAAS9lK,oBAAsB4lK,EAAS5lK,oBAC1F6lK,GAAeA,EAAY5lK,YAAc2lK,EAAS3lK,YAAWslK,GAAsB,KAE5F/7K,EAAKwV,aAAe0yB,EAAW1yB,aAC3BwmK,EAAqBh8K,EAAK6X,qBAAuB7X,EAAK6X,sBAAwBj6B,EAAKs6B,4BAEjF6C,EAA8B,IAAtB/a,EAAK+a,MAAM5jC,QAAgB4kM,EAAsBn+L,EAAK47L,iBAAiBx5K,EAAK6U,WAAa7U,GAAQA,EAAK+a,MAC9GkhK,EAAyD,IAA9Bj8K,EAAK0Y,cAAcvhC,SAAiB6kM,EAC/DtjK,EAAgBujK,GAA2BF,EAAsBnkK,GAAyB5X,EAAK6X,oBAAsBj6B,EAAK86L,sBAAuBxwI,EAAW1yB,cAAgBxV,EAAK0Y,cACjLb,EAAsBokK,GAA2BF,EACjDvkK,GAA8BxX,EAAKgC,kBACnChC,EAAK6X,oBACLqkK,EAAsBh0I,EAAWs7H,oBAAoB1/K,OAAO,SAAAkc,GAAI,OAAIA,EAAK0yC,WAAUt7D,IAAI,SAAA4oB,GACzF,MAAO,CACHX,GAAIW,EAAKX,GACTo6C,SAAUC,GAAe75C,YAI3Bs8K,EAnCgBxmM,OAAA0G,EAAA,EAAA1G,CAAA,GAoCfqqB,EApCe,CAqClB0zD,gBAAiBxrB,EAAWwrB,gBAC5BE,SAAUkoH,EACVhoH,aAAcytG,EAAah+K,OAAO2kD,EAAW4rB,mBAAgB95E,EAC7Dsc,cAAe0J,EAAK1J,cAAesP,QAAQ,OAAOqN,SAClD8gD,2BAAqD/5E,GAA9BgmB,EAAK+zD,2BAAqC/5E,EAAYgmB,EAAK+zD,sBAAuBnuD,QAAQ,OAAOqN,SACxHuC,aAAc0yB,EAAW1yB,aACzBX,WAAkC,IAAtB7U,EAAK+a,MAAM5jC,QAAgB4kM,EAAsB5kK,GAAqBnX,EAAKgC,kBAAoBhC,EAAK6U,WAChHkG,QACAlD,sBACAa,gBACAlF,oBAAqBjwB,OAAO2kD,EAAW10B,qBACvCM,cAAgBvwB,OAAO2kD,EAAW10B,uBAAyByU,KAAyBnkC,OAAO,SAAAigL,GAAE,MAAiC,cAA7BA,EAAG57I,wBAAuC,GAAG3U,qBACvIjwB,OAAO2kD,EAAW10B,uBAAyByU,KAAyBnkC,OAAO,SAAAigL,GAAE,MAAiC,8CAA7BA,EAAG57I,wBAAuE,GAAG3U,yBAC/Jx5B,EAAYkuD,EAAWp0B,cAC7B0lC,YAAW,GAAAr+D,OAAAxF,OAAAgO,EAAA,EAAAhO,CACJqqB,EAAKw5C,YAAY11D,OAAO,SAAAwH,GAAI,OAAIA,EAAKmuD,WAAaC,GAAe75C,YAD7DlqB,OAAAgO,EAAA,EAAAhO,CAEJumM,MArDWjkM,EAAA07C,OAAA,SAwDf/1C,EAAKoG,MAAM03L,WAAWS,IAxDP,yBAAAlkM,EAAAxB,SAAAsB,MAvnBA,gBAAAU,EAAAo7C,GAAA,OAAA/7C,EAAAnB,MAAAC,KAAAC,YAAA,GAAA+G,EAkrB1B2+L,kBAlrB0B,eAAAjkM,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAkrBN,SAAAwC,EAAO2vD,EAA2BloC,GAAlC,IAAAi7D,EAAAlgD,EAAAyhK,EAAA5nK,EAAA0oI,EAAA6+B,EAAA,OAAAtmM,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cACV4kF,EAAavyD,GAAe1I,EAAK2I,gBAAkB,GAAIrJ,GAAMqI,UAE7DoT,EAAQkgD,EAAWt9E,MACnBqiB,EAAK+a,MACLmtB,EAAWntB,MAAM3jC,IAAU,SAAAw9B,GAkCzB,OAhCIszB,EAAWrzB,aAAej3B,EAAKy5B,eAAel2B,aAC9CyzB,EAAIj/B,OAAA0G,EAAA,EAAA1G,CAAA,GACGi/B,EADH,CAEAC,WAAYj3B,EAAKy5B,eACjB2D,OAAQktB,EAAWu0I,kBAItBv0I,EAAWw+H,kBAAqBx+H,EAAWy+H,gCAC5C/xJ,EAAIj/B,OAAA0G,EAAA,EAAA1G,CAAA,GACGi/B,EADH,CAEAylC,mBAAergE,EACfsgE,uBAAmBtgE,EACnBugE,yBAAqBvgE,KAIzB46B,EADAszB,EAAWu+H,gBACP9wL,OAAA0G,EAAA,EAAA1G,CAAA,GACGi/B,EADH,CAEAoG,YAAQhhC,EACRqgE,mBAAergE,IAGfrE,OAAA0G,EAAA,EAAA1G,CAAA,GACGi/B,EADH,CAEAsG,gBAAYlhC,EACZihC,kBAAcjhC,EACdsgE,uBAAmBtgE,EACnBugE,yBAAqBvgE,MAQjCwiM,EAAct0I,EAAWu0I,eACzBv0I,EAAWrzB,aAAej3B,EAAKo4B,oBAAoB70B,aAC/CyzB,EAAOszB,EAAWntB,MAAMhb,KAAK,SAAA0U,GAAC,OAAKA,EAAEuG,QAAUvG,EAAEuG,OAAS,IAC1DsiI,EAAM,EACN1oI,GAAQA,EAAKoG,SACbsiI,EAAM1oI,EAAKoG,QACXpG,GAAQA,EAAKoG,QAAUktB,EAAWntB,MAAMlN,MAAM,SAAA6uK,GAAE,OAAIA,EAAG1hK,SAAWsiI,MAClEk/B,EAAe5nK,GAAQA,EAAKoG,OAAUpG,EAAKoG,OAAUktB,EAAWu0I,eAAiBv0I,EAAWu0I,eAAiB,GACjHv0I,EAAWu0I,eAAiBD,GAE1BL,EArDUxmM,OAAA0G,EAAA,EAAA1G,CAAA,GAsDTqqB,EAtDS,CAuDZ6U,WAAYtxB,OAAO2kD,EAAWrzB,YAC9BkG,QACAzkB,cAAe0J,EAAK1J,cAAgB0J,EAAK1J,cAAcsP,QAAQ,OAAOqN,cAAWj5B,EACjF+5E,sBAAuB/zD,EAAK+zD,sBAAwB/zD,EAAK+zD,sBAAsBnuD,QAAQ,OAAOqN,cAAWj5B,EACzG6hE,YAAa3T,EAAW2T,YACxBthC,cAAc,IA5DF/hC,EAAAnC,KAAA,EA8DVuH,EAAKoG,MAAM03L,WAAWS,GAAar+L,KAAKihC,GAAcE,YAAaF,GAAcE,aA9DvE,wBAAAzmC,EAAA/B,SAAA8B,MAlrBM,gBAAAutD,EAAAoF,GAAA,OAAA5yD,EAAA3B,MAAAC,KAAAC,YAAA,GAAA+G,EAmvB1B++L,0BAA4B,SAAC38K,EAAYkoC,GACrC,IAAM78C,EAAM,eAAAk6C,EAAA5vD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAG,SAAAyvD,IAAA,IAAA3tB,EAAAmkK,EAAAG,EAAA,OAAAtmM,EAAAC,EAAAI,KAAA,SAAAuvD,GAAA,cAAAA,EAAArvD,KAAAqvD,EAAApvD,MAAA,cACPwhC,EAAsBt0B,OAAO2kD,EAAWrwB,qBACxCmkK,EAAqBnkK,IAAwBj6B,EAAKs6B,4BAEhDikK,EAJKxmM,OAAA0G,EAAA,EAAA1G,CAAA,GAKJqqB,EALI,CAMP6X,oBAAqBA,EACrBa,cAAewvB,EAAWxvB,cAActhC,IAAI,SAAA8iE,GAAY,OAAAvkE,OAAA0G,EAAA,EAAA1G,CAAA,GAE7CukE,EAF6C,CAGhDzhC,wBAAyBl1B,OAAO2kD,EAAWzvB,6BAGnD+gC,YAAa7jE,OAAAgO,EAAA,EAAAhO,CACNqqB,EAAKw5C,YAAY11D,OAAO,SAAA7O,GAAC,OAAIA,EAAEwkE,WAAaC,GAAeK,oBAChE5+D,OAAO6gM,EAAqB,CAAE38K,GAAI6oC,EAAWukI,WAAahzH,SAAUC,GAAeK,kBAAqB,IAC1GzjD,cAAe0J,EAAK1J,cAAgB0J,EAAK1J,cAAcsP,QAAQ,OAAOqN,cAAWj5B,EACjF+5E,sBAAuB/zD,EAAK+zD,sBAAwB/zD,EAAK+zD,sBAAsBnuD,QAAQ,OAAOqN,cAAWj5B,IAjBlGyrD,EAAApvD,KAAA,EAmBLuH,EAAKoG,MAAM03L,WAAWS,GAAar+L,KAAKihC,GAAcE,YAAaF,GAAcE,aAnB5E,wBAAAwmB,EAAAhvD,SAAA+uD,MAAH,yBAAAD,EAAA5uD,MAAAC,KAAAC,YAAA,GAsBN+lM,EAAqCh/L,EAAKoG,MAAM03D,UAAU18C,KAAKlb,OAAO,SAAAkc,GAAI,OAE5Ezc,OAAO2kD,EAAWrwB,uBAAyBj6B,EAAKm6B,6BAE9C/X,EAAKw5C,YAAYz5C,KAAK,SAAAkzI,GAAE,OACtBA,EAAGx5F,WAAaC,GAAeK,kBAC/Bk5F,EAAG5zI,KAAOzhB,EAAKoG,MAAMic,WAGxBD,EAAK6U,aAAej3B,EAAKo4B,qBAAuBhW,EAAK6U,aAAej3B,EAAK63B,4BAG9E,OAAO,IAAIp3B,QAAc,SAACC,EAASC,GAC3Bq+L,EAAmCzlM,OACnCyG,EAAK4G,SAAS,CACVq4L,qCAAoC,eAAAC,EAAAnnM,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAE,SAAA6vD,EAAOm3I,GAAP,OAAAlnM,EAAAC,EAAAI,KAAA,SAAA2vD,GAAA,cAAAA,EAAAzvD,KAAAyvD,EAAAxvD,MAAA,UAClCuH,EAAK4G,SAAS,CACVq4L,0CAAsC7iM,KAEtC+iM,EAJ8B,CAAAl3I,EAAAxvD,KAAA,eAAAwvD,EAAAxvD,KAAA,EAKxBgV,IALwB,cAAAw6C,EAAAxvD,KAAA,EAOxBgI,QAAQu3E,IAAIgnH,EAAmCxlM,IAAI,SAAA4oB,GAAI,OAAIpiB,EAAKoG,MAAMg5L,UAAUh9K,EAAKX,OAP7D,OASlC/gB,IATkC,wBAAAunD,EAAApvD,SAAAmvD,MAAF,gBAAA8E,GAAA,OAAAoyI,EAAAnmM,MAAAC,KAAAC,YAAA,KAaxCwU,IAASvN,KAAK,kBAAMQ,SAtyBNV,EA2yB1Bq/L,2BAA6B,WAEzB,OACIn4L,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,gOA9yBkBtH,EAqzB1Bs/L,gBAAkB,SAAC79K,GACX,OAAOA,GACH,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,EACjB,KAAK,IAAK,OAAO,GACjB,KAAK,IAAK,OAAO,GACjB,KAAK,IAAK,OAAO,GACjB,QAAS,OAAO,IAn0BFzhB,EAu0B1Bu/L,aAAc,SAAC/lK,EAAeoiC,GAC1B,IAAIosB,EAAgB,GAIpB,OAHApsB,EAAY55C,QAAQ,SAAAw9K,GACZA,EAAMC,WAAajmK,IAAiBwuD,EAAKjvD,SAASymK,EAAMhmK,QAASwuD,EAAKnhE,KAAK24K,EAAMhmK,UAElFwuD,GA50BehoF,EA+0B1B0/L,kBAAoB,SAACt9K,GACjB,QAAYhmB,GAARgmB,EAAoB,MAAO,GAC/B,IAAImlH,EAAWvnI,EAAKoG,MAAM03D,UAAU18C,KAChCS,EAAQ0lH,EAASrhI,OAAO,SAAA7O,GAAC,OAAIA,EAAEoqB,KAAOzhB,EAAKoG,MAAMic,QAAUhrB,EAAE+sB,kBAAoBhC,EAAKgC,mBAC7E9e,KAAK,SAACpN,EAAEwN,GAAH,OAAQ1F,EAAKs/L,gBAAgBpnM,EAAEksB,kBAAoBpkB,EAAKs/L,gBAAgB55L,EAAE0e,oBAGxFw3C,EAAoC,GACxC2rE,EAASvlH,QAAQ,SAAA29K,GACbA,EAAM/jI,YAAY55C,QAAQ,SAAA49K,GAElB,GAAIA,EAAM/jI,UAAYC,GAAe75C,SACrC,CACI,IAAI49K,EAAYt4D,EAASA,EAASvoG,UAAU,SAAA37B,GAAC,OAAEA,EAAEoe,IAAMm+K,EAAMn+K,MAAK2C,iBAClE,IAAkG,GAA9Fw3C,EAAY58B,UAAU,SAAA37B,GAAC,OAAGA,EAAEm2B,OAASmmK,EAAMv7K,kBAAoB/gB,EAAEo8L,WAAaI,IAClF,CACI,IAAM5jI,EAAa,CAACziC,MAAOmmK,EAAMv7K,iBAAkBq7K,UAAWI,GAC9DjkI,EAAY/0C,KAAKo1C,SAUrC,IAHA,IAAI6jI,EAAa9/L,EAAKu/L,aAAan9K,EAAKgC,iBAAkBw3C,GACtDmkI,EAAeD,EAAWvmM,OAAS,EACnCymM,EAAS,EA1BoBr6K,EAAA,WA4B7Bo6K,GAAc,EAEd,IADA,IAAIE,EAAoB,GACfp6K,EAAEm6K,EAAOn6K,EAAIi6K,EAAWvmM,OAAOssB,IAEpC7lB,EAAKu/L,aAAaO,EAAWj6K,GAAI+1C,GAAa55C,QAAS,SAAA3e,GACnD48L,EAAQp5K,KAAKxjB,KAGrB28L,EAASF,EAAWvmM,OAChB0mM,EAAQ1mM,OAAS,IACjBwmM,GAAc,EACdE,EAAQj+K,QAAQ,SAAA3e,GAAIy8L,EAAWj5K,KAAKxjB,OAZrC08L,GAAYp6K,IAefm6K,EAAWvmM,OAAS,IAAKsoB,EAAQA,EAAM3b,OAAO,SAAA7O,GAAC,OAAKyoM,EAAW/mK,SAAS1hC,EAAE+sB,qBAE9E,IAAI87K,EAAsB,GACtB99K,EAAK4zD,SAASz8E,OAAS,GAEvBsoB,EAAMG,QAAQ,SAAA3e,GACV,GAAuB,GAAnBA,EAAE2yE,SAASz8E,OAEX2mM,EAAar5K,KAAKxjB,OAGtB,CACI,IAAI0gL,GAAO,EACX3hK,EAAK4zD,SAASpwD,KAAK,SAAA7lB,GACXsD,EAAE2yE,SAASj9C,SAASh5B,KACpBgkL,GAAO,KAGXA,GAAOmc,EAAar5K,KAAKxjB,MAUzC,OAH2B,GAAvB68L,EAAa3mM,OAAyBxB,OAAAgO,EAAA,EAAAhO,CAAO8pB,GAChC,GAAAtkB,OAAO2iM,IAn5BFlgM,EAu5B1B+9K,yBAA2B,SAACC,EAASjhI,GACjC/8C,EAAK4G,SAAS,CAAE81K,gBAAiB3/H,IAEjC/8C,EAAK4G,SAAS,CAAEk2K,YAAa98K,EAAK+G,MAAM+yE,gBAAkB95E,EAAK+G,MAAM+yE,gBAAkB/8B,IACvF/8C,EAAK4G,SAAS,CAAEo2K,gBAAiBjgI,IACjC/8C,EAAK4G,SAAS,CAAEs2K,oBAAqBngI,IACrC/8C,EAAK4G,SAAS,CAAEw2K,kBAAmBrgI,KA75Bb/8C,EA+5B1Bi+K,oBAAsB,SAACD,GAEnBh+K,EAAK4G,SAAS,CAAEg2K,YAAY,KAj6BN58K,EAm6B1Bk+K,qBAAuB,SAACF,EAASjhI,GAC7B/8C,EAAK4G,SAAS,CAAEk2K,YAAa98K,EAAK+G,MAAM+yE,gBAAkB95E,EAAK+G,MAAM+yE,gBAAkB/8B,KAp6BjE/8C,EAs6B1Bm+K,yBAA2B,SAACH,EAASjhI,GACjC/8C,EAAK4G,SAAS,CAAEo2K,gBAAiBjgI,KAv6BX/8C,EAy6B1Bo+K,6BAA+B,SAACJ,EAASjhI,GACrC/8C,EAAK4G,SAAS,CAAEs2K,oBAAqBngI,KA16Bf/8C,EA46B1Bq+K,2BAA6B,SAACL,EAASjhI,GACnC/8C,EAAK4G,SAAS,CAAEw2K,kBAAmBrgI,KA16BnC,IAAM36B,EAAOpiB,EAAKq7L,SAASr7L,EAAKoG,MAAM03D,UAAU18C,KAAMphB,EAAKoG,MAAMic,QAC3Ds2K,EAAuB34L,EAAK+9L,wBAAwB37K,EAAOA,EAAK1J,mBAAgBtc,EAAWgmB,EAAOA,EAAK+zD,2BAAwB/5E,GAJ/G,OAMtB4D,EAAK+G,MAAQ,CACT82C,SAAS,EACTk+I,eAAe,EACfG,aAAa,EACbtyB,iBAAiB,EACjBG,iBAAkB3nJ,EAClB8tC,WAAW,EACXmsI,aAAc,EACdE,aAAcn6K,EAAOA,EAAKX,GAAK,MAC/Bg0C,kBAAkB,EAClBkoH,gBAAgB,EAChBof,iBAAkB,GAClBzhG,YAAa,CAAC,CACV7sF,MAAO,sBACPw4C,SAAUk5I,IAEd,CACI1xL,MAAO,QACPw4C,SAAUm5I,GACVzlL,UAAcyH,GAElB,CACI3T,MAAO,gBACPw4C,SAAUo5I,GACV1lL,UAAcyH,GAElB,CACI3T,MAAO,cACPw4C,SAAUq5I,GACV3lL,UAAcyH,GAElB,CACI3T,MAAO,YACPkM,UAAcyH,IAElB68K,0CAAsC7iM,EACtCu8L,qBAAsBA,EACtBjc,iBAAiB,EACjBE,YAAY,EACZE,aAAa,EACbI,qBAAqB,EACrBF,iBAAiB,EACjBI,mBAAmB,EACnBtjG,kBAAiB13D,GAAMA,EAAKG,qBAAqBwW,SAASre,GAAuBoC,2BAjD/D9c,uFAqDMk1B,EAA8CqrK,GAC1E,IAAM7nL,EAAgBwc,EAAoBA,EAAkBG,OAAO,cAAgB,GAC7E8gD,EAAwBoqH,EAA4BA,EAA0BlrK,OAAO,cAAgB,GAG3G,MAAO,CACH8gD,sBAAuBA,EACvBujH,yBAJ+C,KAAlBhhL,GAAkD,KAA1By9D,GAAgCz9D,IAAkBy9D,8CAW5FrmB,GAAkB,IAAAtvD,EAAAxH,KAC3BopB,EAAOppB,KAAKqiM,SAASriM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMic,QAEjE,IAAKrpB,KAAK4+L,QAAU5+L,KAAKoN,MAAMge,kBAAoBprB,KAAKoN,MAAMge,mBAAqB0rC,EAAU1rC,iBAAkB,CAC3G,IAAMo8K,EAAcp+K,EAAOppB,KAAKwiM,2BAA2Bp5K,GAAQ,GAC7Dq+K,EAAoBx1J,KAAe/kC,OAAO,SAAAmyB,GAAM,OAAIA,EAAO2Q,UAAU3mC,QAAQ7B,EAAK4F,MAAMge,mBAAsB,IAC9Gs8K,EAAgBD,GAAqBA,EAAkB,GAAKA,EAAkB,GAAGh/K,GAAK,EAC5FzoB,KAAKoN,MAAMu6L,eAAeH,GAC1BxnM,KAAKoN,MAAMw6L,iBAAiBF,GAGhC,GAAI1nM,KAAKoN,MAAM6wB,YAAc64B,EAAU74B,YAAcj+B,KAAKoN,MAAM6wB,aAAe64B,EAAU74B,WAAY,CACjG,IAAM4pK,GAAWz+K,IAAQA,EAAK6U,WAAej+B,KAAKoN,MAAM6wB,YAAaj+B,KAAK4iM,iBAAiB5iM,KAAKoN,MAAM6wB,WAAY7U,IAClHppB,KAAKoN,MAAM06L,YAAYD,GAG3B,GAAI7nM,KAAKoN,MAAM6zB,qBAAuB61B,EAAU71B,qBAAuBjhC,KAAKoN,MAAM6zB,sBAAwB61B,EAAU71B,oBAAqB,CACrI,IACM8mK,EADqB3+K,GAAQA,EAAK0Y,cAAc,IAAM1Y,EAAK0Y,cAAc,GAAGb,sBAAwBjhC,KAAKoN,MAAM6zB,qBAAuB7X,EAAK0Y,cAAc,GAAGD,0BAA4B7hC,KAAKoN,MAAMy0B,yBAA2BzY,EAAK0Y,eAC1Ld,GAAyBhhC,KAAKoN,MAAM6zB,oBAAqBjhC,KAAKoN,MAAMy0B,wBAAyBzY,EAAOA,EAAKwV,kBAAex7B,GACvKpD,KAAKoN,MAAM46L,oBAAoBD,GAGnC,GAAI/nM,KAAKoN,MAAMy0B,yBAA2Bi1B,EAAUj1B,yBAA2B7hC,KAAKoN,MAAMy0B,0BAA4Bi1B,EAAUj1B,wBAAyB,CACrJ,IACMkmK,EADqB3+K,GAAQA,EAAK0Y,cAAc,IAAM1Y,EAAK0Y,cAAc,GAAGb,sBAAwBjhC,KAAKoN,MAAM6zB,qBAAuB7X,EAAK0Y,cAAc,GAAGD,0BAA4B7hC,KAAKoN,MAAMy0B,yBAA2BzY,EAAK0Y,eAC1Ld,GAAyBhhC,KAAKoN,MAAM6zB,oBAAqBjhC,KAAKoN,MAAMy0B,wBAAyBzY,EAAOA,EAAKwV,kBAAex7B,GACvKpD,KAAKoN,MAAM46L,oBAAoBD,GAInC,IAAME,GAAe7+K,EACf8+K,EAA2BloM,KAAK+N,MAAMu0F,YAAY9hG,IAAI,SAAAm3D,GACxD,IAAMwwI,EAAgB3gM,EAAK46L,mBAAmBzqI,EAAIliD,OAElD,MAAQ,CACJA,MAAOkiD,EAAIliD,MACXw4C,SAAU0J,EAAI1J,SACdl5C,QAASozL,EACTxmL,SAAUsmL,GAA8B,wBAAdtwI,EAAIliD,SAGlCzV,KAAK+N,MAAMu0F,YAAY11E,KAAK,SAAC+qC,EAAK7qD,GAAN,OAAgB6qD,EAAIh2C,WAAaumL,EAAYp7L,GAAO6U,UAAYg2C,EAAI5iD,UAAYmzL,EAAYp7L,GAAOiI,WAC/H/U,KAAK4N,SAAS,CAAE00F,YAAa4lG,IAG7B//F,MAAUr3F,SAASs3L,uBAAuB,mCAAmC,IAI7Et3L,SAASs3L,uBAAuB,mCAAmC,GAAG3vG,wDAsB1Ez4F,KAAKoN,MAAMi7L,wBAA0BroM,KAAKoN,MAAMi7L,uEA8F9Bj/K,GAAY,IAAAlhB,EAAAlI,KAChB6qH,EAAa7qH,KAAKoN,MAAM03D,UAA9B18C,KAER,QAAwBhlB,IAApBgmB,EAAK6U,WACL,MAAO,GAEX,IAAMA,EAAa7U,EAAK6U,WAOxB,KAJI7U,EAAKgC,mBAAqBprB,KAAKq7K,YACxBjyJ,EAAKgC,mBAAqBprB,KAAKu7K,WAC/BnyJ,EAAKgC,mBAAqBprB,KAAKs7K,WAGtC,MAAO,GAGX,IAMMgtB,EANuF,CAEzF,CAAEC,aAAc,CAACvoM,KAAKmhM,iBAAkBnhM,KAAKqhM,uBAAwBmH,sBAAuB,CAACxoM,KAAKuhM,6BAA8BvhM,KAAKwhM,+BACrI,CAAE+G,aAAc,CAACvoM,KAAKohM,iBAAkBphM,KAAKshM,4BAA6BkH,sBAAuB,CAACxoM,KAAKuhM,6BAA8BvhM,KAAKwhM,6BAA8BxhM,KAAKyhM,2BAA4BzhM,KAAK0hM,6CAIxLv4K,KAAK,SAAAm/K,GAAI,QAAMA,EAAKC,aAAap/K,KAAK,SAAAs/K,GAAC,OAAIl+K,GAAYk+K,EAAGj+K,GAAgBiU,gBAAkBR,MAEhHyqK,EACFJ,EAAOA,EAAKE,sBAAsBhoM,IAAI,SAAAioM,GAAC,OAAIl+K,GAAYk+K,EAAGj+K,GAAgBuW,qBAAsB,GAEpG,OAAO8pF,EACF39G,OAAO,SAAAk2D,GAAQ,OAAIh6C,EAAKX,KAAO26C,EAAS36C,IAAMW,EAAKgC,mBAAqBg4C,EAASh4C,mBACjFle,OAAO,SAAAk2D,GAAQ,OAAIA,EAASniC,qBAAuBynK,EAAyBv/K,KAAK,SAAAtgB,GAAC,OAAIA,IAAMu6D,EAASniC,uBAAwBmiC,EAASniC,qBAAuB/4B,EAAKo5B,+DAyqBlK,IAAAl5B,EAAApI,KACC83D,EAAa93D,KAAK+N,MAAMu0F,YAAYtiG,KAAK+N,MAAMs1L,cAC/Cj6K,EAAOppB,KAAKqiM,SAASriM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMic,QAC3D+5C,EAAWpjE,KAAKoN,MAAMyoL,WAAa71L,KAAKqiM,SAASriM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMyoL,iBAAczyL,EACrGmwG,EAAoB/mG,QAAQ4c,GAAQA,EAAKuJ,qBAAuBvJ,EAAKuJ,sBAAwB3yB,KAAKiiM,sBAAwBt5K,GAAgC3oB,KAAKoN,MAAM+a,eAAe5nB,OAAS,GAC7L0xL,IAAmB7oK,IAAQ4a,GAAe5a,GAC1Cu/K,EAAmB72K,GAAe1I,GAAQA,EAAK2I,eAAiB3I,EAAK2I,eAAiB,GAAIrJ,GAAMqI,UAChG63K,EAAwB/2K,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAMkI,kBAAoB5wB,KAAKgmD,cAAc6iJ,aAAcvqJ,iBAC9HwqJ,EAA4Bj3K,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAMmI,sBAAwB7wB,KAAKgmD,cAAc6iJ,aAAcvqJ,iBACtIyxI,SAA2C3sL,IAATgmB,IAAuBA,EAAKG,qBAAqBwW,SAASre,GAAuBuD,oBACnH8jL,EAA+B/oM,KAAK0mM,kBAAkBt9K,GAExD2lK,GAA8B,EAK9BA,SAJS3rL,IAATgmB,IAAuBA,EAAKG,qBAAqBwW,SAASre,GAAuBqC,0BAMrF,IAAMilL,EAAyB,mEAE3BnP,GAA8B,EAK9BA,SAJSz2L,IAATgmB,IAAuBA,EAAKG,qBAAqBwW,SAASre,GAAuBsC,0BAOrF,IAAIi8K,GAAyB,EAKzBA,SAJS78L,IAATgmB,IAAuBA,EAAKG,qBAAqBwW,SAASre,GAAuB4C,qBAMrF,IAAI2kL,EAAwB7/K,GAAOA,EAAK1J,cAAgB0J,EAAK1J,cAAc6c,QAAQkjB,SAAS,EAAG,KAAKpjB,OAAO,cAAuBj5B,EAC9H8lM,EAAwB9/K,GAAOA,EAAK1J,cAAgB0J,EAAK1J,cAAc6c,QAAQ5S,IAAI,EAAG,KAAK0S,OAAO,cAAuBj5B,EACzH+lM,EAA4B//K,GAAOA,EAAK1J,cAAgB0J,EAAK1J,cAAc6c,QAAQ5S,IAAI,EAAG,KAAK0S,OAAO,qBAA8Bj5B,EACpIoiC,EAAcpc,EAAOA,EAAKoc,YAAc,GAExC65J,GAAiC,EACjC+J,EAAa,QACLhmM,GAARgmB,GAAqBA,EAAKG,qBAAqBwW,SAASre,GAAuBiD,8BAC/E06K,GAAiC,EACjC+J,EAAa,WAEAhmM,GAARgmB,GAAqBA,EAAKG,qBAAqBwW,SAASre,GAAuB6D,+BACpF85K,GAAiC,EACjC+J,EAAa,MAEjB,IAAI7J,EAA2B,GACb,IAAd6J,IAEI7J,EADAn2K,EAAM4B,aAAeob,GAAe,sBAAuB5b,GAAgBQ,aAChDwa,EAAc,6CAA+C4jK,EAAa,yEAA2ED,EAC1K,mIAKqB3jK,EAAc,iCAAmCyjK,EACtE,wCAA0CG,EAAa,iFACvDF,EACA,oIAOd,IAAI9I,EAA6B56J,EAAc,kBAI3C86J,IAA8Bl3K,GAAOA,EAAM4B,cAAgBob,GAAe,wBAAyB5b,GAAgBQ,aAEnH40K,GAAqB,EACnByJ,OAA+BjmM,IAATgmB,GAAsBA,EAAKG,qBAAqBwW,SAASre,GAAuBsD,wBACtGskL,OAA4BlmM,IAATgmB,GAAuBA,EAAKg0D,cAAgBp9E,KAAKoN,MAAMuhB,gBAAgB5N,QAAQ+xD,QAEpGu2H,GAAsBC,IAClB1J,GAAqB,GAG7B,IAAIF,GAAyB,EACzBtrF,EAAmCp0G,KAAKoN,MAAM+a,cAAcC,KAAKlb,OAAO,SAAAyJ,GAAC,OAAIA,EAAEmS,UAAUvoB,OAAS,GAAKoW,EAAEmS,UAAUK,KAAK,SAAAoF,GAAE,OAAIA,EAAGlF,QAAUjhB,EAAKgF,MAAMic,QACxI,IAAbkF,EAAGlF,QAAgBkF,EAAGT,YAAe1E,GAAQmF,EAAGnD,kBAAoBhC,EAAKgC,qBAAqB7qB,OAE/F+tL,EAAuBl6E,EAAiC7pG,WAAa,yFAEzE,QAAanH,IAATgmB,GAAuBA,EAAKG,qBAAqBwW,SAASre,GAAuBiC,oBAGhF,CACD,IAAIo5D,EAAe3zD,EAAK2zD,aACxB2iH,IAAyB3iH,GAAeA,EAAa7vE,OAAO,SAAA7C,GAAC,OAAIA,EAAEy2D,YAAcz2D,EAAEsxE,OAAOp7E,OAAS,QACvD6C,IAArCiH,EAAEsxE,OAAOxyD,KAAK,SAAA0U,GAAC,OAAIA,EAAEq+B,eAA2B37D,OAAS,OALhEm/L,GAAyB,EAS7B,OACIxxL,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,EAAGl6C,MAAO0I,GAAOyyL,aACtCr7L,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,GACXt/C,EAAAhP,EAAAiP,cAAC8yC,GAAA,EAAD,CACIsE,WAAS,EACT3mD,QAAQ,WACR6kD,QAAM,EACNxrC,OAAO,QACPlR,MAAOqiB,EAAOA,EAAKX,GAAKzoB,KAAKoN,MAAMkjB,YAAc,GAAK,MACtDizB,SAAU,SAAA3uB,GAAK,OAAIxsB,EAAKo7L,yBAAyB5uK,EAAM20B,OAAOxiD,QAC9DqH,MAAO0I,GAAO0yL,SACdp9I,YAAa,CAAEjB,QAAQ,IAEtBnrD,KAAKoN,MAAM03B,mBAAqB9kC,KAAKoN,MAAMkjB,cAAgBtwB,KAAK8tD,YAAc5/C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,OAAd,YAC9E/G,KAAKoN,MAAM03D,UAAU18C,KAAK5nB,IAAI,SAAA4oB,GAAI,OAAKlb,EAAAhP,EAAAiP,cAAA,UAAQrH,IAAKsiB,EAAKX,GAAI1hB,MAAOqiB,EAAKX,IAAKW,EAAKjJ,qBAG5FjS,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,IACft/C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,GACXt/C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOmC,QACf/K,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOy2C,cACb17B,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAMiI,iBAAmBvH,GACnElb,EAAAhP,EAAAiP,cAACw3C,GAAD,CACI/mD,QAAQ,WACRwP,MAAO0I,GAAOmpE,aACdp7B,QAAS7kD,KAAK+N,MAAMg1L,cACpBrsL,QAAS1W,KAAK08D,gBACd/6C,UAAWyH,GAEflb,EAAAhP,EAAAiP,cAACwvD,GAAAz+D,EAAD,CAAYkP,MAAO0I,GAAOsqE,WAAYE,YAAY,kBAInDzvD,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAMiI,iBAAmBvH,GACnElb,EAAAhP,EAAAiP,cAACw3C,GAAD,CACI/mD,QAAQ,WACRwP,MAAO0I,GAAOopE,WACdr7B,QAAS7kD,KAAK+N,MAAMm1L,YACpBxsL,QAAS1W,KAAKgkM,cACdriL,UAAWyH,GAEXlb,EAAAhP,EAAAiP,cAACqzE,GAAAtiF,EAAD,CAAckP,MAAO0I,GAAO2yL,SAAUnoH,YAAY,eAI1DpzE,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,iBACH7pB,QAAQ,WACRwP,MAAO0I,GAAO4yL,cACdhzL,QAAS1W,KAAK2wK,2BACdhvJ,UAAW3hB,KAAK+N,MAAMgjK,gBAEtB7iK,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO6yL,uBAApB,0BAMpBz7L,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,GACXhI,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,GACXt/C,EAAAhP,EAAAiP,cAAC4/E,GAAD,CACIj2B,WAAY93D,KAAK+N,MAAMs1L,aACvBrrI,aAAch4D,KAAKojM,oBACnB1rI,aAAc13D,KAAK+N,MAAMu0F,YACzBprC,UAAWl3D,KAAK+N,MAAMmpD,UACtBG,cAAer3D,KAAKkiM,eAAiBliM,KAAKmgB,gBAAkB23C,EAAaA,EAAWriD,MAAM6c,mBAAgBlvB,EAC1Gg1D,uBAAwBp4D,KAAKsjM,kCAC7BjrI,yBAA0Br4D,KAAKkiM,eAAiBliM,KAAK2jM,2BAA6B3jM,KAAK0jM,iCAG/Fx1L,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACuiC,GAAI,EAAGp/C,MAAO0I,GAAOwJ,SACC,IAA5BtgB,KAAK+N,MAAMs1L,cAAsBn1L,EAAAhP,EAAAiP,cAACy7L,GAAD,CAC9BhtI,YAAc58D,KAAKoN,MAAMwvD,cAAgB58D,KAAKkhM,aAAgBlhM,KAAKoN,MAAMskB,UACzEiU,UAAW3lC,KAAK4+L,WAAax1K,IAAQA,EAAKuc,UAC1C86J,uBAAwBr3K,IAAQwc,GAAoBxc,IACpD48B,cAAehmD,KAAKgmD,cAAc6iJ,aAClCzjJ,SAAU,SAACvV,GAAD,OAA0BznC,EAAK87L,iBAAiBr0J,EAAQzmB,IAClEmqF,kBAAmBA,EACnBqrF,OAAQ5+L,KAAK4+L,OACbl5I,SAAU1lD,KAAKoN,MAAMwxK,OACrB9iD,mBAAgD,QAA5B97H,KAAK+N,MAAMw1L,aAC/B5nG,YAAa9pE,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAM2I,gBAC9D0H,eAAgB/4B,KAAKoN,MAAMge,iBAC3B20K,mBAAoB32K,GAAQA,EAAK2I,eAAiB3I,EAAK2I,eAAiB,GACxEsyD,WAAYxyD,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAMoI,YAC7D4uK,uBAAwBA,EACxBtrF,iCAAkCA,EAClCk6E,qBAAsBA,EACtBS,4BAA6BA,EAC7BC,qBAAsBga,EACtBrJ,qBAAsB3/L,KAAK+N,MAAM4xL,qBACjCO,wBAAyBlgM,KAAKqmM,6BAC9BpG,uBAAwBA,EACxBZ,+BAAgCA,EAChCE,yBAA0BA,EAC1Ba,2BAA4BA,EAC5BG,6BA7He,2FA8HfD,4BAA6BA,EAC7BE,kBAAmBr6J,GAAmB/c,GACtCw2K,mBAAoBA,EACpBxiH,YAAah0D,EAAOA,EAAKg0D,iBAAch6E,EACvCy8L,WAAY7/L,KAAKoN,MAAMuhB,gBAAgB5N,QAAQ+xD,QAC/CxiD,YAAatwB,KAAKoN,MAAMkjB,cAEC,IAA5BtwB,KAAK+N,MAAMs1L,gBAAwBj6K,GAChClb,EAAAhP,EAAAiP,cAAC07L,GAAD,CACAjtI,YAAa58D,KAAKoN,MAAMwvD,YACxBtsC,YAAatwB,KAAKoN,MAAMkjB,YACxB01B,cAAehmD,KAAKgmD,cAAc8jJ,cAClC5uL,YAAaytL,EAAiBv2K,OAC9BgzB,SAAU,SAAAvV,GAAM,OAAIznC,EAAKu9L,kBAAkB91J,EAAQzmB,IACnDs8B,SAAU1lD,KAAKoN,MAAMwxK,OACrB3gJ,WAAYj+B,KAAKoN,MAAM6wB,WACvB7S,iBAAkBhC,EAAKgC,iBACvBuwE,YAAa9pE,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAM0I,cAC9DizD,WAAYxyD,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAMqI,WAAa43K,EAAiB5hM,MAC3FkrL,iBAAkBA,EAClBE,uBAA0B/oK,EAAKsa,gBAC/B0wE,iCAAkCA,EAClCk6E,qBAAsBA,EACtBS,4BAA6BA,EAC7BC,qBAAsBga,EACtBjZ,8BAA+BA,IAGN,IAA5B/vL,KAAK+N,MAAMs1L,gBAAwBj6K,GAChClb,EAAAhP,EAAAiP,cAAC47L,GAAD,CACIntI,YAAc58D,KAAKoN,MAAMwvD,cAAgB58D,KAAKkhM,aAAgBlhM,KAAKoN,MAAMskB,UACzEs0B,cAAehmD,KAAKgmD,cAAcgkJ,sBAClCnoK,wBAAyB7hC,KAAKoN,MAAMy0B,wBACpCZ,oBAAqBjhC,KAAKoN,MAAM6zB,oBAChCmkB,SAAU,SAAA/G,GAAQ,OAAIj2C,EAAK29L,0BAA0B38K,EAAMi1B,IAC3DqH,SAAU1lD,KAAKoN,MAAMwxK,OACrB/zD,SAAU7qH,KAAKiqM,cACf9f,UAAW/gK,EACXqvK,YAAa,SAAAmL,GAAI,OAAIx7L,EAAKqwL,YAAYrvK,EAAMw6K,IAC5CvK,mBAAoBr5L,KAAKkqM,sBAAsB9gL,GAC/Cg6C,SAAUA,EACVu4B,YAAa9pE,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAM4I,sBAC9D+yD,WAAYxyD,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAMsI,kBAC7DojF,iCAAkCA,EAClCk6E,qBAAsBA,EACtBS,4BAA6BA,EAC7B8K,4BAA6BA,EAC7B7K,qBAAsBga,EACtBlP,yBAlOW,gGAqOU,IAA5B95L,KAAK+N,MAAMs1L,gBAAwBj6K,GAChClb,EAAAhP,EAAAiP,cAACg8L,GAAD,CACIv3H,kBAAmB5yE,KAAKoN,MAAMwlE,kBAC9Bu3G,UAAW/gK,EACXqlK,gBAAiBzuL,KAAKoN,MAAMkjB,YAC5Bo1B,SAAU1lD,KAAKoN,MAAMwxK,OACrBx5H,SAAU,SAAA/G,GAAQ,OAAIj2C,EAAK68L,wBAAwB5mJ,EAAUj1B,IAC7D0iK,aAAc9rL,KAAKoN,MAAM0+K,aACzB0C,uBAAwBua,EACxBhc,qBAAsB17I,KACtBsqD,YAAamtG,EACbzkH,WAAYukH,EACZhsI,YAAa58D,KAAKoN,MAAMwvD,YACxBw3C,iCAAkCA,EAClCk6E,qBAAsBA,EACtBhgK,2BAA4BA,GAA2BtuB,KAAKoN,MAAM+a,cAAcC,MAChF2mK,4BAA6BA,EAC7BC,qBAAsBga,IAGD,IAA5BhpM,KAAK+N,MAAMs1L,gBAAwBj6K,GAChClb,EAAAhP,EAAAiP,cAACi8L,GAAD,CACI9rJ,iBAAkBt+C,KAAKgmD,cAAc6iJ,aAAcvqJ,iBACnDse,YAAc58D,KAAKoN,MAAMwvD,cAAgB58D,KAAKkhM,aAAgBlhM,KAAKoN,MAAMskB,UACzEtI,KAAMA,EACN+pK,qBAAsBnzL,KAAKoN,MAAM+lL,qBACjCx+F,eAAgB30F,KAAKoN,MAAMunF,eAC3Bj2F,gBAAiBsB,KAAKoN,MAAM1O,gBAC5Bi9F,YAAa9pE,GAAe7xB,KAAKoN,MAAMuhB,gBAAiBjG,GAAM6I,mBAC9Dw9J,4BAA6BA,EAC7BC,qBAAsBga,EACtB50F,iCAAkCA,EAClCk6E,qBAAsBA,EACtBh+J,YAAatwB,KAAKoN,MAAMkjB,YACxBptB,aAAclD,KAAKoN,MAAMlK,aACzBi5C,UAAWn8C,KAAKoN,MAAM+uC,UACtBy9B,gBAAiB55E,KAAK45E,oBAKrC55E,KAAK+N,MAAMgjK,kBAAoB3nJ,GAC5Blb,EAAAhP,EAAAiP,cAACojK,GAAD,CACI5xK,KAAMK,KAAK+N,MAAM6iK,gBACjBlrH,SAAU1lD,KAAK6wK,2BACfznJ,KAAMA,EACNq7C,eAAgBzkE,KAAKoN,MAAMq3D,eAC3B5jD,gBAAiB7gB,KAAK6gB,kBAG7B7gB,KAAK+N,MAAMgjK,kBAAoB3nJ,GAC5Blb,EAAAhP,EAAAiP,cAACm3K,GAAD,CACI3lL,KAAMK,KAAK+N,MAAM0uD,iBACjBua,SAAU5tD,EAAKjJ,iBAAmB,GAClCojK,eAAgBvjL,KAAKujL,eACrBp9H,OAAQnmD,KAAKkqF,aACbxkC,SAAU1lD,KAAK28D,mBAGtB38D,KAAK+N,MAAMgjK,kBAAoB3nJ,GAC5Blb,EAAAhP,EAAAiP,cAACo3K,GAAD,CACI5lL,KAAMK,KAAK+N,MAAM42K,eACjB3tG,SAAU5tD,EAAKjJ,iBAAmB,GAClCgmC,OAAQnmD,KAAKwpL,WACb9jI,SAAU1lD,KAAKikM,eACfvgB,gBAAiB1jL,KAAK+N,MAAM21K,gBAC5BC,qBAAsB3jL,KAAK+kL,yBAC3BnB,WAAY5jL,KAAK+N,MAAM61K,WACvBC,gBAAiB7jL,KAAKilL,oBACtBnB,YAAa9jL,KAAK+N,MAAM+1K,YACxBC,iBAAkB/jL,KAAKklL,qBACvBlB,gBAAiBhkL,KAAK+N,MAAMi2K,gBAC5BC,qBAAsBjkL,KAAKmlL,yBAC3BjB,oBAAqBlkL,KAAK+N,MAAMm2K,oBAChCC,yBAA0BnkL,KAAKolL,6BAC/BhB,kBAAmBpkL,KAAK+N,MAAMq2K,kBAC9BC,uBAAwBrkL,KAAKqlL,2BAC7BvkG,gBAAiB9gF,KAAK+N,MAAM+yE,kBAInC9gF,KAAK+N,MAAMk4L,sCACR/3L,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,MAAM,EAAM+V,QAAS,kBAAMtN,EAAK2F,MAAMk4L,sCAAwC79L,EAAK2F,MAAMk4L,sCAAqC,IAAQxwL,MAAM,8BACpJvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,CAAelI,MAAO0I,GAAO4mC,aACzBxvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,iHAGAzvC,EAAAhP,EAAAiP,cAACwvC,GAAA,EAAD,CAAmBvvC,MAAO0I,GAAOsmD,iBAAjC,2BAEJlvD,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQjmC,QAAS,kBAAMtO,EAAK2F,MAAMk4L,sCAAwC79L,EAAK2F,MAAMk4L,sCAAqC,IAAQlvL,MAAM,WAAxI,UAGA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,gBACH/R,QAAS,kBAAMtO,EAAK2F,MAAMk4L,sCAAwC79L,EAAK2F,MAAMk4L,sCAAqC,IAClHlvL,MAAM,WAHV,oDA7lCpB,OAAO/W,KAAK0iM,eAAe1iM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMic,+CAUjE,OAAOrpB,KAAK2iM,mBAAmB3iM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMic,gDAIrE,IAAMD,EAAOppB,KAAKqiM,SAASriM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMic,QACjE,OAAOrpB,KAAKoN,MAAMi9L,qBAAuBrqM,KAAKoN,MAAMi9L,oBAAoBlhL,KAAK,SAAA06F,GAAG,OAAIA,EAAK74F,cAAgB5B,EAAM4B,sDAmF/G,IAAM5B,EAAOppB,KAAKqiM,SAASriM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMic,QACjE,OAAOD,EAAOA,EAAKjJ,gBAAkB,2CAIrC,OAAOngB,KAAKoN,MAAMitC,YAAYG,gDAI9B,OAAO35B,GAAgB7gB,KAAKoN,MAAM2T,+CAIlC,IAAMqI,EAAOppB,KAAKqiM,SAASriM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMic,QAC3Di7K,EAAoBl7K,EAAOuX,GAAavX,EAAKgC,kBAAkB,GAAG3C,GAAKzoB,KAAKw+B,oBAC5E8f,EAAmBt+C,KAAKoN,MAAMuhB,gBAAgB2vB,iBAC9CgsJ,EAAYlhL,EAAOppB,KAAK4iM,iBAAiBx5K,EAAK6U,YAAcqmK,EAAmBl7K,GAAQ,GACzFw8K,OAAcxiM,EAElB,GAAIgmB,GAAQA,EAAKgC,kBAAoBhC,EAAK6U,aAAej+B,KAAKygC,eAAgB,CAC1E,IAAIzC,EAAOssK,EAAUnhL,KAAK,SAAA0U,GAAC,OAAKA,EAAEuG,QAAUvG,EAAEuG,OAAS,IACvDwhK,EAAe5nK,GAAQA,EAAKoG,OAAUpG,EAAKoG,YAAShhC,OAEnD,GAAIgmB,GAAQA,EAAKgC,kBAAoBhC,EAAK6U,aAAej+B,KAAKo/B,oBAAqB,CACpF,IAAIpB,EAAOssK,EAAUnhL,KAAK,SAAA0U,GAAC,OAAKA,EAAEuG,QAAUvG,EAAEuG,OAAS,IACnDsiI,EAAM,EACN1oI,GAAQA,EAAKoG,SACbsiI,EAAM1oI,EAAKoG,QACXpG,GAAQA,EAAKoG,QAAUkmK,EAAUrzK,MAAM,SAAA6uK,GAAE,OAAIA,EAAG1hK,SAAWsiI,MAC3Dk/B,EAAe5nK,GAAQA,EAAKoG,OAAUpG,EAAKoG,YAAShhC,GAG5D,IAAM0mM,EAAqC/qM,OAAA0G,EAAA,EAAA1G,CAAA,GACpCqqB,EADoC,CAEvC6U,WAAgB,GAAA15B,OAAJ6kB,GAAUA,EAAK6U,YAAuCqmK,GAClEngK,MAAOmmK,EACPzE,eAAgBD,EAChB9V,oBAAoB1mK,IAASA,EAAK+a,MAAOhb,KAAK,SAAAoc,GAAC,OAAwB,OAApBA,EAAEk+B,eAAkD,OAAxBl+B,EAAEm+B,mBAAwD,OAA1Bn+B,EAAEo+B,uBACjHksH,kBAAmBzmK,IAAQA,EAAK+a,MAAOhb,KAAK,SAAAoc,GAAC,OAAuB,OAAnBA,EAAElB,cAAmD,OAA1BkB,EAAEo+B,qBAAiD,OAAjBp+B,EAAEjB,YAA+C,OAAxBiB,EAAEm+B,qBACzIqsH,+BAAiC3mK,UAAmBhmB,IAATgmB,IAAuBA,EAAKG,qBAAqBwW,SAASre,GAAuBuD,sBAE5HmE,GAAQA,EAAKgC,mBAAqBhC,EAAK67C,cACxB77C,EAAMgC,kBAAoBqrB,GAAUrtB,EAAMgC,kBAErD0+K,EAAc7kI,YAAc,IAEvB77C,EAAMgC,mBAAqBprB,KAAK6hM,MACrCiI,EAAc7kI,YAAc,IAEvB77C,EAAMgC,mBAAqBprB,KAAK4hM,MACrCkI,EAAc7kI,YAAc,GAG5B6kI,EAAc7kI,YAAc,GAKpC,I5TyK8BzkC,E4TzKxBwpK,EAAqDjrM,OAAA0G,EAAA,EAAA1G,CAAA,GACpDqqB,EADoD,CAEvD6X,oBAAqB7X,EAAI,GAAA7kB,OAAM6kB,EAAK6X,qBAAuB,SAAO79B,IAEtE,GAAIgmB,GAAQA,EAAK6X,sBAAwBjhC,KAAKshC,4BAA6B,CACvE0oK,EAAsB/oK,oBAAtB,GAAA18B,OAA+C6kB,EAAK6X,qBACpD+oK,EAAsBrT,YAAa,EACnCqT,EAAsBnoK,wBAAtB,GAAAt9B,OAAmDvE,KAAK8hM,uBACxD,IAAM5+H,EAAiB95C,EAAMw5C,YAAYz5C,KAAK,SAAA9qB,GAAC,OAAIA,EAAEwkE,WAAaC,GAAeK,mBAC7ED,EACA8mI,EAAsBnU,WAAa3yH,EAAez6C,GAElDpkB,QAAQ4nD,KAAK,oFAGhB,GAAK7iC,GAASA,EAAK0Y,eAA+C,IAA9B1Y,EAAK0Y,cAAcvhC,OAQrD,CACH,IAAM2gC,EAAwB9X,EAAK0Y,cAAc,GAAGD,wBACpDmoK,EAAsB/oK,oBAAtB,GAAA18B,OAA+C6kB,EAAK6X,qBACpD+oK,EAAsBrT,WAAaz1J,IAA0BlhC,KAAK8hM,sBAClEkI,EAAsBnoK,wBAAtB,GAAAt9B,OAAmD28B,OAZmB,CACtE,IAAMo4J,K5TyJoB94J,E4TzJuBpX,EAAOA,EAAKgC,sBAAmBhoB,K5T0JrEozC,GAAgBhW,IAAUiW,GAAUjW,I4TzJzC+jK,EAA6B3jK,GAA8BxX,EAAOA,EAAKgC,iBAAmBprB,KAAKqhC,6BAC/FmjK,EAA+BxkM,KAAK8hM,sBAC1CkI,EAAsB/oK,oBAAwC,GAAA18B,OAAlB+0L,EAAwBt5L,KAAKmhC,0BAAiCojK,GAC1GyF,EAAsBloK,cAAgBd,GAAyBujK,EAA4BC,EAA8Bp7K,EAAOA,EAAKwV,kBAAex7B,GACpJ4mM,EAAsBrT,YAAa,EACnCqT,EAAsBnoK,wBAAtB,GAAAt9B,OAAmDigM,GAQvD,IAAMqE,EAAmC9pM,OAAA0G,EAAA,EAAA1G,CAAA,GAClCqqB,EADkC,CAErCk1B,iBAAkBA,IA2CtB,GAzCAuqJ,EAAahsH,SAAWzzD,EAAOppB,KAAKwiM,2BAA2Bp5K,GAAQ,GACvEy/K,EAAatiI,cAAgBn9C,GAAQA,EAAKm9C,eAAiBn9C,EAAKm9C,cAAchmE,OAAS,EAAI6oB,EAAKm9C,cAAgB,GAEhHsiI,EAAa5rH,OAAS7zD,IAASA,EAAK6zD,QAA0B,OAAhB7zD,EAAK6zD,QAAmB7zD,EAAK6zD,OAAS,gCAGhF7zD,GAAQA,EAAKuJ,qBAAuBvJ,EAAKuJ,sBAAwB3yB,KAAKiiM,sBAAwBzrJ,GAAgBptB,EAAKgC,oBAC/Gy9K,EAAapkK,cAAgBokK,EAAapkK,eAA8C,IAA7BokK,EAAapkK,eAG5Erb,GAAQA,EAAKgC,kBAAoBb,GAAY,MAAOC,GAAgBuO,kBACpC,MAA5B3P,EAAKuJ,qBACJvJ,EAAKuJ,sBAAwB3yB,KAAKiiM,uBAAyB74K,EAAKuJ,sBAAwB3yB,KAAKiiM,sBAAyE,MAAhD74K,EAAKo8C,yCAAmG,GAAhDp8C,EAAKo8C,yCAKpLqjI,EAAarjI,yCAA0C,EAJvDqjI,EAAarjI,yCAA0C,GAQ3Dp8C,GAAQA,EAAKgC,kBAAoBb,GAAY,MAAOC,GAAgBuO,kBACpC,MAA5B3P,EAAKuJ,qBACJvJ,EAAKuJ,sBAAwB3yB,KAAKiiM,uBAAyB74K,EAAKuJ,sBAAwB3yB,KAAKiiM,sBAAyE,MAAhD74K,EAAKo8C,yCAAmG,GAAhDp8C,EAAKo8C,yCAIpLqjI,EAAarjI,yCAA0C,EAHvDqjI,EAAarjI,yCAA0C,GAQ3Dp8C,GAAUA,EAAKw8C,yBAA4D,IAAjCx8C,EAAKw8C,yBACX,MAAjCx8C,EAAKw8C,yBAAqE,MAAjCx8C,EAAKw8C,yBACb,MAAjCx8C,EAAKw8C,yBACRijI,EAAa3L,8BAAgC,QAC7C2L,EAAajE,sBAAwBx7K,EAAKw8C,yBAE1CijI,EAAa3L,8BAAgC9zK,EAAI,GAAA7kB,OAAM6kB,EAAKw8C,yBAA4B,KAGvFx8C,GAAQppB,KAAKoN,MAAMm9L,sBAAuB,CAC3C,IAAMC,EAAKxqM,KAAKoN,MAAMm9L,sBACtB1B,EAAaz9K,iBAAoBo/K,EAAGp/K,iBACpCy9K,EAAaruJ,QAAUgwJ,EAAGhwJ,QAC1BquJ,EAAanpL,cAAgB8qL,EAAG9qL,eAAiBkP,IAAO5uB,KAAKoN,MAAMuhB,gBAAgBjP,eACnFmpL,EAAarjK,YAAcglK,EAAGhlK,YAGlC,GAAIpc,GAAQA,EAAKuJ,qBAAuBvJ,EAAKuJ,sBAAwB3yB,KAAKw7L,gBAAkBpyK,EAAKw5C,YAAYriE,OAAS,EAAG,CACrH,IAAM0iE,EAAa75C,EAAKw5C,YAAYz5C,KAAK,SAAAzU,GAAI,OAAIA,EAAKmuD,WAAaC,GAAeC,UAClF8lI,EAAahE,oBAAsB5hI,GAAcA,EAAWx6C,GAKhE,OADAogL,EAAaruJ,QAAUx6C,KAAKw6C,QACrB,CACHquJ,eACAiB,gBACAE,wDAKJ,QAAShqM,KAAKqiM,SAASriM,KAAKoN,MAAM03D,UAAU18C,KAAMpoB,KAAKoN,MAAMic,eAzc5C9a,IAAMC,eAo3C/B,IAAMsI,GAAiD,CACnDyyL,YAAa,CACTryL,UAAW,GACX2C,aAAc,IAElBZ,OAAQ,CACJlC,MAAO9D,GAAQC,KAAKU,KACpBoD,SAAU,YAEdipE,aAAc,CACVzoE,QAAS,EACTyE,SAAU,GACV9E,YAAa,IAEjB+oE,WAAY,CACR1oE,QAAS,EACTyE,SAAU,GACV9E,YAAa,IAEjBuyL,cAAe,CACXvyL,YAAa,IAEjBiqE,WAAY,CACRrqE,MAAO9D,GAAQ+B,IAAIb,SAEvBs1L,SAAU,CACN1yL,MAAO9D,GAAQiB,KAAKC,SAExBw1L,sBAAuB,CACnB5yL,MAAO9D,GAAQiB,KAAKC,SAExBo5C,YAAa,CACTv2C,SAAU,WACVC,OAAQ,GAEZuyL,SAAU,CACNvxL,OAAQ,GAEZqI,QAAS,CACLlG,YAAa,KAIN0iC,eA/Ff,SAAyB/uC,GACrB,IAAM46K,EACF5pL,OAAO8wC,OAAO9hC,EAAMiT,SAAS6uB,QAAQ1mB,KAAK,SAAA0+B,GAAO,MAAoB,uBAAhBA,EAAQ/gD,MAC3Dg+B,EAAmBt4B,QAAQm8K,IAA6BA,EAAwB5hL,OAA0D,UAAhD4hL,EAAwB5hL,MAAMurB,eAAiE,OAAlCq2J,EAAwB5hL,QAC/K89B,EAAWC,EAAmB/2B,EAAMsxB,OAAOwF,SAAW92B,EAAMsxB,OAAOwF,SAAS33B,OAAO,SAAAq4B,GAAC,MAAsB,UAAlBA,EAAEva,cAC1F2D,EAAkB5gB,EAAMmhB,WACxBm7K,EAAsBt8L,EAAM6rE,iBAAmB7rE,EAAM6rE,gBAAgBxxD,KAC3E,MAAO,CACH08C,UAAW/2D,EAAMqb,KACjBjB,cAAepa,EAAM4c,SACrBka,WACAwV,YAAatsC,EAAMmhB,WAAWnO,QAAQu5B,mBAAmB,IAAM,GAC/Ds4B,kBAAmB7kE,EAAMmhB,WAAW0jD,kBACpCtiD,cAAeviB,EAAMmhB,WAAWqB,iBAChCqsC,cAAe7uD,EAAMmhB,WAAWwjD,eAChChhD,YAAa3jB,EAAMmhB,WAAWwC,UAE9BtG,iBAAkBwrE,aAAkBuwG,GAAlBvwG,CAAkC7oF,EAAO,oBAC3DkwB,WAAYtxB,OAAOiqF,aAAkBwwG,GAAlBxwG,CAA8B7oF,EAAO,eACxDkzB,oBAAqBt0B,OAAOiqF,aAAkBywG,GAAlBzwG,CAAsC7oF,EAAO,wBACzE8zB,wBAAyBl1B,OAAOiqF,aAAkBywG,GAAlBzwG,CAAsC7oF,EAAO,4BAC7E+zB,cAAe80D,aAAkBywG,GAAlBzwG,CAAsC7oF,EAAO,iBAC5Dw8L,sBAAuBx8L,EAAMqb,KAAKw0D,iBAClCnZ,eAAgB12D,EAAMmhB,WAAWnO,QAAQ0jD,eACzCoxH,WAAYj/F,aAAkBywG,GAAlBzwG,CAAsC7oF,EAAO,cACzDgT,QAAShT,EAAMmhB,WAAWnO,QAC1B+jB,mBACAnW,kBACA07K,wBAIR,SAA4BhrM,EAAe2oD,GACvC,MAAO,CACH2/I,eAAgB,SAACH,GAAD,OAAiBnoM,EAAS2uD,aAAOm5I,GAAgB,WAAYK,KAC7EI,iBAAkB,SAACF,GAAD,OAAmBroM,EAAS2uD,aAAOm5I,GAAgB,aAAcO,KACnFI,YAAa,SAACD,GAAD,OAAcxoM,EAAS2uD,aAAOo5I,GAAY,QAASS,KAChEG,oBAAqB,SAACD,GAAD,OAAsB1oM,EAAS2uD,aAAOq5I,GAAoB,gBAAiBU,KAChG0C,eAAgB,SAACC,GAAD,OAAiBrrM,EAAS2uD,aAAOm5I,GAAgB,WAAYuD,KAC7E1F,QAAS,SAAC57K,GAAD,OAAU/pB,ExCt7CpB,SAAiB88C,EAAmBj5C,EAAsBkmB,GAC7D,sBAAAulC,EAAA5vD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAyvD,EAAOvvD,GAAP,IAAAsrM,EAAA33H,EAAA,OAAA/zE,EAAAC,EAAAI,KAAA,SAAAuvD,GAAA,cAAAA,EAAArvD,KAAAqvD,EAAApvD,MAAA,cAAAovD,EAAArvD,KAAA,EAAAqvD,EAAApvD,KAAA,EAEoCypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,UAA6D,CAAEimC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAUwc,KAF5I,cAEOuhL,EAFP97I,EAAAnH,KAGOsrB,EAAe5pD,EAAKjJ,iBAAmBiJ,EAAKjJ,gBAAgB5f,OAAS,EACvE6oB,EAAKjJ,gBAAiB,GAAGzc,cAAgB0lB,EAAKjJ,gBAAiB7W,MAAM,GAAK,OAC9EjK,EAAS0pL,GAAU4hB,IACnBtrM,EAASX,EAAgBs0E,EAAc,SAAU,YANlDnkB,EAAA9R,OAAA,SAOQ4tJ,EAAYliL,IAPpB,cAAAomC,EAAArvD,KAAA,GAAAqvD,EAAAlH,GAAAkH,EAAA,SASCxvD,EAAS0B,EAAyB8tD,EAAAlH,GAAK,2BATxCkH,EAAAlH,GAAA,yBAAAkH,EAAAhvD,SAAA+uD,EAAA,kBAAP,gBAAA3R,GAAA,OAAA0R,EAAA5uD,MAAAC,KAAAC,YAAA,GwCq7CgC+kM,CAAQh9I,EAAS7L,UAAW6L,EAAS9kD,aAAckmB,KAC/E07K,WAAY,SAAC17K,GAAD,OAAU/pB,ExCt6CvB,SAAoB88C,EAAmBj5C,EAAsBkmB,GAChE,sBAAA2lC,EAAAhwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA6vD,EAAO3vD,GAAP,IAAAkmM,EAAAvyH,EAAA,OAAA/zE,EAAAC,EAAAI,KAAA,SAAA2vD,GAAA,cAAAA,EAAAzvD,KAAAyvD,EAAAxvD,MAAA,cAAAwvD,EAAAzvD,KAAA,EAAAyvD,EAAAxvD,KAAA,EAEoCypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D6kB,EAAKX,IAAM,CAAE0gB,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUwc,KAFtJ,cAEOm8K,EAFPt2I,EAAAvH,KAGOsrB,EAAe5pD,EAAKjJ,iBAAmBiJ,EAAKjJ,gBAAgB5f,OAAS,EACvE6oB,EAAKjJ,gBAAiB,GAAGzc,cAAgB0lB,EAAKjJ,gBAAiB7W,MAAM,GAAK,OAC9EjK,EAAS0pL,GAAUwc,IACnBlmM,EAASX,EAAgBs0E,EAAc,SAAU,YANlD/jB,EAAAlS,OAAA,SAOQwoJ,EAAY98K,IAPpB,cAAAwmC,EAAAzvD,KAAA,GAAAyvD,EAAAtH,GAAAsH,EAAA,SASC5vD,EAAS0B,EAAyBkuD,EAAAtH,GAAK,2BATxCsH,EAAAtH,GAAA,yBAAAsH,EAAApvD,SAAAmvD,EAAA,kBAAP,gBAAAE,GAAA,OAAAH,EAAAhvD,MAAAC,KAAAC,YAAA,GwCq6CmC6kM,CAAW98I,EAAS7L,UAAW6L,EAAS9kD,aAAckmB,KACrFg9K,UAAW,SAAC/8K,GAAD,OAAYhqB,ExCh8CxB,SAAmB88C,EAAmBj5C,EAAsBmmB,GAC/D,sBAAA3nB,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwC,EAAOtC,GAAP,IAAA+pB,EAAA,OAAAnqB,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cAAAmC,EAAAnC,KAAA,EACgBypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D8kB,IADjF,OACGD,EADHxnB,EAAA8lD,KAEHroD,EAAS0pL,GAAU3/J,IAFhB,wBAAAxnB,EAAA/B,SAAA8B,MAAP,gBAAAE,GAAA,OAAAH,EAAA3B,MAAAC,KAAAC,YAAA,GwC+7CoCmmM,CAAUp+I,EAAS7L,UAAW6L,EAAS9kD,aAAcmmB,KACrFk4G,WAAY,SAAC94G,EAAIvM,GAAL,OAAc7c,EAASkiI,GAAWv5E,EAAS7L,UAAW6L,EAAS9kD,aAAculB,EAAIvM,KAC7FutK,SAAU,SAAChhK,EAAIvM,EAAMhS,GAAX,OAAuB7K,EAASoqL,GAASzhI,EAAS7L,UAAW6L,EAAS9kD,aAAculB,EAAIvM,EAAMhS,KACxGipL,qBAAsB,SAAC9pK,EAAQkrE,GAAT,OAAwBl1F,ExCx2C/C,SAA8B88C,EAAmBj5C,EAAsBmmB,EAAgBkrE,GAC1F,sBAAAllC,EAAAtwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAmwD,EAAOjwD,GAAP,IAAAg/C,EAAA,OAAAp/C,EAAAC,EAAAI,KAAA,SAAAiwD,GAAA,cAAAA,EAAA/vD,KAAA+vD,EAAA9vD,MAAA,UACG4+C,EAAW,IAAI8oD,SACrB5S,EAAWF,MAAQh2C,EAAS+oD,OAAO,OAAQ7S,EAAWF,MACtDE,EAAW9+E,OAAS4oC,EAAS+oD,OAAO,QAAS7S,EAAW9+E,OACxD8+E,EAAWzoE,aAAeuyB,EAAS+oD,OAAO,cAAe7S,EAAWzoE,aACpEyoE,EAAW/oE,QAAU6yB,EAAS+oD,OAAO,SAAUkQ,OAAO/iB,EAAW/oE,SACjE+oE,EAAW9rE,IAAM41B,EAAS+oD,OAAO,KAAM7S,EAAW9rE,IAN/C8mC,EAAA/vD,KAAA,GAQO+0F,EAAW9rE,GARlB,CAAA8mC,EAAA9vD,KAAA,gBAAA8vD,EAAA9vD,KAAA,GASWypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D8kB,EAA7D,eAAA9kB,OAAiFgwF,EAAW9rE,IAAM,CAAE0gB,OAAQ,MAAOC,KAAMiV,IATxI,QAAAkR,EAAA9vD,KAAA,wBAAA8vD,EAAA9vD,KAAA,GAYWypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D8kB,EAA7D,cAAiF,CAAE8f,OAAQ,OAAQC,KAAMiV,IAZxH,eAAAkR,EAAA9vD,KAAA,GAcOJ,EAASurM,GAAqBzuJ,EAAWj5C,EAAcmmB,IAd9D,QAeChqB,EAASX,EAAgB,yBAA0B,YAfpD6wD,EAAA9vD,KAAA,uBAAA8vD,EAAA/vD,KAAA,GAAA+vD,EAAA5H,GAAA4H,EAAA,SAiBClwD,EAAS0B,EAAyBwuD,EAAA5H,GAAK,uCAjBxC4H,EAAA5H,GAAA,yBAAA4H,EAAA1vD,SAAAyvD,EAAA,kBAAP,gBAAA6E,GAAA,OAAA9E,EAAAtvD,MAAAC,KAAAC,YAAA,GwCu2C2DkzL,CAAqBnrI,EAAS7L,UAAW6L,EAAS9kD,aAAcmmB,EAAQkrE,KAC/HI,eAAgB,SAACtrE,EAAQqoE,EAAYx1E,GAArB,OAA8B7c,ExCh1C/C,SAAwB88C,EAAmBj5C,EAAsBmmB,EAAgBmqE,EAAet3E,GACnG,sBAAA83C,EAAAj1D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA80D,EAAO50D,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA40D,GAAA,cAAAA,EAAA10D,KAAA00D,EAAAz0D,MAAA,cAAAy0D,EAAA10D,KAAA,EAAA00D,EAAAz0D,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D8kB,EAA7D,eAAA9kB,OAAiFivF,GAAS,CAAErqD,OAAQ,WAF/G,cAAA+qB,EAAAz0D,KAAA,EAGOJ,EAASurM,GAAqBzuJ,EAAWj5C,EAAcmmB,IAH9D,OAIChqB,EAASX,EAAe,GAAA6F,OAAI2X,EAAJ,YAAoB,aAJ7Cg4C,EAAAz0D,KAAA,sBAAAy0D,EAAA10D,KAAA,EAAA00D,EAAAvM,GAAAuM,EAAA,SAMC70D,EAAS0B,EAAyBmzD,EAAAvM,GAAK,iCANxCuM,EAAAvM,GAAA,yBAAAuM,EAAAr0D,SAAAo0D,EAAA,iBAAP,gBAAA5D,GAAA,OAAA2D,EAAAj0D,MAAAC,KAAAC,YAAA,GwC+0C2D00F,CAAe3sC,EAAS7L,UAAW6L,EAAS9kD,aAAcmmB,EAAQqoE,EAAYx1E,KACrIxd,gBAAiB,SAACC,EAASC,GAAV,OAAsBS,EAASX,EAAgBC,EAASC,KACzEklM,iBAAkB,SAACz6K,EAAQwhL,GAAT,OAAyBxrM,ExCp0C5C,SAA2B88C,EAAmBj5C,EAAsBmmB,EAAgBy6K,GACvF,sBAAAj0I,EAAA9wD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA2wD,EAAOzwD,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAywD,GAAA,cAAAA,EAAAvwD,KAAAuwD,EAAAtwD,MAAA,cAAAswD,EAAAvwD,KAAA,EAAAuwD,EAAAtwD,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D8kB,EAA7D,qBAAwF,CAAE8f,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAUk3L,KAF1I,cAAA/zI,EAAAtwD,KAAA,EAGOJ,EAAS8sF,GAAWhwC,EAAWj5C,IAHtC,OAIC7D,EAASX,EAAgB,uBAAwB,YAJlDqxD,EAAAtwD,KAAA,sBAAAswD,EAAAvwD,KAAA,EAAAuwD,EAAApI,GAAAoI,EAAA,SAMC1wD,EAAS0B,EAAyBgvD,EAAApI,GAAK,kCANxCoI,EAAApI,GAAA,yBAAAoI,EAAAlwD,SAAAiwD,EAAA,iBAAP,gBAAAk5G,GAAA,OAAAn5G,EAAA9vD,MAAAC,KAAAC,YAAA,GwCm0CwD6qM,CAAkB9iJ,EAAS7L,UAAW6L,EAAS9kD,aAAcmmB,EAAQwhL,KACzHxC,uBAAwB,kBAAMhpM,EAAS4pL,QAAsB7lL,OA+CtD05C,CAA6CmkJ,ICj/CtD8J,eACF,SAAAA,EAAY39L,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA+qM,IACtB/jM,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAgsM,GAAAx9L,KAAAvN,KAAMoN,KA2BVw8E,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA5BjB79C,EA6B1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA7BlB79C,EA2C1B8jH,gBAAkB,WAAM,IAAAC,EACK/8G,GAAOg9G,YAAxB/8G,EADY88G,EACZ98G,KAAMsE,EADMw4G,EACNx4G,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cAAc/C,QAAQoS,EAAQolD,IAAM,KACvI3wD,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IA9CFzmF,EAiD1BgkM,iBAAmB,SAACviL,GAAe,IAAA8gK,EACNv7K,GAAOi/E,UAAxBh/E,EADuBs7K,EACvBt7K,KAAMsE,EADiBg3K,EACjBh3K,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cAAc/C,QAAQoS,EAAQ8W,OAASZ,GAC1IzhB,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,GAExBzmF,EAAK4G,SAAS,CAACi3C,SAAQ,GAAO79C,EAAK+iF,aAtDb/iF,EAyD1BikM,aAAe,WAAM,IAAArgF,EACQ58G,GAAO68G,SAAxB58G,EADS28G,EACT38G,KAAMsE,EADGq4G,EACHr4G,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,IA5DFzmF,EA+D1BqvD,iBAAmB,SAACvpD,GAChB,GAAc,IAAVA,EAAa,KAAAwvC,EACYtuC,GAAOuuC,iBAAxBtuC,EADKquC,EACLruC,KAAMsE,EADD+pC,EACC/pC,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,OACrB,KAAAy9G,EACsBl9L,GAAO68G,SAAxB58G,EADLi9L,EACKj9L,KAAMsE,EADX24L,EACW34L,OACRk7E,EAAQx/E,EAAK9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WAAWh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACnG8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,KApE5BzmF,EAAK+G,MAAQ,CACT82C,SAAS,GAJS79C,mFAStB,IAAM83E,EAA2B,GACjCA,EAASjxD,KAAK7tB,KAAKoN,MAAM++E,WAAWnsF,KAAKm8C,UAAWn8C,KAAKkD,eAEb,IAAxClD,KAAKoN,MAAMwlE,kBAAkBryE,QAC7Bu+E,EAASjxD,KAAK7tB,KAAKoN,MAAMyxE,uBAAuB7+E,KAAKm8C,UAAWn8C,KAAKkD,eAGhC,IAArClD,KAAKoN,MAAM2c,UAAU3B,KAAK7nB,QAC1Bu+E,EAASjxD,KAAK7tB,KAAKoN,MAAMihD,eAAeruD,KAAKm8C,UAAWn8C,KAAKkD,eAG5DlD,KAAKoN,MAAMshF,aACZ5P,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,eAGlDlD,KAAK4pF,YACLniF,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAK+pF,WAAY/pF,KAAK+pF,6CAkD5C,IACGllC,EAAY7kD,KAAK+N,MAAjB82C,QACR,OACI32C,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WAAWoB,KAAKoN,MAAMshF,aAAoBxgF,EAAAhP,EAAAiP,cAAA,YAE7DD,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACI53B,MAAO,CAAC,YAAa,QAAS,aAC9BG,iBAAkBr2D,KAAKq2D,mBAE1BxR,EACG32C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO,CAAEC,UAAW,WACrBH,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGJl0C,EAAAhP,EAAAiP,cAACg9L,GAAD,CACIvsB,OAAQ5+K,KAAKirM,aACb9uJ,UAAWn8C,KAAKm8C,UAChBj5C,aAAclD,KAAKkD,aACnBmmB,OAAQrpB,KAAKqpB,OACbo6K,aAAczjM,KAAKgrM,iBACnBlf,aAAc9rL,KAAK8qH,qDAlEnC,OAAO9qH,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQ4pC,UAAWh8C,QAAQ,IAAK,0CAIhF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQrP,aAAc/C,QAAQ,IAAK,oCAInF,OAAOH,KAAKoN,MAAMgF,MAAMG,OAAOvE,GAAOi/E,UAAU16E,OAAQ8W,OAAQlpB,QAAQ,IAAK,YAzCxDoO,IAAMC,eAqIpBsuC,mBAlBf,SAAyB/uC,GACrB,MAAO,CACH8a,MAAO9a,EAAMqb,KAAKhB,KAClBwqD,kBAAmB7kE,EAAMmhB,WAAW0jD,kBACpC8b,YAAa3gF,EAAMmhB,WAAWnO,QAAQ7E,KACtC6N,UAAWhc,EAAM4c,WAIzB,SAA4BtrB,GACxB,MAAO,CACH8sF,WAAY,SAAChwC,EAAWj5C,GAAZ,OAA6B7D,EAAS8sF,GAAWhwC,EAAWj5C,KACxEi3C,gBAAiB,SAACj3C,GAAD,OAAkB7D,EAAS86C,GAAgBj3C,KAC5D27E,uBAAwB,SAAC1iC,EAAWj5C,GAAZ,OAA6B7D,EAASw/E,GAAuB1iC,EAAWj5C,KAChGmrD,eAAgB,SAAClS,EAAWj5C,GAAZ,OAA6B7D,EAASgvD,GAAelS,EAAWj5C,OAIzE45C,CAA6CiuJ,IC9I/C/sJ,GAAwBH,GAAS,yBA6ExC/mC,GAAiD,CACnD4C,MAAO,CACHlC,QAAS,YACToE,gBAAiB3I,GAAQC,KAAKI,KAC9B+D,UAAW,KAEfjS,MAAO,CACH2R,MAAO9D,GAAQ+B,IAAIb,UAIZgxC,gBAAoC,CAAEF,KAAM,kBAA5CE,CAvFa,SAAC/3C,GAAiB,IAClCi4C,EAA8Cj4C,EAA9Ci4C,aAA+BS,GAAe14C,EAAhCy4C,SAAgCz4C,EAAtB2+C,MAAsB3+C,EAAf04C,YACvC,OACI53C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMjjB,WAAS,EAACoyC,QAAS,GACrBp6C,EAAAhP,EAAAiP,cAACgrB,GAAA,EAAD,CAAMlO,MAAI,EAACmO,GAAI,GACXlrB,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,QAAMi3C,SAAUC,GAEZn3C,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,eACJqoC,UAAWnD,GACXntC,MAAM,gBACNuxC,SAAUxH,GACVuH,WAAS,IAEbr3C,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WACND,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAK,WACLqoC,UAAWnD,GACXntC,MAAM,YACNwvC,QAAM,EACN8B,WAAS,GAETr3C,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAAd,YACAmH,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAAd,YACAmH,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAAd,UACAmH,EAAAhP,EAAAiP,cAAA,UAAQpH,MAAM,KAAd,2BAGJmH,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WACND,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,aACJqoC,UAAWnD,GACXntC,MAAM,cACNsxC,WAAS,IAEbr3C,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WACND,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,QACJqoC,UAAWnD,GACXntC,MAAM,QACNuxC,SAAUxH,GACVuH,WAAS,IAEbr3C,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WACND,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,YACJqoC,UAAWnD,GACXntC,MAAM,aACNuxC,SAAUxH,GACVuH,WAAS,IAEbr3C,EAAAhP,EAAAiP,cAAA,WAAMD,EAAAhP,EAAAiP,cAAA,WACND,EAAAhP,EAAAiP,cAACm3C,GAAA,EAAD,CACIppC,KAAI,WACJqoC,UAAWnD,GACXntC,MAAM,YACNuxC,SAAUxH,GACVuH,WAAS,IAEbr3C,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAACw3C,GAAD,CAAY/tB,KAAK,SAASjW,SAAUmkC,EAAYjB,QAASz3C,EAAMstG,UAAW97G,QAAQ,YAAYmY,MAAM,WAApG,YACC3J,EAAMU,UACHI,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CAAYh/C,QAAQ,KAAK2lD,UAAU,KAAK+hC,MAAM,UACzCp4E,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO1R,OAApB,sDAEHhC,SCzEGy6C,GAAS,yBA+E/Bf,mBAAQ,KANvB,SAA4Bz9C,GACxB,MAAO,CACH+rM,mBAAoB,SAAC3V,EAAStsJ,GAAV,OAAqB9pC,E3TzF1C,SAA4BgsM,EAA6CliK,GAC5E,sBAAArqC,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAw9C,OAAA,SACIuuJ,GAAcD,EAAcliK,IADhC,wBAAA5pC,EAAAM,SAAAT,MAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,G2TwFsDmrM,CAAmB3V,EAAStsJ,OAIvE2T,CA9ES,SAAC1vC,GAAyB,IAAAs0C,EACRnzC,IAAMozC,SAAS,IADPC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GACvC/7C,EADuCi8C,EAAA,GAC1B2pJ,EAD0B3pJ,EAAA,GAAA0qC,EAEhB/9E,IAAMozC,UAAS,GAFC4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAEvCznC,EAFuC0nC,EAAA,GAE9BQ,EAF8BR,EAAA,GAAAG,EAGhBn+E,IAAMozC,UAAS,GAHCgrC,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAGvC5+E,EAHuC6+E,EAAA,GAG5B6+G,EAH4B7+G,EAAA,GAKxC3mC,EAA+C,CACjDnK,MAAO,GACPqV,UAAW,GACX7iC,SAAU,GACVnrB,aAAc,IACdS,WAAY,GACZX,SAAU,KAGduL,IAAMq9C,UAAU,WACZl+C,GAAKqE,qBAEN,IAGHxD,IAAMq9C,UAAU,WAEZ,GADmBl+C,GAAK6tC,iBACxB,CAIA,IAAMp2C,EAAauI,GAAKk9B,eACxBob,EAAcnK,MAAQ12C,EAAMsmM,OAAStmM,EAAMsmM,OAAO,GAAKtmM,EAAM22C,YAC7DkK,EAAckL,UAAY/rD,EAAMumM,WAAavmM,EAAMumM,WAAa,GAChE1lJ,EAAc33B,SAAWlpB,EAAMwmM,YAAcxmM,EAAMwmM,YAAc,GACjE3lJ,EAAcriD,WAAawB,EAAMvB,uBAAyBuB,EAAMvB,uBAAyB,QAPrF8J,GAAK88B,UAQV,CAAC98B,GAAKk9B,iBAwBT,MAAoB,KAAhBjlC,EAEIuI,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAIhN,IAIlBuI,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAAA,cACID,EAAAhP,EAAAiP,cAAA,8BACAD,EAAAhP,EAAAiP,cAAA,8EAEJD,EAAAhP,EAAAiP,cAACy9L,GAAD,CAAqBlxF,UAAW71D,EAAS/2C,UAAWA,EAAWk4C,cAAeA,EAAeZ,SA7BxF,SAACkM,GACdy7B,GAAW,GACX,IAAM5nF,EAAauI,GAAKk9B,eACxBl9B,GAAKmsC,YAEL,IAAI1Q,EAAShkC,EAAMsmM,OAAS,WAAa,qBAEzCr+L,EAAMg+L,mBAAmB95I,EAAYnoB,GAAQjiC,KAAK,SAACtG,GAZ3B,IAACuE,IAaDvE,EAAKuE,MAZ7BuI,GAAKqF,IAAM5N,EACXomM,EAAev9L,GAAOH,cAAcI,MAYhCP,GAAKm+L,gBAAkBh8L,KAAKjD,UAAU0kD,IACxC,WACEy7B,GAAW,GACXy+G,GAAS,YCVN1uJ,mBAAQ,KANvB,SAA4Bz9C,GAC1B,MAAO,CACLysM,2BAA4B,SAAC3vJ,EAAWj5C,GAAZ,OAA6B7D,E1LZtD,SACL88C,EACAj5C,GAEA,sBAAApE,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAkQ,EAAA,OAAAtQ,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAGSypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,kBAAqE,CAAEimC,OAAQ,QAH5F,YAK2B/lC,KAHxBmM,EAFHhQ,EAAAmoD,MAKW97B,aACZvsB,EAASX,EAAe,uCAAyC,YACjEkH,OAAOjG,KAAK4P,EAASqc,YAAa,SAAU,wBAE5CvsB,EACEX,EAAe,sEAEb,YAZHa,EAAAE,KAAA,sBAAAF,EAAAC,KAAA,EAAAD,EAAAooD,GAAApoD,EAAA,SAiBHF,EAASX,EAAgB,8CAA+C,UAjBrEa,EAAAooD,GAAA,yBAAApoD,EAAAM,SAAAT,EAAA,iBAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,G0LQoE8rM,CAA8B5vJ,EAAWj5C,OAIhG45C,CA1CuB,SAAC1vC,GACrC,OACEc,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACEJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAOmS,GAAe7G,OAC3BxL,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOmS,GAAe9K,OACxBrI,EAAM4+L,YAET99L,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,QAAMC,MAAOmS,GAAeE,UAA5B,qEACqE,IACnEvS,EAAAhP,EAAAiP,cAACq7E,GAAA,EAAD,CAAM1jF,KAAK,IAAI4Q,QAAS,kBAAMtJ,EAAM0+L,2BAA2B1+L,EAAM+uC,UAAW/uC,EAAMlK,gBAAtF,kBAORgL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAOmS,GAAeG,qBACzBxS,EAAAhP,EAAAiP,cAACw3C,GAAD,CACEl9B,GAAG,iCACHmP,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACNwuC,WAAW,EACXn3C,MAAOmS,GAAeI,UACtBjK,QAAStJ,EAAMi4C,aACfR,SAAS,GARX,YCNF/tC,GAA+C,CACnD0J,WAAY,CACVtJ,UAAW,GAEb6F,KAAM,CACJ40E,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,QACbna,YAAa/sC,GAAQC,KAAKI,KAC1B4D,UAAW,GACX3F,OAAQ,IAEV06L,iBAAkB,CAChBt6G,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,SACbna,YAAa,QACb9oC,UAAW,GACX3F,OAAQ,GACRyF,SAAU,YAEZ0/F,aAAc,CACZx/F,UAAW,GACXmC,WAAY,MACZf,UAAW,oBAEbq8F,SAAU,CACR59F,MAAO9D,GAAQiB,KAAKC,QACpB2D,SAAU,GACVd,SAAU,YAEZoe,QAAS,CACPle,UAAW,GACXmC,WAAY,GACZQ,cAAe,GACf1C,YAAa,GACbH,SAAU,YAEZ4pF,cAAe,CACb5pF,SAAU,WACV+1C,OAAQ,GACRjxC,SAAU,MACVgrE,WAAY,SACZhvE,SAAU,IAEZy1C,YAAa,CACXv2C,SAAU,WACVhI,IAAK,GACLiI,MAAO,EACP2E,gBAAiB,SAEnBqkE,aAAc,CACZ1uE,OAAQ,GACR6H,MAAO,GACPpC,SAAU,YAEZg7E,WAAY,CACVh7E,SAAU,aAICk1L,GAlFM,SAAC9+L,GACpB,OACEc,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOiG,MAClB7O,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOse,SACjBlnB,EAAAhP,EAAAiP,cAACwyF,GAAD,CAAcvyF,MAAO0I,GAAO69F,WAC5BzmG,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO8pF,eAAgBxzF,EAAMynE,UAC1C3mE,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOy2C,aAClBr/C,EAAAhP,EAAAiP,cAAC6qB,GAAD,CACEvjB,MAAM,kBACN2f,QACElnB,EAAAhP,EAAAiP,cAACqI,GAAA,EAAD,CAAYpI,MAAO0I,GAAOmpE,aAAcvpE,QAAStJ,EAAM++L,eACrDj+L,EAAAhP,EAAAiP,cAACwvD,GAAAz+D,EAAD,CAAYkP,MAAO0I,GAAOk7E,WAAYl6E,SAAS,iBCwFzDhB,GAA4C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7CwhB,GAD6C,CAEhDC,WAAY,CACVtJ,UAAW,GAEb+0L,iBAAkB,CAChBt6G,UAAW,OACXj+E,OAAQ,EACRymD,YAAa,SACbna,YAAa,QACb9oC,UAAW,GACX3F,OAAQ,GACRyF,SAAU,YAEZ0/F,aAAc,CACZx/F,UAAW,GACXmC,WAAY,MACZf,UAAW,sBAWAwkC,mBAAQ,KAPvB,SAA4Bz9C,GAC1B,MAAO,CACLX,gBAAiB,SAACC,EAASC,GAAV,OACfS,EAASX,EAAgBC,EAASC,OAIzBk+C,CAlHiB,SAAC1vC,GAAiB,IAAAs0C,EACtBnzC,IAAMozC,SAAS,CACvCkzB,SAAUznE,EAAMynE,SAChBu3H,kBAAiChpM,IAAnBgK,EAAMynE,WAH0BjzB,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GACzC3zC,EADyC6zC,EAAA,GAClCh0C,EADkCg0C,EAAA,GA8BhD,OACE1zC,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACEJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACnBxL,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOrB,OAChBrI,EAAM4+L,YAET99L,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO2J,UAApB,0DAEFvS,EAAAhP,EAAAiP,cAAA,gBACsB/K,IAAnB2K,EAAM8mE,SACL3mE,EAAAhP,EAAAiP,cAACk+L,GAAD,CAAcx3H,SAAU9mE,EAAM8mE,SAAUs3H,cArB9B,WACpBv+L,EAAS,CACPinE,cAAUzxE,EACVgpM,cAAc,IAGZh/L,EAAMk/L,4BAA4Bl/L,EAAMk/L,gCAiBlCp+L,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACEJ,EAAAhP,EAAAiP,cAACs/C,GAAA,EAAD,CAAMr/C,MAAO0I,GAAOm1L,kBAClB/9L,EAAAhP,EAAAiP,cAACgnF,GAAD,CACE1sE,GAAG,wBACH/R,QA1CK,SAACke,GACtB,IAAM23K,EAAe33K,EAAM20B,OAAO6qC,MAAM,GACpCj8D,GAAgBo0K,EAAa30K,OAKjChqB,EAAS,CACPinE,SAAU03H,EAAarwL,KACvBkwL,cAAc,IAGhBh/L,EAAMo/L,4BAA4BD,IAThCn/L,EAAM1O,gBAAgB,wDAAyD,YAwCjEqY,MAAM,UACN3I,MAAO0I,GAAO4/F,cAEdxoG,EAAAhP,EAAAiP,cAAA,2BAGJD,EAAAhP,EAAAiP,cAACyvC,GAAA,EAAD,CACE02D,cAAY,EACZlmG,MAAO0I,GAAO0J,WACd8lE,MAAM,UAHR,yCAYVp4E,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO4J,qBACjBxS,EAAAhP,EAAAiP,cAACw3C,GAAD,CACEl9B,GAAG,iCACHmP,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACNwuC,WAAW,EACXn3C,MAAO0I,GAAO6J,UACdjK,QAAStJ,EAAMi4C,aACfR,SAAS,EACTljC,UAAW5T,EAAMq+L,cATnB,YCbFt1L,GAA4C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC7CwhB,GAD6C,CAEhDksL,YAAa,CACXv1L,UAAW,IAEbw1L,cAAe,CACbv1L,YAAa,IAEf6D,YAAa,CACXlD,SAAU,GACVf,MAAO9D,GAAQ6B,OAAOX,QACtBmG,QAAS,eACTyE,cAAe,UAEjB7D,YAAa,CACXZ,QAAS,eACTyE,cAAe,SACf3E,YAAa,GAEfxG,KAAM,CACJ4I,WAAY,SAIDmwL,GAvFsB,SAACv/L,GAA0B,IAAAs0C,EACnBnzC,IAAMozC,SAASv0C,EAAMw/L,cADFhrJ,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GACvDkrJ,EADuDhrJ,EAAA,GACzCirJ,EADyCjrJ,EAAA,GAExDtjC,EAAalR,EAAM0/L,gCAAkC,EACjC5+L,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAC+pD,GAAAh5D,EAAD,CAASkP,MAAO0I,GAAOkE,cACvB9M,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOoE,aAClBhN,EAAAhP,EAAAiP,cAAA,cAASf,EAAM0/L,iCADjB,kEAGF5+L,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,WACpBq9B,EAAUz9B,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOlD,MAAjB,yJAUhB,OACE1F,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACEJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACnBxL,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOrB,OAChBrI,EAAM4+L,YAET99L,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,SACGmQ,GACCpQ,EAAAhP,EAAAiP,cAAA,SACDw9B,GAEHz9B,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAACw7C,GAAA,EAAD,CAASv7C,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAM+X,GAAO2G,QAAY3G,GAAO21L,eAC9Cv+L,EAAAhP,EAAAiP,cAACy1C,GAAA,EAAD,CACEn7B,GAAG,+BACHo7B,QAAS31C,EAAAhP,EAAAiP,cAAC21C,GAAA,EAAD,CAAU/sC,MAAM,YAAY4K,UAAWvU,EAAMg/L,aAAcroJ,QAAS6oJ,EAAcrpJ,SArBhF,SAAC3uB,GACtBi4K,EAAmBj4K,EAAM20B,OAAOxF,SAChC32C,EAAM2/L,yBAAyBn4K,EAAM20B,OAAOxF,YAoBlC31C,MAAO0I,GAAO21L,YACdx4L,MAAO,2IAKf/F,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO4J,sBACftT,EAAMg/L,cACHl+L,EAAAhP,EAAAiP,cAAA,QAAMC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAM+X,GAAO/B,QAAY+B,GAAO41L,gBAA3C,wCACLx+L,EAAAhP,EAAAiP,cAACw3C,GAAD,CACEl9B,GAAG,iCACHmP,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACNwuC,WAAW,EACXn3C,MAAO0I,GAAO6J,UACdjK,QAAStJ,EAAMi4C,aACfR,SAAS,EACTljC,UAAWvU,EAAMg/L,eAAiBQ,GATpC,WC0IF91L,GAA2C/X,OAAA0G,EAAA,EAAA1G,CAAA,GAC5CwhB,GAD4C,CAE/CysL,SAAU,CACR3+L,UAAW,UAEb4+L,QAAS,CACPn1L,SAAU,IAEZo1L,qBAAsB,CACpB/uL,aAAc,MACdvC,gBAAiB3I,GAAQ2B,MAAMT,QAC/B4C,MAAO,UACP8F,eAAgB,SAChBhC,WAAY,SACZzB,MAAO,GACP7H,OAAQ,GACR+I,QAAS,cACTrC,OAAQ,UAEVob,KAAM,CACFvb,SAAU,IAEdq1L,WAAW,CACT/zL,MAAO,OAETg0L,WAAY,CACVh0L,MAAO,SAyBI0jC,mBAAQ,KArBvB,SAA4Bz9C,GAC1B,MAAO,CACLguM,wBAAyB,SACvBlxJ,EACAj5C,EACAoqM,EACAV,EACAW,GALuB,OAOvBluM,E9LtKC,SACL88C,EACAj5C,EACAoqM,EACAV,EACAW,GAEA,sBAAArsM,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,IAAAg/C,EAAA9uC,EAAA,OAAAtQ,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA7B,KAAA,GAEG6+C,EAAW,IAAI8oD,UACZC,OAAO,0BAA2BkQ,OAAOg2F,IAClDjvJ,EAAS+oD,OAAO,eAAgBkQ,OAAOs1F,IACvCvuJ,EAAS+oD,OAAO,OAAQmmG,GALrBlsM,EAAA5B,KAAA,EAOyCypC,GAAI,aAAA3kC,OACjC43C,EADiC,iBAAA53C,OACRrB,EADQ,kBAE9C,CAAEimC,OAAQ,OAAQC,KAAMiV,IATvB,cAOG9uC,EAPHlO,EAAAqmD,OAYen4C,EAASw3D,QACrB1nE,EAASX,EAAe,6DAA+D,YAChF6Q,EAASi+L,yBAAyBjtM,OAAS,EAClDlB,EAASX,EAAe,gFAAkF,UAG1GW,EAASX,EAAe,2CAA6C,YAlBxE2C,EAAA07C,OAAA,SAqBIxtC,GArBJ,cAAAlO,EAAA7B,KAAA,GAAA6B,EAAAsmD,GAAAtmD,EAAA,SAuBHhC,EAASX,EAAgB,uDAAwD,UAvB9E2C,EAAAsmD,GAAA,yBAAAtmD,EAAAxB,SAAAsB,EAAA,kBAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,G8LgKMwtM,CACEtxJ,EACAj5C,EACAoqM,EACAV,EACAW,OAMKzwJ,CA1Na,SAAC1vC,GAC3B,IAD4Cs0C,EASInzC,IAAMozC,UAAS,GATnBC,EAAA7iD,OAAAmN,EAAA,EAAAnN,CAAA2iD,EAAA,GASrCgsJ,EATqC9rJ,EAAA,GASnB+rJ,EATmB/rJ,EAAA,GAAA0qC,EAUJ/9E,IAAMozC,SAAS,eAVX4qC,EAAAxtF,OAAAmN,EAAA,EAAAnN,CAAAutF,EAAA,GAUrCshH,EAVqCrhH,EAAA,GAUvBshH,EAVuBthH,EAAA,GAAAG,EAWJn+E,IAAMozC,SAVL,CACvColB,SAAS,EACT+mI,cAAe,EACfjvM,OAAQ,GACRkvM,cAAe,GACfC,iBAAkB,GAClBR,yBAA0B,KAPgB7gH,EAAA5tF,OAAAmN,EAAA,EAAAnN,CAAA2tF,EAAA,GAWrCuhH,EAXqCthH,EAAA,GAWvBuhH,EAXuBvhH,EAAA,GAatCwhH,EAAqB,SAACC,GAC1BT,GAAoB,GAChBS,GAAuBA,EAAoBrnI,SAC7C8mI,EAAgB,WAChBzgM,EAAMihM,mBAAqBjhM,EAAMihM,sBAEjCR,EAAgB,UAChBK,EAAgBE,KA0CdE,EACJpgM,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOk2L,UACjB9+L,EAAAhP,EAAAiP,cAAA,KAAGC,MAAO0I,GAAOm2L,SACd7/L,EAAMmhM,mBAAqBnhM,EAAMmhM,kBAAkBryL,MAEtDhO,EAAAhP,EAAAiP,cAACw3C,GAAD,CACEl9B,GAAG,iCACHmP,KAAK,SACLh5B,QAAQ,YACRmY,MAAM,UACNwuC,WAAW,EACXn3C,MAAO0I,GAAO6J,UACdjK,QAlDe,WACftJ,EAAMmhM,oBACRZ,GAAoB,GACpBvgM,EACGigM,wBAAwBjgM,EAAM+uC,UAAW/uC,EAAMlK,aAAckK,EAAMkgM,wBAClElgM,EAAMw/L,aAAcx/L,EAAMmhM,mBAE3BrnM,KAAKinM,KA4CNtpJ,QAAS6oJ,EACT/rL,SAAUvU,EAAMuU,UAAY+rL,GAT9B,gCAaCtgM,EAAMkgM,0BAA4BlgM,EAAMw/L,cACpC1+L,EAAAhP,EAAAiP,cAAA,OAAKC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAM+X,GAAO/B,QAAY+B,GAAO0J,aAA1C,sCAIHguL,EACJtgM,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,OAAKC,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAM+X,GAAOyB,WAAezB,GAAO0J,aAC3CtS,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOo2L,sBACjBh/L,EAAAhP,EAAAiP,cAACulG,GAAAx0G,EAAD,CAAWkP,MAAO0I,GAAOuc,QAE3BnlB,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,yGAOAsgM,EACJvgM,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAC6uD,GAAD,CACEvnD,MAAM,gCACNqkD,SApEkB,WACtB,IAAM40I,EAAkB,sGACxB,OAAQT,EAAaH,eACnB,KAAK,EACH,OAAO5/L,EAAAhP,EAAAiP,cAAA,oHACT,KAAK,EACH,OAAOD,EAAAhP,EAAAiP,cAAA,YAAOugM,GAChB,KAAK,EACH,OAAOxgM,EAAAhP,EAAAiP,cAAA,qGACT,KAAK,EACH,IAAMwgM,EAA0BV,EAAaF,cAAcvtM,IAAI,SAAA45F,GAAK,OAAIlsF,EAAAhP,EAAAiP,cAAA,UAAKisF,KACvEw0G,EAA6BX,EAAaD,iBAAiBxtM,IAAI,SAAA45F,GAAK,OAAIlsF,EAAAhP,EAAAiP,cAAA,UAAKisF,KACnF,OAAOlsF,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACLJ,EAAAhP,EAAAiP,cAAA,YAAOugM,GACNT,EAAaF,iBACPE,EAAaF,cAAcxtM,QAC7B2N,EAAAhP,EAAAiP,cAAA,SAAGD,EAAAhP,EAAAiP,cAAA,2EAAH,IAA8ED,EAAAhP,EAAAiP,cAAA,UAAKwgM,GAAnF,KACJV,EAAaD,oBACPC,EAAaD,iBAAiBztM,QAChC2N,EAAAhP,EAAAiP,cAAA,SAAGD,EAAAhP,EAAAiP,cAAA,+EAAH,IAAkFD,EAAAhP,EAAAiP,cAAA,UAAKygM,GAAvF,KACL1gM,EAAAhP,EAAAiP,cAAA,gHAEJ,QACE,OAAOD,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,2DA6CGugM,GACVnhJ,UAAW,EACXqL,aAAczB,GAAiB4B,QAEhC+0I,EAAapvM,QAAUovM,EAAapvM,OAAO0B,OAAS,GACnD2N,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACnBxL,EAAAhP,EAAAiP,cAAA,SACED,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOm2L,SAApB,iBACA/+L,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO8J,WAAYqtL,EAAapvM,OAAO0B,OAApD,kBAEA2N,EAAAhP,EAAAiP,cAACksD,GAAA,EAAD,KACEnsD,EAAAhP,EAAAiP,cAACmsD,GAAA,EAAD,KACEpsD,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACErsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAM+X,GAAOrD,YAAgBqD,GAAOq2L,aAApD,OACAj/L,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAOrD,aAAzB,UACAvF,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAM+X,GAAOrD,YAAgBqD,GAAOs2L,aAApD,SACAl/L,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAKrP,OAAA0G,EAAA,EAAA1G,CAAA,GAAM+X,GAAOrD,YAAgBqD,GAAOq2L,aAApD,uBAGJj/L,EAAAhP,EAAAiP,cAACssD,GAAA,EAAD,KACGwzI,EAAapvM,OAAO2B,IAAI,SAAC4E,GAAD,OACvB8I,EAAAhP,EAAAiP,cAACosD,GAAA,EAAD,KACErsD,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAYp1D,EAAM0pM,UAAN,GAAAvqM,OAAqBa,EAAM0pM,UAA3B,OAAAvqM,OAA0Ca,EAAM2pM,YAAhD,GAAAxqM,OAAkEa,EAAM2pM,aACpF7gM,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAYp1D,EAAM4pM,aAClB9gM,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,CAAWpsD,MAAO0I,GAAO8J,WAAYxb,EAAMsnD,cAC3Cx+C,EAAAhP,EAAAiP,cAACqsD,GAAA,EAAD,KAAYp1D,EAAM6pM,wBAO/BhB,EAAaT,0BAA4BS,EAAaT,yBAAyBjtM,OAAS,GACjF2N,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACjBxL,EAAAhP,EAAAiP,cAAA,SACID,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAOm2L,SAApB,iBACA/+L,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO8J,WAApB,oHAOpB,OACE1S,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACEJ,EAAAhP,EAAAiP,cAACs8C,GAAA,EAAD,CAAOr8C,MAAO0I,GAAO4C,OACnBxL,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOrB,OAChBrI,EAAM4+L,YAET99L,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,QAAMC,MAAO0I,GAAO2J,UAApB,sDAGc,gBAAjBmtL,GAAkCU,EACjB,YAAjBV,GAA8BY,EACb,WAAjBZ,GAA6Ba,MC5IhCS,eASJ,SAAAA,EAAY9hM,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAkvM,IACxBloM,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAmwM,GAAA3hM,KAAAvN,KAAMoN,KATR+uC,eAQ0B,EAAAn1C,EAP1B9D,kBAO0B,EAAA8D,EAN1Bw/F,WAAa,CAAC,YAAa,2BAMDx/F,EAL1BmoM,eAAiB,EAKSnoM,EAJ1BooM,aAAe,EAIWpoM,EAH1BqoM,sBAAwB,EAGEroM,EAF1By2K,aAAe,EAEWz2K,EAwC1BsoM,UAAY,WACV,IAAMC,EAAehlL,GAAY,aAAcC,GAAgBC,gBACzDyoG,EAAc3oG,GAAY,YAAaC,GAAgBC,gBACvD+kL,EAA4BjlL,GAAY,0BAA2BC,GAAgBC,gBAEnFglL,EAAuCzoM,EAAKoG,MAAM+a,cAAcC,KAAKlb,OAAO,SAAAyJ,GAAC,OAAIA,EAAE2T,mBAAqBilL,IAAehvM,OACvHmvM,EAA0B1oM,EAAKoG,MAAM+a,cAAcC,KAAKlb,OAAO,SAAAyJ,GAAC,OAAIA,EAAE2T,mBAAqB4oG,GAC5Bv8G,EAAE2T,mBAAqBklL,IAA2BjvM,OAEjHovM,EAA6BF,EAAuC,EACpEG,EAAqB5oM,EAAK6oM,uBAAuBF,GAEvD3oM,EAAK4G,SAAS,CACZ46F,WAAY,EACZonG,qBACAD,6BACAF,uCACAC,0BACA7qJ,SAAS,KA1Da79C,EA8D1B4iF,UAAY,kBAAM5iF,EAAK4G,SAAS,CAAEi3C,SAAS,KA9DjB79C,EAgE1B+iF,WAAa,kBAAM/iF,EAAK4G,SAAS,CAAEi3C,SAAS,KAhElB79C,EAkE1B8oM,sBAAwB,SAAChjM,GACvB,GAAc,IAAVA,EAAa,KAAAwvC,EACUtuC,GAAOuuC,iBAAxBtuC,EADOquC,EACPruC,KAAMsE,EADC+pC,EACD/pC,OACRk7E,EAAQx/E,EACX9N,QAAQoS,EAAQ4pC,UAAYn1C,EAAKm1C,WACjCh8C,QAAQoS,EAAQrP,aAAe8D,EAAK9D,cACvC8D,EAAKoG,MAAMioD,QAAQxnC,KAAK4/D,KAxEFzmF,EAwG1BwxG,WAAa,SAACjQ,GAEZ,IAAMwnG,GAAqB/oM,EAAK+G,MAAMq+L,cACRplM,EAAK+G,MAAM4hM,6BAA+B3oM,EAAK+G,MAAM6+L,aACnF,OAAQrkG,GACN,KAAK,EACH,OACEr6F,EAAAhP,EAAAiP,cAAC6hM,GAAD,CACEhE,WAAW,oBACX7vJ,UAAWn1C,EAAKm1C,UAChBj5C,aAAc8D,EAAK9D,aACnBmiD,aAAcr+C,EAAKipM,iBAGzB,KAAK,EACH,IAAMp7H,EAAW7tE,EAAK+G,MAAMq+L,aAAeplM,EAAK+G,MAAMwgM,kBAAmBryL,UAAO9Y,EAChF,OACE8K,EAAAhP,EAAAiP,cAAC+hM,GAAD,CACElE,WAAW,0BACXn3H,SAAUA,EACV23H,4BAA6BxlM,EAAKwlM,4BAClCF,2BAA4BtlM,EAAKslM,2BACjCjnJ,aAAcr+C,EAAKipM,iBAGvB,KAAK,EACH,OAAGjpM,EAAK+G,MAAM4hM,2BAEVzhM,EAAAhP,EAAAiP,cAACgiM,GAAD,CACEnE,WAAW,kBACXI,aAAcplM,EAAK+G,MAAMq+L,aACzBQ,aAAc5lM,EAAK+G,MAAM6+L,aACzBE,gCAAiC9lM,EAAK+G,MAAM0hM,qCAC5CW,uBAAwBppM,EAAK+G,MAAM2hM,wBACnC3C,yBAA0B/lM,EAAK+lM,yBAC/B1nJ,aAAcr+C,EAAKipM,iBAKrB/hM,EAAAhP,EAAAiP,cAACkiM,GAAD,CACErE,WAAW,oBACX7vJ,UAAWn1C,EAAKm1C,UAChBj5C,aAAc8D,EAAK9D,aACnBoqM,wBAAyBtmM,EAAK+G,MAAM4hM,2BACpC/C,aAAc5lM,EAAK+G,MAAM6+L,aACzB2B,kBAAmBvnM,EAAK+G,MAAMwgM,kBAC9B5sL,SAAUouL,EACV1B,kBAAmBrnM,EAAKqnM,oBAGhC,KAAK,EACH,OACEngM,EAAAhP,EAAAiP,cAACkiM,GAAD,CACErE,WAAW,oBACX7vJ,UAAWn1C,EAAKm1C,UAChBj5C,aAAc8D,EAAK9D,aACnBoqM,wBAAyBtmM,EAAK+G,MAAM4hM,2BACpC/C,aAAc5lM,EAAK+G,MAAM6+L,aACzB2B,kBAAmBvnM,EAAK+G,MAAMwgM,kBAC9B5sL,SAAUouL,EACV1B,kBAAmBrnM,EAAKqnM,oBAG9B,QACE,OACEngM,EAAAhP,EAAAiP,cAAA,eA1KgBnH,EA+K1BspM,gBAAkB,SAACnyB,EAAkB9oJ,GACnCruB,EAAK4G,SAAS,SAAAmpD,GACV,OAAIonH,IAAapnH,EAAUyxC,YAAcnzE,EAChC,CAAEmzE,gBAAYplG,GAEd,CAAEolG,WAAY21E,IAGzB,kBAAMv4K,OAAOwiC,SAAS,EAAG,MAvLHphC,EA2L1BipM,eAAiB,WACfjpM,EAAK4G,SAAS,SAAC86G,GACb,IAAI9f,EAAiB8f,EAAY9f,eAEjC,OADAA,EAAej/E,IAAI++F,EAAYlgB,YACxB,CACLI,eAAgBA,EAChBJ,WAAYkgB,EAAYlgB,WAAc,IAG1C,kBAAM5iG,OAAOwiC,SAAS,EAAG,MApMDphC,EAuM1BwlM,4BAA8B,SAACn4G,GAC7BrtF,EAAK4G,SAAS,CACZ2gM,kBAAmBl6G,EACnB+3G,cAAc,EACdxjG,eAAgB,IAAIl/E,IAAI,CAAC1iB,EAAKmoM,eAAgBnoM,EAAKooM,kBA3M7BpoM,EA+M1BslM,2BAA6B,WAC3BtlM,EAAK4G,SAAS,CACZ2gM,uBAAmBnrM,EACnBgpM,cAAc,EACdQ,cAAc,EACdhkG,eAAgB,IAAIl/E,IAAI,CAAC1iB,EAAKmoM,oBApNRnoM,EAwN1B+lM,yBAA2B,SAACH,GAC1B5lM,EAAK4G,SAAS,CACZg/L,eACAhkG,eAAgBgkG,EACI,IAAIljL,IAAI,CAAC1iB,EAAKmoM,eAAgBnoM,EAAKooM,aAAcpoM,EAAKqoM,wBACtD,IAAI3lL,IAAI,CAAC1iB,EAAKmoM,eAAgBnoM,EAAKooM,kBA7NjCpoM,EAiO1BqnM,kBAAoB,WAClBrnM,EAAK4G,SAAS,CACZyrG,gBAAgB,EAChBzQ,eAAgB,IAAIl/E,IAAI,CAAC1iB,EAAKmoM,eAAgBnoM,EAAKooM,aAAcpoM,EAAKqoM,sBAAuBroM,EAAKy2K,kBAjOpGz2K,EAAK+G,MAAQ,CACX82C,SAAS,EACT8qJ,4BAA4B,EAC5BF,qCAAsC,EACtCC,wBAAyB,EACzBE,mBAAoB,GACpBpnG,WAAY,EACZI,eAAgB,IAAIl/E,IAAI,CAAC1iB,EAAKmoM,iBAC9BZ,uBAAmBnrM,EACnBgpM,cAAc,EACdQ,cAAc,EACdvzF,gBAAgB,GAGlBryG,EAAKm1C,UAAY/uC,EAAMgF,MAAMG,OAAOg+L,WACpCvpM,EAAK9D,aAAekK,EAAMgF,MAAMG,OAAOpP,cAlBf6D,mFAsBxB,IAAM83E,EAA2B,GAC5B9+E,KAAKoN,MAAMuhB,gBAAgBlG,IAC9Bq2D,EAASjxD,KAAK7tB,KAAKoN,MAAM+sC,gBAAgBn6C,KAAKkD,eAGP,IAArClD,KAAKoN,MAAM03D,UAAU18C,KAAK7nB,QAC5Bu+E,EAASjxD,KAAK7tB,KAAKoN,MAAM++E,WAAWnsF,KAAKm8C,UAAWn8C,KAAKkD,eAGd,IAAzClD,KAAKoN,MAAM+a,cAAcC,KAAK7nB,QAChCu+E,EAASjxD,KACP7tB,KAAKoN,MAAMihD,eAAeruD,KAAKm8C,UAAWn8C,KAAKkD,eAInDuE,QAAQu3E,IAAIF,GAAU53E,KAAKlH,KAAKsvM,UAAWtvM,KAAK+pF,2DAuCnBymH,GAC7B,IAAM9mG,EAAiB,GAChBlB,EAAcxoG,KAAK+N,MAAnBy6F,WAEH4U,EAAS,EASb,OARA1T,EAAM77E,KAAK7tB,KAAKywM,UAAUrzF,EAAQ,oBAAqB5U,IACvDkB,EAAM77E,KAAK7tB,KAAKywM,YAAYrzF,EAAQ,0BAA2B5U,IAE5DgoG,GACD9mG,EAAM77E,KAAK7tB,KAAKywM,YAAYrzF,EAAQ,kBAAmB5U,IAEzDkB,EAAM77E,KAAK7tB,KAAKywM,YAAYrzF,EAAQ,oBAAqB5U,IAElDkB,oCAGS0T,EAAgBszF,EAAmBloG,GACnD,MAAO,CACL//E,GAAI20F,EACJnpG,MAAOy8L,EACPr9K,KAAM,kBACJnlB,EAAAhP,EAAAiP,cAACspG,GAAD,CAAalP,KAAM6U,EAAQ5U,WAAYA,GACpC4U,sCAsIA,IAAAtgD,EAOH98D,KAAK+N,MALP82C,EAFKiY,EAELjY,QACA+qJ,EAHK9yI,EAGL8yI,mBACApnG,EAJK1rC,EAIL0rC,WACAI,EALK9rC,EAKL8rC,eACAyQ,EANKv8C,EAMLu8C,eAEF,OACEnrG,EAAAhP,EAAAiP,cAACq8C,GAAD,KACEt8C,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAC0/E,GAAD,CAAOjvF,QAAQ,WACZoB,KAAKoN,MAAMuhB,gBAAgB5N,QAAQ7E,MAEtChO,EAAAhP,EAAAiP,cAAA,YAEFD,EAAAhP,EAAAiP,cAAC2/E,GAAD,CACE53B,MAAOl2D,KAAKwmG,WACZnwC,iBAAkBr2D,KAAK8vM,wBAExBjrJ,EACC32C,EAAAhP,EAAAiP,cAAA,WACED,EAAAhP,EAAAiP,cAAA,qCACAD,EAAAhP,EAAAiP,cAACi0C,GAAA,EAAD,OAGFl0C,EAAAhP,EAAAiP,cAACqrG,GAAD,CACE9P,MAAOkmG,EACPpnG,WAAYA,EACZI,eAAgBA,EAChBgB,YAAa5pG,KAAKw4G,WAClB72F,SAAU03F,EACV3iG,QAAS1W,KAAKswM,0BAjRE/hM,IAAMi5C,WAySnB1K,mBAhBf,SAAyB/uC,GACvB,MAAO,CACL4gB,gBAAiB5gB,EAAMmhB,WACvB41C,UAAW/2D,EAAMqb,KACjBjB,cAAepa,EAAM4c,WAIzB,SAA4BtrB,GAC1B,MAAO,CACL86C,gBAAiB,SAACj3C,GAAD,OAAkB7D,EAAS86C,GAAgBj3C,KAC5DipF,WAAY,SAAChwC,EAAWj5C,GAAZ,OAA6B7D,EAAS8sF,GAAWhwC,EAAWj5C,KACxEmrD,eAAgB,SAAClS,EAAWj5C,GAAZ,OAA6B7D,EAASgvD,GAAelS,EAAWj5C,OAIrE45C,CAGbs/C,YAAW8yG,KCjFElhM,GAxOQ,CACnBqvC,KAAM,CACFpvC,KAAM,IACNs2C,UAAW02E,GACX01E,OAAO,GAEXpwB,SAAU,CACNtyK,KAAM,aACNs2C,UAAWwyE,GACX45E,OAAO,GAEX7oG,eAAgB,CACZ75F,KAAM,mBACNs2C,UAAWuM,GACX6/I,OAAO,GAEXrlH,eAAgB,CACZr9E,KAAM,mBACNs2C,UAAWuM,GACX6/I,OAAO,GAEXl3E,wBAAyB,CACrBxrH,KAAM,uBACNs2C,UAAWuM,GACX6/I,OAAO,GAEXxvB,iBAAkB,CACdlzK,KAAM,qBACNs2C,UAAWsF,GACX8mJ,OAAO,GAEX9E,gBAAiB,CACb59L,KAAM,oBACNs2C,UAAWqsJ,GACXD,OAAO,GAEX9iM,cAAe,CACXI,KAAM,kBACNs2C,UAAW9K,GACXk3J,OAAO,GAEXE,cAAe,CACX5iM,KAAM,kBACNs2C,UAAWp3C,GACXwjM,OAAO,GAEXG,uBAAwB,CACpB7iM,KAAM,6BACNs2C,UAAW3xC,GACX+9L,OAAO,GAEXI,eAAgB,CACZ9iM,KAAM,mBACNs2C,UAAWnH,GACXuzJ,OAAO,GAEXK,WAAY,CACR/iM,KAAM,eACNs2C,UAAWmG,GACXimJ,OAAO,GAEXr+L,mBAAoB,CAChBrE,KAAM,wDACNs2C,UAAW5yC,GACXY,OAAQ,CACJvP,SAAU,YACVE,aAAc,kBAElBytM,OAAO,GAEXM,sBAAuB,CACnBhjM,KAAM,2BACNs2C,UAAW5yC,GACXg/L,OAAO,GAEXp0J,iBAAkB,CACdtuC,KAAM,iDACNs2C,UAAWuyE,GACX65E,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,kBAElBguM,YAAa,CAACpvM,EAAoBG,uBAEtC+oH,YAAa,CACT/8G,KAAM,4DACNs2C,UAAW2nC,GACXykH,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,iBACdy0D,IAAK,SAETu5I,YAAa,CAACpvM,EAAoBG,uBAEtCyqG,aAAc,CACVz+F,KAAM,8DACNs2C,UAAWizD,GACXm5F,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,kBAElBguM,YAAa,CAACpvM,EAAoBG,uBAEtCs7G,cAAe,CACXtvG,KAAM,+DACNs2C,UAAW2qJ,GACXyB,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,kBAElBguM,YAAa,CAACpvM,EAAoBG,uBAEtCghH,oBAAqB,CACjBh1G,KAAM,6DACNs2C,UAAWw3E,GACX40E,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,kBAElBguM,YAAa,CAACpvM,EAAoBG,uBAEtC4oH,SAAU,CACN58G,KAAM,uDACNs2C,UAAW2kI,GACXynB,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,kBAElBguM,YAAa,CAACpvM,EAAoBI,iBAEtC+qF,UAAW,CACPh/E,KAAM,+DACNs2C,UAAW4sJ,GACXR,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,iBACdmmB,OAAQ,YAEZ6nL,YAAa,CAACpvM,EAAoBG,uBAEtCo6C,gBAAiB,CACbpuC,KAAM,uEACNs2C,UAAW68H,GACXuvB,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,iBACdS,WAAY,gBAEhButM,YAAa,CAACpvM,EAAoBI,gBAClCkvM,OAAQ,CAACtvM,EAAoBE,yBAA0BF,EAAoBG,uBAE/Ek7G,iBAAkB,CACdlvG,KAAM,wFACNs2C,UAAWy2H,GACX21B,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,iBACdS,WAAY,eACZy5G,OAAQ,aAEZ8zF,YAAa,CAACpvM,EAAoBI,iBAEtC0lG,0BAA2B,CACvB35F,KAAM,wCACNs2C,UAAWmjD,GACXipG,OAAO,EACPp+L,OAAQ,CACJs1F,gBAAiB,sBAGzBhU,iBAAkB,CACd5lF,KAAM,oEACNs2C,UAAWm/E,GACXitE,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,kBAElBguM,YAAa,CAACpvM,EAAoBG,uBAEtCk5F,qBAAsB,CAClBltF,KAAM,6FACNs2C,UAAWm9E,GACXivE,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,mBAGtBgkG,eAAgB,CACZj5F,KAAM,yFACNs2C,UAAW2gD,GACXyrG,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,iBACdg9F,kBAAmB,wBAEvBgxG,YAAa,CAACpvM,EAAoBG,uBAEtCy7G,kBAAmB,CACfzvG,KAAM,yDACNs2C,UAAWkqC,GACXkiH,OAAO,EACPp+L,OAAQ,CACJ4pC,UAAW,cACXj5C,aAAc,kBAElBguM,YAAa,CAACpvM,EAAoBG,uBAEtCulG,eAAgB,CACZv5F,KAAM,kFACNs2C,UAAW+iD,GACXqpG,OAAO,EACPp+L,OAAQ,CACJ++E,OAAQ,UACRpuF,aAAc,iBACdS,WAAY,gBAEhButM,YAAa,CAACpvM,EAAoBI,kBC8HpCwL,GAAO,gEAjYD2jM,WAAa,CACjBC,qBAAsBxhM,4CACtByhM,qBAAsBzhM,4CACtB0hM,aAAc1hM,0CACd2hM,YAAa3hM,yCACb4hM,aAAc5hM,4BACdqrC,eAAgB,sCAGZw2J,mBAAqB,CACzBC,kBAAmB,kBACnB/F,gBAAiB,sBACjBgG,SAAU,WACVC,UAAW,eACXC,YAAa,aACbC,qBAAsB,yBACtBX,WAAY,yBACZ1rM,YAAa,kBACbssM,yBAA0B,iCAC1Bt4J,mBAAoB,gCAGhB50C,OAAqB,CACzBkB,SAAQ,WAAA1B,OAAauL,2BAAb,kBACR5J,OAAM,GAAA3B,OAAKuL,2BAAL,oBACN3J,OAAQnG,KAAKkyM,kBACb5rM,SAAQ,GAAA/B,OAAKuL,2BACbjI,OAAQ,IAAAtD,OAAIuL,4BACZnJ,cAAe,iBACfC,sBAAuBoH,GAAO+iM,eAAe9iM,KAC7CtI,YAAaqI,GAAOH,cAAcI,KAClCvI,OAAO,QA0LXysM,cAAgBrxL,aAAW,WACvB,OAAO9Z,EAAKorM,QAAQjwM,EAAmBC,gFAxKvCoP,eAAe6gM,WAAWryM,KAAK2xM,mBAAmBE,gDA0EhC1sM,GAClB,OAAO0K,KAAKpF,MAAM6nM,KAAKntM,EAAM8F,MAAM,KAAK,0CA2BxC,IAAKjL,KAAK6pC,WACN,OAAO,EACX,IAAM0oK,EAAU3jL,IAAOgb,KAAK5pC,KAAK6pC,WAAW7Z,KACtC+jG,EAAcnlG,IAAOuN,MACrBnqB,EAAaugM,EAAQt1K,QAAQ82F,SAAkD3wH,IAAlCpD,KAAK6pC,WAAW1mC,cACnE,OAAO6O,2CAIP,IAAKhS,KAAK4qC,eACN,OAAO,EACX,IAAM2nK,EAAU3jL,IAAOgb,KAAK5pC,KAAK4qC,eAAe5a,KAC1C+jG,EAAcnlG,IAAOuN,MAE3B,OADmBo2K,EAAQt1K,QAAQ82F,6CAKnC,OAAK/zH,KAAK6pC,WAEH7pC,KAAK6pC,WAAW1mC,cADZ,yCAKX,OAAKnD,KAAK6pC,WAEH7pC,KAAK6pC,WAAWiS,YADZ,8CAKX,QAAK97C,KAAK6pC,aAEyB,IAA5B7pC,KAAK6pC,WAAW2oK,iDAKvB,OAAKxyM,KAAK6pC,WAEH7pC,KAAK6pC,WAAWmpC,YADZ,mCAICy/H,GACZ,QAAKzyM,KAAK6pC,YAEH7pC,KAAK6pC,WAAW5mC,uBAAyBwvM,gDAIhDjhM,eAAekhM,iDAKf,OAAO1yM,KAAKoyM,QAAQjwM,EAAmBD,yDAIvC,OAAOlC,KAAKoyM,QAAQjwM,EAAmBG,qEAIvC,OAAOtC,KAAKoyM,QAAQjwM,EAAmBE,sEAQvC,OAAOrC,KAAKmyM,sDAGFjB,EAAuBE,EAAkBuB,GAAyB,IAAAnrM,EAAAxH,KACxEk/C,GAAU,EACd,GAAIyzJ,GAAeA,EAAW,cAAmB,CAC7C,IAAMC,EAAiBD,EAAW,cAAkBpgM,OAEpD2+L,EAAYloL,QAAQ,SAAC7iB,GACb5D,EAAoBswM,aAAa1sM,EAAQqB,EAAKqiC,cAC9CqV,GAAU,KAKdkyJ,GACAA,EAAOpoL,QAAQ,SAAC8pL,GACRvwM,EAAoBwwM,aAAaD,EAAOtrM,EAAKqiC,cAC7CqV,GAAU,MAMtBA,EAAUA,GAAW38C,EAAoBywM,mBAAmBJ,EAAezvM,cAAenD,KAAK6pC,cAGhF7pC,KAAKkxB,mBAChBguB,EAAU38C,EAAoB0wM,iBAAiBL,EAAeM,YAAalzM,KAAK6pC,aAIxF,OAAOqV,iDAGoBuU,GAO3B,MALqB,yBADOrpD,mBAAmB,0DAG3C,qBACAqpD,EACA,2DAIOA,GACXzzD,KAAK+E,OAAOoB,OAASnG,KAAKqxM,WAAWC,qBACrC,IAAI6B,EAAK,IAAIruM,EAAY9E,KAAK+E,QAC1BquM,EAAiBpzM,KAAKqzM,uBAAuB5/I,GAEjD,OAAO0/I,EAAGG,YAAYF,0CAIX3/I,GACXzzD,KAAKkyM,kBAAoBlyM,KAAKqxM,WAAWE,qBACzC,IAAI4B,EAAK,IAAIruM,EAAY9E,KAAK+E,QAC1BquM,EAAiBpzM,KAAKqzM,uBAAuB5/I,GACjD,OAAO0/I,EAAGG,YAAYF,4CAQtB,OAJA5hM,eAAeE,QAAQ1R,KAAK2xM,mBAAmBh4J,mBAC3CnoC,eAAexN,QAAQhE,KAAK2xM,mBAAmBN,aAAe,IAClErxM,KAAKkyM,kBAAoBlyM,KAAKqxM,WAAWl2J,eAChC,IAAIr2C,EAAY9E,KAAK+E,QACpBuuM,gDAGJjwM,GACN,OAAIA,IAAerD,KAAKqxM,WAAWE,qBACxBvxM,KAAKqxD,gBAGLrxD,KAAKkqD,wDAQhB,OAFAlqD,KAAKkyM,kBAAoBlyM,KAAKqxM,WAAWC,qBAChC,IAAIxsM,EAAY9E,KAAK+E,QACpBuuM,sDAMV,OAFAtzM,KAAKkyM,kBAAoBlyM,KAAKqxM,WAAWE,qBAChC,IAAIzsM,EAAY9E,KAAK+E,QACpBuuM,8DAQV,OAHAtzM,KAAKkyM,kBAAoBlyM,KAAKqxM,WAAWC,qBACzCtxM,KAAK+E,OAAOY,YAAcqI,GAAO69L,gBAAgB59L,KACxC,IAAInJ,EAAY9E,KAAK+E,QACpBuuM,sDAOV,OAHAtzM,KAAKkyM,kBAAoBlyM,KAAKqxM,WAAWK,aACzC1xM,KAAK+E,OAAOY,YAAcqI,GAAO69L,gBAAgB59L,KACxC,IAAInJ,EAAY9E,KAAK+E,QACpBuuM,oDAGA7/I,EAAqBttD,GAC/BnG,KAAK+E,OAAOY,YAAcqI,GAAOijM,sBAAsBhjM,KACvDjO,KAAKkyM,kBAAoB/rM,EACzB,IAAIgtM,EAAK,IAAIruM,EAAY9E,KAAK+E,QAC1BquM,EAAiBpzM,KAAKqzM,uBAAuB5/I,GACjD,OAAO0/I,EAAGG,YAAYF,iDAGJ5lM,EAAuB+lM,GACzC,OAAsB,OAAlB/lM,GAAwC,OAAd+lM,EACnB9rM,QAAQE,OAAO,IAAI6H,MAAM,0CAEpCxP,KAAK6S,sBACL7S,KAAKiS,yBAA2BshM,EACdvzM,KAAKwzM,cAAchmM,GACrBimM,0BAA4BtxM,EAAmBC,qBACpDpC,KAAK0zM,cAAclmM,EAAexN,KAAKqxM,WAAWI,aAElDzxM,KAAK0zM,cAAclmM,EAAexN,KAAKqxM,WAAWG,sDAK7C,IAAAtpM,EAAAlI,KAIhB,OAHAA,KAAK+E,OAAOY,YAAcqI,GAAOgjM,WAAW/iM,KAC5CjO,KAAK+E,OAAOgB,2BAA4B,EAC/B,IAAIjB,EAAY9E,KAAK+E,QACpBsD,WAAWnB,KAAK,WACtB,GAA6B,KAAzBwG,GAAKm+L,gBACL7uJ,KAAiB91C,KAAK,SAACtG,GACnB8M,GAAKqF,IAAMnS,EAAKuE,MAChBtB,EAAOS,IAAI,oBAAqB1D,EAAKuE,aAEtC,CACH,IAAMgkC,EAASjhC,EAAKgqM,oBAAsBhqM,EAAKmpM,WAAWK,aAAe,WAAa,qBAEtFpG,GADwBz7L,KAAKpF,MAAMiD,GAAKm+L,iBACT1iK,GAAQjiC,KAAK,SAACtG,GACzC8M,GAAKqF,IAAMnS,EAAKuE,MAChBtB,EAAOS,IAAI,6BAA8B1D,EAAKuE,wDAQ1D,OADS,IAAIL,EAAY9E,KAAK+E,yCAK9B/E,KAAK+E,OAAOoB,OAASnG,KAAKqxM,WAAWE,qBACrCvxM,KAAK+E,OAAO6B,sBAAwBoH,GAAO+iM,eAAe9iM,KACjD,IAAInJ,EAAY9E,KAAK+E,QAC3BkD,mDAzVH,OADeuJ,eAAexN,QAAQhE,KAAK2xM,mBAAmBN,aAC7C,iBAQSlrM,GAC1BnG,KAAK+E,OAAOoB,OAASA,EACrBqL,eAAeE,QAAQ1R,KAAK2xM,mBAAmBN,WAAYlrM,8CAL3D,OADeqL,eAAexN,QAAQhE,KAAK2xM,mBAAmBh4J,qBAC7C,+BAajB,OADmBnoC,eAAexN,QAAQhE,KAAK2xM,mBAAmBE,WAC7C,iBAGjBpgM,GACJD,eAAeE,QAAQ1R,KAAK2xM,mBAAmBE,SAAUpgM,2CAKzD,OADYD,eAAexN,QAAQhE,KAAK2xM,mBAAmB9F,kBAC7C,iBAGEp6L,GAChBD,eAAeE,QAAQ1R,KAAK2xM,mBAAmB9F,gBAAiBp6L,mCAMhE,OADmBD,eAAexN,QAAQhE,KAAK2xM,mBAAmBG,YAC7C,iBAGbrgM,GACRD,eAAeE,QAAQ1R,KAAK2xM,mBAAmBG,UAAWrgM,yCAK1D,OAD8BD,eAAexN,QAAQhE,KAAK2xM,mBAAmBC,iCAI/D+B,GACdniM,eAAeE,QAAQ1R,KAAK2xM,mBAAmBC,kBAAmB+B,sDAMlE,IAAMC,EAAUpiM,eAAexN,QAAQhE,KAAK2xM,mBAAmBI,aACzDrlJ,EAAel7C,eAAexN,QAAQhE,KAAK2xM,mBAAmBK,sBAEpE,OAAO4B,GAAuB,KAAZA,GAAkBlnJ,GAAgBA,EAAarjD,QAAQ,gBAAkB,sDAK3F,IAAMuqM,EAAUpiM,eAAexN,QAAQhE,KAAK2xM,mBAAmBI,aACzDrlJ,EAAel7C,eAAexN,QAAQhE,KAAK2xM,mBAAmBK,sBAEpE,OADiB4B,GAAuB,KAAZA,GAAkBlnJ,GAAgBA,EAAarjD,QAAQ,gBAAkB,sDAMrG,OADyBrJ,KAAK4qC,gBAAkB5qC,KAAK4qC,eAAeipK,MAAQ7zM,KAAKqxM,WAAWl2J,gEAO5F,OADY3pC,eAAexN,QAAQhE,KAAK2xM,mBAAmBM,2BAC7C,iBAGW6B,GACzBtiM,eAAe6gM,WAAWryM,KAAK2xM,mBAAmBM,0BACtC,KAAR6B,GACAtiM,eAAeE,QAAQ1R,KAAK2xM,mBAAmBM,yBAA0B6B,sCAU7E,OAD0B9zM,KAAK+S,IAAM/S,KAAKwzM,cAAcxzM,KAAK+S,KAAO,0CAOpE,OAD0B/S,KAAK+zM,QAAU/zM,KAAKwzM,cAAcxzM,KAAK+zM,SAAW,uCAM5E,OADYviM,eAAexN,QAAQhE,KAAK2xM,mBAAmBhsM,cAC7C,iBAGF2C,GACRA,EACAkJ,eAAeE,QAAQ1R,KAAK2xM,mBAAmBhsM,YAAa2C,GAE5DkJ,eAAe6gM,WAAWryM,KAAK2xM,mBAAmBhsM,uBA+O/C+H,iBCpXA,SAAew7B,GAA9BppC,EAAAyB,EAAAM,GAAA,OAAAmyM,GAAAj0M,MAAAC,KAAAC,wDAAe,SAAAb,EAAoB60M,EAAkB/pM,EAAuB/E,GAA7D,IAAA4N,EAAAmhM,EAAAC,EAAAC,EAAA7kM,EAAA8kM,EAAA,OAAAp1M,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACS60M,eACpBhsK,GAAeU,sBACTj2B,EAAM5N,GAAgBuI,GAAKqF,IAC3BmhM,EAA4BhqM,GAAW,CAAEi/B,OAAQ,OACjDgrK,EALKp1M,OAAA0G,EAAA,EAAA1G,CAAA,GAMJm1M,EAAa31F,QANT,CAOPg2F,cAAa,UAAAhwM,OAAYwO,GACzByhM,OAAQ,qBAGRrsG,OACAgsG,EAAa,iBAAmB,WAChCA,EAAY,OAAa,YAGzBjqM,GAAmC,kBAAjBA,EAAQk/B,OAC1B+qK,EAAa,gBAAkB,oBAGnCD,EAAa31F,QAAU41F,EACjBC,EAAUtkM,yBAAqCmkM,EArB1C10M,EAAAE,KAAA,GAuBYg1M,MAAML,EAASF,GAvB3B,eAuBL3kM,EAvBKhQ,EAAAmoD,KAAAnoD,EAAAE,KAAA,GAwBQ8P,EAAS8kM,OAxBjB,cAwBLA,EAxBK90M,EAAAmoD,MA0BF5mD,YAAc,KA1BZ,CAAAvB,EAAAE,KAAA,eA4BD40M,EA5BC,YA+BJA,EAAKzzM,KA/BD,CAAArB,EAAAE,KAAA,gBAAAF,EAAAw9C,OAAA,SAgCIs3J,EAAKzzM,MAhCT,eAAArB,EAAAw9C,OAAA,SAkCIs3J,GAlCJ,yBAAA90M,EAAAM,SAAAT,6BpUpBf,IAAMb,GAAYC,MAOX,SAAe8sM,GAAtB/pM,EAAAM,GAAA,OAAA6yM,GAAA30M,MAAAC,KAAAC,wDAAO,SAAAi9C,EAA6BmuJ,EAA6CliK,GAA1E,IAAA7gC,EAAA1H,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAA69C,GAAA,cAAAA,EAAA39C,KAAA29C,EAAA19C,MAAA,cACC6I,EADD,cAAA/D,OACqB4kC,GADrBgU,EAAA19C,KAAA,EAEgBypC,GAAK5gC,EAAK,CAAE6gC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAUy+L,IAAiB39L,GAAKqmM,SAFvF,cAEGnzM,EAFHu8C,EAAAuK,KAAAvK,EAAAJ,OAAA,SAGIn8C,GAHJ,wBAAAu8C,EAAAt9C,SAAAq9C,6BAWA,SAAeF,KAAtB,OAAA23J,GAAA50M,MAAAC,KAAAC,wDAAO,SAAAgyG,IAAA,IAAArxG,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAA6yG,GAAA,cAAAA,EAAA3yG,KAAA2yG,EAAA1yG,MAAA,oCAAA0yG,EAAA1yG,KAAA,EAEgBypC,GAFhB,uBAE0B,CAAEC,OAAQ,QAAUz7B,GAAKqmM,SAFnD,cAEGnzM,EAFHuxG,EAAAzqD,KAAAyqD,EAAAp1D,OAAA,SAGIn8C,GAHJ,wBAAAuxG,EAAAtyG,SAAAoyG,6BAOA,IAAMx+C,GAAcl1D,GAAkB,iBA8BlBA,GAAkB,sBUxD3BC,KAESD,CAAkB,gByFD7C,IAAMA,GAAYC,MAGLg4H,GAAwBj4H,GAAgC,2BACxDgiG,GAA8BhiG,GAA0C,kCAG9E,SAAS2nG,GAAsB/pD,EAAmBj5C,GACrD,sBAAApE,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAuB,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACsCypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,sBAD1C,OACGtC,EADHrB,EAAAmoD,KAEHroD,EAASm3H,GAAsB51H,IAF5B,wBAAArB,EAAAM,SAAAT,MAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAeG,IAAM20M,GAAgCr2M,GAAgE,oCAGtG,SAAS8oG,GAAgClrD,EAAmBj5C,EAAsBg9F,GACrF,sBAAAx+F,EAAA3C,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAwC,EAAOtC,GAAP,IAAAisB,EAAA,OAAArsB,EAAAC,EAAAI,KAAA,SAAAsC,GAAA,cAAAA,EAAApC,KAAAoC,EAAAnC,MAAA,cAAAmC,EAAAnC,KAAA,EACgDypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,sBAAAqB,OAAwE27F,EAAxE,eADpD,OACG50E,EADH1pB,EAAA8lD,KAEHroD,EAASu1M,GAA8B,CAAEnsL,GAAIy3E,EAAmB50E,eAF7D,wBAAA1pB,EAAA/B,SAAA8B,MAAP,gBAAAE,GAAA,OAAAH,EAAA3B,MAAAC,KAAAC,YAAA,GA0FG,IAAMqgG,GAAuB/hG,GAA8B,0BAG3D,SAAS0gG,GAAsB9iD,EAAmBj5C,EAAsB02E,GAC3E,sBAAAjmB,EAAA50D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAy0D,EAAOv0D,GAAP,IAAAghG,EAAA,OAAAphG,EAAAC,EAAAI,KAAA,SAAAu0D,GAAA,cAAAA,EAAAr0D,KAAAq0D,EAAAp0D,MAAA,cAAAo0D,EAAAr0D,KAAA,EAAAq0D,EAAAp0D,KAAA,EAEgDypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,sBAAAqB,OAAwEq1E,EAAgBnxD,IAAM,CAAE0gB,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUgtE,KAFxL,OAEOymB,EAFPxsC,EAAAnM,KAGCroD,EAASihG,GAAqBD,IAC9BhhG,EAASX,EAAgB,2BAA4B,YAJtDm1D,EAAAp0D,KAAA,sBAAAo0D,EAAAr0D,KAAA,EAAAq0D,EAAAlM,GAAAkM,EAAA,SAMCx0D,EAAS0B,EAAyB8yD,EAAAlM,GAAK,4BANxCkM,EAAAlM,GAAA,yBAAAkM,EAAAh0D,SAAA+zD,EAAA,iBAAP,gBAAAnE,GAAA,OAAAkE,EAAA5zD,MAAAC,KAAAC,YAAA,GjFpHJ,IAAM1B,GAAYC,MAGLstF,GAAkBvtF,GAAyB,oBAGjD,SAAS47C,GAAgB1xB,GAC5B,sBAAA3pB,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAuB,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEoBypC,GAAI,eAAA3kC,OAAgBkkB,IAFxC,cAEO7nB,EAFPrB,EAAAmoD,KAGCroD,EAASysF,GAAgBlrF,IAH1BrB,EAAAw9C,OAAA,SAIQn8C,GAJR,aAAArB,EAAAC,KAAA,EAAAD,EAAAooD,GAAApoD,EAAA,SAMCF,EAAS0B,EAAyBxB,EAAAooD,GAAK,mCANxCpoD,EAAAooD,GAAA,yBAAApoD,EAAAM,SAAAT,EAAA,iBAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAaG,IAAM40M,GAAuBt2M,GAA4B,0BACnDgtF,GAAsBhtF,GAA0B,yBAGtD,SAAS6tF,GAAqBjwC,EAAmBj5C,GACpD,sBAAAhC,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,IAAAowB,EAAA,OAAAxwB,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA5B,KAAA,EAC6CypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,qBADjD,OACGusB,EADHpuB,EAAAqmD,KAEHroD,EAASw1M,GAAqBplL,IAF3B,wBAAApuB,EAAAxB,SAAAsB,MAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,GAOG,IAAMurF,GAAuBjtF,GAAkB,0BAsC/C,SAASytF,GAAiB98D,GAC7B,sBAAA6/B,EAAAhwD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA6vD,EAAO3vD,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA2vD,GAAA,cAAAA,EAAAzvD,KAAAyvD,EAAAxvD,MAAA,cAAAwvD,EAAAzvD,KAAA,EAAAyvD,EAAAxvD,KAAA,EAEOypC,GAAI,eAAA3kC,OAAgB2qB,EAAWzG,IAAM,CAAE0gB,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAUsiB,KAFlF,OAGC7vB,EAASysF,GAAgB58D,IACzB7vB,EAASX,EAAgB,qBAAsB,YAJhDuwD,EAAAxvD,KAAA,sBAAAwvD,EAAAzvD,KAAA,EAAAyvD,EAAAtH,GAAAsH,EAAA,SAMC5vD,EAAS0B,EAAyBkuD,EAAAtH,GAAK,mCANxCsH,EAAAtH,GAAA,yBAAAsH,EAAApvD,SAAAmvD,EAAA,iBAAP,gBAAAE,GAAA,OAAAH,EAAAhvD,MAAAC,KAAAC,YAAA,GA2BG,IAAM60M,GAAyBv2M,GAA6B,4BAG5D,SAASsgF,GAAuB1iC,EAAmBj5C,GACtD,sBAAA8uG,EAAAjzG,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA8yG,EAAO5yG,GAAP,IAAAuzE,EAAA,OAAA3zE,EAAAC,EAAAI,KAAA,SAAA6yG,GAAA,cAAAA,EAAA3yG,KAAA2yG,EAAA1yG,MAAA,cAAA0yG,EAAA1yG,KAAA,EACgDypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,aADpD,OACG0vE,EADHu/B,EAAAzqD,KAEHroD,EAASy1M,GAAuBliI,IAF7B,wBAAAu/B,EAAAtyG,SAAAoyG,MAAP,gBAAAn+C,GAAA,OAAAk+C,EAAAjyG,MAAAC,KAAAC,YAAA,GAqBG,IAAM8+E,GAAwBxgF,GAAkB,2BAqBhD,IAAMupI,GAAsBvpI,GAAkB,qBAG9C,SAASggB,GAAiB5f,GAC7B,sBAAAq1D,EAAAj1D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA80D,EAAO50D,EAAeixC,GAAtB,IAAAphB,EAAAtuB,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAA40D,GAAA,cAAAA,EAAA10D,KAAA00D,EAAAz0D,MAAA,cAAAy0D,EAAA10D,KAAA,EAEO0vB,EAAaohB,IAAWphB,WAF/BglC,EAAAz0D,KAAA,EAGoBypC,GAAI,uBAAA3kC,OAAwB2qB,EAAWnO,QAAQ0H,GAA3C,KAAAlkB,OAAiD2qB,EAAWzG,GAA5D,WAAyE,CAAE0gB,OAAQ,SAH3G,cAGOvoC,EAHPszD,EAAAxM,KAIgB,IAAX/oD,QAA4ByE,GAAXzE,GACjBU,EAASX,EAAgBC,EAAS,YAGtCU,EAASysF,GAAgBlrF,IAR1BszD,EAAAz0D,KAAA,EASOJ,EAASgvD,GAAen/B,EAAWnO,QAAQ0H,GAAIyG,EAAWzG,KATjE,cAAAyrC,EAAAnX,OAAA,SAWQn8C,GAXR,cAAAszD,EAAA10D,KAAA,GAAA00D,EAAAvM,GAAAuM,EAAA,SAcC70D,EAAS0B,EAAyBmzD,EAAAvM,GAAK,qCAdxCuM,EAAAvM,GAAA,yBAAAuM,EAAAr0D,SAAAo0D,EAAA,kBAAP,gBAAA5D,EAAA24G,GAAA,OAAAh1G,EAAAj0D,MAAAC,KAAAC,YAAA,GAoBG,SAASqkG,GAAmByuB,GAC/B,sBAAAljE,EAAA9wD,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA2wD,EAAOzwD,EAAeixC,GAAtB,IAAAphB,EAAAhsB,EAAAtC,EAAA,OAAA3B,EAAAC,EAAAI,KAAA,SAAAywD,GAAA,cAAAA,EAAAvwD,KAAAuwD,EAAAtwD,MAAA,cAAAswD,EAAAvwD,KAAA,EAEO0vB,EAAaohB,IAAWphB,WACxBhsB,EAAegsB,EAAWzG,GAHjCsnC,EAAAtwD,KAAA,EAIoBypC,GAAI,uBAAA3kC,OAAwB2qB,EAAWnO,QAAQ0H,GAA3C,KAAAlkB,OAAiDrB,EAAjD,aAA0E,CAAEimC,OAAQ,OAAQC,KAAMv5B,KAAKjD,UAAUmmH,KAJzI,cAIOnyH,EAJPmvD,EAAArI,KAKCroD,EAASysF,GAAgBlrF,IAL1BmvD,EAAAhT,OAAA,SAOQn8C,GAPR,cAAAmvD,EAAAvwD,KAAA,GAAAuwD,EAAApI,GAAAoI,EAAA,SAUC1wD,EAAS0B,EAAyBgvD,EAAApI,GAAK,wCAVxCoI,EAAApI,GAAA,yBAAAoI,EAAAlwD,SAAAiwD,EAAA,kBAAP,gBAAAm5G,EAAAC,GAAA,OAAAr5G,EAAA9vD,MAAAC,KAAAC,YAAA,GAgBG,IAAM6kI,GAA0BvmI,GAA8B,6BqG3LrE,IAAMA,GAAYC,MAGLu2M,GAAuBx2M,GAA4B,mBAEzD,SAASg0G,KACZ,sBAAAzzG,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAswG,EAAA,OAAA1wG,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACqBypC,GAAK,6BAD1B,OACGymE,EADHpwG,EAAAmoD,KAEHroD,EAAS01M,GAAqBplG,IAF3B,wBAAApwG,EAAAM,SAAAT,MAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAOG,IAAMoyG,GAAyB9zG,GAA0B,6BAqBzD,IAAM+zG,GAA4B/zG,GAA0B,gCAqB5D,IAAMu7G,GAAoBv7G,GAAyB,uBAUnD,IAAMu1G,GAA4Bv1G,GAAgC,iCAwBlE,SAAS43G,GAAiBoB,GAC7B,sBAAA1rB,EAAA9sF,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA+9C,EAAO79C,GAAP,IAAAg7E,EAAA26H,EAAA,OAAA/1M,EAAAC,EAAAI,KAAA,SAAA69C,GAAA,cAAAA,EAAA39C,KAAA29C,EAAA19C,MAAA,OAAA09C,EAAA39C,KAAA,EAEO66E,EACN,CACIC,mBAAoB,CAChB1iD,KAAMiiF,GAAa+C,OACnBn0F,GAAI,GACJ+C,OAAQ,EACRK,WAAY,GACZgpD,SAAU,GACVqC,QAAQ,GAEZqD,WAAY,IAEVy6H,EACN,CACIv6H,cAAe,IAEnBp7E,EAASy0G,GAA0Bz5B,IACnCh7E,EAAS+yG,GAA6B4iG,IAClCz9F,GACAl4G,EAASX,EAAgB,sBAAuB,aArBrDy+C,EAAA19C,KAAA,sBAAA09C,EAAA39C,KAAA,EAAA29C,EAAAwK,GAAAxK,EAAA,SAAAA,EAAAwK,GAAA,yBAAAxK,EAAAt9C,SAAAq9C,EAAA,iBAAP,gBAAAoX,GAAA,OAAAu3B,EAAA9rF,MAAAC,KAAAC,YAAA,GAiCG,IAAMmyG,GAA+B7zG,GAAqC,2CA6B1E,IAAMs1G,GAAwBt1G,GAAiC,4B8M3JtE,IAAMA,GAAYC,MAGLy2M,GAAe12M,GAAkB,iBA0B9C,IAAM22M,GAAmB,SAACjqL,GACtB,OAAOA,EAAK8lB,mBAAqBlhC,KAAKpF,MAAMwgB,EAAK8lB,oBAAhB,iBAAqD3tC,GAG7E+xM,GAAgB52M,GAAyB,kBAE/C,SAASirH,GAAYhvE,EAAiBD,EAAmBnvB,GAC5D,sBAAAlqB,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,IAAAwlC,EAAA,OAAA5lC,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA7B,KAAA,EAAA6B,EAAA5B,KAAA,EAEuCypC,GAAI,2BAAA3kC,OAA4Bi2C,EAA5B,eAAAj2C,OAAiDg2C,EAAjD,sBAAAh2C,OAA+E6mB,IAF1H,OAEOyZ,EAFPxjC,EAAAqmD,KAGCroD,EAAS81M,GAActwK,IAHxBxjC,EAAA5B,KAAA,gBAAA4B,EAAA7B,KAAA,EAAA6B,EAAAsmD,GAAAtmD,EAAA,SAKChC,EAAS0B,EAAyBM,EAAAsmD,GAAK,4BALxC,yBAAAtmD,EAAAxB,SAAAsB,EAAA,iBAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,GrDnCJ,IAAM1B,GAAYC,MAGL42M,GAAa72M,GAAqB,eAGxC,SAAS4tF,GAAWhwC,EAAmBj5C,GAC1C,sBAAApE,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAwpB,EAAA,OAAA5pB,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EAC4BypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WADhC,OACG2lB,EADHtpB,EAAAmoD,KAEHroD,EAAS+1M,GAAWvsL,IAFjB,wBAAAtpB,EAAAM,SAAAT,MAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,GAOG,SAASyrK,GAAsBvvH,EAAmBj5C,EAAsBS,GAC3E,sBAAAzC,EAAAnC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAgC,EAAO9B,GAAP,IAAA+pB,EAAA,OAAAnqB,EAAAC,EAAAI,KAAA,SAAA+B,GAAA,cAAAA,EAAA7B,KAAA6B,EAAA5B,MAAA,cAAA4B,EAAA5B,KAAA,EACgBypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,qBAAAqB,OAAuEZ,IAD3F,OACGylB,EADH/nB,EAAAqmD,KAEHroD,EAAS+1M,GAAWhsL,IAFjB,wBAAA/nB,EAAAxB,SAAAsB,MAAP,gBAAAI,GAAA,OAAAL,EAAAnB,MAAAC,KAAAC,YAAA,GAOG,IAAM8oL,GAAYxqL,GAAmB,cA6CrC,IAAM82M,GAAa92M,GAAkB,eAGrC,SAASgjI,GAAWplF,EAAmBj5C,EAAsBmmB,EAAgBnN,GAChF,sBAAA2vE,EAAA9sF,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA+9C,EAAO79C,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA69C,GAAA,cAAAA,EAAA39C,KAAA29C,EAAA19C,MAAA,cAAA09C,EAAA39C,KAAA,EAAA29C,EAAA19C,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D8kB,GAAU,CAAE8f,OAAQ,WAF5F,cAGC9pC,EAASg2M,GAAWhsL,IACpBhqB,EAASX,EAAe,GAAA6F,OAAI2X,EAAJ,YAAoB,aAJ7CihC,EAAAJ,OAAA,SAKQ1zB,GALR,aAAA8zB,EAAA39C,KAAA,EAAA29C,EAAAwK,GAAAxK,EAAA,SAOC99C,EAAS0B,EAAyBo8C,EAAAwK,GAAK,6BAPxCxK,EAAAwK,GAAA,yBAAAxK,EAAAt9C,SAAAq9C,EAAA,iBAAP,gBAAAoX,GAAA,OAAAu3B,EAAA9rF,MAAAC,KAAAC,YAAA,GAcG,SAASwpL,GAASttI,EAAmBj5C,EAAsBmmB,EAAgBnN,EAAchS,GAC5F,sBAAA8nG,EAAAjzG,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAA8yG,EAAO5yG,GAAP,OAAAJ,EAAAC,EAAAI,KAAA,SAAA6yG,GAAA,cAAAA,EAAA3yG,KAAA2yG,EAAA1yG,MAAA,cAAA0yG,EAAA3yG,KAAA,EAAA2yG,EAAA1yG,KAAA,EAEOypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D8kB,EAA7D,SAA4E,CAAE8f,OAAQ,MAAOC,KAAMv5B,KAAKjD,UAAU1C,KAF7H,cAAAioG,EAAA1yG,KAAA,EAGOJ,EAAS8sF,GAAWhwC,EAAWj5C,IAHtC,cAIC7D,EAASX,EAAe,GAAA6F,OAAI2X,EAAJ,YAAoB,YAJ7Ci2F,EAAAp1D,OAAA,SAKQ1zB,GALR,aAAA8oF,EAAA3yG,KAAA,EAAA2yG,EAAAxqD,GAAAwqD,EAAA,SAOC9yG,EAAS0B,EAAyBoxG,EAAAxqD,GAAK,4BAPxCwqD,EAAAxqD,GAAA,yBAAAwqD,EAAAtyG,SAAAoyG,EAAA,iBAAP,gBAAAn+C,GAAA,OAAAk+C,EAAAjyG,MAAAC,KAAAC,YAAA,GAcG,IAAMq1M,GAAqB/2M,GAAiD,wBAG5E,SAASqsM,GAAqBzuJ,EAAmBj5C,EAAsBmmB,GAC1E,sBAAAsqC,EAAA50D,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAy0D,EAAOv0D,GAAP,IAAAisB,EAAA,OAAArsB,EAAAC,EAAAI,KAAA,SAAAu0D,GAAA,cAAAA,EAAAr0D,KAAAq0D,EAAAp0D,MAAA,cAAAo0D,EAAAp0D,KAAA,EACiCypC,GAAI,aAAA3kC,OAAc43C,EAAd,iBAAA53C,OAAuCrB,EAAvC,WAAAqB,OAA6D8kB,EAA7D,eADrC,OACGiC,EADHuoC,EAAAnM,KAEHroD,EAASi2M,GAAmB,CAAE7sL,GAAIY,EAAQiC,eAFvC,wBAAAuoC,EAAAh0D,SAAA+zD,MAAP,gBAAAnE,GAAA,OAAAkE,EAAA5zD,MAAAC,KAAAC,YAAA,GAOG,IAAMgpL,GAAwB1qL,GAAwC,4BsDjH7E,IAGag3M,GAHK/2M,KAGWD,CAAmB,kBzDHhD,IAEa+nL,GAFK9nL,KAEWD,CAA8B,gB0DkB3D,IAAMi3M,GAAmBC,YAA4B,CACjDxwJ,KAAMywJ,IACN1wM,IvSSG,WAA4F,IAAxE+I,EAAwE9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAA/C8gE,GAAc8kE,EAAiC5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EAC/F,OAAIuyM,iBAAO9vE,EAAQpnI,GACRM,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIwF,SAASxU,OAAA0G,EAAA,EAAA1G,CAAA,GACFgP,EAAMwF,SACNsyH,EAAOv2H,WAIXqmM,iBAAO9vE,EAAQrkI,GACfzC,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIg6C,aAAe89E,EAAOv2H,UAGnBvB,GuSxBX4c,SpS4sBG,WAA2G,IAAlF5c,EAAkF9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAApD8gE,GAAc8kE,EAAsC5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EAC9G,GAAIuyM,iBAAO9vE,EAAQz3E,IACf,OAAOrvD,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM2oD,GAAQ80D,EAAOv2H,WAEtB,GAAIqmM,iBAAO9vE,EAAQn2E,IAA0B,CAChD,IAAMkmJ,EAAoB7nM,EAAM+iE,eAAexnE,QAC3CusM,EAAcD,EAAkB5vK,UAAU,SAAA52B,GAAM,OAAIA,EAAOqZ,KAAOo9G,EAAOv2H,QAAQ3L,aAMrF,OALoB,GAAhBkyM,IACAD,EAAkB/nL,KAAK,CAAEpF,GAAIo9G,EAAOv2H,QAAQ3L,aAC5CkyM,EAAcD,EAAkBr1M,OAAS,GAE7Cq1M,EAAkBC,GAAa9mI,qBAAuB82D,EAAOv2H,QAAQ0gD,mBAC9DjxD,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI+iE,eAAgB8kI,IAEjB,GAAID,iBAAO9vE,EAAQl2E,IAA4B,CAClD,IAAMimJ,EAAoB7nM,EAAM+iE,eAAexnE,QAC3CusM,EAAcD,EAAkB5vK,UAAU,SAAA52B,GAAM,OAAIA,EAAOqZ,KAAOo9G,EAAOv2H,QAAQ3L,aAMrF,OALoB,GAAhBkyM,IACAD,EAAkB/nL,KAAK,CAAEpF,GAAIo9G,EAAOv2H,QAAQ3L,aAC5CkyM,EAAcD,EAAkBr1M,OAAS,GAE7Cq1M,EAAkBC,GAAa/mI,uBAAyB+2D,EAAOv2H,QAAQ4gD,qBAChEnxD,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI+iE,eAAgB8kI,IAEjB,GAAID,iBAAO9vE,EAAQj2E,IAAe,CACrC,IAAMgmJ,EAAoB7nM,EAAM+iE,eAAexnE,QAC3CusM,EAAcD,EAAkB5vK,UAAU,SAAA52B,GAAM,OAAIA,EAAOqZ,KAAOo9G,EAAOv2H,QAAQ3L,aAMrF,OALoB,GAAhBkyM,IACAD,EAAkB/nL,KAAK,CAAEpF,GAAIo9G,EAAOv2H,QAAQ3L,aAC5CkyM,EAAcD,EAAkBr1M,OAAS,GAE7Cq1M,EAAkBC,GAAazlJ,aAAey1E,EAAOv2H,QAAQ8gD,aACtDrxD,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI+iE,eAAgB8kI,IAGnB,GAAID,iBAAO9vE,EAAQv3E,IAAiB,CACrC,IAAMwnJ,EAAU/nM,EAAMqa,KAAK9e,QACrBgzD,EAAgBw5I,EAAQ9vK,UAAU,SAAArb,GAAQ,OAAIA,EAASlC,KAAOo9G,EAAOv2H,UAI3E,OAHIgtD,GAAiB,GACjBw5I,EAAQt6C,OAAOl/F,EAAe,GAE3Bv9D,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,IAEP,GAAIH,iBAAO9vE,EAAQt3E,IAAgB,CACtC,IAAMunJ,EAAU/nM,EAAMqa,KAAK9e,QACrBusM,EAAcC,EAAQ9vK,UAAU,SAAArb,GAAQ,OAAIA,EAASlC,KAAOo9G,EAAOv2H,QAAQmZ,KAC3EkC,EAAWumD,GAA6B20D,EAAOv2H,SAKrD,OAJIumM,GAAe,EACfC,EAAQD,GAAelrL,EAEvBmrL,EAAQjoL,KAAKlD,GACV5rB,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,IAEP,GAAIH,iBAAO9vE,EAAQv1E,IAAgB,CACtC,IAAMwlJ,EAAU/nM,EAAMqa,KAAK9e,QACrBqhB,EAAWmrL,EAAQ3sL,KAAK,SAAAwB,GAAQ,OAAIA,EAASlC,KAAOo9G,EAAOv2H,QAAQ3L,aACzE,GAAIgnB,EAAU,CACV,IAAMorL,EAAsBprL,EAAS7B,UAAUkd,UAAU,SAAA8oG,GAAI,OAAIA,EAAKrmH,KAAOo9G,EAAOv2H,QAAQmZ,KAM5F,OALAkC,EAAS7B,UAAY6B,EAAS7B,UAAUxf,QACpCu8H,EAAOv2H,QAAQmZ,IAAMstL,GAAuB,EAC5CprL,EAAS7B,UAAUitL,GAAuBlwE,EAAOv2H,QAEjDqb,EAAS7B,UAAU+E,KAAKg4G,EAAOv2H,SAC5BvQ,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,IAEP,OAAO/nM,EACX,GAAI4nM,iBAAO9vE,EAAQj1E,IAAqB,CAC3C,IAAMklJ,EAAU/nM,EAAMqa,KAAK9e,QACrBwD,EAAQgpM,EAAQ9vK,UAAU,SAAArb,GAAQ,OAAIA,EAASlC,KAAOo9G,EAAOv2H,QAAQ3L,aAC3E,OAAImJ,GAAS,GACTgpM,EAAQhpM,GAAR/N,OAAA0G,EAAA,EAAA1G,CAAA,GACO+2M,EAAQhpM,GADf,CAEImW,cAAe4iH,EAAOv2H,QAAQ2T,cAAcziB,IAAI,SAAAgxE,GAAG,OAAAzyE,OAAA0G,EAAA,EAAA1G,CAAA,GAAUyyE,EAAV,CAAe5W,SAAQ,GAAAr2D,OAAKitE,EAAItgB,UAAT,KAAA3sD,OAAsBitE,EAAInjD,UAAa6jC,YAAasf,EAAItf,YAActjC,IAAO4iD,EAAItf,kBAAe9uD,QAEvKrE,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,KAEA/nM,EAEd,OAAOA,GoSzyBXmhB,WnSiNG,WAAiH,IAsDnGsd,EAtDaz+B,EAAsF9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAtD8gE,GAAc8kE,EAAwC5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EACpH,GAAIuyM,iBAAO9vE,EAAQ/5C,IACf,OAAO/sF,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EA8Ef,SAA8BioM,GAC1B,IAAMj1L,EAAUi1L,EAAcj1L,QAE9B,OADAA,EAAQC,SAAWD,EAAQC,UAAY,CAAEC,kBAAkB,EAAMC,kBAAkB,EAAOuH,GAAIutL,EAAcj1L,QAAQ0H,IAC7G1pB,OAAA0G,EAAA,EAAA1G,CAAA,GACAi3M,EADP,CAEI5qK,UAAW4qK,EAAc5qK,UAAYxc,IAAOonL,EAAc5qK,WAAWpc,QAAQ,YAAS5rB,EACtFyrB,QAASmnL,EAAcnnL,QAAUD,IAAOonL,EAAcnnL,SAASG,QAAQ,YAAS5rB,EAChFsc,cAAes2L,EAAct2L,cAAgBs2L,EAAct2L,mBAAgBtc,EAC3EmtB,iBAAkBylL,EAAczlL,iBAAmB3B,IAAOonL,EAAczlL,kBAAkB6L,QAAQpN,QAAQ,YAAS5rB,EACnHsvE,eAAgBsjI,EAActjI,eAAiB9jD,IAAOonL,EAActjI,gBAAgBt2C,QAAQpN,QAAQ,YAAS5rB,EAC7G2d,YAvFOk1L,CAAqBpwE,EAAOv2H,SAFnC,CAGIkjE,UAAWqzD,EAAOv2H,QAAQ87B,aAAey6F,EAAOv2H,QAAQuf,QACxDsF,sBAAuBm/C,GAAiBuyD,EAAOv2H,QAAQuf,SACvDoB,iBAAkB,CACd0B,qBAAsB6hD,GAAqB,GAAIqyD,EAAOv2H,QAAQojE,gBAC9DtoD,WA6CKoiB,EA7CkBq5F,EAAOv2H,QAAQojE,iBA8CzClmC,GA7CGvb,sBAAuBuiD,GAAqB,GAAIqyD,EAAOv2H,QAAQuf,SAC/DqB,kBAAmBujD,GAAeoyD,EAAOv2H,QAAQuf,YAGtD,GAAI8mL,iBAAO9vE,EAAQivE,IACtB,OAAO/1M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI6kE,kBAAmBizD,EAAOv2H,UAE3B,GAAIqmM,iBAAO9vE,EAAQgvE,IACtB,OAAO91M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI0hB,gBAAiBo2G,EAAOv2H,UAG3B,GAAIqmM,iBAAO9vE,EAAQt6C,IAAsB,CAC1C,IAAIuqH,EAAU/nM,EAAM0hB,gBAAgBnmB,QAGpC,OAFAwsM,EAAQjoL,KAAKg4G,EAAOv2H,SACpBvB,EAAM0hB,gBAAkBqmL,EACjB/2M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,GAGN,OAAI4nM,iBAAO9vE,EAAQr6C,IACbzsF,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI0hB,gBAAiB1hB,EAAM0hB,gBAAgBviB,OAAO,SAAAgpM,GAAE,OAAIA,EAAGztL,KAAOo9G,EAAOv2H,YAGpEqmM,iBAAO9vE,EAAQ9mD,IACbhgF,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI6kE,kBAAmB7kE,EAAM6kE,kBAAkB1lE,OAAO,SAAAmuD,GAAM,OAAIA,EAAO5yC,KAAOo9G,EAAOv2H,YAE9EqmM,iBAAO9vE,EAAQiC,IACf/oI,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIwkE,SAAUszD,EAAOv2H,UAGdvB,GmSlQX6rE,gBlSgaG,WAAgI,IAAhG7rE,EAAgG9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAA3D8gE,GAAc8kE,EAA6C5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EACnI,GAAIuyM,iBAAO9vE,EAAQvlC,IAAuB,CACtC,IAAMw1G,EAAU/nM,EAAMqa,KAAK9e,QACrBusM,EAAcC,EAAQ9vK,UAAU,SAAAmwK,GAAK,OAAIA,EAAM1tL,KAAOo9G,EAAOv2H,QAAQmZ,KACrE0tL,EAAQn9H,GAA2C6sD,EAAOv2H,SAKhE,OAJIumM,GAAe,EACfC,EAAQD,GAAeM,EAEvBL,EAAQjoL,KAAKsoL,GACVp3M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,IAEP,GAAIH,iBAAO9vE,EAAQrP,IACtB,OAAOz3H,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM2oD,GAAQ80D,EAAOv2H,WAEtB,GAAIqmM,iBAAO9vE,EAAQ+uE,IAAgC,CACtD,IAAMkB,EAAU/nM,EAAMqa,KAAK9e,QACrBusM,EAAcC,EAAQ9vK,UAAU,SAAA5c,GAAI,OAAIA,EAAKX,KAAOo9G,EAAOv2H,QAAQmZ,KAOzE,OANIotL,GAAe,IACfC,EAAQD,GAAR92M,OAAA0G,EAAA,EAAA1G,CAAA,GACO+2M,EAAQD,GADf,CAEIvqL,UAAWu6G,EAAOv2H,QAAQgc,aAG3BvsB,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,IAEP,OAAIH,iBAAO9vE,EAAQtlC,IACfxhG,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI4qE,sBAAqB,GAAAp0E,OAAAxF,OAAAgO,EAAA,EAAAhO,CACdgP,EAAM4qE,sBAAsBzrE,OAAO,SAAAyJ,GAAC,OAAIA,EAAEupF,oBAAsB2lC,EAAOv2H,QAAQmZ,MADjE,CAEjB,CACIy3E,kBAAmB2lC,EAAOv2H,QAAQmZ,GAClC5pB,OAAQgnI,EAAOv2H,QAAQzQ,YAK5BkP,GkS1cXqb,K/R+YG,WAA+F,IAA1Erb,EAA0E9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAhD8gE,GAAc8kE,EAAkC5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EAClG,GAAIuyM,iBAAO9vE,EAAQkjD,IAAY,CAC3B,IAAM+sB,EAAU/nM,EAAMqa,KAAK9e,QACrBusM,EAAcC,EAAQ9vK,UAAU,SAAA5c,GAAI,OAAIA,EAAKX,KAAOo9G,EAAOv2H,QAAQmZ,KACnEW,EAAOy0D,GAAqBgoD,EAAOv2H,SAKzC,OAJIumM,GAAe,EACfC,EAAQD,GAAezsL,EAEvB0sL,EAAQjoL,KAAKzE,GACVrqB,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,EACNppL,qBAAsBqxD,GAA6B+3H,KAEpD,GAAIH,iBAAO9vE,EAAQuvE,IAAa,CACnC,IAAMU,EAwDd,SAAiBM,GACb,IAAMvtL,EAAgB,GAItB,OAHAutL,EAASptL,QAAQ,SAAA80D,GACbj1D,EAAMgF,KAAKgwD,GAAqBC,MAE7Bj1D,EA7DakoD,CAAQ80D,EAAOv2H,SAC/B,OAAOvQ,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,EACNppL,qBAAsBqxD,GAA6B+3H,KAEpD,GAAIH,iBAAO9vE,EAAQwvE,IAAa,CACnC,IAAMS,EAAU/nM,EAAMqa,KAAK9e,QACrBgzD,EAAgBw5I,EAAQ9vK,UAAU,SAAA5c,GAAI,OAAIA,EAAKX,KAAOo9G,EAAOv2H,UAInE,OAHIgtD,GAAiB,GACjBw5I,EAAQt6C,OAAOl/F,EAAe,GAE3Bv9D,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,EACNppL,qBAAsBqxD,GAA6B+3H,KAEpD,GAAIH,iBAAO9vE,EAAQyvE,IAAqB,CAC3C,IAAMQ,EAAU/nM,EAAMqa,KAAK9e,QACrBusM,EAAcC,EAAQ9vK,UAAU,SAAA5c,GAAI,OAAIA,EAAKX,KAAOo9G,EAAOv2H,QAAQmZ,KAOzE,OANIotL,GAAe,IACfC,EAAQD,GAAR92M,OAAA0G,EAAA,EAAA1G,CAAA,GACO+2M,EAAQD,GADf,CAEIvqL,UAAWu6G,EAAOv2H,QAAQgc,aAG3BvsB,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,IAEP,GAAIH,iBAAO9vE,EAAQojD,IAAwB,CAC9C,IAAMotB,EAAKxwE,EAAOv2H,QAClB,OAAK+mM,EAcMt3M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI6vE,iBAAkBy4H,IAfft3M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI6vE,iBAAkB,CACdpjC,aAASp3C,EACTgoB,sBAAkBhoB,EAClB4nB,iBAAa5nB,EACboiC,iBAAapiC,EACbsc,mBAAetc,EACfokE,aAASpkE,EACTmkE,YAAQnkE,KAUpB,OAAO2K,G+RjdXiT,S9RHG,WAA2G,IAAlFjT,EAAkF9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAApD8gE,GAAc8kE,EAAsC5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EAC9G,OAAIuyM,iBAAO9vE,EAAQ0vE,IACRx2M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI8hC,OAAQg2F,EAAOv2H,QACfsrE,QAAQ,IAGL7sE,G8RJXsxB,OhSQG,WAAqG,IAA9EtxB,EAA8E9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAlD8gE,GAAc8kE,EAAoC5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EACxG,OAAIuyM,iBAAO9vE,EAAQovE,IACRl2M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI8hC,OAAQg2F,EAAOv2H,QACfsrE,QAAQ,IAEL+6H,iBAAO9vE,EAAQsvE,IACfp2M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEI82B,SAAUghG,EAAOv2H,UAGdvB,GgSpBXw5H,gBrSuBG,WAAgI,IAAhGx5H,EAAgG9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAA3D8gE,GAAc8kE,EAA6C5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EACnI,GAAIuyM,iBAAO9vE,EAAQ7kE,IAAwB,CACvC,IAAM80I,EAAUjwE,EAAOv2H,QACvB,OAAOvQ,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM0tL,IAGT,OAAIH,iBAAO9vE,EAAQz3E,IACbrvD,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAM,KAIHra,GqSrCX2+F,ajS+DG,WAAuH,IAA1F3+F,EAA0F9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAxD8gE,GAAc8kE,EAA0C5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EAC1H,GAAIuyM,iBAAO9vE,EAAQkvE,IACf,OAAOh2M,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIosE,gBAAiB0rD,EAAOv2H,UAG3B,GAAIqmM,iBAAO9vE,EAAQxzB,IAAyB,CACzC,IAAIikG,EAAev3M,OAAAgO,EAAA,EAAAhO,CAAOgP,EAAMosE,iBAEhC,OADAm8H,EAAgBzoL,KAAMg4G,EAAOv2H,SACtBvQ,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIosE,gBAAiBm8H,IAEvB,GAAIX,iBAAO9vE,EAAQvzB,IAA4B,CACjD,IAAIgkG,EAAev3M,OAAAgO,EAAA,EAAAhO,CAAOgP,EAAMosE,iBAC1B0N,EAAMyuH,EAAgBtwK,UAAW,SAAAn9B,GAAC,OAAIA,EAAE4f,KAAOo9G,EAAOv2H,QAAQmZ,KAIpE,OAHIo/D,IACAyuH,EAAgBzuH,GAAOg+C,EAAOv2H,SAE3BvQ,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIosE,gBAAiBm8H,IAElB,OAAIX,iBAAO9vE,EAAQ/rB,IACf/6G,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqsE,aAAcyrD,EAAOv2H,UAEnBqmM,iBAAO9vE,EAAQ/xB,IACrB/0G,OAAA0G,EAAA,EAAA1G,CAAA,GACOgP,EADP,CAEIssE,qBAAsBwrD,EAAOv2H,UAE1BqmM,iBAAO9vE,EAAQzzB,IACtBrzG,OAAA0G,EAAA,EAAA1G,CAAA,GACOgP,EADP,CAEIysE,oBAAqBqrD,EAAOv2H,UAGzBqmM,iBAAO9vE,EAAQhyB,IACtB90G,OAAA0G,EAAA,EAAA1G,CAAA,GACOgP,EADP,CAEI2sE,uBAAwBmrD,EAAOv2H,UAI5BvB,GiS7GX83K,S7RnBG,WAA6G,IAArF93K,EAAqF9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAxD8gE,GAAc8kE,EAA0C5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EAChH,OAAIuyM,iBAAO9vE,EAAQygD,IACRvnL,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIkwE,cAAe4nD,EAAOv2H,UAGnBvB,G6RaX0tH,wBrKIG,WAA4I,IAArG1tH,EAAqG9N,UAAAM,OAAA,QAAA6C,IAAAnD,UAAA,GAAAA,UAAA,GAAhE8gE,GAAc8kE,EAAkD5lI,UAAAM,OAAA,EAAAN,UAAA,QAAAmD,EAC/I,OAAIuyM,iBAAO9vE,EAAQtK,IACRx8H,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,EADP,CAEIqa,KAAMy9G,EAAOv2H,UAIdvQ,OAAA0G,EAAA,EAAA1G,CAAA,GACAgP,MqKVLwoM,GAAoB3wM,OAAe4wM,sCAAwC35J,IAC3ExM,GAAQomK,YAAYjB,GAAkBe,GAAiBG,YAAgBC,OAE7EtmK,GAAMhxC,SF9BF,eAAAP,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAu3M,EAAAC,EAAA9nH,EAAA,OAAA9vF,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UACCm3M,EAA0B,GACxBC,EAAgBrlM,eAAexN,QAAQ,WAF1C,CAAAzE,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EAKoBypC,GAAI,UALxB,OAKC0tK,EALDr3M,EAAAmoD,KAMCl2C,eAAeE,QAAQ,UAAW7B,KAAKjD,UAAUgqM,IANlDr3M,EAAAE,KAAA,gBAQCm3M,EAAa/mM,KAAKpF,MAAMosM,GARzB,QAWG9nH,EAAkB,GACxB6nH,EAAW5tL,QAAQ,SAAAiC,GAAQ,IACfxC,EAAewC,EAAfxC,GAAOmO,EADQ73B,OAAAgX,GAAA,EAAAhX,CACAksB,EADA,QAEvB2L,EAAIkmK,YAAcoY,GAAiBjqL,GACnC8jE,EAAQpiF,OAAO8b,IAAOmO,IAG1Bv3B,EAAS41M,GAAalmH,IAlBnB,yBAAAxvF,EAAAM,SAAAT,MAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,IE+BJowC,GAAMhxC,SDhCF,eAAAP,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,EAAAC,EAAAC,KAAO,SAAAC,EAAOC,GAAP,IAAAy3M,EAAAC,EAAA/1L,EAAA,OAAA/hB,EAAAC,EAAAI,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UACCq3M,EAA4B,GAC1BC,EAAiBvlM,eAAexN,QAAQ,YAF3C,CAAAzE,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EAKqBypC,GAAI,YALzB,OAKC4tK,EALDv3M,EAAAmoD,KAMCl2C,eAAeE,QAAQ,WAAY7B,KAAKjD,UAAUkqM,IANnDv3M,EAAAE,KAAA,gBAQCq3M,EAAcjnM,KAAKpF,MAAMssM,GAR1B,QAWG/1L,EAAoB,GAC1B81L,EAAY9tL,QAAQ,SAAAiC,GAAQ,IAChBxC,EAAewC,EAAfxC,GAAOmO,EADS73B,OAAAgX,GAAA,EAAAhX,CACDksB,EADC,QAExBjK,EAASrU,OAAO8b,IAAOmO,IAG3Bv3B,EAASk2M,GAAcv0L,IAjBpB,yBAAAzhB,EAAAM,SAAAT,MAAP,gBAAAU,GAAA,OAAAhB,EAAAiB,MAAAC,KAAAC,YAAA,ICsCWowC,oBC1BAkJ,MAAc6iD,YAXT,SAAChvF,GAQnB,OAPAmB,IAAMq9C,UAAU,WACdzjB,GAAcE,cACdj7B,EAAM2qC,iBAAiBgB,cAAc3rC,EAAMvH,SAAS+sD,UACpDokJ,KAAQx6C,IAAI,CAAE74E,KAAMv2E,EAAMvH,SAAS+sD,WACnCokJ,KAAQC,SAAS7pM,EAAMvH,SAAS+sD,WAC/B,CAAExlD,EAAMvH,SAAS+sD,WAEbxlD,EAAMuI,YCETuhM,eACF,SAAAA,EAAY9pM,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAAk3M,IACtBlwM,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAAm4M,GAAA3pM,KAAAvN,KAAMoN,KAEDW,MAAQ,CACTpI,YAAa,IAJKqB,mFAStBhH,KAAKoN,MAAM2qC,iBAAiBa,WAAW,CACnC18B,KAAM,MACNk5C,WAAY,CACRxC,SAAU5yD,KAAKoN,MAAMioD,QAAQxvD,SAAS+sD,uDAK/BkE,EAAkBC,yCAKjC/2D,KAAK4N,SAAS,CAAEjI,YAAa3F,KAAKoN,MAAMxM,KAAK6sF,yCAI7C,MAA+B,KAA3BztF,KAAK+N,MAAMpI,YAEPuI,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3S,KAAK+N,MAAMpI,cAIzBuI,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO2hD,MACfvqD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOqgM,MAAOn3M,KAAKoN,MAAMgC,QACrClB,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOsgM,kBAAnB,qBACAlpM,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAOugM,sBACfnpM,EAAAhP,EAAAiP,cAAA,WAAMnO,KAAKoN,MAAMxM,KAAKqY,QACtB/K,EAAAhP,EAAAiP,cAAA,WAAOnO,KAAKoN,MAAMxM,KAAKjC,UAE3BuP,EAAAhP,EAAAiP,cAAA,WACID,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ5lC,MAAM,UAAU3I,MAAO0I,GAAOuI,OAAQzgB,QAAQ,YAAY8X,QAAS1W,KAAKs3M,WAAWjwJ,KAAKrnD,OAC3FA,KAAKoN,MAAMxM,KAAKkxG,sBA3ChBvjG,IAAMC,eAsDjCsI,GAA2C,CAC7C2hD,KAAM,CACFpqD,UAAW,UAEf8oM,KAAM,CACF5lM,OAAQ,QACRwF,MAAO,UACPW,WAAY,SACZI,SAAU,OACVC,WAAY,OACZwE,cAAe,OACfC,WAAY,QACZnO,UAAW,SACX6I,UAAW,QAEfkgM,iBAAkB,CACd7lM,OAAQ,OACRwF,MAAO,UACPW,WAAY,SACZI,SAAU,OACVC,WAAY,IACZwE,cAAe,SACfC,WAAY,OACZnO,UAAW,UAEfgpM,qBAAsB,CAClB9lM,OAAQ,OACRwF,MAAO,mBACPW,WAAY,SACZI,SAAU,OACV0E,WAAY,OACZnO,UAAW,SACX6I,UAAW,QAEfmI,OAAQ,CACJnI,UAAW,QAEfqgM,YAAa,CACThmM,OAAQ,OACR6H,MAAO,QACPrC,MAAO,UACPW,WAAY,SACZI,SAAU,OACVC,WAAY,IACZwE,cAAe,MACfC,WAAY,OACZnO,UAAW,WAGJ+tF,eAAW7iD,GAAc29J,KCvHlCM,GAAcjpM,IAAMizC,KAAK,SAACp0C,GAC5B,OACIc,EAAAhP,EAAAiP,cAACq8C,GAAD,KACIt8C,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO2hD,MACfvqD,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO1R,OAAnB,wBACA8I,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0I,GAAO2gM,aAAnB,6CAEIvpM,EAAAhP,EAAAiP,cAAA,WACAD,EAAAhP,EAAAiP,cAAA,WAHJ,yEAMAD,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQ/9C,QAAQ,YAAYmY,MAAM,UAAU3I,MAAO0I,GAAOuI,OAAQ3I,QAAStJ,EAAMioD,QAAQupH,QAAzF,eAMV9nK,GAAiD,CACnD2hD,KAAM,CACFpqD,UAAW,SACXqJ,WAAY,UAEhBtS,MAAO,CACH2R,MAAO9D,GAAQiB,KAAKC,QACpB2D,SAAU,GACVC,WAAY,OACZ1J,UAAW,SACX6I,UAAW,IAEfugM,YAAa,CACTx/L,OAAQ,SACRlB,MAAO9D,GAAQC,KAAKW,QACpBiE,SAAU,IAEduH,OAAQ,CACJjG,MAAO,IACPlC,UAAW,KAIJklF,eAAWo7G,ICwIXj+J,kBA3JX,SAAAm+J,EAAYtqM,GAAc,IAAApG,EAAA,OAAAjI,OAAA0D,EAAA,EAAA1D,CAAAiB,KAAA03M,IACtB1wM,EAAAjI,OAAAsO,EAAA,EAAAtO,CAAAiB,KAAAjB,OAAAuO,EAAA,EAAAvO,CAAA24M,GAAAnqM,KAAAvN,KAAMoN,KAHVuqM,eAE0B,EAAA3wM,EAsClB4wM,uBAAyB,WAC7B5wM,EAAK4G,SAAS,CAAEiqM,6BAA6B,KAvCvB7wM,EA2ClB8wM,gBAAkB,WACtBpqM,GAAK88B,UA5CiBxjC,EAoD1BuiC,aAAe,WACX77B,GAAK67B,eAAeriC,KAAK,WACrBohC,GAAeyvK,aAAa/wM,EAAK8wM,gBAAiB9wM,EAAK4wM,0BAE3D5wM,EAAK4G,SAAS,CAAEiqM,6BAA6B,KAxDvB7wM,EA2D1BiB,OAAS,WACLyF,GAAK88B,UA5DiBxjC,EA+D1BgxM,oBAAsB,WAClB,OAAItqM,GAAKwjB,iBACE,CACHjY,OAAM,oEACNta,QAAO,mDACP8uF,MAAOz/E,GAAOH,cAAcI,KAC5B6jG,WAAY,gBAETpkG,GAAKyjB,iBACL,CACHlY,OAAM,oEACNta,QAAS,gEACT8uF,MAAOz/E,GAAOH,cAAcI,KAC5B6jG,WAAY,yBAETpkG,GAAK+iB,0BACL,CACHxX,OAAQ,oEACRta,QAAS,iDACT8uF,MAAOz/E,GAAOH,cAAcI,KAC5B6jG,WAAY,0BAETpkG,GAAK+jB,6BACL,CACHxY,OAAQ,oEACRta,QAAS,GACT8uF,MAAOz/E,GAAOH,cAAcI,KAC5B6jG,WAAY,kBAvFpB9qG,EAAK+G,MAAQ,CACTyzG,UAAU,EACVq2F,6BAA6B,EAC7BI,YAAY,GANMjxM,iFAUR5B,EAAYi5D,GAC1Br+D,KAAKoN,MAAM2qC,iBAAiB62E,WAAWxpH,GAEvCpF,KAAK4N,SAAS,CAAE4zG,UAAU,+CAGX1qD,GACXppD,GAAKsE,cACLhS,KAAKk4M,sDAKLxqM,GAAKsE,eACLs2B,GAAeyvK,aAAa/3M,KAAK83M,gBAAiB93M,KAAK43M,wBACvD53M,KAAKk4M,6CAIH,IAAA5iM,EACyCtV,KAAKoN,MAA5C8jM,EADF57L,EACE47L,YAAaE,EADf97L,EACe87L,OAAW+G,EAD1Bp5M,OAAAgX,GAAA,EAAAhX,CAAAuW,EAAA,0BAGN,GADmB5H,GAAK0qM,cAAclH,EAAaE,EAAQ+G,GAC3C,CACZ,IAAIziI,EAAWhoE,GAAKu4C,cACpBjmD,KAAKoN,MAAM2qC,iBAAiBmB,4BAA4Bw8B,mDAcxD11E,KAAK23M,WACLj4M,aAAaM,KAAK23M,4CAqDjB,IAAAt6I,EAC0Cr9D,KAAKoN,MAA5C8jM,EADH7zI,EACG6zI,YAAaE,EADhB/zI,EACgB+zI,OAAW+G,EAD3Bp5M,OAAAgX,GAAA,EAAAhX,CAAAs+D,EAAA,0BAECg7I,EAAa3qM,GAAK0qM,cAAclH,EAAaE,EAAQ+G,GAFtDr7I,EAGyD98D,KAAK+N,MAA3DyzG,EAHH1kD,EAGG0kD,SAAUq2F,EAHb/6I,EAGa+6I,4BAA6BI,EAH1Cn7I,EAG0Cm7I,WAE/C,GAAIE,EAAWtyM,SAAU+sD,WAAa5kD,GAAOqvC,KAAKpvC,MAAUP,GAAKsE,eAAgBimM,EAM5E,IAAIvqM,GAAK68C,YAAa,CAEvB,IAAMA,EAAc78C,GAAK68C,YAEzB,OADA78C,GAAK68C,YAAc,GAEfr8C,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI43C,IAIjB,OAAIi3D,EAGDtzG,EAAAhP,EAAAiP,cAACmqM,GAAD,MAICD,EAEDnqM,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACuE,EAAA,EAAUylM,GACXjqM,EAAAhP,EAAAiP,cAACsuC,GAAD,CAAY98C,KAAMk4M,EAA6BniM,QAAS1V,KAAKiI,OAAQwN,MAAM,6BACvEvH,EAAAhP,EAAAiP,cAACmI,GAAA,EAAD,2EAGApI,EAAAhP,EAAAiP,cAACuuC,GAAA,EAAD,KACIxuC,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,YAAY/R,QAAS1W,KAAKiI,OAAQ8O,MAAM,WAAnD,WACA7I,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CAAQl0B,GAAG,mBAAmB/R,QAAS1W,KAAKupC,aAAcxyB,MAAM,WAAhE,eAUZ7I,EAAAhP,EAAAiP,cAACoqM,GAAD,CAAoBnpM,OAAQ,IAAKxO,KAAMZ,KAAKg4M,wBAzChD,OACI9pM,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAUC,GAAI3E,GAAOqvC,KAAKpvC,cAhHlBM,IAAMC,sCCbfgqM,GARQ,SAACprM,GACpB,OACIc,EAAAhP,EAAAiP,cAAC8mB,GAAA,EAAY7nB,EACTc,EAAAhP,EAAAiP,cAAA,QAAM8d,EAAE,qICsBdwsL,GAAiBlqM,IAAMizC,KAAK,SAACp0C,GAC/B,IAAIrI,EAASqI,EAAMsrM,cACbC,EAAyBlqM,GAAWkC,WAAa,CAAEquG,SAAU,MAAOC,WAAY,SAAcl6G,EAAOnG,SAA8B,UAAnBmG,EAAOnG,QAAuB,CAAEogH,SAAU,MAAOC,WAAY,QAAW,CAAED,SAAU,SAAUC,WAAY,QAQhO,OACI/wG,EAAAhP,EAAAiP,cAACyqM,GAAA,EAAD,CACI9xM,IAAK/B,EAAOpG,QACZgB,KAAMoF,EAAOpF,KACbo/G,aAAc45F,EACd1iM,UAAW,YAEX/H,EAAAhP,EAAAiP,cAAC0qM,GAAA,EAAD,CACIl6M,QACIuP,EAAAhP,EAAAiP,cAAA,OAAKC,MAAO0qM,GAAS/rF,MAChBhoH,EAAOnG,SAA8B,UAAnBmG,EAAOnG,QAAsBsP,EAAAhP,EAAAiP,cAAC8yF,GAAA/hG,EAAD,CAAiBkP,MAAO0qM,GAASC,YAAgB7qM,EAAAhP,EAAAiP,cAAC6qM,GAAD,CAAgB5qM,MAAO0qM,GAASC,YAEhIh0M,EAAOpG,QAEPoG,EAAOnG,SAA8B,UAAnBmG,EAAOnG,SAAuBmG,EAAOlG,QAAUkG,EAAOlG,OAAO0B,OAAS,EACzF2N,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KACIJ,EAAAhP,EAAAiP,cAACwuC,GAAA,EAAD,CACIl0B,GAAG,eACH1R,MAAM,UACNL,QAxB5B,WACI3R,EAAOpF,MAAO,EACdyN,EAAM3L,mBAAmBsD,EAAOlG,QAAU,MAmBtB,qBAQCuE,GAIbgL,MAAOrJ,EAAOnG,SAAWkY,GAAO/R,EAAOnG,cAMjDkY,GAA4D,CAC9DunD,KAAM,CACFziD,gBAAiB3I,GAAQiB,KAAKC,SAElC4yD,QAAS,CACLnrD,gBAAiB3I,GAAQ2B,MAAMC,cAEnCzP,MAAO,CACHwW,gBAAiB3I,GAAQ+B,IAAIb,SAEjCY,QAAS,CACL6G,gBAAiB3I,GAAQ6B,OAAOX,SAEpC8kM,SAAU,CACNr9L,gBAAiB3I,GAAQC,KAAKK,WAIhCulM,GAAmD,CACrDC,UAAW,CACPjhM,SAAU,GACV2wE,QAAS,GACTtxE,YAAa,QAEjB41G,KAAM,CACFzyG,QAAS,OACTO,WAAY,WAuBLiiC,mBAZf,SAAyB/uC,GACrB,MAAO,CACH2qM,cAAe3qM,EAAM/I,IAAIuO,WAIjC,SAA4BlU,GACxB,MAAO,CACHoC,mBAAoB,SAAC5C,GAAD,OAAsBQ,EAASoC,EAAmB5C,OAI/Di+C,CAA6C27J,ICtG/Cv1J,GAAQg2J,YAAe,CAClCjmM,QAAS,CACPkB,QAAS,CACPwuC,KAAM1vC,GAAQiB,KAAKC,QACnBf,MAAOH,GAAQiB,KAAK,KACpBZ,KAAML,GAAQiB,KAAK,KACnBilM,aAAc,QAEhBzgJ,UAAW,CACT/V,KAAM1vC,GAAQ2B,MAAMT,QACpBglM,aAAc,QAEhB/zM,MAAO,CACLu9C,KAAM1vC,GAAQ+B,IAAIb,QAClBglM,aAAc,SAGlBv2J,UAAW,CACTC,iBAAkB,CAChBu2J,iBAAkB,CAChB3hM,WAAY,EACZL,cAAe,IAGnBiiM,WAAY,CACV7wH,QAAS,CACP5sE,gBAAe,GAAArX,OAAK0O,GAAQC,KAAKE,OACjC+K,aAAc,MACdzK,OAAM,aAAAnP,OAAe0O,GAAQC,KAAKQ,QAClCoI,SAAU,QACVtE,QAAS,qBACT8hM,SAAU,aACVviM,MAAO9D,GAAQC,KAAKY,SACpBgE,SAAU,IAEZyhM,OAAQ,CACN9wH,QAAS,IAGb+wH,YAAa,CACXvvL,UAAW,CACTlT,MAAK,GAAAxS,OAAK0O,GAAQ2B,MAAMT,QAAnB,iBAGTslM,aAAc,CACZC,eAAgB,CACd3iM,MAAO9D,GAAQC,KAAKY,WAGxB6lM,aAAc,CACZ1vL,UAAW,CACTlT,MAAK,GAAAxS,OAAK0O,GAAQC,KAAKU,KAAlB,iBAGTgmM,eAAgB,CACdnhJ,KAAM,CACJn+C,QAAO,uBAUTu/L,GAAS/8J,YAAQ,SAAC/uC,GAAD,MAAwB,CAAE6sE,OAAQ7sE,EAAMsxB,OAAOu7C,QAAU7sE,EAAMiT,SAAS45D,SAAhF99B,CAJS,SAAAh+C,GAAA,IAAG87E,EAAH97E,EAAG87E,OAAQjlE,EAAX7W,EAAW6W,SAAX,OAA0EzH,EAAAhP,EAAAiP,cAAAD,EAAAhP,EAAAoP,SAAA,KAC/FssE,GAAUjlE,GACTilE,GAAU1sE,EAAAhP,EAAAiP,cAAA,gCAoCC2rM,GA/BH,WAGV,OAFArrM,GAAWsrM,mBACXzxK,GAAe0xK,iCAEb9rM,EAAAhP,EAAAiP,cAACgrC,GAAD,CAAmBpB,iBAAkBA,IACnC7pC,EAAAhP,EAAAiP,cAAC80C,EAAA,EAAD,CAAkBC,MAAOA,IACvBh1C,EAAAhP,EAAAiP,cAAC8rM,EAAA,EAAD,CAAyBC,MAAOC,KAC9BjsM,EAAAhP,EAAAiP,cAACisM,EAAA,EAAD,CAAU/pK,MAAOA,IACfniC,EAAAhP,EAAAiP,cAAC0rM,GAAD,KACE3rM,EAAAhP,EAAAiP,cAACksM,EAAA,EAAD,KACEnsM,EAAAhP,EAAAiP,cAACmsM,GAAD,KACEpsM,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,KACG3T,OAAOsN,KAAK2B,IAAQxN,IAAI,SAAA+5M,GACvB,OAAKvsM,GAAOusM,GAAUrJ,YAGZhjM,EAAAhP,EAAAiP,cAACqsM,GAADz7M,OAAAoM,OAAA,CAAWrE,IAAKyzM,GAAcvsM,GAAOusM,KAFrCrsM,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD3T,OAAAoM,OAAA,CAAOrE,IAAKyzM,GAAcvsM,GAAOusM,OAI7CrsM,EAAAhP,EAAAiP,cAACuE,EAAA,EAAD,CAAO6xC,UAAWwyE,QAIxB7oH,EAAAhP,EAAAiP,cAACssM,GAAD,oBChGd9+J,KAAWi+F,WAJY,CACnB8gE,MAAO5qM,oCAKX6qM,IAASC,OACP1sM,EAAAhP,EAAAiP,cAACnJ,GAAD,MACA8L,SAASC,eAAe,8BClB1B7S,EAAAC,QAAiBC,EAAAC,EAAuB,mECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,yDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB","file":"static/js/main.4d5e260e.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/be_banner.260d633e.png\";","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport { SnackbarState, SnackbarVariant, AppReducerState } from '../reducers';\r\nimport { HttpResponse, ValidationError } from 'utility/http';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\n// Toggle Snackbar\r\nexport const toggleSnackbar = acFactory('TOGGLE_SNACKBAR');\r\n\r\n// Display Snackbar Thunk\r\nlet timeoutRef: any;\r\nexport function displaySnackbar(message: string, variant: SnackbarVariant, errors?: string[]) {\r\n return async function (dispatch: any) {\r\n if (timeoutRef)\r\n clearTimeout(timeoutRef);\r\n\r\n dispatch(toggleSnackbar({ open: true, message, variant, errors }));\r\n timeoutRef = setTimeout(() => dispatch(toggleSnackbar({ open: false })), 6000);\r\n }\r\n}\r\nfunction cleanMessage(message: string) {\r\n return message.replace('\"', '').replace('\"', '');\r\n}\r\n\r\nfunction getErrorFromResponse(httpResponse: HttpResponse): string[] {\r\n\r\n if (httpResponse.validationErrors && httpResponse.validationErrors.length > 0) {\r\n return httpResponse.validationErrors.map(da => da.message) as string[];\r\n }\r\n\r\n if (Array.isArray(httpResponse.data)) {\r\n let data: ValidationError[] = httpResponse.data;\r\n return data.map(da => da.message) as string[];\r\n }\r\n\r\n if (httpResponse.data !== null && httpResponse.data.length > 0) {\r\n let data = cleanMessage(httpResponse.data);\r\n return [data];\r\n }\r\n\r\n if (httpResponse.responseMessage !== null && httpResponse.responseMessage.length > 0) {\r\n let data = cleanMessage(httpResponse.responseMessage);\r\n return [data];\r\n }\r\n\r\n if (httpResponse.data !== null && httpResponse.data.statusCode !== null) {\r\n let errors = getErrorFromResponse(httpResponse.data);\r\n return errors;\r\n }\r\n\r\n return [\"Unknown Error\"];\r\n}\r\n\r\nexport function displaySnackbarWithErrors(ex: any, snackbarMessage: string) {\r\n return async function (dispatch: any) {\r\n const httpResponse = ex as HttpResponse;\r\n if (httpResponse) {\r\n\r\n try {\r\n let messages = getErrorFromResponse(httpResponse);\r\n dispatch(displaySnackbar(snackbarMessage, 'error', messages));\r\n } catch {\r\n dispatch(displaySnackbar(snackbarMessage, 'error', ['Fatal Unknown Error']));\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const storeSystemErrors = acFactory('STORE_SYSTEM_ERRORS');\r\n\r\n// Store System Errors\r\nexport function updateSystemErrors(errors: string[]) {\r\n return async function (dispatch: any) {\r\n dispatch(storeSystemErrors(errors));\r\n }\r\n}\r\n","export const securityPolicyTypes = {\r\n EnrollmentSuperAdministration:\"EnrollmentSuperAdministration\",\r\n EnrollmentAdministration:\"EnrollmentAdministration\",\r\n EnrollmentManagement:\"EnrollmentManagement\",\r\n EnrollmentUser:\"EnrollmentUser\",\r\n};\r\n\r\n\r\nexport const enrollmentUserType = {\r\n EnrollmentSuperAdmin:\"4\",\r\n EnrollmentAdmin:\"3\",\r\n EnrollmentManager:\"2\",\r\n EnrollmentUser:\"1\",\r\n};\r\n\r\nexport const mapSecurityToEnrollment = (securityType: string) => {\r\n const type = securityPolicyTypes[securityType];\r\n switch (type) {\r\n case securityPolicyTypes.EnrollmentAdministration:\r\n return enrollmentUserType.EnrollmentAdmin;\r\n case securityPolicyTypes.EnrollmentManagement:\r\n return enrollmentUserType.EnrollmentManager;\r\n case securityPolicyTypes.EnrollmentSuperAdministration:\r\n return enrollmentUserType.EnrollmentSuperAdmin;\r\n case securityPolicyTypes.EnrollmentUser:\r\n return enrollmentUserType.EnrollmentUser;\r\n default:\r\n return undefined;\r\n }\r\n\r\n}\r\n\r\nexport interface I_JWT {\r\n tfp: string;\r\n aud: string;\r\n ea: 'true' | 'false';\r\n exp: number;\r\n nbf: number;\r\n iss: string;\r\n jti: string;\r\n sub: string;\r\n unique_name: string;\r\n displayName: string;\r\n enrollment_user_type: '1' | '2' | '3' | '4';\r\n enrollment_id: string;\r\n enrollment_employee_id: string;\r\n newUser?: boolean;\r\n}\r\n\r\nexport interface ICanvasTokenRenewalRequest{\r\n signedToken:string\r\n}","import { enrollmentUserType, securityPolicyTypes, mapSecurityToEnrollment, I_JWT } from \"./auth_security_types\";\r\n\r\nclass AuthPolicyValidator {\r\n private permissionMap: any = {\r\n\r\n }\r\n\r\n constructor() {\r\n this.permissionMap[securityPolicyTypes.EnrollmentUser] = this.assertEnrollmentUserPolicy;\r\n this.permissionMap[securityPolicyTypes.EnrollmentManagement] = this.assertEnrollmentManagerPolicy;\r\n this.permissionMap[securityPolicyTypes.EnrollmentAdministration] = this.assertEnrollmentAdministrationPolicy;\r\n this.permissionMap[securityPolicyTypes.EnrollmentSuperAdministration] = this.assertEnrollmentSuperAdministrationPolicy;\r\n }\r\n\r\n private assertEnrollmentUserPolicy(decodedToken: I_JWT) {\r\n var userType = decodedToken.enrollment_user_type;\r\n var enrollmentId = decodedToken.enrollment_id;\r\n var isValidUserType = (\r\n userType === enrollmentUserType.EnrollmentUser ||\r\n userType === enrollmentUserType.EnrollmentManager ||\r\n userType === enrollmentUserType.EnrollmentAdmin ||\r\n userType === enrollmentUserType.EnrollmentSuperAdmin\r\n );\r\n return isValidUserType && enrollmentId !== undefined;\r\n }\r\n\r\n private assertEnrollmentManagerPolicy(decodedToken: I_JWT) {\r\n var userType = decodedToken.enrollment_user_type;\r\n var enrollmentId = decodedToken.enrollment_id;\r\n var isValidUserType = (\r\n userType === enrollmentUserType.EnrollmentManager ||\r\n userType === enrollmentUserType.EnrollmentAdmin ||\r\n userType === enrollmentUserType.EnrollmentSuperAdmin\r\n );\r\n return isValidUserType && enrollmentId !== undefined;\r\n }\r\n\r\n private assertEnrollmentAdministrationPolicy(decodedToken: I_JWT) {\r\n var userType = decodedToken.enrollment_user_type;\r\n var enrollmentId = decodedToken.enrollment_id;\r\n var isValidUserType = (\r\n userType === enrollmentUserType.EnrollmentAdmin ||\r\n userType === enrollmentUserType.EnrollmentSuperAdmin\r\n );\r\n return isValidUserType && enrollmentId !== undefined;\r\n }\r\n\r\n private assertEnrollmentSuperAdministrationPolicy(decodedToken: I_JWT) {\r\n var userType = decodedToken.enrollment_user_type;\r\n var enrollmentId = decodedToken.enrollment_id;\r\n\r\n var isValidUserType = (\r\n userType === enrollmentUserType.EnrollmentSuperAdmin\r\n );\r\n\r\n return isValidUserType && enrollmentId !== undefined;\r\n }\r\n\r\n assertPolicy(policyName: string, decodedToken: I_JWT) {\r\n var assertion = this.permissionMap[policyName];\r\n return assertion(decodedToken);\r\n }\r\n\r\n assertBlocks(blockName: string, decodedToken:I_JWT){\r\n var userType = decodedToken.enrollment_user_type;\r\n var enrollmentType = mapSecurityToEnrollment(blockName);\r\n return userType === enrollmentType;\r\n }\r\n\r\n assertEnrollmentId(enrollmentId: string, decodedToken: I_JWT){\r\n let jwtEnrollmentId = decodedToken.enrollment_id.toUpperCase();\r\n let isEnrollmentIdValid = jwtEnrollmentId === enrollmentId.toUpperCase();\r\n return isEnrollmentIdValid;\r\n }\r\n\r\n assertEmployeeId(employeeId: string, decodedToken: I_JWT){\r\n if(!employeeId) return false;\r\n let jwtEmployeeId = decodedToken.enrollment_employee_id.toUpperCase();\r\n let isEmployeeIdValid = jwtEmployeeId === employeeId.toUpperCase();\r\n return isEmployeeIdValid;\r\n }\r\n}\r\n\r\n\r\n\r\nconst authPolicyValidator = new AuthPolicyValidator();\r\n\r\nexport default authPolicyValidator;","class Logger {\r\n private isDebugEnabled = () => {\r\n try {\r\n var isEnabled = localStorage.getItem(\"oe.enable.debug\");\r\n return isEnabled === \"true\";\r\n }\r\n catch{\r\n return false;\r\n }\r\n }\r\n log(message?: any, ...optionalParams: any[]) {\r\n if (this.isDebugEnabled)\r\n console.log(message, ...optionalParams);\r\n }\r\n\r\n warn(message?: any, ...optionalParams: any[]) {\r\n if (this.isDebugEnabled)\r\n console.log(message, ...optionalParams);\r\n }\r\n\r\n error(message?: any, ...optionalParams: any[]) {\r\n if (this.isDebugEnabled)\r\n console.log(message, ...optionalParams);\r\n }\r\n}\r\n\r\nvar logger = new Logger();\r\nexport default logger;","import * as Msal from 'msal';\r\nimport logger from './logger_utility';\r\nexport interface MsalConfig {\r\n instance: string;\r\n tenant: string;\r\n policy: string;\r\n clientId: string;\r\n scopes: string[];\r\n popup?: boolean;\r\n navigateToLoginRequestUrl?: boolean;\r\n redirectUrl?: string;\r\n cacheLocation: string;\r\n postLogoutRedirectUri: string;\r\n}\r\n\r\nexport class MsalService {\r\n private app: Msal.UserAgentApplication;\r\n constructor(private config: MsalConfig) {\r\n // set default values.\r\n this.config = {\r\n ...this.config,\r\n popup: !(this.config.popup == null) ? this.config.popup : true,\r\n redirectUrl: this.config.redirectUrl ? this.config.redirectUrl : window.location.href,\r\n navigateToLoginRequestUrl: !(this.config.navigateToLoginRequestUrl == null) ? this.config.navigateToLoginRequestUrl : false\r\n }\r\n\r\n const authority = config.instance + \"/\" + config.tenant + \"/\" + config.policy;\r\n const msalLogger = new Msal.Logger(this.loggerCallback);\r\n this.app = new Msal.UserAgentApplication(config.clientId, authority, this.authCallback,\r\n {\r\n logger: msalLogger,\r\n storeAuthStateInCookie: true,\r\n navigateToLoginRequestUrl: this.config.navigateToLoginRequestUrl,\r\n redirectUri: this.getFullUrl(this.config.redirectUrl),\r\n validateAuthority: false,\r\n cacheLocation: this.config.cacheLocation,\r\n postLogoutRedirectUri: this.getFullUrl(this.config.postLogoutRedirectUri),\r\n });\r\n }\r\n\r\n\r\n private authCallback = (errorDesc: any, token: any, error: any, tokenType: any) => {\r\n logger.log(\"authcallback: \", { errorDesc: errorDesc, token: token, error: error, tokenType: tokenType });\r\n }\r\n\r\n private loggerCallback = (logLevel: any, message: any, piiLoggingEnabled: any) => {\r\n logger.log(\"Logger: \" + message, { logLevel: logLevel, message: message, piiLoggingEnabled: piiLoggingEnabled });\r\n }\r\n\r\n public getUser() {\r\n return this.authenticated.then(isAuthenticated => isAuthenticated ? this.app.getUser() : {});\r\n }\r\n\r\n get authenticated() {\r\n return this.token.then(t => !!t);\r\n }\r\n\r\n get token() {\r\n return this.getToken();\r\n }\r\n\r\n public idpRedirect(queryParameters?: string) {\r\n return this.config.popup ?\r\n this.loginPopup(queryParameters) :\r\n this.loginRedirect(queryParameters);\r\n }\r\n\r\n public getToken(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.app.acquireTokenSilent(this.config.scopes)\r\n .then(token => {\r\n resolve(token);\r\n }).catch(error => {\r\n this.app.acquireTokenPopup(this.config.scopes)\r\n .then(token => {\r\n resolve(token);\r\n }).catch(innererror => {\r\n reject(innererror);\r\n });\r\n });\r\n });\r\n }\r\n\r\n public logout() {\r\n this.app.logout();\r\n }\r\n\r\n public loginPopup(queryParameters?: string) {\r\n return this.app.loginPopup(this.config.scopes, queryParameters).then((idToken) => {\r\n this.app.acquireTokenSilent(this.config.scopes).then(\r\n (token: string) => {\r\n return Promise.resolve(token);\r\n }, (error: any) => {\r\n this.app.acquireTokenPopup(this.config.scopes).then(\r\n (token: string) => {\r\n return Promise.resolve(token);\r\n }, (innererror: any) => {\r\n console.log('Error acquiring the popup:\\n' + innererror);\r\n return Promise.resolve('');\r\n });\r\n });\r\n }, (error: any) => {\r\n console.log('Error during login:\\n' + error);\r\n return Promise.resolve('');\r\n });\r\n }\r\n\r\n private loginRedirect(queryParameters?: string) {\r\n this.app.loginRedirect(this.config.scopes, queryParameters);\r\n return this.getToken().then(() => {\r\n Promise.resolve(this.app.getUser());\r\n });\r\n }\r\n\r\n getFullUrl(url?: string): string {\r\n if (!url)\r\n return \"\";\r\n // this create a absolute url from a relative one.\r\n const pat = /^https?:\\/\\//i;\r\n return pat.test(url) ? url : this.origin() + url;\r\n }\r\n\r\n private origin() {\r\n return (window.location.origin) ? window.location.origin :\r\n window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\r\n }\r\n}","const decodeComponent = require('decode-uri-component');\r\n\r\nconst strictUriEncode = (str: string) => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\r\nconst splitOnFirst = (string: string, separator: string) => {\r\n if (!(typeof string === 'string' && typeof separator === 'string')) {\r\n throw new TypeError('Expected the arguments to be of type `string`');\r\n }\r\n\r\n if (separator === '') {\r\n return [string];\r\n }\r\n\r\n const separatorIndex = string.indexOf(separator);\r\n\r\n if (separatorIndex === -1) {\r\n return [string];\r\n }\r\n\r\n return [\r\n string.slice(0, separatorIndex),\r\n string.slice(separatorIndex + separator.length)\r\n ];\r\n};\r\n\r\nexport const getExternalToken = () => {\r\n const externalToken = getQueryVariable('external_token');\r\n return externalToken;\r\n}\r\n\r\nexport const getRedirectUrl = () => {\r\n const returnUri = getQueryVariable('redirect_uri');\r\n return returnUri;\r\n}\r\n\r\n\r\nconst getQueryVariable = (variable: string): string => {\r\n const tokenKey = \"&external_token=\";\r\n const redirectUriKey = \"redirect_uri=\";\r\n var query = window.location.search.substring(1);\r\n var tokenIndex = query.indexOf(tokenKey);\r\n if (variable === 'external_token') {\r\n var token = decodeURIComponent(query.substring(tokenIndex + tokenKey.length));\r\n return token;\r\n } else {\r\n var redirectIndex = query.indexOf(redirectUriKey);\r\n var redirectUri = query.substring(redirectIndex + redirectUriKey.length, tokenIndex);\r\n return decodeURIComponent(redirectUri);\r\n }\r\n}\r\n\r\n\r\n// Taken from the query-string NPM Package\r\n\r\nconst encoderForArrayFormat = (options: any) => {\r\n switch (options.arrayFormat) {\r\n case 'index':\r\n return (key: any) => (result: any, value: any) => {\r\n const index = result.length;\r\n if (value === undefined) {\r\n return result;\r\n }\r\n\r\n if (value === null) {\r\n return [...result, [encode(key, options), '[', index, ']'].join('')];\r\n }\r\n\r\n return [\r\n ...result,\r\n [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\r\n ];\r\n };\r\n\r\n case 'bracket':\r\n return (key: any) => (result: any, value: any) => {\r\n if (value === undefined) {\r\n return result;\r\n }\r\n\r\n if (value === null) {\r\n return [...result, [encode(key, options), '[]'].join('')];\r\n }\r\n\r\n return [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\r\n };\r\n\r\n case 'comma':\r\n return (key: any) => (result: any, value: any, index: any) => {\r\n if (!value) {\r\n return result;\r\n }\r\n\r\n if (index === 0) {\r\n return [[encode(key, options), '=', encode(value, options)].join('')];\r\n }\r\n\r\n return [[result, encode(value, options)].join(',')];\r\n };\r\n\r\n default:\r\n return (key: any) => (result: any, value: any) => {\r\n if (value === undefined) {\r\n return result;\r\n }\r\n\r\n if (value === null) {\r\n return [...result, encode(key, options)];\r\n }\r\n\r\n return [...result, [encode(key, options), '=', encode(value, options)].join('')];\r\n };\r\n }\r\n}\r\n\r\nconst parserForArrayFormat = (options: any) => {\r\n let result;\r\n\r\n switch (options.arrayFormat) {\r\n case 'index':\r\n return (key: any, value: any, accumulator: any) => {\r\n result = /\\[(\\d*)\\]$/.exec(key);\r\n\r\n key = key.replace(/\\[\\d*\\]$/, '');\r\n\r\n if (!result) {\r\n accumulator[key] = value;\r\n return;\r\n }\r\n\r\n if (accumulator[key] === undefined) {\r\n accumulator[key] = {};\r\n }\r\n\r\n accumulator[key][result[1]] = value;\r\n };\r\n\r\n case 'bracket':\r\n return (key: any, value: any, accumulator: any) => {\r\n result = /(\\[\\])$/.exec(key);\r\n key = key.replace(/\\[\\]$/, '');\r\n\r\n if (!result) {\r\n accumulator[key] = value;\r\n return;\r\n }\r\n\r\n if (accumulator[key] === undefined) {\r\n accumulator[key] = [value];\r\n return;\r\n }\r\n\r\n accumulator[key] = [].concat(accumulator[key], value);\r\n };\r\n\r\n case 'comma':\r\n return (key: any, value: any, accumulator: any) => {\r\n const isArray = typeof value === 'string' && value.split('').indexOf(',') > -1;\r\n const newValue = isArray ? value.split(',') : value;\r\n accumulator[key] = newValue;\r\n };\r\n\r\n default:\r\n return (key: any, value: any, accumulator: any) => {\r\n if (accumulator[key] === undefined) {\r\n accumulator[key] = value;\r\n return;\r\n }\r\n\r\n accumulator[key] = [].concat(accumulator[key], value);\r\n };\r\n }\r\n}\r\n\r\nconst encode = (value: any, options: any) => {\r\n if (options.encode) {\r\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\r\n }\r\n\r\n return value;\r\n}\r\n\r\nconst decode = (value: any, options: any) => {\r\n if (options.decode) {\r\n return decodeComponent(value);\r\n }\r\n\r\n return value;\r\n}\r\n\r\nconst keysSorter = (input: any): any => {\r\n if (Array.isArray(input)) {\r\n return input.sort();\r\n }\r\n\r\n if (typeof input === 'object') {\r\n return keysSorter(Object.keys(input))\r\n .sort((a: any, b: any) => Number(a) - Number(b))\r\n .map((key: any) => input[key]);\r\n }\r\n\r\n return input;\r\n}\r\n\r\nconst extract = (input: any) => {\r\n const queryStart = input.indexOf('?');\r\n if (queryStart === -1) {\r\n return '';\r\n }\r\n\r\n return input.slice(queryStart + 1);\r\n}\r\n\r\nexport const parse = (input: any, options?: any) => {\r\n options = Object.assign({\r\n decode: true,\r\n arrayFormat: 'none'\r\n }, options);\r\n\r\n const formatter = parserForArrayFormat(options);\r\n\r\n // Create an object with no prototype\r\n const ret = Object.create(null);\r\n\r\n if (typeof input !== 'string') {\r\n return ret;\r\n }\r\n\r\n input = input.trim().replace(/^[?#&]/, '');\r\n\r\n if (!input) {\r\n return ret;\r\n }\r\n\r\n for (const param of input.split('&')) {\r\n let [key, value] = splitOnFirst(param.replace(/\\+/g, ' '), '=');\r\n\r\n // Missing `=` should be `null`:\r\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\r\n value = value === undefined ? null : decode(value, options);\r\n\r\n formatter(decode(key, options), value, ret);\r\n }\r\n\r\n return Object.keys(ret).sort().reduce((result, key) => {\r\n const value = ret[key];\r\n if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\r\n // Sort object keys, not values\r\n result[key] = keysSorter(value);\r\n } else {\r\n result[key] = value;\r\n }\r\n\r\n return result;\r\n }, Object.create(null));\r\n}\r\n\r\nexport const stringify = (object: any, options?: any) => {\r\n if (!object) {\r\n return '';\r\n }\r\n\r\n options = Object.assign({\r\n encode: true,\r\n strict: true,\r\n arrayFormat: 'none'\r\n }, options);\r\n\r\n const formatter = encoderForArrayFormat(options);\r\n const keys = Object.keys(object);\r\n\r\n if (options.sort !== false) {\r\n keys.sort(options.sort);\r\n }\r\n\r\n return keys.map(key => {\r\n const value = object[key];\r\n\r\n if (value === undefined) {\r\n return '';\r\n }\r\n\r\n if (value === null) {\r\n return encode(key, options);\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value\r\n .reduce(formatter(key), [])\r\n .join('&');\r\n }\r\n\r\n return encode(key, options) + '=' + encode(value, options);\r\n }).filter(x => x.length > 0).join('&');\r\n};\r\n\r\nexport const parseUrl = (input: any, options: any) => {\r\n const hashStart = input.indexOf('#');\r\n if (hashStart !== -1) {\r\n input = input.slice(0, hashStart);\r\n }\r\n\r\n return {\r\n url: input.split('?')[0] || '',\r\n query: parse(extract(input), options)\r\n };\r\n};","import React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport auth from 'utility/auth';\r\nimport * as queryStringUtil from 'utility/query_string_util';\r\nimport routes from '../../router/routes';\r\n\r\ninterface Props extends RouteComponentProps {\r\n\r\n}\r\n\r\ninterface State {\r\n redirectUrl: string;\r\n showError: boolean;\r\n loginComplete: boolean\r\n}\r\n\r\nclass ExternalLogin extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n var externalToken = queryStringUtil.getExternalToken();\r\n var redirectUri = queryStringUtil.getRedirectUrl();\r\n\r\n auth.initiateExternalLogin(externalToken, redirectUri).then(() => {\r\n this.setState({ loginComplete: true });\r\n }, () => {\r\n this.setState({ showError: true });\r\n });\r\n\r\n this.state = {\r\n loginComplete: false,\r\n showError: false,\r\n redirectUrl: routes.loginComplete.path\r\n }\r\n }\r\n\r\n\r\n render() {\r\n if (this.state.showError) {\r\n return (\r\n
\r\n
Authorization error while loading Enrollment
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n <>\r\n
\r\n );\r\n\r\n }\r\n}\r\n\r\nexport default ExternalLogin;","class CanvasUtil {\r\n private sfdcSdk: any;\r\n constructor() {\r\n var _win: any = window;\r\n this.sfdcSdk = _win.Sfdc;\r\n }\r\n\r\n private canvasTokenStroageKey = \"oe.bm-canvas-token\";\r\n get canvasToken() {\r\n const encodedJWT = sessionStorage.getItem(this.canvasTokenStroageKey);\r\n return encodedJWT || '';\r\n }\r\n\r\n set canvasToken(encodedJWT: string) {\r\n sessionStorage.setItem(this.canvasTokenStroageKey, encodedJWT);\r\n }\r\n /*\r\n Returns true if application is running under canvas\r\n */\r\n isCanvas(): boolean {\r\n var isInCanvas = window !== window.top;\r\n return isInCanvas;\r\n }\r\n\r\n\r\n getCanvasSignedRequest(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.sfdcSdk.canvas.client.refreshSignedRequest((data: any) => {\r\n if (data.status === 200) {\r\n var signedRequest = data.payload.response;\r\n resolve(signedRequest);\r\n } else {\r\n reject(new Error('Error occurred while getting canvas token'));\r\n }\r\n });\r\n });\r\n }\r\n\r\n private getCanvasToken() {\r\n return new Promise((resolve, reject) => {\r\n if (this.canvasToken !== '') {\r\n resolve(this.parseCanvasToken(this.canvasToken));\r\n return;\r\n }\r\n\r\n this.getCanvasSignedRequest().then((signedRequest:any)=>{\r\n this.canvasToken = signedRequest;\r\n var token = this.parseCanvasToken(signedRequest);\r\n resolve(token);\r\n },(error)=>{\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n private parseCanvasToken(signedRequest: string) {\r\n var part = signedRequest.split('.')[1];\r\n var decodedToken = this.sfdcSdk.canvas.decode(part);\r\n var obj = JSON.parse(decodedToken);\r\n return obj;\r\n }\r\n\r\n\r\n redirectToLogin(enrollmentId: string, userType: string) {\r\n var url = process.env.REACT_APP_API_ENDPOINT as string;\r\n url = url.replace('api/', '');\r\n url = url.replace('api', '');\r\n url = `${url}/canvas/ExternalLogin?enrollment_Id=${enrollmentId}&user_type=${userType}&redirect_uri=`\r\n return this.getCanvasToken().then((token: any) => {\r\n this.redirectToUrl(url, true, token.client.targetOrigin);\r\n });\r\n }\r\n\r\n redirectToAWSClientCenter(enrollmentId: string) {\r\n const args = JSON.stringify({ oeRedirectToClients: enrollmentId });\r\n return this.getCanvasToken().then((token: any) => {\r\n window.top.postMessage(args, token.client.targetOrigin);\r\n });\r\n }\r\n\r\n private redirectToUrl(url: string, appendRedirectLocation: boolean, targetOrigin: string) {\r\n const args = JSON.stringify({ appendRedirectLocation: appendRedirectLocation, oeRedirectUrl: url });\r\n window.top.postMessage(args, targetOrigin);\r\n }\r\n\r\n scrollToTop() {\r\n const args = JSON.stringify({ oeScrollToTop: true });\r\n return this.getCanvasToken().then((token: any) => {\r\n window.top.postMessage(args, token.client.targetOrigin);\r\n });\r\n }\r\n\r\n scrollToCenter() {\r\n const sizes = this.sfdcSdk.canvas.client.size();\r\n //todo need to come up with way to calculate offset\r\n const offSet = 300;\r\n const top = (sizes.heights.contentHeight / 2) - offSet;\r\n const args = JSON.stringify({ oeScrollToTop: true, top: top });\r\n return this.getCanvasToken().then((token: any) => {\r\n window.top.postMessage(args, token.client.targetOrigin);\r\n });\r\n }\r\n\r\n private lastAdjustedHeight = 0;\r\n /*\r\n * Auto adjust height\r\n */\r\n autoAdjustHeight() {\r\n if (!this.isCanvas()) {\r\n return;\r\n }\r\n\r\n setInterval(() => {\r\n const rootElement: any = document.getElementById('root');\r\n if (rootElement == null) {\r\n return;\r\n }\r\n\r\n const rootElementHeight = rootElement.clientHeight + 100;\r\n const minRequiredHeight = 800;\r\n const setHeight = Math.max(rootElementHeight, minRequiredHeight);\r\n\r\n if (setHeight === this.lastAdjustedHeight) {\r\n return;\r\n }\r\n\r\n return this.getCanvasToken().then((token: any) => {\r\n var heightInPx = `${setHeight}px`;\r\n this.sfdcSdk.canvas.client.resize(token.client, { 'height': heightInPx });\r\n this.lastAdjustedHeight = setHeight;\r\n });\r\n }, 200);\r\n }\r\n}\r\n\r\nconst canvasUtil = new CanvasUtil();\r\nexport default canvasUtil;","import React from 'react';\r\nimport { RouteComponentProps, Redirect } from 'react-router';\r\nimport auth from 'utility/auth';\r\nimport routes from 'router/routes';\r\nimport canvasUtil from 'utility/canvas_util';\r\n\r\ninterface Props extends RouteComponentProps {\r\n}\r\n\r\ninterface State {\r\n}\r\n\r\nclass ExternalLoginComplete extends React.PureComponent {\r\n private loginStates = {\r\n loginStart: 4,\r\n loginRedirect: 1,\r\n loginComplete: 2,\r\n error: 3,\r\n }\r\n\r\n private currentLoginState = this.loginStates.loginStart;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n auth.handleIdpResponse();\r\n var isLoggedIn = auth.isLoggedIn();\r\n if (isLoggedIn) {\r\n this.currentLoginState = this.loginStates.loginComplete;\r\n if (auth.externalLoginRedirectUri !== \"\") {\r\n this.currentLoginState = this.loginStates.loginRedirect;\r\n const urlToRedirect = auth.externalLoginRedirectUri;\r\n auth.externalLoginRedirectUri = \"\";\r\n window.location.replace(urlToRedirect)\r\n }\r\n return;\r\n }\r\n\r\n this.startCanvasLoginProcess(props);\r\n }\r\n\r\n startCanvasLoginProcess(props: Props){\r\n const { match } = props;\r\n const enrollmentIdVarName = routes.externalLoginCheck.params!.enrollmentId!.replace(':', '');\r\n const userTypeVarName = routes.externalLoginCheck.params!.userType!.replace(':', '');\r\n const enrollmentId = match.params[enrollmentIdVarName];\r\n const userType = match.params[userTypeVarName];\r\n canvasUtil.redirectToLogin(enrollmentId, userType);\r\n }\r\n\r\n \r\n render() {\r\n if (this.currentLoginState === this.loginStates.error) {\r\n return (\r\n
\r\n

Error occurred while authorizing Enrollment access

\r\n
\r\n );\r\n }\r\n\r\n if (this.currentLoginState === this.loginStates.loginRedirect) {\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (this.currentLoginState === this.loginStates.loginComplete) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n
Loading Enrollment..
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ExternalLoginComplete;\r\n","import React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport auth from 'utility/auth';\r\nimport routes from 'router/routes';\r\n\r\ninterface Props extends RouteComponentProps {\r\n}\r\n\r\ninterface State {\r\n}\r\n\r\nclass ExternalLoginCompleteUsingToken extends React.PureComponent {\r\n private loginStates = {\r\n loginStart: 4,\r\n loginRedirect: 1,\r\n loginComplete: 2,\r\n error: 3,\r\n }\r\n\r\n private currentLoginState = this.loginStates.loginStart;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n auth.clearSessionStorage();\r\n\r\n var hash = window.location.hash;\r\n if (hash === \"\") {\r\n this.currentLoginState = this.loginStates.error;\r\n } else {\r\n auth.jwt = hash.substring(1);\r\n auth.isCanvasLogin = true;\r\n const url = window.location.origin + routes.loginComplete.path;\r\n window.location.replace(url);\r\n }\r\n }\r\n\r\n\r\n\r\n render() {\r\n if (this.currentLoginState === this.loginStates.error) {\r\n return (\r\n
\r\n

Error occurred while authorizing Enrollment access

\r\n
\r\n );\r\n }\r\n\r\n\r\n return (\r\n
\r\n
Loading Enrollment..
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ExternalLoginCompleteUsingToken;\r\n","const palette: { [key: string]: { [key: string]: string } } = {\r\n grey: {\r\n surface: '#fafafa',\r\n light: '#ffffff',\r\n medium: '#f8f8f8',\r\n dark: '#f0f0f0',\r\n snackbar: \"434343\",\r\n black: \"#333333\",\r\n tableHeader: \"#9DA6AB\",\r\n border: 'rgba(0, 0, 0, 0.2)',\r\n lightText: 'rgba(0,0,0,0.38)',\r\n text: 'rgba(0, 0, 0, 0.54)',\r\n midText: 'rgba(0, 0, 0, 0.68)',\r\n darkText: 'rgba(0,0,0,0.87)',\r\n selectedTab: 'rgba(234,233,233,0.57)',\r\n darkGrey: '#666666',\r\n label: 'rgba(74,74,74,1)'\r\n },\r\n blue: {\r\n primary: '#007bc3',\r\n 900: '#005ba1',\r\n 700: '#008cd7',\r\n 500: '#00aefa',\r\n 300: '#4fc7fc',\r\n 100: '#ebf6fc',\r\n submit: '#0286ca',\r\n text: '#536773',\r\n link: '#2692D7',\r\n light: '#ebf6fc',\r\n lighter: '#127DC1'\r\n },\r\n green: {\r\n primary: '#94c947',\r\n notification: \"#337E38\",\r\n light: '#95C750',\r\n 900: '#386f1a',\r\n 700: '#70a535',\r\n 500: '#94c947',\r\n 300: '#b5da80'\r\n },\r\n orange: {\r\n primary: '#f5a623',\r\n warning: '#E0A61A',\r\n light: '#fff8d6'\r\n },\r\n red: {\r\n primary: '#d31930',\r\n light: '#A8244F'\r\n },\r\n gold: {\r\n primary: '#d4af37'\r\n },\r\n silver: {\r\n primary: '#aaaaaa'\r\n },\r\n bronze: {\r\n primary: '#b67100'\r\n },\r\n platinum: {\r\n primary: '#eceff5',\r\n text: '#536773'\r\n }\r\n};\r\n\r\nexport default palette;","import Dialog, { DialogProps } from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport React from 'react';\r\nimport canvasUtil from 'utility/canvas_util';\r\nimport palette from 'utility/palette';\r\n\r\ninterface Props extends Pick, StyledComponentProps {\r\n title?: string;\r\n subtext?: string;\r\n closeDisabled?: boolean;\r\n}\r\n\r\ninterface State {\r\n}\r\n\r\nclass BaseDialog extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n };\r\n }\r\n\r\n static getDerivedStateFromProps(props: Props, state: State) {\r\n if (canvasUtil.isCanvas()) {\r\n if (props.open) {\r\n canvasUtil.scrollToCenter();\r\n }\r\n }\r\n return state;\r\n }\r\n\r\n render() {\r\n const { classes = {}, open, title, onClose, children, closeDisabled, subtext, ...dialogProps } = this.props;\r\n return (\r\n \r\n {title &&\r\n <>\r\n \r\n {title}\r\n \r\n {subtext &&\r\n \r\n {subtext}\r\n \r\n }\r\n {!closeDisabled &&\r\n onClose && onClose(e, 'backdropClick')}>\r\n \r\n }\r\n \r\n }\r\n {children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n container: {},\r\n title: {\r\n color: palette.grey.midText\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: 12,\r\n top: 12,\r\n color: palette.grey[500],\r\n marginTop: -12,\r\n marginRight: -12\r\n },\r\n noBottomPadding: {\r\n paddingBottom: 0,\r\n minHeight: 30\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(BaseDialog);","import { CSSProperties } from \"@material-ui/core/styles/withStyles\";\r\nimport { createStyles, makeStyles } from \"@material-ui/styles\";\r\nimport palette from 'utility/palette';\r\nimport { textAlign } from '@material-ui/system';\r\n\r\nconst baseStyles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15,\r\n fontFamily: 'Roboto'\r\n }\r\n\r\n}\r\n\r\nexport const classes = makeStyles(createStyles({\r\n tableTitle: {\r\n fontSize: '24px',\r\n fontWeight: 500\r\n }\r\n}));\r\n\r\nexport const styles: { [key: string]: React.CSSProperties } = {\r\n bottomMarginText: {\r\n margin: \"0 0 12px 0\",\r\n fontSize: 16,\r\n color: palette.grey.darkText\r\n },\r\n carrierCol: {\r\n position: 'relative'\r\n },\r\n carrierSpinner: {\r\n position: 'absolute',\r\n top: '35%',\r\n left: '45%'\r\n },\r\n centerWithinAnother: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n },\r\n centerText: {\r\n textAlign: 'center'\r\n },\r\n companyPaperHeader: {\r\n color: palette.grey.lightText,\r\n fontSize: 24\r\n },\r\n endAdornment: {\r\n paddingRight: 11\r\n },\r\n existingCoverageHeader: {\r\n color: palette.grey.text,\r\n fontSize: 20,\r\n fontWeight: 500,\r\n },\r\n formControlRightMarginClear: {\r\n marginRight: 0\r\n },\r\n guidedEnrollmentButtonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n guidedEnrollmentButtonMargin: {\r\n margin: 4\r\n },\r\n guiedEnrollmentButtonMarginMobile: {\r\n margin: '15px 4px'\r\n },\r\n guidedEnrollmentCancelButtonMobile: {\r\n margin: '15px 4px',\r\n paddingRight: 15\r\n },\r\n header: {\r\n color: palette.grey.text,\r\n },\r\n headerText: {\r\n fontSize: 24,\r\n margin: '15px 0'\r\n },\r\n helpIcon: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n marginLeft: 10\r\n },\r\n innerPaper: {\r\n position: 'relative',\r\n marginTop: 15,\r\n fontFamily: 'Roboto'\r\n },\r\n inputAdornment: {\r\n width: 'calc(100% - 14px)'\r\n },\r\n labelText: {\r\n fontSize: 16,\r\n padding: '4px 12px',\r\n margin: 0\r\n },\r\n legendText: {\r\n margin: '10px 0',\r\n fontFamily: 'Roboto'\r\n },\r\n orange: {\r\n color: palette.orange.primary\r\n },\r\n paper: {\r\n ...baseStyles.paper\r\n },\r\n paperLargerMargin: {\r\n ...baseStyles.paper,\r\n marginTop: 24\r\n },\r\n paperBottomMargin: {\r\n ...baseStyles.paper,\r\n marginBottom: 15,\r\n },\r\n priorHeader: {\r\n color: palette.grey.lightText,\r\n fontSize: 24,\r\n margin: '15px 0'\r\n },\r\n removeDependentButton: {\r\n position: 'absolute',\r\n top: 5,\r\n right: 20\r\n },\r\n relative: {\r\n position: 'relative'\r\n },\r\n rightIndent: {\r\n padding: '4px 20px'\r\n },\r\n title: {\r\n color: palette.grey.lightText\r\n },\r\n radioLabel: {\r\n color: palette.grey.text,\r\n padding: 0,\r\n fontSize: \"1rem\",\r\n fontFamily: \"Roboto\",\r\n },\r\n radioGroup: {\r\n marginTop: -8,\r\n marginBottom: -8,\r\n paddingLeft: 23\r\n },\r\n radioInRow: {\r\n display: 'inline-block'\r\n },\r\n sectionHeader: {\r\n color: palette.grey.text,\r\n fontSize: 24\r\n },\r\n sectionSubheader: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n },\r\n subheaderText: {\r\n fontSize: 14\r\n },\r\n subHeading: {\r\n fontSize: 20,\r\n fontWeight: 500,\r\n color: palette.grey.midText,\r\n },\r\n subText: {\r\n color: palette.grey.text,\r\n fontSize: 16,\r\n margin: '12px 0'\r\n },\r\n tooltipHeaderText: {\r\n fontSize: 24,\r\n margin: '15px 0',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n tooltipRightMargin: {\r\n marginRight: 10\r\n },\r\n vertCenter: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary,\r\n fontSize: 35,\r\n },\r\n warningIconSmall: {\r\n color: palette.orange.primary,\r\n fontSize: 20,\r\n },\r\n warningText: {\r\n color: palette.grey.text,\r\n fontStyle: 'italic'\r\n },\r\n width100: {\r\n width: '100%'\r\n },\r\n warningRenewalFirstText: {\r\n color: palette.grey.text,\r\n fontSize: 14,\r\n fontFamily: 'Roboto',\r\n },\r\n warningRenewalSecondText: {\r\n fontSize: 16,\r\n marginTop: '0.5em'\r\n }\r\n};\r\n\r\nexport const gridRowStyles: { [key: string]: CSSProperties } = {\r\n capitalize: {\r\n textTransform: 'capitalize'\r\n },\r\n denseCellLable: {\r\n padding: 0,\r\n paddingLeft: '5px'\r\n },\r\n hover: {\r\n backgroundColor: palette.grey.surface,\r\n cursor: 'pointer',\r\n },\r\n maxWidth: {\r\n maxWidth: '300px'\r\n },\r\n maxWith150: {\r\n maxWidth: '150px'\r\n },\r\n minWidth20: {\r\n minWidth: '200px'\r\n },\r\n name: {\r\n color: palette.blue.primary\r\n },\r\n text: {\r\n color: palette.grey.midText\r\n },\r\n};\r\n\r\nexport const globalStyles: { [key: string]: CSSProperties } = {\r\n clearRightMargin: {\r\n rightMargin: 0,\r\n },\r\n footer: {\r\n height: '48px',\r\n color: 'rgba(0,0,0,0.6)',\r\n fontFamily: 'Roboto',\r\n fontSize: '12px',\r\n letterSpacing: '0.4px',\r\n lineHeight: '16px',\r\n textAlign: 'center',\r\n marginTop: '20px'\r\n },\r\n footerLink: {\r\n color: 'rgba(0,0,0,0.6)',\r\n textTransform: 'none'\r\n },\r\n};\r\n\r\nexport const PlanSelectionSummaryStyles: { [key: string]: React.CSSProperties } = {\r\n agreementText: {\r\n color: palette.grey.text,\r\n marginLeft: 10\r\n },\r\n agreementGrid: {\r\n display: \"flex\",\r\n justifyContent: \"left\",\r\n alignItems: \"center\"\r\n },\r\n benefitCostHeader: {\r\n marginTop: 20\r\n },\r\n card: {\r\n backgroundColor: palette.grey.medium,\r\n margin: '5px 0',\r\n color: palette.grey.text,\r\n paddingTop: 12,\r\n paddingBottom: 12,\r\n fontFamily: 'Roboto'\r\n },\r\n cardHeader: {\r\n paddingBottom: 0,\r\n marginBottom: '.35em'\r\n },\r\n cardContent: {\r\n paddingTop: 0\r\n },\r\n checkCircleIcon: {\r\n fontSize: 36,\r\n color: palette.green.primary,\r\n },\r\n costGridText: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start'\r\n },\r\n consentBorder: {\r\n paddingLeft: 10,\r\n paddingTop: 10,\r\n paddingBottom: 10\r\n },\r\n consentText: {\r\n color: palette.grey.text,\r\n fontSize: 16\r\n },\r\n cursiveContainer: {\r\n marginTop: 25,\r\n borderBottom: \"1px solid black\"\r\n },\r\n disabledConsentText: {\r\n color: palette.grey.border,\r\n fontSize: 16\r\n },\r\n divider: {\r\n marginTop: 15\r\n },\r\n employeeCost: {\r\n fontSize: 48,\r\n fontFamily: 'Roboto',\r\n color: palette.grey.text,\r\n marginBottom: -14\r\n },\r\n employeeReminderText: {\r\n fontStyle: 'italic',\r\n color: palette.grey.text,\r\n fontSize: 16\r\n },\r\n employerCost: {\r\n fontSize: 26,\r\n fontFamily: 'Roboto',\r\n color: palette.grey.text,\r\n marginBottom: -10,\r\n },\r\n emptySignature: {\r\n display: \"block\",\r\n height: \"85px\"\r\n },\r\n error: {\r\n padding: '0',\r\n fontSize: '1rem',\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\r\n\r\n lineHeight: '1',\r\n letterSpacing: '0.00938em',\r\n color: '#d31930'\r\n },\r\n header: {\r\n marginTop: 25,\r\n },\r\n lowerBox: {\r\n marginTop: 20\r\n },\r\n messageCard: {\r\n border: 'none',\r\n marginBottom: 40\r\n },\r\n terms: {\r\n backgroundColor: \"white\",\r\n color: palette.grey.darkText\r\n },\r\n text: {\r\n color: palette.grey.text\r\n },\r\n radioGroup: {\r\n marginTop: -8,\r\n marginBottom: -8,\r\n paddingLeft: 23\r\n },\r\n reopenIcon: {\r\n fontSize: 36,\r\n color: palette.blue.primary,\r\n },\r\n reminderBorder: {\r\n height: 109,\r\n width: 758,\r\n backgroundColor: palette.grey.light,\r\n borderRadius: 10,\r\n paddingLeft: 10,\r\n paddingTop: 10,\r\n paddingBottom: 10\r\n },\r\n saveDisclaimer: {\r\n fontStyle: 'italic',\r\n textAlign: 'right',\r\n fontSize: 15\r\n },\r\n signature: {\r\n textAlign: \"center\",\r\n fontFamily: \"Dancing Script, cursive\",\r\n fontSize: 34\r\n },\r\n statusText: {\r\n paddingLeft: 10\r\n },\r\n submitEnrollment: {\r\n backgroundColor: palette.blue.submit\r\n },\r\n submitEnrollmentText: {\r\n color: palette.grey.text,\r\n fontSize: 16\r\n },\r\n submitHeader: {\r\n marginBottom: 12,\r\n marginTop: 12,\r\n color: palette.grey.text\r\n },\r\n timeIcon: {\r\n fontSize: 65,\r\n color: palette.grey.lightText,\r\n },\r\n viewAgreement: {\r\n backgroundColor: \"white\",\r\n color: palette.blue.primary,\r\n width: \"100%\",\r\n height: 45,\r\n marginTop: 24\r\n },\r\n waivedElectionsHeader: {\r\n marginTop: 35\r\n },\r\n warningGrid: {\r\n marginTop: 20\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n verticalAlign: 'middle'\r\n },\r\n messageIcon: {\r\n fontSize: 36,\r\n color: palette.orange.primary,\r\n },\r\n missingDataWarning: {\r\n fontSize: 16,\r\n color: palette.orange.warning,\r\n display: 'inline-flex',\r\n alignItems: 'center'\r\n },\r\n missingDataError: {\r\n fontSize: 14,\r\n color: palette.red.primary,\r\n display: 'inline-flex'\r\n },\r\n messageText: {\r\n fontSize: 14,\r\n color: palette.grey.darkText,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n textAlign: \"center\"\r\n },\r\n warningIcon: {\r\n fontSize: 18,\r\n marginRight: 4\r\n }\r\n}\r\n\r\nexport const PlanReviewCardStyles: { [key: string]: React.CSSProperties } = {\r\n button: {\r\n padding: 0,\r\n },\r\n cardHeader: {\r\n backgroundColor: palette.blue.primary,\r\n },\r\n cardHeaderWaived: {\r\n backgroundColor: palette.grey.lightText,\r\n },\r\n centerText: {\r\n textAlign: 'center'\r\n },\r\n editButton: {\r\n position: 'absolute',\r\n top: -5,\r\n right: -20,\r\n display: 'block',\r\n textAlign: 'center',\r\n padding: 0,\r\n lineHeight: 1.2\r\n },\r\n editIcon: {\r\n color: palette.grey.light,\r\n fontSize: 25\r\n },\r\n editText: {\r\n color: palette.grey.light,\r\n fontSize: 12\r\n },\r\n employeeCost: {\r\n fontWeight: 700,\r\n color: palette.grey.text\r\n },\r\n effectiveDate: {\r\n color: 'rgba(0,0,0,0.6)',\r\n fontFamily: 'Roboto',\r\n fontSize: '12px',\r\n fontWeight: 500,\r\n letterSpacing: '2px',\r\n lineHeight: '16px',\r\n marginBottom: '1em'\r\n },\r\n warningText: {\r\n color: 'rgba(0,0,0,0.6)',\r\n fontFamily: 'Roboto',\r\n fontSize: '12px',\r\n fontWeight: 500,\r\n lineHeight: '16px',\r\n marginBottom: '1em'\r\n },\r\n greyContent: {\r\n padding: '18px 40px 3px 40px',\r\n color: palette.grey.text,\r\n fontSize: 12,\r\n backgroundColor: palette.grey.medium\r\n },\r\n greyContentBoth: {\r\n padding: '18px 0px 3px 0px',\r\n color: palette.grey.text,\r\n fontSize: 12,\r\n backgroundColor: palette.grey.medium\r\n },\r\n headerContainer: { position: 'relative' },\r\n headerContent: {\r\n color: palette.grey.light\r\n },\r\n listIcon: {\r\n margin: 0\r\n },\r\n noRate: {\r\n margin: '20px 0',\r\n fontWeight: 700,\r\n fontSize: 28\r\n },\r\n paymentSummary: {\r\n borderTop: `1px solid ${palette.grey.border}`\r\n },\r\n planDisplayName: {\r\n color: 'rgba(0,0,0,0.87)',\r\n fontFamily: 'Roboto',\r\n fontSize: '20px',\r\n fontWeight: 500,\r\n letterSpacing: '0.25px',\r\n lineHeight: '24px',\r\n wordBreak: 'break-word',\r\n minHeight: '48px'\r\n },\r\n\r\n text: {\r\n color: palette.grey.text\r\n },\r\n transparentText: {\r\n color: 'transparent'\r\n },\r\n wrapper: {\r\n margin: 5\r\n },\r\n\r\n}\r\n\r\nexport const workFlowStyles: { [key: string]: React.CSSProperties } = {\r\n ...styles,\r\n marginTop5: {\r\n marginTop: 5\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 20,\r\n fontFamily: 'Roboto',\r\n },\r\n title: {\r\n color: palette.grey.text,\r\n fontSize: 24,\r\n margin: '15px 0'\r\n },\r\n subTitle: {\r\n color: palette.grey.text,\r\n fontSize: 14\r\n },\r\n navButtonsContainer: {\r\n textAlign: 'right',\r\n marginTop: 24\r\n },\r\n navButton: {\r\n textTransform: 'uppercase'\r\n },\r\n warning: {\r\n fontStyle: 'italic',\r\n fontSize: 15\r\n },\r\n tableHeader: {\r\n fontSize: 14,\r\n color: palette.grey.tableHeader\r\n },\r\n errorText: {\r\n fontSize: 14,\r\n color: palette.grey.midText\r\n }\r\n}","import memoizeOne from \"memoize-one\";\r\nimport { Company } from \"redux/reducers\";\r\n\r\nexport const companySettings = memoizeOne((company: Company) => {\r\n return company.settings || {\r\n viewEmployeeCost: false,\r\n viewEmployerCost: false\r\n };\r\n});","import memoizeOne from 'memoize-one';\r\nimport { AcknowledgmentDocument, Document, Election, ElectionDependent, Employee, EmployeeReducerState, Plan, Dependent } from 'redux/reducers';\r\nimport http from './http';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from './lookup_utils';\r\n\r\nexport const CARRIER_RENEWAL = {\r\n true: \"true\",\r\n notapplicable: \"na\",\r\n notsure: \"notsure\",\r\n}\r\n\r\nexport const DROPPED_ENROLLEE = {\r\n true: \"true\",\r\n false: \"false\",\r\n notsure: \"notsure\",\r\n}\r\n\r\nexport const PLAN_RENEWAL = {\r\n true: \"true\",\r\n false: \"false\",\r\n notsure: \"notsure\",\r\n}\r\n\r\nexport const CONFIGURATION_TYPE_IDS = {\r\n disabled: 1,\r\n mMedicare: 2,\r\n priorCoverage: 3,\r\n priorCoverageDental: 4,\r\n priorCoverageMedical: 5,\r\n tobacco: 6,\r\n tobacco12Months: 7,\r\n priorCoverageEmblemHealtj: 8,\r\n priorCoverageFlorConfigurationTypeIdaBlue: 9,\r\n student: 10,\r\n tobaccoOver21: 11,\r\n priorCoverageVision: 12,\r\n priorCoverageCollectDependentsDental: 13,\r\n priorCoverageCollectDependentsMedical: 14,\r\n priorCoverageCarrierInfo: 15,\r\n priorCoveragePolicyHolder: 16,\r\n priorCoverageMedicalRX: 17,\r\n priorCoverageEmployer: 18,\r\n HeightAndWeightQuestions: 19,\r\n priorCoverageCarefirstVADC: 20,\r\n spouseSignatureRequired: 21,\r\n preventCustomPlan: 22,\r\n beneficiaries: 23,\r\n subscriberMemberID: 24,\r\n basicLifePreviousAmount: 25,\r\n showKnockoutQuestions: 26,\r\n maxAge70: 27,\r\n americanPublicLifeBrochure: 28,\r\n groupSubmissionInstructions: 29,\r\n SignatureRequiredCityState: 30,\r\n minMaxDefaultAge: 31,\r\n preventSubmissionOnBehalfOfEmployee: 32,\r\n RiderOptionWarning: 33,\r\n adminContactRequired: 34,\r\n existingMember: 35,\r\n ratesAndBenefitsReadOnly: 36,\r\n coverageApprovalWarning: 37,\r\n sameContributionWarning: 38,\r\n reviewCardWarning: 39,\r\n madienName: 40,\r\n marriageDate: 41,\r\n childLastNameDifferentthanEmployee: 42,\r\n displayOnWaive: 43,\r\n waiverFormReminder: 44,\r\n SubmitEnrollmentWaiverFormWitnessSignature: 45,\r\n RenewalInfoPerLOC: 46,\r\n RenewalInfoChanges: 47,\r\n RenewalInfoWaive: 48,\r\n EffectiveDateLessThan10Days: 49,\r\n UseD2CCarrierJSON: 50,\r\n DisplayWaiveAll: 51,\r\n maxAge80: 53,\r\n minAge18: 52,\r\n mismatchSicCodeWarning: 54,\r\n tobaccoExtraRates: 55,\r\n AllowInEligibleEmployees: 56,\r\n AdobeSignatureAdmin: 57,\r\n IgnoreBenefitAmountForKnockout: 58,\r\n CheckDependentTobaccoUse: 59,\r\n TobaccoUseDropDown: 61,\r\n EffectiveDateLessThan14Days: 62,\r\n D2CCompanyInformationCompanyEstablishmentDate: 100,\r\n D2CCompanyInformationCompanyType: 101,\r\n D2CSignatureRequired: 102,\r\n D2CDentalPriorCoverageFields: 103,\r\n D2CAgentsOfRecord: 104,\r\n D2CValidateEnrollmentRequired: 105,\r\n D2CBenefitsAdministratorFirstName: 130,\r\n D2CBenefitsAdministratorLastName: 131,\r\n D2CBenefitsAdministratorEmail: 132,\r\n D2CCompanyAddressEmail: 141,\r\n D2CCompanyAddressPhone: 142,\r\n D2CCoverageEligibilityStartOfCoverage: 151,\r\n D2CCoverageEligibilityIneligiblePeriodLength: 152,\r\n D2CCoverageEligibilityDomesticPartnershipEligible: 153,\r\n D2CCoverageEligibilityDomesticPartnerChildEligible: 154,\r\n D2CCoverageEligibilityStandAloneProducts: 155,\r\n D2CCoverageEligibilityTurnoverRatio: 156,\r\n D2CCoverageEligibilityCobraRequired: 157,\r\n D2CCoverageEligibilityHasIncapacitatedMember: 158,\r\n D2CCoverageEligibilityHasDisabledDependents: 159,\r\n D2CBrokerInformationFirstName: 171,\r\n D2CBrokerInformationLastName: 172,\r\n D2CBrokerInformationNPN: 173,\r\n D2CBinderInformationTotalInitialPayment: 181,\r\n D2CBinderInformationNameonAccount: 182,\r\n D2CBinderInformationCapturePaymentDetails: 183,\r\n D2CEnrollmentInformationTotalEmployeeCountEnabled: 182\r\n};\r\n\r\nexport const DEPENDENT_TYPE_IDS = {\r\n DomesticPartner: 153,\r\n Spouse: 154,\r\n Child: 273,\r\n StepChild: 274,\r\n FosterChild: 275,\r\n Other: 276,\r\n AdoptedChild: 307,\r\n ChildInSuitForAdoption: 308,\r\n Son: 603,\r\n Daughter: 604,\r\n StepSon: 605,\r\n StepDaughter: 606,\r\n GrandSon: 609,\r\n GrandDaughter: 608\r\n};\r\n\r\nconst _getIdsForEmployeesWithoutSalary = memoizeOne((employeeState: EmployeeReducerState) => {\r\n const employees = employeeState.list.filter(emp => !emp.isEmployeeWaiving && !emp.isInEligible && emp.isSalaryMissing);\r\n return employees.map(e => e.id);\r\n});\r\n\r\n// Validate SSN\r\nexport function validateEmployeeSSN(companyId: string, enrollmentId: string, id: string, ssn: string) {\r\n return async () => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/validate/employee/${id}/${ssn}`);\r\n return true;\r\n } catch (ex) {\r\n return false;\r\n }\r\n };\r\n}\r\n\r\nexport const getIdsForEmployeesWithoutSalary = (employeeState: EmployeeReducerState) => {\r\n return _getIdsForEmployeesWithoutSalary(employeeState);\r\n};\r\n\r\nexport type EnrolleeconfigurationTypes = { [key: string]: Set };\r\n\r\nexport const getEnrolleeConfigurationTypes = memoizeOne((plans: Plan[], elections: Election[], employeeId: string): EnrolleeconfigurationTypes => {\r\n const enrolleeConfigurationTypes: EnrolleeconfigurationTypes = {};\r\n elections.forEach((election: Election) => {\r\n const selectedPlan = plans.find(plan => plan.id === election.planId);\r\n if (!selectedPlan) return;\r\n const selectedIds = selectedPlan.configurationTypeIds;\r\n if (election.isEmployeeIncluded) {\r\n let enrolleeSet = enrolleeConfigurationTypes[employeeId] || new Set();\r\n selectedIds.forEach(id => {\r\n enrolleeSet.add(id);\r\n })\r\n enrolleeConfigurationTypes[employeeId] = enrolleeSet;\r\n }\r\n if (election.dependents.length > 0) {\r\n election.dependents.forEach((dependent) => {\r\n let enrolleeSet = enrolleeConfigurationTypes[dependent.id] || new Set();\r\n selectedIds.forEach(id => {\r\n enrolleeSet.add(id);\r\n })\r\n enrolleeConfigurationTypes[dependent.id] = enrolleeSet;\r\n })\r\n }\r\n })\r\n return enrolleeConfigurationTypes;\r\n});\r\n\r\nexport const getStatusCounts = memoizeOne(function (employees: Employee[]) {\r\n const statuses = {\r\n completed: 0,\r\n inProgress: 0,\r\n notStarted: 0,\r\n submitted: 0,\r\n total: 0\r\n };\r\n employees.forEach(emp => {\r\n statuses.total += 1;\r\n if (emp.electionStatusId === getLookupId('COMPLETED', LOOKUP_TYPE_IDS.electionStatus) || emp.electionStatusId === getLookupId('RENEWALQUESTIONSPENDING', LOOKUP_TYPE_IDS.electionStatus))\r\n statuses.completed += 1;\r\n else if (emp.electionStatusId === getLookupId('NOTSTARTED', LOOKUP_TYPE_IDS.electionStatus))\r\n statuses.notStarted += 1;\r\n else if (emp.electionStatusId === getLookupId('INPROGRESS', LOOKUP_TYPE_IDS.electionStatus) || emp.electionStatusId === getLookupId('SIGNATUREPENDING', LOOKUP_TYPE_IDS.electionStatus))\r\n statuses.inProgress += 1;\r\n else if (emp.electionStatusId === getLookupId('REOPENED', LOOKUP_TYPE_IDS.electionStatus))\r\n statuses.inProgress += 1;\r\n else if (emp.electionStatusId === getLookupId('SUBMITTED', LOOKUP_TYPE_IDS.electionStatus))\r\n statuses.submitted += 1;\r\n });\r\n return statuses\r\n});\r\n\r\nexport const getAcknowledgmentDocuments = memoizeOne((employee: Employee, plans: Plan[]) => {\r\n const acknowledgmentTypeId = getLookupId('ACKNOWLEDGMENTDOCUMENT', LOOKUP_TYPE_IDS.documentType);\r\n const plansInElection = employee.elections\r\n .map(election => plans.find(plan => plan.id === election.planId))\r\n .filter(plan => plan !== undefined)\r\n .map(plan => plan!);\r\n\r\n const carrierLineOfCoverage = plansInElection\r\n .map(plan => plan.carrierCode) // get the carrier code\r\n .filter((item, pos, list) => list.indexOf(item) === pos) // unique\r\n .map(carrierCode => ({ // map each carrier code to a list of locs from the plan collection\r\n carrierCode: carrierCode,\r\n linesOfCoverage: plansInElection\r\n .filter(p => p.carrierCode === carrierCode)\r\n .map(p => p.lineOfCoverageId)\r\n }))\r\n .reduce((map, cur) => { // return object with carriers and lines of coverage elected\r\n map[cur.carrierCode] = cur.linesOfCoverage\r\n return map;\r\n }, {} as { [carrierCode: string]: number[] })\r\n\r\n const planAcknowledgmentDocuments = plansInElection\r\n .map(plan => plan.documents)\r\n .reduce((docs, cur) => {\r\n return docs.concat(cur as Document[]);\r\n }, [] as Document[])\r\n .filter(document => document.typeId === acknowledgmentTypeId)\r\n .map(document => {\r\n return {\r\n acknowledgmentDocumentId: parseInt(document.id),\r\n documentTitle: document.title,\r\n documentUrl: document.storageUrl,\r\n description: document.description,\r\n fileId: document.fileId\r\n } as AcknowledgmentDocument\r\n });\r\n\r\n let uniqueDocs = Array.from(new Set(planAcknowledgmentDocuments.map(d => d.fileId))).map(id => planAcknowledgmentDocuments.find(d => d.fileId == id)) as AcknowledgmentDocument[];\r\n return uniqueDocs.sort((a, b) => {\r\n let aTitle = a!.documentTitle.toUpperCase()\r\n let bTitle = b!.documentTitle.toUpperCase()\r\n return aTitle.localeCompare(bTitle);\r\n });\r\n\r\n})\r\n\r\nexport const isChildLastNameDiff = memoizeOne((employeeLastName: string, childLastName: string) => {\r\n if (employeeLastName.toUpperCase() != childLastName.toUpperCase())\r\n return true;\r\n else\r\n return false;\r\n});\r\n\r\nexport const hasConfigurations = memoizeOne((configurationTypes: EnrolleeconfigurationTypes, configurationTypeSet: number[]) => {\r\n let hasConfigurations = false;\r\n\r\n for (let key in configurationTypes) {\r\n const found = configurationTypeSet.some(i => configurationTypes[key].has(i));\r\n if (found) {\r\n hasConfigurations = true;\r\n break\r\n }\r\n }\r\n return hasConfigurations;\r\n});\r\n\r\nexport const hasAdditionalInfo = memoizeOne((configurationTypes: EnrolleeconfigurationTypes, tobaccoUse: boolean,\r\n isSpouseFound: boolean, ischildFound: boolean, isAnychildLastNameDiff: boolean) => {\r\n const hasTobaccoConfigurations = hasConfigurations(configurationTypes, [6, 7, 11]);\r\n const showTobaccoInformation = tobaccoUse && hasTobaccoConfigurations;\r\n const hasSpouseConfiguration = isSpouseFound && hasConfigurations(configurationTypes, [40, 41]);\r\n const hasChildConfiguration = ischildFound && isAnychildLastNameDiff && hasConfigurations(configurationTypes, [42]);\r\n const hasOtherConfiguration = hasConfigurations(configurationTypes, [1, 19, 10, 2]);\r\n\r\n return showTobaccoInformation || hasSpouseConfiguration || hasChildConfiguration || hasOtherConfiguration;\r\n});\r\n\r\nexport const hasRenewalAdditionalInfo = memoizeOne((configurationTypes: EnrolleeconfigurationTypes) => {\r\n const hasRenewalConfiguration = hasConfigurations(configurationTypes, [47]);\r\n return hasRenewalConfiguration;\r\n});\r\n\r\nexport const hasPersonAdditionalInfo = memoizeOne((configurationTypeSet: Set, tobaccoUse: boolean,\r\n isSpouseFound: boolean, ischildFound: boolean, isAnychildLastNameDiff: boolean) => {\r\n const hasTobaccoConfigurations = ([6, 7, 11].some(i => configurationTypeSet.has(i)));\r\n const showTobaccoInformation = tobaccoUse && hasTobaccoConfigurations;\r\n const hasSpouseConfiguration = isSpouseFound && ([40, 41].some(i => configurationTypeSet.has(i)));\r\n const hasChildConfiguration = ischildFound && isAnychildLastNameDiff && ([42].some(i => configurationTypeSet.has(i)));\r\n const hasOtherConfiguration = ([1, 19, 10, 2].some(i => configurationTypeSet.has(i)));\r\n\r\n return showTobaccoInformation || hasSpouseConfiguration || hasChildConfiguration || hasOtherConfiguration;\r\n});\r\n\r\nexport const getEnrollees = memoizeOne((employee: Employee) => {\r\n let enrollees: ElectionDependent[] = [];\r\n employee.elections.forEach(election => {\r\n enrollees.push(...election.dependents.filter(d => d.isWaived !== true));\r\n });\r\n return enrollees;\r\n});\r\n\r\nexport const enrollmentHasTobaccoUser = memoizeOne((employee: Employee, enrolleesIds: string[]) => {\r\n return employee.tobaccoUse || employee.dependents.some(d => enrolleesIds.some(id => id === d.id) && d.tobaccoUse);\r\n});\r\n\r\nexport const enrollmentHasSpouse = memoizeOne((dependents: Dependent[], enrolleesIds: string[]) => {\r\n return dependents.some(d => enrolleesIds.some(id => id === d.id) && d.isSpouse);\r\n});\r\n\r\nexport const enrollmentHasChild = memoizeOne((dependents: Dependent[], enrolleesIds: string[]) => {\r\n return dependents.some(d => enrolleesIds.some(id => id === d.id) && !d.isSpouse);\r\n});\r\n\r\nexport const enrollmentHasChildNameDifferent = memoizeOne((employee: Employee, enrolleesIds: string[]) => {\r\n return employee.dependents.some(d => enrolleesIds.some(id => id === d.id) && d.lastName != employee.lastName);\r\n});\r\n\r\nexport const hasEmployeesElectedAnyPlan = memoizeOne((employees: Employee[]) => {\r\n return employees.filter(e => e.elections.length > 0 && e.elections.find(el => (el.planId != undefined && el.planId != null && Number.parseInt(el.planId) > 0)\r\n || (el.planId == \"\" && el.isWaived))).length > 0;\r\n});\r\n\r\nexport const hasNoElectionStartedEmployeeExists = memoizeOne((employees: Employee[]) => {\r\n return employees.filter(e => e.elections.length == 0).length > 0;\r\n});\r\n\r\nexport const hasElectionStartedEmployeeExists = memoizeOne((employees: Employee[]) => {\r\n return employees.filter(e => e.elections.length > 0).length > 0;\r\n});\r\n","import { SvgIconProps } from \"@material-ui/core/SvgIcon\";\r\nimport memoizeOne from \"memoize-one\";\r\nimport moment from 'moment';\r\nimport { EnrollmentReducerState, Plan, Configuration } from \"redux/reducers\";\r\nimport { ReduxState } from \"redux/store\";\r\nimport { getIdsForEmployeesWithoutSalary, getKeyById, getLookupId, locIconSelector, LOOKUP_TYPE_IDS } from \".\";\r\nimport auth from \"./auth\";\r\nimport { CONFIGURATION_TYPE_IDS } from \"./employee_utils\";\r\n\r\nexport const getDaysRemaining = memoizeOne((enrollmentState: EnrollmentReducerState) => {\r\n return moment(enrollmentState.endDate).endOf('day').diff(moment().startOf('day'), 'days')\r\n})\r\n\r\nexport const companyInfoCompleteCheck = memoizeOne((enrollment: EnrollmentReducerState) => {\r\n return !!enrollment.company.name && !!enrollment.groupSize && !!enrollment.company.ein;\r\n})\r\n\r\nconst enrollmentRequiresAuthEmployer = memoizeOne((configurationTypeSet: Set) => {\r\n return configurationTypeSet.has(CONFIGURATION_TYPE_IDS.adminContactRequired);\r\n})\r\n\r\nexport const missingAuthorizedSignatory = memoizeOne((configurationTypeSet: Set, enrollment: EnrollmentReducerState) => {\r\n var actionRequired = false;\r\n\r\n if (enrollmentRequiresAuthEmployer(configurationTypeSet)) {\r\n var enrollmentHasAuthEmployer = false;\r\n enrollment.companyContacts.forEach(contact => {\r\n if (contact.isAuthorizedSignatory) enrollmentHasAuthEmployer = true;\r\n })\r\n if (!enrollmentHasAuthEmployer) actionRequired = true;\r\n }\r\n return actionRequired;\r\n})\r\n\r\nconst enrollmentRequiresAdobeSignAdmin = memoizeOne((configurationTypeSet: Set) => {\r\n return configurationTypeSet.has(CONFIGURATION_TYPE_IDS.AdobeSignatureAdmin);\r\n})\r\n\r\nexport const missingAdobeSignatory = memoizeOne((configurationTypeSet: Set, enrollment: EnrollmentReducerState) => {\r\n var actionRequired = false;\r\n\r\n if (enrollmentRequiresAdobeSignAdmin(configurationTypeSet) && enrollment.hasOptedDigitalSignature) {\r\n var enrollmentHasAuthEmployer = false;\r\n enrollment.companyContacts.forEach(contact => {\r\n if (contact.isAuthorizedSignatory) enrollmentHasAuthEmployer = true;\r\n })\r\n if (!enrollmentHasAuthEmployer) actionRequired = true;\r\n }\r\n return actionRequired;\r\n})\r\n\r\nexport enum Zones {\r\n PlanRate,\r\n PlanRateSave,\r\n PlanDelete,\r\n PlanDetailSave,\r\n PlanDetail,\r\n PlanDeleteSave,\r\n PlanContribution,\r\n PlanContributionSave,\r\n PlanEligibility,\r\n PlanEligibilitySave,\r\n PlanDocuments,\r\n PlanDocumentsSave,\r\n PlanConfirming,\r\n PlanSelectionSummary,\r\n PlanEdit,\r\n CensusStatus,\r\n EnrollmentSteps,\r\n CompanyAddContact,\r\n PlanBenefits\r\n}\r\n\r\nconst _isEndDateInFuture = memoizeOne((enrollment: EnrollmentReducerState) => {\r\n const exp = enrollment.expirationStatus!;\r\n if (!exp) {\r\n return true;\r\n }\r\n return exp.endDateIsInFuture;\r\n});\r\n\r\nexport const isEndDateInFuture = (enrollment: EnrollmentReducerState) => {\r\n return _isEndDateInFuture(enrollment);\r\n};\r\n\r\nconst _isUserReadOnly = memoizeOne((enrollment: EnrollmentReducerState, zone: Zones, planEnrolledEmployeeCount?: number) => {\r\n const exp = enrollment.expirationStatus!;\r\n const isConfirmed = !!enrollment.setupCompletedOn;\r\n if (!exp) {\r\n return true;\r\n }\r\n const endDExist = enrollment.endDate !== undefined;\r\n let options: boolean[] = [false];\r\n // brokers\r\n if (auth.isUserEnrollmentManager()) {\r\n switch (zone) {\r\n case Zones.CompanyAddContact:\r\n break;\r\n case Zones.PlanDeleteSave:\r\n options.push(isConfirmed);\r\n break;\r\n case Zones.PlanEligibility:\r\n case Zones.PlanEligibilitySave:\r\n if (planEnrolledEmployeeCount != undefined && planEnrolledEmployeeCount > 0)\r\n options.push(true);\r\n else {\r\n options.push(false);\r\n }\r\n break;\r\n case Zones.PlanDetail:\r\n case Zones.PlanRate:\r\n case Zones.PlanContribution:\r\n options.push(exp.submitted);\r\n default:\r\n options.push(exp.submitted || (endDExist && exp.endDateMoreThan60Days));\r\n }\r\n }\r\n // employees\r\n if (auth.isUserEmployee()) {\r\n options.push(!exp.submitted && endDExist && !exp.endDateMoreThan60Days && !exp.endDateIsInFuture);\r\n options.push(exp.submitted)\r\n }\r\n // employers\r\n if (auth.isUserEmployer()) {\r\n switch (zone) {\r\n case Zones.PlanRateSave:\r\n case Zones.PlanRate:\r\n case Zones.PlanDetailSave:\r\n case Zones.PlanDetail:\r\n case Zones.PlanContributionSave:\r\n case Zones.PlanContribution:\r\n case Zones.PlanEligibilitySave:\r\n case Zones.PlanEligibility:\r\n case Zones.PlanDocumentsSave:\r\n case Zones.PlanDeleteSave:\r\n case Zones.PlanDelete:\r\n case Zones.CompanyAddContact:\r\n options.push(true); // always readonly\r\n break;\r\n default:\r\n options.push(exp.submitted); // needs to be verified\r\n }\r\n }\r\n // admins\r\n if (auth.isUserEnrollmentSuperAdmin()) {\r\n switch (zone) {\r\n case Zones.CompanyAddContact:\r\n break;\r\n default:\r\n options.push(!exp.submitted && endDExist && exp.endDateMoreThan60Days);\r\n options.push(exp.submitted && enrollment.isExpired === true && exp.submissionMore60Days);\r\n }\r\n\r\n }\r\n return options.find(option => option === true) || false;\r\n});\r\n\r\nexport const isUserReadOnly = (enrollment: EnrollmentReducerState, zone: Zones, planEnrolledEmployeeCount?: number) => {\r\n return _isUserReadOnly(enrollment, zone, planEnrolledEmployeeCount);\r\n};\r\n\r\nexport const isPlanReadOnly = (configurations: Configuration[], zone: Zones): { value: boolean, reason?: string } => {\r\n if ((zone === Zones.PlanBenefits || zone === Zones.PlanRate) && auth.isUserEnrollmentSuperAdmin() == false) {\r\n const readOnlyConfiguration =\r\n configurations.find(configuration => configuration.configurationTypeId === CONFIGURATION_TYPE_IDS.ratesAndBenefitsReadOnly);\r\n\r\n if (readOnlyConfiguration) {\r\n const reason = readOnlyConfiguration.additionalInfo.find(a => a.key.toLowerCase() === 'reason')\r\n return {\r\n value: true,\r\n reason: reason ? reason.value : undefined\r\n }\r\n }\r\n }\r\n return { value: false }\r\n}\r\n\r\nconst _isEnrollmentLockedOut = memoizeOne((enrollment: EnrollmentReducerState) => {\r\n const exp = enrollment.expirationStatus!;\r\n if (!exp) {\r\n return false;\r\n }\r\n const endDExist = enrollment.endDate !== undefined;\r\n let options: boolean[] = [false];\r\n if (auth.isUserEmployee() || auth.isUserEmployer()) {\r\n options.push(!exp.submitted && endDExist && exp.endDateMoreThan60Days);\r\n options.push(exp.submitted && enrollment.isExpired === true && exp.submissionMore60Days);\r\n }\r\n return options.find(b => b === true) || false;\r\n});\r\n\r\nexport const isEnrollmentLockedOut = (enrollment: EnrollmentReducerState) => {\r\n return _isEnrollmentLockedOut(enrollment);\r\n}\r\n\r\nexport const salariesRequiredSelector = (state: ReduxState, ignoreEmployeeCheck?: boolean) => {\r\n const benefitAmountTypeId = getLookupId('MULTIPLEOFSALARY', LOOKUP_TYPE_IDS.benefitAmountType);\r\n const plansWithMultipleSalary = state.plan.list.filter(p => p.benefitAmountTypeId && p.benefitAmountTypeId === benefitAmountTypeId)\r\n if (ignoreEmployeeCheck === true) {\r\n return plansWithMultipleSalary.length > 0;\r\n }\r\n return plansWithMultipleSalary.length > 0 && getIdsForEmployeesWithoutSalary(state.employee).length > 0\r\n}\r\n\r\nexport const getLOCcount = memoizeOne((plans: Plan[]) => {\r\n const reducer = (loc: string) => (sum: number, plan: Plan) => {\r\n if (loc === getKeyById(plan.lineOfCoverageId))\r\n return sum + 1;\r\n else\r\n return sum;\r\n }\r\n\r\n const locCount: { icon: React.ComponentType; count: number; key: string }[] = [];\r\n\r\n //Medical\r\n const medicalCount = plans.reduce(reducer('MEDICAL'), 0);\r\n if (medicalCount)\r\n locCount.push({ icon: locIconSelector('MEDICAL'), count: medicalCount, key: 'Medical' });\r\n //Dental\r\n const dentalCount = plans.reduce(reducer('DENTAL'), 0);\r\n if (dentalCount)\r\n locCount.push({ icon: locIconSelector('DENTAL'), count: dentalCount, key: 'Dental' });\r\n //Vision\r\n const visionCount = plans.reduce(reducer('VISION'), 0);\r\n if (visionCount)\r\n locCount.push({ icon: locIconSelector('VISION'), count: visionCount, key: 'Vision' });\r\n //Life\r\n const lifeCount = plans.reduce(reducer('CHILDLIFE'), 0) + plans.reduce(reducer('GROUPLIFE'), 0)\r\n + plans.reduce(reducer('SUPPLIFE'), 0)\r\n + plans.reduce(reducer('SPOUSELIFE'), 0);\r\n if (lifeCount)\r\n locCount.push({ icon: locIconSelector('LIFE'), count: lifeCount, key: 'Life' });\r\n //Disability\r\n const disabilityCount = plans.reduce(reducer('STD'), 0) + plans.reduce(reducer('LTD'), 0);\r\n if (disabilityCount)\r\n locCount.push({ icon: locIconSelector('DISABILITY'), count: disabilityCount, key: 'Disability' });\r\n\r\n const voluntaryCount = plans.reduce(reducer('VOLUNTARY'), 0) + plans.reduce(reducer('ACCIDENT'), 0)\r\n + plans.reduce(reducer('CRITICALILLNESS'), 0)\r\n + plans.reduce(reducer('HOSPITAL'), 0);\r\n if (voluntaryCount)\r\n locCount.push({ icon: locIconSelector('VOLUNTARY'), count: voluntaryCount, key: 'Voluntary' });\r\n\r\n //Pet Insurance\r\n const petInsuranceCount = plans.reduce(reducer('PETINSURANCE'), 0);\r\n if (petInsuranceCount)\r\n locCount.push({ icon: locIconSelector('PET'), count: petInsuranceCount, key: 'PetInsurance' });\r\n\r\n // Identity Protection\r\n const identityProtectionCount = plans.reduce(reducer('IDENTITYPROTECTION'), 0);\r\n if (identityProtectionCount)\r\n locCount.push({ icon: locIconSelector('IDENTITYPROTECTION'), count: identityProtectionCount, key: 'IDENTITYPROTECTION' });\r\n \r\n // Legal\r\n const legalLocCount = plans.reduce(reducer('LEGAL'), 0);\r\n if (legalLocCount)\r\n locCount.push({ icon: locIconSelector('LEGAL'), count: legalLocCount, key: 'LEGAL' });\r\n\r\n // GAP\r\n const gapLocCount = plans.reduce(reducer('GAPLOC'), 0);\r\n if (gapLocCount)\r\n locCount.push({ icon: locIconSelector('GAPLOC'), count: gapLocCount, key: 'GAPLOC' });\r\n\r\n const masaLocCount = plans.reduce(reducer('MASA'), 0);\r\n if (masaLocCount)\r\n locCount.push({ icon: locIconSelector('MASA'), count: gapLocCount, key: 'MASA' });\r\n\r\n return locCount;\r\n});","import { Employee, EnrollmentReducerState } from '../redux/reducers';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from './lookup_utils';\r\n\r\nexport const CARRIER_CODE = {\r\n HUMANA: \"HUMANA\"\r\n}\r\n\r\nexport const isEnrollmentSubmitted = (employee: Employee, enrollment: EnrollmentReducerState) => {\r\n const expiredEnrollment = enrollment.openEnrollmentExpired || false;\r\n const completedStatusId = getLookupId('COMPLETED', LOOKUP_TYPE_IDS.electionStatus);\r\n const renewalSkippedCompletedStatusId = getLookupId('RENEWALQUESTIONSPENDING', LOOKUP_TYPE_IDS.electionStatus);\r\n const submittedStatusId = getLookupId('SUBMITTED', LOOKUP_TYPE_IDS.electionStatus);\r\n const statusSet = new Set([completedStatusId, renewalSkippedCompletedStatusId, submittedStatusId]);\r\n return statusSet.has(employee.electionStatusId) || expiredEnrollment;\r\n}\r\n\r\n","import React from 'react';\r\nimport { styles } from 'utility/common_styles';\r\n\r\nexport const generateLabel = (text: string) => {\r\n return {text}\r\n}","\r\nclass KaiserUtility {\r\n\r\n getResponse(url: string) {\r\n return new Promise((resolve, reject) => {\r\n var domain = window.location.origin;\r\n var kaiserWindow:any = window.open(domain + url, '_blank', \"noopener noreferrer\");\r\n window.addEventListener('message', function (event) {\r\n if (event.origin !== window.location.origin) return; \r\n var result = JSON.parse(event.data);\r\n resolve(result);\r\n kaiserWindow.close();\r\n }, false);\r\n });\r\n }\r\n\r\n handleResponse(accepted: boolean) {\r\n var targetWindow = window.opener;\r\n targetWindow.postMessage(accepted, window.location.origin);\r\n }\r\n\r\n}\r\n\r\nconst kaiserUtil = new KaiserUtility();\r\nexport default kaiserUtil;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst Question = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Question;","import withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport React from 'react';\r\nimport QuestionIcon from './icons/icon_question';\r\n\r\ninterface ComponentProps {\r\n title: JSX.Element | string;\r\n content?: JSX.Element;\r\n}\r\n\r\ntype Props = ComponentProps & StyledComponentProps & WithWidth;\r\n\r\nconst WrappedTooltip = (props: Props) => {\r\n const { width, title, content } = props;\r\n const mobile = width === 'xs' || width === 'sm';\r\n return (\r\n \r\n {content ?\r\n content :\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n questionIcon: {\r\n height: \".9em\",\r\n width: \".9em\",\r\n marginLeft: \"5px\",\r\n }\r\n};\r\n\r\nexport default withWidth()(withStyles(styles)(WrappedTooltip))","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst DentalLOC = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DentalLOC;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst Heart = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Heart;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst LifeLOC = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LifeLOC;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst MedicalLOC = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MedicalLOC;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst StdLtdLOC = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StdLtdLOC;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst VisionLOC = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default VisionLOC;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst VoluntaryLOC = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default VoluntaryLOC;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst IdentityProtectionLocIcon = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default IdentityProtectionLocIcon;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst LegalLocIcon = (props: SvgIconProps) => {\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\nexport default LegalLocIcon;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst PetLocIcon = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PetLocIcon;","import { SvgIconProps } from '@material-ui/core/SvgIcon';\r\nimport DentalLOCIcon from 'components/common/icons/icon_dental_loc';\r\nimport Heart from 'components/common/icons/icon_heart';\r\nimport LifeLOCIcon from 'components/common/icons/icon_life_loc';\r\nimport MedicalLOCIcon from 'components/common/icons/icon_medical_loc';\r\nimport STD_LTD_LOCIcon from 'components/common/icons/icon_stdltd_loc';\r\nimport VisionLOCIcon from 'components/common/icons/icon_vision_loc';\r\nimport VoluntaryLOCIcon from 'components/common/icons/icon_voluntary_loc';\r\nimport { GroupSubmissionPlan } from 'redux/reducers';\r\nimport IdentityProtectionLocIcon from 'components/common/icons/icon_identity_protection';\r\nimport LegalLocIcon from 'components/common/icons/icon_legal_protection';\r\nimport PetLocIcon from 'components/common/icons/icon_pet';\r\nimport GapLocIcon from '@material-ui/icons/Queue';\r\nimport { getKeyById } from '.';\r\n\r\nexport const simpleCompare = (key: string, descending?: boolean) => (a: any, b: any) => {\r\n let valA: any;\r\n let valB: any;\r\n\r\n valA = Array.isArray(a[key]) ? a[key].length : toLowerCase(a[key]);\r\n valB = Array.isArray(b[key]) ? b[key].length : toLowerCase(b[key]);\r\n\r\n if (valA === valB) return 0;\r\n else if (valB === undefined) {\r\n return -1;\r\n }\r\n else if (valA === undefined) {\r\n return 1;\r\n }\r\n else {\r\n const descendingModifier = descending ? -1 : 1;\r\n if (valA > valB)\r\n return descendingModifier * 1;\r\n else if (valA < valB)\r\n return descendingModifier * -1;\r\n else\r\n return 0;\r\n }\r\n}\r\n\r\nexport function toLowerCase(val: any) {\r\n try {\r\n return val.toLowerCase();\r\n } catch (e) {\r\n return val;\r\n }\r\n}\r\n\r\nexport function flattenObject(obj: any, preKey?: string): string[] {\r\n function isObjectOrArray(test: any) {\r\n return (test === Object(test) || Array.isArray(test));\r\n };\r\n function isPrimitiveOrArray(test: any) {\r\n return (test !== Object(test) || Array.isArray(test));\r\n };\r\n\r\n let keys: string[] = [];\r\n if (isObjectOrArray(obj)) {\r\n Object.keys(obj).forEach(key => {\r\n if (Array.isArray(obj[key])) {\r\n const array = obj[key];\r\n array.forEach((item: any, index: number) => {\r\n const nestedPreKey = preKey ? `${preKey}.${key}[${index}]` : `${key}[${index}]`;\r\n keys = keys.concat(flattenObject(item, nestedPreKey));\r\n });\r\n } else if (obj[key] && typeof obj[key] === 'object' && Object.keys(obj[key]).every(_key => isPrimitiveOrArray(obj[key][_key]))) {\r\n const nestedPreKey = preKey ? `${preKey}.${key}` : key;\r\n keys = keys.concat(flattenObject(obj[key], nestedPreKey));\r\n } else {\r\n if (preKey)\r\n keys.push(`${preKey}.${key}`);\r\n else\r\n keys.push(key);\r\n }\r\n });\r\n }\r\n return keys;\r\n}\r\n\r\nexport function locIconSelector(loc: string): React.ComponentType {\r\n switch (loc) {\r\n case 'BASEMEDICAL':\r\n case 'MEDICAL':\r\n return MedicalLOCIcon;\r\n case 'BASEDENTAL':\r\n case 'DENTAL':\r\n return DentalLOCIcon;\r\n case 'BASEVISION':\r\n case 'VISION':\r\n return VisionLOCIcon;\r\n case 'STD':\r\n case 'LTD':\r\n case 'BASEDISABILITY':\r\n case 'DISABILITY':\r\n return STD_LTD_LOCIcon;\r\n case 'CHILDLIFE':\r\n case 'SPOUSELIFE':\r\n case 'GROUPLIFE':\r\n case 'SUPPLIFE':\r\n case 'BASELIFE':\r\n case 'LIFE':\r\n return LifeLOCIcon;\r\n case 'BASEVOLUNTARY':\r\n case 'VOLUNTARY':\r\n case 'BASEACCIDENT':\r\n case 'BASECRITICALILLNESS':\r\n case 'BASEHOSPITAL':\r\n case 'ACCIDENT':\r\n case 'CRITICALILLNESS':\r\n case 'HOSPITAL':\r\n return VoluntaryLOCIcon;\r\n case 'PET':\r\n return PetLocIcon;\r\n case 'IDENTITYPROTECTION':\r\n return IdentityProtectionLocIcon;\r\n case 'LEGAL':\r\n return LegalLocIcon;\r\n case 'GAPLOC':\r\n return GapLocIcon;\r\n default:\r\n return Heart;\r\n }\r\n}\r\n\r\nexport function getLOCicons(plans: GroupSubmissionPlan[]) {\r\n const hasPlans = (loc: string) => {\r\n return plans.some(plan => loc === getKeyById(plan.lineOfCoverageId));\r\n }\r\n const locIcons: { type: string; icon: React.ComponentType; }[] = [];\r\n //Medical\r\n const hasMedical = hasPlans('MEDICAL');\r\n if (hasMedical)\r\n locIcons.push({ type: 'MEDICAL', icon: locIconSelector('MEDICAL') });\r\n //Dental\r\n const hasDental = hasPlans('DENTAL');\r\n if (hasDental)\r\n locIcons.push({ type: 'DENTAL', icon: locIconSelector('DENTAL') });\r\n //Vision\r\n const hasVision = hasPlans('VISION');\r\n if (hasVision)\r\n locIcons.push({ type: 'VISION', icon: locIconSelector('VISION') });\r\n //Life\r\n const hasChildLife = hasPlans('CHILDLIFE');\r\n const hasGroupLife = hasPlans('GROUPLIFE');\r\n const hasSuppLife = hasPlans('SUPPLIFE');\r\n const hasSpouseLife = hasPlans('SPOUSELIFE');\r\n let hasLife = hasChildLife || hasGroupLife || hasSuppLife || hasSpouseLife;\r\n if (hasLife)\r\n locIcons.push({ type: 'LIFE', icon: locIconSelector('LIFE') });\r\n //Disability\r\n const hasSTDisability = hasPlans('STD');\r\n const hasLTDisability = hasPlans('LTD');\r\n if (hasSTDisability || hasLTDisability)\r\n locIcons.push({ type: 'DISABILITY', icon: locIconSelector('DISABILITY') });\r\n //Accident\r\n const hasAccident = hasPlans('ACCIDENT');\r\n if (hasAccident)\r\n locIcons.push({ type: 'ACCIDENT', icon: locIconSelector('ACCIDENT') });\r\n //Critical Illness\r\n const hasCriticalIllness = hasPlans('CRITICALILLNESS');\r\n if (hasCriticalIllness)\r\n locIcons.push({ type: 'CRITICALILLNESS', icon: locIconSelector('CRITICALILLNESS') });\r\n //Hospital\r\n const hasHospital = hasPlans('HOSPITAL');\r\n if (hasHospital)\r\n locIcons.push({ type: 'HOSPITAL', icon: locIconSelector('HOSPITAL') });\r\n //Pet Insurance\r\n const petInsurance = hasPlans('PETINSURANCE');\r\n if (petInsurance)\r\n locIcons.push({ type: 'PETINSURANCE', icon: locIconSelector('PET') });\r\n //Identity Protection\r\n const identityProtection = hasPlans('IDENTITYPROTECTION');\r\n if (identityProtection)\r\n locIcons.push({ type: 'IDENTITYPROTECTION', icon: locIconSelector('IDENTITYPROTECTION') });\r\n //Legal Services\r\n const legalServices = hasPlans('LEGAL');\r\n if (legalServices)\r\n locIcons.push({ type: 'LEGAL', icon: locIconSelector('LEGAL') });\r\n //GAP\r\n const hasGap = hasPlans('GAPLOC');\r\n if (hasGap)\r\n locIcons.push({ type: 'GAPTYPE', icon: locIconSelector('GAPLOC') });\r\n return locIcons;\r\n};\r\n\r\nexport function isExcelFileType(fileType: string) {\r\n let isExcel: boolean = false;\r\n if (fileType === 'application/vnd.ms-excel' || fileType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {\r\n isExcel = true;\r\n }\r\n return isExcel;\r\n};\r\n\r\nexport const formatCurrency = (number?: number) => {\r\n if (number === undefined) return '';\r\n var multiplicator = Math.pow(10, 2);\r\n number = parseFloat((number * multiplicator).toFixed(11));\r\n var test =(Math.round(number) / multiplicator);\r\n return '$'+test.toFixed(2).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n}","import Grid from '@material-ui/core/Grid';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport { Employee, Plan } from 'redux/reducers';\r\nimport { getChildTypeSet, getLOCs, getLookupId, getSpouseTypeSet, isChildLife, isSpouseLife, LOOKUP_TYPE_IDS } from './lookup_utils';\r\nimport palette from './palette';\r\nimport { locIconSelector, simpleCompare } from './simple_utils';\r\n\r\nexport const getStepIcon = (loc: number, style?: any) => {\r\n let LocIcon: any;\r\n switch (loc) {\r\n\r\n case getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('MEDICAL');\r\n return } />;\r\n case getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('DENTAL');\r\n return } />;\r\n case getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('VISION');\r\n return } />;\r\n case getLookupId('CHILDLIFE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('SPOUSELIFE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('GROUPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('SUPPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('LIFE');\r\n return } />;\r\n case getLookupId('STD', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('LTD', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('DISABILITY');\r\n return } />;\r\n case getLookupId('BASEACCIDENT', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('BASECRITICALILLNESS', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('BASEHOSPITAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('ACCIDENT', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('CRITICALILLNESS', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('HOSPITAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('VOLUNTARY');\r\n return } />;\r\n case getLookupId('PETINSURANCE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('PET');\r\n return } />;\r\n case getLookupId('IDENTITYPROTECTION', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('IDENTITYPROTECTION');\r\n return } />;\r\n case getLookupId('LEGAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('LEGAL');\r\n return } />;\r\n case getLookupId('GAPLOC', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('GAPLOC');\r\n return } />;\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nexport const getPlanCardIcon = (loc: number, carrierLogo?: string, mobile?: boolean) => {\r\n if (carrierLogo)\r\n return (\r\n \r\n \"\"\r\n \r\n );\r\n else {\r\n const locIcon = getStepIcon(loc, styles.locIcon);\r\n return (\r\n <>\r\n \r\n \r\n {locIcon}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n locIcon: {\r\n width: 60,\r\n height: 40,\r\n marginTop: 20,\r\n color: palette.grey.text\r\n },\r\n carrierLogoContainer: {\r\n textAlign: 'right'\r\n },\r\n carrierLogo: {\r\n width: 130,\r\n maxHeight: '100%',\r\n marginTop: 20\r\n },\r\n carrierLogoMobile: {\r\n maxWidth: '100%',\r\n maxHeight: '100%',\r\n marginTop: 20\r\n }\r\n};\r\n\r\nexport const sortedLOCs = memoizeOne(() => getLOCs().sort(simpleCompare('id')));\r\n\r\nexport const availableLOCs = memoizeOne((list: Plan[], employee?: Employee) => {\r\n const allLOCs = sortedLOCs();\r\n let tempList: {\r\n loc: number;\r\n order: number;\r\n }[] = [];\r\n allLOCs.forEach(loc => {\r\n let plan = list.find(l => l.lineOfCoverageId === loc.id);\r\n if (plan) {\r\n let order = loc.order;\r\n tempList.push({ loc: loc.id, order: order })\r\n }\r\n });\r\n\r\n let hasSpouse = false;\r\n let hasDependent = false;\r\n if (employee && employee.dependents.length > 0) {\r\n const childTypes = getChildTypeSet();\r\n const spouseTypes = getSpouseTypeSet();\r\n employee.dependents.forEach(dep => {\r\n if (spouseTypes.has(dep.dependentTypeId)) hasSpouse = true;\r\n if (childTypes.has(dep.dependentTypeId)) hasDependent = true;\r\n })\r\n }\r\n\r\n tempList = tempList.filter(item => {\r\n if (isSpouseLife(item.loc) && hasSpouse) {\r\n return true\r\n }\r\n if (isChildLife(item.loc) && hasDependent) {\r\n return true\r\n }\r\n return (!isSpouseLife(item.loc) && !isChildLife(item.loc)) ? true : false;\r\n })\r\n\r\n return Array.from(new Set(tempList.sort((a, b) => a.order - b.order).map(i => i.loc)));\r\n});","import moment from 'moment';\r\n\r\nexport const normalizeNumber = (value: any) => {\r\n if (!value) return value;\r\n\r\n return value.replace(/[^\\d-.]/g, '');\r\n}\r\n\r\nexport const normalizeDecimal = (value: any, previousValue: any) => {\r\n if (!value) {\r\n return value;\r\n };\r\n let regexValue = `${value}`.match(/[0-9]+\\.?([0-9]+)?/g); //Numbers.Numbers\r\n let parsedValue = (regexValue && regexValue[0]) || previousValue;\r\n if (parsedValue[parsedValue.length - 1] === \".\") return parsedValue;\r\n else return Number(parsedValue);\r\n}\r\n\r\nexport const normalizeDigits = (value: any) => {\r\n if (!value) return value;\r\n\r\n return value.replace(/[^\\d]/g, '');\r\n}\r\n\r\nexport const normalizeSSN = (value: string) => {\r\n if (!value) return value;\r\n\r\n const parsedValue = normalizeDigits(value);\r\n return parsedValue.slice(0, 9);\r\n};\r\n\r\nexport const normalizeZIP = (value: string) => {\r\n if (!value) return value;\r\n\r\n const parsedValue = normalizeDigits(value);\r\n return parsedValue.slice(0, 9);\r\n};\r\n\r\nexport const normalizeEIN = (value: string) => {\r\n return normalizeZIP(value);\r\n};\r\n\r\nexport const normalizeCurrency = (value: any, previousValue: any) => {\r\n if (!value || `${value}`.includes('.') || `${previousValue}`.includes('.')) return value;\r\n\r\n return Number(value).toFixed(2);\r\n};\r\n\r\nexport const normalizeHeightInches = (value: any) => {\r\n let inches = normalizeHeight(value);\r\n if (inches > 11) inches = 11;\r\n return inches;\r\n}\r\n\r\nexport const normalizeHeight = (value: any) => {\r\n if (!value) return value;\r\n\r\n const digits = convertToInteger(value);\r\n const parsedDigits = `${digits}`;\r\n if (parsedDigits.length > 2)\r\n return Number(parsedDigits.slice(0, 2));\r\n else\r\n return digits;\r\n};\r\n\r\nexport const convertToNumber = (value: string) => value && Number(value);\r\nexport const convertToInteger = (value: string) => value && Number(Number(value).toFixed(0));\r\nexport const convertToString = (value: number) => value !== undefined ? `${value}` : '';\r\nexport const convertToMoment = (value: string | moment.Moment) => value && moment(value);\r\nexport const convertEmptyToZero = (value: string) => (value && Number(value)) || 0;\r\nexport const convertPercentageToNumber = (value: string) => (value && Number(value) && Number(value) * 100);","import { normalizeDigits } from \"./form_normalization\";\r\nexport const maskSSN = (value: any, mask: string = '') => {\r\n const parsedValue = normalizeDigits(value);\r\n if (!parsedValue || parsedValue.length < 4) return parsedValue;\r\n\r\n const maskValue = !mask ? 'X' : mask;\r\n const result = ['```-``-', value.substr(value.length - 4)].filter(Boolean).join('')\r\n return result.replace(/[`]/g, maskValue);\r\n}\r\n","import moment from 'moment';\r\nimport { Plan } from \"redux/reducers\";\r\nimport { getLookupId, isBasicLife, isChildLife, isLTD, isSpouseLife, isSTD, isSuppLife, LOOKUP_TYPE_IDS, isPet, isIdentity, isLegal } from \"./lookup_utils\";\r\nimport memoizeOne from 'memoize-one';\r\n\r\nexport const isParticipantEligible = (lineOfCoverageId: number, participantTypeId: number) => {\r\n const shortDisability = isSTD(lineOfCoverageId);\r\n const longDisability = isLTD(lineOfCoverageId);\r\n const basicLife = isBasicLife(lineOfCoverageId);\r\n const suppLife = isSuppLife(lineOfCoverageId);\r\n const spouseLife = isSpouseLife(lineOfCoverageId);\r\n const childLife = isChildLife(lineOfCoverageId);\r\n const pet = isPet(lineOfCoverageId);\r\n const identity = isIdentity(lineOfCoverageId);\r\n const legal = isLegal(lineOfCoverageId);\r\n\r\n const employeeId = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.participationOptions);\r\n const spouseId = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.participationOptions);\r\n const domPartnerId = getLookupId('DOMESTICPARTNER', LOOKUP_TYPE_IDS.participationOptions);\r\n const childId = getLookupId('CHILD', LOOKUP_TYPE_IDS.participationOptions);\r\n\r\n if (pet || legal) {\r\n return {\r\n eligible: participantTypeId === employeeId,\r\n required: participantTypeId === employeeId\r\n }\r\n }\r\n\r\n if (identity) {\r\n return {\r\n eligible: true,\r\n required: true\r\n }\r\n }\r\n if (shortDisability || longDisability) {\r\n return {\r\n eligible: participantTypeId === employeeId,\r\n required: participantTypeId === employeeId\r\n }\r\n } else if (basicLife || suppLife) {\r\n return {\r\n eligible: true,\r\n required: participantTypeId === employeeId\r\n }\r\n } else if (spouseLife) {\r\n return {\r\n eligible: participantTypeId === spouseId || participantTypeId === domPartnerId,\r\n required: participantTypeId === spouseId\r\n }\r\n } else if (childLife) {\r\n return {\r\n eligible: participantTypeId === childId,\r\n required: participantTypeId === childId\r\n }\r\n } else {\r\n return {\r\n eligible: true,\r\n required: false\r\n };\r\n }\r\n};\r\n\r\nexport const getEffectiveDateForEmployee = memoizeOne((plan?: Plan, hireDate?: moment.Moment) => {\r\n\r\n if (!plan || !plan.effectiveDate) return 'No date set';\r\n const planEffectiveDate = plan.effectiveDate.utc().local(false).startOf('day').format('MM/DD/YYYY');\r\n const eligibleDate = !!hireDate ? hireDate.clone() : undefined;\r\n if (!eligibleDate) return planEffectiveDate;\r\n\r\n const immediate = getLookupId('Immediate', 48);\r\n const firstOfTheMonthAfterDateOfHire = getLookupId('FirstOfTheMonthAfterDateOfHire', 48);\r\n const firstOfTheMonthAfterNumberOfDays = getLookupId('FirstOfTheMonthAfterNumberOfDays', 48);\r\n const numberOfDaysAfterDateOfHire = getLookupId('NumberOfDaysAfterDateOfHire', 48);\r\n\r\n const waitingPeriodTypeId = plan.waitingPeriodTypeId || immediate;\r\n const now = moment().endOf('day');\r\n switch (waitingPeriodTypeId) {\r\n case firstOfTheMonthAfterDateOfHire:\r\n eligibleDate!.add(1, 'month');\r\n const firstOfNextMonth1 = moment(`${eligibleDate.year()}-${eligibleDate.month() + 1}-1`);\r\n const isNewHire1 = firstOfNextMonth1.isAfter(now) && firstOfNextMonth1.isAfter(planEffectiveDate);\r\n return isNewHire1 ? firstOfNextMonth1.format('MM/DD/YYYY') : planEffectiveDate;\r\n case firstOfTheMonthAfterNumberOfDays:\r\n eligibleDate!.add(plan.waitingPeriod, 'day');\r\n eligibleDate.add(1, 'month');\r\n const firstOfNextMonth2 = moment(`${eligibleDate.year()}-${eligibleDate.month() + 1}-1`);\r\n const isNewHire2 = firstOfNextMonth2.isAfter(now) && firstOfNextMonth2.isAfter(planEffectiveDate);\r\n return isNewHire2 ? firstOfNextMonth2.format('MM/DD/YYYY') : planEffectiveDate;\r\n case numberOfDaysAfterDateOfHire:\r\n eligibleDate!.add(plan.waitingPeriod, 'day');\r\n const isNewHire3 = eligibleDate.isAfter(now) && eligibleDate.isAfter(planEffectiveDate);\r\n return isNewHire3 ? eligibleDate.format('MM/DD/YYYY') : planEffectiveDate;\r\n default:\r\n return planEffectiveDate;\r\n }\r\n});","import { AgeReduction, Contribution, Participant, Rate } from \"redux/reducers\";\r\nimport { getCoverageLevels, getDisabilityLOCS, getLifeLOCS, getLookupId, getParticipationOptions, getRateTypes, LOOKUP_TYPE_IDS } from './lookup_utils';\r\n\r\ninterface AgeRange {\r\n minAge: number;\r\n maxAge?: number;\r\n}\r\n\r\nconst generateAgeRanges: (ageCutoff?: number, minAge18?: boolean) => AgeRange[] = (ageCutoff: number = 65, minAge18: boolean = false, tobaccoExtraRates: boolean = false) => {\r\n const ranges = [];\r\n if(!minAge18){ \r\n ranges.push({ minAge: 0, maxAge: 14 });\r\n for (let age = 15; age < 18; age++) {\r\n ranges.push({\r\n minAge: age,\r\n maxAge: age\r\n });\r\n }\r\n }\r\n for (let age = 18; age < ageCutoff; age++) {\r\n ranges.push({\r\n minAge: age,\r\n maxAge: age\r\n });\r\n };\r\n ranges.push({\r\n minAge: ageCutoff,\r\n maxAge: 200,\r\n });\r\n return ranges;\r\n}\r\n\r\nconst rangeMatchesRate = (inputRate: Rate, generatedRate: AgeRange, ageCutoff: number) => {\r\n if (inputRate.minAge === ageCutoff) {\r\n return (generatedRate.maxAge !== undefined && generatedRate.maxAge >= ageCutoff);\r\n }\r\n else {\r\n return ((generatedRate.minAge <= inputRate.minAge) && (generatedRate.maxAge !== undefined && generatedRate.maxAge >= inputRate.maxAge!));\r\n }\r\n}\r\n\r\nconst rangeMatchesCutoffRate = (inputRate: Rate, generatedRate: AgeRange) => {\r\n return generatedRate.minAge >= inputRate.minAge && generatedRate.minAge <= (inputRate.maxAge || 0);\r\n}\r\n\r\nconst rateMatches = (inputRate: Rate, generatedRate: Rate, ageCutoff: number) => {\r\n const getRateKey = (rate: Rate) => `${rate.rateTypeId}\r\n ${rate.coverageLevelId || ''}\r\n ${rate.memberLevelId || ''}`\r\n return getRateKey(inputRate) === getRateKey(generatedRate) && (rangeMatchesRate(inputRate, generatedRate, ageCutoff) || rangeMatchesCutoffRate(inputRate, generatedRate));\r\n}\r\n\r\nconst mergeInputRatesMapCallback = (inputRates: Rate[], ageCutoff: number = 65) => (generatedRate: Rate) => ({\r\n ...inputRates.find(r => rateMatches(r, generatedRate, ageCutoff)),\r\n ...generatedRate\r\n})\r\n\r\nexport function generateDefaultAgeBandedRates(inputRates: Rate[], ageCutoff: number, minAge18: boolean): Rate[] {\r\n const ageBandedRateTypeId = getLookupId('AGEBANDED', LOOKUP_TYPE_IDS.planRateType);\r\n \r\n return generateAgeRanges(ageCutoff, minAge18).map(range => {\r\n return {\r\n ...range,\r\n id: '',\r\n rateTypeId: ageBandedRateTypeId\r\n }\r\n })\r\n .map(mergeInputRatesMapCallback(inputRates, ageCutoff))\r\n}\r\n\r\nexport function generateDefaultAgeBandedTiersRates(inputRates: Rate[], minAge18: boolean, tobaccoExtraRates: boolean, participants?: Participant[], ageCutoff?: number): Rate[] {\r\n const ageBandedTiersRateTypeId = getLookupId('AGEBANDEDTIERS', LOOKUP_TYPE_IDS.planRateType);\r\n return generateAgeRanges(ageCutoff, minAge18).map(range => {\r\n return getCoverageLevels().map(coverageLevel => {\r\n return {\r\n ...range,\r\n id: '',\r\n coverageLevelId: coverageLevel.id,\r\n rateTypeId: ageBandedTiersRateTypeId\r\n \r\n } as Rate\r\n })\r\n })\r\n .reduce((prev, cur) => prev.concat(cur), [])\r\n .map(mergeInputRatesMapCallback(inputRates, ageCutoff))\r\n}\r\n\r\nexport function generateDefaultAgeBandedIndividualRates(inputRates: Rate[], participants?: Participant[], ageCutoff?: number): Rate[] {\r\n const ageBandedIndividualRateTypeId = getLookupId('AGEBANDEDINDIVIDUAL', LOOKUP_TYPE_IDS.planRateType);\r\n return generateAgeRanges(ageCutoff).map(range => {\r\n return getAllowedMemberLevelsForParticipants(participants).map(memberLevelId => {\r\n return {\r\n id: '',\r\n ...range,\r\n memberLevelId: memberLevelId,\r\n rateTypeId: ageBandedIndividualRateTypeId\r\n } as Rate\r\n })\r\n })\r\n .reduce((prev, cur) => prev.concat(cur), [])\r\n .map(mergeInputRatesMapCallback(inputRates, ageCutoff))\r\n}\r\n\r\nexport function generateDefaultCoverageLevelRates(inputRates: Rate[]): Rate[] {\r\n const compositeRateTypeId = getLookupId('COMPOSITE', LOOKUP_TYPE_IDS.planRateType);\r\n return getCoverageLevels()\r\n .map((lookup) => {\r\n const matchingRate = inputRates.find(x => x.coverageLevelId === lookup.id);\r\n if (matchingRate) {\r\n return matchingRate;\r\n }\r\n return {\r\n id: '',\r\n rateTypeId: compositeRateTypeId,\r\n coverageLevelId: lookup.id,\r\n minAge: 0,\r\n maxAge: 0\r\n } as Rate;\r\n });\r\n}\r\n\r\nconst getAllowedMemberLevelsForParticipants = (participants?: Participant[]) => {\r\n const employeeParticipantId = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.participationOptions);\r\n const spouseParticipantArray = [getLookupId('SPOUSE', LOOKUP_TYPE_IDS.participationOptions), getLookupId('DOMESTICPARTNER', LOOKUP_TYPE_IDS.participationOptions)];\r\n const childParticipantId = getLookupId('CHILD', LOOKUP_TYPE_IDS.participationOptions);\r\n\r\n const includeEmployeeRates = !participants || participants.some(part => part.participantTypeId === employeeParticipantId && part.isAllowed);\r\n const includeSpouseRates = !participants || participants.some(part => spouseParticipantArray.includes(part.participantTypeId) && part.isAllowed);\r\n const includeChildRates = !participants || participants.some(part => part.participantTypeId === childParticipantId && part.isAllowed);\r\n\r\n const EE = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.memberLevel);\r\n const ES = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.memberLevel);\r\n const EC = getLookupId('PERCHILD', LOOKUP_TYPE_IDS.memberLevel);\r\n return [EE, ES, EC].filter(memberLevel =>\r\n (memberLevel === EE && includeEmployeeRates) ||\r\n (memberLevel === ES && includeSpouseRates) ||\r\n (memberLevel === EC && includeChildRates)\r\n )\r\n}\r\n\r\nexport function generateDefaultIndividualRates(inputRates: Rate[], participants?: Participant[]): Rate[] {\r\n const individualRateTypeId = getLookupId('INDIVIDUAL', LOOKUP_TYPE_IDS.planRateType);\r\n\r\n return getAllowedMemberLevelsForParticipants(participants).map(memberLevelId => {\r\n const matchingRate = inputRates.find(x => x.memberLevelId === memberLevelId);\r\n if (matchingRate) {\r\n return matchingRate;\r\n } else {\r\n return {\r\n id: '',\r\n rateTypeId: individualRateTypeId,\r\n memberLevelId: memberLevelId,\r\n minAge: 0,\r\n maxAge: 0\r\n }\r\n }\r\n })\r\n}\r\n\r\nexport function generateAgeReductionsList(): AgeReduction[] {\r\n return [\r\n {\r\n id: '',\r\n minAge: 65,\r\n maxAge: 69,\r\n amount: undefined,\r\n },\r\n {\r\n id: '',\r\n minAge: 70,\r\n maxAge: 74,\r\n amount: undefined,\r\n },\r\n {\r\n id: '',\r\n minAge: 75,\r\n maxAge: 79,\r\n amount: undefined,\r\n },\r\n {\r\n id: '',\r\n minAge: 80,\r\n maxAge: 999,\r\n amount: undefined,\r\n },\r\n ];\r\n}\r\n\r\nexport function getDefaultRateTypeId(locId: number) {\r\n const ageBandedRateTypeId = getLookupId('AGEBANDED', LOOKUP_TYPE_IDS.planRateType);\r\n const ageBandedTiersRateTypeId = getLookupId('AGEBANDEDTIERS', LOOKUP_TYPE_IDS.planRateType);\r\n const flatRateTypeId = getLookupId('FLAT', LOOKUP_TYPE_IDS.planRateType);\r\n\r\n var planRates = getRateTypes(locId).map(r => r.id)\r\n const defaultRateTypeId =\r\n planRates.find(i => i === flatRateTypeId) || // try to default to flat rate if available\r\n planRates.find(i => i === ageBandedRateTypeId) || // try to default to age band if available\r\n planRates.find(i => i === ageBandedTiersRateTypeId) || // otherwise try to default to age band tiers\r\n ageBandedRateTypeId; // otherwise just default to age band\r\n return defaultRateTypeId;\r\n}\r\n\r\n\r\nexport function getDefaultContributionLevelId(locId: number) {\r\n return getDisabilityLOCS().concat(getLifeLOCS())\r\n .map(lookup => lookup.id)\r\n .includes(locId) ? getLookupId('MEMBERLEVEL', LOOKUP_TYPE_IDS.contributionLevel) : getLookupId('COVERAGELEVEL', LOOKUP_TYPE_IDS.contributionLevel);\r\n}\r\n\r\nexport function generateContributionList(contributionLevelId: number, contributionModelType: number, participants?: Participant[]): Contribution[] {\r\n const memberLevelContributionId = getLookupId('MEMBERLEVEL', LOOKUP_TYPE_IDS.contributionLevel);\r\n const memberLevelContributionTotalDependentsTypeId = getLookupId('MEMBERLEVELTOTALDEPENDENTS', LOOKUP_TYPE_IDS.contributionLevel);\r\n const coverageLevelContributionId = getLookupId('COVERAGELEVEL', LOOKUP_TYPE_IDS.contributionLevel);\r\n const basePlanContributionLevelId = getLookupId('BASEPLANLEVEL', LOOKUP_TYPE_IDS.contributionLevel);\r\n\r\n const employeeParticipantId = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.participationOptions);\r\n const spouseParticipantArray = [getLookupId('SPOUSE', LOOKUP_TYPE_IDS.participationOptions), getLookupId('DOMESTICPARTNER', LOOKUP_TYPE_IDS.participationOptions)];\r\n const childParticipantId = getLookupId('CHILD', LOOKUP_TYPE_IDS.participationOptions);\r\n\r\n const EE = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.memberLevel);\r\n const ES = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.memberLevel);\r\n const EC = getLookupId('PERCHILD', LOOKUP_TYPE_IDS.memberLevel);\r\n\r\n const employeeOnly = getLookupId('EMPLOYEEMEMBERTOTAL', LOOKUP_TYPE_IDS.memberLevelContributionsByTotalDependents)\r\n const totalDependents = getLookupId('TOTALDEPENDENTSMEMBERTOTAL', LOOKUP_TYPE_IDS.memberLevelContributionsByTotalDependents)\r\n\r\n const participantAllowsEmployee = !participants || participants.some(part => part.participantTypeId === employeeParticipantId && part.isAllowed);\r\n const participantAllowsSpouse = !participants || participants.some(part => spouseParticipantArray.includes(part.participantTypeId) && part.isAllowed);\r\n const participantAllowsChild = !participants || participants.some(part => part.participantTypeId === childParticipantId && part.isAllowed);\r\n // plans with a base plan have no contributions\r\n if (contributionLevelId === basePlanContributionLevelId) {\r\n return []\r\n }\r\n else if (contributionLevelId === coverageLevelContributionId) {\r\n return getCoverageLevels()\r\n .map(lookup => ({\r\n id: '',\r\n contributionModelTypeId: contributionModelType,\r\n contributionLevelId: contributionLevelId,\r\n coverageLevelId: lookup.id\r\n }));\r\n } else if (contributionLevelId === memberLevelContributionId) {\r\n const contributions: Contribution[] = [];\r\n\r\n if (participantAllowsEmployee) {\r\n contributions.push({\r\n id: '',\r\n contributionModelTypeId: contributionModelType,\r\n contributionLevelId: contributionLevelId,\r\n memberLevelId: EE\r\n });\r\n }\r\n\r\n if (participantAllowsSpouse) {\r\n contributions.push({\r\n id: '',\r\n contributionModelTypeId: contributionModelType,\r\n contributionLevelId: contributionLevelId,\r\n memberLevelId: ES\r\n });\r\n }\r\n\r\n if (participantAllowsChild) {\r\n contributions.push({\r\n id: '',\r\n contributionModelTypeId: contributionModelType,\r\n contributionLevelId: contributionLevelId,\r\n memberLevelId: EC\r\n });\r\n }\r\n\r\n return contributions;\r\n } else if (contributionLevelId === memberLevelContributionTotalDependentsTypeId) {\r\n const contributions: Contribution[] = [];\r\n\r\n if (participantAllowsEmployee\r\n ) {\r\n contributions.push({\r\n id: '',\r\n contributionModelTypeId: contributionModelType,\r\n contributionLevelId: contributionLevelId,\r\n memberLevelTotalDependentsId: employeeOnly\r\n });\r\n }\r\n if (participantAllowsChild || participantAllowsSpouse) {\r\n contributions.push({\r\n id: '',\r\n contributionModelTypeId: contributionModelType,\r\n contributionLevelId: contributionLevelId,\r\n memberLevelTotalDependentsId: totalDependents\r\n });\r\n }\r\n\r\n return contributions;\r\n } else {\r\n return [];\r\n }\r\n};\r\n\r\nexport function generateParticipantsList(lineOfCoverageId: number) {\r\n const employeeId = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.participationOptions);\r\n const spouseId = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.participationOptions);\r\n const domPartnerId = getLookupId('DOMESTICPARTNER', LOOKUP_TYPE_IDS.participationOptions);\r\n const childId = getLookupId('CHILD', LOOKUP_TYPE_IDS.participationOptions);\r\n const medicalId = getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const dentalId = getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const visionId = getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const childLifeId = getLookupId('CHILDLIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const spouseLifeId = getLookupId('SPOUSELIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const shortDisability = getLookupId('STD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const longDisability = getLookupId('LTD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const accident = getLookupId('ACCIDENT', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const hospital = getLookupId('HOSPITAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const critical = getLookupId('CRITICALILLNESS', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const identity = getLookupId('IDENTITYPROTECTION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const gaploc = getLookupId('GAPLOC', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const selectAllParticipants = lineOfCoverageId === medicalId || lineOfCoverageId === dentalId || lineOfCoverageId === visionId ||\r\n lineOfCoverageId === accident || lineOfCoverageId === hospital || lineOfCoverageId === critical || lineOfCoverageId === identity \r\n || lineOfCoverageId === gaploc;\r\n if (selectAllParticipants) {\r\n return getParticipationOptions()\r\n .map(lookup => ({\r\n id: '',\r\n participantTypeId: lookup.id,\r\n isAllowed: true,\r\n }));\r\n } else if (lineOfCoverageId === childLifeId) {\r\n return getParticipationOptions()\r\n .map(lookup => ({\r\n id: '',\r\n participantTypeId: lookup.id,\r\n isAllowed: lookup.id === childId,\r\n }));\r\n } else if (lineOfCoverageId === spouseLifeId) {\r\n return getParticipationOptions()\r\n .map(lookup => ({\r\n id: '',\r\n participantTypeId: lookup.id,\r\n isAllowed: lookup.id === spouseId || lookup.id === domPartnerId,\r\n }));\r\n } else if (lineOfCoverageId === shortDisability || lineOfCoverageId === longDisability) {\r\n return getParticipationOptions()\r\n .map(lookup => ({\r\n id: '',\r\n participantTypeId: lookup.id,\r\n isAllowed: lookup.id === employeeId,\r\n }));\r\n\r\n } else {\r\n return getParticipationOptions()\r\n .map(lookup => ({\r\n id: '',\r\n participantTypeId: lookup.id,\r\n isAllowed: lookup.id === employeeId,\r\n }));\r\n }\r\n};","import memoizeOne from \"memoize-one\";\r\nimport moment from 'moment';\r\nimport { CarrierList, Employee, EmployeeReducerState, EnrollmentReducerState, Plan, CarrierConfigurations } from \"redux/reducers\";\r\nimport { CONFIGURATION_TYPE_IDS } from \"./employee_utils\";\r\nimport { generateDefaultAgeBandedIndividualRates, generateDefaultAgeBandedRates, generateDefaultAgeBandedTiersRates, generateDefaultCoverageLevelRates, generateDefaultIndividualRates } from \"./generator_funcs\";\r\nimport { getBenefitAmountLOCs, getLookupId, isVoluntaryLOC, isVoluntaryLOCOrBaseLOC, LOOKUP_TYPE_IDS, getLookupValue } from \"./lookup_utils\";\r\n\r\nexport const plansSetupCompleteCheck = memoizeOne((plans: Plan[], employees: EmployeeReducerState, enrollment: EnrollmentReducerState) => {\r\n const plansAreChecked = plansCheck(plans);\r\n const companyIsCheck = companyInfoCheck(enrollment);\r\n const plansRatesCheck = ratesCheck(plans);\r\n return {\r\n plansCheck: plansAreChecked,\r\n ratesCheck: plansRatesCheck,\r\n companyInfoCheck: companyIsCheck,\r\n confirmEnrollmentCheck: plansAreChecked && companyIsCheck,\r\n missingInfoCheck: plansAreChecked && plansRatesCheck\r\n };\r\n});\r\n\r\nexport const plansLevelFundedRatesCheck = memoizeOne((plans: Plan[]) => {\r\n // go through level funded plans and check if rates have been updated\r\n let lfPlans = plans.filter(plan => plan.levelFundedPlan);\r\n if (lfPlans.length === 0) return true;\r\n else return lfPlans.every(plan => plan.ratesUpdated);\r\n});\r\n\r\n\r\n\r\nexport const companyInfoCheck = memoizeOne((enrollment: EnrollmentReducerState) => {\r\n return !!enrollment.company.name && !!enrollment.groupSize && !!enrollment.company.ein;\r\n});\r\n\r\nexport const plansCheck = memoizeOne((plans: Plan[]) => {\r\n let checks: boolean[] = [];\r\n checks.push(plans.every(plan => planSetupCompleteCheck(plan)));\r\n checks.push(planExistenceCheck(plans));\r\n return checks.every(check => check);\r\n});\r\n\r\nexport const ratesCheck = memoizeOne((plans: Plan[]) => {\r\n return plans.every(plan => planRatesCheck(plan));\r\n})\r\n\r\nexport const planSetupCompleteCheck = memoizeOne((plan: Plan) => {\r\n return planBenefitsCheck(plan) && planValidDatesCheck(plan);\r\n});\r\n\r\nexport const planRatesCheck = memoizeOne((plan: Plan) => {\r\n let maxAge = 65;\r\n let minAge18 = false;\r\n let tobaccoExtraRates = false;\r\n if (plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.minAge18)) minAge18 = true;\r\n if (plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.tobaccoExtraRates)) tobaccoExtraRates = true;\r\n if (plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.maxAge70)) maxAge = 70;\r\n if (plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.maxAge80)) maxAge = 80;\r\n if (plan.rateTypeId === getLookupId(\"AGEBANDED\", LOOKUP_TYPE_IDS.planRateType)) {\r\n const adjustedRates = generateDefaultAgeBandedRates(plan.rates, maxAge, minAge18);\r\n return adjustedRates.every(rate => typeof rate.amount === 'number' || (typeof rate.femaleAmount === 'number' && typeof rate.maleAmount === 'number'));\r\n }\r\n else if (plan.rateTypeId === getLookupId(\"COMPOSITE\", LOOKUP_TYPE_IDS.planRateType) || plan.rateTypeId === getLookupId(\"FLAT\", LOOKUP_TYPE_IDS.planRateType)) {\r\n const adjustedRates = generateDefaultCoverageLevelRates(plan.rates);\r\n return adjustedRates.every(rate => typeof rate.amount === 'number');\r\n }\r\n else if (plan.rateTypeId === getLookupId(\"INDIVIDUAL\", LOOKUP_TYPE_IDS.planRateType)) {\r\n const adjustedRates = generateDefaultIndividualRates(plan.rates, plan.participants);\r\n return adjustedRates.every(rate => typeof rate.amount === 'number');\r\n }\r\n else if (plan.rateTypeId === getLookupId(\"AGEBANDEDTIERS\", LOOKUP_TYPE_IDS.planRateType)) {\r\n const adjustedRates = generateDefaultAgeBandedTiersRates(plan.rates, minAge18, tobaccoExtraRates, plan.participants, maxAge);\r\n return adjustedRates.every(rate => typeof rate.amount === 'number');\r\n }\r\n else if (plan.rateTypeId === getLookupId(\"AGEBANDEDINDIVIDUAL\", LOOKUP_TYPE_IDS.planRateType)) {\r\n const adjustedRates = generateDefaultAgeBandedIndividualRates(plan.rates, plan.participants, maxAge);\r\n return adjustedRates.every(rate => typeof rate.amount === 'number');\r\n }\r\n return false;\r\n});\r\n\r\nexport const planBenefitsCheck = memoizeOne((plan: Plan) => {\r\n const benefitAmountLOCs = getBenefitAmountLOCs();\r\n return ((!!plan.benefitAmountTypeId && !!plan.benefitAmount) || benefitAmountLOCs.find(x => x === plan.lineOfCoverageId) === undefined);\r\n});\r\n\r\nexport const planValidDatesCheck = memoizeOne((plan: Plan) => {\r\n return !!plan.effectiveDate && !plan.effectiveDate.isBefore(moment().startOf('day').add(-30, \"days\"));\r\n});\r\n\r\nexport const planExistenceCheck = memoizeOne((plan: Plan[]) => {\r\n return plan.length > 0;\r\n});\r\n\r\nexport const employeesExistenceCheck = memoizeOne((employees: Employee[]) => {\r\n return employees.length > 0;\r\n});\r\n\r\nexport const filterCarriers = memoizeOne((baseLocId: number, carriers: CarrierList[], plans: Plan[], allowCustomPlans: boolean, showNonCustomPlanCarriers: boolean, otherCarrierName?: string) => {\r\n if (baseLocId <= 0) return [];\r\n const isLocVoluntary = isVoluntaryLOCOrBaseLOC(baseLocId);\r\n let _carriers: CarrierList[] = carriers.slice();\r\n let _customPlanIsAllowed = allowCustomPlans;\r\n let _otherCarrierName = otherCarrierName;\r\n if (isLocVoluntary) {\r\n const voluntaryPlan = plans.find(p => isVoluntaryLOCOrBaseLOC(p.lineOfCoverageId));\r\n _carriers = !!voluntaryPlan ? _carriers.filter(c => c.carrierCode === voluntaryPlan.carrierCode) : _carriers;\r\n _otherCarrierName = (!!voluntaryPlan && voluntaryPlan.carrierCode === 'CUSTOM') ? voluntaryPlan.carrierName.replace('Other:', '').trim() : _otherCarrierName;\r\n _customPlanIsAllowed = (!voluntaryPlan || voluntaryPlan.carrierCode === 'CUSTOM') && allowCustomPlans;\r\n }\r\n // remove other from Sales Force if any\r\n if (showNonCustomPlanCarriers) {\r\n _carriers = _carriers.filter(c => c.carrierCode !== 'OTHER');\r\n } else {\r\n _carriers = _carriers.filter(c => c.carrierCode !== 'OTHER' && c.customPlanAllowed);\r\n }\r\n // add other if allowed\r\n if (_customPlanIsAllowed) {\r\n _carriers.push({\r\n carrierCode: 'OTHER',\r\n carrierLogo: '',\r\n carrierName: _otherCarrierName ? `Other: ${_otherCarrierName}` : 'Other',\r\n customPlanAllowed: true\r\n });\r\n }\r\n return _carriers;\r\n});\r\n\r\nexport const IsCustomCarrierPlanExist = memoizeOne((plans: Plan[]) => {\r\n //IsCustom is an additional check to find if its a custom plan, checking CarrierCode = CUSTOM would also serve, its an additional check\r\n return plans.filter(p => p.isCustom && p.carrierCode.toUpperCase() === 'CUSTOM').length > 0;\r\n});\r\n\r\nexport const IsCustomCarrierPlan = memoizeOne((plan: Plan) => {\r\n //IsCustom is an additional check to find if its a custom plan, checking CarrierCode = CUSTOM would also serve, its an additional check\r\n return (plan.isCustom && plan.carrierCode.toUpperCase() === 'CUSTOM');\r\n});\r\n\r\nexport const getCarrierConfigurations = (list: Plan[]) => {\r\n let carrierConfigurations: CarrierConfigurations[] = [];\r\n for (let x = 0, len = list.length; x < len; x++) {\r\n const plan = list[x];\r\n if (carrierConfigurations.findIndex(d => d.carrierCode === plan.carrierCode) === -1) {\r\n carrierConfigurations.push({\r\n carrierCode: plan.carrierCode,\r\n configurationTypeIds: plan.configurationTypeIds\r\n })\r\n }\r\n }\r\n return carrierConfigurations;\r\n}\r\n\r\n\r\nexport const getCarrierConfigConfigurationTypes = (carrierCode: string, carrierConfigurations: CarrierConfigurations[]) => {\r\n const filteredCarriers = carrierConfigurations.filter((c) => {\r\n return c.carrierCode === carrierCode;\r\n });\r\n\r\n if (filteredCarriers.length > 0) {\r\n return filteredCarriers[0].configurationTypeIds;\r\n }\r\n\r\n return [];\r\n}\r\n\r\nexport const showMetLifeWarning = (plan?: Plan) => {\r\n var showWarning = plan && plan.carrierCode === getLookupValue('HYATLEGALCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n return showWarning;\r\n}\r\nexport const showCarrierWarningSubmission = (name: string, plans: string[], specificCarrier: string = \"\") => { \r\n // specific carrier is used by Humana, for now, to do an extra check\r\n if (specificCarrier == \"\"){\r\n return plans.includes(name);\r\n }\r\n else if (name == specificCarrier)\r\n {\r\n return plans.includes(name);\r\n }\r\n return false;\r\n\r\n}","import { PlanQuestion, QuestionAnswer } from \"redux/reducers\";\r\n\r\nexport interface DependentAnswer {\r\n memberId: number,\r\n value?: string\r\n}\r\n\r\nexport interface PlanQuestionsAnswer {\r\n parentQuestionId?: string,\r\n questionId: string,\r\n questionText: string,\r\n questionKey: string,\r\n answers: DependentAnswer[]\r\n hasChildren: boolean;\r\n isChildQuestion: boolean;\r\n inputType?: string;\r\n}\r\n\r\nexport interface PlanQuestionsData {\r\n questions: PlanQuestionsAnswer[]\r\n}\r\n\r\nexport const getAnswers = (planQuestionAnswers: PlanQuestionsAnswer[]): QuestionAnswer[] | undefined => {\r\n if (!planQuestionAnswers) return undefined;\r\n return planQuestionAnswers.map(question => (\r\n {\r\n parentQuestionId: question.parentQuestionId,\r\n questionId: question.questionId,\r\n questionKey: question.questionKey,\r\n questionText: question.questionText,\r\n questionTypeId: 0,\r\n answers: question.answers\r\n }\r\n ))\r\n};\r\n\r\nexport const questionFlattener = (questionArray: PlanQuestion[], selectedMemberLevels: Set, savedAnswers: QuestionAnswer[], isChild?: boolean) => {\r\n let flattenedQuestionAnswers: PlanQuestionsAnswer[] = [];\r\n questionArray.forEach((question: PlanQuestion) => {\r\n let savedQuestion = savedAnswers.find(qa =>\r\n qa.questionId === question.questionId && qa.questionKey === question.questionKey);\r\n let answer: PlanQuestionsAnswer = {\r\n questionId: question.questionId,\r\n questionKey: question.questionKey,\r\n questionText: question.questionText,\r\n hasChildren: question.childQuestions && question.childQuestions.length > 0 ? true : false,\r\n isChildQuestion: isChild === true,\r\n inputType: question.inputType,\r\n answers: question.memberLevelIds\r\n .filter(id => selectedMemberLevels.has(id))\r\n .map(memberLevelId => ({\r\n memberId: memberLevelId,\r\n value: savedQuestion\r\n && savedQuestion.answers.filter(a => a.memberId === memberLevelId).map(a => a.value).find(a => true)\r\n }))\r\n }\r\n flattenedQuestionAnswers.push(answer);\r\n if (question.childQuestions && question.childQuestions.length !== 0) {\r\n let result: PlanQuestionsAnswer[] = questionFlattener(question.childQuestions, selectedMemberLevels, savedAnswers)\r\n flattenedQuestionAnswers = flattenedQuestionAnswers.concat(result.map(res => ({\r\n ...res,\r\n isChildQuestion: true,\r\n parentQuestionId: question.questionId\r\n })));\r\n }\r\n })\r\n return flattenedQuestionAnswers;\r\n}\r\n\r\nexport const capitalize = (string: string) => {\r\n if (typeof string !== 'string') return ''\r\n return string.charAt(0).toUpperCase() + string.slice(1)\r\n}","import { getLookupId, LOOKUP_TYPE_IDS } from \"./lookup_utils\";\r\n\r\nexport type RateType = 'AGEBANDED' | 'COMPOSITE' | 'INDIVIDUAL' | 'AGEBANDEDTIERS' | 'AGEBANDEDINDIVIDUAL' | 'FLAT';\r\nexport function getRateTypeFromId(rateTypeId: string | number | null | undefined): RateType | undefined {\r\n const rateTypes: RateType[] = [\r\n 'AGEBANDED',\r\n 'COMPOSITE',\r\n 'INDIVIDUAL',\r\n 'AGEBANDEDTIERS',\r\n 'AGEBANDEDINDIVIDUAL',\r\n 'FLAT'\r\n ]\r\n return rateTypes.find(rateType => getLookupId(rateType, LOOKUP_TYPE_IDS.planRateType) === parseInt((rateTypeId || '').toString()))\r\n}","import canvasUtil from \"./canvas_util\";\r\n\r\nclass ScrollUtility{\r\n\r\n scrollToTop(){\r\n window.scrollTo(0, 0);\r\n if(canvasUtil.isCanvas()){\r\n canvasUtil.scrollToTop();\r\n }\r\n }\r\n}\r\n\r\nconst scrollUtility = new ScrollUtility();\r\nexport default scrollUtility;","import auth from \"./auth\";\r\nimport moment from 'moment';\r\nimport canvasUtil from \"./canvas_util\";\r\nimport http from \"./http\";\r\nimport logger from \"./logger_utility\";\r\n\r\nclass SessionUtility {\r\n lastActivityTime: any = moment.utc();\r\n sessionExpireCountDown: any;\r\n sessionWarningCountDown: any;\r\n onWarningCallBack: any;\r\n onExpireCallBack: any;\r\n\r\n\r\n private refreshTokenTimeoutId: any;\r\n refreshCanvasTokenPeriodically() {\r\n if (canvasUtil.isCanvas()) {\r\n this.refreshTokenTimeoutId = setInterval(() => {\r\n if (this.isUserActive()) {\r\n canvasUtil.getCanvasSignedRequest().then((signedRequest: string) => {\r\n logger.log(\"Periodic refresh of canvas token complete.\");\r\n });\r\n } else {\r\n logger.log(\"User is inactive. Not renewing the canvas token\");\r\n }\r\n }, 300000);\r\n }\r\n }\r\n\r\n setLastActivityTime() {\r\n this.lastActivityTime = moment.utc();\r\n }\r\n\r\n\r\n slideSession(onExpire: any, onWarning: any) {\r\n this.setLastActivityTime();\r\n this.onWarningCallBack = onWarning;\r\n this.onExpireCallBack = onExpire;\r\n this.trackSession();\r\n }\r\n\r\n private async refreshCanvasToken(signedRequest: string) {\r\n var url = `renew-canvas-token`;\r\n const data = await http(url, { method: 'POST', body: JSON.stringify({ signedToken: signedRequest }) });\r\n auth.jwt = data.token;\r\n logger.log(\"User token renewed via canvas\");\r\n this.trackSession();\r\n }\r\n\r\n private refreshToken() {\r\n if (canvasUtil.isCanvas()) {\r\n canvasUtil.getCanvasSignedRequest().then((signedRequest: string) => {\r\n this.refreshCanvasToken(signedRequest);\r\n });\r\n }\r\n else {\r\n if (!this.isUserActive()) {\r\n this.onWarningCallBack();\r\n return;\r\n }\r\n\r\n auth.refreshToken().then(() => {\r\n this.trackSession();\r\n logger.log(\"User token renewed\");\r\n });\r\n }\r\n }\r\n\r\n private getPercentage(num: number, per: number) {\r\n return Math.floor((num / 100) * per);\r\n }\r\n\r\n get decodedJWT() {\r\n if (canvasUtil.isCanvas())\r\n return auth.decodedJWT;\r\n\r\n return auth.decodedMsalJWT;\r\n }\r\n private isUserActive() {\r\n const tokenExpire = moment.unix(this.decodedJWT.exp);\r\n var lastActivityDuration = moment.duration(moment.utc().diff(this.lastActivityTime)).asMinutes();\r\n const notBefore = moment.unix(this.decodedJWT.nbf);\r\n var totalTime = moment.duration(tokenExpire.diff(notBefore)).asMinutes();\r\n totalTime = this.getPercentage(totalTime, 50);\r\n logger.log(`isUserActive Check: lastActivityDuration:${lastActivityDuration}-should be less than:${totalTime}`)\r\n if (lastActivityDuration < totalTime) {\r\n return true;\r\n }\r\n return true;\r\n }\r\n\r\n private clearOldTimeouts() {\r\n if (this.sessionExpireCountDown) {\r\n clearTimeout(this.sessionExpireCountDown);\r\n }\r\n\r\n if (this.sessionWarningCountDown) {\r\n clearTimeout(this.sessionWarningCountDown);\r\n }\r\n }\r\n\r\n private trackSession() {\r\n this.clearOldTimeouts();\r\n const tokenExpire = moment.unix(this.decodedJWT.exp);\r\n const sessionExpireDuration = moment.duration(tokenExpire.diff(moment.utc())).asMilliseconds();\r\n\r\n if (sessionExpireDuration < 0) {\r\n auth.logOut();\r\n return;\r\n }\r\n\r\n const twoMinuteWarningTime = 60000 * 2;\r\n var sessionWarningDuration = sessionExpireDuration - twoMinuteWarningTime;\r\n\r\n let sessionWarningDurationInMin = sessionWarningDuration / 60000;\r\n logger.log(`SessionWarningDurationInMin: ${sessionWarningDurationInMin}`)\r\n\r\n\r\n this.sessionWarningCountDown = setTimeout(() => {\r\n this.refreshToken();\r\n }, sessionWarningDuration);\r\n\r\n this.sessionExpireCountDown = setTimeout(() => {\r\n this.onExpireCallBack();\r\n if (this.refreshTokenTimeoutId) {\r\n clearInterval(this.refreshTokenTimeoutId);\r\n }\r\n }, sessionExpireDuration);\r\n }\r\n\r\n}\r\n\r\nvar sessionUtility = new SessionUtility();\r\nexport default sessionUtility;","import memoizeOne from 'memoize-one';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\n\r\nconst daysText = (days: number) => {\r\n return (days > 1 ? 's' : null);\r\n}\r\n\r\nexport const durationInDays = (inputDate: moment.Moment, today: moment.Moment) => {\r\n return Math.round(moment.duration(inputDate.diff(today)).asDays());\r\n}\r\n\r\nexport const calculateTimeFrame = memoizeOne((startDate: moment.Moment, endDate: moment.Moment) => {\r\n const currentDt = moment().startOf('day');\r\n const start = durationInDays(startDate, currentDt);\r\n const end = durationInDays(endDate, currentDt);\r\n\r\n return {\r\n today: currentDt,\r\n startDays: start,\r\n endDays: end,\r\n startText: daysText(start),\r\n endText: daysText(end)\r\n };\r\n});\r\n\r\nexport const calculateEnrollmentTimeframe = memoizeOne((startDate: moment.Moment, endDate: moment.Moment, shortHand?: boolean) => {\r\n const enrollmentTime = calculateTimeFrame(startDate, endDate);\r\n const startDateElement = React.createElement('b', null, startDate.format('ll'));\r\n const endDateElement = React.createElement('b', null, endDate.format('ll'));\r\n const enrollmentStartDaysElement = React.createElement('b', null, enrollmentTime.startDays);\r\n const enrollmentEndDaysElement = React.createElement('b', null, enrollmentTime.endDays);\r\n if (moment(endDate).endOf('day').isBefore(enrollmentTime.today)) {\r\n if (shortHand)\r\n return {\r\n headline: React.createElement(React.Fragment, null, `Closed on `, endDateElement)\r\n };\r\n else\r\n return {\r\n headline: React.createElement(React.Fragment, null, `Enrollment closed on `, endDateElement),\r\n body: React.createElement('Fragment', null, `Enrollment took place from`, startDateElement, ` to `, endDateElement)\r\n };\r\n } else if (moment(startDate).startOf('day').isAfter(enrollmentTime.today) && enrollmentTime.startDays !== 0) {\r\n if (shortHand)\r\n return {\r\n headline: React.createElement(React.Fragment, null, enrollmentStartDaysElement, ` Day${enrollmentTime.startText || ''} Until Start`)\r\n };\r\n else\r\n return {\r\n headline: React.createElement(React.Fragment, null, enrollmentStartDaysElement, ` Day${enrollmentTime.startText || ''} Until Enrollment`),\r\n body: React.createElement('Fragment', null, `Employees will enroll from `, startDateElement, ` to `, endDateElement)\r\n };\r\n } else {\r\n if (shortHand)\r\n return {\r\n headline: React.createElement(React.Fragment, null, enrollmentEndDaysElement, ` Day${enrollmentTime.endText || ''} Remaining`)\r\n };\r\n else\r\n return {\r\n headline: React.createElement(React.Fragment, null, enrollmentEndDaysElement, ` Day${enrollmentTime.endText || ''} Remaining`),\r\n body: React.createElement('Fragment', null, `Employees have from `, startDateElement, ` to `, endDateElement, ` to complete their enrollments`)\r\n };\r\n }\r\n});\r\n\r\nexport const calculateAge = memoizeOne((birthday: moment.Moment, effectiveDate?: moment.Moment) => {\r\n const parsedDOB = birthday.startOf('day');\r\n const now = (effectiveDate || moment()).startOf('day');\r\n const durationDOB = moment.duration(now.diff(parsedDOB));\r\n let age = durationDOB.years();\r\n if (parsedDOB.date() === now.date() && parsedDOB.month() === now.month())\r\n age++;\r\n return age;\r\n});","import memoizeOne from 'memoize-one';\r\nimport { Lookup, RawLookup, WaitingPeriodOption } from '../redux/reducers';\r\nimport store from '../redux/store';\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility';\r\n\r\nexport const LOOKUP_TYPE_IDS = {\r\n planType: 2,\r\n carrier: 3,\r\n state: 4,\r\n planBenefit: 5,\r\n enrollmentStatus: 6,\r\n lineOfCoverage: 7,\r\n gender: 8,\r\n maritalStatus: 9,\r\n employmentStatus: 10,\r\n payrollCycle: 11,\r\n dependentType: 12,\r\n waivedReason: 13,\r\n metalLevel: 14,\r\n electionStatus: 15,\r\n cobraEvent: 16,\r\n document: 17,\r\n planRateType: 18,\r\n coverageLevel: 19,\r\n autoEnrollment: 20,\r\n phoneNumberType: 21,\r\n contributionModelType: 22,\r\n contributionLevel: 23,\r\n memberLevel: 24,\r\n baseLineOfCoverage: 26,\r\n benefitAmountType: 27,\r\n roundingMethod: 28,\r\n participationOptions: 29,\r\n contactMethod: 30,\r\n continuationMonths: 31,\r\n studentStatus: 32,\r\n medicareEligibilityStatus: 33,\r\n relationshipToPolicyHolder: 34,\r\n payouts: 35,\r\n beneficiaryType: 36,\r\n invitationStatus: 37,\r\n existingCoverageType: 38,\r\n workStatusType: 39,\r\n employerType: 40,\r\n agencyType: 41,\r\n startOfCoverage: 42,\r\n enrollmentType: 43,\r\n enrollmentSubmissionType: 44,\r\n carrierCode: 45,\r\n questionType: 46,\r\n documentType: 47,\r\n waitingPeriod: 48,\r\n memberLevelContributionsByTotalDependents: 50,\r\n hsaContributionMode: 51,\r\n enrolleeType: 52,\r\n companyType: 53,\r\n companyMarketSegmentCode: 54,\r\n turnOverRatio: 55,\r\n groupApplicationSubmissionStatus: 56,\r\n beneficiaryRelationship: 62,\r\n dependentRelationship: 63,\r\n tobaccoUse: 64,\r\n planFundingType: 65,\r\n};\r\n\r\nexport const AUTOENROLLMENT_TYPE_IDS = {\r\n employeesOnly: '210',\r\n employeesAndDependents: '211'\r\n}\r\n\r\nexport const USER_TYPE_IDS = {\r\n enrollmentUser: '1',\r\n enrollmentManager: '2',\r\n enrollmentAdmin: '3',\r\n enrollmentSuperAdmin: '4'\r\n}\r\n\r\nexport const ENROLLMENT_SUBMISSION_MECHANISMS = {\r\n eBN: 'eBN',\r\n autoGen: 'AutoGen',\r\n directToCarrier: 'DirectToCarrier',\r\n directToCarrierNoGroupApp: 'DirectToCarrierNoGroupApp',\r\n exportOnly: 'ExportOnly',\r\n}\r\n\r\nfunction filterOnType(values: Lookup, typeId: number, parentId?: number): RawLookup[] {\r\n const returnLookup: RawLookup[] = [];\r\n for (let id in values) {\r\n const value = values[id];\r\n if (value.typeId === typeId && (parentId && value.parentIds.length > 0 ? value.parentIds.indexOf(parentId) > -1 : true))\r\n returnLookup.push({\r\n id: Number(id),\r\n ...value\r\n });\r\n }\r\n returnLookup.sort((a, b) => {\r\n if (a.order < b.order) return -1;\r\n else if (a.order > b.order) return 1;\r\n else {\r\n if (a.value < b.value) return -1;\r\n else if (a.value > b.value) return 1;\r\n else return 0;\r\n }\r\n });\r\n return returnLookup;\r\n}\r\n\r\nfunction filterOnMultiType(values: Lookup, typeId: number, typeId2: number, typeId3: number, parentId?: number): RawLookup[] {\r\n const returnLookup: RawLookup[] = [];\r\n for (let id in values) {\r\n const value = values[id];\r\n if ((value.typeId === typeId || value.typeId === typeId2 || (typeId3!==0 && value.typeId === typeId3)) && (parentId && value.parentIds.length > 0 ? value.parentIds.indexOf(parentId) > -1 : true))\r\n returnLookup.push({\r\n id: Number(id),\r\n ...value\r\n });\r\n }\r\n returnLookup.sort((a, b) => {\r\n if (a.order < b.order) return -1;\r\n else if (a.order > b.order) return 1;\r\n else {\r\n if (a.value < b.value) return -1;\r\n else if (a.value > b.value) return 1;\r\n else return 0;\r\n }\r\n });\r\n return returnLookup;\r\n}\r\n\r\n\r\nfunction filterOnParent(values: Lookup, parentId: number): RawLookup[] {\r\n const returnLookup: RawLookup[] = [];\r\n for (let id in values) {\r\n const value = values[id];\r\n if (value.parentIds.indexOf(parentId) > -1)\r\n returnLookup.push({\r\n id: Number(id),\r\n ...value\r\n });\r\n }\r\n return returnLookup;\r\n}\r\n\r\nexport const getLookups = () => store.getState().lookup.values;\r\n\r\nexport const getLookupId = memoizeOne((keyValue: string, lookupTypeId: number) => {\r\n const values = getLookups();\r\n let idFound = -1;\r\n for (let id in values) {\r\n const val = values[id];\r\n if (val.typeId === lookupTypeId && (val.key.toLowerCase() === keyValue.toLowerCase() || val.value.toLowerCase() === keyValue.toLowerCase()))\r\n idFound = Number(id);\r\n }\r\n return idFound;\r\n});\r\n\r\nexport const getLookupValue = memoizeOne((key: string, lookupTypeId: number) => {\r\n const values = getLookups();\r\n let valueFound;\r\n for (let id in values) {\r\n const val = values[id];\r\n if (val.typeId === lookupTypeId && (val.key.toLowerCase() === key.toLowerCase()))\r\n valueFound = val.value;\r\n }\r\n return valueFound;\r\n});\r\n\r\nconst _getById = memoizeOne((values: Lookup, id: number) => {\r\n let lookup = values[id];\r\n return lookup ? lookup.value : undefined;\r\n});\r\nexport const getById = (id: number) => {\r\n return _getById(getLookups(), id);\r\n}\r\n\r\nconst _getKeyById = memoizeOne((values: Lookup, id: number) => {\r\n let lookup = values[id];\r\n return lookup ? lookup.key : undefined;\r\n});\r\nexport const getKeyById = (id: number) => {\r\n return _getKeyById(getLookups(), id);\r\n}\r\n\r\nconst _getAdditionalDataById = memoizeOne((values: Lookup, id: number) => {\r\n let lookup = values[id];\r\n return lookup ? JSON.parse(lookup.additionalDataJson) : undefined;\r\n});\r\nexport const getAdditionalDataById = (id: number) => {\r\n return _getAdditionalDataById(getLookups(), id);\r\n}\r\n\r\nconst _getPlanFundingType = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.planFundingType);\r\n});\r\n\r\nexport const getPlanFundingType = () => {\r\n const lookupValues = getLookups();\r\n return _getPlanFundingType(lookupValues);\r\n};\r\n\r\nconst _getLOCs = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.lineOfCoverage);\r\n});\r\nexport const getLOCs = () => {\r\n const lookupValues = getLookups();\r\n return _getLOCs(lookupValues);\r\n};\r\n\r\nconst _getWaitingPeriods = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.waitingPeriod);\r\n});\r\nexport const getWaitingPeriodsById = () => {\r\n const lookupValues = getLookups();\r\n var waitList = _getWaitingPeriods(lookupValues);\r\n var waitingPeriodOptions = waitList.map((wait) => {\r\n return {\r\n waitingPeriodTypeId: wait.id,\r\n waitingPeriodTypeName: wait.value\r\n } as WaitingPeriodOption\r\n })\r\n return waitingPeriodOptions;\r\n}\r\n\r\nconst _getBaseLOCs = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.baseLineOfCoverage);\r\n})\r\nexport const getBaseLOCs = () => {\r\n const lookupValues = getLookups();\r\n return _getBaseLOCs(lookupValues);\r\n}\r\n\r\nconst _getLOCsByBaseLOCKey = memoizeOne((values: Lookup, baseLOCKey: string) => {\r\n const baseLOCid = getLookupId(baseLOCKey, LOOKUP_TYPE_IDS.baseLineOfCoverage);\r\n return filterOnParent(values, baseLOCid);\r\n});\r\nexport const getLOCsByBaseLOC = (baseLOCKey: string) => {\r\n const lookupValues = getLookups();\r\n return _getLOCsByBaseLOCKey(lookupValues, baseLOCKey);\r\n};\r\n\r\nexport const getBenefitAmountLOCs = memoizeOne(() => {\r\n return getLOCsByBaseLOC(\"DISABILITY\").concat(getLOCsByBaseLOC(\"LIFE\")).map(x => x.id);\r\n});\r\n\r\nexport const getBaseLOCforLOC = memoizeOne((LOCId: number) => {\r\n const lookupValues = getLookups();\r\n const LOCLookup = lookupValues[LOCId];\r\n return LOCLookup.parentIds[0];\r\n});\r\n\r\nconst _getPlanTypes = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.planType);\r\n});\r\nexport const getPlanTypes = () => {\r\n const lookupValues = getLookups();\r\n return _getPlanTypes(lookupValues);\r\n};\r\n\r\nconst _getCarriers = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.carrier);\r\n});\r\nexport const getCarriers = () => {\r\n const lookupValues = getLookups();\r\n return _getCarriers(lookupValues);\r\n};\r\n\r\nconst _getStates = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.state);\r\n});\r\nexport const getStates = () => {\r\n const lookupValues = getLookups();\r\n return _getStates(lookupValues);\r\n};\r\n\r\nconst _getPlanBenefits = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.planBenefit);\r\n});\r\nexport const getPlanBenefits = () => {\r\n const lookupValues = getLookups();\r\n return _getPlanBenefits(lookupValues);\r\n};\r\n\r\nconst _getGenders = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.gender);\r\n});\r\nexport const getGenders = () => {\r\n const lookupValues = getLookups();\r\n return _getGenders(lookupValues);\r\n};\r\n\r\nconst _getTobaccoUse = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.tobaccoUse);\r\n});\r\nexport const getTobaccoUse = () => {\r\n const lookupValues = getLookups();\r\n return _getTobaccoUse(lookupValues);\r\n};\r\n\r\nconst _getMaritalStatus = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.maritalStatus);\r\n});\r\nexport const getMaritalStatus = () => {\r\n const lookupValues = getLookups();\r\n return _getMaritalStatus(lookupValues);\r\n};\r\nconst _getStudentStatus = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.studentStatus);\r\n});\r\nexport const getStudentStatus = () => {\r\n const lookupValues = getLookups();\r\n return _getStudentStatus(lookupValues);\r\n};\r\nconst _getMedicareEligibilityStatus = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.medicareEligibilityStatus);\r\n});\r\nexport const getMedicareEligibilityStatus = () => {\r\n const lookupValues = getLookups();\r\n return _getMedicareEligibilityStatus(lookupValues);\r\n};\r\n\r\nconst _getContactMethods = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.contactMethod);\r\n});\r\nexport const getContactMethods = () => {\r\n const lookupValues = getLookups();\r\n return _getContactMethods(lookupValues);\r\n};\r\n\r\nconst _getEmploymentStatus = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.employmentStatus).filter(status => status.key !== 'UNION' && status.key !== 'SEASONAL');\r\n});\r\nexport const getEmploymentStatus = () => {\r\n const lookupValues = getLookups();\r\n return _getEmploymentStatus(lookupValues);\r\n};\r\n\r\nconst _getIneligibleEmploymentStatus = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.employmentStatus);\r\n});\r\nexport const getIneligibleEmploymentStatus = () => {\r\n const lookupValues = getLookups();\r\n return _getIneligibleEmploymentStatus(lookupValues);\r\n};\r\n\r\nconst _getWorkStatus = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.workStatusType);\r\n});\r\nexport const getWorkStatus = () => {\r\n const lookupValues = getLookups();\r\n return _getWorkStatus(lookupValues);\r\n};\r\nexport const isEmployeeCobra = memoizeOne((employmentStatusId: number) => {\r\n const statusLookup = getLookups()[employmentStatusId];\r\n let cobraStatus = false;\r\n if (statusLookup) {\r\n let lookupValue = statusLookup.value.toLowerCase();\r\n if (lookupValue.includes('cobra') || lookupValue.includes('contin')) cobraStatus = true;\r\n }\r\n return cobraStatus;\r\n});\r\n\r\nconst _getPayrollCycles = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.payrollCycle);\r\n});\r\nexport const getPayrollCycles = () => {\r\n const lookupValues = getLookups();\r\n return _getPayrollCycles(lookupValues);\r\n};\r\n/* * The function below is used to return the regular dependent types */\r\nconst _getDependentTypes = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.dependentType);\r\n});\r\nexport const getDependentTypes = () => {\r\n const lookupValues = getLookups();\r\n return _getDependentTypes(lookupValues);\r\n};\r\n\r\n/* The function below is used to return the new relationship types added for dependents along with regular ones */\r\nconst _getDependentRelationship = memoizeOne((values: Lookup): RawLookup[] => {\r\n let dependentRelationship = filterOnMultiType(values, LOOKUP_TYPE_IDS.dependentType, LOOKUP_TYPE_IDS.dependentRelationship, 0);\r\n return dependentRelationship;\r\n});\r\nexport const getDependentRelationship = () => {\r\n const lookupValues = getLookups();\r\n return _getDependentRelationship(lookupValues);\r\n};\r\n\r\n/* The function below is used to return the combination of three types of lookup if Allstate is offered, otherwise just dependents alone */\r\nconst _getBeneficiaryRelationship = memoizeOne((values: Lookup, isAllstateOffered: boolean): RawLookup[] => {\r\n if (isAllstateOffered)\r\n return filterOnMultiType(values, LOOKUP_TYPE_IDS.dependentType, LOOKUP_TYPE_IDS.dependentRelationship, LOOKUP_TYPE_IDS.beneficiaryRelationship)\r\n else \r\n return _getDependentTypes(values);\r\n});\r\n\r\nexport const getBeneficiaryRelationship = (isAllstateOffered: boolean) => {\r\n const lookupValues = getLookups();\r\n return _getBeneficiaryRelationship(lookupValues, isAllstateOffered);\r\n};\r\n\r\nexport const checkForExistingCoverageEnforce = (selectedWaiverReason: number) => {\r\n const lookupValues = getLookups();\r\n let waiverReasons = _getWaivedReasons(lookupValues);\r\n //Removing this reason from showing up in UI - since this is for System-Use only\r\n const filteredReasons = waiverReasons.filter(r => r.key !== 'INELIGIBLEEMPLOYEE' && r.key !== 'KNOCKOUTPLANWAIVER' && r.key !== 'OTHER' && r.key !== 'DONOTWANT')\r\n .filter(r => r.id == selectedWaiverReason)\r\n return filteredReasons;\r\n}\r\n\r\nconst _getWaivedReasons = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.waivedReason);\r\n});\r\nexport const getWaivedReasons = () => {\r\n const lookupValues = getLookups();\r\n let waiverReasons = _getWaivedReasons(lookupValues);\r\n //Removing this reason from showing up in UI - since this is for System-Use only\r\n const filteredReasons = waiverReasons.filter(reason => reason.key !== 'INELIGIBLEEMPLOYEE' && reason.key !== 'KNOCKOUTPLANWAIVER')\r\n return filteredReasons;\r\n};\r\n\r\nconst _getMetalLevels = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.metalLevel);\r\n});\r\nexport const getMetalLevels = () => {\r\n const lookupValues = getLookups();\r\n return _getMetalLevels(lookupValues);\r\n};\r\n\r\nconst _getCobraEvents = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.cobraEvent);\r\n});\r\nexport const getCobraEvents = () => {\r\n const lookupValues = getLookups();\r\n return _getCobraEvents(lookupValues);\r\n};\r\n\r\nconst _getRateTypes = memoizeOne((values: Lookup, parentId?: number): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.planRateType, parentId);\r\n});\r\nexport const getRateTypes = (parentLOC?: number) => {\r\n const lookupValues = getLookups();\r\n return _getRateTypes(lookupValues, parentLOC);\r\n};\r\n\r\nconst _getContinuationMonths = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.continuationMonths);\r\n});\r\nexport const getContinuationMonths = () => {\r\n const lookupValues = getLookups();\r\n return _getContinuationMonths(lookupValues);\r\n};\r\n\r\nconst _getCoverageLevels = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.coverageLevel);\r\n});\r\nexport const getCoverageLevels = () => {\r\n const lookupValues = getLookups();\r\n return _getCoverageLevels(lookupValues);\r\n};\r\n\r\nconst _getParticipationOptions = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.participationOptions);\r\n});\r\nexport const getParticipationOptions = () => {\r\n const lookupValues = getLookups();\r\n return _getParticipationOptions(lookupValues);\r\n};\r\n\r\nconst _getContributionModelType = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.contributionModelType);\r\n});\r\nexport const getContributionModelType = () => {\r\n const lookupValues = getLookups();\r\n return _getContributionModelType(lookupValues);\r\n};\r\n\r\nconst _getContributionLevel = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.contributionLevel);\r\n});\r\nexport const getContributionLevel = () => {\r\n const lookupValues = getLookups();\r\n return _getContributionLevel(lookupValues);\r\n};\r\n\r\nconst _getMemberLevel = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.memberLevel);\r\n});\r\nexport const getMemberLevel = () => {\r\n const lookupValues = getLookups();\r\n return _getMemberLevel(lookupValues);\r\n};\r\n\r\nconst _getBenefitAmountType = memoizeOne((values: Lookup, parentId?: number): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.benefitAmountType, parentId);\r\n});\r\nexport const getBenefitAmountType = (loc?: number) => {\r\n const lookupValues = getLookups();\r\n return _getBenefitAmountType(lookupValues, loc);\r\n};\r\n\r\nconst _getRoundingMethod = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.roundingMethod);\r\n});\r\nexport const getRoundingMethod = () => {\r\n const lookupValues = getLookups();\r\n return _getRoundingMethod(lookupValues);\r\n};\r\n\r\nconst _getPayouts = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.payouts);\r\n});\r\nexport const getPayouts = () => {\r\n const lookupValues = getLookups();\r\n return _getPayouts(lookupValues);\r\n};\r\n\r\nconst _getEmployerTypes = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.employerType);\r\n});\r\nconst _getCompanyTypeTypes = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.companyType);\r\n});\r\nexport const getEmployerTypes = (configurationTypeIds: number[]) => {\r\n const lookupValues = getLookups();\r\n if (configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CCompanyInformationCompanyType))\r\n return _getCompanyTypeTypes(lookupValues); \r\n else\r\n return _getEmployerTypes(lookupValues);\r\n};\r\n\r\nconst _getAgencyTypes = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.agencyType);\r\n});\r\nexport const getAgencyTypes = () => {\r\n const lookupValues = getLookups();\r\n return _getAgencyTypes(lookupValues);\r\n};\r\n\r\nconst _getStartOfCoverage = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.startOfCoverage);\r\n});\r\nexport const getStartOfCoverage = () => {\r\n const lookupValues = getLookups();\r\n return _getStartOfCoverage(lookupValues);\r\n};\r\n\r\nconst _getEnrollmentTypes = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.enrollmentType);\r\n});\r\nexport const getEnrollmentTypes = () => {\r\n const lookupValues = getLookups();\r\n return _getEnrollmentTypes(lookupValues);\r\n};\r\n\r\nexport const annualPayrollCycles = (value: number) => {\r\n const payFrequencyMap = {\r\n 144: 365, //Daily\r\n 145: 52, //Weekly\r\n 146: 26, //Bi-weekly\r\n 147: 24, //Semi-monthly\r\n 148: 12, //Monthly\r\n 149: 4, //Quarterly\r\n 150: 2, //Semi-Annual\r\n 151: 1, //Annual\r\n }\r\n return payFrequencyMap[value]\r\n};\r\n\r\nexport const payrollCycleName = (value: number) => {\r\n const payFrequencyMap = {\r\n 365: \"Daily\",\r\n 52: \"Weekly\",\r\n 26: \"Bi-weekly\",\r\n 24: \"Semi-monthly\",\r\n 12: \"Monthly\",\r\n 4: \"Quarterly\",\r\n 2: \"Semi-Annual\",\r\n 1: \"Annual\",\r\n }\r\n return payFrequencyMap[value]\r\n};\r\n\r\nconst _getAutoEnrollments = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.autoEnrollment);\r\n});\r\nexport const getAutoEnrollments = () => {\r\n const lookupValues = getLookups();\r\n return _getAutoEnrollments(lookupValues);\r\n};\r\n\r\nexport const getSpouseDependentTypes = () => {\r\n const dependentTypes = getDependentTypes();\r\n return dependentTypes.filter(x => x.parentIds\r\n .filter(pId => pId === getLookupId('CHILD', LOOKUP_TYPE_IDS.participationOptions)).length ===\r\n 0);\r\n};\r\n\r\nexport const getSpouseTypeSet = () => {\r\n const spouseTypes = getSpouseDependentTypes();\r\n const result = new Set();\r\n spouseTypes.forEach(type => result.add(type.id));\r\n return result;\r\n}\r\n\r\nexport const getChildDependentTypes = (isAllstate: boolean = false) => {\r\n const dependentTypes = isAllstate ? getDependentRelationship() : getDependentTypes();\r\n return dependentTypes.filter(x => x.parentIds\r\n .filter(pId => pId === getLookupId('CHILD', LOOKUP_TYPE_IDS.participationOptions)).length >\r\n 0);\r\n}\r\n\r\nexport const getChildTypeSet = () => {\r\n const childTypes = getChildDependentTypes(true);\r\n const result = new Set();\r\n childTypes.forEach(type => result.add(type.id));\r\n return result;\r\n}\r\n\r\nexport const getLifeLOCS = () => {\r\n const lifeLOCS = getLOCs();\r\n return lifeLOCS.filter(x => x.parentIds.filter(pId => pId === getLookupId('BASELIFE', LOOKUP_TYPE_IDS.baseLineOfCoverage)).length > 0)\r\n}\r\n\r\nexport const getBasicAndSupplementalLifeLOC = () => {\r\n const lifeLOCS = getLOCs();\r\n const basicLifeId = getLookupId('GROUPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const supplementalLifeId = getLookupId('SUPPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n return lifeLOCS.filter(x => x.id === basicLifeId || x.id === supplementalLifeId);\r\n}\r\n\r\nexport const getDisabilityLOCS = () => {\r\n const disabilityLOCS = getLOCs();\r\n return disabilityLOCS.filter(x => x.parentIds.filter(pId => pId === getLookupId('BASEDISABILITY', LOOKUP_TYPE_IDS.baseLineOfCoverage)).length > 0)\r\n}\r\n\r\nconst _isLineOfCoverageOfBase = memoizeOne((baseName: string, locId: number) => {\r\n return getLOCs().filter(x => x.id === locId && x.parentIds.filter(pId => pId === getLookupId(baseName, LOOKUP_TYPE_IDS.baseLineOfCoverage)).length > 0).length > 0;\r\n});\r\nexport const isDisabilityLOC = (locId?: number) => {\r\n return !!locId && _isLineOfCoverageOfBase('BASEDISABILITY', locId);\r\n}\r\n\r\nexport const isLifeLOC = (locId?: number) => {\r\n return !!locId && _isLineOfCoverageOfBase('BASELIFE', locId);\r\n}\r\n\r\nexport const isLifeOrDisabilityLOC = (locId?: number) => {\r\n return !!locId && (isDisabilityLOC(locId) || isLifeLOC(locId));\r\n}\r\n\r\nexport const voluntaryLOCOrBaseKeys = [\"BASEACCIDENT\", \"BASECRITICALILLNESS\", \"BASEHOSPITAL\", \"ACCIDENT\", \"CRITICALILLNESS\", \"HOSPITAL\"];\r\nexport const isVoluntaryLOCOrBaseLOC = (locId: number) => {\r\n const loc = [...getLOCs(), ...getBaseLOCs()].find(x => voluntaryLOCOrBaseKeys.some(key => key === x.key) && x.id === locId);\r\n return !!loc;\r\n}\r\n\r\nexport const isVoluntaryLOC = (locId: number) => {\r\n return (_isLineOfCoverageOfBase('BASEACCIDENT', locId) || _isLineOfCoverageOfBase('BASECRITICALILLNESS', locId) || _isLineOfCoverageOfBase('BASEHOSPITAL', locId)\r\n || _isLineOfCoverageOfBase('ACCIDENT', locId) || _isLineOfCoverageOfBase('CRITICALILLNESS', locId) || _isLineOfCoverageOfBase('HOSPITAL', locId)\r\n || _isLineOfCoverageOfBase('BASEPETINSURANCE', locId)\r\n || _isLineOfCoverageOfBase('BASEIDENTITYPROTECTION', locId)\r\n || _isLineOfCoverageOfBase('BASELEGAL', locId));\r\n}\r\n\r\nexport const isElectiveVoluntaryLOC = (locId: number) => {\r\n return (_isLineOfCoverageOfBase('BASEPETINSURANCE', locId)\r\n || _isLineOfCoverageOfBase('BASELEGAL', locId)\r\n || _isLineOfCoverageOfBase('BASEIDENTITYPROTECTION', locId));\r\n}\r\n\r\nexport const isEmployeeOnlyLOC = (locId: number) => {\r\n return !!locId && (_isLineOfCoverageOfBase('BASEPETINSURANCE', locId)\r\n || _isLineOfCoverageOfBase('BASELEGAL', locId)\r\n || _isLineOfCoverageOfBase('BASEDISABILITY', locId)\r\n || isBasicLife(locId) || isSuppLife(locId)\r\n )\r\n}\r\nexport const getAllowedCoverageLevels = (locId: number) => {\r\n if (_isLineOfCoverageOfBase('BASEPETINSURANCE', locId) || _isLineOfCoverageOfBase('BASELEGAL', locId)) {\r\n return ['EE'];\r\n }\r\n if (_isLineOfCoverageOfBase('BASEIDENTITYPROTECTION', locId)) {\r\n return ['EE', 'EF'];\r\n }\r\n return [];\r\n}\r\n\r\nexport const isDental = (locId: number) => {\r\n return _isLineOfCoverageOfBase('BASEDENTAL', locId);\r\n}\r\n\r\nexport const isCriticalLOC = (locId: number, carrier: string) => {\r\n return !!locId && (_isLineOfCoverageOfBase('BASECRITICALILLNESS', locId) || _isLineOfCoverageOfBase('CRITICALILLNESS', locId));\r\n}\r\n\r\nexport const isHMO = (planTypeId: number) => {\r\n const planType = getPlanTypes().filter(a => a.id === planTypeId)[0].key;\r\n return planType.includes(\"HMO\");\r\n}\r\n\r\nconst _getRelationshipsToPolicyHolder = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.relationshipToPolicyHolder);\r\n});\r\nexport const getRelationshipsToPolicyHolder = () => {\r\n const lookupValues = getLookups();\r\n return _getRelationshipsToPolicyHolder(lookupValues);\r\n};\r\nconst _isLocTypeByKey = memoizeOne((locId: number, key: string) => {\r\n const lookupValues = getLookups();\r\n const lookup = lookupValues[locId];\r\n return lookup && lookup.key === key;\r\n});\r\n\r\nexport const isPet = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'PETINSURANCE');\r\n}\r\n\r\nexport const isLegal = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'LEGAL');\r\n}\r\n\r\nexport const isIdentity = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'IDENTITYPROTECTION');\r\n}\r\n\r\nexport const isSpouseLife = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'SPOUSELIFE');\r\n}\r\n\r\nexport const isChildLife = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'CHILDLIFE');\r\n}\r\n\r\nexport const isBasicLife = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'GROUPLIFE');\r\n}\r\n\r\nexport const isSuppLife = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'SUPPLIFE');\r\n}\r\n\r\nexport const isLTD = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'LTD');\r\n}\r\n\r\nexport const isSTD = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'STD');\r\n}\r\n\r\nexport const isGAP = (locId: number) => {\r\n return _isLocTypeByKey(locId, 'GAPLOC');\r\n}\r\n\r\nconst _getBeneficiaryTypes = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.beneficiaryType);\r\n});\r\nexport const getBeneficiaryTypes = () => {\r\n const lookupValues = getLookups();\r\n return _getBeneficiaryTypes(lookupValues);\r\n};\r\n\r\nconst _getExistingCoverageType = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.existingCoverageType);\r\n});\r\nexport const getExistingCoverageTypes = () => {\r\n const lookupValues = getLookups();\r\n return _getExistingCoverageType(lookupValues);\r\n};\r\n\r\nconst _getMemberLevelContributionsByTotalDependents = memoizeOne((values: Lookup): RawLookup[] => {\r\n return filterOnType(values, LOOKUP_TYPE_IDS.memberLevelContributionsByTotalDependents);\r\n});\r\nexport const getMemberLevelContributionsByTotalDependents = () => {\r\n const lookupValues = getLookups();\r\n return _getMemberLevelContributionsByTotalDependents(lookupValues);\r\n};","import React, { ComponentType } from 'react'\r\nimport { ApplicationInsights, ITelemetryItem, IEventTelemetry, IDependencyTelemetry } from '@microsoft/applicationinsights-web';\r\nimport { InferableComponentEnhancer, withContext, getContext } from 'recompose';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class TelemetryService {\r\n private instrumentationKey: string | undefined;\r\n private appInsights: ApplicationInsights | undefined;\r\n\r\n constructor() {\r\n this.instrumentationKey = process.env.REACT_APP_APP_INSIGHT_KEY;\r\n\r\n if (!this.instrumentationKey) {\r\n return;\r\n }\r\n this.appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: this.instrumentationKey,\r\n disableFetchTracking: false,\r\n disableAjaxTracking: true,\r\n enableAutoRouteTracking: true\r\n }\r\n });\r\n\r\n this.appInsights.loadAppInsights();\r\n this.appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => {\r\n envelope.tags = [{ 'ai.cloud.role': 'oe-bm-ui' }]\r\n });\r\n }\r\n\r\n trackEvent(event: IEventTelemetry) {\r\n if (!this.appInsights) {\r\n return;\r\n }\r\n this.appInsights.trackEvent(event);\r\n }\r\n\r\n trackDependency(event: IDependencyTelemetry) {\r\n if (!this.appInsights) {\r\n return;\r\n }\r\n this.appInsights.trackDependencyData(event);\r\n }\r\n\r\n trackPageView(pageName: string) {\r\n if (!this.appInsights) {\r\n return;\r\n }\r\n this.appInsights.trackPageView({ name: pageName });\r\n }\r\n\r\n trackError(error: any) {\r\n if (!this.appInsights) {\r\n return;\r\n }\r\n this.appInsights.trackException({ error: error });\r\n }\r\n\r\n setAuthenticatedUserContext(userId: string) {\r\n if (!this.appInsights) {\r\n return;\r\n }\r\n this.appInsights.setAuthenticatedUserContext(userId);\r\n }\r\n}\r\n\r\nconst Provider = ({ children }: any) => <>\r\n {children}\r\n\r\n\r\nexport const telemetryService = new TelemetryService();\r\n\r\nexport interface WithTelemetry {\r\n telemetryService: TelemetryService\r\n}\r\n\r\nexport const TelemetryProvider = withContext({\r\n telemetryService: PropTypes.any\r\n}, ({ telemetryService }) => ({ telemetryService }))(Provider)\r\n\r\nexport const withTelemetry = getContext({\r\n telemetryService: PropTypes.any\r\n})","import { Button, DialogActions, DialogContent } from '@material-ui/core';\r\nimport React from 'react';\r\nimport TagManager from 'react-gtm-module';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, RouteComponentProps } from 'react-router';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { fetchEnrollment, updateEmployeeEmail, fetchTransformToken } from 'redux/actions';\r\nimport { EnrollmentDTO, UpdateEmployeeWithRegistrationInfo } from 'redux/reducers';\r\nimport auth from 'utility/auth';\r\nimport routes from '../../router/routes';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport { withTelemetry, WithTelemetry } from 'utility/telemetry';\r\nimport { compose } from 'recompose';\r\n\r\ninterface DispatchProps {\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n fetchTransformToken: () => Promise;\r\n updateEmployeeEmail: (companyId: string, enrollmentId: string, employeeId: string, updatedInfo: UpdateEmployeeWithRegistrationInfo) => void;\r\n}\r\n\r\ninterface ComponentProps {\r\n\r\n}\r\n\r\ntype Props = RouteComponentProps & DispatchProps & WithTelemetry & ComponentProps;\r\n\r\ninterface State {\r\n redirectUrl: string;\r\n error: {\r\n show: boolean,\r\n message: string\r\n };\r\n isLoggedIn: boolean;\r\n redirectInProgress: boolean;\r\n}\r\n\r\nclass LoginComplete extends React.PureComponent {\r\n\r\n showPasswordResetConfirmationDialog = false;\r\n originalAuthPolicy = '';\r\n\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.handleLogin();\r\n }\r\n\r\n private handleLogin() {\r\n auth.handleIdpResponse();\r\n let isLoggedIn = auth.isLoggedIn();\r\n let redirectInProgress = false;\r\n if (isLoggedIn) {\r\n this.handlePostLogin();\r\n } else if (auth.isPasswordResetFlowStarted) {\r\n redirectInProgress = true;\r\n auth.forgotPassword();\r\n } else if (auth.isPasswordResetFlowCanceled) {\r\n redirectInProgress = true;\r\n auth.loginUser(auth.originalAuthPolicy);\r\n } else if (auth.isPasswordResetFlowComplete) {\r\n this.showPasswordResetConfirmationDialog = true;\r\n this.originalAuthPolicy = auth.originalAuthPolicy;\r\n auth.clearSessionStorage();\r\n }\r\n else if (auth.isMsalLoggedIn()) {\r\n isLoggedIn = true;\r\n this.handleTokenTransformation();\r\n }\r\n else {\r\n auth.logOut();\r\n }\r\n\r\n this.state = {\r\n redirectUrl: '',\r\n error: {\r\n show: false,\r\n message: ''\r\n },\r\n redirectInProgress: redirectInProgress,\r\n isLoggedIn: isLoggedIn\r\n };\r\n\r\n }\r\n\r\n private handleTokenTransformation = () => {\r\n auth.removeJwt();\r\n this.props.fetchTransformToken().then((data: any) => {\r\n auth.jwt = data.token;\r\n this.setState({ redirectInProgress: true });\r\n this.handlePostLogin();\r\n },()=>{\r\n this.setState({ error: { show: true, message: '' } });\r\n });\r\n }\r\n\r\n private handlePostLogin = () => {\r\n\r\n const enrollmentId = auth.getEnrollmentId();\r\n this.props.fetchEnrollment(enrollmentId)\r\n .then((enrollmentDto: EnrollmentDTO) => {\r\n var contactInfo = enrollmentDto.company.contactInformation[0];\r\n const stateName = contactInfo.stateId ? getLookups()[contactInfo.stateId].value : undefined;\r\n this.createUserInfoGtag(stateName);\r\n this.getCompanyId(enrollmentDto);\r\n }, () => {\r\n this.setState({ error: { show: true, message: '' } });\r\n });\r\n\r\n }\r\n private homePages = {\r\n \"1\": this.getEmployeeHomePageUrl,\r\n \"2\": this.getEmployerHomePageUrl,\r\n \"3\": this.getEmployerHomePageUrl\r\n\r\n }\r\n\r\n private createUserInfoGtag(stateName: string | undefined) {\r\n const tagManagerArgs = {\r\n dataLayer: {\r\n event: 'login',\r\n userId: auth.decodedJWT.enrollment_employee_id,\r\n userType: auth.decodedJWT.enrollment_user_type,\r\n market: stateName\r\n }\r\n }\r\n TagManager.dataLayer(tagManagerArgs);\r\n }\r\n\r\n\r\n private getCompanyId(enrollmentDto: EnrollmentDTO) {\r\n const enrollmentId = auth.getEnrollmentId();\r\n const userType = auth.decodedJWT.enrollment_user_type;\r\n const employeeId = auth.decodedJWT.enrollment_employee_id;\r\n const email = auth.decodedJWT.unique_name;\r\n\r\n const updatedInfo: UpdateEmployeeWithRegistrationInfo = {\r\n email\r\n }\r\n\r\n if (!enrollmentDto.company) {\r\n this.setState({ error: { show: true, message: 'Company details are not defined' } });\r\n } else {\r\n this.goToUserHomePage(enrollmentDto, userType, employeeId);\r\n if (auth.isFirstTimeLogin && employeeId) {\r\n this.props.updateEmployeeEmail(enrollmentDto.company.id, enrollmentId, employeeId, updatedInfo)\r\n }\r\n }\r\n }\r\n\r\n private goToUserHomePage(enrollmentDto: EnrollmentDTO, userType: string, employeeId?: string) {\r\n var redirectHandler = this.homePages[userType];\r\n if (redirectHandler === undefined) {\r\n //if no home page is defined for userType then redirect to employer home page.\r\n redirectHandler = this.getEmployerHomePageUrl;\r\n }\r\n\r\n var url = redirectHandler(enrollmentDto.company.id, enrollmentDto.id, employeeId);\r\n this.setState({ redirectUrl: url });\r\n }\r\n\r\n private getEmployeeHomePageUrl(companyId: string, enrollmentId: string, employeeId: string) {\r\n const { path, params } = routes.employeeLanding;\r\n var redirectURL = path.replace(params!.companyId!, companyId).replace(params!.enrollmentId!, enrollmentId).replace(params!.employeeId!, employeeId);\r\n return redirectURL;\r\n }\r\n\r\n private getEmployerHomePageUrl(companyId: string, enrollmentId: string) {\r\n const { path, params } = routes.companyDashboard;\r\n const redirectURL = path.replace(params!.companyId!, companyId).replace(params!.enrollmentId!, enrollmentId);\r\n return redirectURL;\r\n }\r\n\r\n\r\n private renderLoggedInView() {\r\n return (\r\n
\r\n
Loading Enrollment Details...
\r\n
\r\n );\r\n }\r\n\r\n private renderErrorView() {\r\n return (\r\n
\r\n

Session Expired

\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n if (this.state.error.show) {\r\n return (\r\n
\r\n
{this.state.error.message.length > 0 ? this.state.error.message : 'Error occurred while loading enrollment details.'}
\r\n
\r\n );\r\n }\r\n if (this.state.isLoggedIn) {\r\n if (this.state.redirectUrl !== '') {\r\n return (\r\n \r\n );\r\n }\r\n return this.renderLoggedInView();\r\n }\r\n if (this.showPasswordResetConfirmationDialog) {\r\n return (\r\n auth.loginUser(this.originalAuthPolicy)}\r\n title='Password Reset Complete'\r\n >\r\n \r\n You have successfully reset your password. Please sign in with your new credentials.\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n if (this.state.redirectInProgress) {\r\n return (
Redirecting...
)\r\n }\r\n return this.renderErrorView();\r\n }\r\n}\r\n\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchEnrollment: (enrollmentId) => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchTransformToken: () => dispatch(fetchTransformToken()),\r\n updateEmployeeEmail: (companyId, enrollmentId, employeeId, updatedInfo) => dispatch(updateEmployeeEmail(companyId, enrollmentId, employeeId, updatedInfo))\r\n }\r\n}\r\n\r\nexport default compose(\r\n withTelemetry,\r\n connect(null, mapDispatchToProps)\r\n)(LoginComplete)","import moment from 'moment';\r\nimport React from 'react';\r\nimport { IReduceValidation } from 'redux/reducers';\r\n\r\nexport const required = (message: string) => (value: any) => value || value === 0 ? undefined : message;\r\nexport const requiredIf = (requiredFlag: boolean, message: string) => (value: any) => !requiredFlag ? undefined : (value || value === 0 ? undefined : message);\r\nexport const conditionalRequired = (message: string, conditionalTest: any, conditionalValue: any) => (value: any) => {\r\n if (conditionalTest === conditionalValue) return value ? undefined : message\r\n else return undefined;\r\n}\r\n\r\nexport const match = (matchAttr: string, message: string) => (value: string, allValues: any) => value === allValues[matchAttr] ? undefined : message\r\nexport const requiredForSubmission = required('Required for enrollment');\r\nexport const requiredForSubmissionIf = (requiredFlag: boolean) => !requiredFlag ? (value: any) => undefined : requiredForSubmission;\r\n\r\nexport const requiredForGroupSubmission = required('Required for submission');\r\n\r\nconst list =\r\n React.createElement('ul', { key: 'mainList', style: { marginLeft: -24, marginBottom: -8 } },\r\n [\r\n React.createElement('li', { key: 'characters' }, 'Must be 8-64 characters'),\r\n React.createElement('li', { key: '3of4' }, 'Must include 3 of the following'),\r\n React.createElement('ul', { key: 'subList' },\r\n [\r\n React.createElement('li', { key: 'lowercase' }, 'Lowercase characters'),\r\n React.createElement('li', { key: 'uppercase' }, 'Uppercase characters'),\r\n React.createElement('li', { key: 'digits' }, 'Digits (0-9)'),\r\n React.createElement('li', { key: 'specialCharacters' }, 'Special Characters')\r\n ]\r\n )\r\n ]\r\n );\r\n\r\nexport const password = (value: any) =>\r\n value && !/^((?=.*[a-z])(?=.*[A-Z])(?=.*\\d)|(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*\\d)(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*\\d)(?=.*[^A-Za-z0-9]))([A-Za-z\\d@#$%^&*\\-_+=[\\]{}|\\\\:',?/`~"();!]|\\.(?!@)){8,64}$/g.test(value) ?\r\n list : undefined;\r\n\r\nexport const requiredMoment = (message: string) => (value: any) => (value instanceof moment) ? undefined : message;\r\nexport const requiredForSubmissionMoment = requiredMoment('Required for enrollment');\r\n\r\nexport const characterLimit = (limit: number) => (value: string, formData: IReduceValidation) => (formData.reduceValidation === false && value && value.length > limit) ? \"Max \" + limit + \" characters\" : undefined\r\n\r\nexport const email = (value: any) =>\r\n value && !/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/i.test(value) ?\r\n 'Please enter a valid e-mail address' : undefined;\r\n\r\nexport const phone = (value: any) =>\r\n value && !/^\\s*(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})[-. )]*(\\d{3})[-. ]*(\\d{4})(?: *x(\\d+))?\\s*$/i.test(value) ?\r\n 'Please enter a valid phone number' : undefined;\r\n\r\nexport const ssn = (value: any) =>\r\n value && !/^(?!000|666)[0-9]{3}([ -]?)(?!00)[0-9]{2}\\1(?!0000)[0-9]{4}$/i.test(value) ?\r\n 'Please enter a valid Social Security Number' : undefined;\r\n\r\nexport const zip = (value: any) => {\r\n return value && !/^\\d{5}(?:\\d{4})?$/i.test(value) ?\r\n 'Please enter a valid zip code' : undefined;\r\n}\r\n\r\nexport const ein = (value: any) => {\r\n return value && value.length !== 9 ?\r\n 'Please enter a valid EIN number' : undefined;\r\n}\r\nexport const url = (value: any) => {\r\n if (value) {\r\n /* eslint-disable-next-line */\r\n return !/^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/.test(value) ?\r\n 'Please enter a valid url with http:// or https://' : undefined;\r\n } else {\r\n return undefined\r\n }\r\n}\r\n\r\nexport const nullOrPositiveNumber = (value: any) => {\r\n const parsedValue = Number(value);\r\n return !parsedValue || parsedValue > 0 ? undefined : 'Please enter a value greater than 0';\r\n}\r\n\r\nexport const positiveNumber = (value: any) => {\r\n const parsedValue = Number(value);\r\n return parsedValue > 0 ? undefined : 'Please enter a value greater than 0';\r\n}\r\n\r\nexport const nonNegativeNumber = (value: any) => {\r\n const parsedValue = Number(value || 0);\r\n return parsedValue >= 0 ? undefined : 'Please enter a positive value';\r\n}\r\n\r\nexport const nonNegativeInteger = (value: any) => {\r\n const parsedValue = Number(value || 0);\r\n return parsedValue >= 0 && parsedValue % 1 === 0 ? undefined : 'Please enter a positive whole number';\r\n}\r\nexport const nonNegativeIntegerRounding = (value: any) => {\r\n const parsedValue = Number(value || 0);\r\n return parsedValue >= 0 && parsedValue % 1 === 0 ? undefined : 'Please enter a positive whole number. Decimals will be rounded.';\r\n}\r\nexport const validPercentage = (value: any) => {\r\n const parsedValue = Number(value || 0);\r\n return parsedValue <= 100 && parsedValue >= 0 && parsedValue % 1 === 0 ? undefined : 'Please enter a positive whole number 0-100';\r\n}\r\n\r\nexport const greaterThanZeroPercentage = (value: any) => {\r\n const message = 'Please enter a positive whole number 1-100'\r\n if (value === 0) return message;\r\n const parsedValue = Number(value || 1);\r\n return parsedValue <= 100 && parsedValue >= 1 && parsedValue % 1 === 0 ? undefined : message;\r\n}\r\n\r\nexport const validDate = (value: any) => {\r\n if (!value) return undefined;\r\n\r\n const parsedDate = moment(value);\r\n if (!parsedDate.isValid()) return 'Invalid date';\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validPastDate = (value: any, formData: IReduceValidation) => {\r\n if (!value) return undefined;\r\n\r\n const now = moment().endOf('day');\r\n const parsedDate = moment(value);\r\n\r\n if (value) {\r\n if (!parsedDate.isValid()) return 'Invalid date';\r\n\r\n if (parsedDate.isAfter(now)) return 'Date must be in the past';\r\n\r\n if (parsedDate.isBefore(moment('01-01-1900'))) return 'Date must be after January 1st 1900';\r\n }else if (!value && formData.reduceValidation){\r\n return undefined;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateEffectiveDate = (value: string, allProps: IReduceValidation) => {\r\n\r\n if (allProps && allProps.reduceValidation === true)\r\n return undefined\r\n if (!value) return 'Effective Date is required';\r\n const valueToMoment = moment(value);\r\n if (!valueToMoment) return 'Invalid date';\r\n const isPastThirty = valueToMoment.isBefore(moment().startOf('day').add(-30, \"days\"));\r\n return isPastThirty ? 'Effective date cannot be more than 30 days in the past' : undefined;\r\n};\r\n\r\nexport const validAdultAge = (value: string, formData: IReduceValidation) => {\r\n if (formData && formData.reduceValidation === true) {\r\n if (value) {\r\n let valueToMoment = moment(value);\r\n if (!valueToMoment) return 'Invalid date';\r\n const atLeastSixteen = valueToMoment.isBefore(moment().startOf('day').subtract(16, \"years\"))\r\n return atLeastSixteen ? undefined : 'Employee must be at least 16 years old'\r\n }else{\r\n return undefined;\r\n }\r\n }\r\n if (!value && !formData.reduceValidation) return 'Please select a Date of Birth';\r\n let valueToMoment = moment(value);\r\n if (!valueToMoment) return 'Invalid date';\r\n const atLeastSixteen = valueToMoment.isBefore(moment().startOf('day').subtract(16, \"years\"))\r\n return atLeastSixteen ? undefined : 'Employee must be at least 16 years old'\r\n};\r\n\r\nexport const validSpouseAge = (limit?: number) => (value: string, formData: IReduceValidation) => {\r\n let ageToCheck = limit==undefined?0:limit;\r\n if (formData && formData.reduceValidation === true) {\r\n if (value) {\r\n let valueToMoment = moment(value);\r\n if (!valueToMoment) return 'Invalid date';\r\n const atLeastSixteen = valueToMoment.isBefore(moment().startOf('day').subtract(ageToCheck, \"years\"))\r\n return atLeastSixteen ? undefined : `Spouse must be at least ${ageToCheck} years old`\r\n }else{\r\n return undefined;\r\n }\r\n }\r\n if (!value && !formData.reduceValidation) return 'Please select a Date of Birth';\r\n let valueToMoment = moment(value);\r\n if (!valueToMoment) return 'Invalid date';\r\n const atLeastSixteen = valueToMoment.isBefore(moment().startOf('day').subtract(ageToCheck, \"years\"))\r\n\r\n return atLeastSixteen ? undefined : `Spouse must be at least ${ageToCheck} years old`\r\n\r\n}\r\n\r\nexport const validateIfNotReducedWithMessage = (message: string) => (value: any, allProps: IReduceValidation) => {\r\n if (!allProps.reduceValidation && (value === null || value === undefined || value === \"\"))\r\n return message;\r\n\r\n return undefined;\r\n};\r\n\r\nexport const warnIfReduced = (message: string) => (value: any, formData: IReduceValidation) => {\r\n if (formData.reduceValidation && (value === null || value === undefined || value === \"\"))\r\n return message;\r\n\r\n return undefined;\r\n};\r\n\r\nexport const maxNumber = (max: number) => (value: number) => (value && value > max) ? 'A week has maximum of 168 hours' : undefined;\r\n\r\nexport const validateGroupCount = (max: number) => (value: number) => (value && value > max) ? 'Value cannot be more than ' + max : undefined;","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport http from '../../utility/http';\r\nimport { ICanvasTokenRenewalRequest } from 'utility/auth_security_types';\r\nimport auth from 'utility/auth';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\nexport function fetchOverrideToken(tokenRequest: ISecurityTokenOverrideRequest, method: string) {\r\n return async (dispatch: any) => {\r\n return overrideToken(tokenRequest, method);\r\n };\r\n}\r\nexport async function overrideToken(tokenRequest: ISecurityTokenOverrideRequest, method: string) {\r\n var url = `auth/token/${method}`;\r\n const data = await http(url, { method: 'POST', body: JSON.stringify(tokenRequest) }, auth.msalJwt);\r\n return data;\r\n}\r\nexport function fetchTransformToken() {\r\n return async (dispatch: any) => {\r\n return transformToken();\r\n };\r\n}\r\n\r\nexport async function transformToken() {\r\n var url = `auth/token/transform`;\r\n const data = await http(url, { method: 'POST' }, auth.msalJwt);\r\n return data;\r\n}\r\n\r\n//Fetch signup Token Thunk\r\nexport const signUpToken = acFactory('SIGN_UP_TOKEN');\r\nexport function fetchSignUpToken(enrollmentId: string, email?: string) {\r\n return async (dispatch: any) => {\r\n var url = `identity/employee-token/${enrollmentId}`;\r\n\r\n if (email !== undefined) {\r\n url = `identity/employer-token/${enrollmentId}/${email}`;\r\n }\r\n\r\n const data = await http(url);\r\n var token = data.token;\r\n\r\n dispatch(signUpToken(token));\r\n return token;\r\n };\r\n}\r\n\r\n//Verify Token Thunk\r\nexport function verifyEmployerToken(enrollmentId: string, email: string, nbf: string, exp: string, sig: string) {\r\n return async (dispatch: any) => {\r\n\r\n var url = `identity/validate-employer-token?eId=${enrollmentId}&email=${email}&nbf=${nbf}&exp=${exp}&sig=${sig}`;\r\n const data = await http(url);\r\n var token = data.token;\r\n dispatch(signUpToken(token));\r\n return token;\r\n };\r\n}\r\n\r\n//Fetch Canvas Token Thunk\r\nexport const canvasToken = acFactory('CANVAS_TOKEN_RENEW');\r\nexport function fetchCanvasToken(tokenRequest: ICanvasTokenRenewalRequest) {\r\n return async (dispatch: any) => {\r\n var url = `canvas/renew-canvas-token`;\r\n const data = await http(url, { method: 'POST', body: JSON.stringify(tokenRequest) });\r\n var token = data.token;\r\n dispatch(canvasToken(token));\r\n return token;\r\n };\r\n}\r\n\r\nexport interface ISecurityTokenOverrideRequest {\r\n email: string;\r\n firstName: string;\r\n lastName: string;\r\n enrollmentId: string;\r\n userType: string;\r\n employeeId: string;\r\n}","import moment from 'moment';\r\nimport actionCreatorFactory from 'redux-typescript-actions';\r\nimport http, { HttpResponse } from '../../utility/http';\r\nimport { BeneficiaryDTO, Election, EmployeeDTO, SendInvitation, UpdateEmployeeWithRegistrationInfo } from '../reducers/employee_reducer';\r\nimport { ReduxState } from '../store';\r\nimport { displaySnackbar, displaySnackbarWithErrors } from './app_actions';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\n// Store Employees Action Creator\r\nexport const storeEmployees = acFactory('STORE_EMPLOYEES');\r\n\r\n// Fetch Employees Thunk\r\nexport function fetchEmployees(companyId: string, enrollmentId: string) {\r\n return async (dispatch: any) => {\r\n const employees: EmployeeDTO[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/employees`);\r\n dispatch(storeEmployees(employees));\r\n };\r\n}\r\n\r\n// Remove Employee Action Creator\r\nexport const removeEmployee = acFactory('REMOVE_EMPLOYEE');\r\n\r\n// Delete Employee Thunk\r\nexport function deleteEmployee(companyId: string, enrollmentId: string, id: string, name: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${id}`, { method: 'DELETE' });\r\n dispatch(removeEmployee(id));\r\n dispatch(displaySnackbar(`${name} Deleted`, 'deletion'));\r\n }\r\n catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with Employee Deletion'));\r\n }\r\n }\r\n}\r\n\r\n// Store Employee Action Creator\r\nexport const storeEmployee = acFactory('STORE_EMPLOYEE');\r\n\r\n// Fetch Employee Thunk\r\nexport function fetchEmployee(companyId: string, enrollmentId: string, id: string) {\r\n return async (dispatch: any) => {\r\n\r\n const employee: EmployeeDTO = await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${id}`);\r\n await dispatch(fetchEmployeeInfoStatus(companyId, enrollmentId, employee.id));\r\n dispatch(storeEmployee(employee));\r\n };\r\n}\r\n\r\n// Add Employee Thunk\r\nexport function addEmployee(companyId: string, enrollmentId: string, employee: EmployeeDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n const data = await http(`companies/${companyId}/enrollments/${enrollmentId}/employees`, {\r\n method: 'POST',\r\n body: JSON.stringify(employee)\r\n });\r\n employee.id = data.id;\r\n\r\n dispatch(storeEmployee(employee));\r\n await dispatch(fetchEmployeeInfoStatus(companyId, enrollmentId, employee.id));\r\n dispatch(displaySnackbar('Employee saved', 'success'));\r\n return data.id;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with Employee saving'));\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\n// Update Employee Thunk\r\nexport function updateEmployee(companyId: string, enrollmentId: string, employee: EmployeeDTO, message?: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${employee.id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(employee)\r\n });\r\n\r\n /**\r\n * Refetching the employee is required to correctly update the cached ids for the employee's dependents\r\n * The fetchEmployee Thunk is already responsible for dispatching the fetchPersonalInfoStatus Thunk\r\n * */\r\n await dispatch(fetchEmployee(companyId, enrollmentId, employee.id));\r\n if (message)\r\n dispatch(displaySnackbar(message, 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with updating Employee'));\r\n\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\n//Update Employee's Email on Initial Login\r\nexport function updateEmployeeEmail(companyId: string, enrollmentId: string, employeeId: string, updatedInfo: UpdateEmployeeWithRegistrationInfo) {\r\n return async () => {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${employeeId}/userRegistrationInfo`, {\r\n method: 'PUT',\r\n body: JSON.stringify(updatedInfo)\r\n });\r\n }\r\n}\r\n\r\n// Send invitations Action Creator\r\nexport const employeesInvitations = acFactory('EMPLOYEES_INVITATIONS');\r\nexport function sendEmployeeInvitations(companyId: string, enrollmentId: string, invitation: SendInvitation) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/inviteemployee`, {\r\n method: 'POST',\r\n body: JSON.stringify(invitation)\r\n });\r\n\r\n await dispatch(fetchEmployees(companyId, enrollmentId));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with sending invitations'));\r\n throw ex;\r\n }\r\n\r\n }\r\n}\r\n\r\nexport interface TokenUser {\r\n tokenNotBefore: string,\r\n tokenExpires: string,\r\n tokenSignature: string,\r\n captchaToken: string\r\n}\r\n//Create Employee User\r\nexport interface EmployeeUser {\r\n token: string,\r\n firstName: string,\r\n lastName: string,\r\n email: string,\r\n password: string,\r\n dateOfBirth: moment.Moment,\r\n genderId: number,\r\n captchaToken: string\r\n}\r\n\r\nexport interface EmployeeWithToken extends TokenUser {\r\n enrollmentId: string,\r\n firstName: string,\r\n lastName: string,\r\n email: string,\r\n password: string,\r\n}\r\n\r\nexport function addEmployeeUser(employeeUser: EmployeeUser) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`user/employee`, {\r\n method: 'POST',\r\n body: JSON.stringify(employeeUser)\r\n });\r\n return 'Success';\r\n } catch (ex) {\r\n const httpResponse = ex as HttpResponse;\r\n return httpResponse.data && httpResponse.data.failureReason ? httpResponse.data.failureReason : httpResponse.validationErrors ? httpResponse.validationErrors[0].message : undefined;\r\n }\r\n }\r\n}\r\n\r\nexport function addEmployeeWToken(employeeUser: EmployeeWithToken) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`user/employeetoken`, {\r\n method: 'POST',\r\n body: JSON.stringify(employeeUser)\r\n });\r\n return 'Success';\r\n } catch (ex) {\r\n const httpResponse = ex as HttpResponse;\r\n return httpResponse.data && httpResponse.data.failureReason ? httpResponse.data.failureReason : httpResponse.validationErrors ? httpResponse.validationErrors[0].message : undefined;\r\n }\r\n }\r\n}\r\n\r\n//Create Employer User\r\nexport interface EmployerUser extends TokenUser {\r\n enrollmentId: string,\r\n firstName: string,\r\n lastName: string,\r\n email: string,\r\n password: string\r\n}\r\n\r\nexport function addEmployerUser(employerUser: EmployerUser) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`user/employer`, {\r\n method: 'POST',\r\n body: JSON.stringify(employerUser)\r\n });\r\n return 'Success';\r\n } catch (ex) {\r\n const httpResponse = ex as HttpResponse;\r\n return httpResponse.data && httpResponse.data.failureReason ? httpResponse.data.failureReason : httpResponse.validationErrors ? httpResponse.validationErrors[0].message : undefined;\r\n }\r\n }\r\n}\r\n\r\n// Store Personal Info Status Action Creator\r\nexport const storePersonalInfoStatus = acFactory<{ employeeId: string; personalInfoStatus: boolean }>('STORE_PERSONAL_INFO_STATUS');\r\n\r\n// Store Additional Info Status Action Creator\r\nexport const storeAdditionalInfoStatus = acFactory<{ employeeId: string; additionalInfoStatus: boolean }>('STORE_ADDITIONAL_INFO_STATUS');\r\n\r\n// Store Additional Info Status Action Creator\r\nexport const storeLoCList = acFactory<{ employeeId: string; failedLoCIds: number[] }>('STORE_LOC_LIST');\r\n\r\n// Update Personal Info Thunk\r\ninterface ValidationResult {\r\n entitySection: string;\r\n personalInfoSuccess: boolean;\r\n additionalInfoSuccess: boolean;\r\n failedLoCIds: number[];\r\n success: boolean;\r\n validationMessages: {\r\n level: string;\r\n message: string;\r\n target: string;\r\n }[];\r\n}\r\nexport interface FinalizedElection {\r\n employeeSignature: string;\r\n employeeSignatureCity: string;\r\n employeeSignatureState: string;\r\n signatureType: number;\r\n electionsReviewUrl: string;\r\n signaturePending: boolean;\r\n spouseSignature: string;\r\n spouseSignatureCity: string;\r\n spouseSignatureState: string;\r\n hsaContribution?: number;\r\n obtainedEmployeePermission: boolean;\r\n acknowledgedAndAgreedToElections: boolean;\r\n reduceValidation?: boolean;\r\n renewalQuestionsPending?: boolean;\r\n}\r\nexport function fetchEmployeeInfoStatus(companyId: string, enrollmentId: string, employeeId: string) {\r\n return async (dispatch: any) => {\r\n const result: ValidationResult = await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${employeeId}/precomplete`, { method: 'POST' });\r\n\r\n dispatch(storePersonalInfoStatus({ employeeId, personalInfoStatus: result.personalInfoSuccess }));\r\n dispatch(storeAdditionalInfoStatus({ employeeId, additionalInfoStatus: result.additionalInfoSuccess }));\r\n dispatch(storeLoCList({ employeeId, failedLoCIds: result.failedLoCIds }));\r\n }\r\n}\r\n// Store Election Action Creator\r\nexport const storeElection = acFactory('STORE_ELECTIONS');\r\n// Create Election Thunk\r\nexport function createElection(companyId: string, enrollmentId: string, election: Election) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n const data = await http(`companies/${companyId}/enrollments/${enrollmentId}/elections`, {\r\n method: 'POST',\r\n body: JSON.stringify(election)\r\n });\r\n election.id = data.id;\r\n await dispatch(fetchEmployee(companyId, enrollmentId, election.employeeId));\r\n const locValue = getState().lookup.values[election.lineOfCoverageId].value;\r\n dispatch(displaySnackbar(`${locValue} Election saved`, 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving election'));\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\n// Update Election Thunk\r\nexport function updateElection(companyId: string, enrollmentId: string, election: Election) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/elections/${election.id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(election)\r\n });\r\n await dispatch(fetchEmployee(companyId, enrollmentId, election.employeeId));\r\n const locValue = getState().lookup.values[election.lineOfCoverageId].value;\r\n dispatch(displaySnackbar(`${locValue} election saved`, 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with updating Election'));\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\n// Update Emmails Thunk\r\nexport function updateEmails(companyId: string, enrollmentId: string, employees: EmployeeDTO[]) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/emails`, {\r\n method: 'PUT',\r\n body: JSON.stringify(employees)\r\n });\r\n await dispatch(fetchEmployees(companyId, enrollmentId));\r\n dispatch(displaySnackbar(\"All emails have been updated\", 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with updating Employees emails'));\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\n\r\n//Submit Employee Enrollment Thunk\r\nexport function submitEmployeeEnrollment(companyId: string, enrollmentId: string, masterEmployeeId: string, employeeId: string, finalizedElections: FinalizedElection) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${masterEmployeeId}/complete/${employeeId}`,\r\n {\r\n method: 'POST',\r\n body: JSON.stringify(finalizedElections)\r\n }\r\n );\r\n await dispatch(fetchEmployee(companyId, enrollmentId, masterEmployeeId));\r\n dispatch(displaySnackbar('Enrollment saved', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving Enrollment'));\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\n//Reopen Employee Enrollment Thunk\r\nexport function reOpenEmployeeEnrollment(companyId: string, enrollmentId: string, employeeId: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${employeeId}/reopen`, { method: 'POST' });\r\n await dispatch(fetchEmployee(companyId, enrollmentId, employeeId));\r\n dispatch(displaySnackbar('Enrollment Re-opened', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with re-opening Enrollment'));\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\n//Store Beneficiaries Action Creator\r\nexport const storeBeneficiaries = acFactory<{ employeeId: string; beneficiaries: BeneficiaryDTO[] }>('STORE_BENEFICIARIES');\r\n\r\n// Remove Employee Action Creator\r\nexport const removeBeneficiary = acFactory('REMOVE_BENEFICIARY');\r\n\r\n//Update Beneficiaries Thunk\r\nexport function updateBeneficiaries(employeeId: string, beneficiaries: BeneficiaryDTO[]) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n const companyId = getState().enrollment.company.id;\r\n const enrollmentId = getState().enrollment.id;\r\n const updatedBeneficiaries: BeneficiaryDTO[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${employeeId}/beneficiaries`, { method: 'PUT', body: JSON.stringify(beneficiaries) });\r\n dispatch(storeBeneficiaries({ employeeId, beneficiaries: updatedBeneficiaries }));\r\n dispatch(displaySnackbar('Beneficiaries updated', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with updating beneficiaries'));\r\n }\r\n }\r\n}\r\n\r\n//Delete Beneficiary Thunk\r\nexport function deleteBeneficiary(employeeId: string, beneficiaryId: string) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n const companyId = getState().enrollment.company.id;\r\n const enrollmentId = getState().enrollment.id;\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/employees/${employeeId}/beneficiaries/${beneficiaryId}`, { method: 'DELETE' });\r\n dispatch(removeBeneficiary(beneficiaryId));\r\n dispatch(displaySnackbar('Beneficiary deleted', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with deleting beneficiary'));\r\n }\r\n }\r\n}\r\n\r\n// Kaiser Carrier Thunks\r\nexport function fetchKaiserUrl(companyId: string) {\r\n return async () => {\r\n const kaiserUrl = await http(`kaiser/${companyId}/get-url`);\r\n return kaiserUrl;\r\n };\r\n}\r\n\r\nexport function saveKaiserResponse(companyId: string, enrollmentId: string, employeeId: string, accepted: boolean) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`kaiser/${companyId}/${enrollmentId}/${employeeId}/save-response/${accepted}`, { method: 'POST' });\r\n dispatch(fetchEmployee(companyId, enrollmentId, employeeId));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving Kaiser Agreement response'));\r\n throw ex;\r\n }\r\n }\r\n}","import React from 'react';\r\nimport { RouteComponentProps, Redirect } from 'react-router';\r\nimport auth from 'utility/auth';\r\nimport routes from 'router/routes';\r\n\r\ninterface Props extends RouteComponentProps {\r\n}\r\n\r\ninterface State {\r\n}\r\n\r\nclass LogoutComplete extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n auth.handleIdpResponse();\r\n auth.clearSessionStorage();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
You have successfully logged out of your account
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default LogoutComplete;","import React from 'react';\r\nimport BaseDialog from './base_dialog';\r\nimport { Divider, Typography, withStyles, StyledComponentProps, DialogContent, DialogContentText } from '@material-ui/core';\r\nimport { CSSProperties } from '@material-ui/styles';\r\nimport palette from 'utility/palette';\r\n\r\ninterface Props extends StyledComponentProps {\r\n open: boolean;\r\n onClose: () => void;\r\n errors?: string[];\r\n}\r\n\r\nconst SystemErrorsDialog = (props: Props) => {\r\n const { classes = {} } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n Following error(s) have occurred\r\n
\r\n
    \r\n {props.errors && props.errors.map((e: string, index: number) => (\r\n
    \r\n
  • {e}
  • \r\n
    \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n errorDetail: {\r\n },\r\n errorDetailItem: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n },\r\n errorHeading: {\r\n fontSize: 16,\r\n marginTop: 8,\r\n color: palette.red.primary\r\n },\r\n}\r\n\r\nexport default withStyles(styles)(SystemErrorsDialog)","import Checkbox, { CheckboxProps } from '@material-ui/core/Checkbox';\r\nimport { FilledInputProps } from '@material-ui/core/FilledInput';\r\nimport FormControl, { FormControlProps } from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport { FormHelperTextProps } from '@material-ui/core/FormHelperText/FormHelperText';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport { InputProps } from '@material-ui/core/Input';\r\nimport { InputLabelProps } from '@material-ui/core/InputLabel';\r\nimport { OutlinedInputProps } from '@material-ui/core/OutlinedInput';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport { MuiThemeProvider, Theme } from '@material-ui/core/styles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Switch, { SwitchProps } from '@material-ui/core/Switch';\r\nimport TextField, { TextFieldProps } from '@material-ui/core/TextField';\r\nimport { theme as defaultTheme } from 'containers/app/app';\r\nimport { DatePickerProps } from '@material-ui/pickers/DatePicker';\r\nimport { KeyboardDatePicker as DatePicker } from \"@material-ui/pickers\";\r\n\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { WrappedFieldProps } from 'redux-form';\r\nimport canvasUtil from 'utility/canvas_util';\r\nimport { defaultDateMask } from 'utility/date_picker_mask';\r\nimport palette from 'utility/palette';\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\ntype TextFieldWarnProps = { warning: boolean; touched: boolean; visited: boolean, labelProps?: InputLabelProps, alwaysShowValidation: boolean } & TextFieldProps;\r\nconst TextFieldWarn = withStyles({\r\n warnColor: {\r\n color: `${palette.orange.primary} !important`,\r\n },\r\n warnOutline: {\r\n borderColor: `${palette.orange.primary} !important`,\r\n }\r\n})((props: TextFieldWarnProps & WithStyles) => {\r\n const { classes, warning, error, touched, visited, helperText, alwaysShowValidation, labelProps = {}, InputProps, ...config } = props;\r\n const showValidation = touched || visited || alwaysShowValidation;\r\n let errorFlagToUse = error && showValidation;\r\n let helperTextToUse = (error && showValidation) || (warning && showValidation) ? helperText : undefined;\r\n let inputLabelProps: InputLabelProps = { ...labelProps };\r\n let inputProps: Partial = {\r\n ...InputProps\r\n };\r\n let helperTextProps: Partial = {\r\n }\r\n\r\n if (warning && showValidation && !error) {\r\n // override the props to set the desired error and border colors\r\n errorFlagToUse = warning;\r\n inputLabelProps = {\r\n ...inputLabelProps,\r\n classes: {\r\n error: classes.warnColor,\r\n }\r\n }\r\n helperTextProps = {\r\n ...helperTextProps,\r\n classes: {\r\n error: classes.warnColor,\r\n }\r\n }\r\n inputProps = {\r\n ...inputProps,\r\n classes: {\r\n notchedOutline: classes.warnOutline\r\n }\r\n }\r\n }\r\n\r\n if (helperTextToUse && showValidation) {\r\n inputLabelProps = {\r\n ...inputLabelProps,\r\n shrink: true,\r\n focused: true\r\n };\r\n }\r\n\r\n return (\r\n \r\n );\r\n}) as React.ComponentType;\r\n\r\ntype TextFormFieldProps = TextFieldProps & WrappedFieldProps & { labelProps?: InputLabelProps, alwaysShowValidation?: boolean };\r\nexport const TextFormField = (props: TextFormFieldProps) => {\r\n const { input, meta, alwaysShowValidation = false, ...config } = props;\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\ntype SSNTextFormFieldProps = TextFieldProps & WrappedFieldProps & { labelProps?: InputLabelProps; alwaysShowValidation?: boolean };\r\nexport const SSNTextFormField = React.memo((props: SSNTextFormFieldProps) => {\r\n const { input, meta, alwaysShowValidation = false, ...config } = props;\r\n\r\n const [focused, setFocused] = React.useState(false);\r\n\r\n const mask = React.useCallback((text: string) => {\r\n if (text.length === 11) {\r\n const fields = text.split('-');\r\n const result = `***-**-${fields[fields.length - 1]}`;\r\n return result;\r\n }\r\n return text;\r\n }, []);\r\n\r\n const onFocus = React.useCallback((event: any) => {\r\n setFocused(true);\r\n input.onFocus(event);\r\n }, [input]);\r\n\r\n const onBlur = React.useCallback((event: any) => {\r\n setFocused(false);\r\n input.onBlur(event);\r\n }, [input]);\r\n\r\n let valueToUse = input.value === undefined || input.value === null ? '' : input.value;\r\n if (!focused) {\r\n valueToUse = mask(valueToUse);\r\n }\r\n\r\n return (\r\n
\r\n \r\n {meta.asyncValidating && }\r\n
\r\n );\r\n});\r\n\r\ntype DatePickerFieldProps = Partial & WrappedFieldProps & { alwaysShowValidation?: boolean };\r\nexport const DatePickerField = (props: DatePickerFieldProps) => {\r\n const { input, meta, alwaysShowValidation = false, ...config } = props;\r\n const warnTheme: Theme = {\r\n ...defaultTheme,\r\n palette: {\r\n ...defaultTheme.palette,\r\n error: {\r\n ...defaultTheme.palette.error,\r\n main: palette.orange.primary\r\n }\r\n }\r\n };\r\n warnTheme.overrides!.MuiOutlinedInput!.adornedEnd = {\r\n paddingRight: 0\r\n };\r\n\r\n const showValidation = meta.touched || alwaysShowValidation;\r\n let themeToUse = defaultTheme;\r\n let errorFlagToUse = !!meta.error && showValidation;\r\n let helperTextToUse = (!!meta.error && showValidation) || (!!meta.warning && showValidation) ? (meta.error || meta.warning) : undefined;\r\n\r\n if (!!meta.warning && showValidation && !meta.error) {\r\n themeToUse = warnTheme;\r\n errorFlagToUse = !!meta.warning;\r\n }\r\n\r\n const onOpen = canvasUtil.isCanvas() ? () => canvasUtil.scrollToCenter() : undefined;\r\n\r\n return (\r\n \r\n {\r\n if (!input.value || !moment(input.value).isValid())\r\n input.onChange(moment().add(1, 'month').startOf('month'));\r\n input.onFocus(e);\r\n setTimeout(() => {\r\n //ALERT: Non-React DOM manipulation, could not find another solution.\r\n const inputRef: any = document.getElementById(input.name);\r\n inputRef && inputRef.select();\r\n }, 100);\r\n }}\r\n error={errorFlagToUse}\r\n helperText={helperTextToUse}\r\n onOpen={onOpen}\r\n inputVariant=\"outlined\"\r\n />\r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n loadingSpinner: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginLeft: -11,\r\n marginTop: -11\r\n }\r\n};\r\n\r\nexport type BasicControlProps = { label: string; children?: any; }\r\ntype CheckboxFieldProps = CheckboxProps & WrappedFieldProps & BasicControlProps;\r\nexport const CheckboxField: React.FunctionComponent = (props: CheckboxFieldProps) => {\r\n const { label, input, meta, ...config } = props;\r\n return (\r\n }\r\n label={label}\r\n />\r\n );\r\n};\r\n\r\nexport type SwitchFieldProps = SwitchProps & BasicControlProps;\r\nexport const SwitchField = (props: SwitchFieldProps & WrappedFieldProps) => {\r\n const { label, input, meta, ...config } = props;\r\n return (\r\n }\r\n label={label}\r\n />\r\n );\r\n};\r\n\r\ntype BasicRadioProps = { label: string | JSX.Element; radioName: string; compact?: boolean; row?: boolean; }\r\nexport type RadioControlGroupFieldProps = FormControlProps & BasicRadioProps;\r\nexport const RadioControlGroupField = (props: RadioControlGroupFieldProps & WrappedFieldProps) => {\r\n const { label, radioName, compact, row, input, meta, style, ...config } = props;\r\n return (\r\n \r\n {label && {label}}\r\n {label && !compact &&
}\r\n \r\n {props.children}\r\n \r\n
\r\n );\r\n};","export const defaultDateMask = \"__/__/____\";\r\n","import Button, { ButtonProps } from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport React from 'react';\r\n\r\ninterface Props extends ButtonProps {\r\n children?: any;\r\n loading?: boolean;\r\n};\r\n\r\nconst SaveButton = (props: Props) => {\r\n const { loading, disabled, children, ...config } = props;\r\n const trulyDisabled = loading || disabled;\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n saveButton: {\r\n position: 'relative'\r\n },\r\n saveSpinner: {\r\n position: 'absolute'\r\n }\r\n};\r\n\r\nexport default SaveButton;","import { Button, DialogActions, DialogContent, DialogContentText } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { characterLimit, email, required } from '../../utility/form_validation';\r\nimport { TextFormField } from './reduxform_fields';\r\nimport SaveButton from './save_button';\r\n\r\nexport const FORM_NAME = 'CHANGE_EMAIL';\r\n\r\nexport type ChangeEmailFormData = {\r\n email: string;\r\n};\r\n\r\ninterface ComponentProps {\r\n onCancel: () => void;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps\r\n\r\nconst requiredEmail = required('Email is required');\r\nconst characterLimit100 = characterLimit(100);\r\nconst ChangeEmailForm = (props: Props) => {\r\n return (\r\n
\r\n \r\n \r\n Note: You will be required to log back in if you change your email.\r\n \r\n \r\n \r\n \r\n \r\n \r\n Update Email\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n form: {\r\n paddingTop: 1\r\n }, contentText: {\r\n paddingBottom: 20\r\n }\r\n}\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME\r\n})(ChangeEmailForm);","import BaseDialog from 'components/common/base_dialog';\r\nimport React from 'react';\r\nimport auth from 'utility/auth';\r\nimport ChangeEmailForm, { ChangeEmailFormData } from './change_email_form';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onCancel: () => void;\r\n onDone: (formValues: ChangeEmailFormData) => void;\r\n}\r\n\r\ntype Props = ComponentProps;\r\n\r\nconst ChangeEmailDialog = (props: Props) => {\r\n const initialValues: ChangeEmailFormData = {\r\n email: auth.getUserName()\r\n };\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ChangeEmailDialog;","import { IconButton } from '@material-ui/core';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport AccountCircle from '@material-ui/icons/AccountCircle';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { changeEmailAddress } from 'redux/actions';\r\nimport auth from 'utility/auth';\r\nimport ChangeEmailDialog from './change_email_dialog';\r\nimport { ChangeEmailFormData } from './change_email_form';\r\n\r\ninterface State {\r\n anchorEl: any;\r\n openChangeEmailDialog: boolean;\r\n}\r\ninterface DispatchProps {\r\n changeEmailAddress: (changedEmail: string) => Promise;\r\n}\r\n\r\ntype Props = DispatchProps;\r\n\r\nclass ProfileMenu extends React.Component {\r\n\r\n state = {\r\n anchorEl: null,\r\n openChangeEmailDialog: false\r\n };\r\n\r\n handleClick(event: any) {\r\n this.setState({ anchorEl: event.currentTarget });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ anchorEl: null });\r\n };\r\n\r\n handleCancelChangeEmail = () => {\r\n this.setState({ openChangeEmailDialog: false });\r\n }\r\n\r\n handleLogout = () => {\r\n auth.logOut();\r\n }\r\n\r\n handleChangePassword = () => {\r\n auth.forgotPassword();\r\n }\r\n\r\n handleOnChangeEmailComplete = (changedEmailRequest: ChangeEmailFormData) => {\r\n return new Promise((resolve, reject) => {\r\n const currentEmail = auth.getUserName();\r\n if (currentEmail.toLocaleLowerCase().trim() !== changedEmailRequest.email.toLocaleLowerCase().trim()) {\r\n this.props.changeEmailAddress(changedEmailRequest.email).then((result) => {\r\n resolve();\r\n auth.logOut();\r\n });\r\n } else {\r\n this.handleCancelChangeEmail();\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n openChangeEmailDialog = () => {\r\n this.setState({ openChangeEmailDialog: true, anchorEl: null });\r\n }\r\n\r\n render() {\r\n const { anchorEl } = this.state;\r\n if (auth.isLoggedIn()) {\r\n return (\r\n
\r\n { this.handleClick(event) }}\r\n color='inherit'>\r\n \r\n \r\n\r\n \r\n Update email address\r\n Update password\r\n Logout\r\n \r\n\r\n \r\n
\r\n\r\n );\r\n } else {\r\n return (
)\r\n }\r\n }\r\n}\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n changeEmailAddress: (changedEmail: string) => dispatch(changeEmailAddress(changedEmail)),\r\n }\r\n}\r\nexport default connect(null, mapDispatchToProps)(ProfileMenu);","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport http from '../../utility/http';\r\nimport { displaySnackbarWithErrors } from './app_actions';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\nexport const changeEmail = acFactory('CHANGE_EMAIL');\r\n\r\n//Fetch Token Thunk\r\nexport function changeEmailAddress(changedEmail: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n var url = `identity/change-my-email/${changedEmail}`;\r\n const data = await http(url, { method: 'PUT' });\r\n var completed = data.completed;\r\n return completed;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error occurred while changing email address'));\r\n throw ex;\r\n }\r\n };\r\n}","import { AppBar, createStyles, Divider, IconButton, Theme, Toolbar, withStyles, WithStyles } from '@material-ui/core';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport HelpIcon from '@material-ui/icons/Help';\r\nimport clsx from 'clsx';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ReduxState } from 'redux/store';\r\nimport auth from 'utility/auth';\r\nimport canvasUtil from 'utility/canvas_util';\r\nimport { globalStyles } from 'utility/common_styles';\r\nimport be_logo from '../../images/be_logo.png';\r\nimport palette from '../../utility/palette';\r\nimport SystemErrorsDialog from './system_errors_dialog';\r\nimport ProfileMenu from './profile_menu';\r\nimport { updateSystemErrors } from 'redux/actions';\r\n\r\ninterface StateProps {\r\n helpIconUrl?: string;\r\n systemErrors?: string[];\r\n}\r\n\r\ninterface ComponentProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\ninterface DispatchProps {\r\n updateSystemErrors: () => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & WithStyles & WithWidth & DispatchProps;\r\n\r\nconst BasePage = (props: Props) => {\r\n const { classes = {}, helpIconUrl } = props;\r\n const isUserEmployee = auth.isUserEmployee();\r\n const isCanvas = canvasUtil.isCanvas();\r\n const currentYear = new Date().getFullYear();\r\n const contentClass = clsx(\r\n classes.content,\r\n {\r\n [classes.maxWidth]: !isCanvas,\r\n [classes.canvasPadding]: isCanvas\r\n }\r\n )\r\n return (\r\n <>\r\n {!isCanvas && \r\n \r\n \"BenefitMall\r\n \r\n {helpIconUrl && isUserEmployee && \r\n \r\n }\r\n \r\n \r\n }\r\n
\r\n {props.children}\r\n {!isCanvas && <>\r\n \r\n
\r\n © {currentYear} BenefitMall. All rights reserved. BenefitMall, the BenefitMall Logos, and NEXT GENERATION BROKER SERVICES are trademarks or registered trademarks of Centerstone Insurance and Financial Services, Inc. d/b/a BenefitMall or its affiliates in the U.S. California License #0639679. *All other trademarks are the property of their respective owners. | Privacy Policy | Legal\r\n
\r\n }\r\n
\r\n 0}\r\n onClose={props.updateSystemErrors}\r\n errors={props.systemErrors}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n bar: {\r\n color: palette.grey.light,\r\n backgroundColor: palette.blue[900]\r\n },\r\n toolbarLogo: {\r\n height: 30,\r\n position: 'relative',\r\n top: -6\r\n },\r\n toolbarRight: {\r\n flexGrow: 1\r\n },\r\n divider: {\r\n marginTop: theme.spacing(2)\r\n },\r\n search: {\r\n backgroundColor: palette.blue.primary,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n borderRadius: 3,\r\n padding: 3,\r\n },\r\n searchInput: {\r\n color: 'inherit',\r\n paddingRight: 5,\r\n paddingLeft: 5\r\n },\r\n content: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(5)\r\n },\r\n menuButton: {\r\n marginLeft: theme.spacing(-1.5),\r\n marginRight: theme.spacing(2.5),\r\n },\r\n canvasPadding: {\r\n paddingLeft: theme.spacing(2)\r\n },\r\n maxWidth: {\r\n [theme.breakpoints.up('lg')]: {\r\n maxWidth: theme.breakpoints.values.lg,\r\n },\r\n width: '100%',\r\n marginLeft: 'auto',\r\n boxSizing: 'border-box',\r\n marginRight: 'auto',\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(2),\r\n [theme.breakpoints.up('sm')]: {\r\n paddingLeft: theme.spacing(3),\r\n paddingRight: theme.spacing(3),\r\n },\r\n [theme.breakpoints.up('md')]: {\r\n paddingLeft: theme.spacing(4),\r\n paddingRight: theme.spacing(4),\r\n },\r\n },\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n const employeeHelpLink =\r\n Object.values(state.settings.values).find(setting => setting.key === 'EMPLOYEE_HELP_LINK');\r\n\r\n return {\r\n helpIconUrl: employeeHelpLink && employeeHelpLink.value,\r\n systemErrors: state.app.systemErrors\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n updateSystemErrors: () => dispatch(updateSystemErrors([]))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withWidth()(withStyles(styles)(BasePage)))","import { Typography } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport React from 'react';\r\nimport { Redirect, RouteComponentProps } from 'react-router';\r\nimport routes from 'router/routes';\r\nimport auth from 'utility/auth';\r\nimport palette from 'utility/palette';\r\nimport BasePage from '../../components/common/base_page';\r\n\r\n\r\n\r\ntype Props = RouteComponentProps\r\n\r\ninterface State {\r\n redirectUrl: string,\r\n authenticating: boolean;\r\n}\r\n\r\nclass PersonaSelection extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n redirectUrl: \"\",\r\n authenticating: false\r\n };\r\n }\r\n\r\n\r\n authOn = () => this.setState({ authenticating: true });\r\n\r\n authOff = () => this.setState({ authenticating: false });\r\n\r\n\r\n goToEmployeeLogin = () => {\r\n this.authOn();\r\n auth.clearSessionStorage();\r\n auth.loginEmployee().then(this.authOff, this.authOff);\r\n };\r\n\r\n goToOverrideLogin = () => {\r\n this.authOn();\r\n auth.clearSessionStorage();\r\n auth.loginOverride().then(this.authOff, this.authOff);\r\n };\r\n\r\n goToEmployeeOverrideLogin = () => {\r\n this.authOn();\r\n auth.clearSessionStorage();\r\n auth.loginEmployeeOverride().then(this.authOff, this.authOff);\r\n };\r\n\r\n\r\n render() {\r\n if (this.state.redirectUrl !== \"\") {\r\n return (\r\n \r\n );\r\n }\r\n const isLoggedIn = auth.isLoggedIn();\r\n if (isLoggedIn) {\r\n var redirectURL = routes.loginComplete.path;\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n
\r\n
\r\n

Persona Selection (Developer/Tester Only Page)

\r\n

Login into the application using the following flows.

\r\n
\r\n \r\n \r\n \r\n System Admin\r\n

\r\n \r\n

\r\n {/*

\r\n \r\n

*/}\r\n
\r\n
\r\n \r\n \r\n Login as Employee or Employer\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n padding: '30px 60px',\r\n backgroundColor: palette.grey.dark,\r\n minHeight: 270\r\n }\r\n};\r\n\r\n\r\n\r\nexport default PersonaSelection;\r\n","import React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport auth from 'utility/auth';\r\n\r\ninterface ComponentProps {\r\n\r\n}\r\n\r\ntype Props = RouteComponentProps & ComponentProps;\r\n\r\ninterface State {\r\n\r\n}\r\n\r\nclass RenewToken extends React.PureComponent {\r\n private statusMessage = \"token renewed\";\r\n constructor(props: Props) {\r\n super(props);\r\n auth.handleIdpResponse();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n

{this.statusMessage}

\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default RenewToken;\r\n","import { Grid, Typography } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { convertToMoment, convertToNumber } from 'utility/form_normalization';\r\nimport { getGenders } from 'utility/lookup_utils';\r\nimport { characterLimit, email, match, password, required, requiredForSubmission, validPastDate } from '../../utility/form_validation';\r\nimport { DatePickerField, TextFormField } from '../common/reduxform_fields';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\nimport palette from 'utility/palette';\r\n\r\nexport type FieldData = {\r\n firstName: string;\r\n lastName: string;\r\n genderId: number;\r\n dateOfBirth: moment.Moment;\r\n email: string;\r\n password: string;\r\n confirmPassword: string;\r\n};\r\n\r\ninterface Props {\r\n formName: string;\r\n errorMessage?: any;\r\n recaptchaKey: string;\r\n resetCaptcha: boolean;\r\n changeCaptcha: (token: string|null) => void;\r\n}\r\n\r\nconst validateFirstName = required('First Name is required');\r\nconst validateLastName = required('Last Name is required');\r\nconst validateGender = required('Gender is required');\r\nconst validateDOB = [required('Date of Birth is required'), validPastDate];\r\nconst validatePassword = required('Password is required');\r\nconst validateConfirmPassword = required('Please confirm your password');\r\nconst nativeSelect = { native: true };\r\nconst validatePasswordsMatch = match('password', 'Both passwords need to match');\r\nconst confirmPasswordValidationArray = [validateConfirmPassword, validatePasswordsMatch, password];\r\nconst passwordValidationArray = [validatePassword, password];\r\nconst characterLimit100 = characterLimit(100);\r\nconst validateCaptcha = required('');\r\nconst dummyCaptchaComponent = () => ;\r\n\r\nconst AddEmployeeFields = (props: Props) => {\r\n const recaptchaInstance = React.useRef(null as any);\r\n React.useEffect(() => {\r\n if(props.resetCaptcha && recaptchaInstance.current){\r\n recaptchaInstance.current.reset();\r\n }\r\n }, [props.resetCaptcha]);\r\n return (\r\n \r\n \r\n \r\n We need some information to create your account.\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 {getGenders().map(val => (\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 {!!props.errorMessage &&\r\n \r\n {props.errorMessage}\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n infoText: {\r\n fontSize: 16,\r\n textAlign: 'center'\r\n },\r\n fields: {\r\n marginBottom: 8\r\n },\r\n container: {\r\n paddingLeft: 48,\r\n paddingRight: 48\r\n }\r\n};\r\n\r\nexport default AddEmployeeFields;\r\n","import { Grid, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport palette from 'utility/palette';\r\nimport { email, match, password, required, requiredForSubmission } from '../../utility/form_validation';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\n\r\nexport type FieldData = {\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n password: string;\r\n confirmPassword: string;\r\n};\r\n\r\ninterface Props {\r\n email: string;\r\n formName: string;\r\n errorMessage?: string;\r\n recaptchaKey: string;\r\n changeCaptcha: (token:string|null) => void;\r\n resetCaptcha:boolean;\r\n}\r\n\r\nconst validateFirstName = required('First Name is required');\r\nconst validateLastName = required('Last Name is required');\r\nconst validatePassword = required('Password is required');\r\nconst validateConfirmPassword = required('Please confirm your password');\r\nconst validatePasswordsMatch = match('password', 'Both passwords need to match');\r\nconst confirmPasswordValidationArray = [validateConfirmPassword, validatePasswordsMatch, password];\r\nconst passwordValidationArray = [validatePassword, password];\r\nconst validateCaptcha = required('');\r\nconst dummyCaptchaComponent=() => ;\r\nconst AddEmployerFields = (props: Props) => {\r\n const recaptchaInstance = React.useRef(null as any);\r\n React.useEffect(() => {\r\n if(props.resetCaptcha && recaptchaInstance.current){\r\n recaptchaInstance.current.reset();\r\n }\r\n }, [props.resetCaptcha]);\r\n return (\r\n \r\n \r\n \r\n We need some information to create your account.\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 {!!props.errorMessage &&\r\n \r\n {props.errorMessage}\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n infoText: {\r\n fontSize: 16,\r\n textAlign: 'center'\r\n },\r\n fields: {\r\n marginBottom: 8\r\n },\r\n fieldsDisabled: {\r\n marginBottom: 8,\r\n color: palette.grey.text\r\n },\r\n container: {\r\n paddingLeft: 48,\r\n paddingRight: 48\r\n }\r\n};\r\n\r\nexport default AddEmployerFields;","import { Card, CardActions, CardContent, CardHeader, CardMedia, Grid, Link, Typography } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { InjectedFormProps, reduxForm } from 'redux-form';\r\nimport palette from 'utility/palette';\r\nimport SaveButton from '../common/save_button';\r\nimport AddEmployeeFields from './add_employee_fields';\r\nimport AddEmployerFields from './add_employer_fields';\r\n\r\nexport const FORM_NAME = 'ADD_USER';\r\n\r\nexport interface FormData {\r\n enrollmentId: string,\r\n firstName: string,\r\n lastName: string,\r\n userType: string,\r\n email: string,\r\n password: string,\r\n dateOfBirth?: moment.Moment,\r\n genderId?: number,\r\n captchaToken: string\r\n}\r\n\r\ninterface ComponentProps {\r\n isEmployer: boolean;\r\n email?: string;\r\n errorMessage?: any;\r\n onCancel: () => void;\r\n resetCaptcha:boolean;\r\n}\r\n\r\nvar recaptchaKey = process.env.REACT_APP_RECAPTCHA_KEY as string;\r\ninterface Props extends InjectedFormProps, ComponentProps { }\r\n\r\nconst AddUserForm = (props: Props) => {\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 {props.isEmployer ?\r\n props.change('captchaToken', token || '')} recaptchaKey={recaptchaKey} email={props.email!} formName={FORM_NAME} errorMessage={props.errorMessage} />\r\n :\r\n props.change('captchaToken', token || '')} recaptchaKey={recaptchaKey} formName={FORM_NAME} errorMessage={props.errorMessage} />\r\n }\r\n \r\n \r\n
\r\n \r\n \r\n Create Account\r\n \r\n \r\n
\r\n \r\n Already have an account?
\r\n \r\n     Sign In    \r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n background: {\r\n backgroundImage: 'url(/content/bg.jpg?v=2)',\r\n minHeight: 350,\r\n position: 'absolute',\r\n top: '0%',\r\n bottom: '0%',\r\n left: '0%',\r\n right: '0%',\r\n backgroundSize: 'cover',\r\n backgroundAttachment: 'fixed',\r\n },\r\n flexCenter: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n brStyle: {\r\n marginTop: 8\r\n },\r\n\r\n helpText: {\r\n textAlign: 'center',\r\n marginBottom: 16,\r\n fontSize: 16\r\n },\r\n card: {\r\n width: '100%'\r\n },\r\n cardHeader: {\r\n height: 35,\r\n backgroundColor: palette.blue[900]\r\n },\r\n cardContent: {\r\n marginTop: 24\r\n },\r\n infoText: {\r\n fontSize: 16\r\n },\r\n title: {\r\n color: palette.grey.lightText\r\n },\r\n image: {\r\n height: 32,\r\n width: 150,\r\n marginTop: -52,\r\n marginLeft: 16\r\n },\r\n cancelButton: {\r\n color: palette.blue.primary,\r\n },\r\n buttonGroup: {\r\n marginBottom: 10,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center' ,\r\n paddingLeft: 65,\r\n paddingRight: 65\r\n\r\n }\r\n};\r\n\r\nexport default reduxForm({ form: FORM_NAME })(AddUserForm);","import { CircularProgress, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport Link from 'components/common/link';\r\nimport AddUserForm, { FormData as FormDataAddUser } from 'components/forms/add_user_form';\r\nimport { displaySnackbar, enrollmentExists, fetchSignUpToken, verifyEmployerToken } from 'redux/actions';\r\nimport { addEmployeeUser, addEmployerUser, EmployeeUser, EmployerUser, EmployeeWithToken, addEmployeeWToken } from 'redux/actions/employee_actions';\r\nimport { EnrollmentDTO, SnackbarVariant } from 'redux/reducers';\r\nimport auth from 'utility/auth';\r\nimport palette from 'utility/palette';\r\nimport * as qs from 'utility/query_string_util';\r\n\r\ninterface DispatchProps {\r\n fetchSignUpToken: (enrollmentId: string, email?: string) => Promise;\r\n enrollmentExists: (enrollmentId: string) => Promise;\r\n addEmployeeUser: (employeeUser: EmployeeUser) => Promise;\r\n addEmployerUser: (employerUser: EmployerUser) => Promise;\r\n addEmployeeWithToken: (employeeUser: EmployeeWithToken) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n verifyEmployerToken: (enrollmentId: string, email: string, nbf: string, expires: string, sig: string) => Promise;\r\n}\r\n\r\ntype Props = DispatchProps & RouteComponentProps;\r\n\r\ninterface State {\r\n progressMessage: string;\r\n showTokenError: boolean;\r\n errorMessage?: any;\r\n showEnrollmentError?: boolean;\r\n loading: boolean;\r\n resetCaptcha: boolean;\r\n}\r\n\r\nclass SignUp extends React.PureComponent {\r\n\r\n isEmployerSignUp = false;\r\n isEmployeeSignUp = false;\r\n isEmployeeWithToken = false;\r\n email = '';\r\n firstName = '';\r\n lastName = '';\r\n enrollmentId = '';\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n const { email, fn, ln, eId } = qs.parse(this.props.location.search);\r\n this.email = email ? email as string : '';\r\n this.firstName = fn ? fn as string : '';\r\n this.lastName = ln ? ln as string : '';\r\n this.enrollmentId = eId ? eId as string : '';\r\n\r\n this.isEmployerSignUp = this.props.location.pathname.indexOf(\"employer\") > 0;\r\n this.isEmployeeSignUp = this.props.location.pathname.indexOf(\"employee\") > 0;\r\n this.isEmployeeWithToken = this.props.location.pathname.indexOf(\"employ-token\") > 0;\r\n\r\n if (this.isEmployeeSignUp) {\r\n this.getSignUpTokenAndStartSignUpEmployee();\r\n } else if (this.isEmployerSignUp) {\r\n this.getSignUpTokenAndStartSignUpEmployer()\r\n } else if (this.isEmployeeWithToken) {\r\n this.getSignUpTokenAndStartSignUpEmployeeWithToken();\r\n } else {\r\n this.setState({ showTokenError: true });\r\n }\r\n\r\n this.state = {\r\n progressMessage: \"Finding your enrollment\",\r\n showTokenError: false,\r\n showEnrollmentError: false,\r\n loading: true,\r\n resetCaptcha: false\r\n };\r\n }\r\n\r\n get initialValues() {\r\n const values: Partial = {\r\n enrollmentId: this.enrollmentId,\r\n email: (this.isEmployerSignUp || this.isEmployeeWithToken) ? this.email : undefined,\r\n firstName: (this.isEmployerSignUp || this.isEmployeeWithToken) ? this.firstName : undefined,\r\n lastName: (this.isEmployerSignUp || this.isEmployeeWithToken) ? this.lastName : undefined,\r\n }\r\n\r\n return values;\r\n }\r\n\r\n private getSignUpTokenAndStartSignUpEmployee() {\r\n this.props.enrollmentExists(this.enrollmentId)\r\n .then(\r\n () => {\r\n this.props.fetchSignUpToken(this.enrollmentId)\r\n .then((token) => {\r\n this.setState({ progressMessage: \"Found Enrollment. Redirecting to sign up...\", loading: false });\r\n }, () => {\r\n this.setState({ showTokenError: true, loading: false });\r\n })\r\n }, () => {\r\n this.setState({ showEnrollmentError: true, loading: false })\r\n }\r\n )\r\n }\r\n private getSignUpTokenAndStartSignUpEmployer() {\r\n const { nbf, exp, sig } = qs.parse(this.props.location.search, { decode: false });\r\n this.props.verifyEmployerToken(this.enrollmentId, this.email, nbf! as string, exp! as string, sig! as string)\r\n .then(() => {\r\n this.setState({ progressMessage: \"Found Enrollment. Redirecting to sign up...\", loading: false });\r\n }, () => {\r\n this.setState({ showTokenError: true, loading: false });\r\n })\r\n }\r\n private getSignUpTokenAndStartSignUpEmployeeWithToken() {\r\n const { nbf, exp, sig } = qs.parse(this.props.location.search, { decode: false });\r\n this.props.verifyEmployerToken(this.enrollmentId, this.email, nbf! as string, exp! as string, sig! as string)\r\n .then(() => {\r\n this.setState({ progressMessage: \"Found Enrollment. Redirecting to sign up...\", loading: false });\r\n }, () => {\r\n this.setState({ showTokenError: true, loading: false });\r\n })\r\n \r\n }\r\n\r\n determineLogin = () => {\r\n if (this.isEmployerSignUp) {\r\n this.goToEmployerLogin();\r\n }\r\n else if (this.isEmployeeSignUp || this.isEmployeeWithToken) {\r\n this.goToEmployeeLogin();\r\n }\r\n }\r\n\r\n goToEmployeeLogin = () => {\r\n auth.loginEmployee();\r\n };\r\n\r\n goToEmployerLogin = () => {\r\n auth.loginEmployer();\r\n };\r\n\r\n handleSubmit = async (formValues: FormDataAddUser) => {\r\n this.setState({ resetCaptcha: false, errorMessage: null});\r\n var response;\r\n const { nbf, exp, sig } = qs.parse(this.props.location.search, { decode: false });\r\n if (this.isEmployerSignUp) {\r\n const newEmployerUser: EmployerUser = {\r\n enrollmentId: formValues.enrollmentId,\r\n firstName: formValues.firstName,\r\n lastName: formValues.lastName,\r\n email: formValues.email,\r\n password: formValues.password,\r\n tokenNotBefore: nbf! as string,\r\n tokenExpires: exp! as string,\r\n tokenSignature: sig! as string,\r\n captchaToken: formValues.captchaToken\r\n };\r\n response = await this.props.addEmployerUser(newEmployerUser);\r\n } else if (this.isEmployeeSignUp) {\r\n const newEmployeeUser: EmployeeUser = {\r\n token: formValues.enrollmentId,\r\n firstName: formValues.firstName,\r\n lastName: formValues.lastName,\r\n email: formValues.email,\r\n password: formValues.password,\r\n dateOfBirth: formValues.dateOfBirth!,\r\n genderId: formValues.genderId!,\r\n captchaToken: formValues.captchaToken\r\n };\r\n response = await this.props.addEmployeeUser(newEmployeeUser);\r\n } else if (this.isEmployeeWithToken) {\r\n const newEmployeeUser: EmployeeWithToken = {\r\n enrollmentId: formValues.enrollmentId,\r\n firstName: formValues.firstName,\r\n lastName: formValues.lastName,\r\n email: formValues.email,\r\n password: formValues.password,\r\n tokenNotBefore: nbf! as string,\r\n tokenExpires: exp! as string,\r\n tokenSignature: sig! as string,\r\n captchaToken: formValues.captchaToken\r\n };\r\n response = await this.props.addEmployeeWithToken(newEmployeeUser);\r\n }\r\n this.handleResponse(response);\r\n }\r\n\r\n //Currently the Validation message does not send the Error message category from EPS to web API so the first check in all if conditions will never happen, we are comparing message send from EPS here and taking decision, but the logic should\r\n //not be based on Message text, infact on the error category. This needs a fix in EPS AddUserResult.cs and ValidationMessage.cs\r\n handleResponse = (response: any) => {\r\n if (response === 'Success') {\r\n this.setState({ errorMessage: undefined });\r\n this.props.displaySnackbar('Account created.', 'success');\r\n this.determineLogin()\r\n } else if (response === 'InvalidOrOutdatedTokenFromOldEmail' || response === 'Invalid/Old Registration Link') {\r\n this.setState({ resetCaptcha: true });\r\n this.props.displaySnackbar('Registration url is outdated or invalid, please use latest email link to register.', 'error');\r\n }\r\n else if (response === 'EmployeeIsIneligible' || response === 'Employee has been marked ineligible') {\r\n this.setState({ resetCaptcha: true });\r\n this.props.displaySnackbar('Your benefits administrator has marked you as ineligible for coverage. Please reach out to them for more details.', 'error');\r\n }\r\n else if (response === 'EmployeeIsWaiving' || response === 'Employee has been marked waiving') {\r\n this.setState({ resetCaptcha: true });\r\n this.props.displaySnackbar('Your benefits administrator has marked you as waiving coverage. Please reach out to them for more details.', 'error');\r\n }\r\n else if (response === 'UnableToVerifyUserClaims' || response === 'Unable to verify user claims') {\r\n this.setState({ resetCaptcha: true, errorMessage: The information you provided does not match our records. Please ensure your demographic information matches what was provided to your employer. });\r\n } else if (response === 'UserAlreadyExists' || response === 'User already exists') {\r\n this.setState({ resetCaptcha: true });\r\n this.props.displaySnackbar('Account already exists. Please Sign In to proceed.', 'error');\r\n } else if (response === 'UnableToCompleteRegistration' || response === 'Unable to update employee with Username' || response === 'Unable to Create B2C Account') {\r\n this.setState({ resetCaptcha: true });\r\n this.props.displaySnackbar('Could not create user account/Update user information. Please reach out to your benefits administrator.', 'error');\r\n } else if (response === 'InvalidCaptcha' || response === 'Invalid recaptcha') {\r\n this.setState({ resetCaptcha: true, errorMessage: Please select recaptcha. });\r\n } else {\r\n this.setState({ resetCaptcha: true });\r\n this.props.displaySnackbar('Error signing up. Please reach out to your benefits administrator.', 'error');\r\n }\r\n }\r\n\r\n backToLogin = () => {\r\n if (this.isEmployerSignUp) {\r\n auth.loginEmployer();\r\n } else {\r\n auth.loginEmployee();\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n
\r\n

Loading your information

\r\n \r\n
\r\n )\r\n } else if (this.state.showEnrollmentError) {\r\n return (\r\n
\r\n

Error occurred

\r\n

Unable to find your enrollment. Please contact your administrator

\r\n
\r\n );\r\n } else if (this.state.showTokenError ) {\r\n return (\r\n
\r\n

Error occurred

\r\n

Your invitation has expired. Please request your administrator to send a new invitation.

\r\n
\r\n );\r\n }else if (this.isEmployerSignUp || this.isEmployeeSignUp || this.isEmployeeWithToken) {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n
\r\n

Error Occurred

\r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n errorText: {\r\n fontFamily: 'Roboto',\r\n fontWeight: 500,\r\n color: palette.red.primary,\r\n textAlign: 'center'\r\n },\r\n};\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchSignUpToken: (enrollmentId) => dispatch(fetchSignUpToken(enrollmentId)),\r\n enrollmentExists: (enrollmentId) => dispatch(enrollmentExists(enrollmentId)),\r\n addEmployeeUser: (employeeUser) => dispatch(addEmployeeUser(employeeUser)),\r\n addEmployerUser: (employerUser) => dispatch(addEmployerUser(employerUser)),\r\n addEmployeeWithToken: (employeeWithToken) => dispatch(addEmployeeWToken(employeeWithToken)),\r\n verifyEmployerToken: (enrollmentId, email, nbf, expires, sig) => dispatch(verifyEmployerToken(enrollmentId, email, nbf, expires, sig)),\r\n displaySnackbar: (message, variant) => dispatch(displaySnackbar(message, variant)),\r\n }\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(SignUp);","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport routes from 'router/routes';\r\nimport http from '../../utility/http';\r\nimport { CompanyContact, EnrollmentClass, EnrollmentDTO, CarrierEnrollmentTypeDTO, DigitalDocumentDTO } from '../reducers';\r\nimport { Document } from '../reducers/plan_reducer';\r\nimport { ReduxState } from '../store';\r\nimport { displaySnackbar, displaySnackbarWithErrors } from './app_actions';\r\nimport { fetchEmployees } from './employee_actions';\r\nimport { clearGroupSubmission, fetchGroupSubmissions } from './group_submission_actions';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\n// Store Enrollment Action Creator\r\nexport const storeEnrollment = acFactory('STORE_ENROLLMENT');\r\n\r\n// Fetch Enrollment Thunk\r\nexport function fetchEnrollment(id: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n const data = await http(`enrollments/${id}`) as EnrollmentDTO;\r\n dispatch(storeEnrollment(data));\r\n return data;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with fetching enrollment'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Store Company Contacts Action Creator\r\nexport const storeCompanyContacts = acFactory('STORE_COMPANY_CONTACTS');\r\nexport const storeCompanyContact = acFactory('STORE_COMPANY_CONTACT');\r\n\r\n// Fetch Company Contact\r\nexport function fetchCompanyContacts(companyId: string, enrollmentId: string) {\r\n return async (dispatch: any) => {\r\n const companyContacts: CompanyContact[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/companycontacts`);\r\n dispatch(storeCompanyContacts(companyContacts));\r\n };\r\n}\r\n\r\n// Remove Company Contact Action Creator\r\nexport const removeCompanyContact = acFactory('REMOVE_COMPANY_CONTACT');\r\n\r\n// Delete Company Contact Thunk\r\nexport function deleteCompanyContact(companyId: string, enrollmentId: string, id: string, name: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/companycontacts/${id}`, { method: 'DELETE' });\r\n dispatch(removeCompanyContact(id));\r\n dispatch(displaySnackbar(`${name} removed`, 'deletion'));\r\n return id;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with removing company contact'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Add Company Contact Thunk\r\nexport function addCompanyContact(companyId: string, enrollmentId: string, companyContact: CompanyContact) {\r\n return async (dispatch: any) => {\r\n try {\r\n companyContact.employerSignUpBaseUrlPath = window.location.origin + routes.employerSignUp.path;\r\n\r\n const id = await http(`companies/${companyId}/enrollments/${enrollmentId}/companycontacts`, { method: 'POST', body: JSON.stringify(companyContact) });\r\n companyContact.fullName = companyContact.firstName + ' ' + companyContact.lastName;\r\n companyContact.id = id;\r\n dispatch(storeCompanyContact(companyContact));\r\n dispatch(displaySnackbar('Company contact saved', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving company contact'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n\r\n\r\n// Update Enrollment Thunk\r\nexport function updateEnrollment(enrollment: EnrollmentDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`enrollments/${enrollment.id}`, { method: 'PUT', body: JSON.stringify(enrollment) });\r\n dispatch(storeEnrollment(enrollment));\r\n dispatch(displaySnackbar('Enrollment updated', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with updating enrollment'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Update Company Info Thunk\r\nexport function updateCompanyInfo(enrollment: EnrollmentDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`enrollments/${enrollment.id}`, { method: 'PUT', body: JSON.stringify(enrollment) });\r\n dispatch(storeEnrollment(enrollment));\r\n dispatch(displaySnackbar('Company Info Saved', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with updating company info'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Store Enrollment Classes Action Creator\r\nexport const storeEnrollmentClasses = acFactory('STORE_ENROLLMENT_CLASSES');\r\n\r\n// Fetch Enrollment Classes Thunk\r\nexport function fetchEnrollmentClasses(companyId: string, enrollmentId: string) {\r\n return async (dispatch: any) => {\r\n const enrollmentClasses: EnrollmentClass[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/classes`);\r\n dispatch(storeEnrollmentClasses(enrollmentClasses));\r\n };\r\n}\r\n\r\n// Upsert Enrollment Classes Thunk\r\nexport function upsertEnrollmentClasses(companyId: string, enrollmentId: string, enrollmentClasses: EnrollmentClass[]) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/classes`, { method: 'POST', body: JSON.stringify(enrollmentClasses) });\r\n await dispatch(fetchEnrollmentClasses(companyId, enrollmentId));\r\n dispatch(displaySnackbar('Enrollment class saved', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving enrollment class'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Remove Enrollment Class Action Creator\r\nexport const removeEnrollmentClass = acFactory('REMOVE_ENROLLMENT_CLASS');\r\n\r\n// Delete Enrollment Class Thunk\r\nexport function deleteEnrollmentClasses(companyId: string, enrollmentId: string, classIds: string[]) {\r\n return async (dispatch: any) => {\r\n const promises: Promise[] = [];\r\n classIds.forEach(classId => {\r\n promises.push(http(`companies/${companyId}/enrollments/${enrollmentId}/classes/${classId}`, { method: 'DELETE' }));\r\n dispatch(removeEnrollmentClass(classId));\r\n });\r\n try {\r\n await Promise.all(promises);\r\n dispatch(displaySnackbar('Enrollment class removed', 'deletion'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with removing enrollment class'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Enrollment Submitted Action Creater\r\nexport const enrollmentSubmitted = acFactory('SUBMIT_ENROLLMENT');\r\n\r\n// Submit Enrollment Thunk\r\nexport function submitEnrollment(message: string) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n const enrollment = getState().enrollment;\r\n const data = await http(`enrollments/company/${enrollment.company.id}/${enrollment.id}/submit`, { method: 'POST' }) as EnrollmentDTO;\r\n if (message != '' && message != undefined) {\r\n dispatch(displaySnackbar(message, 'success'));\r\n } \r\n\r\n dispatch(storeEnrollment(data));\r\n await dispatch(fetchEmployees(enrollment.company.id, enrollment.id));\r\n\r\n return data;\r\n }\r\n catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with enrollment submission'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\nexport function resubmitEnrollment(groupsToResubmit: string[]) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n const enrollment = getState().enrollment;\r\n const enrollmentId = enrollment.id;\r\n const data = await http(`enrollments/company/${enrollment.company.id}/${enrollmentId}/resubmit`, { method: 'POST', body: JSON.stringify(groupsToResubmit) }) as EnrollmentDTO;\r\n dispatch(storeEnrollment(data));\r\n\r\n return data;\r\n }\r\n catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with enrollment re-submission'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\nexport const storeDigitalSignatories = acFactory('STORE_DIGITAL_SIGNATORIES');\r\n\r\nexport function fetchDigitalDocuments(companyId: string, enrollmentId: string) {\r\n return async (dispatch: any) => {\r\n const digitalSignatories: DigitalDocumentDTO = await http(`companies/${companyId}/enrollments/${enrollmentId}/documents`);\r\n dispatch(storeDigitalSignatories(digitalSignatories));\r\n };\r\n}\r\n\r\nexport function saveDigitalDocEmailAddress(enrollment: EnrollmentDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`enrollments/${enrollment.id}`, { method: 'PUT', body: JSON.stringify(enrollment) });\r\n dispatch(storeEnrollment(enrollment));\r\n dispatch(displaySnackbar('Email Addresses updated', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with updating Email Addresses'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\nexport function completeEnrollment(enrollment: EnrollmentDTO, carrierEnrollmentType: CarrierEnrollmentTypeDTO[], digitalSignOptin: boolean) {\r\n return async (dispatch: any) => {\r\n try {\r\n if (digitalSignOptin) {\r\n await http(`enrollments/company/${enrollment.company.id}/${enrollment.id}/completewithoptin`, { method: 'PUT', body: JSON.stringify(carrierEnrollmentType) });\r\n }\r\n else {\r\n await http(`enrollments/company/${enrollment.company.id}/${enrollment.id}/complete`, { method: 'PUT', body: JSON.stringify(carrierEnrollmentType) });\r\n }\r\n await dispatch(fetchEnrollment(enrollment.id));\r\n dispatch(displaySnackbar('Enrollment Setup completed', 'success'));\r\n await dispatch(fetchGroupSubmissions(enrollment.company.id, enrollment.id));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with completing enrollment setup'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\nexport function rollbackEnrollment() {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n const enrollment = getState().enrollment;\r\n const companyId = getState().enrollment.company.id;\r\n const data = await http(`enrollments/${enrollment.id}/rollback`, { method: 'POST' }) as EnrollmentDTO;\r\n\r\n await dispatch(fetchEnrollment(enrollment.id));\r\n await dispatch(fetchEmployees(enrollment.company.id, enrollment.id));\r\n dispatch(clearGroupSubmission());\r\n dispatch(displaySnackbar('Cancel Enrollment Setup completed', 'success'));\r\n return data;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with Cancel Enrollment Setup'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\nexport function enrollmentExists(id: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n const data = await http(`user/enrollmentExists/${id}`) as string;\r\n return data;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Enrollment doesnt exist'));\r\n throw ex;\r\n }\r\n };\r\n}","import Button from '@material-ui/core/Button';\r\nimport React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport palette from 'utility/palette';\r\nimport BasePage from 'components/common/base_page';\r\nimport routes from 'router/routes';\r\nimport auth from 'utility/auth';\r\nimport { withTelemetry, WithTelemetry } from 'utility/telemetry';\r\n\r\ntype Props = RouteComponentProps & WithTelemetry\r\n\r\nconst NotFound = (props: Props) => {\r\n function goToLandingPage() {\r\n const { path } = routes.home;\r\n props.history.push(path);\r\n }\r\n\r\n const isBroker = auth.isUserEnrollmentSuperAdmin();\r\n const [isRedirecting, setIsRedirecting] = React.useState(true)\r\n\r\n React.useEffect(() => {\r\n const url = window.location.href;\r\n const decodedUrl = decodeURI(url);\r\n const isUrlNotDecoded = decodedUrl !== url\r\n\r\n if (isUrlNotDecoded) {\r\n props.telemetryService.trackEvent({\r\n name: 'INVALID_URL',\r\n properties: {\r\n pathname: props.history.location.pathname,\r\n url: url\r\n }\r\n })\r\n setTimeout(() => {\r\n window.location.replace(decodedUrl);\r\n }, 500);\r\n return;\r\n }\r\n\r\n setIsRedirecting(false);\r\n\r\n props.telemetryService.trackEvent({\r\n name: '404',\r\n properties: {\r\n pathname: props.history.location.pathname,\r\n url: url\r\n }\r\n })\r\n }, [props.history.location.pathname])\r\n\r\n return (\r\n \r\n {!isRedirecting &&\r\n
\r\n

404

\r\n

Oh no!

\r\n

This page doesn't seem to exist.

\r\n
\r\n
    \r\n
  1. The URL might be incorrect.
  2. \r\n
  3. You may have bookmarked a page that has moved.
  4. \r\n
  5. Maybe it's time for a coffee break.
  6. \r\n
\r\n
\r\n \r\n
\r\n }\r\n
\r\n )\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n robbotoFont: {\r\n fontFamily: 'Roboto'\r\n },\r\n fourFour: {\r\n fontSize: 96,\r\n color: palette.blue.primary,\r\n textAlign: 'center',\r\n marginBottom: 0,\r\n marginTop: 48\r\n },\r\n ohNo: {\r\n fontSize: 60,\r\n color: palette.blue.primary,\r\n textAlign: 'center',\r\n marginTop: 0,\r\n marginBottom: 0,\r\n fontWeight: 300,\r\n },\r\n pageText: {\r\n fontSize: 24,\r\n color: palette.grey.primary,\r\n textAlign: 'center',\r\n marginTop: '64px',\r\n marginBottom: '80px'\r\n },\r\n numbers: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n numberText: {\r\n fontSize: 24,\r\n color: palette.grey.primary,\r\n marginBottom: 15\r\n },\r\n dashboardButton: {\r\n height: '56px',\r\n width: '305px',\r\n backgroundColor: palette.blue.primary,\r\n color: 'white',\r\n marginLeft: '38%',\r\n marginBottom: '141px',\r\n marginTop: '44px',\r\n\r\n },\r\n dashboardText: {\r\n fontFamily: 'Roboto',\r\n fontSize: 14,\r\n fontWeight: 500,\r\n letterSpacing: \"1px\"\r\n }\r\n}\r\n\r\nexport default withTelemetry(NotFound);","import { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\ninterface Props {\r\n children: React.ReactNode;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n}\r\ninterface State {\r\n isHovering: boolean;\r\n}\r\n\r\nclass Link extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n isHovering: false\r\n };\r\n }\r\n doNothing = () => {\r\n\r\n }\r\n\r\n handleMouseHover = () => {\r\n this.setState({ isHovering: true });\r\n };\r\n\r\n handleMouseLeave = () => {\r\n this.setState({ isHovering: false });\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n
\r\n );\r\n }\r\n};\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n link: {\r\n color: palette.blue.primary,\r\n fontFamily: 'Roboto'\r\n },\r\n linkHover: {\r\n color: palette.blue.primary,\r\n textDecoration: 'underline',\r\n cursor: 'pointer',\r\n fontFamily: 'Roboto'\r\n },\r\n linkDisable: {\r\n color: palette.grey.text,\r\n fontFamily: 'Roboto'\r\n }\r\n};\r\n\r\nexport default Link;","import withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport Link from './link';\r\n\r\ninterface ComponentProps {\r\n items: string[];\r\n handlePageChange: (id: number) => void;\r\n}\r\n\r\ntype Props = ComponentProps & StyledComponentProps;\r\n\r\nconst Breadcrumb = React.memo((props: Props) => {\r\n const { classes = {}, items } = props;\r\n const pages = items.length;\r\n return (\r\n
\r\n {props.items.map((item, index) => {\r\n return (\r\n \r\n {index !== 0 && }\r\n {index !== pages - 1 ?\r\n props.handlePageChange(index)}>\r\n {item}\r\n \r\n :\r\n {item}\r\n }\r\n \r\n );\r\n })}\r\n
\r\n );\r\n});\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n wrapper: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n marginBottom: {\r\n marginBottom: 40\r\n },\r\n breadcrumbItem: {\r\n fontSize: 20,\r\n fontWeight: 500,\r\n },\r\n text: {\r\n color: palette.grey.darkGrey,\r\n fontSize: 20,\r\n fontWeight: 500,\r\n fontFamily: 'Roboto'\r\n },\r\n};\r\n\r\nexport default withStyles(styles)(Breadcrumb);","import Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { hasSubmitSucceeded, isDirty, isSubmitting, isValid, submit } from 'redux-form';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport SaveButton from 'components/common/save_button';\r\nimport { ReduxState } from 'redux/store';\r\n\r\ninterface ComponentProps {\r\n locationLabel?: string;\r\n formName?: string;\r\n checkForm: boolean;\r\n updateSavingStatus?: (isSaving: boolean) => void;\r\n onContinue: () => void;\r\n onCancel: () => void;\r\n}\r\ninterface StateProps {\r\n isDirty: boolean;\r\n isValid: boolean;\r\n isSubmitting: boolean;\r\n hasSubmitSucceeded: boolean;\r\n}\r\ninterface DispatchProps {\r\n submitForm: () => void;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps\r\n\r\ninterface State {\r\n saveAndContinueClicked: boolean;\r\n}\r\n\r\nclass AbandonChangesDialog extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n saveAndContinueClicked: false,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Props, prevState: State) {\r\n if (prevState.saveAndContinueClicked && prevProps.isSubmitting && this.props.isSubmitting) {\r\n this.props.updateSavingStatus && this.props.updateSavingStatus(true);\r\n this.props.onContinue();\r\n }\r\n }\r\n\r\n cancelAndContinue = () => {\r\n this.props.updateSavingStatus && this.props.updateSavingStatus(false);\r\n this.props.onContinue();\r\n }\r\n\r\n saveAndContinue = () => {\r\n this.setState({ saveAndContinueClicked: true });\r\n this.props.submitForm();\r\n }\r\n\r\n render() {\r\n const shouldOpen = this.props.checkForm && this.props.isDirty && !this.props.hasSubmitSucceeded;\r\n if (!shouldOpen) {\r\n this.props.onContinue();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {this.props.isValid ?\r\n You have unsaved changes{this.props.locationLabel && on {this.props.locationLabel}}. Do you want to save?

If you do not save, your changes will be lost.
\r\n :\r\n You have unsaved changes{this.props.locationLabel && on {this.props.locationLabel}}. Do you wish to continue?\r\n }\r\n
\r\n
\r\n \r\n {!this.props.isValid &&\r\n \r\n CANCEL\r\n \r\n }\r\n \r\n {this.props.isValid ? \"DON'T SAVE\" : \"DISCARD CHANGES\"}\r\n \r\n {this.props.isValid &&\r\n \r\n SAVE\r\n \r\n }\r\n \r\n \r\n );\r\n };\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const formLevelWarning = ownProps.formName && state.form[ownProps.formName] ? state.form[ownProps.formName].warning : false;\r\n return {\r\n isDirty: ownProps.formName ? isDirty(ownProps.formName)(state) : false,\r\n isValid: ownProps.formName ? isValid(ownProps.formName)(state) && !formLevelWarning : false,\r\n isSubmitting: ownProps.formName ? isSubmitting(ownProps.formName)(state) : false,\r\n hasSubmitSucceeded: ownProps.formName ? hasSubmitSucceeded(ownProps.formName)(state) : true,\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n submitForm: () => dispatch(submit(ownProps.formName!))\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AbandonChangesDialog);","import { Card, CardContent, Grid } from '@material-ui/core';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\nexport enum MessageCardLevel {\r\n information,\r\n alert,\r\n warning\r\n}\r\n\r\ninterface Props {\r\n title: React.ReactNode;\r\n subtitle?: React.ReactNode;\r\n icon?: React.ReactNode;\r\n hideIcon?: boolean;\r\n elevation: number;\r\n style?: React.CSSProperties;\r\n messageLevel: MessageCardLevel;\r\n hideRibbon?: boolean;\r\n greyBackground?: boolean\r\n onClick?: () => void;\r\n}\r\n\r\nfunction MessageCardRibbon(messageLevel: MessageCardLevel) {\r\n switch (messageLevel) {\r\n case MessageCardLevel.information:\r\n return
;\r\n case MessageCardLevel.alert:\r\n return
;\r\n case MessageCardLevel.warning:\r\n return
;\r\n default:\r\n return
;\r\n }\r\n}\r\n\r\nfunction MessageCardIcon(messageLevel: MessageCardLevel, icon?: React.ReactNode) {\r\n if (icon) {\r\n return icon;\r\n }\r\n else {\r\n switch (messageLevel) {\r\n case MessageCardLevel.information:\r\n return \r\n case MessageCardLevel.alert:\r\n return \r\n case MessageCardLevel.warning:\r\n return \r\n default:\r\n return \r\n }\r\n }\r\n}\r\n\r\nconst MessageCard = (props: Props) => {\r\n const hideRibbon = props.hideRibbon || false;\r\n const greyBackground = props.greyBackground ? styles.greyBackground : {}\r\n return (\r\n \r\n {!hideRibbon && MessageCardRibbon(props.messageLevel)}\r\n
\r\n \r\n \r\n {!props.hideIcon &&\r\n \r\n {MessageCardIcon(props.messageLevel, props.icon)}\r\n \r\n }\r\n \r\n
{props.title}
\r\n {props.subtitle &&
{props.subtitle}
}\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nMessageCard.defaultProps = {\r\n messageLevel: MessageCardLevel.information\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n card: {\r\n backgroundColor: palette.grey.light,\r\n margin: '5px 0',\r\n color: palette.grey.text,\r\n paddingTop: 12,\r\n paddingBottom: 12,\r\n fontFamily: 'Roboto'\r\n },\r\n greyBackground: {\r\n backgroundColor: palette.grey.medium\r\n },\r\n cardContentBorder: {\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\",\r\n borderLeft: 1,\r\n borderBottom: 1,\r\n borderRight: 1,\r\n borderTop: 0,\r\n borderBottomLeftRadius: 5,\r\n borderBottomRightRadius: 5,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n },\r\n cardContent: {\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\",\r\n paddingLeft: 0\r\n },\r\n infoRibbon: {\r\n height: 15,\r\n backgroundColor: palette.blue.link\r\n },\r\n alertRibbon: {\r\n height: 15,\r\n backgroundColor: palette.red.primary\r\n },\r\n warningRibbon: {\r\n height: 15,\r\n backgroundColor: palette.orange.primary\r\n },\r\n iconGrid: {\r\n textAlign: 'end'\r\n },\r\n infoIcon: {\r\n color: palette.blue.link\r\n },\r\n alertIcon: {\r\n color: palette.red.primary\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary\r\n },\r\n textGrid: {\r\n color: palette.grey.text,\r\n alignItems: 'center'\r\n },\r\n title: {\r\n lineHeight: '18px',\r\n letterSpacing: .5,\r\n fontWeight: 600,\r\n marginBottom: 10\r\n },\r\n subtitle: {\r\n lineHeight: '28px',\r\n letterSpacing: .5,\r\n fontSize: 16\r\n }\r\n};\r\n\r\nexport default MessageCard;","import { createStyles, Grid, List, ListItem, Paper } from '@material-ui/core';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport AbandonChangesDialog from 'containers/common/abandon_changes_dialogue';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\nexport interface TabOption {\r\n title: string;\r\n formName?: string;\r\n warning?: boolean;\r\n error?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface Props extends WithStyles {\r\n currentTab: number,\r\n optionsArray: TabOption[];\r\n locationLabel?: string;\r\n checkForm: boolean;\r\n handleChange: (index: number) => void\r\n onAbandonChangesCancel: () => void;\r\n onAbandonChangesContinue: () => void;\r\n}\r\n\r\nconst LeftNav = React.memo((props: Props) => {\r\n const { classes = {} } = props;\r\n return (\r\n <>\r\n \r\n \r\n {props.optionsArray.map((tab, index) => (\r\n props.handleChange(index)}\r\n disabled={tab.disabled}\r\n >\r\n \r\n \r\n {tab.title}\r\n \r\n\r\n {tab && (tab.warning || tab.error) &&\r\n \r\n {tab && tab.warning ? Missing Data : undefined}\r\n {tab && tab.error ? Missing Data : undefined}\r\n \r\n }\r\n \r\n \r\n ))}\r\n \r\n \r\n {props.checkForm &&\r\n \r\n }\r\n \r\n );\r\n});\r\n\r\nconst styles = createStyles({\r\n currentListItem: {\r\n backgroundColor: palette.grey.selectedTab,\r\n borderRight: 4,\r\n borderRightStyle: 'solid',\r\n borderRightColor: palette.blue.link\r\n },\r\n list: {\r\n marginBottom: 25\r\n },\r\n listItem: {\r\n fontFamily: 'Roboto',\r\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)',\r\n fontSize: 18,\r\n color: palette.blue.link,\r\n lineHeight: '2em'\r\n },\r\n missingDataWarning: {\r\n fontSize: 16,\r\n color: palette.orange.warning,\r\n display: 'inline-flex',\r\n alignItems: 'center'\r\n },\r\n missingDataError: {\r\n fontSize: 16,\r\n color: palette.red.primary,\r\n display: 'inline-flex',\r\n alignItems: 'center'\r\n },\r\n paper: {\r\n marginTop: 5\r\n },\r\n warning: {\r\n color: palette.orange.primary,\r\n fontSize: 14,\r\n marginLeft: 16\r\n },\r\n warningIcon: {\r\n fontSize: 18,\r\n marginRight: 4\r\n },\r\n});\r\n\r\nexport default withStyles(styles)(LeftNav);","import React from 'react';\r\nimport palette from 'utility/palette';\r\nimport { createStyles, Theme, withStyles, WithStyles } from '@material-ui/core';\r\nimport clsx from 'clsx';\r\n\r\ninterface ComponentProps {\r\n variant: 'primary' | 'secondary' | 'tertiary';\r\n children: React.ReactNode;\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles;\r\n\r\nconst Title = ({ classes, variant, children }: Props) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n root: {\r\n color: palette.grey.text,\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\r\n },\r\n primary: {\r\n fontSize: 34,\r\n letterSpacing: 0.25,\r\n lineHeight: 1.5\r\n },\r\n secondary: {\r\n fontSize: 24,\r\n lineHeight: 1.2\r\n },\r\n tertiary: {\r\n fontSize: 14,\r\n lineHeight: 1\r\n }\r\n});\r\n\r\nexport default withStyles(styles)(Title);","import { Table, TableBody, TableCell, TableHead, TableRow } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\n\r\nexport interface FieldData {\r\n id: string;\r\n fullName: string;\r\n selected: boolean;\r\n selectedInClassId?: string;\r\n selectedInClassName?: string;\r\n hasElectionStartedForEmployee: boolean;\r\n}\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n \r\n}\r\n\r\nconst EmployeeClassAssignmentFieldArray: React.FunctionComponent = (props: Props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n Employee Name\r\n Current Class\r\n \r\n \r\n \r\n {props.fields.map((name, index) => {\r\n const fieldData = props.fields.get(index);\r\n return (\r\n \r\n \r\n \r\n \r\n {fieldData.fullName}\r\n {fieldData.selectedInClassName || '--'}\r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default EmployeeClassAssignmentFieldArray;","import { Button, DialogActions, DialogContent, DialogContentText, Grid, IconButton } from '@material-ui/core';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { TextFormField } from 'components/common/reduxform_fields';\r\nimport React from 'react';\r\nimport { change, Field, FieldArray, WrappedFieldArrayProps } from 'redux-form';\r\nimport store from 'redux/store';\r\nimport { characterLimit, required } from 'utility/form_validation';\r\nimport palette from 'utility/palette';\r\nimport MessageCard from '../common/message_card';\r\nimport EmployeeClassAssignmentFieldArray, { FieldData as EmployeeClassFieldData } from './employee_class_assignment_field_array';\r\n\r\nexport interface FieldData {\r\n id: string;\r\n name: string;\r\n employees: EmployeeClassFieldData[];\r\n}\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n formName: string;\r\n formInvalid: boolean;\r\n formDirty: boolean;\r\n isSubmitted: boolean;\r\n isConfirmed: boolean;\r\n electionStartedEmployeeExists: boolean;\r\n hasNoElectionStartedEmployeeExists: boolean;\r\n hasEmployeesElectedAnyPlan: boolean;\r\n}\r\n\r\ninterface State {\r\n dialogOpen: boolean;\r\n deleteDialogOpen: boolean;\r\n indexBeingEdit?: number;\r\n fieldNameBeingEdit?: string;\r\n cachedClass?: FieldData;\r\n}\r\n\r\nconst characterLimit200 = characterLimit(200);\r\n\r\nclass EnrollmentClassesFieldArray extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n dialogOpen: false,\r\n deleteDialogOpen: false\r\n };\r\n }\r\n\r\n startEmployeeAssignment = (indexBeingEdit: number, fieldNameBeingEdit: string) => {\r\n const _class = this.props.fields.get(indexBeingEdit);\r\n let aClass;\r\n let bClass;\r\n const sortedEmployees = _class.employees.sort((a: any, b: any) => {\r\n aClass = a.selectedInClassName || \"\";\r\n bClass = b.selectedInClassName || \"\";\r\n if (aClass < bClass)\r\n return -1;\r\n if (aClass > bClass)\r\n return 1;\r\n return 0;\r\n })\r\n const cachedClass: FieldData = {\r\n ..._class,\r\n employees: sortedEmployees.map(emp => ({ ...emp }))\r\n };\r\n\r\n this.setState({ dialogOpen: true, indexBeingEdit, fieldNameBeingEdit, cachedClass });\r\n };\r\n\r\n cancelEmployeeAssignment = () => { \r\n this.setState({\r\n dialogOpen: false,\r\n indexBeingEdit: undefined,\r\n fieldNameBeingEdit: undefined,\r\n cachedClass: undefined\r\n });\r\n };\r\n\r\n saveEmployeeAssignment = () => {\r\n const updatedClasses: FieldData[] = [];\r\n const editClass = this.props.fields.get(this.state.indexBeingEdit!);\r\n const defaultEmployees = editClass.employees.map(emp => {\r\n return {\r\n id: emp.id,\r\n fullName: emp.fullName,\r\n selected: false,\r\n selectedInClassId: emp.selected ? editClass.id : emp.selectedInClassId !== editClass.id ? emp.selectedInClassId : undefined,\r\n selectedInClassName: emp.selected ? editClass.name : emp.selectedInClassName !== editClass.name ? emp.selectedInClassName : undefined,\r\n hasElectionStartedForEmployee: emp.hasElectionStartedForEmployee\r\n }\r\n });\r\n\r\n this.props.fields.forEach((name, index, fields) => {\r\n const classData = fields.get(index);\r\n const updatedClass = { ...classData };\r\n updatedClass.employees = defaultEmployees.map(emp => {\r\n const isSelected = (!emp.selectedInClassId || emp.selectedInClassId === classData.id) && emp.selectedInClassName === classData.name;\r\n return {\r\n ...emp,\r\n selected: isSelected,\r\n selectedInClassId: emp.selectedInClassId,\r\n selectedInClassName: emp.selectedInClassName,\r\n hasElectionStartedForEmployee: emp.hasElectionStartedForEmployee\r\n };\r\n });\r\n updatedClasses.push(updatedClass);\r\n });\r\n\r\n store.dispatch(change(this.props.formName, 'classes', updatedClasses));\r\n this.setState({\r\n dialogOpen: false,\r\n indexBeingEdit: undefined,\r\n fieldNameBeingEdit: undefined,\r\n cachedClass: undefined\r\n });\r\n };\r\n\r\n addNewClass = () => {\r\n const someClass = this.props.fields.get(0);\r\n let defaultEmployees: EmployeeClassFieldData[] = [];\r\n if (someClass) {\r\n defaultEmployees = someClass.employees.map(emp => ({\r\n ...emp,\r\n selected: false,\r\n selectedInClassId: emp.selected ? someClass.id : emp.selectedInClassId,\r\n selectedInClassName: emp.selected ? someClass.name : emp.selectedInClassName,\r\n hasElectionStartedForEmployee: emp.hasElectionStartedForEmployee\r\n }));\r\n } else {\r\n const allEmployees = store.getState().employee.list;\r\n defaultEmployees = allEmployees.map(emp => ({\r\n id: emp.id,\r\n fullName: emp.fullName,\r\n selected: false,\r\n selectedInClassId: undefined,\r\n selectedInClassName: undefined,\r\n hasElectionStartedForEmployee: emp.elections && emp.elections.length > 0\r\n }));\r\n }\r\n this.props.fields.push({\r\n id: '',\r\n name: '',\r\n employees: defaultEmployees,\r\n });\r\n };\r\n\r\n removeClass = () => {\r\n const indexToRemove = this.state.indexBeingEdit;\r\n const updatedClasses: FieldData[] = [];\r\n if (indexToRemove !== undefined) {\r\n const classToRemove = this.props.fields.get(indexToRemove);\r\n this.props.fields.forEach((name, index, fields) => {\r\n const classData = fields.get(index);\r\n if ((classData.id !== classToRemove.id) || (!classData.id && classData.name !== classToRemove.name)) {\r\n const updatedClass = { ...classData };\r\n updatedClass.employees = classData.employees.map(emp => {\r\n const inRemovedClass = emp.selectedInClassId === classToRemove.id && emp.selectedInClassName === classToRemove.name;\r\n return {\r\n ...emp,\r\n selected: inRemovedClass ? false : emp.selected,\r\n selectedInClassId: inRemovedClass ? undefined : emp.selectedInClassId,\r\n selectedInClassName: inRemovedClass ? undefined : emp.selectedInClassName,\r\n hasElectionStartedForEmployee: inRemovedClass ? false : emp.hasElectionStartedForEmployee\r\n };\r\n });\r\n updatedClasses.push(updatedClass);\r\n }\r\n });\r\n }\r\n store.dispatch(change(this.props.formName, 'classes', updatedClasses));\r\n this.setState({\r\n indexBeingEdit: undefined,\r\n deleteDialogOpen: false\r\n })\r\n };\r\n\r\n openDeleteModal = (indexToRemove: number) => {\r\n this.setState({\r\n indexBeingEdit: indexToRemove,\r\n deleteDialogOpen: true\r\n });\r\n }\r\n\r\n closeDeleteModal = () => {\r\n this.setState({\r\n indexBeingEdit: undefined,\r\n deleteDialogOpen: false\r\n })\r\n }\r\n\r\n renderDialog() {\r\n const { fields, isSubmitted, hasNoElectionStartedEmployeeExists, electionStartedEmployeeExists } = this.props;\r\n const { dialogOpen, indexBeingEdit, fieldNameBeingEdit } = this.state;\r\n if (indexBeingEdit !== undefined) {\r\n const fieldData = fields.get(indexBeingEdit);\r\n\r\n\r\n const whyDisabledMsg = 'Employees that have already elected cannot be moved from the class they are in.';\r\n const classMsg =
Selecting an employee with a class already assigned will overwrite their previous class with the new one.

{electionStartedEmployeeExists ? whyDisabledMsg : ''}
;\r\n \r\n return (\r\n \r\n \r\n \r\n Check the employees that belong to this class.\r\n \r\n {!this.props.isSubmitted &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n Assign Employees\r\n \r\n \r\n \r\n );\r\n } else\r\n return undefined;\r\n }\r\n\r\n renderDeleteDialog() {\r\n const { fields } = this.props;\r\n const { deleteDialogOpen, indexBeingEdit } = this.state;\r\n if (indexBeingEdit !== undefined) {\r\n const fieldData = fields.get(indexBeingEdit);\r\n return (\r\n \r\n \r\n \r\n Deleting the {fieldData.name} class will remove the class and all of its employee and plan associations.\r\n \r\n This cannot be undone.\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else\r\n return undefined;\r\n }\r\n\r\n render() {\r\n const { fields, formInvalid, formDirty, isSubmitted, hasNoElectionStartedEmployeeExists, hasEmployeesElectedAnyPlan } = this.props;\r\n return (\r\n <>\r\n {fields.map((name, index) => {\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 this.openDeleteModal(index)}>\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n {this.renderDialog()}\r\n {this.renderDeleteDialog()}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n container: {\r\n marginTop: 20\r\n },\r\n assigned: {\r\n color: palette.grey.text,\r\n fontSize: 14,\r\n textAlign: 'center'\r\n },\r\n addButton: {\r\n marginTop: 20\r\n },\r\n confirmDeletion: {\r\n paddingTop: \"20px\"\r\n },\r\n dialogBottomText: {\r\n marginTop: 20,\r\n marginBottom: 20,\r\n textAlign: 'right'\r\n }\r\n};\r\n\r\nexport default EnrollmentClassesFieldArray as React.ComponentClass;\r\n\r\n\r\n\r\n/** Helpers */\r\n\r\nconst Assigned = (props: any) => (\r\n
{props.input.value.filter((i: any) => i.selected).length} Assigned
\r\n);\r\nconst Selected = (props: any) => (\r\n \r\n {props.input.value.name}: {props.input.value.employees.filter((i: any) => i.selected).length} employees selected\r\n \r\n);\r\n\r\nconst validateRequired = required('Class name is required');\r\n\r\nconst validateUniqueName = (value: string, allValues: { classes: FieldData[] }) => {\r\n if (value) {\r\n const duplicateNumber = allValues.classes.reduce((acc, val) => {\r\n if (val.name === value)\r\n return acc + 1;\r\n else\r\n return acc;\r\n }, 0);\r\n return duplicateNumber >= 2 ? 'Class names cannot be repeated' : undefined;\r\n } else\r\n return undefined;\r\n};","import { Paper, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { FieldArray, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonFormStyles } from '../../utility/common_styles';\r\nimport SaveButton from '../common/save_button';\r\nimport EnrollmentClassesFieldArray, { FieldData as EnrollmentClassFieldData } from './enrollment_classes_field_array';\r\nimport Help from '@material-ui/icons/Help';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\nexport const FORM_NAME = 'CLASS_UPSERT';\r\n\r\nexport interface FormData {\r\n classes: EnrollmentClassFieldData[];\r\n}\r\n\r\ninterface ComponentProps {\r\n isSubmitted: boolean;\r\n isConfirmed: boolean;\r\n electionStartedEmployeeExists: boolean;\r\n hasNoElectionStartedEmployeeExists: boolean;\r\n hasEmployeesElectedAnyPlan: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps, InjectedFormProps { }\r\n\r\nconst ClassUpsertForm = (props: Props) => {\r\n const whyDisabled = \"Once enrollment setup is complete and employees are allowed to start enrollment, Employee Classes info cannot be updated.\";\r\n return (\r\n <>\r\n Employee Classes\r\n {props.hasEmployeesElectedAnyPlan &&\r\n
\r\n Why can't I edit this information?\r\n }\r\n />\r\n
\r\n }\r\n
\r\n Setup classes and assign employees to them on this page. Classes can be used to offer different plans and contribution amounts to different groups of employees.\r\n
\r\n \r\n \r\n
\r\n

Classes

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n Save Class Info\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n ...commonFormStyles,\r\n paper: {\r\n padding: '20px 40px',\r\n marginTop: 8\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n },\r\n info: {\r\n marginBottom: 20\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n moveUp:{\r\n marginTop: '-15px'\r\n },\r\n disable: {\r\n fontSize: 14,\r\n fontStyle: 'italic',\r\n marginRight: '10px',\r\n color: palette.grey.text,\r\n },\r\n toolTipDiv: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n alignContent: 'center',\r\n marginBottom: 15\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16\r\n },\r\n};\r\n\r\nexport default reduxForm({ form: FORM_NAME })(ClassUpsertForm);","import { normalizeDigits } from \"./form_normalization\";\r\n\r\nexport const formatEmail = (value: string, previousValue: string) => {\r\n if (!value) return value;\r\n const onlyAlphanumeric = value.replace(/[^a-zA-Z0-9_/-@.]/g, '')\r\n return onlyAlphanumeric\r\n}\r\n\r\n\r\nexport const formatFullName = (firstName: string, lastName: string) => {\r\n const fullName = firstName + ' ' + lastName;\r\n if (fullName.length <= 65) {\r\n return fullName;\r\n }\r\n else {\r\n let fName;\r\n let lName;\r\n const firstNameLength = firstName.length;\r\n const lastNameLength = lastName.length;\r\n if (lastNameLength <= 32) {\r\n lName = lastName;\r\n // truncate first name only\r\n fName = firstNameLength > 32 ? firstName.substring(0, 64 - lastNameLength) + '...' : firstName;\r\n } else if (firstNameLength <= 32) {\r\n fName = firstName;\r\n // truncate last name only\r\n lName = lastNameLength > 32 ? lastName.substring(0, 64 - firstNameLength) + '...' : lastName;\r\n } else {\r\n fName = firstNameLength > 32 ? firstName.substring(0, 29) + '...' : firstName;\r\n lName = lastNameLength > 32 ? lastName.substring(0, 29) + '...' : lastName;\r\n }\r\n return fName + ' ' + lName;\r\n }\r\n}\r\n\r\nexport const formatPhone = (value: string) => {\r\n if (!value) return value;\r\n let onlyNums = value.replace(/[^\\d]/g, '');\r\n if (onlyNums.length <= 3) {\r\n return onlyNums\r\n }\r\n if (onlyNums.length <= 6) {\r\n return `(${onlyNums.slice(0, 3)})-${onlyNums.slice(3)}`\r\n }\r\n return `(${onlyNums.slice(0, 3)})-${onlyNums.slice(3, 6)}-${onlyNums.slice(6, 10)}`\r\n}\r\n\r\nexport const formatZip = (value: string, previousValue: string) => {\r\n if (!value) return value;\r\n const zip = normalizeDigits(value);\r\n if (zip.length <= 5) return zip;\r\n else return `${zip.slice(0, 5)}-${zip.slice(5, 9)}`;\r\n}\r\n\r\nexport const formatEIN = (value: string) => {\r\n if (!value) return value;\r\n const ein = normalizeDigits(value);\r\n if (ein.length <= 2) return ein;\r\n else return `${ein.slice(0, 2)}-${ein.slice(2, 9)}`;\r\n};\r\n\r\nexport const formatSSN = (value: string) => {\r\n if (!value) return value;\r\n\r\n const parsedValue = normalizeDigits(value);\r\n if (parsedValue.length <= 3)\r\n return value;\r\n else if (parsedValue.length <= 5)\r\n return `${value.slice(0, 3)}-${value.slice(3)}`;\r\n else\r\n return `${value.slice(0, 3)}-${value.slice(3, 5)}-${value.slice(5, 9)}`;\r\n};\r\n\r\nexport const formatMoney = (value: string | number | undefined) => {\r\n if (value === undefined) return '';\r\n\r\n return `$${Number(value || 0).toLocaleString()}`\r\n};\r\n\r\nfunction formatAmount(num: number, factor: number, char: string) {\r\n var absValue = Math.abs(num);\r\n let a: any = (absValue / factor).toFixed(1);\r\n let amount = Math.sign(num) * a;\r\n return '$' + amount + char;\r\n}\r\n\r\nexport function formatCurrencyWithShortName(num: number) {\r\n var absValue = Math.abs(num);\r\n if (absValue > 999 && absValue < 999999) {\r\n return formatAmount(num, 1000, 'K');\r\n }\r\n else if (absValue > 999999 && absValue < 999999999) {\r\n return formatAmount(num, 1000000, 'M');\r\n }\r\n else if (absValue > 999999999) {\r\n return formatAmount(num, 1000000000, 'B');\r\n }\r\n\r\n return formatAmount(num, 1, '');\r\n}","import Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { ContactInfo, IReduceValidation } from 'redux/reducers';\r\nimport auth from 'utility/auth';\r\nimport { formatEIN, formatPhone, formatZip } from 'utility/form_formatter';\r\nimport { convertToNumber, normalizeDigits, normalizeEIN, normalizeZIP } from 'utility/form_normalization';\r\nimport { characterLimit, ein, phone, zip, validateIfNotReducedWithMessage, required, requiredForSubmission, warnIfReduced } from 'utility/form_validation';\r\nimport { getPayrollCycles, getStates } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonFormStyles } from '../../utility/common_styles';\r\nimport { CheckboxField, TextFormField } from '../common/reduxform_fields';\r\nimport SaveButton from '../common/save_button';\r\n\r\nexport const FORM_NAME = 'COMPANY_OVERVIEW';\r\nconst nativeSelect = { native: true };\r\n\r\nexport interface FormData extends IReduceValidation {\r\n reduceValidation?: boolean;\r\n name?: string;\r\n payrollCycleId?: number;\r\n ein?: string;\r\n contactInformation?: ContactInfo;\r\n groupSize?: string;\r\n applyPayPeriod : boolean;\r\n\r\n};\r\n\r\ninterface ComponentProps {\r\n isSubmitted: boolean;\r\n}\r\n\r\ntype Props = ComponentProps & InjectedFormProps;\r\n\r\n\r\nconst CompanyOverviewForm = React.memo((props: Props) => {\r\n const { touch } = props;\r\n const fieldRequired = React.useMemo(() => required('This field is required'), []);\r\n const warnReduced = React.useMemo(() => warnIfReduced('Required for submission'), []);\r\n const fieldRequiredIfNotReduced = React.useMemo(() => validateIfNotReducedWithMessage('This field is required'), []);\r\n const characterLimit50 = React.useMemo(() => characterLimit(50), []);\r\n const characterLimit100 = React.useMemo(() => characterLimit(100), []);\r\n const einValidator = React.useCallback(ein, []);\r\n const phoneValidator = React.useCallback(phone, []);\r\n const zipValidator = React.useCallback(zip, []);\r\n const payPeriodOptions = React.useMemo(getPayrollCycles, []);\r\n const stateOptions = React.useMemo(getStates, []);\r\n const disabled = React.useMemo(() => {\r\n return props.isSubmitted && !auth.isUserEnrollmentSuperAdmin();\r\n }, [props.isSubmitted]);\r\n\r\n\r\n React.useEffect(() => {\r\n touch('name', 'groupSize');\r\n }, [touch]);\r\n\r\n const isUserSuperAdmin = React.useMemo(() => {\r\n return !auth.isUserEnrollmentSuperAdmin();\r\n }, []);\r\n\r\n return (\r\n <>\r\n Company Overview\r\n
\r\n Please fill out company level information here. \r\n Fields required for enrollment are marked with a *.\r\n
\r\n \r\n
\r\n

Company Information

\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\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {payPeriodOptions.map(val => (\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 Save Company Overview\r\n \r\n
\r\n \r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n ...commonFormStyles,\r\n paper: {\r\n marginTop: 8,\r\n padding: '20px 40px'\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n },\r\n info: {\r\n marginBottom: 20\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n }\r\n};\r\n\r\nexport default reduxForm({ form: FORM_NAME })(CompanyOverviewForm);","import Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport auth from 'utility/auth';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonFormStyles } from '../../utility/common_styles';\r\nimport { SwitchField } from '../common/reduxform_fields';\r\nimport SaveButton from '../common/save_button';\r\n\r\nexport const FORM_NAME = 'COMPANY_SETTINGS';\r\n\r\nexport type FormData = {\r\n viewEmployeeCost: boolean;\r\n viewEmployerCost: boolean;\r\n};\r\n\r\ninterface ComponentProps {\r\n isSubmitted: boolean;\r\n}\r\n\r\ntype Props = ComponentProps & InjectedFormProps\r\n\r\nconst CompanySettingsForm = React.memo((props: Props) => {\r\n const { touch } = props\r\n const disabled = React.useMemo(() => {\r\n return props.isSubmitted && !auth.isUserEnrollmentSuperAdmin();\r\n }, [props.isSubmitted]);\r\n\r\n\r\n React.useEffect(() => {\r\n // TODO: validate if this is needed\r\n touch('name' as any, 'groupSize' as any);\r\n }, [touch]);\r\n\r\n return (\r\n <>\r\n Enrollment Settings\r\n \r\n
\r\n

Employee Cost

\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 Save Enrollment Settings\r\n \r\n
\r\n \r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n ...commonFormStyles,\r\n paper: {\r\n marginTop: 8,\r\n padding: '20px 40px'\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n }\r\n};\r\n\r\nexport default reduxForm({ form: FORM_NAME })(CompanySettingsForm);","import * as PropTypes from 'prop-types';\r\nimport { Action } from 'redux';\r\nimport { isType } from 'redux-typescript-actions';\r\nimport { toggleSnackbar, storeSystemErrors } from '../actions';\r\n\r\nexport type SnackbarVariant = 'info' | 'success' | 'error' | 'warning' | 'deletion';\r\n\r\nexport interface SnackbarState {\r\n open: boolean;\r\n message?: string;\r\n variant?: SnackbarVariant;\r\n errors?: string[];\r\n}\r\nexport const SnackbarStatePropType = PropTypes.exact({\r\n open: PropTypes.bool.isRequired,\r\n message: PropTypes.string,\r\n variant: PropTypes.string,\r\n errors: PropTypes.arrayOf(PropTypes.string)\r\n});\r\n\r\nexport interface AppReducerState {\r\n snackbar: SnackbarState;\r\n systemErrors: string[];\r\n}\r\nexport const AppReducerStatePropType = PropTypes.exact({\r\n snackbar: SnackbarStatePropType\r\n});\r\n\r\nconst initialState: AppReducerState = {\r\n snackbar: {\r\n open: false\r\n },\r\n systemErrors: []\r\n};\r\n\r\nexport function appReducer(state: AppReducerState = initialState, action: Action): AppReducerState {\r\n if (isType(action, toggleSnackbar)) {\r\n return {\r\n ...state,\r\n snackbar: {\r\n ...state.snackbar,\r\n ...action.payload,\r\n //errors : action.payload.errors\r\n }\r\n }\r\n } else if (isType(action, storeSystemErrors)) {\r\n return {\r\n ...state,\r\n systemErrors : action.payload\r\n }\r\n } {\r\n return state;\r\n }\r\n}","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport { getBaseLOCforLOC, getChildDependentTypes, getSpouseDependentTypes, isDisabilityLOC, isLifeOrDisabilityLOC } from 'utility/lookup_utils';\r\nimport http from '../../utility/http';\r\nimport { LinkedPlanType, Plan, Employee, Company, Election } from '../reducers';\r\nimport { CostCalculation, costCalculationReducer } from '../reducers/cost_calculation_reducer';\r\nimport { ReduxState } from '../store';\r\nimport { CONFIGURATION_TYPE_IDS } from \"../../utility/employee_utils\";\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\nexport const storeCostCalculations = acFactory('STORE_COST_CALCULATIONS');\r\n\r\n// Calculate Costs Thunk\r\nexport function calculateCosts(calculationRequest?: CalculationRequest) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n if (!calculationRequest)\r\n calculationRequest = generateRequestFromStoreValues(getState(), undefined);\r\n\r\n const costCalculations: CostCalculation[] = await http(`calculations`, { method: 'POST', body: JSON.stringify(calculationRequest) });\r\n dispatch(storeCostCalculations(costCalculations));\r\n };\r\n}\r\n\r\nexport function reCalculateCosts(calcRequestModal : CalcRequestModal) {\r\n \r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n let calculationRequest = generateRequestFromStoreValues(getState(), calcRequestModal);\r\n\r\n const costCalculations: CostCalculation[] = await http(`calculations`, { method: 'POST', body: JSON.stringify(calculationRequest) });\r\n \r\n dispatch(storeCostCalculations(costCalculations));\r\n };\r\n}\r\n\r\n/* eslint-disable */\r\nexport function translateDependentType(typeId: number, spouseTypeIds: number[], childTypeIds: number[]) {\r\n if (spouseTypeIds.indexOf(typeId) !== -1) {\r\n return CalcDependentType.partner;\r\n }\r\n if (childTypeIds.indexOf(typeId) !== -1) {\r\n return CalcDependentType.child;\r\n }\r\n return -1;\r\n}\r\n/* eslint-enable */\r\n\r\nexport const getCalcPlanMapper = (plans: Plan[]) => {\r\n const toCalcPlan = (plan: Plan) => {\r\n const linkedPlanEntry = plan.linkedPlans.find(x => x.linkType === LinkedPlanType.benefit);\r\n const linkedPlanId = linkedPlanEntry ? linkedPlanEntry.id : undefined;\r\n const linkedPlan = linkedPlanId ? plans.find(x => x.id === linkedPlanId)! : undefined;\r\n\r\n const linkedBasePlan = plan.linkedPlans.find(p => p.linkType === LinkedPlanType.contributionBase);\r\n const basePlan = linkedBasePlan && plans.find(p => p.id === linkedBasePlan.id);\r\n const checkForDependentTobaccoUse = plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.CheckDependentTobaccoUse) ;\r\n\r\n const calcPlan: CalcPlan = {\r\n id: plan.id,\r\n effectiveDate: plan.effectiveDate ? plan.effectiveDate.format() : '',\r\n baseLineOfCoverage: getBaseLOCforLOC(plan.lineOfCoverageId),\r\n lineOfCoverage: plan.lineOfCoverageId,\r\n contributionLevel: Number(plan.contributionLevelId),\r\n contributionModelType: plan.contributions.length\r\n ? Number(plan.contributions[0].contributionModelTypeId)\r\n : undefined,\r\n contributions: plan.contributions.filter(x => x.amount !== null).map(contribution => {\r\n return {\r\n coverageLevel: contribution.coverageLevelId,\r\n memberLevel: contribution.memberLevelId,\r\n memberLevelTotalDependents: contribution.memberLevelTotalDependentsId,\r\n amount: contribution.amount,\r\n maxAmount: contribution.maxAmount\r\n } as CalcContribution\r\n }),\r\n rateType: Number(plan.rateTypeId),\r\n rates: plan.rates.map(rate => {\r\n return {\r\n coverageLevel: rate.coverageLevelId,\r\n memberLevel: rate.memberLevelId,\r\n minAge: rate.minAge,\r\n maxAge: rate.maxAge,\r\n amount: rate.amount,\r\n tobaccoAmount: rate.tobaccoAmount,\r\n maleAmount: rate.maleAmount,\r\n maleTobaccoAmount: rate.maleTobaccoAmount,\r\n femaleAmount: rate.femaleAmount,\r\n femaleTobaccoAmount: rate.femaleTobaccoAmount\r\n } as CalcRate\r\n }),\r\n benefitInfo: generateBenefitInfo(plan, linkedPlan),\r\n baseContributionPlan: basePlan && toCalcPlan(basePlan),\r\n useEmployeeAge: plan.useEmployeeAge,\r\n checkForDependentTobaccoUse: checkForDependentTobaccoUse\r\n };\r\n\r\n return calcPlan;\r\n }\r\n return toCalcPlan;\r\n}\r\n\r\ninterface ICalculationRequestBuilder {\r\n employees: Employee[],\r\n plans: Plan[],\r\n companyState: Company,\r\n spouseTypeIds: number[],\r\n childTypeIds: number[],\r\n reduceValidation?: boolean,\r\n}\r\n\r\nfunction getRequestFromStore(reduxState: ReduxState): ICalculationRequestBuilder {\r\n const employeeState = reduxState.employee;\r\n const planState = reduxState.plan.list;\r\n const companyState = reduxState.enrollment.company;\r\n const spouseTypeIds = getSpouseDependentTypes().map(x => x.id);\r\n const childTypeIds = getChildDependentTypes(true).map(x => x.id);\r\n const reduceValidation = reduxState.enrollment.reduceValidation;\r\n\r\n return {\r\n employees: employeeState.list,\r\n plans: planState,\r\n companyState,\r\n spouseTypeIds,\r\n childTypeIds,\r\n reduceValidation\r\n }\r\n}\r\n\r\nfunction buildCalculationRequest(\r\n state: ICalculationRequestBuilder,\r\n calcRequestModal?: CalcRequestModal) {\r\n\r\n\r\n const toCalcPlan = getCalcPlanMapper(state.plans); \r\n const reduceValidation = state.reduceValidation;\r\n const plans = state.plans.map(plan => toCalcPlan(plan));\r\n const employees = state.employees.map((emd: Employee) => {\r\n let emp = { ...emd };\r\n if (calcRequestModal && calcRequestModal.employee && emp.id === calcRequestModal.employee.id) {\r\n emp = {\r\n ...emp,\r\n ...calcRequestModal.employee\r\n };\r\n }\r\n let enrolledLOCs = emp.enrolledLinesOfCoverage;\r\n return {\r\n id: emp.id,\r\n dateOfBirth: emp.dateOfBirth ? emp.dateOfBirth.format() : undefined,\r\n payrollCycle: emp.payrollCycleId || state.companyState.payrollCycleId,\r\n tobaccoUse: emp.tobaccoUse,\r\n gender: emp.genderId,\r\n enrolledLinesOfCoverage: enrolledLOCs,\r\n annualSalary: emp.annualSalary,\r\n benefitAmountOverrides:getCalcEmployeeBenefitAmountOverride(emp.elections,calcRequestModal),\r\n dependents: emp.dependents.map(dependent => {\r\n return {\r\n id: dependent.id,\r\n dateOfBirth: dependent.dateOfBirth ? dependent.dateOfBirth.format() : undefined,\r\n dependentType: translateDependentType(dependent.dependentTypeId, state.spouseTypeIds, state.childTypeIds),\r\n enrolledLinesOfCoverage: dependent.enrolledLinesOfCoverage,\r\n tobaccoUse: dependent.tobaccoUse,\r\n gender: dependent.genderId\r\n } as CalcDependent\r\n })\r\n } as CalcEmployee\r\n })\r\n\r\n const request: CalculationRequest = {\r\n employees,\r\n plans,\r\n reduceValidation\r\n }\r\n\r\n return request;\r\n}\r\n\r\nfunction getCalcEmployeeBenefitAmountOverride(elections: Election[],calcRequestModal?: CalcRequestModal):CalcEmployeeBenefitAmountOverride[]{\r\n \r\n var hasSliderMoved = calcRequestModal && calcRequestModal.lifebenefitAmount !== null && calcRequestModal.lifebenefitAmount !== undefined;\r\n\r\n if(hasSliderMoved){\r\n //Add new overrides for Increment Slider selection\r\n var calcEmployeeBenefitAmountOverrides: CalcEmployeeBenefitAmountOverride[] = [];\r\n var newCalcBenefitAmountOverride: CalcEmployeeBenefitAmountOverride = {\r\n amount:calcRequestModal!.lifebenefitAmount,\r\n planId:calcRequestModal!.planId\r\n }\r\n calcEmployeeBenefitAmountOverrides.push(newCalcBenefitAmountOverride);\r\n return calcEmployeeBenefitAmountOverrides;\r\n }\r\n else{\r\n return elections.filter(d=>!d.isWaived).map((election:Election)=>{\r\n \r\n return {\r\n amount:election && election.additionalInfo ? election.additionalInfo.lifeBenefitOverrideAmount : calcRequestModal && calcRequestModal.lifebenefitAmount,\r\n planId:election && election.planId ? election.planId : calcRequestModal && calcRequestModal.planId\r\n } as CalcEmployeeBenefitAmountOverride;\r\n });\r\n }\r\n}\r\n\r\nfunction generateRequestFromStoreValues(reduxState: ReduxState,\r\n calcRequestModal?: CalcRequestModal): CalculationRequest {\r\n\r\n var state = getRequestFromStore(reduxState);\r\n\r\n return buildCalculationRequest(state, calcRequestModal);\r\n\r\n\r\n}\r\n/* eslint-disable */\r\nexport function generateBenefitInfo(plan: Plan, linkedPlan: Plan | undefined): CalcBenefitInfo {\r\n return {\r\n planId: plan.id,\r\n benefitAmountCostUnit: plan.costPerUnit,\r\n benefitAmountMinimum: plan.minimumBenefit,\r\n benefitAmountMaximum: plan.maximumBenefit,\r\n benefitAmountGuaranteedIssue: plan.guaranteedIssueAmount,\r\n isBenefitAmountRatingTypeCoveredPayroll : plan.isBenefitAmountRatingTypeCoveredPayroll,\r\n roundingPreference: plan.benefitRoundingTypeId,\r\n roundingInterval: plan.benefitRoundingInterval,\r\n benefitAmountType: plan.benefitAmountTypeId,\r\n benefitPayoutFrequency: plan.payoutId,\r\n benefitFlatAmount: (plan.benefitAmountTypeId === CalcBenefitAmountType.flatAmount ||\r\n plan.benefitAmountTypeId === CalcBenefitAmountType.increment) ? plan.benefitAmount : undefined,\r\n benefitAmountSalaryMultiplier: plan.benefitAmountTypeId === CalcBenefitAmountType.multipleOfSalary ? plan.benefitAmount : undefined,\r\n benefitAmountLinkedBenefitPercent: plan.benefitAmountTypeId === CalcBenefitAmountType.linkedAmount ? plan.benefitAmount : undefined,\r\n linkedPlanBenefitInfo: linkedPlan ? generateBenefitInfo(linkedPlan, undefined) : undefined,\r\n ageReductions: plan.ageReductions ? plan.ageReductions.map(ageReduction => {\r\n return {\r\n maxAge: ageReduction.maxAge,\r\n minAge: ageReduction.minAge,\r\n reductionPercent: ageReduction.amount\r\n } as CalcAgeReduction;\r\n }) : undefined\r\n } as CalcBenefitInfo;\r\n}\r\n/* eslint-enable */\r\n\r\nexport interface CalculationRequest {\r\n employees: CalcEmployee[];\r\n plans: CalcPlan[];\r\n reduceValidation?: boolean;\r\n};\r\n\r\nexport interface CalcRequestModal {\r\n employee: Employee, \r\n planId?:string,\r\n lifebenefitAmount?:number\r\n};\r\n\r\nexport interface CalcEmployee {\r\n id: string;\r\n payrollCycle: CalcPayrollCycle;\r\n dateOfBirth: string;\r\n tobaccoUse: boolean;\r\n gender: 130 | 131;\r\n dependents: CalcDependent[];\r\n enrolledLinesOfCoverage: number[];\r\n annualSalary: number;\r\n benefitAmountOverrides?:CalcEmployeeBenefitAmountOverride[];\r\n}\r\n\r\nexport interface CalcEmployeeBenefitAmountOverride{\r\n planId?:string,\r\n amount?:number\r\n}\r\n\r\nexport interface CalcDependent {\r\n id: string;\r\n dependentType: CalcDependentType;\r\n dateOfBirth: string;\r\n tobaccoUse: boolean;\r\n gender: 130 | 131;\r\n enrolledLinesOfCoverage: number[]\r\n}\r\n\r\nexport interface CalcPlan {\r\n id: string;\r\n effectiveDate: string;\r\n lineOfCoverage: CalcLineOfCoverage;\r\n baseLineOfCoverage: CalcBaseLineOfCoverage;\r\n rateType: CalcRateType;\r\n rates: CalcRate[]\r\n contributionModelType?: CalcContributionModelType;\r\n contributionLevel?: CalcContributionLevel;\r\n contributions: CalcContribution[];\r\n benefitInfo: CalcBenefitInfo;\r\n baseContributionPlan?: CalcPlan;\r\n useEmployeeAge: boolean;\r\n checkForDependentTobaccoUse: boolean;\r\n}\r\n\r\nexport interface CalcRate {\r\n coverageLevel: number;\r\n memberLevel: number;\r\n minAge: number;\r\n maxAge: number;\r\n amount: number;\r\n tobaccoAmount: number;\r\n maleAmount: number;\r\n maleTobaccoAmount: number;\r\n femaleAmount: number;\r\n femaleTobaccoAmount: number;\r\n}\r\n\r\nexport interface CalcContribution {\r\n coverageLevel: CalcCoverageLevel;\r\n memberLevel: CalcMemberLevel;\r\n memberLevelTotalDependents: CalcMemberLevelTotalDependents;\r\n amount: number;\r\n maxAmount: number;\r\n}\r\n\r\nexport interface CalcBenefitInfo {\r\n planId: string;\r\n benefitAmountType: CalcBenefitAmountType;\r\n benefitAmountCostUnit: number;\r\n benefitFlatAmount: number;\r\n benefitAmountSalaryMultiplier: number;\r\n benefitAmountLinkedBenefitPercent: number;\r\n benefitAmountMinimum: number;\r\n benefitAmountMaximum: number;\r\n benefitAmountGuaranteedIssue: number;\r\n isBenefitAmountRatingTypeCoveredPayroll?: boolean;\r\n benefitPayoutFrequency: CalcBenefitPayoutFrequency;\r\n ageReductions: CalcAgeReduction[];\r\n roundingPreference: CalcRoundingPreference;\r\n roundingInterval: number;\r\n linkedPlanBenefitInfo: CalcBenefitInfo;\r\n}\r\n\r\nexport interface CalcAgeReduction {\r\n minAge: number;\r\n maxAge: number;\r\n reductionPercent: number;\r\n}\r\n\r\n// Enums\r\n\r\nexport enum CalcBaseLineOfCoverage {\r\n disability = 280,\r\n medical = 281,\r\n vision = 282,\r\n dental = 283,\r\n life = 284,\r\n accident = 412,\r\n criticalIllness = 413,\r\n hospital = 414,\r\n voluntary = 298\r\n}\r\n\r\nexport enum CalcBenefitAmountType {\r\n multipleOfSalary = 285,\r\n flatAmount = 286,\r\n linkedAmount = 320,\r\n increment = 501,\r\n}\r\n\r\nexport enum CalcBenefitPayoutFrequency {\r\n weekly = 350,\r\n monthly = 351,\r\n}\r\n\r\nexport enum CalcContributionLevel {\r\n coverageLevel = 268,\r\n memberLevel = 269,\r\n basePlanLevel = 500\r\n}\r\n\r\nexport enum CalcContributionModelType {\r\n flatDollar = 264,\r\n percentage = 266\r\n}\r\n\r\nexport enum CalcCoverageLevel {\r\n employee = 204,\r\n employeeAndSpouse = 205,\r\n employeeAndChildren = 206,\r\n employeeAndFamily = 207\r\n}\r\n\r\nexport enum CalcDependentType {\r\n partner = 1,\r\n child = 2\r\n}\r\n\r\nexport enum CalcLineOfCoverage {\r\n medical = 127,\r\n dental = 128,\r\n vision = 129,\r\n childLife = 173,\r\n shortTermDisability = 174,\r\n longTermDisability = 175,\r\n groupLife = 176,\r\n supplementalLife = 301,\r\n spouseLife = 302,\r\n accident = 321,\r\n criticalIllness = 322,\r\n hospital = 323\r\n}\r\n\r\nexport enum CalcMemberLevel {\r\n employee = 270,\r\n spouse = 271,\r\n child = 272,\r\n family = 435\r\n}\r\n\r\nexport enum CalcMemberLevelTotalDependents {\r\n EmployeeMemberTotal = 452,\r\n TotalDependentsMemberTotal = 453\r\n}\r\n\r\nexport enum CalcPayrollCycle {\r\n daily = 144,\r\n weekly = 145,\r\n biWeekly = 146,\r\n semiMonthly = 147,\r\n monthly = 148,\r\n quarterly = 149,\r\n semiAnnually = 150,\r\n annually = 151,\r\n}\r\n\r\nexport enum CalcRateType {\r\n ageBanded = 202,\r\n composite = 203,\r\n individual = 389,\r\n ageBandedTiers = 416,\r\n ageBandedIndividual = 417,\r\n flat=533\r\n}\r\n\r\nexport enum CalcRoundingPreference {\r\n roundUp = 287,\r\n roundDown = 288,\r\n roundToNearest = 289,\r\n dontRound = 290\r\n}","import { Action } from \"redux\";\r\nimport * as PropTypes from 'prop-types';\r\nimport { isType } from \"redux-typescript-actions\";\r\nimport { storeCostCalculations } from \"../actions/cost_calculation_actions\";\r\nimport { storeEmployees } from \"redux/actions\";\r\n\r\nexport interface EnrolleeCost {\r\n enrolleeId: string;\r\n employeeCost: number;\r\n employerCost: number;\r\n totalCost: number;\r\n}\r\n\r\nconst EnrolleeCostPropType = PropTypes.exact({\r\n enrolleeId: PropTypes.string,\r\n employeeCost: PropTypes.number,\r\n employerCost: PropTypes.number,\r\n totalCost: PropTypes.number,\r\n});\r\n\r\nexport type EnrolleeCosts = { [enrolleeId: string]: EnrolleeCost };\r\n\r\nexport interface CostCalculation extends EnrolleeCost {\r\n planId: string;\r\n success: boolean;\r\n errorMessages: string[];\r\n enrolleeCosts: EnrolleeCosts;\r\n coverageLevel: string;\r\n benefitAmount: number;\r\n};\r\n\r\nexport const CostCalculationPropType = PropTypes.exact({\r\n enrolleeId: PropTypes.string,\r\n employeeCost: PropTypes.number,\r\n employerCost: PropTypes.number,\r\n totalCost: PropTypes.number,\r\n planId: PropTypes.string,\r\n success: PropTypes.bool,\r\n errorMessages: PropTypes.arrayOf(PropTypes.string),\r\n enrolleeCosts: PropTypes.objectOf(EnrolleeCostPropType),\r\n coverageLevel: PropTypes.number,\r\n benefitAmount: PropTypes.number\r\n});\r\n\r\nexport interface CostCalculationReducerState {\r\n list: CostCalculation[];\r\n}\r\n\r\nexport const CostCalculationReducerStatePropType = PropTypes.exact({\r\n list: PropTypes.arrayOf(CostCalculationPropType)\r\n});\r\n\r\nconst initialState : CostCalculationReducerState = {\r\n list: []\r\n}\r\n\r\nexport function costCalculationReducer(state: CostCalculationReducerState = initialState, action: Action): CostCalculationReducerState {\r\n if (isType(action, storeCostCalculations)) {\r\n const newList = action.payload;\r\n return {\r\n ...state,\r\n list: newList\r\n };\r\n }\r\n else if (isType(action, storeEmployees)) {\r\n return {\r\n ...state,\r\n list: []\r\n }\r\n }\r\n else {\r\n return state;\r\n }\r\n}","import moment from 'moment';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Action } from 'redux';\r\nimport { isType } from 'redux-typescript-actions';\r\nimport { calculateAge } from 'utility/time_utils';\r\nimport { removeEmployee, storeAdditionalInfoStatus, storeBeneficiaries, storeElection, storeEmployee, storeEmployees, storePersonalInfoStatus, storeLoCList } from '../actions';\r\n\r\nexport enum AddressType {\r\n Primary,\r\n Home,\r\n Mail\r\n}\r\nexport interface ContactInfo {\r\n streetAddress1?: string;\r\n streetAddress2?: string;\r\n city?: string;\r\n county?: string;\r\n stateId?: number;\r\n zipCode?: string;\r\n email?: string;\r\n phone?: string;\r\n addressType: AddressType;\r\n}\r\nexport const ContactInfoPropType = PropTypes.exact({\r\n streetAddress1: PropTypes.string,\r\n streetAddress2: PropTypes.string,\r\n city: PropTypes.string,\r\n county: PropTypes.string,\r\n stateId: PropTypes.number,\r\n zipCode: PropTypes.string,\r\n email: PropTypes.string,\r\n phone: PropTypes.string,\r\n addressType: PropTypes.oneOf([0, 1, 2])\r\n});\r\n\r\nexport interface CoverageLevel {\r\n lineOfCoverageId: number,\r\n coverageLevelId: number,\r\n waiverTypeId: number\r\n}\r\nconst CoverageLevelPropType = PropTypes.exact({\r\n lineOfCoverageId: PropTypes.number,\r\n coverageLevelId: PropTypes.number,\r\n waiverTypeId: PropTypes.number\r\n});\r\n\r\ninterface BaseAdditionalInfo {\r\n disability?: boolean;\r\n incapacitated?: boolean;\r\n tobaccoUsedNicotine?: boolean;\r\n tobaccoUsedeCigarette?: boolean;\r\n tobacco21UsedTobacco?: boolean;\r\n heightFeet?: number;\r\n heightInches?: number;\r\n weight?: number;\r\n student?: number;\r\n schoolId?: string;\r\n schoolName?: string;\r\n isMedicareEligible?: boolean;\r\n medicareEligibility?: number;\r\n medicarePartAEnrolled?: boolean;\r\n medicarePartAIneligible?: boolean;\r\n medicarePartBEnrolled?: boolean;\r\n medicarePartBIneligible?: boolean;\r\n medicarePartDEnrolled?: boolean;\r\n medicarePartDIneligible?: boolean;\r\n coordinationPeriod?: boolean;\r\n disabledCurrentlyAtWork?: boolean;\r\n disabilityCurrentRenalDisease?: boolean;\r\n socialSecurityDisabilityInsurance?: boolean;\r\n partAMedicareId?: string;\r\n partBMedicareId?: string;\r\n partDMedicareId?: string;\r\n partDCarrier?: string;\r\n isExistingMember?: boolean;\r\n}\r\nexport interface AdditionalInfoDTO extends BaseAdditionalInfo {\r\n eSRDOnsetDate?: string;\r\n sSDIEffectiveDate?: string;\r\n partAEffectiveDate?: string;\r\n partBEffectiveDate?: string;\r\n partDEffectiveDate?: string;\r\n}\r\nexport interface AdditionalInfo extends BaseAdditionalInfo {\r\n eSRDOnsetDate?: moment.Moment;\r\n sSDIEffectiveDate?: moment.Moment;\r\n partAEffectiveDate?: moment.Moment;\r\n partBEffectiveDate?: moment.Moment;\r\n partDEffectiveDate?: moment.Moment;\r\n}\r\nexport const AdditionalInfoPropTypes = PropTypes.exact({\r\n disability: PropTypes.bool,\r\n incapacitated: PropTypes.bool,\r\n tobaccoUsedNicotine: PropTypes.bool,\r\n tobaccoUsedeCigarette: PropTypes.bool,\r\n tobacco21UsedTobacco: PropTypes.bool,\r\n heightFeet: PropTypes.number,\r\n heightInches: PropTypes.number,\r\n weight: PropTypes.number,\r\n student: PropTypes.number,\r\n schoolId: PropTypes.string,\r\n schoolName: PropTypes.string,\r\n isMedicareEligible: PropTypes.bool,\r\n medicareEligibility: PropTypes.number,\r\n medicarePartAEnrolled: PropTypes.bool,\r\n medicarePartAIneligible: PropTypes.bool,\r\n medicarePartBEnrolled: PropTypes.bool,\r\n medicarePartBIneligible: PropTypes.bool,\r\n medicarePartDEnrolled: PropTypes.bool,\r\n medicarePartDIneligible: PropTypes.bool,\r\n coordinationPeriod: PropTypes.bool,\r\n disabledCurrentlyAtWork: PropTypes.bool,\r\n disabilityCurrentRenalDisease: PropTypes.bool,\r\n socialSecurityDisabilityInsurance: PropTypes.bool,\r\n partAMedicareId: PropTypes.string,\r\n partBMedicareId: PropTypes.string,\r\n partDMedicareId: PropTypes.string,\r\n partDCarrier: PropTypes.string,\r\n eSRDOnsetDate: PropTypes.object,\r\n sSDIEffectiveDate: PropTypes.object,\r\n partAEffectiveDate: PropTypes.object,\r\n partBEffectiveDate: PropTypes.object,\r\n partDEffectiveDate: PropTypes.object,\r\n isExistingMember: PropTypes.bool,\r\n});\r\n\r\nexport interface PrimaryCareEnrolleeBase {\r\n id: string;\r\n isEmployee: boolean;\r\n}\r\n\r\nexport interface PrimaryCareEnrolleeDTO extends PrimaryCareEnrolleeBase {\r\n\r\n}\r\n\r\n\r\nexport interface PrimaryCareBase {\r\n doctorId?: string;\r\n doctorName?: string;\r\n doctorZipCode?: string;\r\n isExistingPatient?: boolean;\r\n assignDoctor?: boolean;\r\n}\r\n\r\nexport interface PrimaryCareDTO extends PrimaryCareBase {\r\n enrollees?: PrimaryCareEnrolleeDTO[]\r\n}\r\n\r\nexport const PrimaryCarePropType = PropTypes.exact({\r\n doctorId: PropTypes.string,\r\n doctorName: PropTypes.string,\r\n doctorZipCode: PropTypes.string,\r\n isExistingPatient: PropTypes.bool,\r\n assignDoctor: PropTypes.bool,\r\n viewId: PropTypes.number,\r\n enrollees: PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string,\r\n isEmployee: PropTypes.bool,\r\n isAllowed: PropTypes.bool,\r\n viewId: PropTypes.number,\r\n fullName: PropTypes.string\r\n }))\r\n});\r\n\r\nexport enum ObjectState {\r\n unchanged = 0,\r\n added = 1,\r\n deleted = 2,\r\n modified = 3\r\n}\r\n\r\ninterface BaseDependent {\r\n id: string;\r\n firstName: string;\r\n maidenName: string;\r\n lastName: string;\r\n genderId: number;\r\n ssn?: string;\r\n tobaccoUse: boolean;\r\n dependentTypeId: number;\r\n contactInformation: ContactInfo[];\r\n enrolledLinesOfCoverage: number[];\r\n isFosterChildPlaced?: boolean;\r\n isPartnerEmployedAtSameCompany?: boolean;\r\n addressSameAsEmployee?: boolean;\r\n differentLastNameReason?: string;\r\n objectState: ObjectState\r\n}\r\nexport interface Dependent extends BaseDependent {\r\n dateOfBirth?: moment.Moment;\r\n fullName: string;\r\n isSpouse: boolean;\r\n additionalInfo?: AdditionalInfo;\r\n}\r\nexport const DependentsPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n firstName: PropTypes.string.isRequired,\r\n maidenName: PropTypes.string,\r\n lastName: PropTypes.string.isRequired,\r\n fullName: PropTypes.string,\r\n genderId: PropTypes.number,\r\n dateOfBirth: PropTypes.object,\r\n ssn: PropTypes.string,\r\n tobaccoUse: PropTypes.bool.isRequired,\r\n dependentTypeId: PropTypes.number,\r\n contactInformation: PropTypes.arrayOf(ContactInfoPropType),\r\n enrolledLinesOfCoverage: PropTypes.arrayOf(PropTypes.number),\r\n sameAdress: PropTypes.bool,\r\n objectState: PropTypes.oneOf([0, 1, 2, 3]),\r\n isSpouse: PropTypes.bool,\r\n isFosterChildPlaced: PropTypes.bool,\r\n isPartnerEmployedAtSameCompany: PropTypes.bool,\r\n additionalInfo: AdditionalInfoPropTypes,\r\n addressSameAsEmployee: PropTypes.bool,\r\n differentLastNameReason: PropTypes.string\r\n}));\r\nexport interface DependentDTO extends BaseDependent {\r\n dateOfBirth: string;\r\n additionalInfo?: AdditionalInfoDTO;\r\n}\r\n\r\nexport interface ElectionDependent {\r\n id: string;\r\n firstName: string;\r\n lastName: string;\r\n isWaived?: boolean;\r\n waivedReasonId?: number;\r\n}\r\n\r\nconst ElectionDependentPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n firstName: PropTypes.string,\r\n lastName: PropTypes.string,\r\n isWaived: PropTypes.bool,\r\n waivedReasonId: PropTypes.number\r\n});\r\n\r\nexport interface Election {\r\n id: string;\r\n employeeId: string;\r\n planId: string;\r\n isEmployeeIncluded: boolean;\r\n enrollmentId: string;\r\n lineOfCoverageId: number;\r\n isWaived: boolean;\r\n waivedReasonId?: number;\r\n dependents: ElectionDependent[];\r\n additionalInfo?: ElectionAdditionalInfo;\r\n questionAnswers?: QuestionAnswer[];\r\n doctorId?: string;\r\n doctorName?: string;\r\n doctorZipCode?: string;\r\n isExistingPatient?: boolean;\r\n assignDoctor?: boolean;\r\n existingCoverage?: ExistingCoverage;\r\n primaryCares?: PrimaryCareDTO[];\r\n renewalInfo?: ElectionRenewalInfoDTO;\r\n}\r\n\r\nexport interface ElectionRenewalInfoDTO {\r\n renewal?: RenewalDTO;\r\n currentEnrollees?: CurrentEnrolleeDTO[];\r\n isCurrentEnrolleesNotSure?: boolean;\r\n droppedEnrollees?: DroppedEnrolleeDTO[]; \r\n employeeSkippedRenewalQuestions: boolean;\r\n}\r\n\r\nexport interface DroppedEnrolleeDTO {\r\n firstName?: string;\r\n lastName?: string;\r\n genderId?: number;\r\n dateOfBirth?: moment.Moment;\r\n ssn?: string;\r\n contactInformation?: ContactInfo[];\r\n addressSameAsEmployee?:boolean;\r\n dependentTypeId: number;\r\n isSpouse: boolean;\r\n}\r\n\r\nexport interface RenewalDTO {\r\n carrierRenewal: boolean;\r\n previousYearRenewalCarrierCode?: string;\r\n planRenewal?: string;\r\n isDroppedEnrollee?: string;\r\n}\r\n\r\nexport interface CurrentEnrolleeDTO {\r\n enrolleeId?: string;\r\n enrolleeFullName?: string;\r\n isEnrolled?: boolean;\r\n isSpouse?: boolean;\r\n}\r\n\r\nexport interface ExistingCoverage {\r\n electionCoveredByEffectiveDate?: boolean;\r\n existingRxCoverage?: boolean;\r\n dentalCoveredLastYear?: boolean;\r\n dentalCoveredByEmployerBefore?: boolean;\r\n dentalPriorOrthodontia?: boolean;\r\n visionExistingCoverage: PolicyEnrollee[];\r\n policies: Policy[];\r\n}\r\n\r\nexport interface ElectionAdditionalInfo {\r\n subscriberId?: number;\r\n basicLifePreviousAmount?: number;\r\n isAmericanPublicLife?: boolean;\r\n isExistingMember?: boolean;\r\n lifeBenefitOverrideAmount?: number;\r\n}\r\n\r\nexport interface Policy {\r\n\r\n enrollees: PolicyEnrollee[];\r\n floridaBlueCoverage?: string;\r\n emblemHealthcareCoverage?: string;\r\n policyHolder: PolicyHolder;\r\n\r\n carrierName?: string;\r\n existingCoverageEffectiveDate?: moment.Moment;\r\n existingCoverageEndDate?: moment.Moment;\r\n groupNumber?: string;\r\n policyNumberIdNumber?: string;\r\n typeOfCoverage?: number;\r\n priorCoverageType?: number;\r\n\r\n existingCoveragePayerName?: string;\r\n rxPolicyNumber?: string;\r\n rxMedicareId?: string;\r\n\r\n existingCoverageCancellationDate?: moment.Moment;\r\n coverageThroughEmployer?: boolean;\r\n employerName?: string;\r\n employmentDate?: moment.Moment;\r\n priorEmployerEmploymentDate?: moment.Moment;\r\n existingCoverageType?: string;\r\n\r\n}\r\n\r\nexport interface PolicyEnrollee {\r\n id: string;\r\n fullName: string;\r\n isEmployee: boolean;\r\n}\r\n\r\nexport interface PolicyHolder {\r\n existingPolicyHolder?: string;\r\n firstName?: string;\r\n lastName?: string;\r\n genderId?: number;\r\n dateOfBirth?: moment.Moment;\r\n address?: string;\r\n city?: string;\r\n stateId?: number;\r\n zipCode?: string;\r\n employmentStatusId?: number;\r\n retirementDate?: moment.Moment;\r\n coverageUnderCobra?: boolean;\r\n relationshipToPolicyHolder?: number;\r\n}\r\n\r\nexport interface QuestionAnswer {\r\n parentQuestionId?: string;\r\n questionId: string;\r\n questionKey: string;\r\n questionTypeId: number;\r\n answers: Answer[];\r\n}\r\n\r\nexport interface Answer {\r\n memberId: number;\r\n value?: string;\r\n}\r\n\r\nexport const PolicyHolderPropType = PropTypes.exact({\r\n existingPolicyHolder: PropTypes.string,\r\n firstName: PropTypes.string,\r\n lastName: PropTypes.string,\r\n genderId: PropTypes.number,\r\n dateOfBirth: PropTypes.object,\r\n address: PropTypes.string,\r\n city: PropTypes.string,\r\n stateId: PropTypes.number,\r\n zipCode: PropTypes.string,\r\n employmentStatusId: PropTypes.number,\r\n retirementDate: PropTypes.object,\r\n coverageUnderCobra: PropTypes.bool,\r\n relationshipToPolicyHolder: PropTypes.number,\r\n});\r\n\r\nexport const PolicyEnrolleePropType = PropTypes.exact({\r\n id: PropTypes.string,\r\n fullName: PropTypes.string,\r\n isEmployee: PropTypes.bool,\r\n});\r\n\r\nexport const PolicyPropType = PropTypes.exact({\r\n enrollees: PropTypes.arrayOf(PolicyEnrolleePropType),\r\n floridaBlueCoverage: PropTypes.string,\r\n emblemHealthcareCoverage: PropTypes.string,\r\n policyHolder: PolicyHolderPropType,\r\n\r\n carrierName: PropTypes.string,\r\n existingCoverageEffectiveDate: PropTypes.string,\r\n existingCoverageEndDate: PropTypes.string,\r\n groupNumber: PropTypes.string,\r\n policyNumberIdNumber: PropTypes.string,\r\n typeOfCoverage: PropTypes.number,\r\n priorCoverageType: PropTypes.number,\r\n\r\n existingCoveragePayerName: PropTypes.string,\r\n rxPolicyNumber: PropTypes.string,\r\n rxMedicareId: PropTypes.string,\r\n\r\n existingCoverageCancellationDate: PropTypes.string,\r\n coverageThroughEmployer: PropTypes.bool,\r\n employerName: PropTypes.string,\r\n employmentDate: PropTypes.string,\r\n priorEmployerEmploymentDate: PropTypes.string,\r\n existingCoverageType: PropTypes.string,\r\n});\r\n\r\nexport const ExistingCoveragePropType = PropTypes.exact({\r\n electionCoveredByEffectiveDate: PropTypes.bool,\r\n existingRxCoverage: PropTypes.bool,\r\n dentalCoveredLastYear: PropTypes.bool,\r\n dentalCoveredByEmployerBefore: PropTypes.bool,\r\n dentalPriorOrthodontia: PropTypes.bool,\r\n visionExistingCoverage: PropTypes.arrayOf(PolicyEnrolleePropType),\r\n policies: PropTypes.arrayOf(PolicyPropType)\r\n});\r\n\r\n\r\nexport const RenewalPropType = PropTypes.exact({\r\n carrierRenewal: PropTypes.bool,\r\n pastCarrierName: PropTypes.string,\r\n planRenewal: PropTypes.bool,\r\n pastPlanName: PropTypes.string,\r\n isDroppedEnrollee: PropTypes.bool\r\n});\r\nexport const CurrentEnrolleesPropType = PropTypes.exact({\r\n enrolleeId: PropTypes.number,\r\n enrolleeType: PropTypes.number\r\n});\r\n\r\nexport const DroppedEnrolleesPropType = PropTypes.exact({\r\n firstName: PropTypes.string,\r\n lastName: PropTypes.string,\r\n genderId: PropTypes.number,\r\n dateOfBirth: PropTypes.object,\r\n contactInformation: PropTypes.arrayOf(ContactInfoPropType),\r\n dependentTypeId: PropTypes.number\r\n});\r\n\r\nexport const RenewalInfoPropType = PropTypes.exact({\r\n renewal: RenewalPropType,\r\n currentEnrollees: CurrentEnrolleesPropType,\r\n droppedEnrollees: DroppedEnrolleesPropType\r\n});\r\n\r\nexport const ElectionAdditionalInfoPropType = PropTypes.exact({\r\n subscriberId: PropTypes.number,\r\n basicLifePreviousAmount: PropTypes.number,\r\n isAmericanPublicLife: PropTypes.bool,\r\n isExistingMember: PropTypes.bool,\r\n lifeBenefitOverrideAmount: PropTypes.number,\r\n});\r\nexport const AnswerPropType = PropTypes.exact({\r\n memberId: PropTypes.number,\r\n value: PropTypes.string\r\n});\r\n\r\nexport const QuestionAnswerPropType = PropTypes.exact({\r\n parentQuestionId: PropTypes.string,\r\n questionId: PropTypes.string,\r\n questionKey: PropTypes.string,\r\n questionTypeId: PropTypes.number,\r\n answers: PropTypes.arrayOf(AnswerPropType)\r\n});\r\n\r\nexport const ElectionPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n employeeId: PropTypes.string.isRequired,\r\n planId: PropTypes.string,\r\n isEmployeeIncluded: PropTypes.bool.isRequired,\r\n enrollmentId: PropTypes.string.isRequired,\r\n lineOfCoverageId: PropTypes.number.isRequired,\r\n isWaived: PropTypes.bool,\r\n waivedReasonId: PropTypes.number,\r\n dependents: PropTypes.arrayOf(ElectionDependentPropType),\r\n doctorId: PropTypes.string,\r\n doctorName: PropTypes.string,\r\n doctorZipCode: PropTypes.string,\r\n existingCoverage: ExistingCoveragePropType,\r\n questionAnswers: PropTypes.arrayOf(QuestionAnswerPropType),\r\n isExistingPatient: PropTypes.bool,\r\n assignDoctor: PropTypes.bool,\r\n additionalInfo: ElectionAdditionalInfoPropType,\r\n primaryCares: PropTypes.arrayOf(PrimaryCarePropType),\r\n renewalInfo: RenewalInfoPropType\r\n\r\n});\r\n\r\ninterface BaseBeneficiary {\r\n id: string;\r\n firstName: string;\r\n lastName: string;\r\n ssn?: string;\r\n contactInformation: ContactInfo[];\r\n dependentTypeId: number;\r\n beneficiaryTypeId: number;\r\n benefitPercentage: number;\r\n}\r\nexport interface Beneficiary extends BaseBeneficiary {\r\n dateOfBirth?: moment.Moment;\r\n fullName: string;\r\n}\r\nexport interface BeneficiaryDTO extends BaseBeneficiary {\r\n dateOfBirth: string;\r\n}\r\nconst BeneficiaryPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n firstName: PropTypes.string.isRequired,\r\n lastName: PropTypes.string.isRequired,\r\n fullName: PropTypes.string,\r\n ssn: PropTypes.string,\r\n contactInformation: PropTypes.arrayOf(ContactInfoPropType),\r\n dependentTypeId: PropTypes.number.isRequired,\r\n beneficiaryTypeId: PropTypes.number.isRequired,\r\n benefitPercentage: PropTypes.number.isRequired,\r\n dateOfBirth: PropTypes.object\r\n});\r\n\r\nexport interface AcknowledgedDocument {\r\n isAcknowledged: boolean;\r\n acknowledgedDocumentId: number;\r\n documentLink: string;\r\n documentFileId: string;\r\n}\r\n\r\nexport const AcknowledgedDocumentsPropType = PropTypes.arrayOf(PropTypes.exact({\r\n documentLink: PropTypes.string.isRequired,\r\n acknowledgedDocumentId: PropTypes.number.isRequired,\r\n isAcknowledged: PropTypes.bool,\r\n documentFileId: PropTypes.string\r\n}))\r\n\r\nexport interface EmployeeStatus {\r\n id: string;\r\n additionalInfoComplete?: boolean;\r\n personalInfoComplete?: boolean;\r\n failedLoCIds: number[];\r\n}\r\n\r\nexport const EmployeeStatusPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n additionalInfoComplete: PropTypes.bool,\r\n personalInfoComplete: PropTypes.bool,\r\n failedLoCIds: PropTypes.arrayOf(PropTypes.number)\r\n})\r\n\r\ninterface BaseEmployee {\r\n id: string;\r\n employeeId: string;\r\n firstName: string;\r\n lastName: string;\r\n genderId: number;\r\n age?: number;\r\n ssn?: string;\r\n maritalStatusId?: number;\r\n isPartnershipRegistered?: boolean;\r\n contactInformation: ContactInfo[];\r\n jobTitle?: string;\r\n employmentStatusId?: number;\r\n weeklyHours?: number;\r\n payrollCycleId?: number;\r\n tobaccoUse: boolean;\r\n isUSCitizen: boolean;\r\n electionStatusId: number;\r\n elections: Election[];\r\n cobraEventId?: number;\r\n enrollmentClassId?: string;\r\n hsaContribution?: number;\r\n hsaContributionMode?: number;\r\n coverageLevels: CoverageLevel[];\r\n enrolledLinesOfCoverage: number[];\r\n employeeSignature?: string;\r\n lastUpdatedByCurrentUser?: boolean;\r\n contactMethodId?: number;\r\n lengthOfContinuationInMonths?: string;\r\n annualSalary?: number;\r\n mailAddressSameAsHome?: boolean;\r\n kaiserAgreementAccepted?: boolean;\r\n invitationStatusId?: number;\r\n acknowledgedDocuments?: AcknowledgedDocument[];\r\n renewalChangeInfo: RenewalChangeDTO[];\r\n}\r\n\r\nexport interface RenewalChangeDTO {\r\n enrolleeId: string;\r\n enrolleeType: string;\r\n personalInfoChanged?: boolean;\r\n nameChange?: boolean;\r\n contactChange?: boolean;\r\n addressChange?: boolean;\r\n fullName: string\r\n}\r\n\r\nexport const RenewalChangePropType = PropTypes.arrayOf(PropTypes.exact({\r\n enrolleeId: PropTypes.string,\r\n enrolleeType: PropTypes.string,\r\n personalInfoChanged: PropTypes.bool,\r\n nameChange: PropTypes.bool,\r\n contactChange: PropTypes.bool,\r\n addressChange: PropTypes.bool\r\n}));\r\n\r\nexport interface Employee extends BaseEmployee {\r\n fullName: string;\r\n hasAdditionalInfo: boolean;\r\n dateOfBirth?: moment.Moment;\r\n hireDate?: moment.Moment;\r\n isInEligible: boolean;\r\n isEmployeeWaiving: boolean;\r\n waiverReasonId?: number;\r\n marriageDate?: moment.Moment;\r\n dependents: Dependent[];\r\n holdDependents?: Dependent[];\r\n cobraEventDate?: moment.Moment;\r\n cobraBeginDate?: moment.Moment;\r\n cobraEndDate?: moment.Moment;\r\n cobraLossOfCoverageDate?: moment.Moment;\r\n electionCompletedDate?: moment.Moment;\r\n beneficiaries: Beneficiary[];\r\n additionalInfo?: AdditionalInfo;\r\n invitationSentDate?: moment.Moment;\r\n isSalaryMissing: boolean;\r\n}\r\n\r\nexport const EmployeePropType = PropTypes.exact({\r\n fullName: PropTypes.string,\r\n hasAdditionalInfo: PropTypes.bool.isRequired,\r\n dateOfBirth: PropTypes.object,\r\n age: PropTypes.number,\r\n dependents: DependentsPropType,\r\n id: PropTypes.string.isRequired,\r\n firstName: PropTypes.string.isRequired,\r\n lastName: PropTypes.string.isRequired,\r\n genderId: PropTypes.number,\r\n ssn: PropTypes.string,\r\n maritalStatusId: PropTypes.number,\r\n marriageDate: PropTypes.object,\r\n isPartnershipRegistered: PropTypes.bool,\r\n contactInformation: PropTypes.arrayOf(ContactInfoPropType).isRequired,\r\n coverageLevels: PropTypes.arrayOf(CoverageLevelPropType).isRequired,\r\n enrolledLinesOfCoverage: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n jobTitle: PropTypes.string,\r\n employmentStatusId: PropTypes.number,\r\n hireDate: PropTypes.object,\r\n weeklyHours: PropTypes.number,\r\n payrollCycleId: PropTypes.number,\r\n tobaccoUse: PropTypes.bool.isRequired,\r\n isUSCitizen: PropTypes.bool.isRequired,\r\n electionStatusId: PropTypes.number.isRequired,\r\n electionCompletedDate: PropTypes.object,\r\n elections: PropTypes.arrayOf(ElectionPropType).isRequired,\r\n hsaContribution: PropTypes.number,\r\n hsaContributionMode: PropTypes.number,\r\n kaiserAgreementAccepted: PropTypes.bool,\r\n employeeSignature: PropTypes.string,\r\n cobraEventId: PropTypes.number,\r\n cobraEventDate: PropTypes.object,\r\n cobraBeginDate: PropTypes.object,\r\n cobraEndDate: PropTypes.object,\r\n cobraLossOfCoverageDate: PropTypes.object,\r\n lengthOfContinuationInMonths: PropTypes.string,\r\n enrollmentClassId: PropTypes.string,\r\n lastUpdatedByCurrentUser: PropTypes.bool,\r\n beneficiaries: PropTypes.arrayOf(BeneficiaryPropType).isRequired,\r\n contactMethodId: PropTypes.number,\r\n additionalInfo: AdditionalInfoPropTypes,\r\n annualSalary: PropTypes.number,\r\n mailAddressSameAsHome: PropTypes.bool,\r\n invitationStatusId: PropTypes.number,\r\n invitationSentDate: PropTypes.object,\r\n acknowledgedDocuments: AcknowledgedDocumentsPropType,\r\n renewalChangeInfo: RenewalChangePropType\r\n});\r\n\r\nexport interface EmployeeDTO extends BaseEmployee {\r\n dateOfBirth?: string;\r\n dependents: DependentDTO[];\r\n holdDependents?: DependentDTO[];\r\n hireDate?: string;\r\n isInEligible: boolean;\r\n isEmployeeWaiving: boolean;\r\n waiverReasonId?: number;\r\n marriageDate?: string;\r\n cobraEventDate?: string;\r\n cobraBeginDate?: string;\r\n cobraEndDate?: string;\r\n cobraLossOfCoverageDate?: string;\r\n electionCompletedDate?: string;\r\n beneficiaries: BeneficiaryDTO[];\r\n additionalInfo?: AdditionalInfoDTO;\r\n invitationSentDate?: string;\r\n isSalaryMissing?: boolean;\r\n\r\n}\r\n\r\nexport interface SendEmployeeInvitationDTO {\r\n dateOfBirth: moment.Moment;\r\n employeeId: string;\r\n firstName: string;\r\n lastName: string;\r\n genderId: number;\r\n email: string;\r\n employeeSignUpBaseUrlPath: string\r\n}\r\n\r\nexport interface SendInvitation {\r\n employees: SendEmployeeInvitationDTO[];\r\n body: string\r\n}\r\n\r\nexport interface UpdateEmployeeWithRegistrationInfo {\r\n email: string;\r\n}\r\n\r\nexport interface EmployeeReducerState {\r\n list: Employee[];\r\n infoStatusList: EmployeeStatus[];\r\n}\r\nexport const EmployeeReducerStatePropType = PropTypes.exact({\r\n list: PropTypes.arrayOf(EmployeePropType),\r\n infoStatusList: PropTypes.arrayOf(EmployeeStatusPropType)\r\n});\r\n\r\nconst initialState: EmployeeReducerState = {\r\n list: [],\r\n infoStatusList: []\r\n};\r\n\r\nexport function employeeReducer(state: EmployeeReducerState = initialState, action: Action): EmployeeReducerState {\r\n if (isType(action, storeEmployees)) {\r\n return {\r\n ...state,\r\n list: enhance(action.payload),\r\n };\r\n } else if (isType(action, storePersonalInfoStatus)) {\r\n const newInfoStatusList = state.infoStatusList.slice();\r\n let indexToEdit = newInfoStatusList.findIndex(status => status.id === action.payload.employeeId);\r\n if (indexToEdit == -1) {\r\n newInfoStatusList.push({ id: action.payload.employeeId } as EmployeeStatus)\r\n indexToEdit = newInfoStatusList.length - 1;\r\n }\r\n newInfoStatusList[indexToEdit].personalInfoComplete = action.payload.personalInfoStatus;\r\n return {\r\n ...state,\r\n infoStatusList: newInfoStatusList\r\n };\r\n } else if (isType(action, storeAdditionalInfoStatus)) {\r\n const newInfoStatusList = state.infoStatusList.slice();\r\n let indexToEdit = newInfoStatusList.findIndex(status => status.id === action.payload.employeeId);\r\n if (indexToEdit == -1) {\r\n newInfoStatusList.push({ id: action.payload.employeeId } as EmployeeStatus);\r\n indexToEdit = newInfoStatusList.length - 1;\r\n }\r\n newInfoStatusList[indexToEdit].additionalInfoComplete = action.payload.additionalInfoStatus;\r\n return {\r\n ...state,\r\n infoStatusList: newInfoStatusList\r\n }; \r\n } else if (isType(action, storeLoCList)) {\r\n const newInfoStatusList = state.infoStatusList.slice();\r\n let indexToEdit = newInfoStatusList.findIndex(status => status.id === action.payload.employeeId);\r\n if (indexToEdit == -1) {\r\n newInfoStatusList.push({ id: action.payload.employeeId } as EmployeeStatus);\r\n indexToEdit = newInfoStatusList.length - 1;\r\n }\r\n newInfoStatusList[indexToEdit].failedLoCIds = action.payload.failedLoCIds;\r\n return {\r\n ...state,\r\n infoStatusList: newInfoStatusList\r\n };\r\n }\r\n else if (isType(action, removeEmployee)) {\r\n const newList = state.list.slice();\r\n const indexToRemove = newList.findIndex(employee => employee.id === action.payload);\r\n if (indexToRemove >= 0) {\r\n newList.splice(indexToRemove, 1);\r\n }\r\n return {\r\n ...state,\r\n list: newList\r\n };\r\n } else if (isType(action, storeEmployee)) {\r\n const newList = state.list.slice();\r\n const indexToEdit = newList.findIndex(employee => employee.id === action.payload.id);\r\n const employee = convertEmployeeDtoToEmployee(action.payload);\r\n if (indexToEdit >= 0) {\r\n newList[indexToEdit] = employee;\r\n } else\r\n newList.push(employee);\r\n return {\r\n ...state,\r\n list: newList\r\n };\r\n } else if (isType(action, storeElection)) {\r\n const newList = state.list.slice();\r\n const employee = newList.find(employee => employee.id === action.payload.employeeId);\r\n if (employee) {\r\n const electionIndexToEdit = employee.elections.findIndex(elec => elec.id === action.payload.id);\r\n employee.elections = employee.elections.slice();\r\n if (action.payload.id && electionIndexToEdit >= 0) {\r\n employee.elections[electionIndexToEdit] = action.payload;\r\n } else\r\n employee.elections.push(action.payload);\r\n return {\r\n ...state,\r\n list: newList\r\n };\r\n } else return state;\r\n } else if (isType(action, storeBeneficiaries)) {\r\n const newList = state.list.slice();\r\n const index = newList.findIndex(employee => employee.id === action.payload.employeeId);\r\n if (index > -1) {\r\n newList[index] = {\r\n ...newList[index],\r\n beneficiaries: action.payload.beneficiaries.map(ben => ({ ...ben, fullName: `${ben.firstName} ${ben.lastName}` , dateOfBirth: ben.dateOfBirth ? moment(ben.dateOfBirth) : undefined }))\r\n };\r\n return {\r\n ...state,\r\n list: newList\r\n };\r\n } else return state;\r\n } else {\r\n return state;\r\n }\r\n}\r\n\r\nfunction enhance(employeesDTO: EmployeeDTO[]): Employee[] {\r\n const employees: Employee[] = [];\r\n employeesDTO.forEach(employeeDTO => {\r\n employees.push(convertEmployeeDtoToEmployee(employeeDTO));\r\n });\r\n return employees;\r\n}\r\n\r\nfunction convertAdditionalInfoDto(additionalInfoDTO: AdditionalInfoDTO): AdditionalInfo {\r\n return {\r\n ...additionalInfoDTO,\r\n partAMedicareId: additionalInfoDTO.partAMedicareId || undefined,\r\n partBMedicareId: additionalInfoDTO.partBMedicareId || undefined,\r\n partDCarrier: additionalInfoDTO.partDCarrier || undefined,\r\n partDMedicareId: additionalInfoDTO.partDMedicareId || undefined,\r\n eSRDOnsetDate: additionalInfoDTO.eSRDOnsetDate ? moment(additionalInfoDTO.eSRDOnsetDate) : undefined,\r\n partAEffectiveDate: additionalInfoDTO.partAEffectiveDate ? moment(additionalInfoDTO.partAEffectiveDate) : undefined,\r\n partBEffectiveDate: additionalInfoDTO.partBEffectiveDate ? moment(additionalInfoDTO.partBEffectiveDate) : undefined,\r\n partDEffectiveDate: additionalInfoDTO.partDEffectiveDate ? moment(additionalInfoDTO.partDEffectiveDate) : undefined,\r\n sSDIEffectiveDate: additionalInfoDTO.sSDIEffectiveDate ? moment(additionalInfoDTO.sSDIEffectiveDate) : undefined\r\n };\r\n}\r\nfunction convertEmployeeDtoToEmployee(employeeDTO: EmployeeDTO) {\r\n const spouseTypeIds = [153, 154];\r\n const fullname = `${employeeDTO.firstName ? employeeDTO.firstName + \" \" : \"\"}${employeeDTO.lastName ? employeeDTO.lastName : \"\"}`\r\n let age = employeeDTO.dateOfBirth ? calculateAge(moment(employeeDTO.dateOfBirth)) : undefined;\r\n if (!age && employeeDTO.age) {\r\n age = employeeDTO.age;\r\n }\r\n const employee: Employee = {\r\n ...employeeDTO,\r\n fullName: fullname,\r\n hasAdditionalInfo: Object.keys(employeeDTO.additionalInfo || {}).length > 0,\r\n dateOfBirth: employeeDTO.dateOfBirth ? moment(employeeDTO.dateOfBirth) : undefined,\r\n age: age,\r\n contactInformation: employeeDTO.contactInformation.sort(function (a, b) {\r\n return a.addressType - b.addressType;\r\n }) || [],\r\n dependents: employeeDTO.dependents.filter(dep => dep.objectState !== ObjectState.deleted).map(dep => ({\r\n ...dep,\r\n fullName: `${dep.firstName} ${dep.lastName}`,\r\n dateOfBirth: dep.dateOfBirth ? moment(dep.dateOfBirth) : undefined,\r\n contactInformation: dep.contactInformation || [],\r\n isSpouse: spouseTypeIds.indexOf(dep.dependentTypeId) !== -1,\r\n additionalInfo: dep.additionalInfo ? convertAdditionalInfoDto(dep.additionalInfo) : undefined\r\n })),\r\n holdDependents: employeeDTO.holdDependents? employeeDTO.holdDependents.filter(dep => dep.objectState !== ObjectState.deleted).map(dep => ({\r\n ...dep,\r\n fullName: `${dep.firstName} ${dep.lastName}`,\r\n dateOfBirth: dep.dateOfBirth ? moment(dep.dateOfBirth) : undefined,\r\n contactInformation: dep.contactInformation || [],\r\n isSpouse: spouseTypeIds.indexOf(dep.dependentTypeId) !== -1,\r\n additionalInfo: dep.additionalInfo ? convertAdditionalInfoDto(dep.additionalInfo) : undefined\r\n })):undefined,\r\n\r\n elections: employeeDTO.elections || [],\r\n hireDate: employeeDTO.hireDate ? moment(employeeDTO.hireDate) : undefined,\r\n marriageDate: employeeDTO.marriageDate ? moment(employeeDTO.marriageDate) : undefined,\r\n cobraEventDate: employeeDTO.cobraEventDate ? moment(employeeDTO.cobraEventDate) : undefined,\r\n cobraBeginDate: employeeDTO.cobraBeginDate ? moment(employeeDTO.cobraBeginDate) : undefined,\r\n cobraEndDate: employeeDTO.cobraEndDate ? moment(employeeDTO.cobraEndDate).utc().local(false) : undefined,\r\n cobraLossOfCoverageDate: employeeDTO.cobraLossOfCoverageDate ? moment(employeeDTO.cobraLossOfCoverageDate).utc().local(false) : undefined,\r\n electionCompletedDate: employeeDTO.electionCompletedDate ? moment.utc(employeeDTO.electionCompletedDate).local() : undefined,\r\n beneficiaries: employeeDTO.beneficiaries.map(ben => ({ ...ben, fullName: `${ben.firstName} ${ben.lastName}` , dateOfBirth: ben.dateOfBirth ? moment(ben.dateOfBirth) : undefined })),\r\n additionalInfo: employeeDTO.additionalInfo ? convertAdditionalInfoDto(employeeDTO.additionalInfo) : undefined,\r\n invitationSentDate: employeeDTO.invitationSentDate ? moment(employeeDTO.invitationSentDate) : undefined,\r\n invitationStatusId: employeeDTO.invitationStatusId,\r\n mailAddressSameAsHome: employeeDTO.mailAddressSameAsHome,\r\n isSalaryMissing: employeeDTO.isSalaryMissing ? employeeDTO.isSalaryMissing : false\r\n };\r\n return employee;\r\n}\r\n\r\nexport function convertAdditionalInfoToDTO(additionalInfo: AdditionalInfo): AdditionalInfoDTO {\r\n const isMedicareEligible = additionalInfo.isMedicareEligible === true;\r\n return {\r\n ...additionalInfo,\r\n eSRDOnsetDate: (isMedicareEligible && additionalInfo.eSRDOnsetDate) ? additionalInfo.eSRDOnsetDate.format() : undefined,\r\n partAEffectiveDate: (isMedicareEligible && additionalInfo.partAEffectiveDate) ? additionalInfo.partAEffectiveDate.format() : undefined,\r\n partBEffectiveDate: (isMedicareEligible && additionalInfo.partBEffectiveDate) ? additionalInfo.partBEffectiveDate.format() : undefined,\r\n partDEffectiveDate: (isMedicareEligible && additionalInfo.partDEffectiveDate) ? additionalInfo.partDEffectiveDate.format() : undefined,\r\n sSDIEffectiveDate: (isMedicareEligible && additionalInfo.sSDIEffectiveDate) ? additionalInfo.sSDIEffectiveDate.format() : undefined,\r\n medicarePartAEnrolled: isMedicareEligible ? additionalInfo.medicarePartAEnrolled : undefined,\r\n medicarePartAIneligible: isMedicareEligible ? additionalInfo.medicarePartAIneligible : undefined,\r\n medicarePartBEnrolled: isMedicareEligible ? additionalInfo.medicarePartBEnrolled : undefined,\r\n medicarePartBIneligible: isMedicareEligible ? additionalInfo.medicarePartBIneligible : undefined,\r\n medicarePartDEnrolled: isMedicareEligible ? additionalInfo.medicarePartDEnrolled : undefined,\r\n medicarePartDIneligible: isMedicareEligible ? additionalInfo.medicarePartDIneligible : undefined,\r\n socialSecurityDisabilityInsurance: isMedicareEligible ? additionalInfo.socialSecurityDisabilityInsurance : undefined,\r\n partAMedicareId: isMedicareEligible ? additionalInfo.partAMedicareId : undefined,\r\n partBMedicareId: isMedicareEligible ? additionalInfo.partBMedicareId : undefined,\r\n partDCarrier: isMedicareEligible ? additionalInfo.partDCarrier : undefined,\r\n partDMedicareId: isMedicareEligible ? additionalInfo.partDMedicareId : undefined,\r\n coordinationPeriod: isMedicareEligible ? additionalInfo.coordinationPeriod : undefined,\r\n isExistingMember: additionalInfo.isExistingMember ? additionalInfo.isExistingMember : undefined\r\n\r\n };\r\n}\r\n\r\nexport function convertEmployeeToEmployeeDTO(employee: Employee): EmployeeDTO {\r\n return {\r\n ...employee,\r\n employmentStatusId: employee.employmentStatusId ? employee.employmentStatusId : 137,\r\n dependents: employee.dependents.map(dep => convertDependentToDependentDTO(dep)),\r\n holdDependents: employee.holdDependents?employee.holdDependents.map(dep => convertDependentToDependentDTO(dep)):undefined,\r\n electionCompletedDate: employee.electionCompletedDate ? employee.electionCompletedDate.utc().format() : undefined,\r\n dateOfBirth: employee.dateOfBirth ? employee.dateOfBirth.startOf('day').format() : '',\r\n hireDate: employee.hireDate ? employee && employee.hireDate.startOf('day').format() : undefined,\r\n marriageDate: employee.marriageDate ? employee && employee.marriageDate.startOf('day').format() : undefined,\r\n cobraEventDate: employee.cobraEventDate ? employee && employee.cobraEventDate.format() : undefined,\r\n cobraBeginDate: employee.cobraBeginDate ? employee && employee.cobraBeginDate.startOf('day').format() : undefined,\r\n cobraEndDate: employee.cobraEndDate ? employee && employee.cobraEndDate.utc().local(false).format() : undefined,\r\n cobraLossOfCoverageDate: employee.cobraLossOfCoverageDate ? employee && employee.cobraLossOfCoverageDate.utc().local(false).format() : undefined,\r\n beneficiaries: employee.beneficiaries.map(ben => ({ ...ben, fullName: `${ben.firstName} ${ben.lastName}`, dateOfBirth: ben.dateOfBirth && ben.dateOfBirth.isValid() ? ben.dateOfBirth.format() : '' })),\r\n additionalInfo: employee.additionalInfo && convertAdditionalInfoToDTO(employee.additionalInfo),\r\n mailAddressSameAsHome: employee.mailAddressSameAsHome,\r\n invitationStatusId: employee.invitationStatusId,\r\n invitationSentDate: employee.invitationSentDate ? employee.invitationSentDate.startOf('day').format() : '',\r\n hsaContributionMode: employee.hsaContributionMode,\r\n hsaContribution: employee.hsaContribution\r\n , renewalChangeInfo: employee.renewalChangeInfo\r\n }\r\n}\r\nexport function convertDependentToDependentDTO(dependent: Dependent): DependentDTO {\r\n return {\r\n ...dependent,\r\n dateOfBirth: dependent.dateOfBirth ? dependent.dateOfBirth.format() : '',\r\n additionalInfo: dependent.additionalInfo && convertAdditionalInfoToDTO(dependent.additionalInfo)\r\n }\r\n}","import moment from 'moment';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Action } from 'redux';\r\nimport { isType } from 'redux-typescript-actions';\r\nimport { ContactInfo, ContactInfoPropType } from '.';\r\nimport { enrollmentSubmitted, removeCompanyContact, removeEnrollmentClass, storeCompanyContact, storeCompanyContacts, storeEnrollment, storeEnrollmentClasses } from '../actions';\r\nexport type IReduceValidation={\r\n reduceValidation?:boolean;\r\n}\r\nexport interface EnrollmentClass {\r\n id: string;\r\n className: string;\r\n enrollmentId: string;\r\n employeeIds: string[];\r\n objectState: number;\r\n}\r\nexport const EnrollmentClassesPropTypes = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n className: PropTypes.string.isRequired,\r\n enrollmentId: PropTypes.string.isRequired,\r\n employeeIds: PropTypes.arrayOf(PropTypes.string),\r\n objectState: PropTypes.number,\r\n}));\r\n\r\nexport interface CompanyContact {\r\n id: string;\r\n firstName: string;\r\n lastName: string;\r\n fullName?: string;\r\n email: string;\r\n phone: string;\r\n invitationStatusId?: number;\r\n employeeId?: string;\r\n title?: string;\r\n employerSignUpBaseUrlPath?: string;\r\n isAuthorizedSignatory: boolean;\r\n isMainContact: boolean;\r\n}\r\nexport const CompanyContactPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n firstName: PropTypes.string.isRequired,\r\n lastName: PropTypes.string.isRequired,\r\n fullName: PropTypes.string,\r\n email: PropTypes.string.isRequired,\r\n invitationStatusId: PropTypes.number,\r\n employeeId: PropTypes.string,\r\n title: PropTypes.string,\r\n employerSignUpBaseUrlPath: PropTypes.string,\r\n isAuthorizedSignatory: PropTypes.bool,\r\n isMainContact: PropTypes.bool\r\n});\r\n\r\nexport interface CompanySettings {\r\n viewEmployeeCost: boolean;\r\n viewEmployerCost: boolean;\r\n id: string;\r\n}\r\n\r\nexport const CompanySettingsPropType = PropTypes.exact({\r\n viewEmployeeCost: PropTypes.bool,\r\n viewEmployerCost: PropTypes.bool,\r\n id: PropTypes.string\r\n});\r\n\r\nexport interface Company {\r\n id: string;\r\n name?: string;\r\n payrollCycleId?: number;\r\n ein?: string;\r\n contactInformation: ContactInfo[];\r\n settings: CompanySettings;\r\n applyPayPeriod: boolean;\r\n sicCode?: number;\r\n}\r\n\r\ninterface BaseEnrollment {\r\n id: string;\r\n statusId?: number;\r\n company: Company;\r\n groupSize?: string;\r\n isExpired?: boolean;\r\n configurationTypeIds?: number[];\r\n enrollmentName: string;\r\n externalReferenceId: string;\r\n}\r\n\r\nexport interface EnrollmentDTO extends BaseEnrollment {\r\n effectiveDate?: string;\r\n startDate?: string;\r\n endDate?: string;\r\n setupCompletedOn?: string;\r\n submissionDate?: string;\r\n hasOptedDigitalSignature: boolean;\r\n brokerEmail: string;\r\n employerEmail: string;\r\n currentCoverageTemplateImported: boolean;\r\n spouseMinimumAge?:number;\r\n};\r\nexport interface DigitalDocumentDTO {\r\n id: string;\r\n enrollmentId: string;\r\n transactionId: string;\r\n brokerEmail: string;\r\n employerEmail: string;\r\n digitalDocumentStatusId?: number;\r\n}\r\n\r\nexport const DigitalDocumentPropType = PropTypes.exact({\r\n id: PropTypes.string,\r\n enrollmentId: PropTypes.string,\r\n transactionId: PropTypes.string,\r\n brokerEmail: PropTypes.string,\r\n employerEmail: PropTypes.string,\r\n digitalDocumentStatusId: PropTypes.number\r\n });\r\n\r\nexport interface CarrierEnrollmentTypeDTO {\r\n carrierCode: string;\r\n carrierName: string;\r\n enrollmentType: number;\r\n isCustomCarrier: boolean;\r\n};\r\n\r\nexport interface EnrollmentReducerState extends BaseEnrollment, IReduceValidation {\r\n reduceValidation?: boolean;\r\n effectiveDate?:string;\r\n startDate?: moment.Moment;\r\n endDate?: moment.Moment;\r\n setupCompletedOn?: moment.Moment;\r\n submissionDate?: moment.Moment;\r\n started?: boolean;\r\n expirationStatus?: {\r\n submitted: boolean;\r\n submissionMore60Days: boolean;\r\n endDateMoreThan60Days: boolean;\r\n endDateIsInFuture: boolean;\r\n },\r\n openEnrollmentExpired?: boolean;\r\n fullTimeEmployeesCount?: number;\r\n enrollmentClasses: EnrollmentClass[];\r\n companyContacts: CompanyContact[];\r\n broker: {\r\n displayName: string;\r\n email: string;\r\n primaryPhone: string;\r\n };\r\n hasOptedDigitalSignature: boolean;\r\n brokerEmail: string;\r\n employerEmail: string;\r\n digitalDocument: DigitalDocumentDTO;\r\n currentCoverageTemplateImported: boolean;\r\n spouseMinimumAge?: number;\r\n}\r\nexport const EnrollmentReducerStatePropType = PropTypes.exact({\r\n id: PropTypes.string,\r\n effectiveDate: PropTypes.string,\r\n startDate: PropTypes.object,\r\n endDate: PropTypes.object,\r\n statusId: PropTypes.number,\r\n started: PropTypes.bool,\r\n openEnrollmentExpired: PropTypes.bool,\r\n fullTimeEmployeesCount: PropTypes.number,\r\n expirationStatus: PropTypes.exact({\r\n submitted: PropTypes.bool,\r\n submissionMore60Days: PropTypes.bool,\r\n endDateMoreThan60Days: PropTypes.bool,\r\n endDateIsInFuture: PropTypes.bool\r\n }),\r\n setupCompletedOn: PropTypes.object,\r\n submissionDate: PropTypes.object,\r\n isExpired: PropTypes.bool,\r\n voluntaryProducts: PropTypes.arrayOf(PropTypes.string),\r\n enrollmentClasses: EnrollmentClassesPropTypes,\r\n company: PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string,\r\n payrollCycleId: PropTypes.number,\r\n ein: PropTypes.string,\r\n contactInformation: PropTypes.arrayOf(ContactInfoPropType),\r\n settings: CompanySettingsPropType,\r\n applyPayPeriod: PropTypes.bool,\r\n sicCode: PropTypes.number\r\n }),\r\n groupSize: PropTypes.string,\r\n companyContacts: PropTypes.arrayOf(CompanyContactPropType),\r\n configurationTypeIds: PropTypes.arrayOf(PropTypes.number),\r\n reduceValidation: PropTypes.bool,\r\n broker: PropTypes.exact({\r\n id: PropTypes.string,\r\n displayName: PropTypes.string,\r\n email: PropTypes.string,\r\n primaryPhone: PropTypes.string\r\n }),\r\n hasOptedDigitalSignature: PropTypes.bool,\r\n brokerEmail: PropTypes.string,\r\n employerEmail: PropTypes.string,\r\n digitalDocument: DigitalDocumentPropType,\r\n enrollmentName: PropTypes.string,\r\n currentCoverageTemplateImported: PropTypes.bool\r\n});\r\n\r\nconst initialState: EnrollmentReducerState = {\r\n id: '',\r\n enrollmentName: '',\r\n externalReferenceId: '',\r\n company: {\r\n id: '',\r\n contactInformation: [],\r\n settings: {\r\n viewEmployeeCost: true,\r\n viewEmployerCost: false,\r\n id: ''\r\n },\r\n applyPayPeriod: false\r\n },\r\n enrollmentClasses: [],\r\n companyContacts: [],\r\n broker: {\r\n displayName: \"\",\r\n email: \"\",\r\n primaryPhone: \"\"\r\n },\r\n hasOptedDigitalSignature: false,\r\n brokerEmail: '',\r\n employerEmail: '',\r\n digitalDocument: {\r\n id:'',\r\n enrollmentId: '',\r\n transactionId: '',\r\n digitalDocumentStatusId: undefined,\r\n brokerEmail:'',\r\n employerEmail: ''\r\n },\r\n currentCoverageTemplateImported: false\r\n\r\n};\r\n\r\nexport function enrollmentReducer(state: EnrollmentReducerState = initialState, action: Action): EnrollmentReducerState {\r\n if (isType(action, storeEnrollment)) {\r\n return {\r\n ...state,\r\n ...convertEnrollmentDTO(action.payload),\r\n started: !!action.payload.startDate && !!action.payload.endDate,\r\n openEnrollmentExpired: hasEndDatePassed(action.payload.endDate),\r\n expirationStatus: {\r\n submissionMore60Days: hasDateMoreThanXDays(60, action.payload.submissionDate),\r\n submitted: isSubmitted(action.payload.submissionDate),\r\n endDateMoreThan60Days: hasDateMoreThanXDays(60, action.payload.endDate),\r\n endDateIsInFuture: isDateInFuture(action.payload.endDate)\r\n }\r\n };\r\n } else if (isType(action, storeEnrollmentClasses)) {\r\n return {\r\n ...state,\r\n enrollmentClasses: action.payload\r\n };\r\n } else if (isType(action, storeCompanyContacts)) {\r\n return {\r\n ...state,\r\n companyContacts: action.payload\r\n };\r\n }\r\n else if (isType(action, storeCompanyContact)) {\r\n var newList = state.companyContacts.slice();\r\n newList.push(action.payload);\r\n state.companyContacts = newList\r\n return {\r\n ...state\r\n };\r\n }\r\n else if (isType(action, removeCompanyContact)) {\r\n return {\r\n ...state,\r\n companyContacts: state.companyContacts.filter(_c => _c.id !== action.payload)\r\n }\r\n }\r\n else if (isType(action, removeEnrollmentClass)) {\r\n return {\r\n ...state,\r\n enrollmentClasses: state.enrollmentClasses.filter(_class => _class.id !== action.payload)\r\n };\r\n } else if (isType(action, enrollmentSubmitted)) {\r\n return {\r\n ...state,\r\n statusId: action.payload\r\n };\r\n } else {\r\n return state;\r\n }\r\n}\r\n\r\nfunction isSubmitted(date?: string) {\r\n return !!date;\r\n}\r\n\r\nfunction hasEndDatePassed(date?: string) {\r\n if (date) {\r\n let endOfDayInUtc =(moment().endOf('day'));\r\n let endDateInUtc=moment(date);\r\n return endDateInUtc.isBefore(endOfDayInUtc,'day');\r\n } else\r\n return false;\r\n}\r\n\r\nfunction hasDateMoreThanXDays(x: number, date?: string) {\r\n if (date) {\r\n return moment().endOf('day').add(-x, 'day').isAfter(moment(date).endOf('day'));\r\n } else\r\n return false;\r\n}\r\n\r\nfunction isDateInFuture(date?: string) {\r\n if (date) {\r\n return moment(moment.now()).isBefore(moment(date).endOf('day'));\r\n } else\r\n return false;\r\n}\r\n\r\nfunction convertEnrollmentDTO(enrollmentDTO: EnrollmentDTO) {\r\n const company = enrollmentDTO.company;\r\n company.settings = company.settings || { viewEmployeeCost: true, viewEmployerCost: false, id: enrollmentDTO.company.id };\r\n return {\r\n ...enrollmentDTO,\r\n startDate: enrollmentDTO.startDate ? moment(enrollmentDTO.startDate).startOf(\"day\") : undefined,\r\n endDate: enrollmentDTO.endDate ? moment(enrollmentDTO.endDate).startOf(\"day\") : undefined,\r\n effectiveDate: enrollmentDTO.effectiveDate ? enrollmentDTO.effectiveDate : undefined,\r\n setupCompletedOn: enrollmentDTO.setupCompletedOn ? moment(enrollmentDTO.setupCompletedOn).local().startOf('day') : undefined,\r\n submissionDate: enrollmentDTO.submissionDate ? moment(enrollmentDTO.submissionDate).local().startOf('day') : undefined,\r\n company\r\n };\r\n}","import moment from 'moment';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Action } from \"redux\";\r\nimport { isType } from \"redux-typescript-actions\";\r\nimport { storeGroupSubmission, storeGroupSubmissionDocuments, storeGroupSubmissions, storeGroupSubmissionsErrors } from \"../actions\";\r\nimport { ContactInfo, ContactInfoPropType } from './employee_reducer';\r\nimport { WritingAgentFieldData } from 'components/forms/agent_of_record_fields';\r\nimport EnrollmentChecklist from 'components/group_applications/enrollment_checklist';\r\n\r\ninterface BaseDirectToCarrierEmployer {\r\n id?: string;\r\n name?: string;\r\n taxId?: string;\r\n sic?: string;\r\n employerTypeId?: number;\r\n adminFirstName?: string;\r\n adminLastName?: string;\r\n adminEmail?: string;\r\n}\r\n\r\nexport interface DirectToCarrierEmployer extends BaseDirectToCarrierEmployer {\r\n establishmentDate?: moment.Moment;\r\n}\r\n\r\nexport interface DirectToCarrierEmployerDTO extends BaseDirectToCarrierEmployer {\r\n establishmentDate?: string;\r\n}\r\n\r\nexport const DirectToCarrierEmployerPropType = PropTypes.exact({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n taxId: PropTypes.string,\r\n employerTypeId: PropTypes.number,\r\n establishmentDate: PropTypes.object,\r\n adminFirstName: PropTypes.string,\r\n adminLastName: PropTypes.string,\r\n adminEmail: PropTypes.string\r\n});\r\n\r\nexport interface DirectToCarrierPlan {\r\n id: string;\r\n planId: string;\r\n lineOfCoverageId: number;\r\n}\r\n\r\nexport const DirectToCarrierPlanPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n planId: PropTypes.string,\r\n lineOfCoverageId: PropTypes.number,\r\n}));\r\n\r\nexport interface AgentOfRecord {\r\n id: string;\r\n agencyTypeId?: number;\r\n carrierAgentId?: string;\r\n name?: string;\r\n taxId?: string;\r\n nationalProducerNumber?: string;\r\n commissionSplit?: number;\r\n contactInfo?: ContactInfo;\r\n writingAgents: WritingAgentFieldData[];\r\n writingAgentSameAsCommissionedAgent?: boolean;\r\n}\r\n\r\nexport interface BrokerInfo {\r\n firstName?: string;\r\n lastName?: string;\r\n nationalProducerNumber?: string;\r\n}\r\n\r\nexport const AgentsOfRecordPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n agencyTypeId: PropTypes.number,\r\n name: PropTypes.string,\r\n taxId: PropTypes.string,\r\n nationalProducerNumber: PropTypes.string,\r\n commissionSplit: PropTypes.number,\r\n contactInfo: PropTypes.string,\r\n writingAgents: PropTypes.array\r\n}));\r\n\r\nexport const BrokerInfoPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n agencyTypeId: PropTypes.number,\r\n name: PropTypes.string,\r\n taxId: PropTypes.string,\r\n nationalProducerNumber: PropTypes.string,\r\n commissionSplit: PropTypes.number,\r\n contactInfo: PropTypes.string,\r\n writingAgents: PropTypes.array\r\n});\r\n\r\nexport interface BaseDentalPriorCoverage {\r\n id?: string;\r\n isTransferring: boolean;\r\n includesOrthodontia: boolean;\r\n carrierName?: string;\r\n}\r\n\r\nexport const DentalPriorCoveragePropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string,\r\n isTransferring: PropTypes.bool,\r\n includesOrthodontia: PropTypes.bool,\r\n carrierName: PropTypes.string,\r\n coverageEndDate: PropTypes.object\r\n}));\r\n\r\nexport interface DentalPriorCoverage extends BaseDentalPriorCoverage {\r\n coverageEndDate?: moment.Moment;\r\n}\r\n\r\nexport interface DentalPriorCoverageDTO extends BaseDentalPriorCoverage {\r\n coverageEndDate?: string;\r\n}\r\n\r\nexport interface EnrollmentKitLink {\r\n id?: string;\r\n fileName: string;\r\n storageURL: string;\r\n startDate?: string;\r\n}\r\n\r\nexport const EnrollmentKitLinkPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string,\r\n fileName: PropTypes.string,\r\n storageURL: PropTypes.string,\r\n startDate: PropTypes.string,\r\n}));\r\n\r\nexport interface CoverageEligibility {\r\n id?: string;\r\n ineligiblePeriodUnit?: string;\r\n ineligiblePeriodLength?: number;\r\n startOfCoverage?: number;\r\n domesticPartnerEligible?: boolean;\r\n domesticPartnerChildEligible?: boolean;\r\n isStandAloneProducts?: boolean;\r\n employeeTurnoverRatio?: number;\r\n isCobraRequired?: boolean;\r\n hasIncapacitatedMember?: boolean;\r\n hasDisabledDependents?: boolean;\r\n}\r\n\r\nexport const CoverageEligibilityPropType = PropTypes.exact({\r\n id: PropTypes.string,\r\n ineligiblePeriodUnit: PropTypes.string,\r\n ineligiblePeriodLength: PropTypes.number,\r\n startOfCoverage: PropTypes.number,\r\n domesticPartnerEligible: PropTypes.bool,\r\n domesticPartnerChildEligible: PropTypes.bool,\r\n isStandAloneProducts: PropTypes.bool,\r\n employeeTurnoverRatio: PropTypes.number,\r\n isCobraRequired: PropTypes.bool,\r\n hasIncapacitatedMember: PropTypes.bool,\r\n hasDisabledDependents: PropTypes.bool\r\n});\r\n\r\ninterface BaseSignature {\r\n id: string;\r\n userName: string;\r\n signedName: string;\r\n userType: string;\r\n}\r\n\r\nexport interface Signature extends BaseSignature {\r\n signedDate: moment.Moment;\r\n}\r\n\r\nexport interface SignatureDTO extends BaseSignature {\r\n signedDate: string;\r\n}\r\n\r\nexport const SignaturePropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n userName: PropTypes.string.isRequired,\r\n signedName: PropTypes.string.isRequired,\r\n userType: PropTypes.string.isRequired,\r\n signedDate: PropTypes.object.isRequired,\r\n}));\r\n\r\ninterface BaseEgaLink {\r\n id?: string;\r\n fileName: string;\r\n storageURL: string;\r\n isSigned: boolean;\r\n}\r\n\r\nexport interface EgaLink extends BaseEgaLink {\r\n createdDate: moment.Moment;\r\n}\r\n\r\nexport interface EgaLinkDTO extends BaseEgaLink {\r\n createdDate: string;\r\n}\r\n\r\nexport const EgaLinkPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string,\r\n fileName: PropTypes.string,\r\n storageURL: PropTypes.string,\r\n isSigned: PropTypes.bool,\r\n createdDate: PropTypes.object,\r\n}));\r\n\r\ninterface BaseDirectToCarrier {\r\n id: string;\r\n memberCensusCount?: number;\r\n medicalEnrolledCount?: number;\r\n address?: ContactInfo;\r\n planCollection: DirectToCarrierPlan[];\r\n agentsOfRecord?: AgentOfRecord[];\r\n brokerInfo?: BrokerInfo;\r\n coverageEligibility?: CoverageEligibility;\r\n groupId?: string;\r\n transactionId?: string;\r\n isFormComplete: boolean;\r\n isFinalized: boolean;\r\n}\r\n\r\nexport interface DirectToCarrier extends BaseDirectToCarrier {\r\n employerInformation?: DirectToCarrierEmployer;\r\n signatures: Signature[];\r\n egaLinks: EgaLink[];\r\n effectiveDate?: moment.Moment;\r\n openEnrollmentStartDate?: moment.Moment;\r\n openEnrollmentEndDate?: moment.Moment;\r\n signedDate?: moment.Moment;\r\n dentalPriorCoverage?: DentalPriorCoverage;\r\n}\r\n\r\nexport interface DirectToCarrierDTO extends BaseDirectToCarrier {\r\n employerInformation?: DirectToCarrierEmployerDTO;\r\n signatures: SignatureDTO[];\r\n egaLinks: EgaLinkDTO[];\r\n effectiveDate?: string;\r\n openEnrollmentStartDate?: string;\r\n openEnrollmentEndDate?: string;\r\n signedDate?: string;\r\n dentalPriorCoverage?: DentalPriorCoverageDTO;\r\n TotalInitialPayment?: number;\r\n paymentMode?: PaymentModes;\r\n CheckNumber?: string;\r\n NameOnAccount?: string;\r\n bankRoutingNumber?: string;\r\n bankAccountNumber?: string;\r\n}\r\n\r\nexport type PaymentModes = 'CHECK' | 'ACH';\r\n\r\nexport const DirectToCarrierPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n employerInformation: DirectToCarrierEmployerPropType,\r\n memberCensusCount: PropTypes.number,\r\n medicalEnrolledCount: PropTypes.number,\r\n address: ContactInfoPropType,\r\n planCollection: DirectToCarrierPlanPropType,\r\n agentsOfRecord: AgentsOfRecordPropType,\r\n coverageEligibility: CoverageEligibilityPropType,\r\n signatures: SignaturePropType,\r\n groupId: PropTypes.string,\r\n transactionId: PropTypes.string,\r\n dentalPriorCoverage: DentalPriorCoveragePropType,\r\n isFinalized: PropTypes.bool,\r\n TotalInitialPayment: PropTypes.number,\r\n CheckNumber: PropTypes.string,\r\n NameOnAccount: PropTypes.string,\r\n bankRoutingNumber: PropTypes.string,\r\n bankAccountNumber: PropTypes.string\r\n});\r\n\r\ninterface BaseGroupSubmissionPlan {\r\n id: string;\r\n planName: string;\r\n lineOfCoverageId: number;\r\n carrierName: string;\r\n}\r\n\r\nexport interface GroupSubmissionPlan extends BaseGroupSubmissionPlan {\r\n effectiveDate: moment.Moment;\r\n}\r\n\r\nexport interface GroupSubmissionPlanDTO extends BaseGroupSubmissionPlan {\r\n effectiveDate: string;\r\n}\r\n\r\nexport const GroupSubmissionPlanPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n planName: PropTypes.string,\r\n lineOfCoverageId: PropTypes.number,\r\n effectiveDate: PropTypes.object,\r\n carrierName: PropTypes.string,\r\n}));\r\n\r\nexport interface GroupSubmissionDocument {\r\n id: string;\r\n storageUrl: string;\r\n title?: string;\r\n fileName: string;\r\n fileType: string;\r\n description?: string;\r\n createdDate?: string;\r\n active: boolean;\r\n isDigital: boolean;\r\n}\r\nexport const GroupSubmissionDocumentsPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n storageUrl: PropTypes.string.isRequired,\r\n title: PropTypes.string,\r\n fileName: PropTypes.string,\r\n fileType: PropTypes.string,\r\n description: PropTypes.string,\r\n createdDate: PropTypes.string,\r\n active: PropTypes.bool,\r\n isDigital: PropTypes.bool\r\n}));\r\n\r\nexport interface AcknowledgmentDocument {\r\n acknowledgmentDocumentId: number;\r\n documentTitle: string;\r\n documentUrl: string;\r\n lineOfCoverageId?: number;\r\n description?: string;\r\n fileId?: string;\r\n}\r\n\r\nexport const AcknowledgmentDocumentsPropType = PropTypes.arrayOf(PropTypes.exact({\r\n documentUrl: PropTypes.string.isRequired,\r\n lineOfCoverageId: PropTypes.number,\r\n documentTitle: PropTypes.string,\r\n acknowledgmentDocumentId: PropTypes.number,\r\n fileId: PropTypes.string\r\n}))\r\n\r\nexport const EnrollmentCheckListPropType = PropTypes.arrayOf(PropTypes.exact({\r\n CheckListId: PropTypes.number,\r\n CarrierCode: PropTypes.string,\r\n StateId: PropTypes.number,\r\n BusinessType: PropTypes.string,\r\n EnrollmentType: PropTypes.number,\r\n userFriendlyCheckList: PropTypes.string,\r\n newBusinessManagerContent: PropTypes.string,\r\n EffectiveDate: PropTypes.object,\r\n TermDate: PropTypes.object,\r\n IsDeleted: PropTypes.bool\r\n}))\r\n\r\nexport enum GroupAppSubmissionStatus {\r\n notSubmitted = 571,\r\n submitted = 572\r\n}\r\n\r\ninterface BaseGroupSubmission {\r\n id: string;\r\n stateId: number;\r\n carrierCode: string;\r\n carrierName: string;\r\n enrollmentSubmissionMechanism: string;\r\n submissionStatus?: GroupAppSubmissionStatus;\r\n isDirectToCarrierRouteOverriden: boolean;\r\n enrollmentTypeId: number;\r\n planIdsIncludedInSubmission: string[];\r\n enrollmentKitURLs: EnrollmentKitLink[];\r\n documents: GroupSubmissionDocument[];\r\n acknowledgmentDocuments: AcknowledgmentDocument[];\r\n configurationTypeIds: number[];\r\n salesForceDataUpdated: boolean;\r\n};\r\n\r\nexport interface GroupSubmission extends BaseGroupSubmission {\r\n carrierCuttoffDt?: moment.Moment;\r\n directToCarrier?: DirectToCarrier;\r\n plans: GroupSubmissionPlan[];\r\n enrollmentCheckList: EnrollmentCheckList[];\r\n isDigitalDocument: boolean;\r\n digitalStatusId?: number;\r\n}\r\n\r\nexport interface CarrierConfigurations {\r\n carrierCode: string;\r\n configurationTypeIds: number[];\r\n}\r\n\r\nexport interface GroupSubmissionDTO extends BaseGroupSubmission {\r\n carrierCuttoffDt?: string;\r\n directToCarrier?: DirectToCarrierDTO;\r\n plans: GroupSubmissionPlanDTO[];\r\n enrollmentCheckList: EnrollmentCheckList[];\r\n isFinalSubmission: boolean;\r\n isSubmitToCarrierAcknowledged: boolean;\r\n overrideTaxIdValidation: boolean;\r\n isDigitalDocument: boolean;\r\n digitalStatusId?: number;\r\n}\r\n\r\nexport interface EnrollmentCheckList {\r\n CheckListId: number;\r\n CarrierCode: string;\r\n StateId?: number;\r\n BusinessType: string;\r\n EnrollmentType?: number;\r\n userFriendlyCheckList: string;\r\n newBusinessManagerContent: string;\r\n EffectiveDate?: moment.Moment;\r\n TermDate?: moment.Moment;\r\n IsDeleted: boolean;\r\n}\r\n\r\nexport const GroupSubmissionPropType = PropTypes.exact({\r\n id: PropTypes.string,\r\n stateId: PropTypes.number,\r\n carrierCode: PropTypes.string,\r\n carrierName: PropTypes.string,\r\n enrollmentSubmissionMechanism: PropTypes.string,\r\n enrollmentTypeId: PropTypes.number.isRequired,\r\n carrierCuttoffDt: PropTypes.object,\r\n planIdsIncludedInSubmission: PropTypes.arrayOf(PropTypes.string),\r\n enrollmentKitURLs: EnrollmentKitLinkPropType,\r\n documents: GroupSubmissionDocumentsPropType,\r\n plans: GroupSubmissionPlanPropType,\r\n directToCarrier: DirectToCarrierPropType,\r\n acknowledgmentDocuments: AcknowledgmentDocumentsPropType,\r\n EnrollmentChecklist: EnrollmentCheckListPropType,\r\n salesForceDataUpdated: PropTypes.bool,\r\n isDigitalDocument: PropTypes.bool,\r\n digitalStatusid: PropTypes.number\r\n});\r\n\r\nexport interface GroupSubmissionReducerState {\r\n list: GroupSubmission[];\r\n groupSubmissionErrors: {\r\n groupSubmissionId: string,\r\n errors: string[]\r\n }[]\r\n groupSubmissionProcessComplete: boolean;\r\n}\r\n\r\nexport const GroupSubmissionReducerStatePropType = PropTypes.exact({\r\n list: PropTypes.arrayOf(GroupSubmissionPropType)\r\n});\r\n\r\nconst initialState: GroupSubmissionReducerState = {\r\n list: [],\r\n groupSubmissionErrors: [],\r\n groupSubmissionProcessComplete: false\r\n}\r\n\r\nexport function groupSubmissionReducer(state: GroupSubmissionReducerState = initialState, action: Action): GroupSubmissionReducerState {\r\n if (isType(action, storeGroupSubmission)) {\r\n const newList = state.list.slice();\r\n const indexToEdit = newList.findIndex(group => group.id === action.payload.id);\r\n const group = convertGroupSubmissionDtoToGroupSubmission(action.payload);\r\n if (indexToEdit >= 0) {\r\n newList[indexToEdit] = group;\r\n } else\r\n newList.push(group);\r\n return {\r\n ...state,\r\n list: newList\r\n };\r\n } else if (isType(action, storeGroupSubmissions)) {\r\n return {\r\n ...state,\r\n list: enhance(action.payload)\r\n };\r\n } else if (isType(action, storeGroupSubmissionDocuments)) {\r\n const newList = state.list.slice();\r\n const indexToEdit = newList.findIndex(plan => plan.id === action.payload.id);\r\n if (indexToEdit >= 0) {\r\n newList[indexToEdit] = {\r\n ...newList[indexToEdit],\r\n documents: action.payload.documents\r\n };\r\n }\r\n return {\r\n ...state,\r\n list: newList\r\n };\r\n } else if (isType(action, storeGroupSubmissionsErrors)) {\r\n return {\r\n ...state,\r\n groupSubmissionErrors: [\r\n ...state.groupSubmissionErrors.filter(e => e.groupSubmissionId !== action.payload.id),\r\n {\r\n groupSubmissionId: action.payload.id,\r\n errors: action.payload.errors\r\n }\r\n ]\r\n }\r\n } else {\r\n return state;\r\n }\r\n}\r\n\r\nfunction enhance(groupSubmissionsDTO: GroupSubmissionDTO[]): GroupSubmission[] {\r\n const groupSubmissions: GroupSubmission[] = [];\r\n groupSubmissionsDTO.forEach(groupSubmissionDTO => {\r\n groupSubmissions.push(convertGroupSubmissionDtoToGroupSubmission(groupSubmissionDTO));\r\n });\r\n return groupSubmissions;\r\n}\r\n\r\nfunction convertGroupSubmissionDtoToGroupSubmission(groupSubmissionDTO: GroupSubmissionDTO) {\r\n const groupSubmission: GroupSubmission = {\r\n ...groupSubmissionDTO,\r\n directToCarrier: groupSubmissionDTO.directToCarrier ? convertDirectToCarrierDTOToDirectToCarrier(groupSubmissionDTO.directToCarrier) : undefined,\r\n carrierCuttoffDt: groupSubmissionDTO.carrierCuttoffDt ? moment(groupSubmissionDTO.carrierCuttoffDt) : undefined,\r\n plans: groupSubmissionDTO.plans.map(plan => ({\r\n ...plan,\r\n effectiveDate: moment(plan.effectiveDate),\r\n })),\r\n };\r\n return groupSubmission;\r\n}\r\n\r\nfunction enhanceAgentsOfRecord(agentsOfRecord: AgentOfRecord[]) {\r\n agentsOfRecord = agentsOfRecord.map((agentOfRecord) => {\r\n return {\r\n ...agentOfRecord,\r\n writingAgentSameAsCommissionedAgent: isWritingAgentSameAsAOR(agentOfRecord),\r\n writingAgents: (agentOfRecord.writingAgents && agentOfRecord.writingAgents.length > 0) ? agentOfRecord.writingAgents : [{}]\r\n }\r\n });\r\n\r\n //Empty AOR & WritingAgent, if none present in DB\r\n if (agentsOfRecord && agentsOfRecord.length === 0) {\r\n agentsOfRecord.push({} as AgentOfRecord);\r\n agentsOfRecord[0].writingAgents = [{}] as WritingAgentFieldData[];\r\n }\r\n return agentsOfRecord;\r\n}\r\n\r\nfunction isWritingAgentSameAsAOR(agentOfRecord: AgentOfRecord) {\r\n if (agentOfRecord && agentOfRecord.writingAgents && agentOfRecord.writingAgents.length > 0) {\r\n if (agentOfRecord.nationalProducerNumber === agentOfRecord.writingAgents[0].nationalProducerNumber) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\nfunction convertDirectToCarrierDTOToDirectToCarrier(directToCarrier: DirectToCarrierDTO): DirectToCarrier {\r\n return {\r\n ...directToCarrier,\r\n agentsOfRecord: directToCarrier.agentsOfRecord != null && directToCarrier.agentsOfRecord != undefined ? enhanceAgentsOfRecord(directToCarrier.agentsOfRecord) : undefined,\r\n employerInformation: directToCarrier.employerInformation ? convertEmployerDTOToEmployer(directToCarrier.employerInformation) : undefined,\r\n effectiveDate: directToCarrier.effectiveDate ? moment(directToCarrier.effectiveDate) : undefined,\r\n openEnrollmentStartDate: directToCarrier.openEnrollmentStartDate ? moment(directToCarrier.openEnrollmentStartDate) : undefined,\r\n openEnrollmentEndDate: directToCarrier.openEnrollmentEndDate ? moment(directToCarrier.openEnrollmentEndDate) : undefined,\r\n signatures: directToCarrier.signatures.map(signature => ({ ...signature, signedDate: moment(signature.signedDate) })),\r\n egaLinks: directToCarrier.egaLinks.map(ega => ({ ...ega, createdDate: moment(ega.createdDate) })),\r\n signedDate: directToCarrier.signedDate ? moment(directToCarrier.signedDate) : undefined,\r\n dentalPriorCoverage: directToCarrier.dentalPriorCoverage ? convertDentalPriorCoverageDTOToDentalPriorCoverage(directToCarrier.dentalPriorCoverage) : undefined\r\n\r\n }\r\n}\r\n\r\nfunction convertDentalPriorCoverageDTOToDentalPriorCoverage(dentalCoverage: DentalPriorCoverageDTO): DentalPriorCoverage {\r\n return {\r\n ...dentalCoverage,\r\n coverageEndDate: dentalCoverage.coverageEndDate ? moment(dentalCoverage.coverageEndDate) : undefined,\r\n }\r\n}\r\n\r\nfunction convertEmployerDTOToEmployer(employer: DirectToCarrierEmployerDTO): DirectToCarrierEmployer {\r\n return {\r\n ...employer,\r\n establishmentDate: employer.establishmentDate ? moment(employer.establishmentDate) : undefined,\r\n }\r\n}\r\n\r\nexport function convertGroupSubmissionToGroupSubmissionDTO(groupSubmission: GroupSubmission, \r\n isFinalSubmission: boolean = false, isSubmitToCarrierAcknowledged = false, overrideTaxIdValidation = false\r\n , isDigitalDocument = false, digitalStatusId = undefined\r\n ): GroupSubmissionDTO {\r\n return {\r\n ...groupSubmission,\r\n directToCarrier: groupSubmission.directToCarrier ? convertDirectToCarrierToDirectToCarrierDTO(groupSubmission.directToCarrier) : undefined,\r\n carrierCuttoffDt: groupSubmission.carrierCuttoffDt ? groupSubmission.carrierCuttoffDt.startOf('day').format() : undefined,\r\n plans: groupSubmission.plans.map(plan => ({ ...plan, effectiveDate: plan.effectiveDate.startOf('day').format() })),\r\n enrollmentCheckList: groupSubmission.enrollmentCheckList, \r\n isFinalSubmission: isFinalSubmission,\r\n isSubmitToCarrierAcknowledged: isSubmitToCarrierAcknowledged,\r\n overrideTaxIdValidation: overrideTaxIdValidation,\r\n isDigitalDocument: isDigitalDocument,\r\n digitalStatusId: digitalStatusId\r\n }\r\n}\r\n\r\nfunction convertDirectToCarrierToDirectToCarrierDTO(directToCarrier: DirectToCarrier): DirectToCarrierDTO {\r\n return {\r\n ...directToCarrier,\r\n employerInformation: directToCarrier.employerInformation ? convertEmployerToEmployerDTO(directToCarrier.employerInformation) : undefined,\r\n effectiveDate: directToCarrier.effectiveDate ? directToCarrier.effectiveDate.startOf('day').format() : undefined,\r\n openEnrollmentStartDate: directToCarrier.openEnrollmentStartDate ? directToCarrier.openEnrollmentStartDate.startOf('day').format() : undefined,\r\n openEnrollmentEndDate: directToCarrier.openEnrollmentEndDate ? directToCarrier.openEnrollmentEndDate.startOf('day').format() : undefined,\r\n signatures: directToCarrier.signatures.map(signature => (convertSignatureToSignatureDTO(signature))),\r\n egaLinks: directToCarrier.egaLinks.map(ega => ({ ...ega, createdDate: ega.createdDate.startOf('day').format() })),\r\n signedDate: directToCarrier.signedDate ? directToCarrier.signedDate.startOf('day').format() : undefined,\r\n dentalPriorCoverage: directToCarrier.dentalPriorCoverage ? convertDentalPriorCoverageToDentalPriorCoverageDTO(directToCarrier.dentalPriorCoverage) : undefined\r\n\r\n }\r\n}\r\n\r\nexport function convertSignatureToSignatureDTO(signature: Signature): SignatureDTO {\r\n return {\r\n ...signature,\r\n signedDate: signature.signedDate.startOf('day').format()\r\n };\r\n}\r\n\r\nfunction convertEmployerToEmployerDTO(employer: DirectToCarrierEmployer): DirectToCarrierEmployerDTO {\r\n return {\r\n ...employer,\r\n establishmentDate: employer.establishmentDate ? employer.establishmentDate.startOf('day').format() : undefined,\r\n }\r\n}\r\n\r\nfunction convertDentalPriorCoverageToDentalPriorCoverageDTO(dentalCoverage: DentalPriorCoverage): DentalPriorCoverageDTO {\r\n return {\r\n ...dentalCoverage,\r\n coverageEndDate: dentalCoverage.coverageEndDate ? dentalCoverage.coverageEndDate.startOf('day').format() : undefined\r\n }\r\n}\r\n","import { Action } from \"redux\";\r\nimport { isType } from 'redux-typescript-actions';\r\nimport { storeAddCensusTemplate, storeCensusFields, storeCensusTemplates, storeCensusUploadFileInfo, storeCensusXlsColumnMappings, storeSaveCensusImport, storeUpdateCensusTemplate } from '../actions';\r\nimport { Document } from '../reducers/plan_reducer';\r\n\r\nexport interface CensusTemplate { \r\n id: string,\r\n userName: string,\r\n templateName: string,\r\n hasHeaders: boolean,\r\n isSystemTemplate: boolean,\r\n templateJson: string\r\n}\r\n\r\nexport interface CensusField { \r\n labelName: string,\r\n orderBy: number,\r\n required: boolean,\r\n targetProperty: string\r\n}\r\n\r\n\r\n// -- interfaces for uploading document\r\nexport interface XlsPreviewCol {\r\n colValue: string,\r\n rowId: number\r\n}\r\n\r\n//-- interfaces for previewing inital data from the excel file\r\nexport interface CensusImportPreview {\r\n sheetName: string,\r\n col1ValueList: XlsPreviewCol[]\r\n}\r\n\r\nexport interface CensusUploadFileInfo {\r\n uploadDocumentInfo: Document,\r\n xlsPreview: CensusImportPreview[]\r\n}\r\n\r\n\r\n// - interfaces for previewing the excel column data for mapping the excel columns\r\nexport interface CensusImportColumnPreview {\r\n colIndex: number,\r\n colHeaderName: string,\r\n colRowData: string\r\n}\r\n\r\nexport interface CensusImportXlsColumnList {\r\n xlsColPreview: CensusImportColumnPreview[]\r\n}\r\n\r\n// - interfaces for saving the excel census data\r\n\r\nexport interface CensusImportError{\r\n rowIdentifier: string,\r\n errorType: string,\r\n xlsColHeader: string\r\n}\r\n\r\nexport interface CenusSaveImportResult {\r\n importErrors: CensusImportError[],\r\n errorMessages: string[]\r\n}\r\n\r\n// -- reducer interfaces\r\n\r\nexport interface CensusImportReducerState {\r\n censusTemplates: CensusTemplate[];\r\n censusFields: CensusField[];\r\n censusUploadFileInfo: CensusUploadFileInfo;\r\n censusXlsColumnList: CensusImportXlsColumnList;\r\n censusSaveImportResult: CenusSaveImportResult;\r\n}\r\n\r\nconst initialState: CensusImportReducerState = {\r\n censusTemplates: [],\r\n censusFields: [],\r\n censusUploadFileInfo: { \r\n uploadDocumentInfo: {\r\n type: 'CENSUS',\r\n id: '',\r\n typeId: 0,\r\n storageUrl: '',\r\n fileName: '',\r\n active: true\r\n },\r\n xlsPreview: []\r\n },\r\n censusXlsColumnList: {\r\n xlsColPreview: []\r\n },\r\n censusSaveImportResult: {\r\n importErrors: [],\r\n errorMessages: []\r\n }\r\n};\r\n\r\nexport function censusImportReducer(state: CensusImportReducerState = initialState, action: Action): CensusImportReducerState {\r\n if (isType(action, storeCensusTemplates)) {\r\n return {\r\n ...state,\r\n censusTemplates: action.payload\r\n };\r\n }\r\n else if (isType(action, storeAddCensusTemplate)) {\r\n let newTemplateList = [...state.censusTemplates];\r\n newTemplateList.push( action.payload);\r\n return {\r\n ...state,\r\n censusTemplates: newTemplateList\r\n }; \r\n }else if (isType(action, storeUpdateCensusTemplate)) {\r\n let newTemplateList = [...state.censusTemplates];\r\n const idx = newTemplateList.findIndex( t => t.id === action.payload.id )\r\n if( idx ){\r\n newTemplateList[idx] = action.payload\r\n }\r\n return {\r\n ...state,\r\n censusTemplates: newTemplateList\r\n }; \r\n } else if (isType(action, storeCensusFields)) {\r\n return {\r\n ...state,\r\n censusFields: action.payload\r\n };\r\n } else if(isType(action, storeCensusUploadFileInfo)){\r\n return{\r\n ...state,\r\n censusUploadFileInfo: action.payload\r\n };\r\n } else if( isType(action, storeCensusXlsColumnMappings)){\r\n return{\r\n ...state,\r\n censusXlsColumnList: action.payload\r\n }\r\n \r\n } else if( isType(action, storeSaveCensusImport)){\r\n return{\r\n ...state,\r\n censusSaveImportResult: action.payload\r\n }\r\n }\r\n else {\r\n return state;\r\n }\r\n}","import { Action } from 'redux';\r\nimport { isType } from 'redux-typescript-actions';\r\nimport { storeCarriers, storeLookups } from '../actions';\r\n\r\nexport interface RawLookup extends LookupObj {\r\n id: number;\r\n}\r\n\r\nexport interface LookupObj {\r\n key: string;\r\n value: string;\r\n additionalDataJson: string;\r\n typeId: number;\r\n parentIds: number[];\r\n order: number;\r\n required: boolean;\r\n secondValue: string;\r\n}\r\n\r\nexport type Lookup = { [id: number]: LookupObj };\r\n\r\nexport interface LookupReducerState {\r\n loaded: boolean;\r\n values: Lookup;\r\n carriers: CarrierList[];\r\n}\r\n\r\nconst initialState: LookupReducerState = {\r\n loaded: false,\r\n carriers: [],\r\n values: {}\r\n};\r\n\r\nexport interface CarrierList {\r\n carrierName: string;\r\n carrierCode: string;\r\n carrierLogo: string;\r\n customPlanAllowed: boolean;\r\n}\r\n\r\nexport function lookupReducer(state: LookupReducerState = initialState, action: Action): LookupReducerState {\r\n if (isType(action, storeLookups)) {\r\n return {\r\n ...state,\r\n values: action.payload,\r\n loaded: true\r\n };\r\n } else if (isType(action, storeCarriers)) {\r\n return {\r\n ...state,\r\n carriers: action.payload\r\n }\r\n } else\r\n return state;\r\n}\r\n","import moment from 'moment';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Action } from 'redux';\r\nimport { isType } from 'redux-typescript-actions';\r\nimport { removePlan, storePlan, storePlanDocuments, storePlans, storePlanSearchValues } from '../actions';\r\n\r\nexport interface Benefit {\r\n benefitId: number;\r\n inNetworkAmount?: string;\r\n outOfNetworkAmount?: string;\r\n}\r\n\r\nexport const BenefitsPropType = PropTypes.arrayOf(PropTypes.exact({\r\n benefitId: PropTypes.number.isRequired,\r\n inNetworkAmount: PropTypes.string,\r\n outOfNetworkAmount: PropTypes.string\r\n}));\r\n\r\nexport interface Document {\r\n id: string;\r\n typeId: number;\r\n type: string;\r\n storageUrl: string;\r\n title?: string;\r\n fileName: string;\r\n fileId?: string;\r\n description?: string;\r\n createdDate?: string;\r\n active: boolean;\r\n}\r\nexport const DocumentsPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n typeId: PropTypes.number.isRequired,\r\n type: PropTypes.string,\r\n storageUrl: PropTypes.string.isRequired,\r\n title: PropTypes.string,\r\n fileName: PropTypes.string,\r\n fileId: PropTypes.string,\r\n description: PropTypes.string,\r\n createdDate: PropTypes.string,\r\n active: PropTypes.bool\r\n}));\r\n\r\nexport interface Rate {\r\n id: string;\r\n rateTypeId: number;\r\n amount?: number;\r\n tobaccoAmount?: number;\r\n maleAmount?: number;\r\n maleTobaccoAmount?: number;\r\n femaleAmount?: number;\r\n femaleTobaccoAmount?: number;\r\n coverageLevelId?: number;\r\n memberLevelId?: number;\r\n minAge: number;\r\n maxAge?: number;\r\n}\r\nexport const RatesPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n rateTypeId: PropTypes.number.isRequired,\r\n amount: PropTypes.number,\r\n tobaccoAmount: PropTypes.number,\r\n maleAmount: PropTypes.number,\r\n maleTobaccoAmount: PropTypes.number,\r\n femaleAmount: PropTypes.number,\r\n femaleTobaccoAmount: PropTypes.number,\r\n coverageLevelId: PropTypes.number,\r\n memberLevelId: PropTypes.number,\r\n minAge: PropTypes.number,\r\n maxAge: PropTypes.number\r\n}));\r\n\r\nexport interface Contribution {\r\n id: string;\r\n contributionModelTypeId: number;\r\n contributionLevelId: number;\r\n coverageLevelId?: number;\r\n memberLevelId?: number;\r\n memberLevelTotalDependentsId?: number;\r\n amount?: number;\r\n maxAmount?: number;\r\n}\r\nexport const ContributionsPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n contributionModelTypeId: PropTypes.number.isRequired,\r\n contributionLevelId: PropTypes.number.isRequired,\r\n coverageLevelId: PropTypes.number,\r\n memberLevelId: PropTypes.number,\r\n memberLevelTotalDependentsId: PropTypes.number,\r\n amount: PropTypes.number,\r\n maxAmount: PropTypes.number,\r\n}));\r\n\r\nexport interface Participant {\r\n id: string;\r\n participantTypeId: number;\r\n isAllowed: boolean;\r\n}\r\nexport const ParticipantPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n participantTypeId: PropTypes.number.isRequired,\r\n isAllowed: PropTypes.bool.isRequired,\r\n}));\r\n\r\nexport interface AgeReduction {\r\n id: string;\r\n minAge: number;\r\n maxAge: number;\r\n amount?: number;\r\n}\r\n\r\nexport const AgeReductionPropType = PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n minAge: PropTypes.number.isRequired,\r\n maxAge: PropTypes.number.isRequired,\r\n amount: PropTypes.number\r\n}));\r\n\r\nexport interface AgeRestriction {\r\n memberLevelId: number;\r\n hasDisability: boolean;\r\n isStudent: boolean;\r\n minAge: number | null;\r\n maxAge: number | null;\r\n}\r\n\r\nexport const AgeRestrictionPropType = PropTypes.arrayOf(PropTypes.exact({\r\n memberLevelId: PropTypes.number.isRequired,\r\n hasDisability: PropTypes.bool.isRequired,\r\n isStudent: PropTypes.bool.isRequired,\r\n minAge: PropTypes.number,\r\n maxAge: PropTypes.number\r\n}));\r\n\r\nexport interface Rider {\r\n id: string;\r\n name: string;\r\n isSelected: boolean;\r\n}\r\n\r\nexport const RiderPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n isSelected: PropTypes.bool.isRequired,\r\n});\r\n\r\nexport interface RiderOption {\r\n isRequired: boolean;\r\n name: string;\r\n riders: Rider[];\r\n}\r\n\r\nexport const RiderOptionPropType = PropTypes.arrayOf(PropTypes.exact({\r\n isRequired: PropTypes.bool.isRequired,\r\n name: PropTypes.string,\r\n riders: PropTypes.arrayOf(RiderPropType)\r\n}));\r\n\r\nexport interface PartialPlan {\r\n id: string;\r\n rateTypeId: number;\r\n}\r\nexport const PartialPlanPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n planTypeId: PropTypes.number.isRequired\r\n});\r\nexport interface CopyContributionDTO {\r\n contributions: Contribution[],\r\n planids: PartialPlan[]\r\n}\r\n\r\nexport const CopyContributionPropType = PropTypes.exact({\r\n contributions: ContributionsPropType,\r\n planids: PropTypes.arrayOf(PartialPlanPropType)\r\n});\r\n\r\nexport interface PlanSearchFields {\r\n stateId?: number;\r\n lineOfCoverageId?: number;\r\n carrierCode?: string;\r\n carrierName?: string;\r\n effectiveDate?: moment.Moment;\r\n zipCode?: string;\r\n county?: string;\r\n sicCode?: number;\r\n}\r\n\r\nexport enum LinkedPlanType {\r\n election,\r\n benefit,\r\n contributionBase\r\n}\r\nexport interface LinkedPlan {\r\n id: string;\r\n linkType: LinkedPlanType\r\n}\r\n\r\nexport interface WaitingPeriodOption {\r\n waitingPeriodTypeId: number;\r\n waitingPeriodTypeName: string;\r\n}\r\nexport interface PlanQuestion {\r\n questionId: string;\r\n questionTypeId: number;\r\n questionKey: string;\r\n questionText: string;\r\n order?: number;\r\n memberLevelIds: number[];\r\n childQuestions?: PlanQuestion[];\r\n parentQuestionId?: string,\r\n inputType?: string\r\n}\r\n\r\nconst PlanQuestionPropTypeShape: any = {\r\n questionId: PropTypes.string.isRequired,\r\n questionKey: PropTypes.string.isRequired,\r\n questionTypeId: PropTypes.number.isRequired,\r\n questionText: PropTypes.string.isRequired,\r\n order: PropTypes.number,\r\n memberLevelIds: PropTypes.arrayOf(PropTypes.number),\r\n parentQuestionId: PropTypes.string,\r\n inputType: PropTypes.string\r\n};\r\nexport const PlanQuestionPropType = PropTypes.exact(PlanQuestionPropTypeShape);\r\nPlanQuestionPropTypeShape.childQuestions = PropTypes.arrayOf(PlanQuestionPropType);\r\n\r\nexport interface Configuration {\r\n id: string;\r\n configurationId: number;\r\n carrierId: string;\r\n marketId: number;\r\n loCId: number;\r\n planTypeId: number;\r\n configurationTypeId: number;\r\n additionalInfo: {\r\n id: string;\r\n key: string;\r\n value: string;\r\n }[]\r\n}\r\n\r\nconst configurationsPropType = PropTypes.exact({\r\n id: PropTypes.string,\r\n configurationId: PropTypes.number,\r\n carrierId: PropTypes.string,\r\n marketId: PropTypes.number,\r\n loCId: PropTypes.number,\r\n planTypeId: PropTypes.number,\r\n configurationTypeId: PropTypes.number,\r\n additionalInfo: PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string,\r\n key: PropTypes.string,\r\n value: PropTypes.string\r\n }))\r\n});\r\n\r\ninterface BasePlan {\r\n id: string;\r\n stateId: number;\r\n lineOfCoverageId: number;\r\n carrierName: string;\r\n carrierCode: string;\r\n carrierLogo: string;\r\n planTypeId: number;\r\n rateTypeId?: number;\r\n contributionLevelId?: number;\r\n planDisplayName: string;\r\n systemName?: string;\r\n metalLevelId: number;\r\n eligibleForCobra: boolean;\r\n eligibleForHsa: boolean;\r\n pcpInformationRequired: boolean;\r\n listedOnExchange: boolean;\r\n isVoluntary: boolean;\r\n isCustom?: boolean;\r\n useEmployeeAge: boolean;\r\n benefits: Benefit[];\r\n documents: Document[];\r\n rates: Rate[];\r\n contributions: Contribution[];\r\n participants: Participant[];\r\n ageReductions?: AgeReduction[];\r\n ageRestrictions?: AgeRestriction[];\r\n riderOptions?: RiderOption[];\r\n classIds: string[];\r\n pcpurl?: string;\r\n autoEnrollId?: number;\r\n costPerUnit?: number;\r\n benefitAmountTypeId?: number;\r\n benefitAmount?: number;\r\n minimumBenefit?: number;\r\n maximumBenefit?: number;\r\n guaranteedIssueAmount?: number;\r\n benefitDuration?: string;\r\n eliminationPeriod?: string;\r\n isBenefitAmountRatingTypeCoveredPayroll?: boolean;\r\n adAndDBenefit?: string;\r\n otherBenefit?: string;\r\n benefitRoundingTypeId?: number;\r\n benefitRoundingInterval?: number;\r\n payoutId?: number;\r\n configurationTypeIds: number[];\r\n configurations?: Configuration[];\r\n linkedPlans: LinkedPlan[];\r\n waitingPeriodTypeId?: number;\r\n waitingPeriod?: number;\r\n questions: PlanQuestion[];\r\n notes?: string;\r\n planSicCode?: number;\r\n levelFundedPlan: boolean;\r\n ratesUpdated?: boolean;\r\n fundingType?: number;\r\n}\r\n\r\nexport interface PlanDTO extends BasePlan {\r\n effectiveDate?: string;\r\n originalEffectiveDate?: string;\r\n}\r\n\r\nexport interface CopyPlanDTO {\r\n planId: string;\r\n isCopyData: boolean;\r\n isCopyRates: boolean;\r\n isCopyContributions: boolean;\r\n isCopyDocuments: boolean;\r\n isCopyEligibility: boolean;\r\n}\r\n\r\nexport interface Plan extends BasePlan {\r\n effectiveDate?: moment.Moment;\r\n originalEffectiveDate?: moment.Moment;\r\n}\r\nexport const PlanPropType = PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n stateId: PropTypes.number.isRequired,\r\n lineOfCoverageId: PropTypes.number.isRequired,\r\n carrierName: PropTypes.string.isRequired,\r\n carrierCode: PropTypes.string.isRequired,\r\n carrierLogo: PropTypes.string,\r\n planTypeId: PropTypes.number.isRequired,\r\n rateTypeId: PropTypes.number,\r\n contributionLevelId: PropTypes.number,\r\n planDisplayName: PropTypes.string.isRequired,\r\n systemName: PropTypes.string,\r\n metalLevelId: PropTypes.number.isRequired,\r\n eligibleForCobra: PropTypes.bool,\r\n eligibleForHsa: PropTypes.bool,\r\n isVoluntary: PropTypes.bool,\r\n isCustom: PropTypes.bool,\r\n pcpInformationRequired: PropTypes.bool,\r\n listedOnExchange: PropTypes.bool,\r\n useEmployeeAge: PropTypes.bool,\r\n benefits: BenefitsPropType,\r\n documents: DocumentsPropType,\r\n rates: RatesPropType,\r\n contributions: ContributionsPropType,\r\n participants: ParticipantPropType,\r\n ageReductions: AgeReductionPropType,\r\n ageRestrictions: AgeRestrictionPropType,\r\n riderOptions: RiderOptionPropType,\r\n classIds: PropTypes.arrayOf(PropTypes.string),\r\n pcpurl: PropTypes.string,\r\n autoEnrollId: PropTypes.number,\r\n effectiveDate: PropTypes.object,\r\n originalEffectiveDate: PropTypes.object,\r\n planSicCode: PropTypes.number,\r\n costPerUnit: PropTypes.number,\r\n benefitAmountTypeId: PropTypes.number,\r\n benefitAmount: PropTypes.number,\r\n minimumBenefit: PropTypes.number,\r\n maximumBenefit: PropTypes.number,\r\n guaranteedIssueAmount: PropTypes.number,\r\n benefitDuration: PropTypes.string,\r\n eliminationPeriod: PropTypes.string,\r\n adAndDBenefit: PropTypes.string,\r\n otherBenefit: PropTypes.string,\r\n benefitRoundingTypeId: PropTypes.number,\r\n benefitRoundingInterval: PropTypes.number,\r\n payoutId: PropTypes.number,\r\n configurationTypeIds: PropTypes.arrayOf(PropTypes.number),\r\n linkedPlans: PropTypes.arrayOf(PropTypes.exact({\r\n id: PropTypes.string.isRequired,\r\n linkType: PropTypes.number.isRequired\r\n })),\r\n waitingPeriodTypeId: PropTypes.number,\r\n waitingPeriod: PropTypes.number,\r\n questions: PropTypes.arrayOf(PlanQuestionPropType),\r\n configurations: PropTypes.arrayOf(configurationsPropType),\r\n notes: PropTypes.string,\r\n isBenefitAmountRatingTypeCoveredPayroll: PropTypes.bool,\r\n levelFundedPlan: PropTypes.bool,\r\n ratesUpdated: PropTypes.bool,\r\n fundingType: PropTypes.number\r\n\r\n});\r\n\r\nexport interface PlanReducerState {\r\n list: Plan[];\r\n configurationTypeSet: Set;\r\n planSearchFields: PlanSearchFields;\r\n}\r\nexport const PlanReducerStatePropType = PropTypes.exact({\r\n list: PropTypes.arrayOf(PlanPropType),\r\n configurationTypeSet: PropTypes.object,\r\n planSearchFields: PropTypes.exact({\r\n stateId: PropTypes.number,\r\n lineOfCoverageId: PropTypes.number,\r\n carrierCode: PropTypes.string,\r\n carrierName: PropTypes.string,\r\n effectiveDate: PropTypes.object,\r\n zipCode: PropTypes.string,\r\n county: PropTypes.string\r\n })\r\n});\r\n\r\nconst initialState: PlanReducerState = {\r\n list: [],\r\n configurationTypeSet: new Set(),\r\n planSearchFields: {\r\n stateId: undefined,\r\n lineOfCoverageId: undefined,\r\n carrierCode: undefined,\r\n carrierName: undefined,\r\n effectiveDate: undefined,\r\n zipCode: undefined,\r\n county: undefined\r\n }\r\n}\r\n\r\nexport function planReducer(state: PlanReducerState = initialState, action: Action): PlanReducerState {\r\n if (isType(action, storePlan)) {\r\n const newList = state.list.slice();\r\n const indexToEdit = newList.findIndex(plan => plan.id === action.payload.id);\r\n const plan = convertPlanDtoToPlan(action.payload);\r\n if (indexToEdit >= 0) {\r\n newList[indexToEdit] = plan;\r\n } else\r\n newList.push(plan);\r\n return {\r\n ...state,\r\n list: newList,\r\n configurationTypeSet: generateconfigurationTypeSet(newList)\r\n };\r\n } else if (isType(action, storePlans)) {\r\n const newList = enhance(action.payload);\r\n return {\r\n ...state,\r\n list: newList,\r\n configurationTypeSet: generateconfigurationTypeSet(newList)\r\n }; \r\n } else if (isType(action, removePlan)) {\r\n const newList = state.list.slice();\r\n const indexToRemove = newList.findIndex(plan => plan.id === action.payload);\r\n if (indexToRemove >= 0) {\r\n newList.splice(indexToRemove, 1);\r\n }\r\n return {\r\n ...state,\r\n list: newList,\r\n configurationTypeSet: generateconfigurationTypeSet(newList)\r\n };\r\n } else if (isType(action, storePlanDocuments)) {\r\n const newList = state.list.slice();\r\n const indexToEdit = newList.findIndex(plan => plan.id === action.payload.id);\r\n if (indexToEdit >= 0) {\r\n newList[indexToEdit] = {\r\n ...newList[indexToEdit],\r\n documents: action.payload.documents\r\n };\r\n }\r\n return {\r\n ...state,\r\n list: newList\r\n };\r\n } else if (isType(action, storePlanSearchValues)) {\r\n const pl = action.payload;\r\n if (!pl) {\r\n return {\r\n ...state,\r\n planSearchFields: {\r\n stateId: undefined,\r\n lineOfCoverageId: undefined,\r\n carrierCode: undefined,\r\n carrierName: undefined,\r\n effectiveDate: undefined,\r\n zipCode: undefined,\r\n county: undefined\r\n }\r\n }\r\n } else {\r\n return {\r\n ...state,\r\n planSearchFields: pl\r\n }\r\n }\r\n } else {\r\n return state;\r\n }\r\n}\r\n\r\nfunction enhance(plansDTO: PlanDTO[]): Plan[] {\r\n const plans: Plan[] = [];\r\n plansDTO.forEach(planDTO => {\r\n plans.push(convertPlanDtoToPlan(planDTO));\r\n });\r\n return plans;\r\n}\r\n\r\nfunction convertPlanDtoToPlan(planDTO: PlanDTO): Plan {\r\n return {\r\n ...planDTO,\r\n effectiveDate: planDTO.effectiveDate ? moment(planDTO.effectiveDate).utc().local(false) : undefined,\r\n originalEffectiveDate: planDTO.originalEffectiveDate ? moment(planDTO.originalEffectiveDate) : undefined,\r\n questions: planDTO.questions || [],\r\n contributions: planDTO.contributions.sort((a, b) => (\r\n (a.coverageLevelId && b.coverageLevelId) ? (a.coverageLevelId - b.coverageLevelId) :\r\n (a.memberLevelId && b.memberLevelId) ? (a.memberLevelId - b.memberLevelId) :\r\n 0\r\n )),\r\n rates: planDTO.rates.sort((a, b) => (\r\n (a.coverageLevelId && b.coverageLevelId) ? (a.coverageLevelId - b.coverageLevelId) :\r\n (a.memberLevelId && b.memberLevelId) ? (a.memberLevelId - b.memberLevelId) :\r\n 0\r\n )),\r\n };\r\n}\r\n\r\nfunction generateconfigurationTypeSet(plans: Plan[]) {\r\n var configurationTypeSet = new Set();\r\n plans.forEach(plan => {\r\n plan.configurationTypeIds.forEach(configurationType => {\r\n configurationTypeSet.add(configurationType);\r\n });\r\n });\r\n return configurationTypeSet;\r\n}","import { Action } from 'redux';\r\nimport { isType } from 'redux-typescript-actions';\r\nimport { storeSettings } from '../actions';\r\n\r\nexport interface RawSetting extends SettingObj {\r\n id: number;\r\n}\r\n\r\nexport interface SettingObj {\r\n key: string;\r\n value: string;\r\n valueType: string;\r\n}\r\n\r\nexport interface SettingI extends SettingObj { }\r\n\r\nexport type Setting = { [id: number]: SettingObj };\r\n\r\nexport interface SettingsReducerState {\r\n loaded: boolean;\r\n values: Setting;\r\n}\r\n\r\nconst initialState: SettingsReducerState = {\r\n loaded: false,\r\n values: {}\r\n};\r\n\r\nexport function settingsReducer(state: SettingsReducerState = initialState, action: Action): SettingsReducerState {\r\n if (isType(action, storeSettings)) {\r\n return {\r\n ...state,\r\n values: action.payload,\r\n loaded: true\r\n };\r\n } else\r\n return state;\r\n}\r\n","import { isType, Action } from 'redux-typescript-actions';\r\nimport { storeCounties } from '../actions';\r\n\r\nexport interface ZipCodeReducerState {\r\n zipCountyData: ZipCountyMapping[];\r\n}\r\n\r\nconst initialState: ZipCodeReducerState = {\r\n zipCountyData: []\r\n};\r\n\r\nexport interface ZipCountyMapping {\r\n zipCode: string;\r\n countyName: string;\r\n}\r\n\r\nexport function zipCodeReducer(state: ZipCodeReducerState = initialState, action: Action): ZipCodeReducerState {\r\n if (isType(action, storeCounties)) {\r\n return {\r\n ...state,\r\n zipCountyData: action.payload\r\n }\r\n } else\r\n return state;\r\n}\r\n","import ClassUpsertForm, { FormData } from 'components/forms/class_upsert_form';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { deleteEnrollmentClasses, upsertEnrollmentClasses } from 'redux/actions';\r\nimport { Employee, EnrollmentClass, EnrollmentReducerState } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { hasEmployeesElectedAnyPlan, hasNoElectionStartedEmployeeExists } from 'utility/employee_utils';\r\nimport { hasElectionStartedEmployeeExists } from 'utility/employee_utils';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n enrollmentId: string;\r\n}\r\n\r\ninterface MappedProps {\r\n employees: Employee[];\r\n enrollmentClasses: EnrollmentClass[];\r\n enrollmentState: EnrollmentReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n upsertEnrollmentClasses: (enrollmentClasses: EnrollmentClass[]) => Promise;\r\n deleteEnrollmentClasses: (classIds: string[]) => Promise;\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps, DispatchProps { }\r\n\r\nconst ClassUpsert = React.memo((props: Props) => {\r\n const { enrollmentClasses, employees, enrollmentId, deleteEnrollmentClasses, upsertEnrollmentClasses, enrollmentState } = props\r\n const isSubmitted = enrollmentState.submissionDate ? true : false;\r\n const isConfirmed = enrollmentState.setupCompletedOn ? true : false;\r\n\r\n const initialValues = React.useMemo((): Partial => {\r\n return {\r\n classes: enrollmentClasses.map(_class => {\r\n return {\r\n id: _class.id,\r\n name: _class.className,\r\n employees: employees.map(emp => {\r\n const selected = _class.employeeIds.some(empId => empId === emp.id);\r\n const classPresent = enrollmentClasses.find(i => i.employeeIds.some(empId => empId === emp.id));\r\n return {\r\n id: emp.id,\r\n fullName: emp.fullName,\r\n selected,\r\n selectedInClassId: classPresent ? classPresent.id : undefined,\r\n selectedInClassName: classPresent ? classPresent.className : undefined,\r\n hasElectionStartedForEmployee : emp.elections && emp.elections.length > 0\r\n };\r\n })\r\n };\r\n })\r\n };\r\n }, [enrollmentClasses, employees]);\r\n\r\n const handleSubmit = React.useCallback(\r\n async function handleSubmit(formValues: FormData) {\r\n const formEnrollmentClasses: EnrollmentClass[] = formValues.classes.map(_class => {\r\n const classIndex = enrollmentClasses.findIndex(c => c.className === _class.name);\r\n const classId = classIndex > -1 ? enrollmentClasses[classIndex].id : _class.id;\r\n return {\r\n id: classId,\r\n className: _class.name,\r\n enrollmentId: enrollmentId,\r\n employeeIds: _class.employees.filter(emp => emp.selected).map(emp => emp.id),\r\n objectState: classId ? 3 : 1\r\n }\r\n });\r\n const removedClasses = enrollmentClasses.filter(_class => formEnrollmentClasses.find(i => i.id === _class.id) === undefined).map(i => i.id);\r\n if (removedClasses.length > 0)\r\n await deleteEnrollmentClasses(removedClasses);\r\n\r\n await upsertEnrollmentClasses(formEnrollmentClasses);\r\n },\r\n [enrollmentClasses, enrollmentId, deleteEnrollmentClasses, upsertEnrollmentClasses]\r\n );\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n employees: state.employee.list,\r\n enrollmentClasses: state.enrollment.enrollmentClasses,\r\n enrollmentState: state.enrollment\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n upsertEnrollmentClasses: (enrollmentClasses) => dispatch(upsertEnrollmentClasses(ownProps.companyId, ownProps.enrollmentId, enrollmentClasses)),\r\n deleteEnrollmentClasses: (classIds) => dispatch(deleteEnrollmentClasses(ownProps.companyId, ownProps.enrollmentId, classIds))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ClassUpsert);","import SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\nimport React from 'react';\r\n\r\nconst NotStartedIcon = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NotStartedIcon;","import SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\nimport React from 'react';\r\n\r\nconst InProgressIcon = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default InProgressIcon;","import { Chip, Typography, createStyles } from '@material-ui/core';\r\nimport CompleteIcon from '@material-ui/icons/CheckCircle';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport clsx from 'clsx';\r\nimport palette from '../../utility/palette';\r\nimport NotStartedIcon from './icons/icon_not_started';\r\nimport InProgressIcon from './icons/icon_in_progress';\r\nimport { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\ninterface ComponentProps {\r\n status: number | 'DAYS_REMAINING'; // Lookup id or the string literal 'DAYS_REMAINING'\r\n chip?: boolean;\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles;\r\n\r\nconst ElectionStatus = (props: Props) => {\r\n const { status, chip = false, classes } = props;\r\n let statusText = '';\r\n let colorClass = '';\r\n let Icon: React.ComponentType | undefined = undefined;\r\n\r\n switch (status) {\r\n case getLookupId('NOTSTARTED', LOOKUP_TYPE_IDS.electionStatus):\r\n statusText = 'Not Started';\r\n colorClass = chip ? classes.bgGrey : classes.grey!;\r\n Icon = NotStartedIcon;\r\n break;\r\n case getLookupId('INPROGRESS', LOOKUP_TYPE_IDS.electionStatus):\r\n statusText = 'In Progress';\r\n colorClass = chip ? classes.bgBlue : classes.blue!;\r\n Icon = InProgressIcon;\r\n break;\r\n case getLookupId('SIGNATUREPENDING', LOOKUP_TYPE_IDS.electionStatus):\r\n statusText = 'Signature Pending';\r\n colorClass = chip ? classes.bgBlue : classes.blue!;\r\n Icon = InProgressIcon;\r\n break;\r\n case getLookupId('RENEWALQUESTIONSPENDING', LOOKUP_TYPE_IDS.electionStatus):\r\n statusText = 'Completed';\r\n colorClass = chip ? classes.bgGreen : classes.green!;\r\n Icon = CompleteIcon;\r\n break;\r\n case getLookupId('REOPENED', LOOKUP_TYPE_IDS.electionStatus):\r\n statusText = 'Re-Opened';\r\n colorClass = chip ? classes.bgBlue : classes.blue!;\r\n Icon = InProgressIcon;\r\n break;\r\n case getLookupId('COMPLETED', LOOKUP_TYPE_IDS.electionStatus):\r\n statusText = 'Completed';\r\n colorClass = chip ? classes.bgGreen : classes.green!;\r\n Icon = CompleteIcon;\r\n break;\r\n case getLookupId('SUBMITTED', LOOKUP_TYPE_IDS.electionStatus):\r\n statusText = 'Submitted';\r\n colorClass = chip ? classes.bgGreen : classes.green!;\r\n Icon = CompleteIcon;\r\n break;\r\n case 'DAYS_REMAINING':\r\n statusText = 'Days Remaining'\r\n break;\r\n }\r\n\r\n if (chip) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n
\r\n {Icon ? : undefined}\r\n {statusText}\r\n
\r\n );\r\n }\r\n};\r\n\r\nconst styles = createStyles({\r\n wrapper: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n dot: {\r\n width: 16,\r\n height: 16,\r\n marginRight: 5,\r\n borderRadius: '50%'\r\n },\r\n whiteText: {\r\n color: palette.grey.light\r\n },\r\n grey: {\r\n color: palette.grey.text\r\n },\r\n orange: {\r\n color: palette.orange.primary\r\n },\r\n blue: {\r\n color: palette.blue[500]\r\n },\r\n green: {\r\n color: palette.green[500]\r\n },\r\n bgGrey: {\r\n background: palette.grey.light\r\n },\r\n bgOrange: {\r\n background: palette.orange.primary\r\n },\r\n bgBlue: {\r\n background: palette.blue[500]\r\n },\r\n bgGreen: {\r\n background: palette.green[500]\r\n },\r\n statusText: {\r\n fontSize: 12\r\n }\r\n});\r\n\r\nexport default withStyles(styles)(ElectionStatus);","import { createStyles, IconButton, TableCell, TableRow, withWidth } from \"@material-ui/core\";\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport { WithWidth } from '@material-ui/core/withWidth';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport { WithStyles } from \"@material-ui/styles\";\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility';\r\n\r\n\r\ninterface ComponentProps {\r\n content: T;\r\n nameLocation: string;\r\n viewOnly?: boolean;\r\n noDelete?: boolean;\r\n rowType: string;\r\n onClick: (id: string) => void;\r\n onDelete?: (id: string, name: string, rowType: string) => void;\r\n onCopy?: (id: string, name: string, rowType: string, alwaysCopyRates: boolean) => void;\r\n}\r\n\r\n\r\ninterface State {\r\n isHovering: boolean;\r\n}\r\n\r\nexport type InjectedProps = ComponentProps;\r\n/* eslint-disable-next-line */\r\ntype WrappedProps = WithStyles & WithWidth;\r\nconst withTableRow = (Component: React.ComponentType) => {\r\n class WrappedTableRow extends React.PureComponent & WrappedProps & ChildProps, State> {\r\n constructor(props: InjectedProps & WrappedProps & ChildProps) {\r\n super(props);\r\n\r\n this.state = {\r\n isHovering: false\r\n }\r\n }\r\n\r\n viewContent = () => {\r\n const nameKey = this.props.nameLocation;\r\n this.props.onClick(this.props.content.id || this.props.content[nameKey]);\r\n }\r\n\r\n deleteContent = (event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n const nameKey = this.props.nameLocation;\r\n this.props.onDelete && this.props.onDelete(this.props.content.id, this.props.content[nameKey] || \"\", this.props.rowType)\r\n }\r\n copyContent = (event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n const nameKey = this.props.nameLocation;\r\n const alwaysCopyRates = this.props.content.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.ratesAndBenefitsReadOnly);\r\n this.props.onCopy && this.props.onCopy(this.props.content.id, this.props.content[nameKey] || \"\", this.props.rowType, alwaysCopyRates)\r\n }\r\n\r\n handleMouseHover = () => {\r\n this.setState({ isHovering: true })\r\n }\r\n\r\n handleMouseLeave = () => {\r\n this.setState({ isHovering: false })\r\n }\r\n\r\n\r\n render() {\r\n const { classes, width, viewOnly, nameLocation, noDelete, rowType, onClick, onDelete, ...childProps } = this.props;\r\n const deleteIcon = this.state.isHovering ?\r\n \r\n \r\n : null;\r\n const deletePlanIcon = this.state.isHovering ?\r\n \r\n \r\n : null;\r\n const copyPlanIcon = this.state.isHovering ?\r\n \r\n \r\n : null;\r\n\r\n const hoverClass = this.state.isHovering ? classes.hover : '';\r\n return (\r\n rowType===\"plan\" ?\r\n \r\n \r\n {!viewOnly && deletePlanIcon}\r\n \r\n \r\n {!viewOnly && copyPlanIcon}\r\n \r\n \r\n \r\n : \r\n \r\n \r\n {!this.props.noDelete &&\r\n \r\n {!viewOnly && deleteIcon}\r\n \r\n }\r\n \r\n )\r\n }\r\n }\r\n\r\n return withStyles(styles)(withWidth()(WrappedTableRow as any));\r\n};\r\n\r\nconst styles = createStyles({\r\n hover: {\r\n backgroundColor: palette.grey.surface,\r\n cursor: 'pointer',\r\n },\r\n deleteCell: {\r\n minWidth: 48\r\n },\r\n planCell: {\r\n maxWidth: 20,\r\n paddingLeft: 0,\r\n paddingRight: 0\r\n },\r\n deleteButton: {\r\n color: palette.red.primary\r\n },\r\n copyButton: {\r\n }\r\n\r\n})\r\n\r\nexport default withTableRow;","import { createStyles } from '@material-ui/core';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport ElectionStatus from '../../components/common/election_status';\r\nimport { Employee } from '../../redux/reducers';\r\nimport { gridRowStyles } from '../../utility/common_styles';\r\nimport { getLookups } from '../../utility/lookup_utils';\r\nimport withTableRow, { InjectedProps } from '../common/table_row_hoc';\r\nimport { formatFullName } from 'utility/form_formatter';\r\n\r\ninterface EmployeeCensus extends Employee {\r\n remarks: string[];\r\n}\r\n\r\ninterface ComponentProps {\r\n showRemarks?: boolean;\r\n}\r\n// eslint-disable-next-line\r\ntype Props = WithStyles & ComponentProps & InjectedProps;\r\n\r\nconst EmployeeRow = (props: Props) => {\r\n const { classes } = props;\r\n const gender = () => {\r\n if (!props.content.genderId) return '';\r\n const lookups = getLookups();\r\n return lookups[props.content.genderId].value;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {formatFullName(props.content.firstName, props.content.lastName)}\r\n \r\n \r\n {props.content.dateOfBirth && props.content.dateOfBirth.isValid() ? props.content.dateOfBirth.format(\"ll\") : \"- -\"}\r\n \r\n \r\n {gender()}\r\n \r\n \r\n {props.content.dependents.length}\r\n \r\n \r\n \r\n \r\n {props.showRemarks &&\r\n \r\n {props.content.remarks.map(info =>
{info}
)}
\r\n
}\r\n\r\n \r\n );\r\n}\r\n\r\nconst styles = createStyles(gridRowStyles);\r\n\r\nexport default withTableRow(withStyles(styles)(EmployeeRow));","import { Radio, RadioGroup } from '@material-ui/core';\r\nimport withStyles, { StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport { Employee } from '../../redux/reducers/employee_reducer';\r\nimport { gridRowStyles } from '../../utility/common_styles';\r\nimport withTableRow from '../common/table_row_hoc';\r\n\r\ninterface ComponentProps {\r\n content: Employee;\r\n selectedId?: string;\r\n onChange: (value: any) => void;\r\n}\r\n\r\ninterface Props extends StyledComponentProps, ComponentProps {\r\n}\r\n\r\nconst CompanyContactAssociateRow = (props: Props) => {\r\n const { classes = {} } = props;\r\n const gender = () => {\r\n if (!props.content.genderId) return '';\r\n const lookups = getLookups();\r\n return lookups[props.content.genderId].value;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.content.fullName}\r\n \r\n \r\n {gender()}\r\n \r\n \r\n {props.content.dateOfBirth && props.content.dateOfBirth.isValid() ? props.content.dateOfBirth.format(\"ll\") : \"- -\"}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default withTableRow(withStyles(gridRowStyles)(CompanyContactAssociateRow));","import withStyles, { StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport { CompanyContact } from '../../redux/reducers';\r\nimport { getLookups } from '../../utility/lookup_utils';\r\nimport withTableRow, { InjectedProps } from '../common/table_row_hoc';\r\nimport { gridRowStyles } from '../../utility/common_styles';\r\nimport StarBorderIcon from '@material-ui/icons/StarBorder';\r\nimport { formatPhone } from 'utility/form_formatter';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\ninterface Props extends StyledComponentProps, InjectedProps {\r\n}\r\n\r\nconst CompanyContactRow = (props: Props) => {\r\n const { classes = {} } = props;\r\n const invitationStatus = () => {\r\n if (!props.content.invitationStatusId) return '';\r\n const lookups = getLookups();\r\n return lookups[props.content.invitationStatusId].value;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {props.content.isMainContact &&\r\n }\r\n /> \r\n }\r\n \r\n \r\n {props.content.fullName}\r\n \r\n \r\n {formatPhone(props.content.phone)}\r\n \r\n \r\n {props.content.email}\r\n \r\n \r\n {invitationStatus()}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default withTableRow(withStyles(gridRowStyles)(CompanyContactRow));","import { Checkbox, createStyles, makeStyles } from '@material-ui/core';\r\nimport ElectionStatus from 'components/common/election_status';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport withTableRow from '../../components/common/table_row_hoc';\r\nimport { Employee } from '../../redux/reducers';\r\nimport { gridRowStyles } from '../../utility/common_styles';\r\nimport { EmployeeInvitation } from './employee_invitations';\r\n\r\ninterface ComponentProps {\r\n content: EmployeeInvitation;\r\n viewOnly: boolean;\r\n onAddEmployee?: (e: any, checked: boolean) => void;\r\n onEmployeeClick: (e: any) => void;\r\n}\r\n\r\ntype Props = ComponentProps\r\n\r\nconst styles = createStyles({\r\n lessPadding: {\r\n padding: '7px 16px'\r\n },\r\n statusText: {\r\n fontSize: '1rem'\r\n }\r\n})\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nfunction formatFullName(emp: Employee) {\r\n const fullNameLength = emp.fullName.length;\r\n if (fullNameLength <= 65) {\r\n return emp.fullName;\r\n } else {\r\n let firstName;\r\n let lastName;\r\n const firstNameLength = emp.firstName.length;\r\n const lastNameLength = emp.lastName.length;\r\n if (lastNameLength <= 32) {\r\n lastName = emp.lastName;\r\n // truncate first name only\r\n firstName = firstNameLength > 32 ? emp.firstName.substring(0, 64 - lastNameLength) + '...' : emp.firstName;\r\n } else if (firstNameLength <= 32) {\r\n firstName = emp.firstName;\r\n // truncate last name only\r\n lastName = lastNameLength > 32 ? emp.lastName.substring(0, 64 - firstNameLength) + '...' : emp.lastName;\r\n } else {\r\n firstName = firstNameLength > 32 ? emp.firstName.substring(0, 29) + '...' : emp.firstName;\r\n lastName = lastNameLength > 32 ? emp.lastName.substring(0, 29) + '...' : emp.lastName;\r\n }\r\n return firstName + ' ' + lastName;\r\n }\r\n}\r\n\r\nconst EmployeeInvitationRow = (props: Props) => {\r\n const classes = useStyles(props);\r\n const employeeId = props.content && props.content.id ? props.content.id : '';\r\n const maxWidth = { ...gridRowStyles.maxWidth, ...styles.lessPadding };\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n props.onEmployeeClick(employeeId)}>\r\n {formatFullName(props.content)}\r\n \r\n \r\n {props.content.email}\r\n \r\n \r\n {props.content.inviteStatus}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default withTableRow(EmployeeInvitationRow);","import { Checkbox, createStyles, makeStyles } from '@material-ui/core';\r\nimport ElectionStatus from 'components/common/election_status';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport withTableRow from '../../components/common/table_row_hoc';\r\nimport { Employee } from '../../redux/reducers';\r\nimport { gridRowStyles } from '../../utility/common_styles';\r\nimport { EmployeeNoInvitation } from './employee_invitations';\r\n\r\ninterface ComponentProps {\r\n content: EmployeeNoInvitation;\r\n viewOnly: boolean;\r\n onEmployeeClick: (e: any) => void;\r\n}\r\n\r\ntype Props = ComponentProps\r\n\r\nconst styles = createStyles({\r\n lessPadding: {\r\n padding: '7px 16px'\r\n },\r\n statusText: {\r\n fontSize: '1rem'\r\n }\r\n})\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nfunction formatFullName(emp: Employee) {\r\n const fullNameLength = emp.fullName.length;\r\n if (fullNameLength <= 65) {\r\n return emp.fullName;\r\n } else {\r\n let firstName;\r\n let lastName;\r\n const firstNameLength = emp.firstName.length;\r\n const lastNameLength = emp.lastName.length;\r\n if (lastNameLength <= 32) {\r\n lastName = emp.lastName;\r\n // truncate first name only\r\n firstName = firstNameLength > 32 ? emp.firstName.substring(0, 64 - lastNameLength) + '...' : emp.firstName;\r\n } else if (firstNameLength <= 32) {\r\n firstName = emp.firstName;\r\n // truncate last name only\r\n lastName = lastNameLength > 32 ? emp.lastName.substring(0, 64 - firstNameLength) + '...' : emp.lastName;\r\n } else {\r\n firstName = firstNameLength > 32 ? emp.firstName.substring(0, 29) + '...' : emp.firstName;\r\n lastName = lastNameLength > 32 ? emp.lastName.substring(0, 29) + '...' : emp.lastName;\r\n }\r\n return firstName + ' ' + lastName;\r\n }\r\n}\r\n\r\nconst EmployeeInEligibleRow = (props: Props) => {\r\n const classes = useStyles(props);\r\n const employeeId = props.content && props.content.id ? props.content.id : '';\r\n const maxWidth = { ...gridRowStyles.maxWidth, ...styles.lessPadding };\r\n return (\r\n <>\r\n \r\n \r\n props.onEmployeeClick(employeeId)}>\r\n {formatFullName(props.content)}\r\n \r\n \r\n {props.content.email}\r\n \r\n \r\n {props.content.inviteStatus}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default withTableRow(EmployeeInEligibleRow);","import { Button, DialogActions, DialogContent, Link, Paper } from '@material-ui/core';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Help from '@material-ui/icons/Help';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/styles/withStyles';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport MaterialTable from 'components/common/table';\r\nimport React from 'react';\r\nimport { compose } from 'recompose';\r\nimport { ConfigProps, Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { Company, Employee } from 'redux/reducers';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { characterLimit, email, required } from '../../utility/form_validation';\r\nimport { formatPhone } from '../../utility/form_formatter';\r\nimport { normalizeDigits } from '../../utility/form_normalization';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\nexport const FORM_NAME = 'COMPANY_CONTACT';\r\n\r\nexport interface FormData {\r\n firstName: string;\r\n lastName: string;\r\n title: string;\r\n email: string;\r\n phone: string;\r\n employeeId?: string;\r\n isAuthorizedSignatory?: boolean; \r\n}\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n company: Company;\r\n employees: Employee[],\r\n showEmployeesTable: boolean;\r\n disableAssociateContactCheck: boolean;\r\n isMainContactFound: boolean;\r\n isMainContact: boolean;\r\n companyContactAssociateSelected?: string;\r\n companyContactAssociateChecked: boolean;\r\n authorizedSignatoryChecked: boolean;\r\n showAuthorizedSignatory: boolean\r\n onCancel: () => void;\r\n onMainContactChanged: (input: any, value: any) => void;\r\n onAssociateContactChecked: (input: any, value: any) => void;\r\n onAuthorizedSignatoryChecked: (input: any, value: any) => void;\r\n onContactChange: (firsName: string, lastName: string) => void;\r\n onAssociateContactRadioClicked: (id: string) => void;\r\n onDashboardClick: () => void;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps & StyledComponentProps;\r\n\r\nconst requiredFirstName = required('First Name is required');\r\nconst requiredLastName = required('Last Name is required');\r\nconst requiredPhoneNumber = required('Phone Number is required');\r\nconst requiredEmail = required('Email Address is required');\r\nconst associateContactTooptip = 'Allows this person to enroll in their own benefits and sign as an employee. They must already be in the census.';\r\nconst mainContactToolTip = 'Only one Company Admin can be the Main Company Contact.';\r\nconst characterLimit100 = characterLimit(100);\r\n\r\nlet firstName: string;\r\nlet lastName: string;\r\n\r\nconst tableHeaders = [\"Employee Name\", \"Gender\", \"Date of Birth\"]\r\n\r\nconst handleDummy = () => { };\r\n\r\nconst AddCompayContactDialogForm = (props: Props) => {\r\n const { classes = {} } = props;\r\n return (\r\n <>\r\n \r\n
\r\n \r\n \r\n \r\n {\r\n firstName = value.target.value;\r\n props.onContactChange(firstName, lastName);\r\n }}\r\n />\r\n \r\n \r\n {\r\n lastName = value.target.value;\r\n props.onContactChange(firstName, lastName);\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 label={\r\n

\r\n \r\n Main contact for enrollment\r\n \r\n \r\n }\r\n />\r\n

\r\n }\r\n /> \r\n {props.showAuthorizedSignatory &&\r\n }\r\n label={\r\n \r\n By selecting this box, I understand that the Company Admin's Name will be used as the Authorized Employer/Company Representative signee on all member forms for this enrollment.\r\n \r\n }\r\n />}\r\n }\r\n label={\r\n

\r\n Associate company contact with an employee at {props.company.name}\r\n \r\n }\r\n />\r\n

\r\n }\r\n classes={{\r\n root: classes.noRightMargin\r\n }}\r\n /> \r\n {props.showEmployeesTable && !props.disableAssociateContactCheck && props.companyContactAssociateChecked &&\r\n <>\r\n {props.employees.length > 0 ?\r\n
\r\n \r\n
\r\n :\r\n \r\n
\r\n No matching employees were found in the census.
\r\n You can add employees to the census on the dashboard.\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\nconst styles: { [key: string]: CSSProperties } = {\r\n ...commonStyles,\r\n associateContactText: {\r\n color: palette.grey.darkText,\r\n fontSize: '0.875rem',\r\n fontWeight: 400,\r\n lineHeight: '1.46429em'\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n marginLeft: '-6px'\r\n },\r\n link: {\r\n cursor: 'pointer'\r\n },\r\n noAssociateFound: {\r\n height: '40px',\r\n color: palette.grey.text,\r\n fontFamily: 'Roboto',\r\n fontSize: '14px',\r\n letterSpacing: '0.25px',\r\n lineHeight: '20px',\r\n textAlign: 'center',\r\n margin: '20px'\r\n },\r\n noRightMargin: {\r\n marginRight: 0\r\n },\r\n paper: {\r\n marginTop: 8,\r\n padding: '20px 40px'\r\n },\r\n tableParent: {\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: '100%',\r\n borderRadius: 5,\r\n display: 'inline-block',\r\n marginTop: 16,\r\n maxHeight: 450\r\n },\r\n title: {\r\n color: palette.grey.lightText\r\n },\r\n tooltip: {\r\n opacity: 0.6,\r\n height: 16,\r\n width: 16\r\n },\r\n tooltipSpan: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n checkboxDiv: {\r\n marginTop: 8\r\n }\r\n};\r\n\r\n\r\n\r\nexport default compose>>(\r\n reduxForm({ form: FORM_NAME }),\r\n withStyles(styles)\r\n)(AddCompayContactDialogForm);","import withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport withTableRow from '../../components/common/table_row_hoc';\r\nimport { gridRowStyles } from '../../utility/common_styles';\r\nimport { CarrierData } from './enrollment_summary';\r\n\r\ninterface ComponentProps {\r\n content: CarrierData;\r\n viewOnly: boolean;\r\n}\r\n\r\ntype Props = ComponentProps & StyledComponentProps;\r\n\r\nconst EmployeeInvitationRow = (props: Props) => {\r\n const { classes = {}, content } = props;\r\n return (\r\n <>\r\n {content.locName}\r\n {content.carrierName}\r\n {content.numEnrollees}\r\n {content.participationLevel}\r\n \r\n );\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n lessPadding: {\r\n padding: '7px 16px'\r\n }\r\n}\r\n\r\nexport default withTableRow(withStyles(gridRowStyles)(EmployeeInvitationRow));","import Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n name: string;\r\n nameToDelete: string;\r\n infoDeleted: string;\r\n onDone: () => void;\r\n onCancel: () => void;\r\n}\r\ntype Props = ComponentProps;\r\n\r\nconst DeleteDialog = (props: Props) => {\r\n return (\r\n \r\n \r\n \r\n Deleting {props.name} will delete {props.infoDeleted}.\r\n \r\n This cannot be undone.\r\n \r\n \r\n \r\n \r\n Delete {props.nameToDelete}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n confirmDeletion: {\r\n paddingTop: \"20px\"\r\n }\r\n}\r\n\r\nexport default DeleteDialog;","import { Checkbox, Fab, Table, TableBody, TableCell, TableHead, TablePagination, TableRow, TableSortLabel, Tooltip, Typography } from \"@material-ui/core\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Help from '@material-ui/icons/Help';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport EmployeeRow from \"components/employee/employee_row\";\r\nimport CompanyContactAssociateRow from 'components/enrollment/company_contact_associate';\r\nimport CompanyContactRow from 'components/enrollment/company_contact_row';\r\nimport EmployeeInvitationRow from \"containers/employee_invitations/employee_invitation_row\";\r\nimport EmployeeInEligibleRow from \"containers/employee_invitations/employee_ineligible_row\";\r\nimport EnrollmentSummaryRow from \"containers/enrollment_summary/enrollment_summary_row\";\r\nimport memoizeOne from 'memoize-one';\r\nimport React from \"react\";\r\nimport palette from 'utility/palette';\r\nimport { simpleCompare } from \"utility/simple_utils\";\r\nimport DeleteDialog from \"./delete_dialog\";\r\n\r\n\r\ninterface Props {\r\n loading?: boolean;\r\n tableHeaders?: string[];\r\n content: any[];\r\n sortableTableHeaders?: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n tootlTip?: boolean;\r\n toolTipText?: string;\r\n }[];\r\n viewOnly?: boolean;\r\n rowType: string;\r\n showRemarks?: boolean;\r\n hideFabForAdd?: boolean;\r\n hidePaging?: boolean;\r\n companyContactAssociateSelected?: string;\r\n showFooter?: boolean;\r\n hideBlankHeader?: boolean;\r\n fabClick?: () => void;\r\n onDelete: (id: string, name: string) => void;\r\n handleRowClick: (route: string) => void;\r\n handleSelectAll?: (e: any, checked: boolean) => void;\r\n handleCheckClicked?: (e: any, checked: boolean) => void;\r\n handleEmployeeClicked?: (route: string) => void;\r\n displayCorrectError?: JSX.Element;\r\n}\r\n\r\ntype TableHeader = {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n};\r\n\r\ninterface State {\r\n pagination: {\r\n page: number;\r\n size: number;\r\n };\r\n deleteDialogOpen: boolean;\r\n idToDelete?: string;\r\n typeToDelete?: string;\r\n addDialogOpen: boolean;\r\n sortableTableHeaders: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n tootlTip?: boolean;\r\n toolTipText?: string;\r\n }[];\r\n sortedContent: any;\r\n nameToDelete?: string;\r\n}\r\n\r\nclass MaterialTable extends React.PureComponent {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n pagination: {\r\n page: 0,\r\n size: 25\r\n },\r\n deleteDialogOpen: false,\r\n addDialogOpen: false,\r\n sortableTableHeaders: props.sortableTableHeaders || [],\r\n sortedContent: props.content.slice()\r\n }\r\n }\r\n\r\n _sortContent = memoizeOne((content: any[], sortableTableHeaders: TableHeader[]) => {\r\n let sortedContent = content.slice();\r\n const sortedCol = sortableTableHeaders.find(col => col.direction !== false);\r\n if (sortedCol) {\r\n sortedContent.sort(simpleCompare(sortedCol.id, sortedCol.direction === 'desc'));\r\n }\r\n\r\n return sortedContent;\r\n });\r\n get sortedContent() {\r\n return this._sortContent(this.props.content, this.state.sortableTableHeaders);\r\n }\r\n\r\n handleSort = (key: string, content: any) => {\r\n const propTableHeaders = this.props.sortableTableHeaders || [];\r\n this.setState(prevState => {\r\n let headersToSort = prevState.sortableTableHeaders;\r\n if (propTableHeaders.length > prevState.sortableTableHeaders.length) headersToSort = propTableHeaders;\r\n const newtableHeaders = headersToSort.slice();\r\n const newSortedContent = content;\r\n newtableHeaders.forEach(col => {\r\n if (col.id === key) {\r\n if (col.direction === false || col.direction === 'desc') {\r\n col.direction = 'asc';\r\n newSortedContent.sort(simpleCompare(key, false));\r\n } else if (col.direction === 'asc') {\r\n col.direction = 'desc'\r\n newSortedContent.sort(simpleCompare(key, true));\r\n }\r\n } else {\r\n col.direction = false;\r\n }\r\n });\r\n\r\n return {\r\n ...prevState,\r\n tableHeaders: newtableHeaders,\r\n sortedContent: newSortedContent\r\n };\r\n });\r\n };\r\n\r\n handlePageChange = (_event: any, page: number) => {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n pagination: {\r\n ...prevState.pagination,\r\n page\r\n }\r\n }));\r\n }\r\n\r\n handleRowSizeChange = (event: any) => {\r\n const rowsPerPage = event.target.value;\r\n this.setState(prevState => ({\r\n ...prevState,\r\n pagination: {\r\n ...prevState.pagination,\r\n size: rowsPerPage,\r\n page: 0\r\n }\r\n }));\r\n };\r\n\r\n handleDeleteConfirmed = () => {\r\n this.state.idToDelete && this.props.onDelete(this.state.idToDelete, this.state.nameToDelete || '');\r\n this.handleDeleteCancelled();\r\n };\r\n\r\n handleDeleteCancelled = () => {\r\n this.setState({ deleteDialogOpen: false, idToDelete: undefined, nameToDelete: undefined, typeToDelete: undefined });\r\n };\r\n\r\n handleDeleteOpened = (id: string, name: string, type: string) => {\r\n this.setState({ deleteDialogOpen: true, idToDelete: id, nameToDelete: name, typeToDelete: type });\r\n }\r\n\r\n //JCK - We should refactor section below to be passed in through props\r\n generateRow = (rowType: string, content: any, id: number, isReadOnly?: boolean) => {\r\n if (rowType === \"census\") {\r\n return (\r\n { } : this.handleDeleteOpened}\r\n showRemarks={this.props.showRemarks === true}\r\n rowType=\"census\" />\r\n )\r\n } else if (rowType === \"companyContact\") {\r\n return (\r\n \r\n )\r\n } else if (rowType === \"companyContactAssociate\") {\r\n return (\r\n {\r\n this.props.handleRowClick(event.target.value);\r\n }}\r\n />\r\n )\r\n } else if (rowType === 'invitations') {\r\n return (\r\n \r\n )\r\n } else if (rowType === 'ineligible') {\r\n return (\r\n \r\n )\r\n } else if (rowType === 'carrierData') {\r\n return (\r\n \r\n )\r\n }\r\n else return\r\n }\r\n\r\n tooltipTitle = memoizeOne((rowType: string) => {\r\n if (rowType === \"companyContact\") return 'Add New Company Admin';\r\n else if (rowType === \"census\") return 'Add New Employee';\r\n else return '';\r\n });\r\n\r\n render() {\r\n const { nameToDelete, pagination } = this.state;\r\n const { page, size } = pagination;\r\n const sortableTableHeaders = this.props.sortableTableHeaders || this.state.sortableTableHeaders;\r\n let deleteInfo = [\"\", \"\"];\r\n const contents = this.sortedContent;\r\n const { viewOnly = false } = this.props\r\n //JCK - We should refactor the delete info to be passed in through props\r\n if (this.state.typeToDelete) {\r\n if (this.state.typeToDelete === \"census\") {\r\n deleteInfo = [\"Employee\", \"employee info and benefit elections\"]\r\n } else if (this.state.typeToDelete === \"companyContact\") {\r\n deleteInfo = [\"Company Admin\", \"the user's information including their user account, if they have already registered\"]\r\n }\r\n }\r\n\r\n const tooltipTitle = this.tooltipTitle(this.props.rowType);\r\n const tableHeaders = this.props.tableHeaders || [];\r\n const noDataFooter = Boolean(this.props.showFooter && contents.length === 0);\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n {!this.props.hideBlankHeader &&\r\n \r\n {!viewOnly && !this.props.hideFabForAdd &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n\r\n {this.state.sortableTableHeaders.length > 0 ?\r\n sortableTableHeaders.map(header => {\r\n return header.id === 'selectall' ?\r\n \r\n \r\n \r\n : this.handleSort(header.id, contents)} sortDirection={header.direction}>\r\n {header.tootlTip === true ?\r\n <>\r\n }\r\n />\r\n\r\n \r\n {header.label}\r\n \r\n\r\n \r\n :\r\n \r\n {header.label}\r\n \r\n }\r\n \r\n })\r\n :\r\n this.props.tableHeaders ? this.props.tableHeaders.map(header => ({header})) : \r\n }\r\n {this.props.hideBlankHeader && }\r\n \r\n \r\n \r\n {contents.slice(page * size, page * size + size).map((content: any, id: number) => {\r\n return this.generateRow(this.props.rowType, content, id, viewOnly);\r\n }\r\n )}\r\n {noDataFooter &&\r\n <>\r\n { 0 ? this.state.sortableTableHeaders.length + 1 : tableHeaders.length + 1} align='center'>\r\n {this.props.displayCorrectError ? this.props.displayCorrectError : No Data Available}\r\n }\r\n \r\n }\r\n \r\n
\r\n {!this.props.hidePaging &&\r\n \r\n }\r\n
\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n blackFill: {\r\n fill: 'black'\r\n },\r\n noBorder: {\r\n border: 'none',\r\n paddingTop: 20\r\n },\r\n noData: {\r\n border: 'none',\r\n paddingTop: 15\r\n },\r\n buttonCell: {\r\n width: 16,\r\n paddingTop: 12,\r\n paddingBottom: 12,\r\n paddingRight: 12,\r\n paddingLeft: 17\r\n },\r\n cell: {\r\n whiteSpace: 'nowrap'\r\n },\r\n centerText: {\r\n textAlign: 'center'\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n verticalAlign: 'middle'\r\n },\r\n overflow: {\r\n overflowX: 'auto'\r\n },\r\n warning: {\r\n fontSize: 14,\r\n marginBottom: -2,\r\n color: palette.orange.primary\r\n },\r\n}\r\n\r\nexport default MaterialTable;","import * as React from \"react\";\r\nimport palette from '../../utility/palette';\r\nimport { Grid, Typography, Button, createStyles, WithStyles, withStyles } from \"@material-ui/core\";\r\n\r\ninterface ComponentProps {\r\n title: string\r\n primaryActionText?: string\r\n primaryActionEnabled?: boolean\r\n handlePrimaryAction?: () => void\r\n primaryActionIcon?: React.ReactNode\r\n secondaryActions?: React.ReactNode\r\n counts?: {amount: number | string, type: string}[]\r\n displaySearchBar?: JSX.Element\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles\r\n\r\nconst TableHeader = (props: Props) => {\r\n const { \r\n classes, \r\n title,\r\n counts,\r\n primaryActionText, \r\n primaryActionEnabled = false, \r\n handlePrimaryAction, \r\n primaryActionIcon,\r\n secondaryActions,\r\n displaySearchBar\r\n } = props;\r\n return
\r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n\r\n \r\n {counts ? \r\n {counts.map((count, idx) => \r\n {count.amount} {count.type}{counts.length > 0 && idx !== (counts.length-1) ? ', ' : undefined}\r\n )}\r\n : undefined}\r\n \r\n \r\n {displaySearchBar ? displaySearchBar : undefined}\r\n \r\n \r\n \r\n {\r\n primaryActionText !== undefined ? \r\n \r\n {primaryActionIcon ? <>{primaryActionIcon}  : undefined}{primaryActionText}\r\n : \r\n undefined\r\n }\r\n \r\n {secondaryActions ? secondaryActions : undefined}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n}\r\n\r\nconst styles = createStyles({\r\n buttonGroup: {\r\n textAlign: 'right'\r\n },\r\n addNewBtn: {\r\n marginBottom: 32\r\n },\r\n header: {\r\n fontFamily: 'Roboto',\r\n fontSize: 20,\r\n fontWeight: 500\r\n },\r\n subheader: {\r\n color: palette.grey.text,\r\n },\r\n optionButton: {\r\n paddingLeft: 16\r\n },\r\n count: {\r\n color: palette.grey.black,\r\n fontSize: '1.25rem'\r\n },\r\n headerDiv: {\r\n paddingTop: 16,\r\n paddingBottom: 16,\r\n paddingRight: 16,\r\n paddingLeft: 16\r\n }\r\n})\r\n\r\nexport default withStyles(styles)(TableHeader);","import { LinearProgress, Typography } from '@material-ui/core';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport withStyles, { CSSProperties, WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport MaterialTable from 'components/common/table';\r\nimport TableHeader from 'components/common/table_header';\r\nimport AddCompayContactDialogForm, { FormData } from 'components/forms/add_compay_contact_dialog_form';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router';\r\nimport { compose } from 'redux';\r\nimport { addCompanyContact, deleteCompanyContact } from 'redux/actions';\r\nimport { Company, CompanyContact, Employee, EnrollmentReducerState } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport { isUserReadOnly, Zones } from 'utility';\r\nimport auth from 'utility/auth';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n enrollmentId: string;\r\n missingAuthorizedSignatory: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n contacts: CompanyContact[];\r\n company: Company;\r\n employees: Employee[];\r\n enrollmentState: EnrollmentReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n deleteCompanyContact: (id: string, name: string) => Promise;\r\n addCompanyContact: (companyContact: CompanyContact) => Promise;\r\n}\r\n\r\ninterface Props extends MappedProps, DispatchProps, ComponentProps, WithStyles { }\r\n\r\ninterface State {\r\n loading: boolean;\r\n addDialogOpen: boolean;\r\n showEmployeesTable: boolean;\r\n isMainContact: boolean;\r\n isMainContactFound: boolean;\r\n disableAssociateContactCheck: boolean;\r\n filteredEmployess: Employee[];\r\n companyContactAssociateSelected?: string;\r\n companyContactAssociateChecked: boolean;\r\n authorizedSignatoryChecked: boolean;\r\n goToDashboard: boolean;\r\n}\r\n\r\nclass CompanyContactContainer extends React.PureComponent{\r\n isUserEmployer = false;\r\n tableHeaders: string[] = [];\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n addDialogOpen: false,\r\n showEmployeesTable: false,\r\n isMainContact: false,\r\n isMainContactFound: props.contacts.findIndex(c => c.isMainContact === true) > -1 ? true : false,\r\n disableAssociateContactCheck: true,\r\n filteredEmployess: [],\r\n goToDashboard: false,\r\n companyContactAssociateChecked: false,\r\n authorizedSignatoryChecked: false\r\n };\r\n \r\n this.isUserEmployer = auth.isUserEmployer();\r\n this.tableHeaders = [\"Name\", \"Contact Phone Number\", \"Email\", \"Invite Status\"];\r\n if (!this.isUserEmployer)\r\n this.tableHeaders.push(\"\");\r\n }\r\n\r\n handleCompanyContactDelete = (id: string) => {\r\n this.setState({ addDialogOpen: false });\r\n this.loadingOn();\r\n let contact = this.props.contacts.find(c => c.id === id);\r\n let name = contact!.fullName || \"Company Contact\";\r\n this.props.deleteCompanyContact(id, name).then(this.loadingOff, this.loadingOff);\r\n };\r\n\r\n handleCompanyContactAdd = (formValues: FormData) => {\r\n this.loadingOn();\r\n try {\r\n const contact: CompanyContact = {\r\n firstName: formValues.firstName,\r\n lastName: formValues.lastName,\r\n email: formValues.email,\r\n phone: formValues.phone,\r\n title: formValues.title,\r\n id: '',\r\n employeeId: formValues.employeeId,\r\n isMainContact: this.state.isMainContact,\r\n isAuthorizedSignatory: this.state.authorizedSignatoryChecked,\r\n invitationStatusId: getLookupId(\"INVITED\", LOOKUP_TYPE_IDS.invitationStatus)\r\n };\r\n this.props.addCompanyContact(contact).then(this.loadingOff, this.loadingOff);\r\n }\r\n catch{\r\n this.loadingOff();\r\n }\r\n };\r\n\r\n handleDelete = (id: string) => {\r\n this.handleCompanyContactDelete(id);\r\n };\r\n\r\n handleAddClicked = () => {\r\n this.setState({ addDialogOpen: true, showEmployeesTable: false, companyContactAssociateSelected: undefined });\r\n };\r\n\r\n handleAddCancel = () => {\r\n this.setState({ addDialogOpen: false, authorizedSignatoryChecked: false, companyContactAssociateChecked: false, companyContactAssociateSelected: undefined, disableAssociateContactCheck: true });\r\n };\r\n\r\n handleSubmit = (values: FormData) => {\r\n values.employeeId = this.state.companyContactAssociateChecked ? this.state.companyContactAssociateSelected : undefined;\r\n this.handleCompanyContactAdd(values);\r\n this.handleAddCancel();\r\n }\r\n\r\n handleRowClick = () => { }\r\n\r\n handleAssociateCheck = (input: any, value: any) => {\r\n this.setState({ showEmployeesTable: value });\r\n this.setState({ companyContactAssociateChecked: value, companyContactAssociateSelected: !value || this.state.filteredEmployess.length === 0 ? undefined : this.state.filteredEmployess[0].id });\r\n }\r\n\r\n handleAuthorizedSignatoryCheck = (input: any, value: any) => {\r\n this.setState({ authorizedSignatoryChecked: value });\r\n }\r\n\r\n handleAddCompanyContactChange = (firstName: string, lastName: string) => {\r\n const disabled = firstName === undefined || firstName.trim() === '' || lastName === undefined || lastName.trim() === '';\r\n const emplys = !disabled ? this.props.employees.filter(e => (e.firstName && e.firstName.toUpperCase() === firstName.trim().toUpperCase()) && (e.lastName && e.lastName.toUpperCase() === lastName.trim().toUpperCase())) : [];\r\n const filtered = this.filterEmployessAlreadyAssociated(emplys, this.props.contacts);\r\n const checked = disabled ? false : this.state.companyContactAssociateChecked;\r\n this.setState({ disableAssociateContactCheck: disabled, companyContactAssociateChecked: checked, filteredEmployess: filtered, companyContactAssociateSelected: filtered.length > 0 ? emplys[0].id : undefined })\r\n }\r\n\r\n filterEmployessAlreadyAssociated = memoizeOne((employees: Employee[], contacts: CompanyContact[]) => {\r\n const associatedContacts = contacts.filter(c => c.employeeId !== undefined).map(c => c.employeeId);\r\n const employs = employees.filter(e => !associatedContacts.includes(e.id));\r\n return employs;\r\n });\r\n\r\n handleoAssociateContactRadioClicked = (id: string) => { this.setState({ companyContactAssociateSelected: id }) };\r\n\r\n handleMainContactClicked = (input: any, value: any) => { this.setState({ isMainContact: value })};\r\n\r\n goToDashboard = () => {\r\n this.setState({ goToDashboard: true });\r\n }\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n render() {\r\n const { contacts, classes = {}, enrollmentState } = this.props;\r\n const { loading } = this.state;\r\n const isForbidden = isUserReadOnly(enrollmentState, Zones.CompanyAddContact);\r\n if (this.state.goToDashboard) {\r\n return (\r\n \r\n )\r\n } else {\r\n return (\r\n <>\r\n Company Admins\r\n
\r\n These are people who represent the company and its employees.\r\n Once invited, they will be able to access the dashboard and sign necessary enrollment documents.\r\n
\r\n \r\n }\r\n primaryActionText=\"Add Admin\"\r\n primaryActionEnabled={!isForbidden}\r\n handlePrimaryAction={this.handleAddClicked}\r\n counts={[\r\n { amount: contacts.length, type: contacts.length === 1 ? 'Person' : 'People' }\r\n ]}\r\n />\r\n {loading && }\r\n \r\n \r\n {this.state.addDialogOpen &&\r\n \r\n }\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n contacts: state.enrollment.companyContacts,\r\n company: state.enrollment.company,\r\n employees: state.employee.list,\r\n enrollmentState: state.enrollment\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n addCompanyContact: (companyContact) => dispatch(addCompanyContact(ownProps.companyId, ownProps.enrollmentId, companyContact)),\r\n deleteCompanyContact: (id, name) => dispatch(deleteCompanyContact(ownProps.companyId, ownProps.enrollmentId, id, name))\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n paper: {\r\n margin: '15px 0',\r\n padding: 20\r\n },\r\n text: {\r\n color: palette.grey.text\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n tableHeader: {\r\n fontFamily: 'Roboto',\r\n fontSize: 20,\r\n fontWeight: 500,\r\n },\r\n subheader: {\r\n fontSize: 14,\r\n marginBottom: 25\r\n },\r\n tableSubheader: {\r\n fontSize: 14,\r\n marginTop: 5\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n }\r\n};\r\n\r\nexport default compose(\r\n withStyles(styles),\r\n connect(mapStateToProps, mapDispatchToProps)\r\n)(CompanyContactContainer) as React.ComponentType;","import CompanyOverviewForm, { FormData } from 'components/forms/company_overview_form';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { updateCompanyInfo } from 'redux/actions';\r\nimport { EnrollmentDTO, EnrollmentReducerState } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\n\r\ninterface ComponentProps { }\r\n\r\ninterface MappedProps {\r\n enrollmentState: EnrollmentReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n updateCompanyInfo: (enrollment: EnrollmentDTO) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps & DispatchProps\r\n\r\nconst CompanyOverview = React.memo((props: Props) => {\r\n const { enrollmentState, updateCompanyInfo } = props;\r\n const { company, groupSize } = enrollmentState\r\n const isSubmitted = enrollmentState.submissionDate ? true : false;\r\n\r\n const initialValues = React.useMemo((): FormData => {\r\n return {\r\n reduceValidation: enrollmentState.reduceValidation,\r\n name: company.name,\r\n payrollCycleId: company.payrollCycleId || getLookupId('BIWEEKLY', LOOKUP_TYPE_IDS.payrollCycle),\r\n ein: company.ein,\r\n contactInformation: company.contactInformation[0],\r\n groupSize: groupSize && groupSize.toLowerCase(),\r\n applyPayPeriod: false\r\n };\r\n }, [company, groupSize]);\r\n\r\n const handleSubmit = React.useCallback(async (formValues: FormData) => {\r\n const { groupSize, name, ein, payrollCycleId, contactInformation, applyPayPeriod } = formValues;\r\n\r\n const enrollmentPayload: EnrollmentDTO = {\r\n ...enrollmentState,\r\n startDate: enrollmentState.startDate && enrollmentState.startDate.format(),\r\n endDate: enrollmentState.endDate && enrollmentState.endDate.format(),\r\n effectiveDate: enrollmentState.effectiveDate ? enrollmentState.effectiveDate : undefined,\r\n setupCompletedOn: enrollmentState.setupCompletedOn && enrollmentState.setupCompletedOn.utc().format(),\r\n submissionDate: enrollmentState.submissionDate && enrollmentState.submissionDate.utc().format()\r\n };\r\n\r\n enrollmentPayload.groupSize = groupSize;\r\n enrollmentPayload.company = {\r\n ...enrollmentPayload.company,\r\n name,\r\n ein,\r\n payrollCycleId,\r\n contactInformation: contactInformation ? [contactInformation] : [],\r\n applyPayPeriod\r\n };\r\n\r\n await updateCompanyInfo(enrollmentPayload)\r\n }, [enrollmentState, updateCompanyInfo]);\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n enrollmentState: state.enrollment\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n updateCompanyInfo: enrollment => dispatch(updateCompanyInfo(enrollment))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CompanyOverview);","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport CompanySettingsForm, { FormData } from 'components/forms/company_settings_form';\r\nimport { updateEnrollment } from 'redux/actions';\r\nimport { EnrollmentDTO, EnrollmentReducerState } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\n\r\ninterface MappedProps {\r\n enrollmentState: EnrollmentReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n updateEnrollment: (enrollment: EnrollmentDTO) => Promise;\r\n}\r\n\r\ninterface Props extends MappedProps, DispatchProps { }\r\n\r\nconst CompanySettings = React.memo((props: Props) => {\r\n const { enrollmentState, updateEnrollment } = props;\r\n const viewEmployeeCost = enrollmentState.company.settings.viewEmployeeCost;\r\n const viewEmployerCost = enrollmentState.company.settings.viewEmployerCost;\r\n const isSubmitted = enrollmentState.submissionDate ? true : false;\r\n\r\n const initialValues = React.useMemo((): FormData => {\r\n return {\r\n viewEmployeeCost,\r\n viewEmployerCost\r\n };\r\n }, [viewEmployeeCost, viewEmployerCost]);\r\n\r\n const handleSubmit = React.useCallback(async (formValues: FormData) => {\r\n const { viewEmployeeCost, viewEmployerCost } = formValues;\r\n const enrollmentPayload: EnrollmentDTO = {\r\n ...enrollmentState,\r\n effectiveDate: enrollmentState.effectiveDate ? enrollmentState.effectiveDate : undefined,\r\n startDate: enrollmentState.startDate && enrollmentState.startDate.format(),\r\n endDate: enrollmentState.endDate && enrollmentState.endDate.format(),\r\n setupCompletedOn: enrollmentState.setupCompletedOn && enrollmentState.setupCompletedOn.utc().format(),\r\n submissionDate: enrollmentState.submissionDate && enrollmentState.submissionDate.utc().format(),\r\n\r\n };\r\n enrollmentPayload.company = {\r\n ...enrollmentPayload.company,\r\n settings: {\r\n viewEmployeeCost,\r\n viewEmployerCost,\r\n id: enrollmentState.company.id\r\n }\r\n };\r\n await updateEnrollment(enrollmentPayload)\r\n }, [enrollmentState, updateEnrollment]);\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n enrollmentState: state.enrollment\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n updateEnrollment: enrollment => dispatch(updateEnrollment(enrollment))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CompanySettings);","import CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport BasePage from 'components/common/base_page';\r\nimport Breadcrumb from 'components/common/breadcrumb';\r\nimport LeftNav, { TabOption } from 'components/common/left_nav';\r\nimport Title from 'components/common/title';\r\nimport { FORM_NAME as CLASS_UPSERT_FORM_NAME } from 'components/forms/class_upsert_form';\r\nimport { FORM_NAME as COMPANY_OVERVIEW_FORM_NAME } from 'components/forms/company_overview_form';\r\nimport { FORM_NAME as COMAPNY_SETTINGS_FORM_NAME } from 'components/forms/company_settings_form';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { fetchCompanyContacts, fetchEmployees, fetchEnrollment, fetchEnrollmentClasses, fetchPlans } from 'redux/actions';\r\nimport { EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentReducerState, EnrollmentReducerStatePropType, PlanReducerState, PlanReducerStatePropType } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport { missingAuthorizedSignatory,missingAdobeSignatory, styles as commonStyles } from 'utility';\r\nimport ClassUpsert from './class_upsert';\r\nimport CompanyContactContainer from './company_contact';\r\nimport CompanyOverview from './company_overview';\r\nimport CompanySettings from './company_settings';\r\n\r\ninterface ComponentProps extends RouteComponentProps { }\r\n\r\ninterface MappedProps {\r\n enrollmentState: EnrollmentReducerState;\r\n employeeState: EmployeeReducerState;\r\n planState: PlanReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n fetchEnrollmentClasses: (companyId: string, enrollmentId: string) => Promise;\r\n fetchEmployees: (companyId: string, enrollmentId: string) => Promise;\r\n fetchCompanyContacts: (companyId: string, enrollmentId: string) => Promise;\r\n fetchPlans: (companyId: string, enrollmentId: string) => Promise;\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps, DispatchProps { }\r\n\r\nconst CompanyInfo = React.memo((props: Props) => {\r\n const { planState, enrollmentState, employeeState, fetchEnrollmentClasses, fetchPlans, fetchEmployees, fetchEnrollment, fetchCompanyContacts } = props;\r\n const [currentTab, setTab] = React.useState(Number(props.match.params['tab']) || 0);\r\n const [cachedTab, setCachedTab] = React.useState(currentTab);\r\n const [checkForm, setCheckForm] = React.useState(false);\r\n const [loading, setLoading] = React.useState(false);\r\n const tabTitles = {\r\n companyOverviewTitle: 'Company Overview',\r\n employeeClassesTitle: 'Employee Classes',\r\n companyAdminTitle: 'Company Admins',\r\n enrollmentSettingTitle: 'Enrollment Settings'\r\n };\r\n\r\n const companyId = React.useMemo(() => {\r\n return props.match.params[routes.planSetup.params!.companyId!.replace(':', '')] as string;\r\n }, [props.match]);\r\n\r\n const enrollmentId = React.useMemo(() => {\r\n return props.match.params[routes.planSetup.params!.enrollmentId!.replace(':', '')] as string;\r\n }, [props.match]);\r\n\r\n const breadCrumbs = React.useMemo(() => ['Dashboard', 'Company Info'], []);\r\n\r\n const isTabValid = (tabTitle: string) => {\r\n if (tabTitle === tabTitles.companyOverviewTitle) {\r\n const showEinWarning = props.enrollmentState.company.ein === null\r\n || props.enrollmentState.company.ein === undefined\r\n || props.enrollmentState.company.ein.length === 0;\r\n return showEinWarning;\r\n }\r\n return false;\r\n }\r\n\r\n const isMissingAuthEmployer = missingAuthorizedSignatory(props.planState.configurationTypeSet, enrollmentState);\r\n const isMissingAdobeSignatory = missingAdobeSignatory(props.planState.configurationTypeSet, enrollmentState);\r\n const isMissingEmployer = isMissingAdobeSignatory || isMissingAuthEmployer;\r\n\r\n const tabs = React.useMemo((): TabOption[] => [\r\n { title: tabTitles.companyOverviewTitle, error: isTabValid(tabTitles.companyOverviewTitle), formName: COMPANY_OVERVIEW_FORM_NAME },\r\n { title: tabTitles.employeeClassesTitle, formName: CLASS_UPSERT_FORM_NAME },\r\n { title: tabTitles.companyAdminTitle, warning: isMissingEmployer },\r\n { title: tabTitles.enrollmentSettingTitle, formName: COMAPNY_SETTINGS_FORM_NAME }\r\n ], [props.enrollmentState.company.ein, props.enrollmentState.companyContacts, props.planState.configurationTypeSet]);\r\n\r\n React.useEffect(() => {\r\n setLoading(true);\r\n const promises: Promise[] = [];\r\n if (!enrollmentState.id) {\r\n promises.push(fetchEnrollment(enrollmentId));\r\n }\r\n\r\n // for defect 193778. Previously, this would check to see if enrollmentclasses had been loaded before doing fetch. But multiple add, changes, deletes would\r\n // get this confused. Safest is to go ahead with the fetch. It ensures the correct data\r\n promises.push(fetchEnrollmentClasses(companyId, enrollmentId));\r\n\r\n if (employeeState.list.length === 0) {\r\n promises.push(fetchEmployees(companyId, enrollmentId));\r\n }\r\n\r\n if (enrollmentState.companyContacts.length === 0) {\r\n promises.push(fetchCompanyContacts(companyId, enrollmentId));\r\n }\r\n\r\n if (planState.list.length === 0) {\r\n promises.push(fetchPlans(companyId, enrollmentId));\r\n }\r\n\r\n Promise.all(promises).then(() => setLoading(false), () => setLoading(false));\r\n }, [employeeState.list.length, enrollmentState.companyContacts.length, enrollmentState.enrollmentClasses.length, enrollmentState.id, fetchCompanyContacts, fetchEmployees, fetchEnrollment, fetchEnrollmentClasses, companyId, enrollmentId]);\r\n\r\n const handleBreadbrumb = React.useCallback((index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, companyId).replace(params!.enrollmentId!, enrollmentId);\r\n props.history.push(route);\r\n }\r\n }, [props.history, companyId, enrollmentId]);\r\n\r\n const handleMenuChange = React.useCallback((index: number) => {\r\n setCachedTab(index);\r\n setCheckForm(true);\r\n }, []);\r\n\r\n const handleAbandonChangesCancel = React.useCallback(() => {\r\n setCheckForm(false);\r\n }, []);\r\n\r\n const handleAbandonChangesContinue = React.useCallback(() => {\r\n setCheckForm(false);\r\n setTab(cachedTab);\r\n }, [cachedTab]);\r\n\r\n\r\n\r\n return (\r\n \r\n {loading ?\r\n
\r\n

Loading your information

\r\n \r\n
\r\n :\r\n <>\r\n {props.enrollmentState.company.name}
\r\n \r\n \r\n \r\n \r\n {currentTab === 2 && isMissingEmployer &&\r\n \r\n \r\n \r\n You are required to add a company admin's first name and last name to this list whose signature will appear on the \r\n {isMissingAuthEmployer && !isMissingAdobeSignatory && <> \r\n  Employee Election Forms\r\n }\r\n {!isMissingAuthEmployer && isMissingAdobeSignatory && <> \r\n  Digital Signature Forms\r\n }\r\n {isMissingAuthEmployer && isMissingAdobeSignatory && <> \r\n  Employee Election Forms and Digital Signature Forms\r\n }\r\n\r\n \r\n \r\n }\r\n \r\n \r\n {currentTab === 0 && }\r\n {currentTab === 1 && }\r\n {currentTab === 2 && }\r\n {currentTab === 3 && }\r\n \r\n \r\n \r\n }\r\n
\r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n loading: {\r\n textAlign: 'center'\r\n },\r\n rightCol: {\r\n paddingLeft: 34\r\n }\r\n};\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (CompanyInfo as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n employeeState: EmployeeReducerStatePropType,\r\n planState: PlanReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n enrollmentState: state.enrollment,\r\n employeeState: state.employee,\r\n planState: state.plan\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchEnrollment: enrollmentId => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchEnrollmentClasses: (companyId, enrollmentId) => dispatch(fetchEnrollmentClasses(companyId, enrollmentId)),\r\n fetchEmployees: (companyId, enrollmentId) => dispatch(fetchEmployees(companyId, enrollmentId)),\r\n fetchCompanyContacts: (companyId, enrollmentId) => dispatch(fetchCompanyContacts(companyId, enrollmentId)),\r\n fetchPlans: (companyId, enrollmentId) => dispatch(fetchPlans(companyId, enrollmentId))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CompanyInfo);","import { createStyles, Tooltip, withStyles, WithStyles } from '@material-ui/core';\r\nimport ElectionStatus from 'components/common/election_status';\r\nimport React from 'react';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\n\r\n\r\ninterface ComponentProps {\r\n notStarted: number\r\n inProgress: number\r\n completed: number\r\n daysRemaining: number\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles\r\n\r\nconst styles = () => createStyles({\r\n numberDiv: {\r\n display: 'inline-block',\r\n textAlign: 'center',\r\n fontSize: 14,\r\n margin: '0 5px',\r\n padding: '0 10px',\r\n borderRight: 1,\r\n borderRightStyle: 'solid',\r\n borderRightColor: palette.grey.border,\r\n '&:last-child': {\r\n borderRight: 0,\r\n paddingRight: 0,\r\n marginRight: 0\r\n }\r\n },\r\n numberText: {\r\n fontSize: 24,\r\n fontWeight: 'bold',\r\n color: 'black'\r\n }\r\n});\r\n\r\nexport const EnrollmentStatusCounts = withStyles(styles)(React.memo((props: Props) => {\r\n return (\r\n \r\n
\r\n
\r\n
{props.notStarted}
\r\n \r\n
\r\n
\r\n
{props.inProgress}
\r\n \r\n
\r\n
\r\n
{props.completed}
\r\n \r\n
\r\n
\r\n
{props.daysRemaining}
\r\n \r\n
\r\n
\r\n
\r\n );\r\n}));","import { CircularProgress, Grid, Hidden, Paper, Typography } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport BasePage from 'components/common/base_page';\r\nimport Breadcrumb from 'components/common/breadcrumb';\r\nimport MaterialTable from 'components/common/table';\r\nimport TableHeader from 'components/common/table_header';\r\nimport Title from 'components/common/title';\r\nimport { EnrollmentStatusCounts } from 'components/enrollment/enrollment_status_counts';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Cell, Pie, PieChart } from 'recharts';\r\nimport { fetchEmployees, fetchEnrollment, fetchPlans } from 'redux/actions';\r\nimport { Employee, Plan } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport { getStatusCounts } from 'utility/employee_utils';\r\nimport { getDaysRemaining } from 'utility/enrollment_utility';\r\nimport { availableLOCs } from 'utility/loc_utils';\r\nimport { getLookupId, getLookups, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\n\r\ninterface ComponentProps extends RouteComponentProps { }\r\n\r\ninterface MappedProps {\r\n companyName?: string;\r\n employees: Employee[];\r\n plans: Plan[];\r\n daysRemaining: number;\r\n}\r\n\r\ninterface DispatchProps {\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n fetchEmployees: (companyId: string, enrollmentId: string) => Promise;\r\n fetchPlans: (companyId: string, enrollmentId: string) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps & DispatchProps & WithStyles;\r\n\r\nexport interface CarrierData {\r\n locName: string;\r\n carrierName: string;\r\n numEnrollees: number;\r\n participationLevel: string;\r\n}\r\n\r\nconst EnrollmentSummary = React.memo((props: Props) => {\r\n const { classes = {}, companyName, employees, plans, history, match, fetchEnrollment, fetchEmployees, fetchPlans } = props;\r\n\r\n // Route Params\r\n const companyId = React.useMemo(() => match.params[routes.planSetup.params!.companyId!.replace(':', '')], [match]);\r\n const enrollmentId = React.useMemo(() => match.params[routes.planSetup.params!.enrollmentId!.replace(':', '')], [match]);\r\n // -----------\r\n\r\n // Local State\r\n const [loading, setLoading] = React.useState(false);\r\n const [payrollLoading, setPayrollLoading] = React.useState(false);\r\n // -----------\r\n\r\n // On Mount/Dismount\r\n React.useEffect(() => {\r\n const promises: Promise[] = [];\r\n\r\n if (!companyName) {\r\n promises.push(fetchEnrollment(enrollmentId));\r\n }\r\n\r\n if (employees.length === 0) {\r\n promises.push(fetchEmployees(companyId, enrollmentId));\r\n }\r\n\r\n promises.push(fetchPlans(companyId, enrollmentId));\r\n\r\n setLoading(true);\r\n Promise.all(promises).then(() => setLoading(false), () => setLoading(false));\r\n }, [companyId, enrollmentId, companyName, employees.length, fetchEmployees, fetchEnrollment, fetchPlans]);\r\n // -----------\r\n\r\n // Breadcrumb\r\n const breadcrumbs = React.useMemo(() => ['Dashboard', 'Enrollment Summary'], []);\r\n const handleBreadcrumbClicked = React.useCallback((index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, companyId).replace(params!.enrollmentId!, enrollmentId);\r\n history.push(route);\r\n }\r\n }, [history, companyId, enrollmentId]);\r\n // -----------\r\n\r\n // Employee Election Status Counts \r\n const { completed, submitted, inProgress, notStarted } = getStatusCounts(employees);\r\n\r\n // -----------\r\n\r\n // LOC Graph Data\r\n const graphData = React.useMemo(() => {\r\n type LOCData = { locName: string; inEligible: number; waived: number; notStarted: number; plans: { [planName: string]: number }; pieData: { name: string; value: number; color: string; }[] };\r\n const lookups = getLookups();\r\n const locs = availableLOCs(plans);\r\n const data: LOCData[] = [];\r\n\r\n locs.forEach(locId => {\r\n const locName = lookups[locId].value;\r\n const locData: LOCData = { locName, inEligible: 0, waived: 0, notStarted: 0, plans: {}, pieData: [] };\r\n\r\n plans.filter(p => p.lineOfCoverageId === locId).forEach(p => { locData.plans[p.planDisplayName] = 0 });\r\n\r\n employees.forEach(emp => {\r\n const locElection = emp.elections.find(el => el.lineOfCoverageId === locId);\r\n\r\n if (emp.isInEligible) {\r\n locData.inEligible++;\r\n }\r\n else if (locElection) {\r\n if (locElection.isWaived)\r\n locData.waived++;\r\n else {\r\n const plan = plans.find(p => p.id === locElection.planId);\r\n if (plan) {\r\n locData.plans[plan.planDisplayName]++;\r\n }\r\n else\r\n locData.plans.Unknown = locData.plans.Unknown ? locData.plans.Unknown + 1 : 1;\r\n }\r\n }\r\n else\r\n locData.notStarted++;\r\n });\r\n\r\n const barColors = [palette.green.light, palette.blue.lighter, palette.red.light, palette.blue.link, palette.blue.light];\r\n const pieSegments = Object.entries(locData.plans).map((entry, index) => ({ name: entry[0], value: entry[1], color: barColors[index % 5] }));\r\n pieSegments.push({ name: 'inEligible', value: locData.inEligible, color: palette.grey.black });\r\n pieSegments.push({ name: 'Waived', value: locData.waived, color: palette.grey.black });\r\n pieSegments.push({ name: 'Not Started', value: locData.notStarted, color: palette.orange.primary });\r\n locData.pieData = pieSegments.filter(entry => entry.value > 0);\r\n\r\n data.push(locData);\r\n });\r\n\r\n return data;\r\n }, [plans, employees]);\r\n // -----------\r\n\r\n // Carrier Table Data\r\n const totalEmployees = employees.length;\r\n // const classes = commonClasses(props);\r\n const colorBlock = (color: string) => {\r\n return \r\n }\r\n const completedEmployees = React.useMemo(\r\n () => employees.filter(\r\n e => [getLookupId('COMPLETED', LOOKUP_TYPE_IDS.electionStatus), getLookupId('SUBMITTED', LOOKUP_TYPE_IDS.electionStatus)].includes(e.electionStatusId)\r\n ).length\r\n , [employees]);\r\n\r\n const locCarrierTableData = React.useMemo(() => {\r\n type LocCarrierTableData = {\r\n locId: number;\r\n locName: string;\r\n locOrder: number;\r\n carrierName: string;\r\n numEnrollees: number;\r\n participationLevel: string;\r\n }[];\r\n\r\n const lookups = getLookups();\r\n const tableData: LocCarrierTableData = [];\r\n\r\n plans.forEach(plan => {\r\n const locId = plan.lineOfCoverageId;\r\n const locName = lookups[locId].value;\r\n const locOrder = lookups[locId].order;\r\n const carrierName = plan.carrierName;\r\n\r\n const dataIndex = tableData.findIndex(d => d.locId === locId && d.carrierName === carrierName);\r\n if (dataIndex === -1) {\r\n tableData.push({\r\n locId,\r\n locName,\r\n locOrder,\r\n carrierName,\r\n numEnrollees: 0,\r\n participationLevel: ''\r\n });\r\n }\r\n });\r\n\r\n employees.forEach(emp => emp.elections.filter(el => !el.isWaived).forEach(el => {\r\n const locId = el.lineOfCoverageId;\r\n const planId = el.planId;\r\n const plan = plans.find(plan => plan.id === planId);\r\n const carrierName = plan ? plan.carrierName : undefined;\r\n\r\n const curTableData = tableData.find(d => d.locId === locId && d.carrierName === carrierName);\r\n curTableData && curTableData.numEnrollees++;\r\n }));\r\n\r\n\r\n return tableData\r\n .map(dataRow => {\r\n const percentage = ((dataRow.numEnrollees / totalEmployees) * 100).toFixed();\r\n return {\r\n ...dataRow,\r\n participationLevel: `${percentage}%`\r\n }\r\n })\r\n .sort(function (a, b) {\r\n return a.locOrder - b.locOrder || (a.carrierName === b.carrierName ? 0 : a.carrierName < b.carrierName ? -1 : 1);\r\n });\r\n\r\n }, [employees, plans]);\r\n const sortableTableHeaders: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n tootlTip?: boolean;\r\n toolTipText?: string;\r\n }[] = [\r\n { id: 'locId', direction: \"asc\", label: 'Line Of Coverage' },\r\n { id: 'carrierName', direction: false, label: 'Carrier' },\r\n { id: 'numEnrollees', direction: false, label: 'Employees Enrolled' },\r\n { id: 'participationLevel', direction: false, label: 'Participation Level', tootlTip: true, toolTipText: 'Participation is based on the number of employees in the census. Valid waiver reasons are not taken into account when calculating the Participation Level.' }\r\n ]\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n {companyName}
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {loading ?\r\n
\r\n

Loading your information

\r\n \r\n
\r\n :\r\n
\r\n \r\n
\r\n Enrollment by Line of Coverage\r\n
\r\n \r\n {graphData.map((locData, index) => (\r\n \r\n
\r\n {locData.locName} Plans\r\n {/* */}\r\n \r\n \r\n \r\n\r\n \r\n {\r\n locData.pieData.map((entry, index) => (\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n {locData.pieData.map((entry, index) => (\r\n

\r\n {`${entry.value} `}\r\n {colorBlock(entry.color)}\r\n {` ${entry.name}`}\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 onDelete={() => { }}\r\n sortableTableHeaders={sortableTableHeaders}\r\n content={locCarrierTableData}\r\n handleEmployeeClicked={() => { }}\r\n handleRowClick={() => { }}\r\n handleCheckClicked={() => { }}\r\n hideBlankHeader={true}\r\n rowType=\"carrierData\"\r\n hideFabForAdd={true}\r\n handleSelectAll={() => { }}\r\n viewOnly={true}\r\n hidePaging={locCarrierTableData.length < 25}\r\n showFooter={true}\r\n />\r\n \r\n
\r\n }\r\n
\r\n );\r\n});\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n colorBlock: {\r\n height: 12,\r\n width: 12,\r\n marginLeft: 10,\r\n display: 'inline-block'\r\n },\r\n graphWrapper: {\r\n paddingTop: 30\r\n },\r\n graphTitle: {\r\n color: palette.grey.darkGrey,\r\n fontSize: 20,\r\n fontWeight: 600\r\n },\r\n legendColumn: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'flex-end'\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n marginTop: 15\r\n },\r\n statusColumn: {\r\n display: 'inline-flex',\r\n justifyContent: 'flex-end',\r\n marginTop: 10\r\n },\r\n tableOverflow: {\r\n overflowX: 'auto',\r\n padding: 20,\r\n marginTop: 12\r\n },\r\n tableTitle: {\r\n fontSize: 22,\r\n fontWeight: 500,\r\n fontFamily: 'Roboto',\r\n },\r\n textCenter: {\r\n textAlign: 'center'\r\n },\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n companyName: state.enrollment.company.name,\r\n employees: state.employee.list,\r\n plans: state.plan.list,\r\n daysRemaining: getDaysRemaining(state.enrollment)\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchEnrollment: enrollmentId => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchEmployees: (companyId, enrollmentId) => dispatch(fetchEmployees(companyId, enrollmentId)),\r\n fetchPlans: (companyId, enrollmentId) => dispatch(fetchPlans(companyId, enrollmentId)),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(EnrollmentSummary));","import Button, { ButtonProps } from '@material-ui/core/Button';\r\nimport React from 'react';\r\n\r\ninterface Props extends ButtonProps {\r\n id: string;\r\n accepttype?: string;\r\n onClick: (event: any) => void;\r\n}\r\n\r\nconst FileUploadButton = (props: Props) => {\r\n function onInputClick(event: any) {\r\n event.target.value = ''\r\n }\r\n const { id, onClick, ...config } = props;\r\n return (\r\n <>\r\n {!props.disabled &&\r\n \r\n }\r\n
}\r\n content={}\r\n />\r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CCoverageEligibilityDomesticPartnerChildEligible) &&\r\n \r\n \r\n \r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CCoverageEligibilityStandAloneProducts) &&\r\n \r\n \r\n \r\n Indicates whether or not the group purchased an exchange certified stand alone dental plan (aka SAPD) as per the regulations for the Patient Protection and Affordable Care Act (PPACA).
}\r\n content={}\r\n />\r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CCoverageEligibilityCobraRequired) &&\r\n \r\n \r\n \r\n Group qualifies for Cobra if the size of the group is greater than 20. To update whether or not Cobra employees are eligible for the offered Horizon coverages, please adjust the Benefits criteria for your plans in Online Enrollment Plan Setup.
}\r\n content={}\r\n />\r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CCoverageEligibilityHasIncapacitatedMember) &&\r\n \r\n\r\n \r\n \r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CCoverageEligibilityHasDisabledDependents) &&\r\n \r\n\r\n \r\n \r\n \r\n }\r\n \r\n \r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n marginTop: 24,\r\n padding: '20px 40px'\r\n },\r\n title: {\r\n color: palette.grey.lightText,\r\n fontSize: 24\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n margin: -3\r\n }\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const coverageEligibility = formValueSelector(ownProps.formName)(state, 'coverageEligibility');\r\n\r\n return {\r\n coverageEligibility\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n changeCoverageEligibility: (field: string, value: any) => dispatch(change(ownProps.formName, field, value))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DirectToCarrierEligibilityFields);","import Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { characterLimit, requiredForGroupSubmission, nonNegativeNumber } from 'utility/form_validation';\r\nimport palette from 'utility/palette';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility/employee_utils';\r\nimport { LOOKUP_TYPE_IDS } from \"../../utility/lookup_utils\";\r\nimport { getLookupValue } from 'utility';\r\n\r\nexport type FieldData = {\r\n memberCensusCount?: number;\r\n};\r\n\r\ninterface ComponentProps {\r\n configurationTypeIds: number[];\r\n carrierCode: string;\r\n liveCensusCount: number;\r\n disableFields: boolean;\r\n}\r\ninterface Props extends ComponentProps { }\r\n\r\n\r\nconst DirectToCarrierEnrollmentFields = React.memo((props: Props) => {\r\n const characterLimit50 = React.useMemo(() => characterLimit(50), []);\r\n const editable = props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CEnrollmentInformationTotalEmployeeCountEnabled);\r\n \r\n return (\r\n \r\n Enrollment Information\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n marginTop: 24,\r\n padding: '20px 40px'\r\n },\r\n title: {\r\n color: palette.grey.lightText,\r\n fontSize: 24\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary\r\n },\r\n warningText: {\r\n color: palette.grey.text,\r\n fontSize: 14\r\n }\r\n};\r\n\r\nexport default DirectToCarrierEnrollmentFields;","import Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { convertToNumber } from 'utility/form_normalization';\r\nimport { characterLimit, nonNegativeInteger, requiredForGroupSubmission } from 'utility/form_validation';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { TextFormField, CheckboxField } from '../common/reduxform_fields';\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility';\r\n\r\nconst nativeSelect = { native: true };\r\n\r\nexport type FieldData = {\r\n \r\n};\r\n\r\ninterface ComponentProps {\r\n disableFields: boolean;\r\n configurationTypeIds: number[];\r\n}\r\n\r\ninterface StateProps {\r\n\r\n\r\n}\r\n\r\ntype Props = ComponentProps & StateProps;\r\n\r\n\r\n\r\nconst DirectToCarrierBrokerFields = React.memo((props: Props) => {\r\n const characterLimit50 = React.useMemo(() => characterLimit(50), []);\r\n\r\n return (\r\n\r\n \r\n Broker Information\r\n
\r\n \r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBrokerInformationFirstName) &&\r\n \r\n \r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBrokerInformationLastName) &&\r\n \r\n \r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBrokerInformationNPN) &&\r\n \r\n \r\n \r\n }\r\n \r\n
\r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n marginTop: 24,\r\n padding: '20px 40px'\r\n },\r\n flexDiv: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n title: {\r\n color: palette.grey.lightText,\r\n fontSize: 24\r\n },\r\n};\r\n\r\nexport default DirectToCarrierBrokerFields;","import Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport { Field, formValueSelector, change } from 'redux-form';\r\nimport { characterLimit, requiredForGroupSubmission, nonNegativeNumber } from 'utility/form_validation';\r\nimport palette from 'utility/palette';\r\nimport { TextFormField, RadioControlGroupField } from '../common/reduxform_fields';\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility';\r\nimport { FormControlLabel, Radio } from '@material-ui/core';\r\nimport { ReduxState } from 'redux/store';\r\nimport { connect } from 'react-redux';\r\nimport { PaymentModes } from 'redux/reducers/group_submission_reducer';\r\n\r\nexport type FieldData = {\r\n\r\n};\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n disableFields: boolean;\r\n configurationTypeIds: number[];\r\n}\r\n\r\ninterface StateProps {\r\n paymentMode?: PaymentModes;\r\n}\r\n\r\ninterface DispatchProps {\r\n paymentModeChanged: (field: string, value: any) => void;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps;\r\n\r\nconst DirectToCarrierBinderFields = React.memo((props: Props) => {\r\n const characterLimit50 = React.useMemo(() => characterLimit(50), []);\r\n \r\n const onPaymentModeChanged = (_event: any, value: any) => {\r\n if(value === 'CHECK'){\r\n props.paymentModeChanged('bankRoutingNumber', null);\r\n props.paymentModeChanged('bankAccountNumber', null);\r\n } else if(value ==='ACH'){\r\n props.paymentModeChanged('checkNumber', null);\r\n }\r\n };\r\n\r\n return (\r\n\r\n \r\n Binder Information\r\n
\r\n \r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBinderInformationNameonAccount) &&\r\n \r\n \r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBinderInformationTotalInitialPayment) &&\r\n \r\n \r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBinderInformationCapturePaymentDetails) &&\r\n <>\r\n \r\n \r\n }\r\n label='Check'\r\n />\r\n }\r\n label='ACH'\r\n />\r\n \r\n \r\n {props.paymentMode === 'CHECK' && \r\n \r\n \r\n \r\n }\r\n {props.paymentMode === 'ACH' &&\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n marginTop: 24,\r\n padding: '20px 40px'\r\n },\r\n flexDiv: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n title: {\r\n color: palette.grey.lightText,\r\n fontSize: 24\r\n },\r\n paymentType: {\r\n position: 'relative',\r\n marginTop: -10\r\n },\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const paymentMode = formValueSelector(ownProps.formName)(state, 'paymentMode')\r\n\r\n return {\r\n paymentMode\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n paymentModeChanged: (field: string, value: any) => dispatch(change(ownProps.formName, field, value))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DirectToCarrierBinderFields);","import { Divider, Grid, Typography } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport SaveButton from 'components/common/save_button';\r\nimport WrapperAccordion from 'components/common/wrapper_accordion';\r\nimport React from 'react';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport { compose } from 'recompose';\r\nimport { ConfigProps, FieldArray, InjectedFormProps, reduxForm, formValueSelector } from 'redux-form';\r\nimport palette from 'utility/palette';\r\nimport * as qs from 'utility/query_string_util';\r\nimport routes from '../../router/routes';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport AgentOfRecordFieldArray, { FieldData as AgentFieldData } from './agent_of_record_field_array';\r\nimport DirectToCarrierAddressFields, { FieldData as AddressFieldData } from './direct_to_carrier_address_fields';\r\nimport DirectToCarrierCompanyFields, { FieldData as CompanyFieldData } from './direct_to_carrier_company_fields';\r\nimport DirectToCarrierDentalPriorCoverageFields, { FieldData as DentalPriorCoverageData } from './direct_to_carrier_dental_prior_coverage_fields';\r\nimport DirectToCarrierEligibilityFields, { FieldData as EligibilityFieldData } from './direct_to_carrier_eligibility_fields';\r\nimport DirectToCarrierEnrollmentFields, { FieldData as EnrollmentFieldData } from './direct_to_carrier_enrollment_fields';\r\nimport DirectToCarrierBrokerFields, { FieldData as BrokerFieldData } from './direct_to_carrier_broker_fields';\r\nimport DirectToCarrierBinderFields, { FieldData as BinderFieldData } from './direct_to_carrier_binder_fields';\r\nimport { SubmitToCarrierAcknowledgementFormData } from '../../components/forms/submit_to_carrier_acknowledgement_form'\r\nimport MessageCard from 'components/common/message_card';\r\nimport { CONFIGURATION_TYPE_IDS, isEnrollmentSubmitted } from 'utility';\r\nimport { getLookupId, getLookups, LOOKUP_TYPE_IDS, getLookupValue } from 'utility/lookup_utils';\r\n\r\n\r\nexport const FORM_NAME = 'DIRECT_TO_CARRIER';\r\n\r\nexport type FormData = CompanyFieldData & EnrollmentFieldData & AddressFieldData & EligibilityFieldData & AgentFieldData & DentalPriorCoverageData & BrokerFieldData & BinderFieldData & SubmitToCarrierAcknowledgementFormData;\r\n\r\ninterface ComponentProps {\r\n disableSave: boolean;\r\n onCancel?: () => void;\r\n errors?: string[];\r\n hasDentalPlan: boolean;\r\n hasHMOPlans: boolean;\r\n carrierCode: string;\r\n configurationTypeIds: number[];\r\n liveCensusCount: number;\r\n eBnButtonClicked: boolean;\r\n submitted: boolean;\r\n}\r\n\r\ntype Props = InjectedFormProps & RouteComponentProps & ComponentProps & StyledComponentProps\r\n\r\nexport const writingAgentsUniqueNPN = (_value: any, formValues: FormData) => {\r\n if (_value === undefined)\r\n return undefined;\r\n\r\n var duplicateNPN = undefined;\r\n\r\n var allNPNs: any[] = [];\r\n\r\n formValues.agentsOfRecord.forEach((aor) => {\r\n var allNPNsPerAOR = aor.writingAgents.filter(wa => wa.nationalProducerNumber !== undefined && wa.nationalProducerNumber !== null || wa.nationalProducerNumber !== '')\r\n .map(wa => wa.nationalProducerNumber)\r\n\r\n allNPNs = allNPNs.concat(allNPNsPerAOR);\r\n })\r\n duplicateNPN = allNPNs.filter(npn => npn === _value).length > 1;\r\n\r\n\r\n return duplicateNPN ? 'Another Writing Agent already has this NPN' : undefined;\r\n}\r\n\r\nconst DirectToCarrierForm = React.memo((props: Props) => {\r\n const { classes = {}, carrierCode } = props;\r\n const hasHMOPlans = props.hasHMOPlans;\r\n function getCarrierName() {\r\n var carrierName;\r\n if(carrierCode===\"HUMANA\"){\r\n carrierName=getLookupValue('HUMANACARRIERNAME', LOOKUP_TYPE_IDS.carrier);\r\n }else if(carrierCode===\"HRZNBCBS\" || carrierCode===\"NJHRZNBCBS\"){\r\n carrierName=getLookupValue('HRZNCARRIERNAME', LOOKUP_TYPE_IDS.carrier);\r\n }\r\n return carrierName;\r\n }\r\n \r\n function IsBrokerInfoRequired() {\r\n if (props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBrokerInformationFirstName) ||\r\n props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBrokerInformationLastName) ||\r\n props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBrokerInformationNPN)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function IsBinderInfoRequired() {\r\n if (props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBinderInformationNameonAccount) ||\r\n props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBinderInformationTotalInitialPayment) ||\r\n props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CBinderInformationCapturePaymentDetails)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function errorSummaryText() {\r\n return (\r\n (props.errors && props.errors.length > 0)\r\n ? \r\n \r\n \r\n \r\n \r\n
Submission: {props.errors.length} error{props.errors.length > 1 ? 's' : ''}
\r\n
\r\n
\r\n : \r\n )\r\n }\r\n const stringErrors = qs.stringify({ 'errors': props.errors })\r\n const errorUrl = `${routes.diretToCarrierErrors.path}?${stringErrors}`;\r\n\r\n return (\r\n <> \r\n {props.eBnButtonClicked &&\r\n This enrollment has been submitted to EBN for paper form generation. Please check related case in Salesforce for review.}\r\n elevation={1}\r\n style={styles.messageCard}\r\n />\r\n }\r\n {(carrierCode.toUpperCase() === getLookupValue('HORIZONCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode)\r\n || carrierCode.toUpperCase() === getLookupValue('HUMANACARRIERCODE', LOOKUP_TYPE_IDS.carrierCode)) && !props.submitted &&\r\n BenefitMall has pre-populated this form based on the data we have on your account. Please review form before submission to {getCarrierName()}.}\r\n elevation={1}\r\n style={styles.messageCard}\r\n />\r\n }\r\n {carrierCode === \"HUMANA\" &&\r\n \r\n }\r\n Application (Direct to Carrier)\r\n
\r\n Fill out the necessary information for the group.\r\n When the form is complete, you can submit it directly to the carrier.\r\n
\r\n\r\n {props.errors && props.errors.length > 0 &&\r\n
\r\n \r\n
{props.errors!.map((e, index) => (\r\n
\r\n {index !== 0 &&\r\n \r\n }\r\n Error {index + 1}\r\n {e}\r\n
\r\n ))}
\r\n
\r\n
\r\n \r\n OPEN IN NEW PAGE\r\n \r\n
\r\n
\r\n }\r\n
\r\n \r\n \r\n \r\n \r\n {IsBrokerInfoRequired() &&\r\n \r\n }\r\n {IsBinderInfoRequired() &&\r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CDentalPriorCoverageFields) && props.hasDentalPlan &&\r\n \r\n }\r\n {props.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CAgentsOfRecord) &&\r\n \r\n }\r\n \r\n \r\n );\r\n});\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n ...commonStyles,\r\n buttonGroup: {\r\n marginTop: 16,\r\n textAlign: 'right'\r\n },\r\n componentHeader: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n componentTitle: {\r\n fontWeight: 700,\r\n marginLeft: 20\r\n },\r\n errorDetail: {\r\n display: 'block',\r\n marginLeft: 24\r\n },\r\n errorDetailItem: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 8\r\n },\r\n errorHeading: {\r\n fontSize: 16,\r\n marginTop: 8,\r\n color: palette.red.primary\r\n },\r\n info: {\r\n marginBottom: 20\r\n },\r\n iconGrid: {\r\n textAlign: 'center'\r\n },\r\n icon: {\r\n color: palette.red.primary\r\n },\r\n smallButton: {\r\n textDecoration: 'none',\r\n color: palette.grey.darkText,\r\n },\r\n textGrid: {\r\n color: palette.grey.text,\r\n },\r\n}\r\n\r\nexport default compose>>(\r\n reduxForm({ form: FORM_NAME }),\r\n withStyles(styles),\r\n withRouter\r\n)(DirectToCarrierForm)\r\n","import React from 'react';\r\nimport { GroupSubmissionFileUpload } from 'redux/actions';\r\nimport { GroupSubmission, SnackbarVariant } from 'redux/reducers';\r\nimport auth from 'utility/auth';\r\nimport KitDocuments from '../../components/group_applications/kit_documents';\r\nimport { Typography, Grid } from '@material-ui/core';\r\nimport palette from 'utility/palette';\r\n\r\ninterface Props {\r\n groupApplication: GroupSubmission;\r\n companyId: string;\r\n enrollmentId: string;\r\n disable: boolean;\r\n addDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, fileUpload: GroupSubmissionFileUpload) => Promise;\r\n updateDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, fileUpload: GroupSubmissionFileUpload) => Promise;\r\n deleteDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, docId: string, name: string) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n}\r\n\r\nclass DirectToCarrierDocuments extends React.PureComponent{\r\n isEmployer = auth.isUserEmployer();\r\n isBroker = auth.isUserEnrollmentManager();\r\n isAdmin = auth.isUserEnrollmentSuperAdmin();\r\n\r\n render() {\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n fontSize: 24,\r\n fontFamily: 'Roboto',\r\n color: palette.grey.text,\r\n },\r\n info: {\r\n color: palette.grey.text,\r\n fontSize: 14,\r\n marginBottom: -8,\r\n },\r\n};\r\n\r\nexport default DirectToCarrierDocuments;\r\n","import { CSSProperties } from \"@material-ui/core/styles/withStyles\";\r\nimport { createStyles, makeStyles } from \"@material-ui/styles\";\r\nimport palette from 'utility/palette';\r\nimport { textAlign } from '@material-ui/system';\r\n\r\nconst baseStyles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15,\r\n fontFamily: 'Roboto'\r\n }\r\n\r\n}\r\n\r\nexport const classes = makeStyles(createStyles({\r\n tableTitle: {\r\n fontSize: '24px',\r\n fontWeight: 500\r\n }\r\n}));\r\n\r\nexport const styles: { [key: string]: React.CSSProperties } = {\r\n container: {\r\n color: palette.grey.text,\r\n fontSize: 14,\r\n\r\n },\r\n divider: {\r\n marginBottom: 16,\r\n color: palette.grey.black\r\n },\r\n checkboxDiv: {\r\n marginTop: 2,\r\n marginBottom:15\r\n },\r\n dialogActions: {\r\n marginBottom: 25,\r\n marginLeft: 25,\r\n marginRight: 25\r\n },\r\n endText: {\r\n marginTop: 15\r\n },\r\n mainText: {\r\n marginBottom: 15\r\n },\r\n iconCol: {\r\n padding: 0,\r\n color: palette.grey.lightText\r\n },\r\n carrierCol: {\r\n padding: 0\r\n },\r\n tableContainer: {\r\n margin: 10,\r\n padding: '0 10px',\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n borderRadius: 5,\r\n fontSize:10\r\n },\r\n Border: {\r\n border: 3,\r\n borderStyle: 'solid',\r\n borderColor: palette.blue.border,\r\n borderBottom: 'blue'\r\n },\r\n topWarningsBox: {\r\n paddingBottom: '10px'\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n marginLeft: '-6px'\r\n },\r\n helpIcon: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n marginLeft: 10\r\n },\r\n\r\n icon: {\r\n fontSize: 14,\r\n marginBottom: -2,\r\n },\r\n warning: {\r\n color: palette.orange.primary\r\n },\r\n warningIcon: {\r\n fontSize: 14,\r\n color: palette.orange.warning,\r\n marginRight: 4,\r\n marginBottom: -2,\r\n },\r\n alertIcon: {\r\n color: palette.red.primary\r\n },\r\n error: {\r\n fontSize: 14,\r\n marginBottom: -2,\r\n paddingRight: 5,\r\n color: palette.red.primary\r\n },\r\n customPlanWarning: {\r\n fontSize: 14,\r\n display: 'inline-flex',\r\n marginBottom: 15\r\n },\r\n thinColumn: {\r\n padding: 0\r\n },\r\n button: {\r\n marginRight:10\r\n },\r\n toolbarLogo: {\r\n height: 52,\r\n display: 'inline-list-item',\r\n top: -6,\r\n paddingLeft: 25\r\n\r\n },\r\n submissionInfoText: {\r\n paddingTop: 15,\r\n fontFamily: 'Roboto',\r\n fontSize: 14\r\n }\r\n};\r\n","import React, { Component } from 'react';\r\nimport { Typography, Divider, Button } from '@material-ui/core';\r\nimport Checkbox, { CheckboxProps } from '@material-ui/core/Checkbox';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport { styles } from 'utility/setup_complete_styles'\r\nimport { reduxForm, InjectedFormProps, Field } from 'redux-form';\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\n\r\nexport const FORM_NAME = 'SUBMIT_TO_CARRIER_ACKNOWLEDGEMENT';\r\n\r\nexport type SubmitToCarrierAcknowledgementFormData = {\r\n IsSubmitToCarrierAcknowledged: boolean;\r\n OverrideTaxIdValidation: boolean;\r\n}\r\n\r\ninterface ComponentProps {\r\n onClose: () => void;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps;\r\n\r\nconst SubmitToCarrierAcknowledgementForm = (props: Props) => {\r\n const [checked, setChecked] = React.useState(false);\r\n const onHorizonAcknowledge = (e: any) => {\r\n setChecked(e.target.checked);\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n You are about to submit this group to Horizon.\r\n This action must take place by a Certified Horizon Compliance User.\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n
\r\n \r\n Cancel\r\n \r\n Continue\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME\r\n})(SubmitToCarrierAcknowledgementForm);\r\n","import BaseDialog from 'components/common/base_dialog';\r\nimport React from 'react';\r\nimport SubmitToCarrierAcknowledgementForm, { SubmitToCarrierAcknowledgementFormData } from '../forms/submit_to_carrier_acknowledgement_form';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onClose: () => void;\r\n onDone: (formValues: SubmitToCarrierAcknowledgementFormData) => void;\r\n}\r\n\r\ntype Props = ComponentProps;\r\n\r\nconst SubmitToCarrierAcknowledgementDialog = (props: Props) => {\r\n const initialValues: SubmitToCarrierAcknowledgementFormData = {\r\n IsSubmitToCarrierAcknowledged: false,\r\n OverrideTaxIdValidation: false\r\n };\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SubmitToCarrierAcknowledgementDialog;","import DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { Button } from '@material-ui/core';\r\n\r\ninterface Props {\r\n open: boolean;\r\n onOk: () => void;\r\n}\r\n\r\nconst MissingDocumentsDialog = (props: Props) => {\r\n\r\n const {open, onOk} = props;\r\n\r\n return (\r\n \r\n \r\n \r\n Documents are required for submission to carrier. Please upload documents on the \"Documents\" tab for this carrier.\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MissingDocumentsDialog;","import SaveButton from 'components/common/save_button';\r\nimport DirectToCarrierForm, { FormData, FORM_NAME } from 'components/forms/direct_to_carrier_form';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { FormErrors, getFormSyncWarnings, isInvalid, submit, isSubmitting } from 'redux-form';\r\nimport { fetchEmployees, fetchPlans, submitEnrollment, submitGroupSubmission, updateGroupSubmission } from 'redux/actions';\r\nimport { AddressType, AgentOfRecord, ContactInfo, convertGroupSubmissionToGroupSubmissionDTO, EnrollmentReducerState, EnrollmentReducerStatePropType, GroupSubmission, GroupSubmissionDTO, PlanReducerState, PlanReducerStatePropType, EmployeeReducerState } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport auth from 'utility/auth';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport Help from '@material-ui/icons/Help';\r\nimport { FieldData as AgentFieldData, WritingAgentFieldData } from '../../components/forms/agent_of_record_fields';\r\nimport { ENROLLMENT_SUBMISSION_MECHANISMS, getLookupId, isDental, LOOKUP_TYPE_IDS, isHMO } from '../../utility/lookup_utils';\r\nimport scrollUtility from 'utility/scroll_utility';\r\nimport SubmitToCarrierAcknowledgementDialog from 'components/group_applications/submit_to_carrier_acknowledgement_dialog'\r\nimport MissingDocumentsDialog from 'components/enrollment/missing_document_dialog'\r\nimport { getLookupValue, CONFIGURATION_TYPE_IDS } from 'utility';\r\nimport { SubmitToCarrierAcknowledgementFormData } from '../../components/forms/submit_to_carrier_acknowledgement_form'\r\nimport palette from 'utility/palette';\r\n\r\n\r\ninterface ComponentProps {\r\n groupApplication: GroupSubmission;\r\n companyId: string;\r\n enrollmentId: string;\r\n isD2C: boolean;\r\n}\r\n\r\ninterface StateProps {\r\n formInvalid: boolean;\r\n syncWarnings: FormErrors;\r\n enrollmentState: EnrollmentReducerState;\r\n employeeState: EmployeeReducerState;\r\n planState: PlanReducerState;\r\n errors: string[];\r\n}\r\n\r\ninterface DispatchProps {\r\n fetchPlans: () => Promise;\r\n fetchEmployees: () => Promise;\r\n submitForm: () => void;\r\n submitEnrollment: (message: string) => Promise;\r\n updateGroupSubmission: (groupSubmission: GroupSubmissionDTO) => Promise;\r\n submitGroupSubmission: (groupSubmission: GroupSubmissionDTO) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps\r\n\r\ninterface State {\r\n loading: boolean;\r\n updateGroup: boolean;\r\n eBNLoading: boolean;\r\n validateLoading: boolean;\r\n isSubmit: boolean;\r\n isFinalSubmitToCarrier: boolean;\r\n overrideTaxIdValidation: boolean;\r\n clearDentalCoverage: boolean;\r\n showSubmitToCarrierDialog: boolean;\r\n showMissingDocumentsDialog: boolean;\r\n isSubmitToCarrierAcknowledged: boolean;\r\n}\r\n\r\nclass DirectToCarrierUpdate extends React.PureComponent{\r\n pendingStatusId = getLookupId('PENDINGPROCESSING', LOOKUP_TYPE_IDS.enrollmentStatus);\r\n isEmployer = auth.isUserEmployer();\r\n isBroker = auth.isUserEnrollmentManager();\r\n isAdmin = auth.isUserEnrollmentSuperAdmin();\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n updateGroup: false,\r\n eBNLoading: false,\r\n validateLoading: false,\r\n isSubmit: false,\r\n isFinalSubmitToCarrier: false,\r\n overrideTaxIdValidation: false,\r\n clearDentalCoverage: false,\r\n showSubmitToCarrierDialog: false,\r\n showMissingDocumentsDialog: false,\r\n isSubmitToCarrierAcknowledged: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n\r\n if (this.props.planState.list.length === 0) {\r\n promises.push(this.props.fetchPlans());\r\n }\r\n\r\n if (this.props.employeeState.list.length === 0) {\r\n promises.push(this.props.fetchEmployees())\r\n }\r\n\r\n Promise.all(promises).then(this.loadingOff, this.loadingOff);\r\n }\r\n\r\n get initialValues() {\r\n const values: Partial = {\r\n ...this.props.groupApplication.directToCarrier\r\n };\r\n return values;\r\n }\r\n\r\n hasDentalPlan = memoizeOne((planState: PlanReducerState) => {\r\n const plansIncluded = this.props.groupApplication.planIdsIncludedInSubmission.map(p => p.toString());\r\n const plans = planState.list.filter(p => plansIncluded.includes(p.id) && isDental(p.lineOfCoverageId));\r\n return plans.length > 0;\r\n });\r\n\r\n hasHMOPlans = memoizeOne((planState: PlanReducerState) => {\r\n const plansIncluded = this.props.groupApplication.planIdsIncludedInSubmission.map(p => p.toString());\r\n const plans = planState.list.filter(p => plansIncluded.includes(p.id) && isHMO(p.planTypeId));\r\n return plans.length > 0;\r\n });\r\n\r\n loadingOn = () => {\r\n this.setState({ loading: true })\r\n }\r\n\r\n loadingOff = () => {\r\n this.setState({ loading: false })\r\n }\r\n\r\n updateGroupSucess = () => {\r\n this.setState({ updateGroup: true })\r\n }\r\n\r\n updateGroupFail = () => {\r\n this.setState({ updateGroup: false })\r\n this.eBNLoadingOff();\r\n }\r\n\r\n eBNLoadingOn = () => {\r\n this.setState({ eBNLoading: true })\r\n }\r\n\r\n eBNLoadingOff = () => {\r\n this.setState({ eBNLoading: false })\r\n }\r\n\r\n validateLoadingOn = () => {\r\n this.setState({ validateLoading: true })\r\n }\r\n\r\n validateLoadingOff = () => {\r\n this.setState({ validateLoading: false })\r\n }\r\n\r\n submitOff = () => {\r\n this.setState({ isSubmit: false }, this.loadingOff);\r\n }\r\n\r\n closeHorizonAcknowledgement = () => {\r\n this.setState({ showSubmitToCarrierDialog: false });\r\n }\r\n closeMissingDocumentsDialog = () => {\r\n this.setState({ showMissingDocumentsDialog: false });\r\n }\r\n\r\n handleContinueSubmit = (formValues: SubmitToCarrierAcknowledgementFormData) => {\r\n this.setState({\r\n isSubmit: true,\r\n isFinalSubmitToCarrier: true,\r\n showSubmitToCarrierDialog: false,\r\n isSubmitToCarrierAcknowledged: formValues.IsSubmitToCarrierAcknowledged,\r\n overrideTaxIdValidation: formValues.OverrideTaxIdValidation\r\n }, this.props.submitForm);\r\n }\r\n\r\n handleSubmit = async () => {\r\n var groupSubmission = this.props.groupApplication;\r\n \r\n //TODO - Replace this carriercode check with a Configuration based check\r\n if (groupSubmission.carrierCode.toUpperCase() === getLookupValue('HORIZONCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode)) {\r\n if (groupSubmission.documents.length == 0) {\r\n this.setState({ showMissingDocumentsDialog: true });\r\n }\r\n else {\r\n this.setState({ showSubmitToCarrierDialog: true });\r\n }\r\n }\r\n else {\r\n this.setState({\r\n isSubmit: true,\r\n isFinalSubmitToCarrier: true\r\n }, this.props.submitForm);\r\n }\r\n }\r\n\r\n handleSave = () => {\r\n this.props.submitForm();\r\n }\r\n\r\n processSave = async (formValues: FormData) => {\r\n var groupSubmission = this.props.groupApplication;\r\n\r\n var dentalPriorCoverage = formValues.dentalPriorCoverage && !formValues.dentalPriorCoverage.isTransferring ? {\r\n id: undefined,\r\n carrierName: undefined,\r\n coverageEndDate: undefined,\r\n includesOrthodontia: false,\r\n isTransferring: false\r\n } : formValues.dentalPriorCoverage;\r\n\r\n groupSubmission.directToCarrier = {\r\n ...formValues,\r\n id: this.props.groupApplication.directToCarrier!.id,\r\n planCollection: this.props.groupApplication.directToCarrier!.planCollection,\r\n agentsOfRecord: (formValues.agentsOfRecord != null && formValues.agentsOfRecord[0] != null) ? formValues.agentsOfRecord.map(agent => {\r\n const contactInformation: ContactInfo | undefined = {\r\n ...agent.contactInfo,\r\n addressType: AddressType.Mail\r\n }\r\n return {\r\n ...agent,\r\n id: agent.id || '',\r\n contactInfo: contactInformation\r\n } as AgentOfRecord\r\n }) : undefined,\r\n signatures: this.props.groupApplication.directToCarrier!.signatures,\r\n egaLinks: this.props.groupApplication.directToCarrier!.egaLinks,\r\n isFormComplete: Object.keys(this.props.syncWarnings).length === 0,\r\n dentalPriorCoverage,\r\n transactionId: groupSubmission.directToCarrier!.transactionId,\r\n groupId: groupSubmission.directToCarrier!.groupId,\r\n isFinalized: this.props.groupApplication.directToCarrier!.isFinalized\r\n };\r\n var newGroupSubmissionDTO = convertGroupSubmissionToGroupSubmissionDTO(groupSubmission,\r\n this.state.isFinalSubmitToCarrier, this.state.isSubmitToCarrierAcknowledged, this.state.overrideTaxIdValidation);\r\n this.loadingOn();\r\n if (this.state.isSubmit) {\r\n await this.props.submitGroupSubmission(newGroupSubmissionDTO);\r\n this.submitOff();\r\n }\r\n else {\r\n await this.props.updateGroupSubmission(newGroupSubmissionDTO).then(this.loadingOff, this.loadingOff);\r\n }\r\n\r\n scrollUtility.scrollToTop();\r\n }\r\n\r\n processValidateEnrollment = async () => {\r\n this.setState({\r\n isSubmit: true,\r\n isFinalSubmitToCarrier: false\r\n }, this.props.submitForm);\r\n }\r\n\r\n processFlipToEbn = async () => {\r\n var groupSubmission = this.props.groupApplication;\r\n groupSubmission.isDirectToCarrierRouteOverriden = true;\r\n groupSubmission.enrollmentSubmissionMechanism = ENROLLMENT_SUBMISSION_MECHANISMS.eBN;\r\n this.eBNLoadingOn();\r\n var newGroupSubmissionDTO = convertGroupSubmissionToGroupSubmissionDTO(groupSubmission);\r\n\r\n await this.props.updateGroupSubmission(newGroupSubmissionDTO).then(this.updateGroupSucess, this.updateGroupFail);\r\n //If UpdateGroupSubmission fails, do not continue submission\r\n if (this.state.updateGroup) {\r\n await this.props.submitEnrollment('Enrollment application to eBN sent sucessfully').then(this.eBNLoadingOff, this.eBNLoadingOff);\r\n }\r\n }\r\n\r\n render() {\r\n const isEnrollmentSubmitted = !!this.props.enrollmentState.submissionDate;\r\n const showSave = (((this.isBroker || this.isEmployer) && !isEnrollmentSubmitted) || this.isAdmin) && this.props.isD2C;\r\n const showSubmit = showSave && this.isAdmin && isEnrollmentSubmitted;\r\n const directToCarrierSubmitted = this.props.groupApplication.directToCarrier!.egaLinks.length > 0;\r\n const groupAppDocuments = this.props.groupApplication.documents.length > 0;\r\n const saveDisabled = this.props.formInvalid || this.state.loading || this.state.eBNLoading;\r\n const submitDisabled = saveDisabled || Object.keys(this.props.syncWarnings).length > 0;\r\n const carrierCode = this.props.groupApplication ? this.props.groupApplication.carrierCode : \"\";\r\n const routeToEBNTitle = \"Please upload group application documents to enable this button. Route to EBN submits your enrollment for Paper Form Generation by EBN. The group data captured on this form will not be sent to EBN as part of this request.\";\r\n const eBnButtonClicked = (this.props.groupApplication.isDirectToCarrierRouteOverriden == true && this.props.groupApplication.enrollmentSubmissionMechanism == ENROLLMENT_SUBMISSION_MECHANISMS.eBN) ? true : false;\r\n return (\r\n <>\r\n \r\n
\r\n {showSubmit &&\r\n <>\r\n {routeToEBNTitle}
}\r\n content={}\r\n >\r\n \r\n \r\n Route To eBN\r\n \r\n \r\n }\r\n {showSubmit && this.props.groupApplication.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CValidateEnrollmentRequired) && !this.state.isSubmit &&\r\n \r\n NBA Validate\r\n \r\n }\r\n {showSave &&\r\n \r\n Save Form\r\n \r\n }\r\n {showSubmit &&\r\n \r\n {directToCarrierSubmitted ? 'Re' : undefined}Submit Application To Carrier\r\n \r\n }\r\n {this.state.showMissingDocumentsDialog &&\r\n \r\n }\r\n\r\n {this.state.showSubmitToCarrierDialog &&\r\n \r\n }\r\n\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n buttonMargin: {\r\n marginRight: '8px'\r\n },\r\n button: {\r\n width: '100%',\r\n marginTop: 16\r\n },\r\n smallButton: {\r\n marginLeft: 8\r\n },\r\n buttonGroup: {\r\n marginTop: 16,\r\n textAlign: 'right'\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n margin: -3\r\n }\r\n};\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (DirectToCarrierForm as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n planState: PlanReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const failedGroupSubmission = state.groupSubmission.groupSubmissionErrors.find(e => e.groupSubmissionId === ownProps.groupApplication.id);\r\n\r\n return {\r\n formInvalid: isInvalid(FORM_NAME)(state),\r\n syncWarnings: getFormSyncWarnings(FORM_NAME)(state),\r\n enrollmentState: state.enrollment,\r\n employeeState: state.employee,\r\n planState: state.plan,\r\n errors: failedGroupSubmission ? failedGroupSubmission.errors : []\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n submitForm: () => dispatch(submit(FORM_NAME)),\r\n submitEnrollment: (message) => dispatch(submitEnrollment(message)), \r\n fetchPlans: () => dispatch(fetchPlans(ownProps.companyId, ownProps.enrollmentId)),\r\n fetchEmployees: () => dispatch(fetchEmployees(ownProps.companyId, ownProps.enrollmentId)),\r\n updateGroupSubmission: (groupSubmission) => dispatch(updateGroupSubmission(ownProps.companyId, ownProps.enrollmentId, groupSubmission)),\r\n submitGroupSubmission: (groupSubmission) => dispatch(submitGroupSubmission(ownProps.companyId, ownProps.enrollmentId, groupSubmission)),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DirectToCarrierUpdate);\r\n","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport http, { HttpResponse } from '../../utility/http';\r\nimport { GroupSubmissionDocument, GroupSubmissionDTO } from '../reducers';\r\nimport { displaySnackbar, displaySnackbarWithErrors } from './app_actions';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\n// Store GroupSubmission Action Creator\r\nexport const storeGroupSubmissions = acFactory('STORE_GROUP_SUBMISSIONS');\r\nexport const storeGroupSubmissionsErrors = acFactory<{id: string, errors: string[]}>('STORE_GROUP_SUBMISSIONS_ERRORS')\r\n\r\n// Fetch GroupSubmission Thunk\r\nexport function fetchGroupSubmissions(companyId: string, enrollmentId: string) {\r\n return async (dispatch: any) => {\r\n const data: GroupSubmissionDTO[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions`);\r\n dispatch(storeGroupSubmissions(data));\r\n };\r\n}\r\n\r\nexport function clearGroupSubmission() {\r\n return async (dispatch: any) => {\r\n const groupSubmissionData: GroupSubmissionDTO[] = [];\r\n //IF needed we can clear Group Documents as well, although Group Documents will be refreshed once new apps are generated\r\n dispatch(storeGroupSubmissions(groupSubmissionData));\r\n };\r\n}\r\n\r\n// Store GroupSubmission Documents Action Creator\r\nexport const storeGroupSubmissionDocuments = acFactory<{ id: string, documents: GroupSubmissionDocument[] }>('STORE_GROUP_SUBMISSION_DOCUMENTS');\r\n\r\n// Refresh GroupSubmission Documents Thunk\r\nexport function refetchGroupSubmissionDocuments(companyId: string, enrollmentId: string, groupSubmissionId: string) {\r\n return async (dispatch: any) => {\r\n const documents: GroupSubmissionDocument[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions/${groupSubmissionId}/documents`);\r\n dispatch(storeGroupSubmissionDocuments({ id: groupSubmissionId, documents }));\r\n };\r\n}\r\n\r\n// add Document to GroupSubmission Thunk\r\nexport type GroupSubmissionFileUpload = { file?: File } & Partial;\r\nexport function addGroupSubmissionDocument(companyId: string, enrollmentId: string, groupSubmissionId: string, fileUpload: GroupSubmissionFileUpload) {\r\n return async (dispatch: any) => {\r\n const formData = new FormData();\r\n fileUpload.file && formData.append('file', fileUpload.file);\r\n fileUpload.title && formData.append('title', fileUpload.title);\r\n fileUpload.fileType && formData.append('fileType', fileUpload.fileType);\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions/${groupSubmissionId}/documents`, { method: 'POST', body: formData });\r\n await dispatch(refetchGroupSubmissionDocuments(companyId, enrollmentId, groupSubmissionId));\r\n dispatch(displaySnackbar('Document saved to group application', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving document to group application'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\nexport function updateGroupSubmissionDocument(companyId: string, enrollmentId: string, groupSubmissionId: string, fileUpload: GroupSubmissionFileUpload){\r\n return async (dispatch: any) => {\r\n const formData = new FormData();\r\n fileUpload.title && formData.append('title', fileUpload.title);\r\n fileUpload.title && formData.append('id', fileUpload.id!);\r\n fileUpload.title && formData.append('fileName', fileUpload.fileName!);\r\n console.log('updateGroupSubmissionDocument', fileUpload);\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions/${groupSubmissionId}/documents`, { method: 'PUT', body: formData });\r\n await dispatch(refetchGroupSubmissionDocuments(companyId, enrollmentId, groupSubmissionId));\r\n dispatch(displaySnackbar('Document updated to group application', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with updating document to group application'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Delete Document Thunk\r\nexport function deleteGroupSubmissionDocument(companyId: string, enrollmentId: string, groupSubmissionId: string, docId: string, name: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions/${groupSubmissionId}/documents/${docId}`, { method: 'DELETE' });\r\n await dispatch(refetchGroupSubmissionDocuments(companyId, enrollmentId, groupSubmissionId));\r\n dispatch(displaySnackbar(`${name} deleted`, 'deletion'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with deleting document'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n//Create Employer User\r\nexport interface GroupSubmissionExists {\r\n exists: boolean,\r\n count: number,\r\n failedDuringGroupCreation: boolean,\r\n}\r\n\r\nexport function getGroupSubmissionExists(companyId: string, enrollmentId: string) {\r\n return async (dispatch: any) => {\r\n let intervalRef: any;\r\n try {\r\n let tries = 0;\r\n await new Promise((res, rej) => {\r\n intervalRef = setInterval(() => {\r\n tries++;\r\n http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions/count`)\r\n .then((data: GroupSubmissionExists) => {\r\n if (data.count > 0) {\r\n res();\r\n } else if (data.failedDuringGroupCreation || tries > 5) {\r\n rej();\r\n }\r\n });\r\n }, 5000);\r\n });\r\n clearInterval(intervalRef);\r\n } catch (ex) {\r\n clearInterval(intervalRef);\r\n }\r\n }\r\n}\r\n\r\n// Store Group Submission Action Creator\r\nexport const storeGroupSubmission = acFactory('STORE_GROUP_SUBMISSION');\r\n\r\n// Update Group Submission Thunk\r\nexport function updateGroupSubmission(companyId: string, enrollmentId: string, groupSubmission: GroupSubmissionDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n const updatedGroup: GroupSubmissionDTO = await http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions/${groupSubmission.id}`, { method: 'PUT', body: JSON.stringify(groupSubmission) });\r\n dispatch(storeGroupSubmission(updatedGroup));\r\n dispatch(displaySnackbar('Group application saved', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving group'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Update Group Submission Thunk\r\nexport function submitGroupSubmission(companyId: string, enrollmentId: string, groupSubmission: GroupSubmissionDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n const updatedGroup: GroupSubmissionDTO = await http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions/${groupSubmission.id}/submit`, { method: 'PUT', body: JSON.stringify(groupSubmission) });\r\n dispatch(storeGroupSubmission(updatedGroup));\r\n dispatch(displaySnackbar('Group submitted', 'success'));\r\n dispatch(storeGroupSubmissionsErrors({id: groupSubmission.id, errors: []})) // clear out the errors on successful submit\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with submitting group'));\r\n const httpResponse = ex as HttpResponse;\r\n if (httpResponse && httpResponse.data && httpResponse.data.length) {\r\n dispatch(storeGroupSubmissionsErrors({id: groupSubmission.id, errors: httpResponse.data as string[]}))\r\n }\r\n }\r\n };\r\n}\r\n\r\n// Update Signature Thunk\r\nexport function updateSignature(companyId: string, enrollmentId: string, groupSubmissionId: string, signedName: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n const updatedGroup: GroupSubmissionDTO = await http(`companies/${companyId}/enrollments/${enrollmentId}/groupSubmissions/${groupSubmissionId}/signature`, { method: 'PUT', body: JSON.stringify(signedName) });\r\n dispatch(storeGroupSubmission(updatedGroup));\r\n dispatch(displaySnackbar('Signature saved', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving signature'));\r\n throw ex;\r\n }\r\n };\r\n}","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst DocumentIcon = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DocumentIcon;","import SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\nimport React from 'react';\r\n\r\nconst DownloadIcon = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DownloadIcon;","import { Card, Grid, IconButton, Typography } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport DocumentIcon from '../common/icons/icon_document';\r\nimport DownloadIcon from '../common/icons/icon_download';\r\n\r\ninterface Props {\r\n fileName: string;\r\n url: string;\r\n date: moment.Moment;\r\n onClick: () => void;\r\n}\r\n\r\nconst EgaCard = React.memo((props: Props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {props.fileName}\r\n Completed on {props.date.format('L')}\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 const styles: { [key: string]: React.CSSProperties } = {\r\n card: {\r\n boxShadow: 'none',\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n marginTop: 24,\r\n height: 96,\r\n paddingLeft: 8\r\n },\r\n grid: {\r\n height: '100%'\r\n },\r\n textContainer: {\r\n position: 'relative',\r\n whiteSpace: 'nowrap',\r\n width: '100%'\r\n },\r\n leftGrid: {\r\n display: 'flex',\r\n justifyContent: 'left',\r\n alignItems: 'center',\r\n height: 96,\r\n },\r\n rightGrid: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: 96,\r\n },\r\n icon: {\r\n color: palette.blue.primary,\r\n fontSize: 72\r\n },\r\n fileName: {\r\n color: palette.grey.text,\r\n fontWeight: 500,\r\n fontSize: 20,\r\n wordBreak: 'break-all',\r\n position: 'absolute',\r\n top: -36\r\n },\r\n date: {\r\n color: palette.grey.text,\r\n fontWeight: 500,\r\n fontSize: 14,\r\n letterSpacing: .25,\r\n wordBreak: 'break-all',\r\n position: 'absolute',\r\n bottom: -34\r\n },\r\n iconButton: {\r\n color: palette.grey.text,\r\n fontSize: 32,\r\n }\r\n}\r\n\r\nexport default EgaCard","import CheckCircle from '@material-ui/icons/CheckCircle';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\n\r\ninterface Props {\r\n employerSigned: boolean;\r\n brokerSigned: boolean;\r\n}\r\n\r\nconst SignatureStatus = React.memo((props: Props) => {\r\n return (\r\n
\r\n {props.brokerSigned ?\r\n \r\n :\r\n \r\n }\r\n Broker Signature\r\n {props.employerSigned ?\r\n \r\n :\r\n \r\n }\r\n Employer Signature\r\n
\r\n )\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n ...commonStyles,\r\n div: {\r\n marginTop: 16,\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n checkIcon: {\r\n color: palette.green.primary\r\n },\r\n text: {\r\n marginLeft: 8,\r\n marginRight: 24,\r\n fontSize: 20,\r\n fontWeight: 500,\r\n letterSpacing: .25,\r\n fontFamily: 'Roboto',\r\n color: palette.grey.text\r\n }\r\n}\r\n\r\nexport default SignatureStatus;","import { Typography, Paper, Grid } from '@material-ui/core';\r\nimport MessageCard from 'components/common/message_card';\r\nimport AddSignatureForm, { FormData } from 'components/forms/add_signature_form';\r\nimport EgaCard from 'components/group_applications/ega_card';\r\nimport SignatureStatus from 'components/group_applications/signature_status';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { updateSignature } from 'redux/actions';\r\nimport { DirectToCarrier } from 'redux/reducers';\r\nimport auth from 'utility/auth';\r\nimport { USER_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n enrollmentId: string;\r\n disable: boolean;\r\n groupSubmissionId: string;\r\n directToCarrier: DirectToCarrier;\r\n}\r\n\r\ninterface MappedProps {\r\n\r\n}\r\ninterface DispatchProps {\r\n updateSignature: (signedName: string) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps & DispatchProps\r\ninterface State {\r\n egaViewed: boolean;\r\n}\r\n\r\nclass SignaturesAdd extends React.PureComponent {\r\n isBroker = auth.isUserEnrollmentManager();\r\n isEmployer = auth.isUserEmployer();\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n egaViewed: false\r\n };\r\n }\r\n\r\n handleSubmit = async (formValues: FormData) => {\r\n await this.props.updateSignature(formValues.signedName);\r\n }\r\n\r\n handleEGAViewed = () => {\r\n this.setState({ egaViewed: true });\r\n }\r\n\r\n render() {\r\n\r\n const hasEga = this.props.directToCarrier.egaLinks.length > 0;\r\n const signedEga = this.props.directToCarrier.egaLinks.find(x => x.isSigned);\r\n const unsignedEga = this.props.directToCarrier.egaLinks.find(x => !x.isSigned)!;\r\n const employerSigned = this.props.directToCarrier.signatures.filter(x => x.userType === USER_TYPE_IDS.enrollmentManager).length > 0;\r\n const brokerSigned = this.props.directToCarrier.signatures.filter(x => x.userType === USER_TYPE_IDS.enrollmentAdmin).length > 0;\r\n const userHasntSigned = (this.isBroker && !brokerSigned) || (this.isEmployer && !employerSigned);\r\n return (\r\n <>\r\n Signatures\r\n {\r\n hasEga ?\r\n <>\r\n \r\n The broker and employer representative must both sign the application.\r\n \r\n {!this.state.egaViewed && userHasntSigned &&\r\n \r\n \r\n \r\n }\r\n {!signedEga &&\r\n \r\n }\r\n \r\n \r\n {userHasntSigned &&\r\n \r\n }\r\n \r\n :\r\n \r\n \r\n {this.props.disable ?\r\n 'This group application does not require signatures.'\r\n :\r\n 'The broker and employer will sign the completed group application here once the enrollment is submitted.'\r\n }\r\n \r\n \r\n }\r\n \r\n );\r\n }\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n subheader: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n letterSpacing: .25,\r\n },\r\n messageCard: {\r\n marginTop: 16,\r\n marginBottom: 48\r\n },\r\n messageCardSign: {\r\n border: 'none',\r\n marginBottom: 40\r\n },\r\n paper: {\r\n marginTop: 24,\r\n padding: '48px 16px'\r\n },\r\n paperInfo: {\r\n color: palette.grey.text,\r\n fontSize: 20,\r\n fontWeight: 500,\r\n textAlign: 'center'\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n updateSignature: (signedName) => dispatch(updateSignature(ownProps.companyId, ownProps.enrollmentId, ownProps.groupSubmissionId, signedName)),\r\n };\r\n}\r\n\r\nexport default connect(undefined, mapDispatchToProps)(SignaturesAdd);","import { Grid } from '@material-ui/core';\r\nimport LeftNav, { TabOption } from 'components/common/left_nav';\r\nimport { FORM_NAME as AddSignatureForm } from 'components/forms/add_signature_form';\r\nimport { FORM_NAME as UpdateFormName } from 'components/forms/direct_to_carrier_form';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { GroupSubmissionFileUpload } from 'redux/actions';\r\nimport { EgaLink, GroupSubmission, SnackbarVariant } from 'redux/reducers';\r\nimport { ENROLLMENT_SUBMISSION_MECHANISMS } from 'utility';\r\nimport DirectToCarrierDocuments from './direct_to_carrier_documents';\r\nimport DirectToCarrierUpdate from './direct_to_carrier_update';\r\nimport SignaturesAdd from './signatures_add';\r\nimport { getLookupValue, CONFIGURATION_TYPE_IDS } from 'utility';\r\nimport { LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\n\r\ninterface Props {\r\n groupApplication: GroupSubmission;\r\n companyId: string;\r\n enrollmentId: string;\r\n addDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, fileUpload: GroupSubmissionFileUpload) => Promise;\r\n updateDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, fileUpload: GroupSubmissionFileUpload) => Promise;\r\n deleteDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, docId: string, name: string) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n}\r\n\r\ninterface State {\r\n checkForm: boolean;\r\n currentTab: number;\r\n nextTab?: number;\r\n leftNavTabs: TabOption[];\r\n}\r\n\r\nclass DirectToCarrierBase extends React.PureComponent{\r\n private tabTitles = {\r\n application: 'Application',\r\n documents: 'Documents',\r\n signatures: 'Signatures'\r\n };\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n checkForm: false,\r\n currentTab: 0,\r\n leftNavTabs: [{ title: this.tabTitles.application, formName: UpdateFormName },\r\n { title: this.tabTitles.documents, error: this.getMissingDocumentsError } ]\r\n }; \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.groupApplication.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CSignatureRequired)) {\r\n var updateLeftNavTabs = [\r\n { title: this.tabTitles.application, formName: UpdateFormName },\r\n { title: this.tabTitles.documents },\r\n { title: this.tabTitles.signatures, formName: AddSignatureForm, warning: this.getSignatureWarning },\r\n ] as TabOption[];\r\n this.setState({ leftNavTabs: updateLeftNavTabs });\r\n } \r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n var updateLeftNavTabs = [\r\n { title: this.tabTitles.application, formName: UpdateFormName },\r\n { title: this.tabTitles.documents, error: this.getMissingDocumentsError }\r\n ] as TabOption[];\r\n\r\n if (prevProps.groupApplication.documents.length !== this.props.groupApplication.documents.length) { \r\n this.setState({ leftNavTabs: updateLeftNavTabs });\r\n }\r\n\r\n if (prevProps.groupApplication.directToCarrier!.egaLinks !== this.props.groupApplication.directToCarrier!.egaLinks) {\r\n var warning: boolean;\r\n if (this.props.groupApplication.directToCarrier!.egaLinks.length > 0)\r\n warning = this.props.groupApplication.directToCarrier!.egaLinks.find(e => e.isSigned) ? false : true;\r\n else\r\n warning = false\r\n \r\n if (this.props.groupApplication.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.D2CSignatureRequired)) {\r\n updateLeftNavTabs.push(\r\n {\r\n title: this.tabTitles.signatures,\r\n formName: AddSignatureForm,\r\n warning: warning\r\n }\r\n );\r\n\r\n this.setState({ leftNavTabs: updateLeftNavTabs });\r\n }\r\n }\r\n }\r\n\r\n handleChangeTab = (index: number) => {\r\n if (this.state.currentTab === 0) {\r\n this.setState({ nextTab: index, checkForm: true });\r\n } else {\r\n this.setState({ currentTab: index });\r\n }\r\n }\r\n\r\n handleAbandonChangesCancel = () => {\r\n this.setState({ checkForm: false, nextTab: undefined });\r\n }\r\n\r\n handleAbandonChangesContinue = () => {\r\n if (this.state.nextTab !== undefined)\r\n this.setState({ currentTab: this.state.nextTab, checkForm: false, nextTab: undefined });\r\n }\r\n\r\n _getSignatureWarning = memoizeOne((egas: EgaLink[]) => {\r\n if (egas.length === 0)\r\n return false;\r\n return egas.find(e => e.isSigned) ? false : true;\r\n });\r\n\r\n get getSignatureWarning() {\r\n return this._getSignatureWarning(this.props.groupApplication.directToCarrier!.egaLinks)\r\n }\r\n get getMissingDocumentsError() {\r\n if (this.props.groupApplication.carrierCode.toUpperCase() === getLookupValue('HORIZONCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode)) {\r\n return this.props.groupApplication.documents.length == 0\r\n }\r\n else\r\n return false;\r\n \r\n }\r\n\r\n render() {\r\n const isD2C = this.props.groupApplication.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrier\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.state.currentTab === 0 &&\r\n \r\n }\r\n {\r\n this.state.currentTab === 1 &&\r\n \r\n }\r\n {\r\n this.state.currentTab === 2 &&\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n container: {\r\n marginTop: 36\r\n },\r\n rightCol: {\r\n paddingLeft: 34\r\n },\r\n};\r\n\r\nexport default DirectToCarrierBase;\r\n","import { Grid, Paper, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { required } from 'utility/form_validation';\r\nimport { styles as commonFormStyles } from '../../utility/common_styles';\r\nimport palette from '../../utility/palette';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport SaveButton from '../common/save_button';\r\nimport { getLookupValue, LOOKUP_TYPE_IDS } from 'utility';\r\n\r\nexport const FORM_NAME = 'DIRECT_TO_CARRIER_NO_GROUPS';\r\n\r\nexport interface FormData {\r\n carrierAgentId: string;\r\n groupId: string;\r\n}\r\n\r\ninterface ComponentProps {\r\n isSubmitted: boolean;\r\n isAdmin: boolean;\r\n carrierName: string;\r\n carrierCode: string;\r\n companyName: string | undefined;\r\n saveLoading: boolean;\r\n submitLoading: boolean;\r\n hasSyncWarnings: boolean;\r\n isFinalized: boolean;\r\n handleSubmitBtn: () => void;\r\n}\r\n\r\ninterface Props extends ComponentProps, InjectedFormProps { }\r\n\r\nconst validateAgentId = required('Agent Id is required');\r\nconst validateGroupId = required('Group Id is required');\r\nconst validateBrokerId = required('Broker Id is required');\r\n\r\nconst DirectToCarrierNoGroupsForm = (props: Props) => {\r\n const showSaveButtons = !props.isSubmitted || props.isAdmin;\r\n const showSubmitButton = props.isSubmitted && props.isAdmin;\r\n const disableSaveButton = props.saveLoading || props.submitLoading;\r\n const isCyberScout = props.carrierCode === getLookupValue('CYBERSCOUTCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n const isLifeSecure = props.carrierCode === getLookupValue('LIFESECURECARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n const isAllstate = props.carrierCode === getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n const isBrokerField = isCyberScout || isAllstate;\r\n const showGroupId = props.isAdmin && !isAllstate;\r\n const cyberScoutDocUrl = `/Content/Helpfiles/CyberScout-Appointment-Process-pages-2.pdf`;\r\n const getCarrierAgentLabel = () => {\r\n if (isCyberScout) {\r\n return 'Broker ID';\r\n }\r\n if (isAllstate) {\r\n return 'Broker AB-License Number'\r\n }\r\n return 'Agent ID';\r\n }\r\n\r\n\r\n return (\r\n <>\r\n {isAllstate &&\r\n {props.carrierName} Administration\r\n }\r\n {!isAllstate &&\r\n {props.carrierName} Appointment Information\r\n }\r\n
\r\n {isAllstate &&\r\n You must be appointed with {props.carrierName} and designate Benefitmall as your General Agency in order to process this enrollment. \r\n \r\n Please send an email to AB-Licensing@Allstate.com and provide the following information:\r\n \r\n
    \r\n
  • Broker Name
  • \r\n
  • Broker Email
  • \r\n
  • Broker Phone
  • \r\n
  • Broker State
  • \r\n
  • Broker Situs State appointment needed for the case enrollment
  • \r\n
\r\n\r\n After emailing {props.carrierName}, you will receive an AB Agent ID within 3-5 business days. Please enter your ID below before submitting:\r\n
\r\n }\r\n {!isAllstate &&\r\n You must be appointed with {props.carrierName} in order to process this enrollment.  \r\n \r\n {isLifeSecure &&\r\n Please navigate to the appointment site to complete the process. After completing the appointment, you will receive an agent ID number within 2 days. \r\n \r\n }\r\n {isCyberScout &&\r\n \r\n Please refer to the {props.carrierName} Appointment Instructions document for instructions on the appointment process. After completing the appointment,\r\n you will receive a {props.carrierName} Broker ID within 2 business days. \r\n \r\n }\r\n Please enter your ID below before submitting:\r\n \r\n }\r\n
\r\n \r\n
\r\n {isAllstate &&\r\n

{props.carrierName} Broker AB-License Number

\r\n }\r\n {!isAllstate &&\r\n

Appointment Information

\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {showGroupId &&\r\n \r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n {showSaveButtons &&\r\n
\r\n \r\n Save {props.carrierName} Info\r\n \r\n {showSubmitButton &&\r\n \r\n {props.isFinalized ? 'Resubmit' : 'Submit'} Members to {props.carrierName}\r\n \r\n }\r\n
\r\n }\r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n ...commonFormStyles,\r\n paper: {\r\n padding: '20px 40px',\r\n marginTop: 8\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n rightButton: {\r\n marginLeft: 8\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n },\r\n info: {\r\n marginBottom: 20\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n link: {\r\n color: palette.blue.primary\r\n },\r\n bullets: {\r\n marginTop: 0,\r\n marginBottom: 0\r\n }\r\n};\r\n\r\nexport default reduxForm({ form: FORM_NAME })(DirectToCarrierNoGroupsForm);","import DirectToCarrierNoGroupsForm, { FormData, FORM_NAME } from 'components/forms/direct_to_carrier_no_groups_form';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { FormErrors, getFormSyncWarnings, submit } from 'redux-form';\r\nimport { resubmitEnrollment, updateGroupSubmission } from '../../redux/actions';\r\nimport { convertGroupSubmissionToGroupSubmissionDTO, EnrollmentReducerState, EnrollmentReducerStatePropType, GroupSubmission, GroupSubmissionDTO } from '../../redux/reducers';\r\nimport { ReduxState } from '../../redux/store';\r\nimport auth from '../../utility/auth';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n companyName: string | undefined;\r\n enrollmentId: string;\r\n groupApplication: GroupSubmission;\r\n}\r\n\r\ninterface StateProps {\r\n enrollmentState: EnrollmentReducerState;\r\n syncWarnings: FormErrors;\r\n}\r\ninterface DispatchProps {\r\n submitForm: () => void;\r\n resubmitEnrollment: (groupId: string) => Promise;\r\n updateGroupSubmission: (groupSubmission: GroupSubmissionDTO) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps\r\n\r\ninterface State {\r\n saveLoading: boolean;\r\n submitLoading: boolean;\r\n}\r\n\r\nclass DirectToCarrierNoGroupsUpdate extends React.PureComponent{\r\n isEnrollmentSubmitted = !!this.props.enrollmentState.submissionDate;\r\n isAdmin = auth.isUserEnrollmentSuperAdmin();\r\n isDirectToCarrier = this.props.groupApplication.directToCarrier && this.props.groupApplication.directToCarrier!.isFinalized;\r\n isFinalized = this.isDirectToCarrier ? this.props.groupApplication.directToCarrier!.isFinalized : false;\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n saveLoading: false,\r\n submitLoading: false\r\n };\r\n }\r\n\r\n get initialValues() {\r\n const d2c = this.props.groupApplication.directToCarrier;\r\n const hasAoR = d2c && d2c.agentsOfRecord && d2c.agentsOfRecord.length > 0;\r\n const values: Partial = {\r\n groupId: d2c ? d2c.groupId : undefined,\r\n carrierAgentId: d2c && hasAoR ? (d2c.agentsOfRecord != null ? d2c.agentsOfRecord[0].carrierAgentId : undefined) : undefined\r\n };\r\n return values;\r\n }\r\n\r\n saveLoadingOn = () => {\r\n this.setState({ saveLoading: true })\r\n }\r\n\r\n saveLoadingOff = () => {\r\n this.setState({ saveLoading: false })\r\n }\r\n\r\n submitLoadingOn = () => {\r\n this.setState({ submitLoading: true })\r\n }\r\n\r\n submitLoadingOff = () => {\r\n this.setState({ submitLoading: false })\r\n }\r\n\r\n handleSubmit = () => {\r\n this.submitLoadingOn();\r\n this.props.submitForm();\r\n }\r\n\r\n processSave = async (formValues: FormData) => {\r\n var groupSubmission = this.props.groupApplication;\r\n if (groupSubmission.directToCarrier) {\r\n groupSubmission.directToCarrier.groupId = formValues.groupId;\r\n if (!!groupSubmission.directToCarrier.agentsOfRecord && groupSubmission.directToCarrier.agentsOfRecord.length > 0) {\r\n groupSubmission.directToCarrier.agentsOfRecord[0].carrierAgentId = formValues.carrierAgentId\r\n }\r\n var newGroupSubmissionDTO = convertGroupSubmissionToGroupSubmissionDTO(groupSubmission);\r\n if (!this.state.submitLoading) {\r\n this.saveLoadingOn();\r\n await this.props.updateGroupSubmission(newGroupSubmissionDTO).then(this.saveLoadingOff, this.saveLoadingOff);\r\n } else {\r\n await this.props.updateGroupSubmission(newGroupSubmissionDTO).then(this.submitLoadingOff, this.submitLoadingOff);\r\n this.props.resubmitEnrollment(newGroupSubmissionDTO.id)\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n 0}\r\n saveLoading={this.state.saveLoading}\r\n submitLoading={this.state.submitLoading}\r\n handleSubmitBtn={this.handleSubmit}\r\n onSubmit={this.processSave}\r\n isFinalized={this.isFinalized}\r\n />\r\n );\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (DirectToCarrierNoGroupsForm as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n enrollmentState: state.enrollment,\r\n syncWarnings: getFormSyncWarnings(FORM_NAME)(state),\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n submitForm: () => dispatch(submit(FORM_NAME)), //TODO FIX THIS\r\n resubmitEnrollment: (groupId) => dispatch(resubmitEnrollment([groupId])),\r\n updateGroupSubmission: (groupSubmission) => dispatch(updateGroupSubmission(ownProps.companyId, ownProps.enrollmentId, groupSubmission)),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DirectToCarrierNoGroupsUpdate);\r\n","import React from 'react';\r\nimport { Grid, Paper, Typography } from '@material-ui/core';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport MessageCard from '../common/message_card';\r\n\r\n\r\ninterface ComponentProps {\r\n location: messageCardLocation\r\n}\r\n\r\nexport enum messageCardLocation {\r\n PlanSetup,\r\n GroupApps, \r\n Submission,\r\n}\r\n\r\n\r\nconst displayMessage = (location: messageCardLocation) => {\r\n if (location == 1) {\r\n return (\"MetLife Legal Plans partners with BenefitMall for administering this product. BenefitMall will generate monthly invoices, collect premium payments and manage new hires and terminations.\");\r\n } else if (location == 2) {\r\n return (\"MetLife Legal Plans partners with BenefitMall for administering this product. BenefitMall will generate monthly invoices, collect premium payments and manage new hires and terminations.\");\r\n } else if (location == 3) {\r\n return (\"MetLife Legal Plans partners with BenefitMall for administering this product. BenefitMall will generate monthly invoices, collect premium payments and manage new hires and terminations.\");\r\n } else {\r\n return undefined;\r\n }\r\n}\r\n\r\n\r\nconst MetLawInfoCards = (props: ComponentProps) => {\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n infoText: {\r\n fontSize: 14,\r\n marginBottom: 20\r\n },\r\n InfoIcon: {\r\n display: 'inline',\r\n paddingTop: 10,\r\n paddingLeft: 20,\r\n }\r\n};\r\n\r\n\r\nexport default MetLawInfoCards;","import { Grid, Paper, Typography } from '@material-ui/core';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport MessageCard from '../../components/common/message_card'\r\n\r\ninterface Props {\r\n instruction: string\r\n}\r\nconst GroupApplicationInstruction = React.memo((props: Props) => {\r\n return (\r\n {props.instruction}}\r\n elevation={1}\r\n messageLevel={0}\r\n />\r\n )\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n fontFamily: 'Roboto',\r\n fontSize: 24,\r\n fontWeight: 500,\r\n color: palette.grey.text,\r\n marginBottom: '10px'\r\n },\r\n subheader: {\r\n color: palette.grey.text,\r\n fontSize: '.875rem'\r\n },\r\n paper: {\r\n marginTop: 24,\r\n paddingTop: 16,\r\n paddingRight: 24,\r\n paddingLeft: 0,\r\n paddingBottom: 16,\r\n borderWidth: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n borderTopWidth: 10,\r\n borderTopColor: palette.blue[900],\r\n position: 'relative'\r\n },\r\n iconBox: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n icon: {\r\n fontSize: '20px'\r\n },\r\n instruction: {\r\n whiteSpace: 'pre-line'\r\n }\r\n}\r\n\r\nexport default GroupApplicationInstruction;","import { CircularProgress, Paper } from '@material-ui/core';\r\nimport Title from 'components/common/title';\r\nimport EnrollmentType from 'components/group_applications/enrollment_type';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { addGroupSubmissionDocument, deleteGroupSubmissionDocument, displaySnackbar, fetchEnrollment, fetchGroupSubmissions, fetchPlans, GroupSubmissionFileUpload, updateGroupSubmission, updateGroupSubmissionDocument } from 'redux/actions';\r\nimport { convertGroupSubmissionToGroupSubmissionDTO, EnrollmentReducerState, EnrollmentReducerStatePropType, GroupSubmission, GroupSubmissionDTO, GroupSubmissionReducerState, Plan, PlanReducerState, PlanReducerStatePropType, SnackbarVariant, CarrierConfigurations } from 'redux/reducers';\r\nimport { ENROLLMENT_SUBMISSION_MECHANISMS } from 'utility/lookup_utils';\r\nimport BasePage from '../../components/common/base_page';\r\nimport Breadcrumb from '../../components/common/breadcrumb';\r\nimport SubmissionDocumentsUpsert from '../../components/group_applications/submission_documents_upsert';\r\nimport GroupDocumentsText from '../../components/group_applications/group_documents_text';\r\nimport ReferenceInformationUpsert from '../../components/group_applications/reference_information_upsert';\r\nimport { ReduxState } from '../../redux/store';\r\nimport routes from '../../router/routes';\r\nimport DirectToCarrierBase from './direct_to_carrier_base';\r\nimport DirectToCarrierNoGroupsUpdate from './direct_to_carrier_no_groups_update';\r\nimport GroupApplicationInstruction from './group_application_instruction';\r\nimport { getCarrierConfigurations, getCarrierConfigConfigurationTypes } from 'utility';\r\nimport MetLawInfoCards from 'components/forms/MetLawInfoCards';\r\nimport { getLookupValue, LOOKUP_TYPE_IDS } from 'utility';\r\nimport auth from 'utility/auth'\r\n\r\n\r\ninterface ComponentProps { }\r\ninterface StateProps {\r\n companyName: string | undefined;\r\n groupApplicationState: GroupSubmissionReducerState;\r\n enrollmentState: EnrollmentReducerState;\r\n planState: PlanReducerState;\r\n}\r\ninterface DispatchProps {\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n fetchPlans: (companyId: string, enrollmentId: string) => Promise;\r\n fetchGroupSubmissions: (companyId: string, enrollmentId: string) => Promise;\r\n addGroupSubmissionDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, fileUpload: GroupSubmissionFileUpload) => Promise;\r\n updateGroupSubmissionDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, fileUpload: GroupSubmissionFileUpload) => Promise;\r\n updateGroupSubmission: (companyId: string, enrollmentId: string, groupSubmission: GroupSubmissionDTO) => Promise;\r\n deleteGroupSubmissionDocument: (companyId: string, enrollmentId: string, groupSubmissionId: string, docId: string, name: string) => Promise;\r\n}\r\n\r\ntype Props = RouteComponentProps & ComponentProps & StateProps & DispatchProps;\r\n\r\ninterface State {\r\n loading: boolean;\r\n carrierConfigurations: CarrierConfigurations[];\r\n}\r\n\r\nclass GroupApplication extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n carrierConfigurations: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n if (!this.props.enrollmentState.id) {\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n }\r\n if (this.props.groupApplicationState.list.length === 0 ||\r\n ( this.props.groupApplicationState.list.filter(ga => ga.carrierCode === getLookupValue('HORIZONCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode)).length>0)) {\r\n promises.push(this.props.fetchGroupSubmissions(this.companyId, this.enrollmentId));\r\n }\r\n if (this.props.planState.list.length === 0) {\r\n promises.push(this.props.fetchPlans(this.companyId, this.enrollmentId));\r\n }\r\n\r\n Promise.all(promises).then(this.onLoadComplete, this.loadingOff);\r\n }\r\n\r\n renderMetLawCards = () => {\r\n const display = this.getGroupSubmission ? this.getGroupSubmission.carrierCode === getLookupValue('HYATLEGALCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode) : false;\r\n if (display) {\r\n return (\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n\r\n onLoadComplete = () => {\r\n const configs = getCarrierConfigurations(this.props.planState.list);\r\n this.setState({ carrierConfigurations: configs, loading: false });\r\n }\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n get companyId() {\r\n return this.props.match.params[routes.enrollmentKits.params!.companyId!.replace(':', '')];\r\n }\r\n\r\n get enrollmentId() {\r\n return this.props.match.params[routes.enrollmentKits.params!.enrollmentId!.replace(':', '')];\r\n }\r\n\r\n get groupSubmissionId() {\r\n return this.props.match.params[routes.enrollmentKits.params!.groupSubmissionId!.replace(':', '')];\r\n }\r\n\r\n _getInstruction = memoizeOne((plans: Plan[]) => {\r\n if (this.getGroupSubmission && plans) {\r\n const planIds = this.getGroupSubmission!.plans.map(p => p.id);\r\n const plan = plans.find(p => planIds.includes(p.id) && p.configurationTypeIds.includes(29));\r\n if (plan) {\r\n const config = plan.configurations && plan.configurations.find(a => a.configurationTypeId === 29);\r\n const insruction = config && config.additionalInfo && config.additionalInfo.find(a => a.key === \"INSTRUCTION\");\r\n return insruction;\r\n }\r\n }\r\n return undefined;\r\n });\r\n\r\n get instruction() {\r\n return this._getInstruction(this.props.planState.list);\r\n }\r\n\r\n _getGroupSubmission = memoizeOne((groupApplications: GroupSubmission[]) => {\r\n return groupApplications.find(gApp => gApp.id === this.groupSubmissionId);\r\n });\r\n\r\n get getGroupSubmission() {\r\n return this._getGroupSubmission(this.props.groupApplicationState.list);\r\n }\r\n\r\n get breadCrumb() {\r\n return ['Dashboard', 'Group Applications', this.getGroupSubmission ? this.getGroupSubmission.carrierName : ''];\r\n };\r\n\r\n handleEnrollmentTypeChange = async (id: number) => {\r\n var newGroupSubmission = convertGroupSubmissionToGroupSubmissionDTO(this.getGroupSubmission!);\r\n newGroupSubmission.enrollmentTypeId = id;\r\n await this.props.updateGroupSubmission(this.companyId, this.enrollmentId, newGroupSubmission);\r\n }\r\n\r\n handlePageChange = (index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n } else if (index === 1) {\r\n const { path, params } = routes.groupApplication;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n };\r\n\r\n render() {\r\n const { loading, carrierConfigurations } = this.state;\r\n const groupApplication = this.getGroupSubmission;\r\n const isDigitalFormRecord = groupApplication ? groupApplication.isDigitalDocument : false;\r\n const carrierConfigs = groupApplication ? getCarrierConfigConfigurationTypes(groupApplication.carrierCode, carrierConfigurations) : [];\r\n const useD2cNoSubmission = carrierConfigs.indexOf(50) > -1;\r\n const d2cOverrideShowForm = groupApplication ? groupApplication.isDirectToCarrierRouteOverriden && !!groupApplication.directToCarrier : false;\r\n const isEBN = !!groupApplication\r\n && (groupApplication.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.eBN ||\r\n groupApplication.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.autoGen)\r\n && !d2cOverrideShowForm && !isDigitalFormRecord;\r\n\r\n const isD2C = !!groupApplication && groupApplication.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrier || d2cOverrideShowForm;\r\n const isD2CNoGroupApp = !!groupApplication && groupApplication.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrierNoGroupApp;\r\n const isUserSuperAdmin = auth.isUserEnrollmentSuperAdmin();\r\n\r\n return (\r\n \r\n {loading ?\r\n
\r\n

Loading your information

\r\n \r\n
\r\n :\r\n <>\r\n {this.props.companyName}\r\n \r\n {this.instruction && this.instruction.value &&\r\n \r\n }\r\n {this.renderMetLawCards()}\r\n {!!groupApplication &&\r\n <>\r\n {(isD2CNoGroupApp || useD2cNoSubmission) &&\r\n \r\n }\r\n {(isEBN || isD2CNoGroupApp) &&\r\n \r\n }\r\n {(isEBN || isD2CNoGroupApp) &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {isD2C &&\r\n \r\n }\r\n {/*(isUserSuperAdmin && !isD2C) &&\r\n \r\n REMOVING THIS - allowing super user to change app type after confirmation currently causes too many problems*/}\r\n \r\n }\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (GroupApplication as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n planState: PlanReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n companyName: state.enrollment.company.name,\r\n enrollmentState: state.enrollment,\r\n groupApplicationState: state.groupSubmission,\r\n planState: state.plan\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchEnrollment: (enrollmentId) => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchGroupSubmissions: (companyId, enrollmentId) => dispatch(fetchGroupSubmissions(companyId, enrollmentId)),\r\n fetchPlans: (companyId, enrollmentId) => dispatch(fetchPlans(companyId, enrollmentId)),\r\n addGroupSubmissionDocument: (companyId, enrollmentId, groupSubmissionId, fileUpload) => dispatch(addGroupSubmissionDocument(companyId, enrollmentId, groupSubmissionId, fileUpload)),\r\n updateGroupSubmissionDocument: (companyId, enrollmentId, groupSubmissionId, fileUpload) => dispatch(updateGroupSubmissionDocument(companyId, enrollmentId, groupSubmissionId, fileUpload)),\r\n deleteGroupSubmissionDocument: (companyId, enrollmentId, groupSubmissionId, docId, name) => dispatch(deleteGroupSubmissionDocument(companyId, enrollmentId, groupSubmissionId, docId, name)),\r\n displaySnackbar: (message, variant) => dispatch(displaySnackbar(message, variant)),\r\n updateGroupSubmission: (companyId, enrollmentId, groupSubmission) => dispatch(updateGroupSubmission(companyId, enrollmentId, groupSubmission)),\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: { padding: 20 }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(GroupApplication);","import React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport routes from 'router/routes';\r\nimport kaiserUtil from 'utility/kaiser_utility';\r\n\r\ninterface Props extends RouteComponentProps {\r\n}\r\n\r\n\r\nconst KaiserResponseHandler = (props: Props) => {\r\n const acceptKey = routes.kaiserResponse.params!.accept!.replace(':', '');\r\n const accept = props.match.params[acceptKey];\r\n let isAccepted = accept === \"true\";\r\n kaiserUtil.handleResponse(isAccepted);\r\n return (\r\n <>\r\n {isAccepted ?\r\n
\r\n
You have accepted kaiser T&C.This window will close itself
\r\n
\r\n :\r\n
\r\n
You have rejected kaiser T&C.This window will close itself
\r\n
\r\n } \r\n \r\n );\r\n\r\n}\r\n\r\nexport default KaiserResponseHandler;","import React from \"react\";\r\nimport { Redirect, RouteComponentProps } from \"react-router\";\r\nimport routes from \"router/routes\";\r\nimport auth from \"utility/auth\";\r\n\r\ninterface Props extends RouteComponentProps {\r\n}\r\n\r\nconst EmployeeInvitationLanding = (props: Props) => {\r\n let route;\r\n if(auth.isLoggedIn()){\r\n route = routes.loginComplete.path;\r\n }\r\n else{\r\n const invitationTokenVarName = routes.employeeInvitationLanding.params!.invitationToken!.replace(':', '');\r\n const invitationToken = props.match.params[invitationTokenVarName];\r\n const { path } = routes.employeeSignUp;\r\n route = `${path}?eId=${invitationToken}`;\r\n }\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport default EmployeeInvitationLanding;","import * as Bowser from \"bowser\";\r\n\r\nconst _browser = Bowser.getParser(window.navigator.userAgent);\r\n\r\nexport const isFireFox = ()=>{\r\n return (_browser.getBrowser().name === 'Firefox') ? true : false;\r\n}\r\n\r\nexport const isIE = ()=>{\r\n return (_browser.getBrowser().name === 'Internet Explorer') ? true : false;\r\n}\r\n\r\n\r\n","import { Grid, List, ListItem, Paper, Step, StepContent, StepLabel, Stepper } from '@material-ui/core';\r\nimport withStyle, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport { SvgIconProps } from '@material-ui/core/SvgIcon';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CompleteIcon from '@material-ui/icons/CheckCircle';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport { isIE } from 'utility/browser_utils';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport InProgressIcon from './icons/icon_in_progress';\r\nimport NotStartedIcon from './icons/icon_not_started';\r\n\r\nexport interface IStep {\r\n id: number;\r\n label: string;\r\n hidden?: boolean;\r\n icon?: React.ComponentType;\r\n}\r\n\r\ninterface ComponentProps {\r\n steps: IStep[];\r\n activeStep?: number;\r\n completedSteps: Set;\r\n incompleteSteps?: Set;\r\n inCompleteRenewalSteps?: Set;\r\n disabled?: boolean;\r\n warningMessages?: { [id: number]: JSX.Element };\r\n census?: boolean;\r\n stepsLoading?: boolean;\r\n onClick?: (step: number, mobile?: boolean) => void;\r\n stepContent: (step?: number) => JSX.Element;\r\n componentBelowStepper?: JSX.Element;\r\n stepContentHeader?: JSX.Element;\r\n}\r\ntype Props = ComponentProps & StyledComponentProps & WithWidth;\r\n\r\n\r\nclass DynamicStepper extends React.PureComponent{\r\n\r\n stepChecks = (step: IStep) => {\r\n const { classes = {}, activeStep, incompleteSteps, inCompleteRenewalSteps, disabled } = this.props;\r\n const active = !disabled && activeStep === step.id;\r\n const complete = !active && this.props.completedSteps.has(step.id);\r\n const incomplete = !active && incompleteSteps && incompleteSteps.has(step.id);\r\n const inCompleteRenewal = !active && inCompleteRenewalSteps && inCompleteRenewalSteps.has(step.id);\r\n const isMobile = ['xs', 'sm'].includes(this.props.width);\r\n const containerClasses = `${classes.iconContainer} ${!isMobile ? classes.noneMobileBackground : ''} ${active ? classes.iconActive : complete ? classes.iconCompleted : incomplete ? classes.iconIncomplete : ''}`.trim();\r\n const IconComponent = complete ? CheckIcon : incomplete ? Warning : step.icon;\r\n const icon = IconComponent ?
: undefined;\r\n\r\n return { active, complete, incomplete, inCompleteRenewal, icon };\r\n };\r\n\r\n render() {\r\n const { classes = {}, steps, disabled, activeStep, onClick, census, stepContent, warningMessages, width, componentBelowStepper, stepContentHeader } = this.props;\r\n \r\n const renderedStepContent = stepContent(activeStep);\r\n const isMobile = ['xs', 'sm'].includes(width);\r\n return (\r\n \r\n {!isMobile ?\r\n <>\r\n \r\n
\r\n {disabled &&
}\r\n \r\n \r\n {steps.filter(step => !step.hidden).map(step => {\r\n const { active, complete, incomplete, inCompleteRenewal } = this.stepChecks(step);\r\n let statusIcon: any;\r\n let stepIcon: any;\r\n let Icon: React.ComponentType;\r\n let warning: string | undefined;\r\n if (complete) {\r\n Icon = CompleteIcon;\r\n statusIcon = \r\n }\r\n else if (incomplete || active) {\r\n Icon = InProgressIcon;\r\n statusIcon = \r\n }\r\n else {\r\n Icon = NotStartedIcon;\r\n statusIcon = \r\n }\r\n if (step.icon) {\r\n const StepIcon: React.ComponentType = step.icon;\r\n stepIcon = \r\n }\r\n if (incomplete)\r\n warning = 'Missing Info';\r\n else if (inCompleteRenewal)\r\n warning = 'Missing Current Coverage';\r\n return (\r\n onClick && onClick(step.id)}\r\n >\r\n \r\n {stepIcon}\r\n \r\n {step.label}
\r\n {warning &&\r\n \r\n \r\n {warning}\r\n }\r\n
\r\n {statusIcon}\r\n
\r\n \r\n )\r\n })}\r\n
\r\n
\r\n {componentBelowStepper ?\r\n <>\r\n {componentBelowStepper}\r\n : undefined\r\n }\r\n {warningMessages && activeStep && warningMessages[activeStep] &&\r\n \r\n \r\n {warningMessages[activeStep]}\r\n \r\n \r\n }\r\n
\r\n \r\n \r\n \r\n {stepContentHeader ? <> {stepContentHeader} : undefined}\r\n {renderedStepContent}\r\n \r\n \r\n :\r\n
\r\n {!disabled ?\r\n \r\n {steps.filter(step => !step.hidden).map(step => {\r\n const { active, complete, icon } = this.stepChecks(step);\r\n return (\r\n \r\n onClick && onClick(step.id, true)}\r\n className={classes.label}\r\n icon={icon}\r\n >\r\n {step.label}\r\n \r\n \r\n {active && renderedStepContent}\r\n \r\n \r\n )\r\n })}\r\n \r\n :\r\n renderedStepContent\r\n }\r\n
\r\n }\r\n
\r\n );\r\n }\r\n};\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n activeStepWrapper: {\r\n height: 56,\r\n backgroundColor: palette.grey.selectedTab,\r\n borderRight: `5px solid ${palette.blue.primary}`,\r\n paddingRight: 11,\r\n cursor: 'pointer',\r\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\r\n },\r\n alignCenter: {\r\n display: 'inline-flex',\r\n alignItems: 'center'\r\n },\r\n censusWrapper: {\r\n position: 'sticky',\r\n top: 75,\r\n marginTop: 25\r\n },\r\n gutter: {\r\n maxWidth: '34px !important'\r\n },\r\n iconContainer: {\r\n borderRadius: '50%',\r\n color: palette.grey.light,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n width: 28,\r\n height: 28\r\n },\r\n iconActive: {\r\n backgroundColor: palette.blue.primary,\r\n },\r\n iconCompleted: {\r\n backgroundColor: palette.green.primary,\r\n },\r\n iconIncomplete: {\r\n backgroundColor: palette.orange.primary,\r\n },\r\n icon: {\r\n fontSize: 18\r\n },\r\n ieLocked: {\r\n position: 'absolute',\r\n width: '17%',\r\n height: '65%',\r\n opacity: 0.6,\r\n backgroundColor: palette.grey.dark,\r\n },\r\n label: {\r\n color: palette.blue.primary,\r\n lineHeight: '2em'\r\n },\r\n list: {\r\n padding: 0,\r\n fontFamily: 'Roboto',\r\n fontSize: 18\r\n },\r\n locked: {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n opacity: 0.6,\r\n backgroundColor: palette.grey.dark,\r\n },\r\n mobileWrapper: {\r\n marginTop: 20\r\n },\r\n mobile: {\r\n backgroundColor: 'inherit',\r\n padding: 0,\r\n width: '100%'\r\n },\r\n missingDataWarning: {\r\n fontSize: 15,\r\n color: palette.orange.warning,\r\n display: 'inline-flex',\r\n alignItems: 'center'\r\n },\r\n noneMobileBackground: {\r\n backgroundColor: palette.grey.lightText,\r\n },\r\n stepWrapper: {\r\n height: 55,\r\n cursor: 'pointer',\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\r\n },\r\n warningIcon: {\r\n fontSize: 18,\r\n marginRight: 4\r\n },\r\n warningGrid: {\r\n marginTop: 20\r\n },\r\n wrapper: {\r\n position: 'sticky',\r\n top: 75,\r\n marginTop: 20\r\n },\r\n};\r\n\r\nexport default withWidth()(withStyle(styles)(DynamicStepper));","import { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\n\r\ninterface Props {\r\n step: number;\r\n activeStep?: number;\r\n}\r\n\r\ninterface Props extends StyledComponentProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst StepCircle2 = (props: Props) => {\r\n return (\r\n
\r\n \r\n {props.children}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n circle: {\r\n borderRadius: '50%',\r\n width: 28,\r\n height: 28,\r\n background: '#AFAEAE',\r\n marginTop: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n active: {\r\n background: palette.blue.primatry\r\n },\r\n circleNumber: {\r\n color: 'white',\r\n fontSize: 16,\r\n },\r\n};\r\n\r\nexport default StepCircle2;","import { Button, DialogActions, DialogContent, Paper, Table, TableBody, TableRow, TableHead, TableCell } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { InjectedFormProps, reduxForm, Field } from 'redux-form';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { styles } from 'utility/common_styles';\r\nimport palette from \"utility/palette\";\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport { ICensusMap } from '../forms/census_import_mapping_form';\r\nimport { CensusTemplate } from 'redux/reducers';\r\nimport { required } from '../../utility/form_validation';\r\n\r\n\r\nexport const FORM_NAME = 'CENSUS_IMPORT_TEMPLATE_DIALOG';\r\n\r\nexport interface FormData {\r\n newTemplateName: string\r\n}\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onCancel: () => void;\r\n mappings: ICensusMap[];\r\n censusTemplates: CensusTemplate[];\r\n}\r\n\r\nfunction getMappedFieldCount(mappings: string) {\r\n let obj = JSON.parse(mappings);\r\n return obj.XlsMappings.length\r\n}\r\n\r\nconst validateTemplateNameRequired = required(\"Template Name is Required.\");\r\n\r\n\r\ninterface Props extends InjectedFormProps, ComponentProps { };\r\n\r\ninterface State {\r\n duplicateTemplateName: boolean\r\n}\r\n\r\nclass CensusImportTemplateDialogForm extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n duplicateTemplateName: false\r\n }\r\n }\r\n\r\n newTemplateNameOnChange = (e: any) => {\r\n const newTemplateName = e.target.value;\r\n let isDuplicate = false;\r\n if (this.props.censusTemplates.filter(t => t.templateName === newTemplateName).length > 0) {\r\n isDuplicate = true;\r\n }\r\n this.setState({ duplicateTemplateName: isDuplicate });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n
\r\n \r\n Save mappings as a new template so you can use them for future census imports.

\r\n \r\n \r\n \r\n \r\n \r\n Template Name\r\n Fields Mapped\r\n \r\n \r\n \r\n {\r\n this.props.censusTemplates.filter(t => t.isSystemTemplate === false).map(t => (\r\n \r\n {t.templateName}\r\n {getMappedFieldCount(t.templateJson)}\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 duplicate template name - template will be over written if you save now.\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\nconst componentStyles: { [key: string]: React.CSSProperties } = {\r\n templatesContainer: {\r\n width: '75%',\r\n margin: '0 auto',\r\n padding: \"5 20 20 20\",\r\n position: 'relative',\r\n marginTop: 15,\r\n fontFamily: 'Roboto'\r\n },\r\n greyHeaderText: {\r\n fontSize: 24,\r\n margin: '15px 0',\r\n color: palette.grey.midText\r\n }\r\n};\r\n\r\n\r\nexport default reduxForm({ form: FORM_NAME })(CensusImportTemplateDialogForm as any);","import React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm} from 'redux-form';\r\nimport { RadioControlGroupField, TextFormField } from '../common/reduxform_fields';\r\nimport { styles } from 'utility/common_styles';\r\nimport pallette from 'utility/palette';\r\nimport { Paper, FormControlLabel, Radio } from '@material-ui/core';\r\nimport { CensusImportReducerState, CensusTemplate } from 'redux/reducers/census_import_reducer';\r\nimport SaveButton from '../../components/common/save_button';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport Help from '@material-ui/icons/Help';\r\n\r\nconst nativeSelect = { native: true };\r\nexport const FORM_NAME = 'CENSUSIMPORT_SETUP';\r\nexport enum TemplateCategory {\r\n Standard = '1',\r\n HealthConnect = '2',\r\n NewCustom = '3',\r\n ExistingCustom = '4',\r\n Blank = ''\r\n}\r\nexport interface ICensusImportSetupData extends Partial{\r\n addReplaceCensus: string,\r\n templateSelection: TemplateCategory,\r\n templateId: string\r\n}\r\n\r\n\r\ninterface ComponentProps {\r\n censusImport: CensusImportReducerState;\r\n showAddReplaceCensus: boolean;\r\n showHealthConnect: boolean;\r\n hasEnrollmentStarted: boolean;\r\n}\r\n\r\ninterface Props extends InjectedFormProps, ComponentProps {}\r\n\r\ninterface State { \r\n templateType: TemplateCategory;\r\n}\r\n\r\nclass CensusImportSetUpForm extends React.PureComponent {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.handleRadGrpTemplateClick = this.handleRadGrpTemplateClick.bind(this);\r\n\r\n this.state = {\r\n templateType: props.initialValues.templateSelection || TemplateCategory.Blank\r\n }\r\n }\r\n\r\n handleRadGrpTemplateClick( e: any ) {\r\n this.setState({ templateType: e.target.value });\r\n }\r\n\r\n hasCustomTemplates = () => {\r\n let hasTemplates: boolean = false;\r\n hasTemplates = this.props.censusImport.censusTemplates.filter( t=> t.isSystemTemplate === false).length > 0;\r\n return hasTemplates;\r\n }\r\n\r\n savedTemplateRadioStyle = () => {\r\n if( this.hasCustomTemplates()){\r\n return componentStyles.radioButton;\r\n }\r\n else{\r\n return componentStyles.radioButtonDisabled;\r\n }\r\n }\r\n\r\n addReplaceRadioStyle = () => {\r\n return this.props.hasEnrollmentStarted? componentStyles.radioButtonDisabled : componentStyles.radioButton;\r\n }\r\n\r\n render(){\r\n return(\r\n
\r\n \r\n
\r\n

Setup Import

\r\n

Tell us a bit about the import settings. You’ll upload the file in the next step.

\r\n { this.props.showAddReplaceCensus &&\r\n

\r\n

What would you like to do with the imported data?

\r\n \r\n }\r\n disabled={this.props.hasEnrollmentStarted}\r\n />\r\n }\r\n style={componentStyles.radioButtonSpacing}\r\n />\r\n \r\n

\r\n }\r\n

\r\n

What template does your file match?

\r\n \r\n Enrollment Census Template (download)}\r\n control={}\r\n />\r\n { this.props.showHealthConnect &&\r\n HealthConnect - NY/NJ (download)}\r\n control={}\r\n style={componentStyles.radioButtonSpacing}\r\n />\r\n }\r\n \r\n Choose a saved template}/>\r\n }\r\n control={}\r\n disabled={!this.hasCustomTemplates()}\r\n style={componentStyles.radioButtonSpacing}\r\n />\r\n }\r\n style={componentStyles.radioButtonSpacing}\r\n />\r\n\r\n \r\n
\r\n { this.state.templateType === TemplateCategory.ExistingCustom &&\r\n \r\n \r\n {\r\n this.props.censusImport.censusTemplates.filter( (t:CensusTemplate) => t.isSystemTemplate === false ).map( (template) => )\r\n }\r\n \r\n }\r\n

\r\n
\r\n
\r\n
\r\n \r\n NEXT\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst componentStyles: { [key: string]: React.CSSProperties } = {\r\n ...styles,\r\n paperMargin: {\r\n marginTop: 24\r\n },\r\n buttonContainer: {\r\n textAlign: 'right',\r\n marginTop: 24\r\n },\r\n nextButton: {\r\n width: 128\r\n },\r\n radioButtonSpacing: {\r\n marginTop: -15\r\n },\r\n link: {\r\n color: pallette.blue.primary,\r\n textDecoration: 'none'\r\n },\r\n radioGroupHeading:{\r\n marginBottom: 0,\r\n paddingTop: 10,\r\n color: pallette.grey.midText\r\n },\r\n};\r\n\r\nexport default reduxForm({ form: FORM_NAME })(CensusImportSetUpForm as any);\r\n\r\n","import { Button, FormControlLabel, Paper, Radio, Table, TableBody, TableCell, TableHead, TableRow } from '@material-ui/core';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport CensusImportTemplateDialogForm, { FormData as TemplateDialogData } from 'components/forms/census_import_save_template_dialog_form';\r\nimport { ICensusImportSetupData, TemplateCategory } from 'components/forms/census_import_setup_form';\r\nimport { ICensusUploadFileData } from 'components/forms/census_import_upload_file_form';\r\nimport { addCensusImportTemplate, fetchCensusTemplates, getCenusXlsColumnMappings, IGetXlsColumnMappingsMsg, updateCensusImportTemplate } from 'redux/actions';\r\nimport { CensusImportColumnPreview, CensusImportReducerState, CensusTemplate } from 'redux/reducers/census_import_reducer';\r\nimport { ReduxState } from 'redux/store';\r\nimport { styles } from 'utility/common_styles';\r\nimport palette from 'utility/palette';\r\nimport SaveButton from '../../components/common/save_button';\r\nimport { required } from '../../utility/form_validation';\r\nimport { RadioControlGroupField, TextFormField } from '../common/reduxform_fields';\r\n\r\nconst nativeSelect = { native: true };\r\nexport const FORM_NAME = 'CENSUSIMPORT_MAP';\r\nexport interface ICensusImportMappingData {\r\n TODO_FIX: string\r\n}\r\n\r\nexport interface ICensusMappingData {\r\n sheetName: string,\r\n headerRowIndex: string,\r\n XlsMappings: ICensusMap[],\r\n xlsDateFormats: ICensusColumnDateFormat[]\r\n}\r\n\r\nexport interface ICensusMap {\r\n xlsColHeader: string,\r\n targetProperty: string,\r\n xlsColIndex: number,\r\n required: boolean\r\n}\r\n\r\nexport interface ICensusColumnDateFormat {\r\n targetProperty: string,\r\n dateFormatType: string\r\n}\r\n\r\ninterface StateProps {\r\n censusImport: CensusImportReducerState;\r\n}\r\ninterface DispatchProps {\r\n getCenusXlsColumnMappings: (msg: IGetXlsColumnMappingsMsg) => Promise;\r\n addCensusImportTemplate: (msg: CensusTemplate) => Promise;\r\n updateCensusImportTemplate: (msg: CensusTemplate) => Promise;\r\n fetchCensusTemplates: () => Promise;\r\n}\r\n\r\ninterface ComponentProps {\r\n companyId: string,\r\n enrollmentId: string,\r\n setUpData: ICensusImportSetupData,\r\n uploadFileData: ICensusUploadFileData,\r\n censusMappingData: ICensusMappingData\r\n handleMappingDataOnChange: (censusMappingData: ICensusMappingData) => void\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps & StateProps & DispatchProps;\r\n\r\ninterface State {\r\n loading: boolean,\r\n templateDialogOpen: boolean\r\n}\r\n\r\nconst validateXlsColumnRequired = required(\"Import Column Selection Required.\");\r\n\r\nclass CensusImportMappingFormComponent extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n templateDialogOpen: false\r\n }\r\n }\r\n\r\n setLoadingOff = () => this.setState({ loading: false });\r\n setLoadingOn = () => this.setState({ loading: true });\r\n\r\n componentDidMount() {\r\n this.setLoadingOn();\r\n if (\r\n this.props.setUpData.templateSelection === TemplateCategory.NewCustom || \r\n this.props.setUpData.templateSelection === TemplateCategory.ExistingCustom\r\n ) {\r\n const msg: IGetXlsColumnMappingsMsg = {\r\n companyId: this.props.companyId,\r\n enrollmentId: this.props.enrollmentId,\r\n fileId: this.props.censusImport.censusUploadFileInfo.uploadDocumentInfo.id,\r\n sheetName: this.props.uploadFileData.sheetName,\r\n headerRow: this.props.uploadFileData.headerRow,\r\n }\r\n this.props.getCenusXlsColumnMappings(msg)\r\n .then(this.setInitialState, this.setLoadingOff);\r\n }\r\n else {\r\n this.setInitialState();\r\n }\r\n }\r\n\r\n setInitialState = () => {\r\n this.props.censusMappingData.XlsMappings.forEach((map) => {\r\n this.props.change(map.targetProperty as any, map.xlsColIndex)\r\n });\r\n this.props.censusMappingData.xlsDateFormats.forEach((format) => {\r\n this.props.change(format.targetProperty + \"_dateformat\" as any, format.dateFormatType);\r\n });\r\n this.setLoadingOff();\r\n }\r\n\r\n showSection(forCategory: TemplateCategory): boolean {\r\n return this.props.setUpData.templateSelection === forCategory\r\n }\r\n\r\n showRequiredIndicator(isRequired: boolean) {\r\n return isRequired ? * : \r\n }\r\n\r\n getXlsColumnPreview = () => {\r\n let colPreviewList: CensusImportColumnPreview[] = [];\r\n if (this.props.censusImport.censusXlsColumnList.xlsColPreview) {\r\n colPreviewList = this.props.censusImport.censusXlsColumnList.xlsColPreview\r\n }\r\n return colPreviewList;\r\n }\r\n\r\n doOpenTemplateDialog = () => {\r\n this.setState({ templateDialogOpen: true });\r\n }\r\n doCancelTemplateDialog = () => {\r\n this.setState({ templateDialogOpen: false });\r\n }\r\n doCloseTemplateDialog = () => {\r\n this.setState({ templateDialogOpen: false });\r\n }\r\n\r\n doSaveTemplateDialog = (formData: TemplateDialogData) => {\r\n let mappingData: ICensusMappingData = { ...this.props.censusMappingData }\r\n mappingData.sheetName = this.props.uploadFileData.sheetName;\r\n mappingData.headerRowIndex = this.props.uploadFileData.headerRow;\r\n let saveMsg: CensusTemplate = {\r\n id: \"\",\r\n userName: \"\", // this is going to be the logged in user\r\n templateName: formData.newTemplateName,\r\n hasHeaders: true,\r\n isSystemTemplate: false,\r\n templateJson: JSON.stringify(mappingData)\r\n }\r\n const templates = this.props.censusImport.censusTemplates.filter(t => t.templateName === formData.newTemplateName);\r\n if (templates.length > 0) {\r\n saveMsg.id = templates[0].id;\r\n this.props.updateCensusImportTemplate(saveMsg)\r\n .then(() => {\r\n this.doCloseTemplateDialog();\r\n });\r\n }\r\n else {\r\n this.props.addCensusImportTemplate(saveMsg)\r\n .then(() => {\r\n this.doCloseTemplateDialog();\r\n });\r\n }\r\n }\r\n\r\n getCensusMappings = () => {\r\n let censusMappings: ICensusMap[] = [];\r\n return censusMappings;\r\n }\r\n\r\n importColumnSelectionOnChange = (e: any) => {\r\n const option = e.target.options[e.target.selectedIndex];\r\n const el = e.target;\r\n let isRequired: boolean = false;\r\n const censusField = this.props.censusImport.censusFields.filter(f => f.targetProperty === el.name);\r\n if (censusField.length > 0) {\r\n isRequired = censusField[0].required;\r\n }\r\n\r\n const targetProperty = el.name;\r\n const xlsColHeader = option.text.split(\":\")[0].trim()\r\n const xlsColIndex = el.value;\r\n\r\n const censusMap = Boolean(xlsColIndex) ? {\r\n xlsColHeader: xlsColHeader,\r\n xlsColIndex: xlsColIndex,\r\n targetProperty: targetProperty,\r\n required: isRequired\r\n }: undefined;\r\n if(!!censusMap){\r\n this.props.handleMappingDataOnChange({\r\n ...this.props.censusMappingData,\r\n XlsMappings: [\r\n ...this.props.censusMappingData.XlsMappings,\r\n censusMap\r\n ]\r\n });\r\n }\r\n }\r\n\r\n importColumnDateFormatOnChange = (e: any) => {\r\n const el = e.target;\r\n const targetProperty = el.name.split(\"_\")[0];\r\n let newFormat: ICensusColumnDateFormat = {\r\n targetProperty: targetProperty,\r\n dateFormatType: el.value\r\n }\r\n let newMappings = { ...this.props.censusMappingData };\r\n let format = newMappings.xlsDateFormats.find(f => f.targetProperty === targetProperty);\r\n if (format) {\r\n format.targetProperty = newFormat.targetProperty;\r\n format.dateFormatType = newFormat.dateFormatType;\r\n }\r\n else {\r\n newMappings.xlsDateFormats.push(newFormat);\r\n }\r\n this.props.handleMappingDataOnChange(newMappings);\r\n }\r\n\r\n isSystemTemplate = () => {\r\n return ((this.props.setUpData.templateSelection === TemplateCategory.Standard\r\n || this.props.setUpData.templateSelection === TemplateCategory.HealthConnect));\r\n }\r\n\r\n GetDateField = (targetProperty: string) => {\r\n let dateJsx =
;\r\n if (targetProperty.toLowerCase() === 'dob' || targetProperty.toLocaleLowerCase() === 'hiredate'\r\n || targetProperty.toLocaleLowerCase() === 'marriagedate' || targetProperty.toLocaleLowerCase() === 'cobraeventdate'\r\n || targetProperty.toLocaleLowerCase() === 'cobrabegindate' || targetProperty.toLocaleLowerCase() === 'cobraenddate'\r\n || targetProperty.toLocaleLowerCase() === 'cobralossofcoveragedate') {\r\n dateJsx =
\r\n \r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n \r\n
\r\n }\r\n return dateJsx\r\n }\r\n\r\n getTemplateName = () => {\r\n let templateName = \"\";\r\n if (this.props.setUpData.templateSelection === TemplateCategory.ExistingCustom) {\r\n const template = this.props.censusImport.censusTemplates.find(t => t.id === this.props.setUpData.templateId);\r\n if (template) {\r\n templateName = template.templateName;\r\n }\r\n }\r\n return templateName;\r\n }\r\n \r\n render() {\r\n return (\r\n
\r\n {this.state.loading ?\r\n
\r\n

Loading your information

\r\n \r\n
\r\n :\r\n <>\r\n \r\n
\r\n

Map Fields

\r\n

Map your fields to our system's fields so your data can successfully import.

\r\n
\r\n {(this.showSection(TemplateCategory.Standard) || this.showSection(TemplateCategory.HealthConnect)) &&\r\n
\r\n

\r\n Template: Enrollment Census Template
\r\n No mappings needed!\r\n

\r\n
\r\n }\r\n {(this.showSection(TemplateCategory.NewCustom) || this.showSection(TemplateCategory.ExistingCustom)) &&\r\n
\r\n \r\n \r\n \r\n Destination Column\r\n Imported Column\r\n \r\n \r\n \r\n {this.props.censusImport.censusFields.map(fld => (\r\n \r\n {fld.labelName}{this.showRequiredIndicator(fld.required)}\r\n \r\n \r\n \r\n {\r\n this.getXlsColumnPreview().map(col => (\r\n \r\n ))\r\n }\r\n
\r\n {this.GetDateField(fld.targetProperty)}\r\n
\r\n
\r\n ))}\r\n
\r\n

\r\n
\r\n

Save these field mappings for future imports

\r\n

If these mappings are common in your census files, you can save them as a template for future imports

\r\n
\r\n \r\n SAVE MAPPINGS AS A TEMPLATE\r\n \r\n
\r\n
\r\n
\r\n }\r\n
\r\n {this.state.templateDialogOpen &&\r\n \r\n }\r\n\r\n
\r\n \r\n NEXT\r\n \r\n
\r\n }\r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nconst componentStyles: { [key: string]: React.CSSProperties } = {\r\n ...styles,\r\n noBorder: {\r\n border: 'none'\r\n },\r\n label: {\r\n display: 'flex',\r\n fontSize: 16,\r\n color: palette.grey.midText,\r\n borderBottom: 'none',\r\n paddingTop: 30,\r\n paddingBottom: 22\r\n },\r\n subHeading: {\r\n fontSize: 20,\r\n fontWeight: 500,\r\n color: palette.grey.midText\r\n },\r\n subHeadingCenter: {\r\n fontSize: 20,\r\n fontWeight: 500,\r\n color: palette.grey.midText,\r\n textAlign: 'center'\r\n },\r\n disabledBackground: {\r\n color: 'rgba(0, 0, 0, 0.26)',\r\n boxShadow: 'none',\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)'\r\n },\r\n buttonContainer: {\r\n textAlign: 'right',\r\n marginTop: 24\r\n },\r\n buttonText: {\r\n color: palette.blue['900']\r\n },\r\n nextButton: {\r\n width: 128\r\n },\r\n tableHeadingLeft: {\r\n border: 'none',\r\n fontSize: 20,\r\n color: palette.grey.midText,\r\n width: '40%'\r\n },\r\n tableHeadingRight: {\r\n border: 'none',\r\n fontSize: 20,\r\n color: palette.grey.midText,\r\n width: '55%'\r\n },\r\n radioWidth: {\r\n width: \"45%\"\r\n },\r\n hidden: {\r\n display: 'none'\r\n }\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n censusImport: state.censusImport\r\n \r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n getCenusXlsColumnMappings: (msg: IGetXlsColumnMappingsMsg) => dispatch(getCenusXlsColumnMappings(msg)),\r\n addCensusImportTemplate: (msg: CensusTemplate) => dispatch(addCensusImportTemplate(msg)),\r\n updateCensusImportTemplate: (msg: CensusTemplate) => dispatch(updateCensusImportTemplate(msg)),\r\n fetchCensusTemplates: () => dispatch(fetchCensusTemplates()),\r\n };\r\n}\r\n\r\nconst CensusImportMappingForm = connect(mapStateToProps, mapDispatchToProps)(CensusImportMappingFormComponent);\r\n\r\nexport default reduxForm({ form: FORM_NAME })(CensusImportMappingForm);","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport { DocumentType } from 'utility/export_documents_utils';\r\nimport http from 'utility/http';\r\nimport { fetchEmployees } from '../actions/employee_actions';\r\nimport { FileUpload } from '../actions/plan_actions';\r\nimport { CensusField, CensusImportXlsColumnList, CensusTemplate, CensusUploadFileInfo, CenusSaveImportResult } from '../reducers/census_import_reducer';\r\nimport { displaySnackbar, displaySnackbarWithErrors } from './app_actions';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\n//Store Census Import Templates Action Creator\r\nexport const storeCensusTemplates = acFactory('STORE_TEMPLATES');\r\n\r\nexport function fetchCensusTemplates() {\r\n return async (dispatch: any) => {\r\n const templates = await http('CensusImport/GetTemplates');\r\n dispatch(storeCensusTemplates(templates));\r\n };\r\n}\r\n\r\n// Add New Census Import Template\r\nexport const storeAddCensusTemplate = acFactory('STORE_ADD_CENSUS_TEMPLATE');\r\n\r\nexport function addCensusImportTemplate(template: CensusTemplate) {\r\n return async (dispatch: any) => {\r\n try {\r\n const templateId = await http('CensusImport/AddTemplate', {\r\n method: 'POST',\r\n body: JSON.stringify(template)\r\n });\r\n template.id = templateId;\r\n dispatch(storeAddCensusTemplate(template));\r\n dispatch(displaySnackbar('Successfully Saved Import Mappings', 'success'));\r\n }\r\n catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error saving Cenus Import Mappings'));\r\n throw ex\r\n }\r\n }\r\n}\r\n\r\n// Update New Census Import Template\r\nexport const storeUpdateCensusTemplate = acFactory('STORE_UPDATE_CENSUS_TEMPLATE');\r\n\r\nexport function updateCensusImportTemplate(template: CensusTemplate) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http('CensusImport/UpdateTemplate', {\r\n method: 'PUT',\r\n body: JSON.stringify(template)\r\n });\r\n dispatch(storeUpdateCensusTemplate(template));\r\n dispatch(displaySnackbar('Successfully saved template', 'success'));\r\n }\r\n catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error saving template'));\r\n throw ex\r\n }\r\n }\r\n}\r\n\r\n\r\n//Store Census Fields Action Creator\r\nexport const storeCensusFields = acFactory('STORE_CENSUS_FIELDS');\r\n\r\nexport function fetchCensusFields() {\r\n return async (dispatch: any) => {\r\n const fields = await http('CensusImport/GetCensusFields');\r\n dispatch(storeCensusFields(fields));\r\n };\r\n}\r\n\r\n//Store Census File Upload Info \r\nexport const storeCensusUploadFileInfo = acFactory('STORE_CENSUS_UPLOAD_FILE_INFO');\r\n\r\n// Upload census file Thunk\r\nexport function censusFileUpload(companyId: string, enrollmentId: string, fileUpload: FileUpload) {\r\n return async (dispatch: any) => {\r\n const formData = new FormData();\r\n fileUpload.file && formData.append('file', fileUpload.file);\r\n fileUpload.title && formData.append('title', fileUpload.title);\r\n fileUpload.typeId && formData.append('typeId', String(fileUpload.typeId));\r\n formData.append('companyId', companyId);\r\n formData.append('enrollmentId', enrollmentId);\r\n\r\n try {\r\n const censusUploadFileInfo = await http(\"CensusImport/UploadCensusFile\", { method: 'POST', body: formData });\r\n dispatch(storeCensusUploadFileInfo(censusUploadFileInfo));\r\n dispatch(displaySnackbar('Census file uploaded', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with uploading census file'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Delete Census file thunk -- this just removes the document from the Redux state \r\nexport function deleteCensusFile(showSnackbar: boolean) {\r\n return async (dispatch: any) => {\r\n try {\r\n const censusUploadFileInfo: CensusUploadFileInfo =\r\n {\r\n uploadDocumentInfo: {\r\n type: DocumentType.CENSUS,\r\n id: '',\r\n typeId: 0,\r\n storageUrl: '',\r\n fileName: '',\r\n active: true\r\n },\r\n xlsPreview: []\r\n };\r\n const censusImportXlsColumnList: CensusImportXlsColumnList =\r\n {\r\n xlsColPreview: []\r\n }\r\n dispatch(storeCensusUploadFileInfo(censusUploadFileInfo));\r\n dispatch(storeCensusXlsColumnMappings(censusImportXlsColumnList))\r\n if (showSnackbar) {\r\n dispatch(displaySnackbar('Census file removed', 'deletion'));\r\n }\r\n\r\n }\r\n catch (ex) {\r\n throw ex\r\n }\r\n }\r\n}\r\n\r\n// ----- Census Xls Column Mappings - For saving custom excel templates\r\n\r\nexport const storeCensusXlsColumnMappings = acFactory('STORE_CENSUS_IMPORT_XLS_COLUMN_MAPPINGS')\r\n\r\nexport interface IGetXlsColumnMappingsMsg {\r\n companyId: string,\r\n enrollmentId: string,\r\n fileId: string,\r\n sheetName: string,\r\n headerRow: string,\r\n}\r\n\r\nexport function getCenusXlsColumnMappings(msg: IGetXlsColumnMappingsMsg) {\r\n return async (dispatch: any) => {\r\n try {\r\n const getXlsColumnMappingsResult = await http('CensusImport/GetXlsColumnMappings', {\r\n method: 'POST',\r\n body: JSON.stringify(msg)\r\n });\r\n dispatch(storeCensusXlsColumnMappings(getXlsColumnMappingsResult));\r\n }\r\n catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error retreiving Excel File Data'));\r\n throw ex\r\n }\r\n }\r\n}\r\n\r\n\r\n// Save Census -----------------------------------------------\r\n\r\nexport const storeSaveCensusImport = acFactory('STORE_SAVE_CENSUS_IMPORT');\r\n\r\nexport interface ISaveCensusImportMsg {\r\n companyId: string,\r\n enrollmentId: string,\r\n templateId: string,\r\n templateJson: string,\r\n fileId: string,\r\n sheetName: string,\r\n headerRow: string,\r\n dependentMapping: string,\r\n replaceCensus: string\r\n}\r\n\r\nexport function saveCensusImport(msg: ISaveCensusImportMsg) {\r\n return async (dispatch: any) => {\r\n try {\r\n\r\n const censusSaveImportResult = await http('CensusImport/ImportCensusFile', {\r\n method: 'POST',\r\n body: JSON.stringify(msg)\r\n });\r\n dispatch(storeSaveCensusImport(censusSaveImportResult));\r\n if (censusSaveImportResult.importErrors.length > 0 || censusSaveImportResult.errorMessages.length > 0) {\r\n dispatch(displaySnackbarWithErrors(censusSaveImportResult, 'Import errors - no data saved')); //TODO Test this one\r\n } else {\r\n dispatch(displaySnackbar('Import complete', 'success'));\r\n await dispatch(fetchEmployees(msg.companyId, msg.enrollmentId))\r\n }\r\n const censusUploadFileInfo: CensusUploadFileInfo =\r\n {\r\n uploadDocumentInfo: {\r\n type:'CENSUS',\r\n id: '',\r\n typeId: 0,\r\n storageUrl: '',\r\n fileName: '',\r\n active: true\r\n },\r\n xlsPreview: []\r\n };\r\n dispatch(storeCensusUploadFileInfo(censusUploadFileInfo));\r\n }\r\n catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with importing census file'));\r\n throw ex\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { Paper, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@material-ui/core';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { ICensusMappingData } from 'components/forms/census_import_mapping_form';\r\nimport { ICensusImportSetupData, TemplateCategory } from 'components/forms/census_import_setup_form';\r\nimport { ICensusUploadFileData } from 'components/forms/census_import_upload_file_form';\r\nimport { ISaveCensusImportMsg, saveCensusImport } from 'redux/actions';\r\nimport { CensusImportReducerState } from 'redux/reducers/census_import_reducer';\r\nimport { EnrollmentReducerState } from 'redux/reducers/enrollment_reducer';\r\nimport { ReduxState } from 'redux/store';\r\nimport { styles } from 'utility/common_styles';\r\nimport pallette from 'utility/palette';\r\nimport MessageCard, { MessageCardLevel } from '../../components/common/message_card';\r\nimport SaveButton from '../../components/common/save_button';\r\nimport { salariesRequiredSelector } from 'utility/enrollment_utility';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\n\r\nexport const FORM_NAME = 'CENSUSIMPORT_REVIEW';\r\nexport interface ICensusImportReviewData {\r\n}\r\n\r\ninterface ComponentProps {\r\n companyId: string,\r\n enrollmentId: string,\r\n setUpData: ICensusImportSetupData,\r\n uploadFileData: ICensusUploadFileData,\r\n mappingData: ICensusMappingData\r\n}\r\n\r\ninterface StateProps {\r\n censusImport: CensusImportReducerState;\r\n enrollment: EnrollmentReducerState;\r\n showSalaryWarning: boolean;\r\n}\r\ninterface DispatchProps {\r\n saveCensusImport: (msg: ISaveCensusImportMsg, ) => Promise;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps & StateProps & DispatchProps;\r\n\r\n\r\ninterface State {\r\n showImportDiv: boolean,\r\n showResultDiv: boolean,\r\n showErrorDiv: boolean,\r\n isSaving: boolean,\r\n}\r\n\r\nclass CensusImportReviewFormObj extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n showImportDiv: true,\r\n showResultDiv: false,\r\n showErrorDiv: false,\r\n isSaving: false\r\n }\r\n }\r\n\r\n\r\n handleSaveCensusImport = (formValues: ICensusImportReviewData) => {\r\n let tempJson: string = \"\";\r\n let templateId: string = this.props.setUpData.templateId;\r\n if (this.props.setUpData.templateSelection === TemplateCategory.NewCustom\r\n || this.props.setUpData.templateSelection === TemplateCategory.ExistingCustom) {\r\n tempJson = JSON.stringify(this.props.mappingData)\r\n templateId = \"\";\r\n }\r\n const msg: ISaveCensusImportMsg = {\r\n companyId: this.props.companyId,\r\n enrollmentId: this.props.enrollmentId,\r\n templateId: templateId,\r\n templateJson: tempJson,\r\n fileId: this.props.censusImport.censusUploadFileInfo.uploadDocumentInfo.id,\r\n sheetName: this.props.uploadFileData.sheetName,\r\n headerRow: this.props.uploadFileData.headerRow,\r\n dependentMapping: this.props.uploadFileData.dependentMapping,\r\n replaceCensus: this.props.setUpData.addReplaceCensus\r\n };\r\n this.setState({ isSaving: true })\r\n this.props.saveCensusImport(msg)\r\n .then(() => {\r\n this.setState({\r\n showImportDiv: false,\r\n showResultDiv: true,\r\n isSaving: false\r\n })\r\n },\r\n () => { this.setState({ isSaving: false }) }\r\n );\r\n }\r\n\r\n showSuccessDiv = () => {\r\n return (this.props.censusImport.censusSaveImportResult.importErrors.length === 0\r\n && this.props.censusImport.censusSaveImportResult.errorMessages.length === 0\r\n );\r\n }\r\n\r\n showErrorsDiv = () => {\r\n return (\r\n this.props.censusImport.censusSaveImportResult.importErrors.length > 0\r\n || this.props.censusImport.censusSaveImportResult.errorMessages.length > 0\r\n );\r\n }\r\n\r\n render() {\r\n const importErrors = this.props.censusImport.censusSaveImportResult.importErrors;\r\n const errorMessages = this.props.censusImport.censusSaveImportResult.errorMessages;\r\n return (\r\n
\r\n \r\n
\r\n

Import And Review

\r\n

Import data and review any errors that occurred.

\r\n
\r\n {this.state.showImportDiv && (this.props.censusImport.censusUploadFileInfo.uploadDocumentInfo.fileName.length > 0) &&\r\n
\r\n
\r\n

File: {this.props.censusImport.censusUploadFileInfo.uploadDocumentInfo.fileName}

\r\n \r\n Import Census Data\r\n \r\n
\r\n
\r\n }\r\n {\r\n this.state.showResultDiv &&\r\n
\r\n {this.showErrorsDiv() &&\r\n
\r\n \r\n {this.props.showSalaryWarning && <>\r\n \r\n }\r\n \r\n

\r\n Error Summary
\r\n {importErrors.length + errorMessages.length} Total Errors\r\n\r\n

\r\n {importErrors.length > 0 &&\r\n \r\n \r\n \r\n Row\r\n Error Type\r\n Error Column\r\n \r\n \r\n \r\n {importErrors.map(error => (\r\n \r\n {error.rowIdentifier}\r\n {error.errorType}\r\n {error.xlsColHeader}\r\n \r\n ))}\r\n \r\n
\r\n }\r\n {errorMessages.length > 0 &&\r\n \r\n \r\n \r\n Error\r\n \r\n \r\n \r\n {errorMessages.map(error => (\r\n \r\n {error}\r\n \r\n ))}\r\n \r\n
\r\n }\r\n\r\n
\r\n
\r\n }\r\n {\r\n this.showSuccessDiv() &&\r\n
\r\n
\r\n
\r\n \r\n

\r\n Data imported successfully\r\n
\r\n
\r\n }\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst componentStyles: { [key: string]: React.CSSProperties } = {\r\n ...styles,\r\n headerInfo: {\r\n fontSize: 14\r\n },\r\n subHeading: {\r\n fontSize: 20,\r\n color: pallette.grey.midText\r\n },\r\n saveButton: {\r\n marginTop: 10,\r\n width: 244\r\n },\r\n reviewParagraph: {\r\n textAlign: 'center',\r\n fontSize: 16,\r\n color: pallette.grey.midText\r\n },\r\n errorText: {\r\n fontSize: 14,\r\n color: pallette.grey.midText\r\n },\r\n tableHeader: {\r\n fontSize: 14,\r\n color: pallette.grey.tableHeader\r\n },\r\n iconContainer: {\r\n borderRadius: '50%',\r\n backgroundColor: pallette.green.primary,\r\n color: '#FFFFFF',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n width: 56,\r\n height: 56,\r\n display: 'inlineBlock',\r\n margin: '0 auto'\r\n },\r\n icon: {\r\n fontSize: 48\r\n },\r\n successText: {\r\n fontSize: 20,\r\n color: pallette.grey.midText\r\n }\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n const showSalaryWarning = salariesRequiredSelector(state, true);\r\n return {\r\n showSalaryWarning: showSalaryWarning,\r\n censusImport: state.censusImport,\r\n enrollment: state.enrollment\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n saveCensusImport: (msg: ISaveCensusImportMsg) => dispatch(saveCensusImport(msg)),\r\n };\r\n}\r\n\r\nconst CensusImportReviewForm = connect(mapStateToProps, mapDispatchToProps)(CensusImportReviewFormObj);\r\n\r\nexport default reduxForm({ form: FORM_NAME })(CensusImportReviewForm);","import { Button, Checkbox, DialogActions, DialogContent, FormControlLabel, TextField, Typography } from '@material-ui/core';\r\nimport Help from '@material-ui/icons/Help';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\ninterface ComponentProps {\r\n reduceValidation?:boolean;\r\n open: boolean;\r\n fileName: string;\r\n defaultValues?: { title?: string; description?: string; isAcknowledgmentDocument?: boolean; };\r\n employeesElectedCurrentPlanCount?: number;\r\n onCancel: () => void;\r\n onSave: (title?: string, description?: string, isAcknowledgmentDocument?: boolean) => void;\r\n}\r\n\r\ninterface State {\r\n title?: string;\r\n description?: string;\r\n isAcknowledgmentDocument?: boolean;\r\n}\r\n\r\ntype Props = ComponentProps;\r\n\r\nclass DocumentUploadDialogue extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n title: !!props.defaultValues && !!props.defaultValues.title ? props.defaultValues.title : this.props.fileName,\r\n description: props.defaultValues ? props.defaultValues.description : undefined,\r\n isAcknowledgmentDocument: props.defaultValues ? props.defaultValues.isAcknowledgmentDocument : false\r\n };\r\n }\r\n\r\n get disabled() {\r\n return (\r\n this.props.defaultValues\r\n && this.state.title === this.props.defaultValues.title\r\n && (this.state.description === this.props.defaultValues.description\r\n || this.state.title === ''\r\n || this.nameCharacterLimitExceeded\r\n || this.descriptionCharacterLimitExceeded)\r\n && this.state.isAcknowledgmentDocument === this.props.defaultValues.isAcknowledgmentDocument\r\n );\r\n }\r\n\r\n get nameCharacterLimitExceeded() {\r\n return (\r\n !!this.state.title && (this.state.title.length > 100)\r\n )\r\n }\r\n\r\n get descriptionCharacterLimitExceeded() {\r\n return (\r\n !!this.state.description && (this.state.description.length > 250)\r\n )\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n if (prevProps.defaultValues !== this.props.defaultValues) {\r\n this.setState({\r\n title: this.props.defaultValues && !!this.props.defaultValues.title ? this.props.defaultValues.title : this.props.fileName,\r\n description: this.props.defaultValues ? this.props.defaultValues.description : undefined,\r\n isAcknowledgmentDocument: this.props.defaultValues ? this.props.defaultValues.isAcknowledgmentDocument : false\r\n });\r\n };\r\n }\r\n\r\n handleTitleChange = (event: any) => {\r\n this.setState({ title: event.target.value });\r\n };\r\n\r\n handleDescriptionChange = (event: any) => {\r\n this.setState({ description: event.target.value });\r\n };\r\n\r\n handleIsAcknowledgmentDocumentChange = (event: any) => {\r\n this.setState(prevState => {\r\n return {\r\n isAcknowledgmentDocument: !prevState.isAcknowledgmentDocument\r\n };\r\n })\r\n }\r\n\r\n isDocAckDisabled = () => {\r\n return (!!this.props.employeesElectedCurrentPlanCount && this.props.employeesElectedCurrentPlanCount > 0)\r\n || (this.props.reduceValidation);\r\n }\r\n\r\n handleSave = () => {\r\n this.props.onSave(this.state.title, this.state.description, this.state.isAcknowledgmentDocument);\r\n this.handleCancel();\r\n };\r\n\r\n handleCancel = () => {\r\n this.setState({\r\n title: undefined,\r\n description: undefined\r\n });\r\n this.props.onCancel();\r\n };\r\n\r\n handleEnter = (ev: React.KeyboardEvent) => {\r\n if (ev.key === 'Enter' && !this.disabled)\r\n this.handleSave();\r\n };\r\n \r\n render() {\r\n return (\r\n \r\n \r\n \r\n This name will be shown to employees during enrollment.\r\n \r\n {this.props.fileName &&\r\n \r\n File Uploaded: {this.props.fileName}\r\n \r\n }\r\n \r\n \r\n \r\n }\r\n label={\r\n <>\r\n \r\n Require employees to acknowledgment this document.\r\n \r\n }\r\n />\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n \r\n );\r\n };\r\n}\r\n\r\nexport const styles: { [key: string]: React.CSSProperties } = {\r\n ...commonStyles,\r\n header: {\r\n fontSize: 18\r\n },\r\n subHeader: {\r\n color: palette.grey.text\r\n },\r\n tooltipSpan: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: palette.grey.text\r\n },\r\n};\r\n\r\nexport default DocumentUploadDialogue;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst DocumentLinkIcon = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n \r\nexport default DocumentLinkIcon;","import { Card, Hidden, IconButton } from '@material-ui/core';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport ReactPlaceholder from 'react-placeholder';\r\nimport { Document } from 'redux/reducers';\r\nimport palette from 'utility/palette';\r\nimport DocumentIcon from '../common/icons/icon_document';\r\nimport DocumentLinkIcon from '../common/icons/icon_document_link';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\ninterface Props {\r\n document: Document;\r\n isSummary?: boolean;\r\n loading: boolean;\r\n disableSave?: boolean;\r\n hideDate?: boolean;\r\n titleStyles?: React.CSSProperties;\r\n onEdit?: (documentId: string) => void;\r\n onDelete?: (documentId: string) => void;\r\n}\r\n\r\nconst PlanDocumentCard = (props: Props) => {\r\n const tooltip = props.isSummary ? 'Upload new document' : 'Edit document name';\r\n const fileLabel = props.isSummary && !props.document.fileName ? 'Link imported from CRQS on ' : `${props.document.fileName} uploaded on `;\r\n const createdDate = moment.utc(props.document.createdDate).local().format(\"MM/DD/YY\");\r\n const titleStyles = React.useMemo(() => ({ ...styles.header, ...props.titleStyles }), [props.titleStyles]);\r\n return (\r\n \r\n \r\n
\r\n {props.isSummary && !props.document.fileName ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n }\r\n
\r\n {props.hideDate &&
}\r\n \r\n {props.document.title}\r\n \r\n {!props.hideDate &&\r\n <>\r\n
\r\n \r\n \r\n {props.document.description}\r\n \r\n \r\n {fileLabel} {createdDate}\r\n \r\n \r\n \r\n }\r\n
\r\n \r\n {props.onEdit &&\r\n props.onEdit && props.onEdit(props.document.id)}>\r\n \r\n \r\n }\r\n />\r\n }\r\n props.onDelete && props.onDelete(props.document.id)}>\r\n \r\n \r\n }\r\n />\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport const styles: { [key: string]: React.CSSProperties } = {\r\n buttonGroup: {\r\n position: 'absolute',\r\n top: 40,\r\n right: 5,\r\n backgroundColor: 'white'\r\n },\r\n button: {\r\n height: 10,\r\n width: 10,\r\n position: 'relative'\r\n },\r\n buttonIcon: {\r\n position: 'absolute'\r\n },\r\n card: {\r\n boxShadow: 'none',\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.dark,\r\n marginTop: 20,\r\n height: 80\r\n },\r\n content: {\r\n marginTop: 10,\r\n marginLeft: 10,\r\n marginBottom: -35,\r\n marginRight: 10,\r\n position: 'relative',\r\n },\r\n createdDate: {\r\n position: 'absolute',\r\n left: 2,\r\n top: 42,\r\n fontSize: 14,\r\n color: palette.grey.lightText,\r\n },\r\n description: {\r\n position: 'absolute',\r\n top: 23,\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n fontStyle: 'italic'\r\n },\r\n doclink: {\r\n color: palette.blue.primary,\r\n textTransform: 'none'\r\n },\r\n fileIcon: {\r\n color: palette.blue.primary,\r\n fontSize: 60,\r\n position: \"relative\"\r\n },\r\n header: {\r\n fontSize: 20,\r\n color: palette.grey.text,\r\n fontWeight: 'bold'\r\n },\r\n textContainer: {\r\n position: 'relative',\r\n bottom: 65,\r\n left: 60,\r\n maxWidth: '50%',\r\n whiteSpace: 'nowrap'\r\n },\r\n}\r\n\r\nexport default PlanDocumentCard","import { Card, FormControlLabel, Grid, Paper, Radio, Typography } from '@material-ui/core';\r\nimport Help from '@material-ui/icons/Help';\r\nimport { ICensusImportSetupData, TemplateCategory } from 'components/forms/census_import_setup_form';\r\nimport React from 'react';\r\nimport ReactPlaceholder from 'react-placeholder/lib';\r\nimport { connect } from 'react-redux';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { censusFileUpload, deleteCensusFile, displaySnackbar, FileUpload } from 'redux/actions';\r\nimport { SnackbarVariant } from 'redux/reducers/app_reducer';\r\nimport { CensusImportReducerState, XlsPreviewCol } from 'redux/reducers/census_import_reducer';\r\nimport { ReduxState } from 'redux/store';\r\nimport { styles } from 'utility/common_styles';\r\nimport pallette from 'utility/palette';\r\nimport { isExcelFileType } from 'utility/simple_utils';\r\nimport SaveButton from '../../components/common/save_button';\r\nimport { required } from '../../utility/form_validation';\r\nimport FileUploadButton from '../common/file_upload_button';\r\nimport { RadioControlGroupField, TextFormField } from '../common/reduxform_fields';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport DocumentUploadDialogue from '../plan/document_upload_dialogue';\r\nimport PlanDocumentCard from '../plan/plan_document_card';\r\nimport { ICensusMappingData } from './census_import_mapping_form';\r\n\r\nconst nativeSelect = { native: true };\r\nexport const FORM_NAME = 'CENSUSIMPORT_FILE_UPLOAD';\r\nexport interface ICensusUploadFileData extends Partial {\r\n sheetName: string,\r\n headerRow: string,\r\n dependentMapping: string\r\n}\r\n\r\ninterface ComponentProps {\r\n companyId: string,\r\n enrollmentId: string,\r\n setUpData: ICensusImportSetupData,\r\n}\r\n\r\ninterface StateProps {\r\n censusImport: CensusImportReducerState;\r\n disableSave?: boolean;\r\n}\r\ninterface DispatchProps {\r\n censusFileUpload: (companyId: string, enrollmentId: string, fileUpload: FileUpload) => Promise;\r\n deleteCensusFile: (showSnackbar: boolean) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps & StateProps & DispatchProps;\r\n\r\ninterface State {\r\n dialogOpen: boolean;\r\n file?: File;\r\n title?: string;\r\n typeId?: number;\r\n description?: string;\r\n fileName?: string;\r\n headerRowList: XlsPreviewCol[];\r\n docIsUploading: boolean;\r\n\r\n}\r\n\r\nconst validateExcelSheet = required(\"Excel sheet selection is required.\");\r\nconst validateHeaderRow = required(\"Header row selection is required.\");\r\n\r\nclass CensusImportFileUploadFormObj extends React.PureComponent {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.handleSheetSelectionOnChange = this.handleSheetSelectionOnChange.bind(this);\r\n\r\n this.state = {\r\n dialogOpen: false,\r\n headerRowList: this.getHeaderRowList(this.props.initialValues.sheetName),\r\n docIsUploading: false\r\n };\r\n }\r\n\r\n isDocumentUploaded = (): boolean => {\r\n let isUploaded: boolean = false;\r\n const doc = this.props.censusImport.censusUploadFileInfo.uploadDocumentInfo;\r\n if (doc.id.length > 0) {\r\n isUploaded = true;\r\n }\r\n return isUploaded;\r\n }\r\n\r\n\r\n get defaultFileInfo() {\r\n return {\r\n title: this.state.title,\r\n description: this.state.description\r\n };\r\n }\r\n\r\n uploadingOn = () => this.setState({ docIsUploading: true });\r\n\r\n uploadingOff = () => this.setState({ docIsUploading: false });\r\n\r\n uploadCensusDoc = (event: any) => {\r\n this.props.change(\"sheetName\", \"\");\r\n this.props.change(\"headerRow\", \"\");\r\n const inputFile = event.target.files[0] as File;\r\n if (inputFile && isExcelFileType(inputFile.type)) {\r\n const fileUpload: FileUpload = {\r\n file: inputFile,\r\n title: 'Census Upload',\r\n typeId: 1, // ??????\r\n };\r\n this.uploadingOn();\r\n this.props.censusFileUpload(this.props.companyId, this.props.enrollmentId, fileUpload)\r\n .then(this.afterUploadDoc, this.uploadingOff);\r\n\r\n } else {\r\n this.props.displaySnackbar('Document not uploaded. Only Excel files are accepted.', 'warning');\r\n }\r\n };\r\n\r\n afterUploadDoc = () => {\r\n if (this.props.setUpData.templateSelection !== TemplateCategory.NewCustom) {\r\n const templateList = this.props.censusImport.censusTemplates.filter(t => t.id === this.props.setUpData.templateId);\r\n if (templateList.length > 0) {\r\n const template: ICensusMappingData = JSON.parse(templateList[0].templateJson);\r\n let newHeaderRowList = this.getHeaderRowList(template.sheetName);\r\n this.setState({ headerRowList: newHeaderRowList });\r\n this.props.change(\"sheetName\", template.sheetName);\r\n this.props.change(\"headerRow\", template.headerRowIndex);\r\n }\r\n }\r\n this.uploadingOff();\r\n }\r\n\r\n deleteCensusDoc = () => {\r\n this.uploadingOn();\r\n this.props.deleteCensusFile(true)\r\n .then(() => {\r\n this.uploadingOff();\r\n this.props.change(\"sheetName\", \"\");\r\n this.props.change(\"headerRow\", \"\");\r\n },\r\n this.uploadingOff);\r\n }\r\n\r\n\r\n saveDocument = (title?: string, description?: string) => {\r\n // nothing to save for census docs ----\r\n };\r\n\r\n cancelEdit = () => {\r\n this.setState({\r\n dialogOpen: false,\r\n title: undefined,\r\n description: undefined,\r\n file: undefined,\r\n typeId: undefined,\r\n fileName: undefined\r\n });\r\n };\r\n\r\n\r\n handleSheetSelectionOnChange(e: any) {\r\n let newHeaderRowList = this.getHeaderRowList(e.target.value);\r\n this.setState({ headerRowList: newHeaderRowList });\r\n this.props.change(\"headerRow\", \"\");\r\n }\r\n\r\n getHeaderRowList(sheetName?: string): XlsPreviewCol[] {\r\n let headerRowList: XlsPreviewCol[] = [];\r\n if (sheetName) {\r\n let sheet = this.props.censusImport.censusUploadFileInfo.xlsPreview.find(sheet => sheet.sheetName === sheetName);\r\n if (sheet) {\r\n headerRowList = [...sheet.col1ValueList];\r\n }\r\n }\r\n return headerRowList;\r\n }\r\n\r\n okNext = () => {\r\n return this.props.valid && this.isDocumentUploaded();\r\n }\r\n\r\n showSection(forCategory: TemplateCategory): boolean {\r\n return this.props.setUpData.templateSelection === forCategory\r\n }\r\n\r\n render() {\r\n let doc = this.props.censusImport.censusUploadFileInfo.uploadDocumentInfo;\r\n return (\r\n
\r\n \r\n
\r\n

Upload File

\r\n
\r\n

Choose the census you would like to import. You can tell us what the fields are and map the values on the next step.

\r\n
Data Format
\r\n

\r\n Common data format mappings (“M” = Male, “F” = Female, etc.)
\r\n List of supported formats: Download here\r\n

\r\n
Census File
\r\n {!this.isDocumentUploaded() &&\r\n
\r\n \r\n \r\n \r\n Browse Files\r\n \r\n \r\n \r\n \r\n Only .xls and .xslx files will be accepted\r\n \r\n \r\n
\r\n }\r\n {this.isDocumentUploaded() &&\r\n
\r\n \r\n

File Details

\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {\r\n this.props.censusImport.censusUploadFileInfo.xlsPreview.map((xls) => )\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {\r\n this.state.headerRowList.map((rowVal) => )\r\n }\r\n \r\n
\r\n
\r\n {(this.showSection(TemplateCategory.NewCustom) || this.showSection(TemplateCategory.ExistingCustom)) &&\r\n
\r\n

How are dependents denoted in your census?

\r\n \r\n }\r\n />\r\n }\r\n style={componentStyles.radioButtonSpacing}\r\n />\r\n \r\n\r\n
\r\n }\r\n
\r\n }\r\n
\r\n
\r\n \r\n NEXT\r\n\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst componentStyles: { [key: string]: React.CSSProperties } = {\r\n paperMargin: {\r\n marginTop: 24\r\n },\r\n subHeading: {\r\n fontSize: 20,\r\n fontWeight: 500,\r\n color: pallette.grey.midText,\r\n },\r\n browseButton: {\r\n marginTop: 22,\r\n marginLeft: '50%',\r\n transform: 'translateX(-50%)'\r\n },\r\n card: {\r\n boxShadow: 'none',\r\n border: 1,\r\n borderStyle: 'dashed',\r\n borderColor: 'black',\r\n marginTop: 20,\r\n height: 80,\r\n position: 'relative'\r\n },\r\n buttonContainer: {\r\n textAlign: 'right',\r\n marginTop: 24\r\n },\r\n nextButton: {\r\n width: 128\r\n },\r\n radioButtonSpacing: {\r\n marginTop: -15\r\n },\r\n radioGroupHeading: {\r\n marginBottom: 0,\r\n paddingTop: 10,\r\n color: pallette.grey.midText\r\n },\r\n fileDetailLabel: {\r\n fontSize: 14,\r\n color: pallette.grey.midText\r\n },\r\n link: {\r\n color: pallette.blue.primary,\r\n textDecoration: 'none'\r\n },\r\n biggerDocumentTitle: {\r\n fontSize: 20,\r\n fontWeight: 'normal'\r\n }\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n censusImport: state.censusImport,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n censusFileUpload: (companyId, enrollmentId, fileUpload) => dispatch(censusFileUpload(companyId, enrollmentId, fileUpload)),\r\n deleteCensusFile: (showSnackbar) => dispatch(deleteCensusFile(showSnackbar)),\r\n displaySnackbar: (message, variant) => dispatch(displaySnackbar(message, variant))\r\n };\r\n}\r\n\r\nconst CensusImportFileUploadForm = connect(mapStateToProps, mapDispatchToProps)(CensusImportFileUploadFormObj);\r\n\r\nexport default reduxForm({ form: FORM_NAME })(CensusImportFileUploadForm);\r\n","import { CircularProgress } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport Breadcrumb from 'components/common/breadcrumb';\r\nimport DynamicStepper, { IStep } from 'components/common/dynamic_stepper';\r\nimport StepCircle2 from 'components/common/step_circle2';\r\nimport Title from 'components/common/title';\r\nimport CensusImportMappingForm, { ICensusImportMappingData, ICensusMappingData } from 'components/forms/census_import_mapping_form';\r\nimport CensusImportReviewForm from 'components/forms/census_import_review_form';\r\nimport CensusImportSetupForm, { ICensusImportSetupData, TemplateCategory } from 'components/forms/census_import_setup_form';\r\nimport CensusImportFileUploadForm, { ICensusUploadFileData } from 'components/forms/census_import_upload_file_form';\r\nimport { deleteCensusFile, fetchCensusFields, fetchCensusTemplates, fetchEmployees, fetchEnrollment } from 'redux/actions';\r\nimport { CensusImportReducerState, CensusTemplate } from 'redux/reducers/census_import_reducer';\r\nimport { ReduxState } from 'redux/store';\r\nimport { getLookupId, getStates, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport pallette from 'utility/palette';\r\nimport BasePage from '../../components/common/base_page';\r\nimport routes from '../../router/routes';\r\nimport { EnrollmentReducerState, EmployeeReducerState } from '../../redux/reducers';\r\nimport scrollUtility from 'utility/scroll_utility';\r\n\r\ninterface StateProps {\r\n enrollment: EnrollmentReducerState;\r\n censusImport: CensusImportReducerState;\r\n employeeState: EmployeeReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n fetchCensusTemplates: () => Promise;\r\n fetchCensusFields: () => Promise;\r\n fetchEmployees: (companyId: string, enrollmentId: string) => Promise\r\n deleteCensusFile: (showSnackbar: boolean) => Promise;\r\n}\r\n\r\ntype Props = RouteComponentProps & DispatchProps & StateProps\r\n\r\ninterface State {\r\n loading: boolean;\r\n stepsLoading: boolean;\r\n importComplete: boolean;\r\n activeStep?: number;\r\n completedSteps: Set;\r\n steps: IStep[];\r\n ciSetupData: ICensusImportSetupData;\r\n ciUploadFileData: ICensusUploadFileData;\r\n ciMappingData: ICensusMappingData;\r\n}\r\n\r\nclass CensusImport extends React.PureComponent {\r\n breadCrumb = ['Dashboard', 'Census Import'];\r\n companyId: string;\r\n enrollmentId: string;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n stepsLoading: false,\r\n importComplete: false,\r\n completedSteps: new Set(),\r\n steps: [],\r\n ciSetupData: {\r\n addReplaceCensus: \"add\",\r\n templateSelection: TemplateCategory.Standard,\r\n templateId: \"\"\r\n },\r\n ciUploadFileData: {\r\n sheetName: \"\",\r\n headerRow: \"\",\r\n dependentMapping: \"under\"\r\n },\r\n ciMappingData: {\r\n sheetName: \"\",\r\n headerRowIndex: \"\",\r\n XlsMappings: [],\r\n xlsDateFormats: [ // defaults for date formats\r\n { \"targetProperty\": \"DOB\", \"dateFormatType\": \"0\" },\r\n { \"targetProperty\": \"HireDate\", \"dateFormatType\": \"0\" },\r\n { \"targetProperty\": \"MarriageDate\", \"dateFormatType\": \"0\" },\r\n { \"targetProperty\": \"CobraEventDate\", \"dateFormatType\": \"0\" },\r\n { \"targetProperty\": \"CobraBeginDate\", \"dateFormatType\": \"0\" },\r\n { \"targetProperty\": \"CobraEndDate\", \"dateFormatType\": \"0\" },\r\n { \"targetProperty\": \"CobraLossOfCoverageDate\", \"dateFormatType\": \"0\" },\r\n ]\r\n }\r\n };\r\n\r\n const companyIdVarName = routes.censusImport.params!.companyId!.replace(':', '');\r\n this.companyId = props.match.params[companyIdVarName];\r\n const enrollmentIdVarName = routes.censusImport.params!.enrollmentId!.replace(':', '');\r\n this.enrollmentId = props.match.params[enrollmentIdVarName];\r\n }\r\n\r\n get showAddReplaceCensus(): boolean {\r\n\r\n return this.props.employeeState.list.length > 0\r\n }\r\n\r\n get showHealthConnect(): boolean {\r\n let doShow: boolean = false;\r\n const companyContactInfo = this.props.enrollment.company.contactInformation\r\n if (companyContactInfo.length > 0) {\r\n const stateId = companyContactInfo[0].stateId;\r\n const stateInfo = getStates().find(p => p.id === stateId);\r\n const state = (stateInfo !== undefined) ? stateInfo.key : '';\r\n if (state === 'NY' || state === 'NJ') {\r\n doShow = true;\r\n }\r\n }\r\n return doShow;\r\n }\r\n\r\n get hasEnrollmentStarted(): boolean {\r\n const notStarted = getLookupId('NOTSTARTED', LOOKUP_TYPE_IDS.electionStatus);\r\n return this.props.employeeState.list.some(emp => emp.electionStatusId !== null && emp.electionStatusId !== notStarted);\r\n }\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n setInitialState = () => {\r\n\r\n const steps: IStep[] = [];\r\n steps.push({\r\n id: 1,\r\n label: \"Setup Import\",\r\n icon: () => 1\r\n });\r\n steps.push({\r\n id: 2,\r\n label: \"Upload File\",\r\n icon: () => 2\r\n });\r\n steps.push({\r\n id: 3,\r\n label: \"Map Fields\",\r\n icon: () => 3\r\n });\r\n steps.push({\r\n id: 4,\r\n label: \"Review\",\r\n icon: () => 4\r\n\r\n });\r\n\r\n this.setState({ steps, activeStep: 1, loading: false });\r\n\r\n }\r\n\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n if (!this.props.enrollment.id) {\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n }\r\n\r\n if (this.props.censusImport.censusTemplates.length === 0) {\r\n promises.push(this.props.fetchCensusTemplates())\r\n }\r\n\r\n if (this.props.censusImport.censusFields.length === 0) {\r\n promises.push(this.props.fetchCensusFields())\r\n }\r\n\r\n if (this.props.employeeState.list.length === 0) {\r\n promises.push(this.props.fetchEmployees(this.companyId, this.enrollmentId))\r\n }\r\n\r\n if (this.props.censusImport.censusUploadFileInfo.uploadDocumentInfo.id !== null) {\r\n promises.push(this.props.deleteCensusFile(false));\r\n }\r\n\r\n this.loadingOn();\r\n Promise.all(promises).then(this.setInitialState, this.loadingOff);\r\n }\r\n\r\n handlePageChange = (index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n };\r\n\r\n changeStep = (step: number) => {\r\n\r\n this.setState(prevState => {\r\n const activeIndex = prevState.steps.findIndex(step => step.id === prevState.activeStep);\r\n return {\r\n activeStep: prevState.steps[activeIndex + step].id\r\n }\r\n }, () => window.scrollTo(0, 0));\r\n\r\n }\r\n\r\n setStepCompleted = (completedStep: number) => {\r\n if (!this.state.completedSteps.has(completedStep)) {\r\n let newCompletedSteps = new Set();\r\n this.state.completedSteps.forEach((step) => {\r\n newCompletedSteps.add(step);\r\n });\r\n newCompletedSteps.add(completedStep);\r\n this.setState({\r\n completedSteps: newCompletedSteps\r\n });\r\n }\r\n }\r\n\r\n jumpStep = (loc: number, mobile?: boolean) => {\r\n this.setState(prevState => {\r\n if (loc === prevState.activeStep && mobile)\r\n return { activeStep: undefined };\r\n else {\r\n return { activeStep: loc };\r\n }\r\n }, () => window.scrollTo(0, 0));\r\n }\r\n\r\n renderStepReviewInfo = (step: number) => {\r\n const isStepCompleted = this.state.completedSteps.has(step);\r\n if (!isStepCompleted) {\r\n return <>;\r\n }\r\n switch (step) {\r\n case 1:\r\n const addReplace = this.state.ciSetupData.addReplaceCensus === \"add\" ? \"Add to Existing Census\" : \"Replace Existing Census\";\r\n const templateType = this.getTemplateReviewSelection();\r\n return (\r\n <>\r\n {addReplace}
\r\n {templateType}\r\n \r\n )\r\n case 2:\r\n const sheetName = this.state.ciUploadFileData.sheetName;\r\n const headerRow = this.state.ciUploadFileData.headerRow;\r\n return (\r\n <>\r\n Sheet: {sheetName}
\r\n Header row: {headerRow}\r\n \r\n )\r\n case 3:\r\n const mappedFields = this.state.ciSetupData.templateSelection === TemplateCategory.ExistingCustom ||\r\n this.state.ciSetupData.templateSelection === TemplateCategory.NewCustom ? this.state.ciMappingData.XlsMappings.length + \" fields mapped\" : \"N/A\";\r\n return (\r\n Fields mapped: {mappedFields}\r\n )\r\n default:\r\n return (<>);\r\n }\r\n }\r\n\r\n getTemplateReviewSelection = () => {\r\n switch (this.state.ciSetupData.templateSelection) {\r\n case TemplateCategory.Standard: return Standard Template;\r\n case TemplateCategory.HealthConnect: return HealthConnect Template;\r\n case TemplateCategory.NewCustom: return Make my own template\r\n case TemplateCategory.ExistingCustom:\r\n const templates = this.props.censusImport.censusTemplates.filter(t => t.id === this.state.ciSetupData.templateId);\r\n const templateName = templates.length > 0 ? templates[0].templateName : \"\";\r\n return
\r\n Saved template:
\r\n {templateName}\r\n
\r\n default: return <>\r\n }\r\n }\r\n\r\n renderStep = (step?: number) => {\r\n\r\n switch (step) {\r\n case 1:\r\n return (\r\n \r\n );\r\n case 2:\r\n return (\r\n \r\n );\r\n case 3:\r\n return (\r\n \r\n )\r\n case 4:\r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n handleSetUpFormSubmit = (formValues: ICensusImportSetupData): void => {\r\n let template = null;\r\n let templateId = \"\"\r\n let newMappingData = { ...this.state.ciMappingData };\r\n\r\n\r\n if (formValues.templateSelection === TemplateCategory.Standard\r\n || formValues.templateSelection === TemplateCategory.HealthConnect) {\r\n template = this.GetSystemTemplate(formValues.templateSelection)\r\n templateId = template.id;\r\n }\r\n else {\r\n templateId = formValues.templateId;\r\n }\r\n\r\n if (formValues.templateSelection === TemplateCategory.ExistingCustom) {\r\n let templateList = this.props.censusImport.censusTemplates.filter(t => t.id === templateId)\r\n if (templateList.length > 0) {\r\n template = templateList[0]\r\n newMappingData = JSON.parse(template.templateJson)\r\n }\r\n }\r\n\r\n let newCiSetupData: ICensusImportSetupData = {\r\n addReplaceCensus: formValues.addReplaceCensus,\r\n templateSelection: formValues.templateSelection,\r\n templateId: templateId\r\n }\r\n\r\n this.setState({\r\n ciSetupData: newCiSetupData,\r\n ciMappingData: newMappingData\r\n });\r\n this.setStepCompleted(1);\r\n this.changeStep(1);\r\n }\r\n\r\n handleUploadFileFormSubmit = (formValues: ICensusUploadFileData) => {\r\n let newCiUploadFileData: ICensusUploadFileData = {\r\n sheetName: formValues.sheetName,\r\n headerRow: formValues.headerRow,\r\n dependentMapping: formValues.dependentMapping\r\n }\r\n // -- this is for saving the custom maps to the database\r\n let mappingData = { ...this.state.ciMappingData }\r\n mappingData.sheetName = formValues.sheetName;\r\n mappingData.headerRowIndex = formValues.headerRow\r\n this.setState({\r\n ciUploadFileData: newCiUploadFileData,\r\n ciMappingData: mappingData\r\n });\r\n this.setStepCompleted(2);\r\n this.changeStep(1);\r\n }\r\n\r\n handleMappingFormSubmit = (formValues: ICensusImportMappingData) => {\r\n //this.setState( {ciMappingData: newCiMappingData});\r\n this.setStepCompleted(3);\r\n this.changeStep(1);\r\n scrollUtility.scrollToTop();\r\n }\r\n\r\n handleMappingDataOnChange = (censusMappingData: ICensusMappingData) => {\r\n this.setState({ stepsLoading: true });\r\n this.setState({ ciMappingData: censusMappingData }, \r\n () => {\r\n this.setState({ stepsLoading: false });\r\n });\r\n }\r\n\r\n GetSystemTemplate = (templateSelection: TemplateCategory) => {\r\n let template: CensusTemplate = {\r\n id: \"\",\r\n userName: \"\",\r\n templateName: \"\",\r\n hasHeaders: true,\r\n isSystemTemplate: false,\r\n templateJson: \"\"\r\n };\r\n let templateList: CensusTemplate[] = [];\r\n if (templateSelection === TemplateCategory.Standard) {\r\n templateList = this.props.censusImport.censusTemplates.filter((t: CensusTemplate) => t.isSystemTemplate === true && t.templateName === 'Benefitmall Standard Template');\r\n if (templateList.length > 0) {\r\n template = templateList[0];\r\n }\r\n }\r\n else if (templateSelection === TemplateCategory.HealthConnect) {\r\n templateList = this.props.censusImport.censusTemplates.filter((t: CensusTemplate) => t.isSystemTemplate === true && t.templateName === 'HealthConnect Template');\r\n if (templateList.length > 0) {\r\n template = templateList[0];\r\n }\r\n }\r\n\r\n return template;\r\n }\r\n\r\n\r\n render() {\r\n const { enrollment } = this.props;\r\n const { activeStep, completedSteps, loading, steps, importComplete } = this.state;\r\n\r\n return (\r\n \r\n
\r\n {enrollment.company.name}
\r\n
\r\n \r\n {loading ?\r\n
\r\n

Loading your information

\r\n \r\n
\r\n :\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst componentStyles: { [key: string]: React.CSSProperties } = {\r\n stepHelper: {\r\n fontStyle: 'italic',\r\n fontSize: 12,\r\n color: pallette.grey.midtext\r\n },\r\n centerText: {\r\n textAlign: 'center'\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n enrollment: state.enrollment,\r\n censusImport: state.censusImport,\r\n employeeState: state.employee\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchEnrollment: (enrollmentId) => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchCensusTemplates: () => dispatch(fetchCensusTemplates()),\r\n fetchCensusFields: () => dispatch(fetchCensusFields()),\r\n fetchEmployees: (companyId, enrollmentId) => dispatch(fetchEmployees(companyId, enrollmentId)),\r\n deleteCensusFile: (showSnackbar) => dispatch(deleteCensusFile(showSnackbar))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CensusImport);","import { displaySnackbar } from '../redux/actions/app_actions';\r\nimport { Document } from '../redux/reducers/plan_reducer';\r\nimport http from './http';\r\n\r\n\r\nexport enum DocumentType{\r\n CENSUS = 'CENSUS',\r\n PAYROLL = 'PAYROLL'\r\n}\r\n\r\nexport function exportDocuments(companyId: string, enrollmentId: string, documentTypes: string[]) {\r\n return async (dispatch: any) => {\r\n try {\r\n const docs: Document[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/documents/export`,{ method: 'POST', body: JSON.stringify(documentTypes) });\r\n docs.forEach(doc => {\r\n if (doc!.storageUrl !== undefined) {\r\n dispatch(displaySnackbar(`${doc.type} export completed`, 'success'));\r\n window.open(doc.storageUrl, \"_blank\", \"noopener noreferrer\");\r\n }\r\n else {\r\n dispatch(displaySnackbar(`${doc.type} export completed but no record found`, 'success'));\r\n }\r\n });\r\n \r\n } catch (ex) {\r\n dispatch(displaySnackbar('Error with document export', 'error'));\r\n throw ex;\r\n }\r\n };\r\n}","import { Button, DialogActions, DialogContent, InputAdornment } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { convertToMoment, convertToNumber } from 'utility/form_normalization';\r\nimport { characterLimit, nonNegativeNumber, required, validAdultAge, validPastDate, email, validateIfNotReducedWithMessage, requiredForSubmission } from '../../utility/form_validation';\r\nimport { getGenders } from '../../utility/lookup_utils';\r\nimport { DatePickerField, TextFormField } from '../common/reduxform_fields';\r\nimport { IReduceValidation } from 'redux/reducers';\r\n\r\nexport const FORM_NAME = 'QUICK_ADD_EMPLOYEE';\r\n\r\nexport interface FormData extends IReduceValidation {\r\n firstName?: string;\r\n lastName?: string;\r\n dateOfBirth?: moment.Moment;\r\n genderId: number;\r\n annualSalary?: number;\r\n email?: string;\r\n redirectToProfile?: boolean;\r\n reduceValidation?: boolean;\r\n};\r\n\r\ninterface ComponentProps {\r\n onCancel: () => void;\r\n isSalaryRequired: boolean;\r\n reduceValidation?: boolean;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps;\r\n\r\nconst characterLimit100 = characterLimit(100);\r\nconst characterLimit16 = characterLimit(16);\r\nconst requiredFirstName = required('First Name is required');\r\nconst requiredLastName = required('Last Name is required');\r\nconst requiredDOB = [validateIfNotReducedWithMessage('Date of Birth is required'), validPastDate, validAdultAge];\r\nconst requiredGender = [validateIfNotReducedWithMessage('Gender is required')];\r\nconst nativeSelect = { native: true };\r\n\r\nconst inputProps = {\r\n startAdornment: ($)\r\n};\r\nconst salaryRequiredValidator = (value?: number, values?: any, props?: any) => {\r\n if (props && props.isSalaryRequired === true && !value && !props.reduceValidation) {\r\n return \"Salary is required\";\r\n }\r\n\r\n return undefined;\r\n\r\n}\r\n\r\nconst QuickAddEmployeeForm = (props: Props) => {\r\n const { isSalaryRequired } = props;\r\n const changeRedirectFlag = () => {\r\n props.change('redirectToProfile', true);\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\n \r\n {getGenders().map(val => (\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n form: {\r\n paddingTop: 10,\r\n width: 550\r\n }\r\n}\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME\r\n})(QuickAddEmployeeForm);","import React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport QuickAddEmployeeForm, { FormData } from '../forms/quick_add_employee_form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { connect } from 'react-redux';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onCancel: () => void;\r\n onDone: (formValues: FormData) => void;\r\n isSalaryRequired: boolean;\r\n reduceValidation?: boolean;\r\n}\r\n\r\ntype Props = ComponentProps;\r\n\r\nconst AddEmployeeDialog = (props: Props) => {\r\n const initialValues: FormData = {\r\n dateOfBirth: undefined,\r\n genderId: getLookupId('MALE', LOOKUP_TYPE_IDS.gender),\r\n reduceValidation: props.reduceValidation\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AddEmployeeDialog;","import React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { DialogContent, Grid, Checkbox, DialogActions, Button, FormControlLabel, Divider } from '@material-ui/core';\r\nimport SaveButton from 'components/common/save_button';\r\nimport palette from 'utility/palette';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n isChecked: boolean;\r\n isExportCensusChecked: boolean;\r\n isExportPayrollChecked: boolean;\r\n isLoading: boolean;\r\n onCancel: () => void;\r\n onCheck: (event: any, checked: boolean) => void;\r\n onCheckCensusExport: (event: any, checked: boolean) => void;\r\n onCheckPayrollExport: (event: any, checked: boolean) => void;\r\n onDone: (e: any) => void;\r\n}\r\nconst ExportAgreementDialog = (props: ComponentProps) => {\r\n \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n label={Census Information}\r\n />\r\n \r\n \r\n \r\n }\r\n label={Payroll Deductions}\r\n />\r\n \r\n
\r\n \r\n \r\n \r\n \r\n }\r\n label={I understand that the information I download is highly sensitive Protected Health Information and I agree to the responsibility of keeping this data secure.}\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Export\r\n \r\n \r\n
\r\n );\r\n}\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n form: {\r\n paddingTop: 10\r\n },\r\n divider: {\r\n marginBottom: 16,\r\n color:palette.grey.black\r\n }\r\n}\r\nexport default ExportAgreementDialog;","import { EnrollmentReducerState } from './../redux/reducers/enrollment_reducer';\r\nimport { PlanReducerState } from './../redux/reducers/plan_reducer';\r\nimport { CurrentEnrolleeDTO, GroupSubmissionReducerState } from 'redux/reducers';\r\nimport { displaySnackbar } from '../redux/actions/app_actions';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from './lookup_utils';\r\nimport http from './http';\r\n\r\ninterface RenewalImportTemplateDownloadDto {\r\n documentUrl: string;\r\n}\r\n\r\nexport interface RenewalImportError {\r\n rowNumber: string;\r\n memberName: string;\r\n errorColumn: string;\r\n errorMessage: string;\r\n acceptableValues: string;\r\n}\r\n\r\nexport interface ElectionRenewalSyncError {\r\n employeeId: number;\r\n electionId: number;\r\n employeeFirstName: string;\r\n employeeLastName: string;\r\n lineOfCoverageId: number;\r\n lineOfCoverageName: string;\r\n}\r\n\r\nexport interface RenewalImportResult {\r\n success: boolean;\r\n errorCategory: number;\r\n missingFields: string[];\r\n additionalFields: string[];\r\n errors: RenewalImportError[];\r\n electionRenewalSyncError: ElectionRenewalSyncError[];\r\n}\r\n\r\nexport interface ImportedRenewalsDTO {\r\n lineOfCoverageId: number;\r\n carrierRenewal: boolean;\r\n planRenewal: string;\r\n previousYearRenewalCarrierCode: string;\r\n currentEnrollees: CurrentEnrolleeDTO[];\r\n isCurrentEnrolleesNotSure: boolean;\r\n}\r\n\r\nexport function downloadRenewalImportTemplate(\r\n companyId: string,\r\n enrollmentId: string\r\n) {\r\n return async (dispatch: any) => {\r\n try {\r\n const response: RenewalImportTemplateDownloadDto = \r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/renewalimport`, { method: 'GET' });\r\n\r\n if (response!.documentUrl !== undefined) {\r\n dispatch(displaySnackbar(`Current Coverage template downloaded`, 'success'));\r\n window.open(response.documentUrl, '_blank', \"noopener noreferrer\");\r\n } else {\r\n dispatch(\r\n displaySnackbar(\r\n `No employee records found to download the Current Coverage template`,\r\n 'success'\r\n )\r\n );\r\n }\r\n } catch (error) {\r\n dispatch(displaySnackbar('Error downloading Current Coverage template', 'error'));\r\n throw error;\r\n }\r\n };\r\n}\r\n\r\nexport function uploadAndProcessRenewalImportFile(\r\n companyId: string,\r\n enrollmentId: string,\r\n acknowledgementRequired: boolean,\r\n acknowledged: boolean,\r\n fileToUpload: File\r\n) {\r\n return async (dispatch: any): Promise => {\r\n try {\r\n const formData = new FormData();\r\n formData.append('acknowledgementRequired', String(acknowledgementRequired));\r\n formData.append('acknowledged', String(acknowledged));\r\n formData.append('file', fileToUpload);\r\n\r\n const response: RenewalImportResult = await http(\r\n `companies/${companyId}/enrollments/${enrollmentId}/renewalimport`,\r\n { method: 'POST', body: formData }\r\n );\r\n\r\n if (response && response.success) {\r\n dispatch(displaySnackbar(`Current Coverage file successfully uploaded for processing`, 'success'));\r\n } else if (response.electionRenewalSyncError.length > 0) {\r\n dispatch(displaySnackbar(`Current Coverage Elections could not be updated for employees having existing`, 'error'));\r\n }\r\n else{\r\n dispatch(displaySnackbar(`Current Coverage file failed validations`, 'warning'));\r\n }\r\n\r\n return response;\r\n } catch (ex) {\r\n dispatch(displaySnackbar('Error occurred when processing Current Coverage file', 'error'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\nexport async function fetchImportedRenewals(\r\n companyId: string,\r\n enrollmentId: string,\r\n employeeId: string\r\n): Promise {\r\n try {\r\n const response: ImportedRenewalsDTO[] = await http(\r\n `companies/${companyId}/enrollments/${enrollmentId}/employees/${employeeId}/imported-renewals`,\r\n { method: 'GET' }\r\n );\r\n\r\n return response;\r\n } catch (ex) {\r\n //ignoring the error\r\n return [];\r\n }\r\n}\r\n \r\nexport function isItRenewalEnrollment(enrollmentState: EnrollmentReducerState, groupApplicationState: GroupSubmissionReducerState, planState: PlanReducerState){\r\n const renewalId = getLookupId('RENEWAL', LOOKUP_TYPE_IDS.enrollmentType);\r\n const renewalGroupApps = groupApplicationState && groupApplicationState.list.filter(g => g.enrollmentTypeId == renewalId);\r\n let renewalPlanIds: string[] = [];\r\n if(renewalGroupApps && renewalGroupApps.length > 0){\r\n renewalGroupApps.forEach(grpApp => {\r\n renewalPlanIds = [...renewalPlanIds, ...grpApp.plans.map(plan => plan.id)]\r\n })\r\n\r\n if(renewalPlanIds.length > 0){\r\n const renewalPlans = planState.list.filter(plan => renewalPlanIds.includes(plan.id));\r\n const isRenewalEnabled = renewalPlans.some(plan => plan.configurationTypeIds.includes(46));\r\n const isSubmitted = !!enrollmentState.submissionDate;\r\n \r\n const isRenewalEnrollment = !enrollmentState.reduceValidation \r\n && isRenewalEnabled \r\n && enrollmentState.setupCompletedOn!=null \r\n && !isSubmitted;\r\n return isRenewalEnrollment;\r\n }\r\n }\r\n\r\n return false;\r\n}","import { Button, LinearProgress, Paper, Typography, TextField, InputAdornment, Menu, MenuItem, Popover } from '@material-ui/core';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport FileDownload from '@material-ui/icons/CloudDownload';\r\nimport FileUpload from '@material-ui/icons/CloudUpload';\r\nimport InsertChart from '@material-ui/icons/InsertChart';\r\nimport MaterialTable from 'components/common/table';\r\nimport TableHeader from 'components/common/table_header';\r\nimport AddEmployeeDialog from 'components/employee/add_employee_dialog';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport { getLookupId, isUserReadOnly, LOOKUP_TYPE_IDS, Zones, salariesRequiredSelector, isEmployeeCobra, getCarrierConfigurations } from 'utility';\r\nimport { DocumentType, exportDocuments } from 'utility/export_documents_utils';\r\nimport { FormData } from '../../components/forms/quick_add_employee_form';\r\nimport { addEmployee, deleteEmployee, displaySnackbar, fetchEmployees } from '../../redux/actions';\r\nimport { Employee, EmployeeDTO, EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentReducerState, EnrollmentReducerStatePropType, PlanReducerState, PlanReducerStatePropType, Plan, SnackbarVariant, GroupSubmissionReducerState } from '../../redux/reducers';\r\nimport { ReduxState } from '../../redux/store';\r\nimport routes from '../../router/routes';\r\nimport palette from '../../utility/palette';\r\nimport ExportAgreementDialog from './census_export_agreement_dialog';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport { isItRenewalEnrollment } from 'utility/renewal_import_utility';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n enrollmentId: string;\r\n reduceValidation?: boolean;\r\n}\r\ninterface MappedProps {\r\n employeeState: EmployeeReducerState,\r\n planState: PlanReducerState,\r\n enrollmentState: EnrollmentReducerState,\r\n isSalaryRequired: boolean,\r\n groupApplicationState: GroupSubmissionReducerState\r\n}\r\ninterface DispatchProps {\r\n fetchEmployees: () => Promise;\r\n deleteEmployee: (id: string, name: string) => Promise;\r\n addEmployee: (employee: EmployeeDTO) => Promise;\r\n exportDocuments: (types: string[]) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n}\r\n\r\ntype Props = RouteComponentProps & ComponentProps & MappedProps & DispatchProps;\r\n\r\ninterface State {\r\n loading: boolean;\r\n addDialogOpen: boolean;\r\n exportAgreementDialogOpen: boolean;\r\n ExportIsAgreed: boolean;\r\n CensusExportChecked: boolean;\r\n PayrollExportChecked: boolean;\r\n isExportDialogLoading: boolean;\r\n searchText: string;\r\n openMenu: boolean;\r\n anchorEl: any;\r\n}\r\n\r\nclass CensusStatus extends React.PureComponent{\r\n renewalId = getLookupId('RENEWAL', LOOKUP_TYPE_IDS.enrollmentType);\r\n tableHeadersBase: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n }[] = [\r\n { id: 'fullName', direction: \"asc\", label: 'Name' },\r\n { id: 'dateOfBirth', direction: false, label: 'Date of Birth' },\r\n { id: 'genderId', direction: false, label: 'Gender' },\r\n { id: 'dependents', direction: false, label: 'Dependents' },\r\n { id: 'electionStatusId', direction: false, label: 'Status' },\r\n ]\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n addDialogOpen: false,\r\n exportAgreementDialogOpen: false,\r\n ExportIsAgreed: false,\r\n CensusExportChecked: false,\r\n PayrollExportChecked: false,\r\n isExportDialogLoading: false,\r\n searchText: \"\",\r\n openMenu: false,\r\n anchorEl: null\r\n };\r\n }\r\n\r\n notStartedLookupId = getLookupId('NOTSTARTED', LOOKUP_TYPE_IDS.electionStatus);\r\n benefitAmountTypeId = getLookupId('MULTIPLEOFSALARY', LOOKUP_TYPE_IDS.benefitAmountType);\r\n notInvitedLookupId = getLookupId('NOTSTARTED', LOOKUP_TYPE_IDS.invitationStatus);\r\n\r\n componentDidMount() {\r\n if (this.props.employeeState.list.length <= 1) {\r\n this.loadingOn();\r\n this.props.fetchEmployees().then(this.loadingOff, this.loadingOff);\r\n }\r\n }\r\n\r\n onSearchTextChange = (event: React.ChangeEvent) => {\r\n this.setState({ searchText: event.target.value });\r\n }\r\n\r\n\r\n handleEmployeeDelete = (id: string) => {\r\n this.loadingOn();\r\n let employee = this.props.employeeState.list.find(emp => emp.id === id) || { fullName: \"Employee\" };\r\n let name = employee.fullName\r\n this.props.deleteEmployee(id, name).then(this.loadingOff, this.loadingOff);\r\n };\r\n\r\n handleEmployeeAdd = (formValues: FormData) => {\r\n const newEmployee: EmployeeDTO = {\r\n employeeId: '',\r\n id: '',\r\n firstName: formValues.firstName || '',\r\n lastName: formValues.lastName || '',\r\n dateOfBirth: formValues.dateOfBirth && formValues.dateOfBirth!.format(),\r\n genderId: formValues.genderId,\r\n annualSalary: formValues.annualSalary,\r\n dependents: [],\r\n elections: [],\r\n coverageLevels: [],\r\n enrolledLinesOfCoverage: [],\r\n electionStatusId: this.notStartedLookupId,\r\n invitationStatusId: this.notInvitedLookupId,\r\n contactInformation: [{ email: formValues.email, addressType: 0 }],\r\n tobaccoUse: false,\r\n isUSCitizen: false,\r\n kaiserAgreementAccepted: false,\r\n beneficiaries: [],\r\n renewalChangeInfo: [],\r\n isInEligible: false,\r\n isEmployeeWaiving: false,\r\n waiverReasonId: undefined\r\n };\r\n this.loadingOn();\r\n return this.props.addEmployee(newEmployee);\r\n }\r\n\r\n handleExportEnrollment = () => {\r\n this.setState({ exportAgreementDialogOpen: true });\r\n }\r\n handleExportAgreementCheck = (e: any, checked: boolean) => {\r\n this.setState({ ExportIsAgreed: checked });\r\n }\r\n handleCensusExportChecked = (e: any, checked: boolean) => {\r\n this.setState({ CensusExportChecked: checked });\r\n }\r\n handlePayrollExportChecked = (e: any, checked: boolean) => {\r\n this.setState({ PayrollExportChecked: checked });\r\n }\r\n handleExportAgreed = (e: any) => {\r\n if (this.state.ExportIsAgreed) {\r\n this.ExportClicked();\r\n }\r\n }\r\n\r\n ExportClicked = () => {\r\n this.setState({ isExportDialogLoading: true });\r\n const documentTypes: string[] = [];\r\n\r\n if (this.state.ExportIsAgreed && this.state.CensusExportChecked) {\r\n documentTypes.push(DocumentType.CENSUS);\r\n }\r\n if (this.state.ExportIsAgreed && this.state.PayrollExportChecked) {\r\n documentTypes.push(DocumentType.PAYROLL);\r\n }\r\n this.props.exportDocuments(documentTypes).then(this.handleAddCancel, this.loadingOff);\r\n }\r\n\r\n handleAddClicked = () => {\r\n this.setState({ addDialogOpen: true, isExportDialogLoading: false });\r\n };\r\n handleAddCancel = () => {\r\n this.setState({ addDialogOpen: false, exportAgreementDialogOpen: false, ExportIsAgreed: false, loading: false, isExportDialogLoading: false });\r\n };\r\n\r\n handleAddDone = async (values: FormData) => {\r\n try {\r\n if (values.redirectToProfile) {\r\n const employeeID = await this.handleEmployeeAdd(values);\r\n this.handleRowClick(employeeID);\r\n } else {\r\n this.handleEmployeeAdd(values).then(this.loadingOff, this.loadingOff);\r\n this.handleAddCancel();\r\n }\r\n\r\n } catch { this.loadingOff() };\r\n };\r\n\r\n\r\n\r\n handleRowClick = (employeeId: string) => {\r\n const { path, params } = routes.guidedEnrollment;\r\n const route = path.replace(params!.companyId!, this.props.companyId)\r\n .replace(params!.enrollmentId!, this.props.enrollmentId)\r\n .replace(params!.employeeId!, employeeId)\r\n .replace(params!.stepId!, '');\r\n this.props.history.push(route);\r\n };\r\n\r\n handleImportClick = (isRenewalImport: boolean) => {\r\n const { path, params } = isRenewalImport ? routes.renewalImport : routes.censusImport;\r\n const route = path.replace(params!.companyId!, this.props.companyId).replace(params!.enrollmentId!, this.props.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n\r\n goToSummary = () => {\r\n const { path, params } = routes.enrollmentSummary;\r\n const route = path.replace(params!.companyId!, this.props.companyId).replace(params!.enrollmentId!, this.props.enrollmentId);\r\n this.props.history.push(route);\r\n };\r\n\r\n employeeDetailsToRender = memoizeOne((hasPlansThatNeedSalary: boolean, employeesList: Employee[], plansThatNeedSalary: Plan[]) => {\r\n let showRemarks = false;\r\n const employees = employeesList.map(employee => {\r\n let planWaived = false;\r\n if (employee.elections.length > 0)\r\n {\r\n planWaived = plansThatNeedSalary.every(function (plan){\r\n let election = employee.elections.find(x => x.planId == plan.id || x.lineOfCoverageId == plan.lineOfCoverageId);\r\n return (election == undefined ? false : election.isWaived);\r\n });\r\n }\r\n\r\n const isCobraEmployee = isEmployeeCobra(employee.employmentStatusId || 0);\r\n const isSalaryMissing = hasPlansThatNeedSalary && !employee.isInEligible && employee.isSalaryMissing && !isCobraEmployee && !planWaived;\r\n const isRenewalAnswerMissing =\r\n employee.electionStatusId === getLookupId('RENEWALQUESTIONSPENDING', LOOKUP_TYPE_IDS.electionStatus);\r\n\r\n let remarks: string[] = [];\r\n if (isSalaryMissing && !employee.isEmployeeWaiving) {\r\n showRemarks = true;\r\n remarks.push('Missing Salary');\r\n }\r\n if (isRenewalAnswerMissing) {\r\n showRemarks = true;\r\n remarks.push('Missing Current Coverages');\r\n }\r\n if (employee.isInEligible) {\r\n showRemarks = true;\r\n remarks.push('Ineligible Employee');\r\n }\r\n if (employee.isEmployeeWaiving) {\r\n showRemarks = true;\r\n remarks.push('Waiving All Coverages')\r\n }\r\n\r\n return {\r\n ...employee,\r\n remarks\r\n };\r\n });\r\n\r\n return {\r\n showRemarks,\r\n employees\r\n };\r\n });\r\n\r\n openMenu = () => {\r\n this.setState({ openMenu: true });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ anchorEl: null });\r\n };\r\n\r\n handleClick(event: any) {\r\n this.setState({ anchorEl: event.currentTarget });\r\n };\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n loadingOff = () => this.setState({ loading: false, isExportDialogLoading: false });\r\n\r\n calculateDependents = memoizeOne((employees: Employee[]) => {\r\n return employees.reduce((numDependents, employee) => numDependents + employee.dependents.length, 0);\r\n });\r\n\r\n _plansWithMultipleSalary = memoizeOne((plan: PlanReducerState) => {\r\n return plan.list.filter(p => p.benefitAmountTypeId && p.benefitAmountTypeId === this.benefitAmountTypeId);\r\n });\r\n\r\n _sortableTableHeaders = memoizeOne((showRemarks: boolean) => {\r\n let headers: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n }[];\r\n headers = showRemarks ? [\r\n { id: 'remarks', direction: false, label: 'Remarks' },\r\n { id: 'none', direction: false, label: '' },\r\n ]\r\n :\r\n [\r\n { id: 'none', direction: false, label: '' },\r\n ];\r\n\r\n return [...this.tableHeadersBase, ...headers];\r\n });\r\n\r\n render() {\r\n const { enrollmentState, employeeState: { list } } = this.props;\r\n const hasPlansThatNeedSalary = this._plansWithMultipleSalary(this.props.planState).length > 0;\r\n const plansWithMultipleSalary = this._plansWithMultipleSalary(this.props.planState);\r\n const { employees, showRemarks } = this.employeeDetailsToRender(hasPlansThatNeedSalary, list, plansWithMultipleSalary);\r\n const numDependents = this.calculateDependents(list);\r\n const sortableTableHeaders = this._sortableTableHeaders(showRemarks);\r\n const isSubmitted = !!enrollmentState.submissionDate;\r\n const showCoveragesOption = isItRenewalEnrollment(this.props.enrollmentState, this.props.groupApplicationState, this.props.planState);\r\n\r\n const filteredEmployees = () => {\r\n if (this.state.searchText) {\r\n return employees.filter(employee => employee.fullName.toLowerCase().indexOf(this.state.searchText.toLowerCase()) > -1);\r\n }\r\n\r\n return employees;\r\n }\r\n const searchNoReturn = () => {\r\n if (this.state.searchText && employees.length > 0) {\r\n return (No employee results from current search);\r\n }\r\n\r\n return (Add Employees to Census);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n }}\r\n />}\r\n title=\"Employee Elections\"\r\n primaryActionText=\"Add New Employee\"\r\n primaryActionIcon={}\r\n primaryActionEnabled={!isSubmitted}\r\n handlePrimaryAction={this.handleAddClicked}\r\n secondaryActions={<>\r\n \r\n \r\n \r\n this.handleImportClick(false)}>Census\r\n {showCoveragesOption &&\r\n this.handleImportClick(true)}>Current Coverage\r\n }\r\n \r\n \r\n }\r\n counts={[\r\n { amount: employees.length, type: 'Employees' },\r\n { amount: numDependents, type: 'Dependents' }\r\n ]}\r\n />\r\n {this.state.loading && }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n buttonGroup: {\r\n textAlign: 'right'\r\n },\r\n addNewBtn: {\r\n marginBottom: 32\r\n },\r\n header: {\r\n fontFamily: 'Roboto',\r\n fontSize: 20,\r\n fontWeight: 500\r\n },\r\n subheader: {\r\n color: palette.grey.text,\r\n },\r\n optionButton: {\r\n paddingLeft: 16\r\n },\r\n count: {\r\n color: palette.grey.black,\r\n fontSize: '1.25rem'\r\n },\r\n headerDiv: {\r\n paddingTop: 16,\r\n paddingBottom: 16,\r\n paddingRight: 16,\r\n paddingLeft: 16\r\n },\r\n warning: {\r\n fontSize: 14,\r\n marginBottom: -2,\r\n paddingRight: 5,\r\n color: palette.orange.primary\r\n },\r\n error: {\r\n fontSize: 14,\r\n marginBottom: -2,\r\n paddingRight: 5,\r\n color: palette.red.primary\r\n },\r\n search: {\r\n width: 325,\r\n marginLeft: -5\r\n },\r\n menuText: {\r\n fontSize: 14,\r\n fontFamily: 'Roboto'\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (CensusStatus as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n employeeState: EmployeeReducerStatePropType,\r\n planState: PlanReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n const isSalaryRequired = salariesRequiredSelector(state, true);\r\n return {\r\n isSalaryRequired: isSalaryRequired,\r\n employeeState: state.employee,\r\n enrollmentState: state.enrollment,\r\n planState: state.plan,\r\n groupApplicationState: state.groupSubmission\r\n };\r\n}\r\n \r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n fetchEmployees: () => dispatch(fetchEmployees(ownProps.companyId, ownProps.enrollmentId)),\r\n deleteEmployee: (id, name) => dispatch(deleteEmployee(ownProps.companyId, ownProps.enrollmentId, id, name)),\r\n addEmployee: (employee) => dispatch(addEmployee(ownProps.companyId, ownProps.enrollmentId, employee)),\r\n exportDocuments: (types) => dispatch(exportDocuments(ownProps.companyId, ownProps.enrollmentId, types)),\r\n displaySnackbar: (message, variant) => dispatch(displaySnackbar(message, variant))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(CensusStatus));","import { createStyles, withStyles, WithStyles } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { compose } from 'recompose'\r\nimport { Employee } from 'redux/reducers';\r\nimport { getStatusCounts } from 'utility/employee_utils';\r\nimport palette from 'utility/palette';\r\nimport { EnrollmentStatusCounts } from './enrollment_status_counts';\r\n\r\ninterface ComponentProps {\r\n onSubmit: () => void;\r\n onResubmit: () => void;\r\n employees: Employee[];\r\n companyName: string | undefined;\r\n daysRemaining: number;\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles;\r\n\r\nconst styles = () => createStyles({\r\n statusColumn: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end'\r\n },\r\n pieDiv: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n pieValue: {\r\n position: 'absolute',\r\n fontSize: 18,\r\n fontWeight: 500,\r\n color: palette.grey.darkText\r\n }\r\n});\r\n\r\nconst EnrollmentStatuses = (props: Props) => {\r\n const { completed: completedCount, submitted: submittedCount, inProgress, notStarted } = getStatusCounts(props.employees);\r\n const { classes, daysRemaining, employees } = props;\r\n return (<>\r\n {employees.length > 0 &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default compose(\r\n withStyles(styles)\r\n)(EnrollmentStatuses)","import { Typography, createStyles, withStyles, WithStyles } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport auth from 'utility/auth';\r\nimport palette from 'utility/palette';\r\nimport SaveButton from '../common/save_button';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\ninterface ComponentProps {\r\n disabled: boolean;\r\n loading: boolean;\r\n onSubmit: () => void;\r\n onResubmit: () => void;\r\n submissionDate: moment.Moment | undefined\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles\r\n\r\nconst EnrollmentSubmissionCard = (props: Props) => {\r\n const { classes = {}, loading, disabled, onSubmit, onResubmit, submissionDate } = props;\r\n const submitted = !!submissionDate;\r\n return (\r\n
\r\n {!submitted && Submit when all employee elections are complete and all group applications are uploaded.}\r\n {submissionDate &&\r\n Submitted on {submissionDate.format('ll')}\r\n }\r\n {!(submitted && auth.isUserEnrollmentSuperAdmin()) &&\r\n \r\n Submit Enrollment\r\n \r\n }\r\n {submitted && auth.isUserEnrollmentSuperAdmin() &&\r\n \r\n Resubmit Enrollment\r\n \r\n }\r\n
\r\n );\r\n};\r\n\r\nconst styles = () => createStyles({\r\n root: {\r\n display: 'flex',\r\n width: '100%',\r\n alignItems: 'center'\r\n },\r\n placeholder: {\r\n height: 140\r\n },\r\n paper: {\r\n display: 'flex',\r\n padding: 10,\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n height: 120,\r\n color: palette.grey.text\r\n },\r\n disabled: {\r\n backgroundColor: palette.grey.dark\r\n },\r\n countdownDiv: {\r\n color: palette.grey.midText,\r\n marginBottom: 5,\r\n fontSize: 24\r\n },\r\n text: {\r\n marginTop: 5,\r\n fontSize: 12,\r\n flexBasis: '50%',\r\n flexGrow: 1\r\n },\r\n icon: {\r\n fontSize: 24,\r\n marginBottom: -3,\r\n color: palette.orange.primary\r\n }, warningIcon: {\r\n fontSize: 18,\r\n marginRight: 4,\r\n color: palette.orange.warning,\r\n },\r\n});\r\n\r\nexport default withStyles(styles)(EnrollmentSubmissionCard);","import { withStyles, Theme, createStyles, WithStyles, Typography, Paper, Button, Grid } from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport ReactPlaceholder from \"react-placeholder/lib\";\r\n\r\n\r\ninterface DashboardCardData {\r\n primaryAction?: {\r\n text: string;\r\n icon: React.ReactNode;\r\n onClick: () => void;\r\n },\r\n secondaryAction?: {\r\n text: string;\r\n icon: React.ReactNode;\r\n onClick: () => void;\r\n },\r\n status?: {\r\n icon: React.ReactNode;\r\n text: string;\r\n },\r\n content: React.ReactNode;\r\n title: string;\r\n}\r\n\r\ninterface ComponentProps {\r\n data?: DashboardCardData\r\n disabled: boolean;\r\n variant: 'fixed' | 'fluid';\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles;\r\n\r\nconst DashboardGenericActionCard = ({ data, classes, disabled, variant = 'fluid' }: Props) => {\r\n const sizeClass = variant === 'fixed' ? classes.fixed : undefined\r\n\r\n const renderData = React.useCallback(({ primaryAction, secondaryAction, status, content, title }: DashboardCardData) => {\r\n return <>\r\n {status && {status.icon}
\r\n {status.text}\r\n
}\r\n \r\n {/* header */}\r\n \r\n {title}\r\n \r\n {secondaryAction && \r\n {secondaryAction.icon} {secondaryAction.text}\r\n }\r\n \r\n {primaryAction ? \r\n \r\n {primaryAction.icon} {primaryAction.text}\r\n \r\n \r\n {content}\r\n \r\n : undefined}\r\n {!primaryAction ? content : undefined}\r\n \r\n \r\n }, [classes, disabled, sizeClass])\r\n\r\n return
\r\n \r\n {data && renderData(data)}\r\n \r\n
\r\n}\r\n\r\nconst styles = (theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n position: 'relative'\r\n },\r\n fixed: {\r\n height: '127.5px'\r\n },\r\n indicator: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n zIndex: 500,\r\n padding: theme.spacing(1),\r\n textAlign: 'center'\r\n },\r\n disabled: {\r\n backgroundColor: theme.palette.grey[200],\r\n },\r\n text: {\r\n fontSize: '.75rem'\r\n },\r\n header: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n paper: {\r\n padding: theme.spacing(2),\r\n boxSizing: 'border-box',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between'\r\n },\r\n secondaryActionLabel: {\r\n textTransform: 'none'\r\n },\r\n actionSection: {\r\n },\r\n item: {\r\n position: 'relative'\r\n },\r\n primaryAction: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0\r\n },\r\n secondaryAction: {\r\n margin: '-6px -8px',\r\n padding: '6px 8px'\r\n }\r\n })\r\n}\r\n\r\nexport default withStyles(styles)(DashboardGenericActionCard)","import { Typography, withStyles, createStyles, WithStyles, Theme, CircularProgress, Grid } from '@material-ui/core';\r\nimport CompleteIcon from '@material-ui/icons/CheckCircle';\r\nimport AssignmentIcon from '@material-ui/icons/Assignment';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport Adobeicon from '../../images/sign_app_RGB_2017.svg'\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport routes from 'router/routes';\r\nimport { compose } from 'recompose';\r\nimport clsx from 'clsx';\r\nimport DashboardGenericActionCard from '../common/dashboard_generic_action_card';\r\nimport InProgressIcon from '../common/icons/icon_in_progress';\r\nimport palette from '../../utility/palette';\r\nimport { url } from 'inspector';\r\n\r\ninterface ComponentProps {\r\n missingApps: number;\r\n completedApps: number;\r\n loading?: boolean;\r\n disabled?: boolean;\r\n companyId: string;\r\n enrollmentId: string;\r\n groupAppsLoading: boolean;\r\n groupSubmissionProcessComplete: boolean;\r\n hasError: boolean;\r\n hasDigitalSignOptin: boolean;\r\n}\r\ninterface Props extends WithStyles, RouteComponentProps, ComponentProps { }\r\n\r\nconst GroupApplicationsCard = (props: Props) => {\r\n function handleGroupApplicationRoute() {\r\n const { path, params } = routes.groupApplication;\r\n const route = path.replace(params!.companyId!, props.companyId).replace(params!.enrollmentId!, props.enrollmentId);\r\n props.history.push(route);\r\n }\r\n\r\n const disabledContent = () => Find group applications here when enrollment setup is complete.\r\n const refreshContent = () => \r\n \r\n \r\n \r\n \r\n Please wait as we retrieve your group applications\r\n \r\n ;\r\n\r\n const errorContent = () => \r\n \r\n \r\n \r\n  \r\n We are unable to process your request at this time. Please try again later. If problem persists reach out to your BenefitMall Administrator.\r\n \r\n \r\n ; \r\n\r\n const content = () => <>\r\n {isComplete === false ? <>\r\n \r\n  \r\n Missing Data\r\n : undefined}\r\n Download carrier group apps and upload filled out forms.\r\n \r\n\r\n const { classes = {}, loading = false, groupAppsLoading, disabled = false } = props;\r\n const isComplete = props.missingApps === 0;\r\n const displayDigitalSignIcon = props.groupSubmissionProcessComplete && props.hasDigitalSignOptin;\r\n return (\r\n : ,\r\n onClick: handleGroupApplicationRoute\r\n } : undefined),\r\n status: disabled ? undefined : (props.groupSubmissionProcessComplete ? {\r\n text: '',\r\n icon: isComplete ? : \r\n } : undefined),\r\n content: disabled ? disabledContent() : checkGroupSubmissionProcessComplete()\r\n }}\r\n disabled={disabled}\r\n classes={{\r\n primaryAction: clsx(classes.primary)\r\n }}\r\n />\r\n );\r\n\r\n function checkGroupSubmissionProcessComplete() {\r\n if(props.groupSubmissionProcessComplete){\r\n return content();\r\n }\r\n else if(props.hasError){\r\n return errorContent();\r\n }\r\n else {\r\n return refreshContent();\r\n }\r\n }\r\n\r\n};\r\n\r\nconst styles = (theme: Theme) => {\r\n return createStyles({\r\n text: {\r\n fontSize: '.75rem'\r\n },\r\n primary: {\r\n color: theme.palette.primary.main\r\n },\r\n success: {\r\n color: theme.palette.secondary.main\r\n },\r\n icon: {\r\n fontSize: '1rem',\r\n marginBottom: -2\r\n },\r\n indicatorIcon: {\r\n height: theme.spacing(4),\r\n width: theme.spacing(4)\r\n },\r\n inProgress: {\r\n color: theme.palette.primary.light\r\n },\r\n red: {\r\n color: theme.palette.error.main,\r\n },\r\n bold: {\r\n fontWeight: 'bold'\r\n },\r\n disabledText: {\r\n color: palette.grey.text,\r\n display: 'flex',\r\n textAlign: 'center',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n processingText: {\r\n color: palette.grey.text,\r\n display: 'flex',\r\n textAlign: 'left',\r\n alignItems: 'left',\r\n justifyContent: 'left',\r\n },\r\n toolbarLogo: {\r\n height: 28,\r\n display: 'inline-list-item',\r\n top: -6\r\n }\r\n\r\n })\r\n}\r\n\r\nexport default compose(\r\n withStyles(styles),\r\n withRouter\r\n)(GroupApplicationsCard)","import { Button, DialogActions, DialogContent, DialogContentText, Grid } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { KeyboardDatePicker as DatePicker, MaterialUiPickersDate } from \"@material-ui/pickers\";\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { isIE } from 'utility/browser_utils';\r\nimport { defaultDateMask } from 'utility/date_picker_mask';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onSetDates: (startDate: moment.Moment, endDate: moment.Moment) => void;\r\n onCancel: () => void;\r\n startDate?: moment.Moment;\r\n endDate?: moment.Moment;\r\n}\r\n\r\ntype Props = ComponentProps & StyledComponentProps;\r\n\r\ninterface State {\r\n startDate: moment.Moment;\r\n endDate: moment.Moment;\r\n errorStartDate?: string;\r\n errorEndDate?: string;\r\n}\r\n\r\nclass SetEnrollmentDatesDialog extends React.PureComponent{\r\n errorMessageStartDate = 'Start Date must be before End Date';\r\n errorMessageEndDate = 'End Date must be after Start Date';\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n startDate: this.props.startDate || moment().startOf('day'),\r\n endDate: this.props.endDate || moment().add(1, 'month').endOf('day')\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n if ((this.props.startDate !== undefined && this.props.endDate !== undefined) &&\r\n (this.props.endDate !== prevProps.endDate || this.props.startDate !== prevProps.startDate)) {\r\n this.setState({\r\n startDate: this.props.startDate,\r\n endDate: this.props.endDate\r\n })\r\n }\r\n }\r\n\r\n onSubmit = () => {\r\n this.props.onSetDates(this.state.startDate, this.state.endDate);\r\n };\r\n\r\n //TODO change any \r\n handleStartDateChange = (startDate: any) => {\r\n const newStartDate = moment(startDate).startOf(\"day\");\r\n const newEndDate = moment(this.state.endDate).startOf(\"day\");\r\n\r\n if (newStartDate.isValid()) {\r\n if (newEndDate.isValid()) {\r\n if (newEndDate.diff(newStartDate, 'days') <= 90) {\r\n newStartDate.startOf('day');\r\n this.setState({\r\n startDate: newStartDate,\r\n errorStartDate: newStartDate.isAfter(this.state.endDate) ? this.errorMessageStartDate : undefined,\r\n errorEndDate: undefined\r\n });\r\n \r\n }\r\n else {\r\n this.setState({\r\n errorStartDate: 'Cannot be more than 90 days before end date.',\r\n errorEndDate: undefined\r\n });\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n errorStartDate: 'Invalid Start Date',\r\n errorEndDate: undefined\r\n });\r\n }\r\n };\r\n\r\n //TODO change any \r\n handleEndDateChange = (endDate: any) => {\r\n const newEndDate = moment(endDate).startOf(\"day\");\r\n const newStartDate = moment(this.state.startDate).startOf(\"day\");\r\n\r\n if (newEndDate.isValid()) {\r\n if (newStartDate.isValid()) {\r\n if (newEndDate.diff(newStartDate, 'days') <= 90) {\r\n this.setState({\r\n endDate: newEndDate,\r\n errorEndDate: newEndDate.isBefore(this.state.startDate) ? this.errorMessageEndDate : undefined,\r\n errorStartDate: undefined\r\n });\r\n \r\n }\r\n else {\r\n this.setState({\r\n errorEndDate: 'Cannot be more than 90 days after start date.',\r\n errorStartDate: undefined\r\n });\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n errorEndDate: 'Invalid End Date',\r\n errorStartDate: undefined\r\n });\r\n }\r\n };\r\n\r\n isDisabled = () => {\r\n return !!(this.state.errorStartDate || this.state.errorEndDate);\r\n }\r\n\r\n render() {\r\n const { classes = {} } = this.props;\r\n return (\r\n \r\n \r\n Please choose the start and end date for this enrollment.\r\n \r\n \r\n this.handleStartDateChange(ev.target.value)}\r\n mask={defaultDateMask}\r\n format='L'\r\n placeholder='MM/DD/YYYY'\r\n error={!!this.state.errorStartDate}\r\n helperText={this.state.errorStartDate}\r\n maxDate={this.state.endDate}\r\n inputVariant=\"outlined\"\r\n />\r\n \r\n \r\n this.handleEndDateChange(ev.target.value)}\r\n mask={defaultDateMask}\r\n format='L'\r\n placeholder='MM/DD/YYYY'\r\n error={!!this.state.errorEndDate}\r\n helperText={this.state.errorEndDate}\r\n minDate={this.state.startDate}\r\n inputVariant=\"outlined\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Set Dates\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n pickers: {\r\n marginTop: 15,\r\n marginBottom: 20,\r\n textAlign: 'center'\r\n },\r\n pickerButtonIE: {\r\n marginRight: 15,\r\n marginLeft: 0\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(SetEnrollmentDatesDialog);","import { createStyles, Theme, Typography, withStyles, WithStyles, Grid } from '@material-ui/core';\r\nimport EventIcon from '@material-ui/icons/Event';\r\nimport MailIcon from '@material-ui/icons/Mail';\r\nimport clsx from 'clsx';\r\nimport SetEnrollmentDatesDialog from 'components/enrollment/set_enrollment_dates_dialog';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport CopyToClipboard from 'react-copy-to-clipboard';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport { compose } from 'recompose';\r\nimport { displaySnackbar, updateEnrollment } from 'redux/actions';\r\nimport { EnrollmentDTO, EnrollmentReducerState, SnackbarVariant } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport palette from '../../utility/palette';\r\nimport DashboardGenericActionCard from '../common/dashboard_generic_action_card';\r\n\r\ninterface ComponentProps {\r\n loading?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface StateProps {\r\n enrollmentDates?: {\r\n start: moment.Moment;\r\n end: moment.Moment;\r\n };\r\n enrollment: EnrollmentReducerState\r\n}\r\n\r\ninterface DispatchProps {\r\n updateEnrollment: (enrollment: EnrollmentDTO) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n}\r\n\r\ntype Props = WithStyles & RouteComponentProps & ComponentProps & StateProps & DispatchProps\r\n\r\nconst GroupApplicationsCard = (props: Props) => {\r\n const {\r\n classes = {},\r\n loading = false,\r\n disabled = false,\r\n enrollmentDates,\r\n enrollment,\r\n history,\r\n displaySnackbar,\r\n updateEnrollment\r\n } = props;\r\n\r\n const [state, setState] = React.useState({\r\n editDatesModal: false,\r\n editDatesLoading: false,\r\n sendInviteAfterSetDates: false\r\n })\r\n\r\n const { editDatesModal: editDatesOpen, editDatesLoading, sendInviteAfterSetDates } = state\r\n\r\n const content = () => <>\r\n
\r\n Send the Invite URL to employees so they can enroll on their own. \r\n displaySnackbar('URL Copied', 'success')}>\r\n Invite URL\r\n \r\n
\r\n \r\n\r\n const goToInvitation = () => {\r\n const { path, params } = routes.employeeInvitations;\r\n const route = path.replace(params!.companyId!, enrollment.company.id).replace(params!.enrollmentId!, enrollment.id);\r\n history.push(route);\r\n }\r\n\r\n const goToInvitationClicked = () => {\r\n if (!enrollmentDates) {\r\n setState({\r\n ...state,\r\n sendInviteAfterSetDates: true,\r\n editDatesModal: true\r\n })\r\n } else {\r\n goToInvitation();\r\n }\r\n };\r\n\r\n const disabledContent = () => Invite employees or enroll for employees when enrollment setup is complete.\r\n\r\n return (<>\r\n ,\r\n onClick: goToInvitationClicked\r\n },\r\n secondaryAction: disabled ? undefined : {\r\n text: enrollmentDates ? `${moment(enrollmentDates.start).format('l')} - ${moment(enrollmentDates.end).format('l')}` : 'Set Enrollment Dates',\r\n icon: ,\r\n onClick: () => setState({\r\n ...state,\r\n editDatesModal: true\r\n })\r\n },\r\n content: disabled ? disabledContent() : content()\r\n }}\r\n disabled={disabled}\r\n classes={{\r\n primaryAction: clsx(classes.primary),\r\n secondaryAction: clsx(classes.primary)\r\n }}\r\n />\r\n {\r\n setState({\r\n ...state,\r\n editDatesModal: false,\r\n sendInviteAfterSetDates: false\r\n })\r\n }}\r\n onSetDates={async (start, end) => {\r\n setState({\r\n ...state,\r\n editDatesModal: false,\r\n editDatesLoading: true\r\n });\r\n const enrollmentPayload: EnrollmentDTO = {\r\n ...enrollment,\r\n effectiveDate: enrollment.effectiveDate ? enrollment.effectiveDate : undefined,\r\n setupCompletedOn: enrollment.setupCompletedOn ? enrollment.setupCompletedOn.utc().format() : undefined,\r\n submissionDate: enrollment.submissionDate ? enrollment.submissionDate.utc().format() : undefined,\r\n startDate: moment(start).utc().local(false).startOf(\"day\").format(),\r\n endDate: moment(end).utc().local(false).startOf(\"day\").format()\r\n\r\n };\r\n await updateEnrollment(enrollmentPayload);\r\n setState({\r\n ...state,\r\n editDatesLoading: false,\r\n editDatesModal: false,\r\n sendInviteAfterSetDates: false\r\n })\r\n if (sendInviteAfterSetDates) {\r\n goToInvitation();\r\n }\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst styles = (theme: Theme) => {\r\n return createStyles({\r\n text: {\r\n fontSize: '.75rem'\r\n },\r\n primary: {\r\n color: theme.palette.primary.main\r\n },\r\n success: {\r\n color: theme.palette.secondary.main\r\n },\r\n red: {\r\n color: theme.palette.error.main,\r\n },\r\n bold: {\r\n fontWeight: 'bold'\r\n },\r\n copyToClipboard: {\r\n color: theme.palette.primary.main,\r\n '&:hover': {\r\n cursor: 'pointer',\r\n textDecoration: 'underline'\r\n }\r\n },\r\n disabledText: {\r\n color: palette.grey.text,\r\n display: 'flex',\r\n textAlign: 'center',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n ExtraPadding: {\r\n marginBottom: theme.spacing(1)\r\n }\r\n })\r\n}\r\n\r\nexport default compose(\r\n withStyles(styles),\r\n connect(\r\n (state) => ({\r\n enrollmentDates: state.enrollment.startDate && state.enrollment.endDate ? {\r\n start: state.enrollment.startDate,\r\n end: state.enrollment.endDate\r\n } : undefined,\r\n enrollment: state.enrollment\r\n }),\r\n (dispatch: any) => ({\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => dispatch(displaySnackbar(message, variant)),\r\n updateEnrollment: (enrollment) => dispatch(updateEnrollment(enrollment)),\r\n })\r\n ),\r\n withRouter\r\n)(GroupApplicationsCard)","import Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport palette from 'utility/palette';\r\nimport { withStyles, Table, TableHead, TableRow, TableCell, TableBody, TableSortLabel, Checkbox, Typography, StyledComponentProps } from '@material-ui/core';\r\nimport { simpleCompare } from 'utility/simple_utils';\r\nimport memoizeOne from 'memoize-one';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\n\r\ninterface Props extends StyledComponentProps{\r\n open: boolean;\r\n onCancel: () => void;\r\n onDone: (groupList: ResubmitEnrollmentFieldData[]) => void;\r\n groupsList: ResubmitEnrollmentFieldData[];\r\n}\r\n\r\nexport interface ResubmitEnrollmentFieldData {\r\n id: string;\r\n carrierNm: string;\r\n stateCd: string;\r\n selected: boolean;\r\n}\r\n\r\ninterface State {\r\n headerColumns: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n }[],\r\n sortedGroups: ResubmitEnrollmentFieldData[],\r\n isHovering: boolean;\r\n}\r\n\r\nclass ResubmitEnrollmentDialog extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n headerColumns: [\r\n { id: 'select', direction: false, label: 'Resubmit' },\r\n { id: 'carrierNm', direction: false, label: 'Carrier' },\r\n { id: 'stateCd', direction: false, label: 'Market' },\r\n ],\r\n isHovering: false,\r\n sortedGroups: props.groupsList!.slice(),\r\n \r\n };\r\n }\r\n\r\n handleSort = (key: string) => {\r\n this.setState(prevState => {\r\n const newHeaderColumns = prevState.headerColumns.slice();\r\n const newSortedGroups = this.props.groupsList!.slice();\r\n\r\n newHeaderColumns.forEach(col => {\r\n if (col.id === key) {\r\n if (col.direction === false || col.direction === 'desc') {\r\n col.direction = 'asc';\r\n newSortedGroups.sort(simpleCompare(key, false));\r\n } else if (col.direction === 'asc') {\r\n col.direction = 'desc'\r\n newSortedGroups.sort(simpleCompare(key, true));\r\n }\r\n } else {\r\n col.direction = false;\r\n }\r\n });\r\n\r\n // reselect previously selected groups\r\n newSortedGroups.forEach(p => {\r\n const g = prevState.sortedGroups.find(grp => grp.id === p.id);\r\n p.selected = g ? g.selected : false;\r\n });\r\n\r\n return {\r\n ...prevState,\r\n headerColumns: newHeaderColumns,\r\n sortedGroups: newSortedGroups\r\n };\r\n });\r\n };\r\n\r\n selectGroup = (updated: boolean, checkState: boolean, p: ResubmitEnrollmentFieldData): ResubmitEnrollmentFieldData => {\r\n if (updated) {\r\n return ({\r\n ...p,\r\n selected: checkState\r\n });\r\n }\r\n else {\r\n return ({ ...p });\r\n }\r\n };\r\n\r\n onGroupSubClick = (ev: any) => {\r\n const grps = this.state.sortedGroups;\r\n const updatedGroups: ResubmitEnrollmentFieldData[] = grps.map((p, i) => {\r\n return this.selectGroup(p.id === ev.target.value, ev.target.checked, p);\r\n });\r\n this.setState({ sortedGroups: updatedGroups });\r\n };\r\n\r\n onResubmitClicked = () => {\r\n this.props.onDone(this.state.sortedGroups.filter(g => g.selected === true));\r\n };\r\n\r\n numberOfSelectionFilter = memoizeOne((sortedGroups: ResubmitEnrollmentFieldData[]) => sortedGroups.filter(g => g.selected === true).length);\r\n\r\n render() {\r\n const { classes = {} } = this.props;\r\n const hoverClass = this.state.isHovering ? classes.hover : '';\r\n const lastRow = this.props.groupsList ? this.props.groupsList.length - 1 : 0;\r\n return (\r\n \r\n \r\n \r\n Choose the carriers/markets that should be resubmitted.\r\n \r\n
\r\n \r\n \r\n \r\n {this.state.headerColumns.map(column => (\r\n this.handleSort(column.id)} sortDirection={column.direction}>\r\n \r\n {column.label}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {this.state.sortedGroups.map((row, index) => (\r\n \r\n \r\n \r\n \r\n \r\n {row.carrierNm}\r\n \r\n \r\n {row.stateCd}\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\nconst styles: { [key: string]: CSSProperties } = {\r\n contributionWrapper: {\r\n marginTop: 24,\r\n marginBottom: 32,\r\n alignContent: 'center',\r\n textAlign: 'center'\r\n },\r\n hover: {\r\n backgroundColor: palette.grey.surface,\r\n cursor: 'pointer',\r\n },\r\n table: {\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: '100%'\r\n },\r\n tableParent: {\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: '100%',\r\n borderRadius: 5,\r\n display: 'inline-block',\r\n marginTop: 16,\r\n maxHeight: 450\r\n },\r\n tableTop: {\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n maxWidth: '100%'\r\n },\r\n tableParentTop: {\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: '100%',\r\n maxWidth: '100%',\r\n borderRadius: 5,\r\n display: 'inline-block',\r\n marginTop: 16\r\n },\r\n lastRow: {\r\n borderBottom: 0\r\n },\r\n tableHeaderTop: {\r\n textAlign: 'center',\r\n whiteSpace: 'nowrap'\r\n },\r\n tableHeaderBottom: {\r\n textAlign: 'left',\r\n whiteSpace: 'nowrap'\r\n },\r\n tableCell: {\r\n color: palette.grey.darkText\r\n },\r\n numberOfSelectedPlans: {\r\n float: 'right',\r\n marginTop: 10\r\n }\r\n}\r\nexport default withStyles(styles)(ResubmitEnrollmentDialog);","import Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport React from 'react';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport { Grid } from '@material-ui/core';\r\nimport palette from 'utility/palette';\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility';\r\nimport moment from 'moment';\r\nimport { showCarrierWarningSubmission } from 'utility/plan_setup_utils';\r\n\r\nexport interface IInCompleteEmployees {\r\n employeeFullName: string;\r\n incompleteReason: string;\r\n}\r\n\r\ninterface Props {\r\n companyName?: string;\r\n open: boolean;\r\n inCompleteEmployees?: IInCompleteEmployees[];\r\n waivedElectionsEmployees?: string[];\r\n configurationTypeIds?: Set;\r\n groupAppsMissing: string[];\r\n otherValidations: string[];\r\n onDone: () => void;\r\n d2cCarrierCodes: string[];\r\n reduceValidation?: boolean;\r\n effectiveDateToPush10Days: moment.Moment;\r\n effectiveDateToPush14Days: moment.Moment;\r\n carrierName10Days: string;\r\n carrierName14Days: string;\r\n employeeCount?: number;\r\n hasOptedDigitalSignin: boolean;\r\n carriersSelected: string[];\r\n nonGACarriers: string[];\r\n\r\n}\r\n\r\nconst SubmitEnrollmentDialog = (props: Props) => {\r\n\r\n const njWaiverKey = process.env.REACT_APP_NJ_WAIVER_FORM_LINK as string;\r\n\r\n function renderContent() {\r\n var groupAppsMissing = props.groupAppsMissing.length > 0 && !props.reduceValidation;\r\n var hasInCompleteEmployees = (props.inCompleteEmployees && props.inCompleteEmployees.length > 0);\r\n var employeesAdded = props.employeeCount != 0;\r\n const failedValidations = (groupAppsMissing) || hasInCompleteEmployees || !(employeesAdded) || (props.otherValidations && props.otherValidations.length > 0);\r\n const compareCarrierNm10Days = props.carrierName10Days.toUpperCase();\r\n const compareCarrierNm14Days = props.carrierName14Days.toUpperCase();\r\n var within10Days = \"\";\r\n var within14Days = \"\";\r\n if (props.configurationTypeIds &&\r\n props.effectiveDateToPush10Days.diff(moment(), 'days') <= 10 &&\r\n props.configurationTypeIds.has(CONFIGURATION_TYPE_IDS.EffectiveDateLessThan10Days)) {\r\n within10Days = \"10\";\r\n }\r\n if (props.configurationTypeIds &&\r\n props.effectiveDateToPush14Days.diff(moment(), 'days') <= 14 &&\r\n props.configurationTypeIds.has(CONFIGURATION_TYPE_IDS.EffectiveDateLessThan14Days)) {\r\n within14Days = \"14\";\r\n }\r\n if (failedValidations) {\r\n return (\r\n
\r\n {props.companyName} enrollment cannot be submitted until all required information is entered, employee elections are complete, and all group applications are ready.\r\n {!employeesAdded &&\r\n <>\r\n

Employees are missing in the enrollment

\r\n \r\n }\r\n {props.otherValidations.length > 0 &&\r\n <>\r\n

The following information is required:

\r\n
\r\n {props.otherValidations.map((item, index) => (\r\n
{item}
\r\n ))}\r\n
\r\n \r\n }\r\n {(props.groupAppsMissing.length > 0 && !props.reduceValidation) &&\r\n <>\r\n

The following group applications are incomplete:

\r\n
\r\n {props.groupAppsMissing.map((item, index) => (\r\n
{item}
\r\n ))}\r\n
\r\n \r\n }\r\n {props.inCompleteEmployees && props.inCompleteEmployees.length > 0 &&\r\n <>\r\n

The following employees are incomplete:

\r\n
\r\n {props.inCompleteEmployees.slice(0, 5).map((incompleteEmployee, index) => (\r\n
\r\n {incompleteEmployee.employeeFullName}\r\n {incompleteEmployee.incompleteReason \r\n && ({incompleteEmployee.incompleteReason})\r\n }\r\n
\r\n ))}\r\n {props.inCompleteEmployees.length > 5 &&
+ {props.inCompleteEmployees.length - 5} more
}\r\n
\r\n \r\n }\r\n Once all required information is entered, elections are complete, and group applications are ready, you can submit the enrollment.\r\n
);\r\n }\r\n else {\r\n return (\r\n
\r\n Enrollment for {props.companyName} has been submitted to BenefitMall! As this enrollment processes through BenefitMall to the carrier you can use Agency Workspace to stay up to date with the status of the enrollment and latest information.\r\n\r\n

Please contact us if you have any questions.

\r\n\r\n { showCarrierWarningSubmission(\"METLIFE LEGAL PLANS\", props.carriersSelected) && \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n MetLife Legal Plans partners with BenefitMall for administering this product. BenefitMall will generate monthly invoices, collect premium payments and manage new hires and terminations.\r\n \r\n \r\n
\r\n \r\n }\r\n {props.hasOptedDigitalSignin &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n You have opted to use Digital Signatures. You will be getting an email shortly with a link that can be used to log in and sign the forms. Please make sure that you as well as all the listed persons complete the signatures at the earliest.\r\n
Enrollment submission process will be complete only after all the signatures are completed\r\n
\r\n
\r\n
\r\n \r\n }\r\n {props.d2cCarrierCodes.map((carrieCode: string) => {\r\n if (showCarrierWarningSubmission(carrieCode, props.carriersSelected, \"HUMANA\")){\r\n return \r\n \r\n \r\n \r\n \r\n Humana will be processed directly with the carrier once BenefitMall reviews all submissions. Once you receive notice from our team, you will return to online enrollment and sign Humana’s EGA form digitally.\r\n \r\n \r\n }\r\n else {\r\n return undefined;\r\n }\r\n })\r\n }\r\n\r\n {props.nonGACarriers.length > 0 &&\r\n <>\r\n
\r\n
\r\n The carriers listed below were not submitted to BenefitMall New Business for processing as a case. Please download the census and send to the carrier, for processing with the carrier directly.\r\n
    \r\n {props.nonGACarriers.map((carrier: string) => {\r\n return
  • \r\n {carrier}\r\n
  • \r\n })\r\n }\r\n
\r\n
\r\n \r\n\r\n }\r\n\r\n {props.configurationTypeIds &&\r\n within10Days != \"\"\r\n && showCarrierWarningSubmission(compareCarrierNm10Days, props.carriersSelected) && \r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Your enrollment has been submitted within {within10Days} days of the {props.effectiveDateToPush10Days.format('MM/DD')} {props.carrierName10Days} product Effective Date you have in the enrollment.\r\n BenefitMall may push out the Effective Date of your plan to {props.effectiveDateToPush10Days.clone().add(1, 'M').format('MM/DD')}, to ensure the product will be properly processed and your group will get coverage. Please contact us if you have any questions.\r\n \r\n \r\n\r\n \r\n }\r\n {props.configurationTypeIds &&\r\n within14Days != \"\"\r\n && showCarrierWarningSubmission(compareCarrierNm14Days, props.carriersSelected) && \r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Your enrollment has been submitted within {within14Days} days of the {props.effectiveDateToPush14Days.format('MM/DD')} {props.carrierName14Days} product Effective Date you have in the enrollment.\r\n BenefitMall may push out the Effective Date of your plan to {props.effectiveDateToPush14Days.clone().add(1, 'M').format('MM/DD')}, to ensure the product will be properly processed and your group will get coverage. Please contact us if you have any questions.\r\n \r\n \r\n\r\n \r\n }\r\n\r\n {props.configurationTypeIds && props.configurationTypeIds.has(CONFIGURATION_TYPE_IDS.SubmitEnrollmentWaiverFormWitnessSignature) && props.waivedElectionsEmployees && props.waivedElectionsEmployees.length > 0 &&\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n This submission contains employees waiving coverage. A witness waiver form needs to be submitted to BenefitMall for all employees waiving or refusing coverage.\r\n \r\n \r\n\r\n

The following employees need waiver forms with witness signatures:

\r\n\r\n
\r\n {props.waivedElectionsEmployees.slice(0, 5).map((item, index) => (\r\n
{item}
\r\n ))}\r\n {props.waivedElectionsEmployees.length > 5 &&
+ {props.waivedElectionsEmployees.length - 5} more
}\r\n
\r\n\r\n

Employees who need waiver forms can be identified by exporting your census from the dashboard and viewing who waived coverage.

\r\n \r\n }\r\n
);\r\n }\r\n }\r\n\r\n function renderTitle() {\r\n if (props.inCompleteEmployees || props.employeeCount === 0) {\r\n return ('Submission Requirements Missing');\r\n }\r\n else {\r\n return ('Enrollment Submission');\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {renderContent()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n employeesList: {\r\n paddingLeft: \"30px\"\r\n },\r\n employeeNames: {\r\n marginBottom: \"15px\"\r\n },\r\n logoImage: {\r\n height: 30,\r\n position: 'relative',\r\n },\r\n infoIcon: {\r\n color: palette.blue.link\r\n },\r\n spacing: {\r\n marginLeft: \"1rem\"\r\n }\r\n}\r\n\r\nexport default SubmitEnrollmentDialog;","import * as React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst Shield = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Shield;","import { Button, Grid, Checkbox, DialogContent, DialogActions, FormControlLabel, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@material-ui/core';\r\nimport { Breakpoint } from '@material-ui/core/styles/createBreakpoints';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { Plan } from 'redux/reducers';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { locIconSelector, simpleCompare } from 'utility/simple_utils';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport { IsCustomCarrierPlan, IsCustomCarrierPlanExist } from 'utility/plan_setup_utils';\r\nimport { styles as commonFormStyles } from '../../utility/common_styles'\r\nimport { styles } from 'utility/setup_complete_styles'\r\nimport SaveButton from 'components/common/save_button';\r\nimport Adobeicon from '../../images/sign_app_RGB_2017.svg'\r\n\r\n\r\n\r\ninterface Props extends WithWidth {\r\n plans: Plan[];\r\n companyName: string;\r\n onClose: () => void;\r\n onConfirmation: (digitalSignOptin: boolean) => void;\r\n employeesCount: number;\r\n hasAdobeConfig: boolean;\r\n hasOptin: boolean;\r\n onCheckDigitalSignOptin: (event: any, checked: boolean) => void;\r\n}\r\n\r\nfunction getLOCicon(loc: number, width: Breakpoint) {\r\n let LocIcon: any;\r\n switch (loc) {\r\n case getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('MEDICAL');\r\n return } />\r\n case getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('DENTAL');\r\n return } />\r\n case getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('VISION');\r\n return } />\r\n case getLookupId('CHILDLIFE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('SPOUSELIFE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('GROUPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('SUPPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('LIFE');\r\n return } />\r\n case getLookupId('STD', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('LTD', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('DISABILITY');\r\n return } />\r\n case getLookupId('ACCIDENT', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('CRITICALILLNESS', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n case getLookupId('HOSPITAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('VOLUNTARY');\r\n return } />\r\n case getLookupId('PETINSURANCE', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('PET');\r\n return } />\r\n case getLookupId('IDENTITYPROTECTION', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('IDENTITYPROTECTION');\r\n return } />\r\n case getLookupId('LEGAL', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('LEGAL');\r\n return } />\r\n case getLookupId('GAPLOC', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('GAPLOC');\r\n return } />\r\n case getLookupId('MASA', LOOKUP_TYPE_IDS.lineOfCoverage):\r\n LocIcon = locIconSelector('MASA');\r\n return } />\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst planRows = memoizeOne((plans: Plan[], width: Breakpoint) => {\r\n return plans.slice().sort(simpleCompare('lineOfCoverageId', false)).map((plan, index) => {\r\n const isCustomCarrierPlanExist = IsCustomCarrierPlanExist(plans);\r\n\r\n const lastRowStyle = index === plans.length - 1 ? styles.noBorderBottom : {};\r\n const lastIconStyle = { ...lastRowStyle, ...styles.iconCol };\r\n const lastCarrierStyle = isCustomCarrierPlanExist ? { ...lastRowStyle, ...styles.carrierCol } : { ...lastRowStyle };\r\n\r\n return (\r\n \r\n {getLOCicon(plan.lineOfCoverageId, width)}\r\n {plan.planDisplayName}\r\n {IsCustomCarrierPlanExist(plans) &&\r\n \r\n {IsCustomCarrierPlan(plan) &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n {plan.carrierName}\r\n \r\n \r\n );\r\n });\r\n});\r\n\r\n\r\nconst ConfirmEnrollmentSetUp = (props: Props) => {\r\n const { plans, companyName, onClose, onConfirmation, width, employeesCount } = props;\r\n const isCustomCarrierPlanExist = IsCustomCarrierPlanExist(plans);\r\n const lastCarrierStyle = isCustomCarrierPlanExist ? { ...styles.noBorderBottom, ...styles.carrierCol } : { ...styles.noBorderBottom };\r\n const [disableSubmit, setDisableSubmit] = React.useState(employeesCount === 0);\r\n const [loading, setLoading] = React.useState(false);\r\n\r\n const submitPlanSetup = () => {\r\n setDisableSubmit(true);\r\n setLoading(true);\r\n onConfirmation(props.hasOptin);\r\n }\r\n\r\n return (\r\n <>\r\n {props.hasAdobeConfig &&\r\n \r\n \r\n \r\n \r\n \r\n \"Adobe\r\n \r\n \r\n Digital Signatures powered by Adobe Sign are available for Group Applications.\r\n
\r\n Would you like to use Adobe Sign for Digital Signatures? \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n label={Yes, I want to use Digital Signatures powered by Adobe Sign}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n \r\n {employeesCount === 0 &&\r\n \r\n  A minimum of one employee is required to confirm enrollment setup\r\n \r\n } \r\n {
\r\n If you confirm your enrollment setup, \r\n you will need to cancel your enrollment in order to add or remove plans.\r\n
\r\n }\r\n
Here are the plans you selected for the enrollment for {companyName}:
\r\n
\r\n \r\n \r\n \r\n \r\n Plan Name\r\n {isCustomCarrierPlanExist &&\r\n \r\n }\r\n Carrier\r\n \r\n \r\n \r\n {planRows(plans, width)}\r\n \r\n
\r\n
\r\n {isCustomCarrierPlanExist &&\r\n
\r\n  You've added a custom plan that may not be supported by Benefitmall. Please contact your Sales Representative to determine the submission process for these plans.\r\n
\r\n }\r\n\r\n
After confirming enrollment setup you will be able to invite employees and upload group applications.\r\n By clicking Confirm Plans you approve that the coverage, plans, and rates set up in Online Enrollment depict your client’s intent.
\r\n\r\n
\r\n \r\n \r\n \r\n Confirm Plans\r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\n\r\nexport default withWidth()(ConfirmEnrollmentSetUp);","import { Table, TableBody, TableHead, TableRow, TableCell, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps, WrappedFieldProps } from 'redux-form';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport { CarrierEnrollmentTypeFormData } from './carrier_enrollment_type_form';\r\nimport { getEnrollmentTypes } from '../../utility';\r\nimport { styles } from 'utility/setup_complete_styles'\r\n\r\n\r\ninterface Props extends WrappedFieldArrayProps { }\r\nconst nativeSelect = { native: true };\r\n\r\n\r\nconst CarrierEnrollmentTypeFieldArray: React.FunctionComponent = React.memo((props: Props) => {\r\n return (\r\n <>\r\n {\r\n props.fields.get(0) && props.fields.map((name, index, fields) => {\r\n return (\r\n \r\n \r\n
{fieldProps.input.value}
}\r\n />\r\n
\r\n \r\n \r\n \r\n {getEnrollmentTypes().map(val => (\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 CarrierEnrollmentTypeFieldArray;","import React from 'react';\r\nimport { FieldArray } from 'redux-form';\r\nimport { CarrierEnrollmentTypeFormData } from './carrier_enrollment_type_form';\r\nimport CarrierEnrollmentTypeFieldArray from './carrier_enrollment_type_field_array';\r\n\r\nexport type FieldData = {\r\n carrierList: CarrierEnrollmentTypeFormData[];\r\n}\r\n\r\ninterface Props {\r\n formName: string;\r\n}\r\n\r\nconst CarrierEnrollmentTypeFields = (props: Props) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default CarrierEnrollmentTypeFields;","import { Button, DialogActions, DialogContent, DialogContentText, Table, TableBody, TableHead, TableRow, TablePagination, TableCell, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { InjectedFormProps, reduxForm } from 'redux-form';\r\nimport SaveButton from '../common/save_button';\r\nimport CarrierEnrollmentTypeFields, { FieldData as CarrierEnrollmentTypeFieldData } from './carrier_enrollment_type_fields'\r\nimport { Plan } from '../../redux/reducers';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport Help from '@material-ui/icons/Help';\r\nimport { styles } from 'utility/setup_complete_styles'\r\nexport const FORM_NAME = 'CARRIER_ENROLLMENT_TYPE';\r\n \r\nexport type CarrierEnrollmentTypeFormData = {\r\n carrierCode: string,\r\n carrierName: string,\r\n enrollmentType: number,\r\n isCustomCarrier: boolean,\r\n};\r\nexport type FormData = CarrierEnrollmentTypeFieldData;\r\n\r\ninterface ComponentProps {\r\n onCancel: () => void;\r\n isLoading: boolean;\r\n isEditing: boolean;\r\n employeesCount: number;\r\n plans: Plan[];\r\n hasAdobeConfig: boolean;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps\r\n\r\nconst CarrierEnrollmentTypeForm = (props: Props) => {\r\n return (\r\n
\r\n \r\n
\r\n {props.employeesCount === 0 &&\r\n \r\n  A minimum of one employee is required to confirm enrollment setup\r\n \r\n } \r\n {
\r\n If you confirm your enrollment setup, you will need to cancel your enrollment in order to add or remove plans.\r\n
}\r\n
\r\n
Please select the type of business you are doing with each carrier:
\r\n
\r\n \r\n \r\n Carrier\r\n Business Type\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Need help with choosing the type of business?\r\n New Coverage: Group is not currently enrolled with this carrier.

Renewal: Group is renewing coverage with the same carrier as last year.
}\r\n content={} />\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Next\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME\r\n})(CarrierEnrollmentTypeForm);","import withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { Plan, CarrierEnrollmentTypeDTO, EnrollmentReducerStatePropType, EnrollmentReducerState, SnackbarVariant } from 'redux/reducers';\r\nimport ConfirmEnrollmentSetUp from './confirm_enrollment_setup';\r\nimport { ReduxState } from 'redux/store';\r\nimport CarrierEnrollmentTypeForm, { CarrierEnrollmentTypeFormData, FORM_NAME as CARRIERENROLLMENTTYPEFORM } from './carrier_enrollment_type_form';\r\nimport { FieldData as CarrierEnrollmentTypeFieldData } from './carrier_enrollment_type_fields';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { reset } from 'redux-form';\r\nimport { getLookupId, getLookupValue, LOOKUP_TYPE_IDS } from '../../utility';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n plans: Plan[];\r\n companyName: string;\r\n onClose: () => void;\r\n onConfirmation: (digitalSignOptin: boolean) => void;\r\n employeesCount: number;\r\n confirmationStep: number;\r\n onCarrierEnrollmentTypeChange: (carrierEnrollmentType: CarrierEnrollmentTypeDTO[]) => void;\r\n hasAdobeConfig: boolean;\r\n carrierWithAdobeConfig: string[]\r\n}\r\n\r\ninterface StateProps {\r\n enrollmentState: EnrollmentReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n resetForm: () => void;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps\r\n\r\ninterface State {\r\n editing: boolean;\r\n loading: boolean;\r\n currentStep: number;\r\n displayDigitalSignOptin: boolean;\r\n digitalSignOptinChecked: boolean;\r\n}\r\n\r\n\r\nclass SetupCompleteDialog extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n editing: false,\r\n loading: true,\r\n currentStep: props.confirmationStep,\r\n digitalSignOptinChecked: false,\r\n displayDigitalSignOptin: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ loading: false })\r\n }\r\n onEditEnrollmentType = (formValues: CarrierEnrollmentTypeFieldData) => {\r\n this.load();\r\n this.setState({ displayDigitalSignOptin: false });\r\n const carriers = formValues.carrierList;\r\n if (carriers.length > 0) {\r\n carriers.forEach((carrier: CarrierEnrollmentTypeFormData) => {\r\n if (carrier.enrollmentType === getLookupId('NEWBUSINESS', LOOKUP_TYPE_IDS.enrollmentType)\r\n && this.props.carrierWithAdobeConfig.includes(carrier.carrierCode)\r\n ) {\r\n this.setState({ displayDigitalSignOptin: true });\r\n }\r\n }); \r\n this.props.onCarrierEnrollmentTypeChange(carriers);\r\n }\r\n this.setState({ currentStep: 2 });\r\n }\r\n\r\n getCarriers(plans: Plan[]) {\r\n let _carriers: CarrierEnrollmentTypeDTO[] = [];\r\n\r\n plans.forEach((plan: Plan) => {\r\n if (_carriers.find(c => c.carrierCode === plan.carrierCode && c.carrierName === plan.carrierName) === undefined) {\r\n _carriers.push({\r\n carrierCode: plan.carrierCode,\r\n carrierName: plan.carrierName,\r\n isCustomCarrier: plan.isCustom == undefined ? false : plan.isCustom,\r\n enrollmentType: getLookupId('NEWBUSINESS', LOOKUP_TYPE_IDS.enrollmentType)\r\n })\r\n }\r\n });\r\n\r\n return _carriers;\r\n};\r\n\r\n removeUndefinedFromArray(array: any[]) {\r\n var index = 0;\r\n var chunkArray = [];\r\n\r\n for (index = 0; index < array.length; index++) {\r\n if (array[index] !== undefined) {\r\n chunkArray.push(array[index]);\r\n }\r\n }\r\n return chunkArray;\r\n }\r\n\r\n load = () => this.setState({ editing: true });\r\n\r\n updateSucceeded = () => {\r\n this.setState({ editing: false });\r\n // close dialog\r\n this.props.onClose();\r\n }\r\n\r\n updateFailed = () => {\r\n this.setState({ editing: false });\r\n }\r\n\r\n closeDialog = () => {\r\n this.setState({ currentStep: 1 });\r\n this.setState({ editing: false });\r\n this.setState({ loading: false });\r\n this.props.resetForm();\r\n this.props.onClose();\r\n }\r\n\r\n get initialValues() {\r\n const carrierList = this.getCarriers(this.props.plans);\r\n const formValues = {\r\n carrierList: carrierList\r\n }\r\n return formValues;\r\n\r\n };\r\n handleCheckDigitalSignInCheck = (e: any, checked: boolean) => {\r\n this.setState({ digitalSignOptinChecked: checked });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.currentStep === 1 &&\r\n \r\n }\r\n {this.state.currentStep === 2 &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (SetupCompleteDialog as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n enrollmentState: state.enrollment,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n resetForm: () => dispatch(reset(CARRIERENROLLMENTTYPEFORM))\r\n }\r\n}\r\n\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps)\r\n)(SetupCompleteDialog);\r\n","import React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { EmployeeReducerStatePropType, EmployeeReducerState, GroupSubmissionReducerState } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { Button, DialogActions, DialogContent, Grid, Divider} from '@material-ui/core';\r\nimport { styles } from 'utility/setup_complete_styles'\r\nimport SaveButton from 'components/common/save_button';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onClose: () => void;\r\n onRollback: () => void;\r\n}\r\n\r\ninterface StateProps {\r\n employeesState: EmployeeReducerState;\r\n groupApplicationState: GroupSubmissionReducerState;\r\n}\r\n\r\ninterface State {\r\n rollbackIsAgreed: boolean;\r\n}\r\n\r\ninterface DispatchProps {\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps\r\n\r\nclass RollbackEnrollmentDialog extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n rollbackIsAgreed: false \r\n };\r\n }\r\n\r\n onCheck = (e: any, checked: boolean) => {\r\n this.setState({ rollbackIsAgreed: checked });\r\n }\r\n\r\n render() {\r\n const isAnyElectionsExists = this.props.employeesState.list.filter(e => e.elections.length > 0).length > 0;\r\n const isAnyGroupApplicationsExists = this.props.groupApplicationState.list.length > 0 ? this.props.groupApplicationState.list.filter(grp => grp.documents.length > 0).length > 0 : false\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n You are about to cancel your enrollment setup.\r\n
\r\n {isAnyElectionsExists &&\r\n
\r\n All elections that are in progress or already submitted will be removed. Please contact employees if necessary to notify them of this impact. You can view all current elections by exporting the census.\r\n
\r\n }\r\n {isAnyGroupApplicationsExists &&\r\n
\r\n All group applications and supporting documents that you have uploaded for carriers will be removed. Please download group documents that you have uploaded before you continue.\r\n
\r\n }\r\n {(isAnyElectionsExists || isAnyGroupApplicationsExists) && \r\n \r\n \r\n \r\n }\r\n label={I understand that continuing this action will delete the enrollment data outlined above.}\r\n />\r\n \r\n }\r\n
\r\n Do you wish to continue?\r\n
\r\n
\r\n \r\n \r\n \r\n Continue\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (RollbackEnrollmentDialog as any).propTypes = {\r\n employeesState: EmployeeReducerStatePropType,\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n employeesState: state.employee,\r\n groupApplicationState: state.groupSubmission\r\n };\r\n}\r\n\r\nexport default compose(\r\n connect(mapStateToProps)\r\n)(RollbackEnrollmentDialog);\r\n","import { styles } from '../../utility/common_styles';\r\nimport Help from '@material-ui/icons/Help';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport { Button, createStyles, Grid, Theme, Typography, withStyles, WithStyles } from '@material-ui/core';\r\nimport CompletedIcon from '@material-ui/icons/CheckCircle';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport StoreIcon from '@material-ui/icons/Store';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport clsx from 'clsx';\r\nimport DashboardGenericActionCard from 'components/common/dashboard_generic_action_card';\r\nimport InProgressIcon from 'components/common/icons/icon_in_progress';\r\nimport PlansIcon from 'components/common/icons/icon_shield';\r\nimport WrappedToolTip from 'components/common/wrapped_tool_tip';\r\nimport SetupCompleteDialog from 'components/enrollment/setup_complete_dialog';\r\nimport RollbackEnrollmentDialog from 'components/enrollment/rollback_enrollment_dialog';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport { compose } from 'recompose';\r\nimport { EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentReducerState, Plan, CarrierEnrollmentTypeDTO } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport { companyInfoCompleteCheck, getLOCcount, isUserReadOnly, missingAuthorizedSignatory, missingAdobeSignatory, Zones, salariesRequiredSelector } from 'utility';\r\nimport auth from 'utility/auth';\r\nimport palette from 'utility/palette';\r\nimport { plansSetupCompleteCheck, plansLevelFundedRatesCheck } from 'utility/plan_setup_utils';\r\nimport SaveButton from 'components/common/save_button';\r\n\r\ninterface ComponentProps {\r\n isFetchingEnrollment: boolean;\r\n onCompleteEnrollment: (digitalSignOptin: boolean) => Promise;\r\n onRollbackEnrollment: () => Promise;\r\n enrollment: EnrollmentReducerState;\r\n onCarrierEnrollmentTypeChange: (carrierEnrollmentType: CarrierEnrollmentTypeDTO[]) => void;\r\n configurationTypeSet: Set;\r\n hasAdobeConfig: boolean;\r\n carrierWithAdobeConfig: string[]\r\n}\r\n\r\ninterface StateProps {\r\n plans: Plan[];\r\n employeeState: EmployeeReducerState;\r\n showSalaryWarning: boolean;\r\n}\r\ninterface DispatchProps {\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles & RouteComponentProps & DispatchProps & StateProps\r\n\r\n\r\nconst EnrollmentSetup = React.memo((props: Props) => {\r\n const { configurationTypeSet, classes, enrollment, employeeState, showSalaryWarning } = props;\r\n const [setupCompleteDialog, setSetupCompleteDialog] = React.useState(false);\r\n const [rollbackEnrollmentDialog, setRollbackEnrollmentDialog] = React.useState(false);\r\n const [loading, setLoading] = React.useState(false);\r\n\r\n const isAdmin = auth.isUserEnrollmentSuperAdmin();\r\n const isBroker = auth.isUserEnrollmentManager();\r\n const isEmployer = auth.isUserEmployer();\r\n const employeesCount = employeeState.list.length;\r\n\r\n const confirmSetup = async (digitalSignOptin: boolean) => {\r\n setSetupCompleteDialog(false)\r\n setLoading(true);\r\n await props.onCompleteEnrollment(digitalSignOptin).finally(() => setLoading(false))\r\n };\r\n\r\n const rollbackSetup = async () => {\r\n setRollbackEnrollmentDialog(false)\r\n setLoading(true);\r\n await props.onRollbackEnrollment().finally(() => setLoading(false))\r\n };\r\n\r\n const updateCarrierEnrollmentType = (carrierEnrollmentType: CarrierEnrollmentTypeDTO[]) => {\r\n\r\n props.onCarrierEnrollmentTypeChange(carrierEnrollmentType);\r\n }\r\n const goToPlanList = () => {\r\n const { path, params } = routes.planList;\r\n const route = path.replace(params!.companyId!, enrollment.company.id).replace(params!.enrollmentId!, enrollment.id);\r\n props.history.push(route);\r\n };\r\n\r\n const goToCompanyInfo = () => {\r\n const { path, params } = routes.companyInfo;\r\n const route = path.replace(params!.companyId!, enrollment.company.id).replace(params!.enrollmentId!, enrollment.id).replace(params!.tab!, '');\r\n props.history.push(route);\r\n };\r\n\r\n const confirmationCheck = plansSetupCompleteCheck(props.plans, props.employeeState, enrollment);\r\n const levelFundedRatesCheck = plansLevelFundedRatesCheck(props.plans);\r\n const disableEnrollmentSetupIfMissingInfo = !enrollment.reduceValidation && (!confirmationCheck.confirmEnrollmentCheck || showSalaryWarning);\r\n let disableCompanySetup = (isUserReadOnly(enrollment, Zones.PlanConfirming) || disableEnrollmentSetupIfMissingInfo) ;\r\n if (!levelFundedRatesCheck) {disableCompanySetup = true;}\r\n\r\n\r\n function getWarnings(enrollment: EnrollmentReducerState) {\r\n if (!companyInfoCompleteCheck(enrollment) || missingAuthorizedSignatory(configurationTypeSet, enrollment) || missingAdobeSignatory(configurationTypeSet, enrollment)) {\r\n return  Missing Info\r\n } else return undefined\r\n\r\n }\r\n\r\n const tile = <>\r\n\r\n \r\n  Company Info\r\n {!confirmationCheck.companyInfoCheck ?  Missing Data : undefined}\r\n {getWarnings(enrollment)}\r\n \r\n Set group pay period, add classes, admins, and review data.\r\n \r\n \r\n \r\n  Plans\r\n {(!confirmationCheck.missingInfoCheck)\r\n ?  Missing Data\r\n : undefined}\r\n \r\n Add new plans, setup contributions, and review rates.\r\n \r\n \r\n \r\n Plan Snapshot\r\n {getLOCcount(props.plans).map(locCount => (\r\n
\r\n {/* eslint-disable-next-line */}\r\n \r\n {locCount.count}\r\n
\r\n ))}\r\n {props.plans.length === 0 ? No plans : undefined}\r\n
\r\n
\r\n{\r\n {enrollment.setupCompletedOn ?\r\n <>\r\n \r\n \r\n Enrollment setup confirmed on {enrollment.setupCompletedOn.format('ll')}. \r\n \r\n {(isAdmin || isBroker) && enrollment.expirationStatus && enrollment.setupCompletedOn && enrollment.submissionDate == null &&\r\n \r\n setRollbackEnrollmentDialog(true)}\r\n loading={loading}\r\n >Cancel Enrollment Setup\r\n \r\n }\r\n \r\n
\r\n \r\n \r\n {isEmployer && enrollment.expirationStatus && enrollment.setupCompletedOn && enrollment.submissionDate == null &&\r\n You may view plan details and plan rates, but you may not add or remove plans.\r\n }\r\n {(isBroker || isAdmin) && enrollment.expirationStatus && enrollment.setupCompletedOn && enrollment.submissionDate == null &&\r\n You may cancel the enrollment setup to edit plan eligibility, or to add and remove plans. Cancelling enrollment setup will remove elections for employees.\r\n }\r\n \r\n \r\n :\r\n <>\r\n {isEmployer && !enrollment.setupCompletedOn && enrollment.submissionDate == null ?\r\n You may view plan details and plan rates, but you may not add or remove plans.\r\n :\r\n <>\r\n \r\n {!showSalaryWarning && Done with enrollment setup?}\r\n {showSalaryWarning && <> Salary Based Plan(s) is included in enrollment. Employee salaries are required to successfully submit enrollment.}\r\n \r\n \r\n setSetupCompleteDialog(true)}\r\n disabled={disableCompanySetup}\r\n loading={loading}\r\n >Confirm Enrollment Setup\r\n {levelFundedRatesCheck &&\r\n Once you finalize plans, contributions, rates, eligibility rules, classes and are ready to start enrollment, click 'confirm enrollment setup' to review your plan selections for enrollment.

Once confirmed, you will not be able to add plans and a few eligibility sections of plan setup will be disabled.
}\r\n content={} />\r\n }\r\n {!levelFundedRatesCheck &&\r\n Go review the level funded plan rates. Once saved, you can click Confirm Enrollment Setup. }\r\n content={} />\r\n }\r\n \r\n \r\n }\r\n }\r\n }\r\n;\r\n\r\n const content = <>\r\n {tile}\r\n setRollbackEnrollmentDialog(false)}\r\n onRollback={rollbackSetup}\r\n />\r\n setSetupCompleteDialog(false)}\r\n onConfirmation={(digitalSignOptin: boolean) => confirmSetup(digitalSignOptin)}\r\n plans={props.plans}\r\n companyName={props.enrollment.company.name || 'This Company'}\r\n employeesCount={employeesCount}\r\n confirmationStep={1}\r\n onCarrierEnrollmentTypeChange={updateCarrierEnrollmentType}\r\n hasAdobeConfig={props.hasAdobeConfig}\r\n carrierWithAdobeConfig={props.carrierWithAdobeConfig}\r\n />\r\n ;\r\n\r\n return : \r\n }\r\n }}\r\n variant=\"fluid\"\r\n disabled={false}\r\n classes={{\r\n paper: classes.paper\r\n }}\r\n />\r\n});\r\n\r\nconst minHeight = 275;\r\nconst componentStyles = (theme: Theme) => createStyles({\r\n bigActionButton: {\r\n marginBottom: theme.spacing(1)\r\n },\r\n bold: {\r\n fontWeight: 'bold'\r\n },\r\n center: {\r\n textAlign: 'center',\r\n },\r\n clickable: {\r\n cursor: 'pointer'\r\n },\r\n confirmation: {\r\n marginTop: theme.spacing(2),\r\n },\r\n additionalMsg: {\r\n marginTop: theme.spacing(1),\r\n },\r\n error: {\r\n color: palette.red.primary\r\n },\r\n header: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n icon: {\r\n fontSize: 14,\r\n marginBottom: -2,\r\n },\r\n indicatorIcon: {\r\n height: theme.spacing(4),\r\n width: theme.spacing(4)\r\n },\r\n inProgress: {\r\n color: theme.palette.primary.light\r\n },\r\n locDiv: {\r\n display: 'inline-block',\r\n textAlign: 'center',\r\n color: palette.grey.text,\r\n paddingBottom: theme.spacing(1),\r\n paddingTop: theme.spacing(.5),\r\n paddingLeft: theme.spacing(1),\r\n paddingRight: theme.spacing(1)\r\n },\r\n locIcon: {\r\n width: '20px',\r\n height: '20px'\r\n },\r\n locCount: {\r\n fontSize: 14,\r\n color: theme.palette.primary.main\r\n },\r\n paper: {\r\n minHeight: minHeight,\r\n position: 'relative'\r\n },\r\n primary: {\r\n color: theme.palette.primary.main\r\n },\r\n red: {\r\n color: theme.palette.error.main,\r\n },\r\n root: {\r\n minHeight: minHeight,\r\n },\r\n section: {\r\n padding: theme.spacing(1),\r\n },\r\n sectionBorder: {\r\n borderRight: 1,\r\n borderRightStyle: 'solid',\r\n borderRightColor: palette.grey.border\r\n },\r\n success: {\r\n color: theme.palette.secondary.main\r\n },\r\n text: {\r\n fontSize: '.75rem'\r\n },\r\n verticalCenteredText: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginBottom: theme.spacing(4),\r\n },\r\n warning: {\r\n color: palette.orange.primary\r\n },\r\n warningIcon: {\r\n fontSize: 18,\r\n marginRight: 4,\r\n color: palette.orange.warning,\r\n },\r\n});\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (EnrollmentSetup as any).propTypes = {\r\n employeeState: EmployeeReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n const showSalaryWarning = salariesRequiredSelector(state);\r\n return {\r\n showSalaryWarning: showSalaryWarning,\r\n plans: state.plan.list,\r\n employeeState: state.employee\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(): DispatchProps {\r\n return {\r\n\r\n };\r\n}\r\n\r\nexport default compose(\r\n withStyles(componentStyles),\r\n connect(mapStateToProps, mapDispatchToProps),\r\n withRouter\r\n)(EnrollmentSetup)","import React from 'react';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\r\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\r\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport {\r\n ExpandMore as ExpandIcon,\r\n Warning as WarningIcon,\r\n AssignmentTurnedInOutlined as TasksIcon,\r\n Info as InfoIcon,\r\n Close as CloseIcon,\r\n} from '@material-ui/icons';\r\nimport { Badge, Button, Divider, IconButton } from '@material-ui/core';\r\nimport palette from 'utility/palette';\r\nimport routes from 'router/routes';\r\n\r\nexport enum TaskSeverity {\r\n low,\r\n medium,\r\n high,\r\n}\r\n\r\nexport interface PendingTask {\r\n id: number;\r\n severity: TaskSeverity;\r\n title: string;\r\n content: string;\r\n callToActionText: string;\r\n isDismissed: boolean;\r\n}\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n enrollmentId: string;\r\n}\r\n\r\ntype Props = ComponentProps & RouteComponentProps;\r\n\r\nconst PendingTasks = (props: Props) => {\r\n const initialState: PendingTask[] = [\r\n {\r\n id: 1,\r\n severity: TaskSeverity.low,\r\n title: 'Provide Current Coverages',\r\n content: `Online Enrollment requires employees to provide their current year’s coverage information during elections. \r\n Select \"Import Current Coverages” to provide this information on behalf of your employees.`,\r\n callToActionText: 'Import Current Coverages',\r\n isDismissed: false,\r\n },\r\n ];\r\n const [pendingTasks, setPendingTasks] = React.useState(\r\n initialState\r\n );\r\n\r\n const getTaskIcon = (type: number) => {\r\n switch (type) {\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n default:\r\n return ;\r\n }\r\n };\r\n\r\n const dismissTask = (id: number) => {\r\n let newPendingTasks = [...pendingTasks];\r\n let taskToDismiss = newPendingTasks.find((task) => task.id === id);\r\n if (!!taskToDismiss) {\r\n taskToDismiss.isDismissed = true;\r\n setPendingTasks(newPendingTasks);\r\n }\r\n };\r\n\r\n const navigateTo = (id: number) => {\r\n dismissTask(id);\r\n\r\n const { path, params } = routes.renewalImport;\r\n const route = path\r\n .replace(params!.companyId!, props.companyId)\r\n .replace(params!.enrollmentId!, props.enrollmentId);\r\n props.history.push(route);\r\n };\r\n\r\n const items = pendingTasks\r\n .filter((task) => task.isDismissed === false)\r\n .map((task) => (\r\n <>\r\n \r\n
\r\n
\r\n
{getTaskIcon(task.severity)}
\r\n
\r\n
\r\n \r\n {task.title}\r\n \r\n
\r\n
\r\n \r\n {task.content}\r\n \r\n
\r\n
\r\n
\r\n dismissTask(task.id)}>\r\n \r\n \r\n
\r\n
\r\n
\r\n {task.callToActionText && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n ));\r\n\r\n if (items.length > 0) {\r\n return (\r\n \r\n } style={styles.header}>\r\n \r\n \r\n \r\n Pending Tasks\r\n \r\n {items}\r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n backgroundColor: palette.blue.light,\r\n borderLeft: `5px solid ${palette.blue.primary}`,\r\n },\r\n headerText: {\r\n paddingLeft: 15,\r\n },\r\n expansionPadding: {\r\n padding: '8px 12px 8px 12px',\r\n },\r\n task: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n width: '100%',\r\n },\r\n icon: {\r\n paddingTop: 5,\r\n },\r\n infoColor: {\r\n color: palette.blue.primary,\r\n },\r\n warningColor: {\r\n color: palette.orange.primary,\r\n },\r\n errorColor: {\r\n color: palette.red.primary,\r\n },\r\n content: {\r\n flex: 1,\r\n paddingLeft: '10px',\r\n },\r\n alignRight: {\r\n textAlign: 'right',\r\n },\r\n widthFull: {\r\n width: '100%',\r\n },\r\n};\r\n\r\nexport default withRouter(PendingTasks);\r\n","import { createStyles, Tooltip, withStyles, WithStyles } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { formatPhone, formatFullName } from 'utility/form_formatter';\r\n\r\ninterface ComponentProps {\r\n enrollmentName: string;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n phone?: string;\r\n isMainContact: boolean;\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles\r\n\r\nconst styles = () => createStyles({\r\n numberDiv: {\r\n display: 'inline-block',\r\n textAlign: 'center',\r\n fontSize: 14,\r\n margin: '0 5px',\r\n padding: '0 10px',\r\n borderRight: 1,\r\n borderRightStyle: 'solid',\r\n borderRightColor: palette.grey.border,\r\n '&:last-child': {\r\n borderRight: 0,\r\n paddingRight: 0,\r\n marginRight: 0\r\n }\r\n },\r\n numberDivWithoutSeperator: {\r\n display: 'inline-block',\r\n textAlign: 'center',\r\n fontSize: 14,\r\n margin: '0 5px',\r\n padding: '0 10px',\r\n \r\n '&:last-child': {\r\n borderRight: 0,\r\n paddingRight: 0,\r\n marginRight: 0\r\n }\r\n },\r\n numberText: {\r\n fontSize: 12,\r\n //fontWeight: 'bold',\r\n color: 'black'\r\n },\r\n mainDiv: {\r\n marginTop: 10\r\n }\r\n});\r\n\r\nexport const EnrollmentInfo = withStyles(styles)(React.memo((props: Props) => {\r\n const fName = props.firstName === undefined ? '' : props.firstName;\r\n const lName = props.lastName === undefined ? '' : props.lastName;\r\n const phone = props.phone === undefined ? '' : props.phone;\r\n\r\n return ( \r\n
\r\n
\r\n
Enrollment ID: {props.enrollmentName}
\r\n
\r\n {props.isMainContact &&\r\n
\r\n
\r\n
Main Contact: {formatFullName(fName, lName)}
\r\n
\r\n
\r\n
{props.email}
\r\n
\r\n
\r\n
Phone Number: {formatPhone(phone)}
\r\n
\r\n
\r\n }\r\n
\r\n );\r\n}));","import { createStyles, Hidden, Theme, withStyles, WithStyles, Button, Collapse } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Title from 'components/common/title';\r\nimport EnrollmentStatuses from 'components/enrollment/enrollment_statuses';\r\nimport EnrollmentSubmissionCard from 'components/enrollment/enrollment_submission_card';\r\nimport GroupApplicationsCard from 'components/enrollment/group_applications_card';\r\nimport InviteEmployeesCard from 'components/enrollment/invite_employees_card';\r\nimport ResubmitEnrollmentDialog, { ResubmitEnrollmentFieldData } from 'components/enrollment/resubmit_enrollment_dialog';\r\nimport SubmitEnrollmentDialog, { IInCompleteEmployees } from 'components/enrollment/submit_enrollment_dialog';\r\nimport navPlaceholder from 'images/progress_bar.png';\r\nimport memoizeOne from 'memoize-one';\r\nimport { dequal as isDeepEqual } from 'dequal';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { completeEnrollment, rollbackEnrollment, fetchCompanyContacts, fetchEnrollment, fetchGroupSubmissions, fetchPlans, getGroupSubmissionExists, resubmitEnrollment, submitEnrollment, updateEnrollment } from 'redux/actions';\r\nimport { EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentDTO, EnrollmentReducerState, EnrollmentReducerStatePropType, GroupSubmissionReducerState, PlanReducerState, PlanReducerStatePropType, CarrierEnrollmentTypeDTO, GroupSubmission, GroupAppSubmissionStatus } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { ENROLLMENT_SUBMISSION_MECHANISMS, getDaysRemaining, getKeyById, getLookupId, LOOKUP_TYPE_IDS, missingAuthorizedSignatory, missingAdobeSignatory, getCarrierConfigConfigurationTypes, getCarrierConfigurations, getLookupValue } from 'utility';\r\nimport auth from 'utility/auth';\r\nimport EnrollmentSetup from './enrollment_setup';\r\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\r\nimport canvasUtil from 'utility/canvas_util';\r\nimport { EnrollmentInfo } from 'components/enrollment/enrollment_info';\r\nimport logger from 'utility/logger_utility';\r\nimport { telemetryService } from 'utility/telemetry';\r\nimport PendingTasks from 'components/common/pending-tasks';\r\nimport { isItRenewalEnrollment } from 'utility/renewal_import_utility';\r\nimport { getStatusCounts, CONFIGURATION_TYPE_IDS } from 'utility/employee_utils';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n enrollmentId: string;\r\n}\r\n\r\ninterface StateProps {\r\n enrollmentState: EnrollmentReducerState;\r\n employeeState: EmployeeReducerState;\r\n groupApplicationState: GroupSubmissionReducerState;\r\n planState: PlanReducerState;\r\n daysRemaining: number;\r\n}\r\n\r\ninterface DispatchProps {\r\n fetchPlans: () => Promise;\r\n fetchEnrollment: () => Promise;\r\n updateEnrollment: (enrollment: EnrollmentDTO) => Promise;\r\n fetchGroupSubmissions: (companyId: string, enrollmentId: string) => Promise;\r\n fetchCompanyContacts: (companyId: string, enrollmentId: string) => Promise;\r\n getGroupSubmissionExists: (companyId: string, enrollmentId: string) => Promise;\r\n submitEnrollment: (message: string) => Promise;\r\n resubmitEnrollment: (groupsToResubmit: string[]) => Promise;\r\n completeEnrollment: (enrollment: EnrollmentDTO, carrierEnrollmentList: CarrierEnrollmentTypeDTO[], digitalSignOptin: boolean) => Promise;\r\n rollbackEnrollment: () => Promise;\r\n}\r\n\r\ntype Props = WithStyles & ComponentProps & StateProps & DispatchProps;\r\n\r\ninterface State {\r\n submitDialogueOpen: boolean;\r\n resubmitDialogOpen: boolean;\r\n groupAppsLoading: boolean;\r\n loading: boolean;\r\n submitting: boolean;\r\n message?: string[];\r\n inCompleteEmployees?: IInCompleteEmployees[];\r\n waivedElectionsEmployees?: string[];\r\n carrierEnrollmentType: CarrierEnrollmentTypeDTO[]\r\n groupSubmissionProcessComplete: boolean;\r\n isEnrollmentSetupConfirmedJustNow: boolean;\r\n maxRetriesAttempted: boolean;\r\n hasAdobeConfig: boolean;\r\n carriersSelected: string[];\r\n}\r\n\r\nclass EnrollmentDashboard extends React.PureComponent{\r\n pendingStatusId = getLookupId('PENDINGPROCESSING', LOOKUP_TYPE_IDS.enrollmentStatus);\r\n renewalId = getLookupId('RENEWAL', LOOKUP_TYPE_IDS.enrollmentType);\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n submitDialogueOpen: false,\r\n resubmitDialogOpen: false,\r\n loading: true,\r\n submitting: false,\r\n groupAppsLoading: false,\r\n carrierEnrollmentType: [],\r\n groupSubmissionProcessComplete: false,\r\n isEnrollmentSetupConfirmedJustNow: false,\r\n maxRetriesAttempted: false,\r\n hasAdobeConfig: false,\r\n carriersSelected: []\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.loadGroupAppId !== null) {\r\n clearTimeout(this.loadGroupAppId);\r\n }\r\n }\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n this.currentGroupAppPollingAttempt = 0\r\n if (!this.props.enrollmentState.id) {\r\n promises.push(this.props.fetchEnrollment());\r\n }\r\n\r\n if (this.props.enrollmentState.companyContacts.length === 0) {\r\n promises.push(this.props.fetchCompanyContacts(this.props.companyId, this.props.enrollmentId));\r\n } \r\n this.loadGroupApps(); //initial call to bring in the group apps, which will resolve the issues mentioned by users\r\n //updating the status to reflect the latest\r\n this.props.groupApplicationState.groupSubmissionProcessComplete = this.getGroupApplicationDBStatus(this.props.groupApplicationState.list);\r\n //setting the forcerefresh to false only if either setupcompletedon is undefined and/or submission date is undefined. \r\n //If both are true, we will depend on the groupapp load status for initiating the poll\r\n var forceRefresh = !!this.props.enrollmentState.submissionDate && this.props.enrollmentState.setupCompletedOn != undefined\r\n this.props.fetchPlans(); \r\n this.checkAndQueueGroupPollRequest(forceRefresh); //sending in value instead of depending on default value\r\n\r\n Promise.all(promises).then(this.loadingOff, this.loadingOff);\r\n }\r\n\r\n currentGroupAppPollingAttempt = 0\r\n maxGroupAppPollingAttempt = 12;\r\n groupAppWaitBetweenPolling = 20000;\r\n loadGroupAppId: any = null\r\n pollLoadGroupApp = () => {\r\n if (this.currentGroupAppPollingAttempt === this.maxGroupAppPollingAttempt) {\r\n let message = \"Maximum attempt reached for group application polling.\"\r\n logger.warn(message);\r\n telemetryService.trackError(message)\r\n this.setState({maxRetriesAttempted: true})\r\n return;\r\n }\r\n\r\n if (this.loadGroupAppId !== null) { clearTimeout(this.loadGroupAppId); }\r\n this.currentGroupAppPollingAttempt++;\r\n this.loadGroupAppId = setTimeout(() => {\r\n this.loadGroupApps();\r\n }, this.groupAppWaitBetweenPolling)\r\n }\r\n\r\n checkAndQueueGroupPollRequest = (forceRefresh = false) => {\r\n if (forceRefresh) {\r\n this.currentGroupAppPollingAttempt = 0;\r\n }\r\n if (!this.props.groupApplicationState.groupSubmissionProcessComplete || forceRefresh) {\r\n logger.log(`Group application not loaded. Queuing up request count ${this.currentGroupAppPollingAttempt}.`, this.props.groupApplicationState);\r\n this.groupAppsLoadingOn();\r\n this.pollLoadGroupApp();\r\n } else {\r\n logger.log(\"Group application loaded successfully.\", this.props.groupApplicationState);\r\n this.currentGroupAppPollingAttempt = 0;\r\n this.setState({ loading: false })\r\n this.groupAppsLoadingOff();\r\n }\r\n }\r\n\r\n loadGroupApps = () => {\r\n this.props.fetchGroupSubmissions(this.props.companyId, this.props.enrollmentId).then(() => {\r\n this.checkAndQueueGroupPollRequest();\r\n })\r\n }\r\n\r\n loadingOff = () => this.setState({ loading: false, submitting: false, submitDialogueOpen: false });\r\n\r\n groupAppsLoadingOn = () => this.setState({ groupAppsLoading: true });\r\n groupAppsLoadingOff = () => this.setState({ groupAppsLoading: false });\r\n\r\n closeSubmitModal = () => {\r\n this.setState({\r\n submitDialogueOpen: false\r\n })\r\n }\r\n\r\n _getCarrierWithAdobeConfig = memoizeOne((prs: PlanReducerState): string[] => {\r\n var plans = prs.list;\r\n let carrierCodes = plans.filter((d) => {\r\n return d.configurationTypeIds.indexOf(60) > -1\r\n }).map((v) => { return v.carrierCode.toUpperCase() });\r\n\r\n let uniqueCarrierCode: string[] = [];\r\n\r\n carrierCodes.forEach((d: string) => {\r\n if (uniqueCarrierCode.findIndex(e => e === d) === -1) {\r\n uniqueCarrierCode.push(d);\r\n this.setState({\r\n hasAdobeConfig: true\r\n })\r\n }\r\n });\r\n return uniqueCarrierCode;\r\n }, isDeepEqual);\r\n\r\n getCarrierWithAdobeConfig = (): string[] => {\r\n return this._getCarrierWithAdobeConfig(this.props.planState);\r\n }\r\n\r\n getGroupApplicationDBStatus = (list: GroupSubmission[]) => {\r\n var allAppsUpdated = true;\r\n if (!!this.props.enrollmentState.submissionDate)\r\n return true;\r\n if (list.length === 0)\r\n allAppsUpdated = false;\r\n list.forEach(gApp => {\r\n if (gApp.salesForceDataUpdated === false)\r\n allAppsUpdated = false;\r\n }\r\n )\r\n return allAppsUpdated;\r\n }\r\n\r\n submittingOn = () => this.setState({ resubmitDialogOpen: false, submitting: true });\r\n submittingOff = () => this.setState({ submitting: false })\r\n onSubmitSuccess = (data: any) => {\r\n var waivedElectionEmployees = this.validateWaivedElections(this.props.employeeState);\r\n this.setState({ submitDialogueOpen: true, message: data.message, waivedElectionsEmployees: waivedElectionEmployees, submitting: false });\r\n };\r\n\r\n onEmployeesCompletionValidateFail = (inCompleteEmployees: IInCompleteEmployees[]) => {\r\n this.setState({ \r\n loading: false, \r\n submitting: false, \r\n submitDialogueOpen: true, \r\n inCompleteEmployees: inCompleteEmployees \r\n });\r\n }\r\n\r\n _getNumIncompleteApps = (gsrs: GroupSubmissionReducerState) => {\r\n let missingApps = 0;\r\n gsrs.list.forEach(gApp => {\r\n let carrierConfigurations = getCarrierConfigurations(this.props.planState.list);\r\n const carrierConfigs = getCarrierConfigConfigurationTypes(gApp.carrierCode, carrierConfigurations);\r\n const useD2cNoSubmission = carrierConfigs && carrierConfigs.indexOf(50) > -1;\r\n const isEbn = !useD2cNoSubmission && gApp.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.eBN;\r\n const isD2C = gApp.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrier;\r\n const isD2CNoGroups = useD2cNoSubmission || gApp.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrierNoGroupApp;\r\n const isAutoGen = gApp.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.autoGen;\r\n const isRenewal = gApp.enrollmentTypeId === this.renewalId;\r\n const isBmallAdmin = auth.isUserEnrollmentSuperAdmin();\r\n const directToCarrier = gApp.directToCarrier;\r\n var isEnrollmentSubmitted = !!this.props.enrollmentState.submissionDate;\r\n\r\n\r\n if (isEbn && gApp.documents.length === 0 && !isRenewal && !directToCarrier) {// has 0 uploaded docs && not a renewal && not a manual d2c override\r\n missingApps++;\r\n } else if (isD2C) {\r\n if (!!directToCarrier) {\r\n const isHorizon = gApp.carrierCode === getLookupValue('HORIZONCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n if (isHorizon){\r\n const isGroupAppSubmittedToCarrier = gApp.submissionStatus === GroupAppSubmissionStatus.submitted;\r\n const isBMallAdminActionRequired = isBmallAdmin && isEnrollmentSubmitted && !isGroupAppSubmittedToCarrier;\r\n const isBrokerActionRequired = !isBmallAdmin && !directToCarrier.isFormComplete;\r\n\r\n if (isBMallAdminActionRequired || isBrokerActionRequired || gApp.documents.length === 0) {\r\n missingApps++;\r\n } \r\n } else {\r\n const hasUnsignedEGA = directToCarrier.egaLinks.length > 0;\r\n const hasSignedEGA = directToCarrier.egaLinks.find(x => x.isSigned);\r\n\r\n if (!directToCarrier.isFormComplete) {//Any Persona && incomplete d2c form\r\n missingApps++;\r\n } else if (hasUnsignedEGA && !hasSignedEGA) { //has unsigned EGA && no signed EGA\r\n missingApps++;\r\n } else if (isBmallAdmin && isEnrollmentSubmitted && !hasUnsignedEGA) {//is bmall Admin && enrollment submitted && no unsigned EGA\r\n missingApps++;\r\n }\r\n }\r\n }\r\n } else if (isD2CNoGroups) {\r\n if (!!directToCarrier && !!directToCarrier.agentsOfRecord && directToCarrier.agentsOfRecord.length > 0) {\r\n const groupIdInvalid = isBmallAdmin && isEnrollmentSubmitted && !directToCarrier.groupId;\r\n\r\n if (!directToCarrier.agentsOfRecord[0].carrierAgentId) {//All Personas && No Carrier Agent ID\r\n missingApps++\r\n } else if (groupIdInvalid) { //BMall Admin && Enrollment Submitted && no Group ID\r\n missingApps++\r\n } else if (useD2cNoSubmission && gApp.documents.length === 0 && !isRenewal)\r\n missingApps++\r\n }\r\n } else if (isAutoGen && gApp.documents.length === 0 && !isRenewal && !directToCarrier) {\r\n missingApps++;\r\n }\r\n })\r\n return missingApps;\r\n };\r\n\r\n _getD2cSubmissionCarrierCodes = memoizeOne((gsrs: GroupSubmissionReducerState): string[] => {\r\n let carrierCodes = gsrs.list.filter((d) => {\r\n return d.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrier\r\n }).map((v) => { return v.carrierCode.toUpperCase() });\r\n\r\n let uniqueCarrierCode: string[] = [];\r\n\r\n carrierCodes.forEach((d: string) => {\r\n if (uniqueCarrierCode.findIndex(e => e === d) === -1) {\r\n uniqueCarrierCode.push(d);\r\n }\r\n });\r\n\r\n return uniqueCarrierCode;\r\n }, isDeepEqual);\r\n\r\n getD2cSubmissionCarrierCodes = (): string[] => {\r\n return this._getD2cSubmissionCarrierCodes(this.props.groupApplicationState);\r\n }\r\n\r\n getNonGASubmissionCarriers = (): string[] => {\r\n return this._getNonGASubmissionCarriers(this.props.planState, this.props.groupApplicationState);\r\n }\r\n _getNonGASubmissionCarriers = memoizeOne((prs: PlanReducerState, gsrs: GroupSubmissionReducerState): string[] => {\r\n //grab those carriers with CUSTOM\r\n var plansResult = prs.list.filter((d) => {return d.carrierCode.toUpperCase() === \"CUSTOM\" }).map((v) => { return v.carrierName });\r\n // grab those carriers that are in group submission with exportonly because there can exist the situation where marked exportonly and not CUSTOM\r\n var exportOnlyResult = gsrs.list.filter((d) => {\r\n return d.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.exportOnly\r\n }).map((v) => { return v.carrierName });\r\n\r\n // get rid of duplicates\r\n return plansResult.concat(exportOnlyResult.filter((item) => plansResult.indexOf(item) < 0));\r\n\r\n }, isDeepEqual);\r\n\r\n getNumIncompleteApps = () => {\r\n return this._getNumIncompleteApps(this.props.groupApplicationState);\r\n }\r\n\r\n getNumCompleteApps = () => {\r\n return this.props.groupApplicationState.list.length - this.getNumIncompleteApps();\r\n }\r\n\r\n get getGroupSubmissionList() {\r\n return this.props.groupApplicationState.list.map(({ id, carrierName, stateId }) => {\r\n return ({\r\n id: id,\r\n carrierNm: carrierName,\r\n stateCd: getKeyById(stateId)!,\r\n selected: false\r\n } as ResubmitEnrollmentFieldData)\r\n })\r\n }\r\n\r\n getMissingDocsNames = () => {\r\n var docNames = [] as string[];\r\n this.props.groupApplicationState.list.forEach(gApp => {\r\n let carrierConfigurations = getCarrierConfigurations(this.props.planState.list);\r\n const carrierConfigs = getCarrierConfigConfigurationTypes(gApp.carrierCode, carrierConfigurations);\r\n const useD2cNoSubmission = carrierConfigs && carrierConfigs.indexOf(50) > -1;\r\n\r\n const isHorizon = gApp.carrierCode === getLookupValue('HORIZONCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n const isEbn = gApp.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.eBN;\r\n const isD2C = gApp.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrier;\r\n const isD2CNoGroups = useD2cNoSubmission || gApp.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrierNoGroupApp;\r\n const isRenewal = gApp.enrollmentTypeId === this.renewalId;\r\n const isAutoGen = gApp.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.autoGen;\r\n const directToCarrier = gApp.directToCarrier;\r\n\r\n if (isEbn && gApp.documents.length === 0 && !isRenewal && !directToCarrier) {\r\n docNames.push(gApp.carrierName);\r\n } else if (isD2C && directToCarrier && !directToCarrier.isFormComplete && !isRenewal) {\r\n docNames.push(gApp.carrierName);\r\n } else if (isD2C && directToCarrier && isHorizon && directToCarrier.isFormComplete && gApp.documents.length === 0) {\r\n docNames.push(gApp.carrierName);\r\n }\r\n else if (isD2CNoGroups && directToCarrier && directToCarrier.agentsOfRecord && directToCarrier.agentsOfRecord.length > 0) {\r\n if (!directToCarrier.agentsOfRecord[0].carrierAgentId || (useD2cNoSubmission && gApp.documents.length === 0 && !isRenewal)) {\r\n docNames.push(gApp.carrierName);\r\n }\r\n } \r\n else if (isD2CNoGroups) {\r\n if (useD2cNoSubmission && gApp.documents.length === 0 && !isRenewal) {\r\n docNames.push(gApp.carrierName);\r\n }\r\n }\r\n else if (isAutoGen && gApp.documents.length === 0 && !isRenewal && !directToCarrier) {\r\n docNames.push(gApp.carrierName);\r\n }\r\n })\r\n return docNames;\r\n }\r\n\r\n getGroupAppsStatus = (companyId: string, enrollmentId: string) => {\r\n this.groupAppsLoadingOn();\r\n this.props.getGroupSubmissionExists(companyId, enrollmentId)\r\n .then(() => { this.checkAndQueueGroupPollRequest(true) })\r\n }\r\n\r\n getMainContact = () => {\r\n var mainContact = this.props.enrollmentState.companyContacts.filter(contact => contact.isMainContact);\r\n return mainContact && mainContact[0]; // Always only one main contact exists in comoany admin contacts\r\n }\r\n\r\n handleCarrierEnrollmentType = (carrierEnrollmentTypeList: CarrierEnrollmentTypeDTO[]) => {\r\n this.setState({ carrierEnrollmentType: carrierEnrollmentTypeList });\r\n }\r\n\r\n handleRollbackEnrollment = async () => {\r\n await this.props.rollbackEnrollment();\r\n this.setState({ \r\n groupSubmissionProcessComplete: false, \r\n isEnrollmentSetupConfirmedJustNow: false\r\n });\r\n }\r\n\r\n handleSubmit = () => {\r\n this.setState({ submitting: true });\r\n const failedCompletions = this.validateEnrollments();\r\n const numIncompleteApps = this.getNumIncompleteApps();\r\n const otherValidations = this.getOtherValidations();\r\n const employeesAdded = this.props.employeeState && this.props.employeeState.list.length;\r\n const inCompleteEmployees = this.state.message && this.state.message.length > 0\r\n\r\n if (failedCompletions.length > 0 \r\n || (numIncompleteApps > 0 && !this.props.enrollmentState.reduceValidation) \r\n || otherValidations.length > 0\r\n || !employeesAdded \r\n || inCompleteEmployees) {\r\n this.onEmployeesCompletionValidateFail(failedCompletions);\r\n }\r\n else {\r\n this.submittingOn();\r\n this.props.submitEnrollment(\"\").then(this.onSubmitSuccess, this.submittingOff);\r\n }\r\n // select all plans so that subsequent page as them all selected\r\n var plans = this.props.planState.list;\r\n let arr = plans.map(function (el) { return el.carrierName.toUpperCase() });\r\n this.setState({\r\n carriersSelected: arr\r\n }) \r\n };\r\n\r\n handleResubmitButtonClick = () => {\r\n const failedCompletions = this.validateEnrollments();\r\n if (failedCompletions.length > 0)\r\n this.onEmployeesCompletionValidateFail(failedCompletions);\r\n else\r\n this.setState({ loading: false, submitting: false, resubmitDialogOpen: true });\r\n }\r\n\r\n handleResubmitGroups = (groupsToResubmit?: ResubmitEnrollmentFieldData[]) => {\r\n if (groupsToResubmit !== undefined && groupsToResubmit.length > 0) {\r\n this.submittingOn();\r\n this.props.resubmitEnrollment(groupsToResubmit.map(({ id }) => id)).then(this.onSubmitSuccess, this.submittingOff);\r\n let arr = groupsToResubmit.map(function (el) { return el.carrierNm.toUpperCase() });\r\n this.setState({\r\n carriersSelected: arr\r\n })\r\n }\r\n }\r\n\r\n cancelResubmitModal = () => {\r\n this.setState({ resubmitDialogOpen: false });\r\n }\r\n\r\n\r\n _validateEnrollments = memoizeOne((employees: EmployeeReducerState, completedId: number, submittedId: number, renewalQuestionPendingId: number) => {\r\n let inCompleteEmployees: IInCompleteEmployees[] = [];\r\n const notCompletedEnroll = employees.list\r\n .filter(e => (e.electionStatusId !== completedId && e.electionStatusId !== submittedId)\r\n || e.electionStatusId === renewalQuestionPendingId)\r\n .sort((emp1, emp2) => \r\n //sort by Employees fullnames.\r\n (emp1.fullName < emp2.fullName) \r\n ? -1 : (emp2.fullName < emp1.fullName)\r\n ? 1 : 0\r\n )\r\n .sort((emp1, emp2) => \r\n //sort to show Employees pending renewal answers at the top.\r\n (emp1.electionStatusId === renewalQuestionPendingId) \r\n ? -1 : (emp2.electionStatusId === renewalQuestionPendingId)\r\n ? 1 : 0\r\n );\r\n\r\n if (notCompletedEnroll.length > 0) {\r\n notCompletedEnroll.forEach(employee => {\r\n inCompleteEmployees.push({\r\n employeeFullName: employee.fullName,\r\n incompleteReason: employee.electionStatusId === renewalQuestionPendingId \r\n ? 'Missing Current Coverages' \r\n : ''\r\n });\r\n });\r\n }\r\n\r\n return inCompleteEmployees;\r\n }, isDeepEqual);\r\n\r\n validateWaivedElections = memoizeOne((employees: EmployeeReducerState) => {\r\n const waivedElectionsEmployees = employees.list.filter(e => e.elections.filter(el => el.isWaived).length > 0);\r\n\r\n let employeeNames: string[] = [];\r\n if (waivedElectionsEmployees.length > 0) {\r\n waivedElectionsEmployees.forEach(item => {\r\n employeeNames.push(item.fullName);\r\n });\r\n }\r\n return employeeNames;\r\n }, isDeepEqual);\r\n\r\n getOtherValidations = () => {\r\n var validations: string[] = []\r\n if (missingAuthorizedSignatory(this.props.planState.configurationTypeSet, this.props.enrollmentState)) {\r\n validations.push('Admin whose signature will appear on employee election forms')\r\n }\r\n if (missingAdobeSignatory(this.props.planState.configurationTypeSet, this.props.enrollmentState)) {\r\n validations.push('Admin whose signature will appear on employee election forms')\r\n }\r\n return validations;\r\n }\r\n\r\n validateEnrollments = () => {\r\n const completedId = getLookupId('COMPLETED', LOOKUP_TYPE_IDS.electionStatus);\r\n const submittedId = getLookupId('SUBMITTED', LOOKUP_TYPE_IDS.electionStatus);\r\n const renewalQuestionPendingId = getLookupId('RENEWALQUESTIONSPENDING', LOOKUP_TYPE_IDS.electionStatus);\r\n return this._validateEnrollments(this.props.employeeState, completedId, submittedId, renewalQuestionPendingId);\r\n }\r\n\r\n handleRedirectToClientsButtonClick = () => {\r\n return canvasUtil.redirectToAWSClientCenter(this.props.enrollmentId);\r\n }\r\n renderAWSClientsButton = () => {\r\n if (auth.isUserEnrollmentSuperAdmin || auth.isUserEnrollmentManager()) {\r\n return \r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n getCarrierName = (configurationtypeid: number) => {\r\n var plans = this.props.planState.list;\r\n var plan = plans.find(p => p.configurationTypeIds.includes(configurationtypeid))\r\n return plan ? plan.carrierName : \"\";\r\n }\r\n getEffectiveDateToPush = (configurationtypeid: number) => {\r\n var plans = this.props.planState.list;\r\n var currentDate = moment();\r\n var initialDateSet = false;\r\n\r\n plans.forEach(p => {\r\n if (p.configurationTypeIds.includes(configurationtypeid) && p.effectiveDate !== null) {\r\n var effectiveDate = p.effectiveDate;\r\n\r\n if (!initialDateSet && effectiveDate) {\r\n initialDateSet = true;\r\n currentDate = effectiveDate;\r\n }\r\n\r\n if (effectiveDate && effectiveDate.isBefore(currentDate)) {\r\n currentDate = effectiveDate;\r\n }\r\n }\r\n });\r\n\r\n return currentDate;\r\n }\r\n\r\n isEmployeeRequiredSalary = (): boolean => {\r\n return (this._plansWithMultipleSalary(this.props.planState).length > 0)\r\n && this.props.employeeState.list.some((emp) => !emp.isEmployeeWaiving && !emp.isInEligible && emp.isSalaryMissing);\r\n }\r\n\r\n _plansWithMultipleSalary = memoizeOne((plan: PlanReducerState) => {\r\n return plan.list.filter(p => p.benefitAmountTypeId && p.benefitAmountTypeId === getLookupId('MULTIPLEOFSALARY', LOOKUP_TYPE_IDS.benefitAmountType));\r\n });\r\n\r\n \r\n\r\n refreshPendingTasks = (): boolean => {\r\n if (this.props.enrollmentState.currentCoverageTemplateImported)\r\n { return false; }\r\n\r\n const { completed, submitted, inProgress, notStarted } = getStatusCounts(this.props.employeeState.list);\r\n if (this.state.isEnrollmentSetupConfirmedJustNow\r\n || inProgress > 0 || notStarted > 0 ) {\r\n return isItRenewalEnrollment(this.props.enrollmentState, this.props.groupApplicationState, this.props.planState);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n render() {\r\n const { classes = {}, enrollmentState, employeeState, daysRemaining } = this.props;\r\n const { groupAppsLoading, loading, submitDialogueOpen, resubmitDialogOpen, waivedElectionsEmployees, inCompleteEmployees, hasAdobeConfig } = this.state;\r\n const mainContact = this.getMainContact();\r\n const showCurrentCoverageInPendingTasks = this.refreshPendingTasks();\r\n this.props.groupApplicationState.groupSubmissionProcessComplete = this.getGroupApplicationDBStatus(this.props.groupApplicationState.list);\r\n const carrierWithAdobeConfig = this.getCarrierWithAdobeConfig();\r\n const displayGroupApps = this.props.enrollmentState.submissionDate != undefined ? true : this.props.groupApplicationState.groupSubmissionProcessComplete\r\n\r\n return (\r\n
\r\n \r\n \r\n {/* {this.renderAWSClientsButton()} add this back once sf is ready*/}\r\n
{enrollmentState.company.name}
\r\n \"Nav\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 {showCurrentCoverageInPendingTasks &&\r\n \r\n }\r\n \r\n \r\n \r\n {\r\n try {\r\n this.setState({ loading: true });\r\n this.props.enrollmentState.hasOptedDigitalSignature = digitalSignOptin;\r\n\r\n await this.props.completeEnrollment({\r\n ...this.props.enrollmentState,\r\n startDate: undefined,\r\n endDate: undefined,\r\n effectiveDate: this.props.enrollmentState.effectiveDate ? this.props.enrollmentState.effectiveDate : undefined,\r\n setupCompletedOn: moment.utc().format(),\r\n submissionDate: undefined\r\n }, this.state.carrierEnrollmentType, digitalSignOptin);\r\n\r\n this.setState({ isEnrollmentSetupConfirmedJustNow: true });\r\n\r\n //if (this.props.enrollmentState.company != null && this.props.enrollmentState.company.contactInformation[0] != null &&\r\n // this.props.enrollmentState.company.contactInformation[0].stateId != null) {\r\n this.getGroupAppsStatus(this.props.enrollmentState.company.id, this.props.enrollmentState.id)\r\n //}\r\n } finally {\r\n this.setState({ loading: false });\r\n }\r\n }}\r\n onRollbackEnrollment={this.handleRollbackEnrollment}\r\n hasAdobeConfig={hasAdobeConfig}\r\n carrierWithAdobeConfig={carrierWithAdobeConfig}\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n {this.state.resubmitDialogOpen &&\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n root: {\r\n [theme.breakpoints.up('md')]: {\r\n marginBottom: theme.spacing(5)\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n marginBottom: theme.spacing(2.5)\r\n }\r\n },\r\n enrollmentSetupContainer: {\r\n marginTop: theme.spacing(1.25)\r\n },\r\n navTracker: {\r\n maxWidth: 475,\r\n marginBottom: theme.spacing(2)\r\n },\r\n title: {\r\n paddingLeft: theme.spacing(1),\r\n //marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(1)\r\n },\r\n enrollmentStatuses: {\r\n textAlign: 'right',\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(4)\r\n },\r\n enrollmentBanner: {\r\n marginLeft: 0,\r\n marginRight: 0\r\n },\r\n rightCol: {\r\n [theme.breakpoints.up('md')]: {\r\n paddingLeft: theme.spacing(5)\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n paddingTop: theme.spacing(2.5)\r\n }\r\n },\r\n cardPadding: {\r\n height: theme.spacing(3.5)\r\n },\r\n AWSLink: {\r\n paddingLeft: theme.spacing(0.8),\r\n marginTop: theme.spacing(1)\r\n }\r\n});\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (EnrollmentDashboard as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n planState: PlanReducerStatePropType,\r\n employeeState: EmployeeReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n enrollmentState: state.enrollment,\r\n planState: state.plan,\r\n groupApplicationState: state.groupSubmission,\r\n employeeState: state.employee,\r\n daysRemaining: getDaysRemaining(state.enrollment)\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n fetchPlans: () => dispatch(fetchPlans(ownProps.companyId, ownProps.enrollmentId)),\r\n fetchEnrollment: () => dispatch(fetchEnrollment(ownProps.enrollmentId)),\r\n fetchGroupSubmissions: (companyId, enrollmentId) => dispatch(fetchGroupSubmissions(companyId, enrollmentId)),\r\n submitEnrollment: (message) => dispatch(submitEnrollment(message)),\r\n getGroupSubmissionExists: (companyId, enrollmentId) => dispatch(getGroupSubmissionExists(companyId, enrollmentId)),\r\n resubmitEnrollment: (groupsToResubmit) => dispatch(resubmitEnrollment(groupsToResubmit)),\r\n completeEnrollment: (enrollment, carrierEnrollmentList, digitalSignOptin) => dispatch(completeEnrollment(enrollment, carrierEnrollmentList, digitalSignOptin )),\r\n rollbackEnrollment: () => dispatch(rollbackEnrollment()),\r\n updateEnrollment: (enrollment: EnrollmentDTO) => dispatch(updateEnrollment(enrollment)),\r\n fetchCompanyContacts: (companyId: string, enrollmentId: string) => dispatch(fetchCompanyContacts(companyId, enrollmentId)),\r\n };\r\n}\r\n\r\nexport default compose(\r\n withStyles(styles),\r\n connect(mapStateToProps, mapDispatchToProps),\r\n)(EnrollmentDashboard);\r\n\r\n","import React from 'react';\r\nimport { Grid, Paper, Typography } from '@material-ui/core';\r\nimport be_banner from '../../images/be_banner.png';\r\nimport auth from 'utility/auth';\r\n\r\nconst BenefitMallBanner = () => {\r\n\r\n if(auth.isUserEmployer()){\r\n return (<>\r\n
\r\n

Contact us at digitalsupport@benefitmall.com or call: 844-448-9435 for help.\r\n

\r\n BenefitMall Digital Support is happy to assist you with technical questions and setting up your enrollment.

\r\n
\r\n );\r\n }else{\r\n return null;\r\n }\r\n \r\n \r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n banner: {\r\n backgroundImage: 'url(' + require('../../images/be_banner.png') + ')',\r\n backgroundRepeat: 'no-repeat',\r\n height: 'auto',\r\n marginTop: '15px'\r\n },\r\n bannerText: {\r\n display: 'inline-block',\r\n fontWeight: 'bold',\r\n paddingLeft: '60px',\r\n color: 'white',\r\n lineHeight: '30px',\r\n whiteSpace: 'pre-line'\r\n }\r\n};\r\n\r\nexport default BenefitMallBanner; \r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Route, RouteComponentProps } from 'react-router';\r\nimport { EnrollmentReducerState, EnrollmentReducerStatePropType } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { isEnrollmentLockedOut } from 'utility';\r\nimport BasePage from '../../components/common/base_page';\r\nimport routes from '../../router/routes';\r\nimport NotFound from '../common/not_found';\r\nimport CensusStatus from './census_status';\r\nimport EnrollmentDashboard from './enrollment_dashboard';\r\nimport BenefitMallBanner from './BenefitMallBanner';\r\n\r\ninterface ComponentProps extends RouteComponentProps { }\r\ninterface MappedProps {\r\n enrollment: EnrollmentReducerState,\r\n}\r\ntype Props = ComponentProps & MappedProps;\r\n\r\ninterface State {\r\n loading: boolean;\r\n}\r\n\r\nclass CompanyDashboard extends React.PureComponent {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ loading: false })\r\n }\r\n\r\n render() {\r\n const { match, enrollment } = this.props;\r\n const enrollmentIdVarName = routes.companyDashboard.params!.enrollmentId!.replace(':', '');\r\n const companyIdVarName = routes.companyDashboard.params!.companyId!.replace(':', '');\r\n const enrollmentId = match.params[enrollmentIdVarName];\r\n const companyId = match.params[companyIdVarName];\r\n return (\r\n <>\r\n {this.state.loading ?\r\n \r\n :\r\n <>{isEnrollmentLockedOut(enrollment) ?\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\nif (process.env.NODE_ENV !== \"production\") {\r\n (CompanyDashboard as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n enrollment: state.enrollment,\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(CompanyDashboard);","import { Typography, createStyles, makeStyles } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { TextFormField } from './reduxform_fields';\r\nimport { characterLimit } from 'utility/form_validation';\r\n\r\nexport const FORM_NAME = 'SEND_INVITATION';\r\n\r\nexport type SendInvitationFormData = {\r\n body: string;\r\n};\r\n\r\ninterface ComponentProps {\r\n onCancel: () => void;\r\n enrollmentStartYear: string;\r\n brokerName: string;\r\n companyName?: string | undefined;\r\n}\r\n\r\nconst useStyles = makeStyles(createStyles({\r\n emailMainText: {\r\n fontWeight: 500,\r\n margin: '15px'\r\n },\r\n openEnrollmentLink: {\r\n color: 'darkblue',\r\n textDecoration: 'underline',\r\n marginLeft: '15px'\r\n }\r\n}))\r\n\r\n\r\ntype Props = InjectedFormProps & ComponentProps;\r\n\r\nconst characterLimit550 = characterLimit(550);\r\n\r\nconst EnrollmentInvitationForm = (props: Props) => {\r\n const classes = useStyles(props);\r\n return (\r\n
\r\n Dear [Employee First Name],\r\n \r\n \r\n \r\n Below is a secure link you can click to begin enrollment:\r\n Go to open enrollment\r\n Thank you,\r\n {props.brokerName}\r\n Benefits Representative for {props.companyName}\r\n
\r\n );\r\n};\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME\r\n})(EnrollmentInvitationForm);","import React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { DialogContent, DialogContentText, Table, TableBody, TableRow, TableCell, Typography, DialogActions, Button, createStyles, makeStyles } from '@material-ui/core';\r\nimport { Field } from 'redux-form';\r\nimport { TextFormField } from './reduxform_fields';\r\nimport SaveButton from './save_button';\r\n\r\ninterface Props {\r\n open: boolean;\r\n submitButtonText: string;\r\n helpText: JSX.Element;\r\n emailTitleText: string;\r\n emailBody: JSX.Element;\r\n loading: boolean;\r\n onCancel: () => void;\r\n onSubmit: () => void;\r\n dialogTitle: string;\r\n}\r\n\r\nconst styles = createStyles({\r\n emailMain: {\r\n maxWidth: '600px',\r\n border: \"0\",\r\n width: \"100%\"\r\n },\r\n emailMainCell: {\r\n padding: '0'\r\n },\r\n emailBody: {\r\n color: 'rgba(0,0,0,0.87)',\r\n fontFamily: 'Roboto',\r\n fontSize: '14px',\r\n letterSpacing: '0.13px',\r\n padding: '0px 15px 0px 15px',\r\n lineHeight: '24px'\r\n },\r\n emailTitle: {\r\n padding: '20px 0px 20px 0px',\r\n color: '#666666',\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\r\n fontSize: '18px',\r\n fontWeight: 'bold',\r\n lineHeight: '25px',\r\n backgroundColor: \"#ffffff\",\r\n alignContent: \"left\"\r\n },\r\n emailTitleText: {\r\n fontFamily: 'Roboto',\r\n color: '#95C750',\r\n textAlign: 'center',\r\n fontSize: '34px',\r\n fontWeight: 'bold',\r\n fontStyle: 'italic',\r\n letterSpacing: '0.25px',\r\n marginTop: '22px'\r\n },\r\n emailColorBar: {\r\n width: '100%',\r\n height: '11px',\r\n borderSpacing: 0\r\n },\r\n emailColorBar1: {\r\n width: '33.33%',\r\n height: '11px',\r\n backgroundColor: '#127DC1'\r\n },\r\n emailColorBar2: {\r\n width: '33.33%',\r\n height: '11px',\r\n backgroundColor: '#0A5990'\r\n },\r\n emailColorBar3: {\r\n width: '33.33%',\r\n height: '8px',\r\n backgroundColor: '#95C750'\r\n },\r\n emailYourOpenEnroll: {\r\n color: 'rgba(0,0,0,0.6)',\r\n fontFamily: 'Roboto',\r\n fontSize: '12px',\r\n fontWeight: 'bold',\r\n letterSpacing: '2px',\r\n lineHeight: '16px',\r\n textAlign: 'center',\r\n marginTop: '6px',\r\n marginBottom: '8px'\r\n },\r\n benefitMallLog: {\r\n textAlign: 'center'\r\n },\r\n benefitMallLogLink: {\r\n height: '42px',\r\n width: '200px'\r\n },\r\n copyRightBox: {\r\n textAlign: \"center\",\r\n padding: '0px 10px 0px 10px',\r\n backgroundColor: 'lightgray'\r\n },\r\n copyRightSubBox: {\r\n color: '#666666',\r\n fontFamily: 'Roboto',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n textAlign: \"left\"\r\n },\r\n copyRightBoxText: {\r\n margin: '0',\r\n textAlign: 'center'\r\n },\r\n});\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst EmailTemplateDialog = (props: Props) => {\r\n const { \r\n open,\r\n submitButtonText,\r\n onCancel,\r\n onSubmit,\r\n loading,\r\n helpText,\r\n emailTitleText,\r\n emailBody,\r\n dialogTitle\r\n } = props\r\n\r\n const classes = useStyles(props);\r\n const currentYear = new Date().getFullYear();\r\n\r\n return (\r\n \r\n \r\n \r\n {helpText}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n {emailTitleText}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{emailBody}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n OPEN ENROLLMENT POWERED BY BENEFITMALL\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 ©{currentYear} BenefitMall. All rights reserved. BenefitMall, the BenefitMall Logos, and NEXT GENERATION BROKER SERVICES are trademarks or registered trademarks of Centerstone Insurance and Financial Services, Inc. d/b/a BenefitMall or its affiliates in the U.S. California License #0639679. *All other trademarks are the property of their respective owners.\r\n Legal\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 {submitButtonText}\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default EmailTemplateDialog;","import { FORM_NAME as ENROLLMENT_INVITATION_FORM } from 'components/common/enrollment_invitation_form';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { submit } from 'redux-form';\r\nimport { addEmployeeWToken, EmployeeWithToken, sendEmployeeInvitations, displaySnackbar, displaySnackbarWithErrors } from 'redux/actions';\r\nimport { Employee, EnrollmentReducerState, EnrollmentReducerStatePropType, SendEmployeeInvitationDTO, SendInvitation, SnackbarVariant, ContactInfo } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport EmailTemplateDialog from './email_template_dialog';\r\nimport EnrollmentInvitationForm, { SendInvitationFormData } from './enrollment_invitation_form';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n employees: Employee[];\r\n onClose: () => void;\r\n}\r\n\r\ninterface StateProps {\r\n enrollmentState: EnrollmentReducerState;\r\n}\r\ninterface DispatchProps {\r\n addEmployeeWithToken: (employeeUser: EmployeeWithToken) => Promise;\r\n displaySnackbar: (message: string, snackbarVariant: SnackbarVariant) => Promise;\r\n displaySnackbarWithErros: (ex: any, message: string) => Promise;\r\n sendInvites: (companyId: string, enrollmentId: string, invite: SendInvitation) => Promise;\r\n submitForm: () => void;\r\n}\r\ntype Props = StateProps & DispatchProps & ComponentProps;\r\n\r\ninterface State {\r\n inviting: boolean;\r\n}\r\n\r\nclass EnrollmentInvitationDialog extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n inviting: false\r\n };\r\n }\r\n\r\n onSendInvites = async (formValues: SendInvitationFormData) => {\r\n this.setState({ inviting: true });\r\n const employees = this.props.employees;\r\n const invitees = employees.map(this.getInvitation);\r\n const invite: SendInvitation = {\r\n body: formValues.body,\r\n employees: invitees\r\n }\r\n\r\n try {\r\n const employeesWithMissingEmailContact = employees.filter((emp: Employee) => {\r\n if (!emp.contactInformation || emp.contactInformation!.length === 0) {\r\n return true;\r\n }\r\n const employeeContacts: ContactInfo[] = emp.contactInformation;\r\n let employeeHasMissingContactEmail = employeeContacts[0].email === null || employeeContacts[0].email === undefined;\r\n return employeeHasMissingContactEmail;\r\n\r\n });\r\n\r\n if (employeesWithMissingEmailContact.length === 0) {\r\n await this.props.sendInvites(this.props.enrollmentState.company.id, this.props.enrollmentState.id, invite);\r\n this.props.onClose();\r\n }\r\n else {\r\n this.props.displaySnackbar('One or more employees do not have email address(es)', 'error');\r\n }\r\n } catch (ex) {\r\n this.props.displaySnackbarWithErros(ex, 'Error in sending invitation');\r\n } finally {\r\n this.setState({ inviting: false });\r\n }\r\n }\r\n\r\n getInvitation = (emp: Employee) => {\r\n const invite: SendEmployeeInvitationDTO = {\r\n dateOfBirth: emp.dateOfBirth!,\r\n email: emp.contactInformation[0].email!,\r\n firstName: emp.firstName,\r\n lastName: emp.lastName,\r\n genderId: emp.genderId,\r\n employeeId: emp.id,\r\n employeeSignUpBaseUrlPath: window.location.origin + routes.employeeWithTokenSignUp.path\r\n }\r\n\r\n return invite;\r\n }\r\n\r\n get initialValues() {\r\n let formValues: SendInvitationFormData;\r\n if (!this.props.enrollmentState || !this.props.enrollmentState.startDate) {\r\n formValues = { body: '' };\r\n } else {\r\n formValues = {\r\n body: `Open Enrollment is here for your company `\r\n + this.props.enrollmentState.company.name\r\n + `. Enrollment is available from `\r\n + this.props.enrollmentState.startDate!.format('LL')\r\n + ` to `\r\n + this.props.enrollmentState.endDate!.format('LL') + `.`\r\n + ` Every employee must complete enrollment, even if they do not intend to accept coverage.`\r\n };\r\n\r\n }\r\n return formValues;\r\n };\r\n\r\n _enrollmentStartYear = memoizeOne((enrollment: EnrollmentReducerState) => {\r\n return enrollment.startDate!.format(\"YYYY\");\r\n });\r\n\r\n get enrollmentStartYear() {\r\n if (this.props.enrollmentState.startDate) {\r\n return this._enrollmentStartYear(this.props.enrollmentState);\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n This is the email employees will receive. You cannot edit the link, header, or footer, but you may edit the email body.\r\n }\r\n emailTitleText=\"Open Enrollment is here!\"\r\n dialogTitle=\"Send Email Invite\"\r\n onSubmit={this.props.submitForm}\r\n emailBody={\r\n \r\n }\r\n loading={this.state.inviting}\r\n onCancel={this.props.onClose}\r\n />\r\n );\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (EnrollmentInvitationDialog as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n enrollmentState: state.enrollment,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n addEmployeeWithToken: (employeeWithToken) => dispatch(addEmployeeWToken(employeeWithToken)),\r\n displaySnackbar: (message: string, snackbarVariant: SnackbarVariant) => dispatch(displaySnackbar(message, snackbarVariant)),\r\n displaySnackbarWithErros: (ex: any, message) => dispatch(displaySnackbarWithErrors(ex, message)),\r\n submitForm: () => dispatch(submit(ENROLLMENT_INVITATION_FORM)),\r\n sendInvites: (companyId: string, enrollmentId: string, invite: SendInvitation) => dispatch(sendEmployeeInvitations(companyId, enrollmentId, invite))\r\n }\r\n}\r\n\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps)\r\n)(EnrollmentInvitationDialog);\r\n\r\n","import { CSSProperties } from '@material-ui/styles';\r\nimport React from 'react';\r\nimport WrappedTooltip from '../wrapped_tool_tip';\r\nimport { makeStyles, Theme } from '@material-ui/core';\r\n\r\ninterface Props {\r\n toolTipTitle?: string;\r\n number: string;\r\n classes: any;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n numberIcon: {\r\n backgroundColor: '#005ba1',\r\n borderRadius: '100%',\r\n display: \"flex\",\r\n width: '12px',\r\n height: '12px',\r\n lineHeight: '.8rem',\r\n fontSize: '.8rem',\r\n textAlign: 'center',\r\n padding: '.2rem',\r\n color: 'white',\r\n position: 'relative'\r\n },\r\n center: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: `translate(-50%, -50%)`\r\n }\r\n}));\r\n\r\nconst CircleNumber = (props: Props) => {\r\n const classes = useStyles(props);\r\n return (\r\n \r\n
{props.number}
\r\n
\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default CircleNumber;","import { TableRow, TableCell } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps, WrappedFieldProps } from 'redux-form';\r\nimport { email } from 'utility/form_validation';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport { EditEmailAddressesFormData } from './edit_email_addresses_form';\r\n\r\n\r\ninterface Props extends WrappedFieldArrayProps {}\r\n\r\nconst EditEmailAddressFieldArray: React.FunctionComponent = React.memo((props: Props) => {\r\n return (\r\n <>\r\n {\r\n props.fields.get(0) && props.fields.map((name, index, fields) => {\r\n return (\r\n \r\n \r\n
{fieldProps.input.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\nexport default EditEmailAddressFieldArray;","import React from 'react';\r\nimport { FieldArray } from 'redux-form';\r\nimport { EditEmailAddressesFormData } from './edit_email_addresses_form';\r\nimport EditEmailAddressFieldArray from './edit_email_address_field_array';\r\n\r\nexport type FieldData = {\r\n emailAddresses: EditEmailAddressesFormData[];\r\n}\r\n\r\ninterface Props {\r\n formName: string;\r\n}\r\n\r\nconst EditEmailAddressFields = (props: Props) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default EditEmailAddressFields;","import { Button, DialogActions, DialogContent, DialogContentText, Table, TableBody, TableHead, TableRow, TablePagination, TableCell, Paper } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { InjectedFormProps, reduxForm } from 'redux-form';\r\nimport SaveButton from '../common/save_button';\r\nimport EditEmailAddressFields, { FieldData as EditEmailAddressFieldData } from './edit_email_address_fields'\r\nexport const FORM_NAME = 'EDIT_EMAIL_ADDRESSES';\r\n\r\nexport type EditEmailAddressesFormData = {\r\n employeeId: string,\r\n email: string,\r\n name: string\r\n};\r\nexport type FormData = EditEmailAddressFieldData;\r\n\r\ninterface ComponentProps {\r\n onCancel: () => void;\r\n isLoading: boolean;\r\n isEditing: boolean;\r\n count: number;\r\n handlePageChange: (_event: any, page: number) => void;\r\n handleRowSizeChange: (event: any) => void;\r\n page: number;\r\n size: number;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps\r\n\r\nconst EditEmailAddressesForm = (props: Props) => {\r\n return (\r\n
\r\n \r\n \r\n Open enrollment invitations and reminders will be sent to the employee email address entered below.\r\n \r\n \r\n \r\n \r\n \r\n \r\n Employee Name\r\n Employee Email Address\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {props.count >= 25 &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n emailMain: {\r\n maxWidth: '600px',\r\n border: \"0\",\r\n width: \"100%\"\r\n }\r\n}\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME\r\n})(EditEmailAddressesForm);","import BaseDialog from 'components/common/base_dialog';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { reset } from 'redux-form';\r\nimport { displaySnackbar, updateEmails } from 'redux/actions';\r\nimport { AddressType, convertEmployeeToEmployeeDTO, Employee, EmployeeDTO, EnrollmentReducerState, EnrollmentReducerStatePropType, SendEmployeeInvitationDTO, SnackbarVariant } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport EditEmailAddressesForm, { EditEmailAddressesFormData, FORM_NAME as EDITEMAILADDRESSESFORM } from './edit_email_addresses_form';\r\nimport { FieldData as EditEmailAddressFieldData } from './edit_email_address_fields';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n enrollmentId: string;\r\n open: boolean;\r\n employees: Employee[];\r\n onCancel: () => void;\r\n onSuccess: () => void;\r\n}\r\n\r\ninterface StateProps {\r\n enrollmentState: EnrollmentReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n updateEmails: (companyId: string, enrollmentId: string, employees: EmployeeDTO[]) => Promise;\r\n resetForm: () => void;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps\r\n\r\ninterface State {\r\n editing: boolean;\r\n loading: boolean;\r\n pagination: {\r\n page: number;\r\n size: number;\r\n };\r\n}\r\n\r\nclass EditEmailAddressesDialog extends React.PureComponent {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n pagination: {\r\n page: 0,\r\n size: 25\r\n },\r\n editing: false,\r\n loading: true\r\n };\r\n }\r\n componentDidMount() {\r\n this.setState({ loading: false })\r\n }\r\n\r\n onEditEmails = (formValues: EditEmailAddressFieldData) => {\r\n this.load();\r\n const emailAddresses = formValues.emailAddresses;\r\n const firstArray = this.props.employees.map(e => this.getEmployeesWithChangedEmail(e, emailAddresses));\r\n const employees = this.removeUndefinedFromArray(firstArray);\r\n if (employees.length > 0) {\r\n this.props.updateEmails(this.props.companyId, this.props.enrollmentId, employees).then(\r\n this.updateSucceeded, this.updateFailed\r\n );\r\n } else {\r\n this.props.displaySnackbar('Email Addresses were updated', 'success').then(this.updateSucceeded)\r\n }\r\n }\r\n getEmployeesWithChangedEmail = (emp: Employee, emailAddress: EditEmailAddressesFormData[]) => {\r\n const newAddress = emailAddress.filter(e => e.employeeId === emp.id);\r\n if (newAddress && newAddress.length > 0 && newAddress[0].email) {\r\n if (emp.contactInformation &&\r\n emp.contactInformation[0] &&\r\n emp.contactInformation[0].email !== newAddress[0].email) {\r\n emp.contactInformation[0].email = newAddress[0].email;\r\n return convertEmployeeToEmployeeDTO(emp);\r\n } else if (!emp.contactInformation || !emp.contactInformation[0]) {\r\n emp.contactInformation = [];\r\n emp.contactInformation.push({\r\n addressType: AddressType.Home,\r\n email: newAddress[0].email\r\n });\r\n return convertEmployeeToEmployeeDTO(emp);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n removeUndefinedFromArray(array: any[]) {\r\n var index = 0;\r\n var chunkArray = [];\r\n\r\n for (index = 0; index < array.length; index++) {\r\n if (array[index] !== undefined) {\r\n chunkArray.push(array[index]);\r\n }\r\n }\r\n return chunkArray;\r\n }\r\n\r\n load = () => this.setState({ editing: true });\r\n\r\n updateSucceeded = () => {\r\n this.setState({ editing: false });\r\n // close dialog\r\n this.props.onSuccess();\r\n }\r\n\r\n updateFailed = () => {\r\n this.setState({ editing: false });\r\n }\r\n\r\n closeDialog = () => {\r\n this.props.resetForm();\r\n this.props.onCancel();\r\n }\r\n\r\n getInvitation = (emp: Employee) => {\r\n const invite: SendEmployeeInvitationDTO = {\r\n dateOfBirth: emp.dateOfBirth!,\r\n email: emp.contactInformation[0].email!,\r\n firstName: emp.firstName,\r\n lastName: emp.lastName,\r\n genderId: emp.genderId,\r\n employeeId: emp.id,\r\n employeeSignUpBaseUrlPath: window.location.origin + routes.employeeWithTokenSignUp.path\r\n }\r\n\r\n return invite;\r\n }\r\n\r\n get initialValues() {\r\n const ary: EditEmailAddressesFormData[] =\r\n this.props.employees.map(e => this.convertToFormDate(e));\r\n const formValues = {\r\n emailAddresses: ary\r\n }\r\n return formValues;\r\n };\r\n\r\n convertToFormDate = (emp: Employee) => {\r\n const empFrmData: EditEmailAddressesFormData = {\r\n email: (emp.contactInformation[0] && emp.contactInformation[0].email) ? emp.contactInformation[0].email : '',\r\n employeeId: emp.id,\r\n name: emp.fullName\r\n }\r\n return empFrmData;\r\n }\r\n\r\n handlePageChange = (_event: any, page: number) => {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n pagination: {\r\n ...prevState.pagination,\r\n page\r\n }\r\n }));\r\n }\r\n\r\n handleRowSizeChange = (event: any) => {\r\n const rowsPerPage = event.target.value;\r\n this.setState(prevState => ({\r\n ...prevState,\r\n pagination: {\r\n ...prevState.pagination,\r\n size: rowsPerPage,\r\n page: 0\r\n }\r\n }));\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.loading ?\r\n <>\r\n :\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (EditEmailAddressesDialog as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n enrollmentState: state.enrollment,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n displaySnackbar: (message, variant) => dispatch(displaySnackbar(message, variant)),\r\n updateEmails: (companyId: string, enrollmentId: string, employees: EmployeeDTO[]) => dispatch(updateEmails(companyId, enrollmentId, employees)),\r\n resetForm: () => dispatch(reset(EDITEMAILADDRESSESFORM))\r\n }\r\n}\r\n\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps)\r\n)(EditEmailAddressesDialog);\r\n\r\n","import actionCreatorFactory from \"redux-typescript-actions\";\r\nimport { EnrollmentNotificationBase } from \"redux/reducers/enrollment_notification_reducer\";\r\nimport { Dispatch } from \"redux\";\r\nimport http from \"utility/http\";\r\n\r\nconst acFactory = actionCreatorFactory()\r\nexport const storeEnrollmentNotifications = acFactory('STORE_ENROLLMENT_NOTIFICATIONS');\r\n\r\nexport function getEnrollmentNotifications(enrollmentId: string, companyId: string) {\r\n return async (dispatch: Dispatch) => {\r\n try {\r\n const enrollmentNotifications: EnrollmentNotificationBase[] = await http(`notifications?enrollmentId=${enrollmentId}&companyId=${companyId}`)\r\n\r\n if (enrollmentNotifications.length) {\r\n dispatch(storeEnrollmentNotifications(enrollmentNotifications))\r\n }\r\n } catch (ex) {\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\nexport function sendImmediateReminders(companyId: string, enrollmentId: string, employeeIds: string[]) {\r\n return async (dispatch: Dispatch) => {\r\n try {\r\n await http(\r\n `companies/${companyId}/enrollments/${enrollmentId}/employees/sendImmediateReminders`,\r\n {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n employeeIds: employeeIds\r\n })\r\n }\r\n )\r\n } catch (ex) {\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\nexport function updateEnrollmentNotification(notification: EnrollmentNotificationBase, companyId: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`notifications`, {\r\n method: 'POST',\r\n body: JSON.stringify(notification)\r\n })\r\n\r\n dispatch(getEnrollmentNotifications(notification.enrollmentId, companyId))\r\n } catch(ex) {\r\n throw ex;\r\n }\r\n }\r\n}","import { Action, isType } from \"redux-typescript-actions\";\r\nimport { storeEnrollmentNotifications } from \"redux/actions/enrollment_notification_actions\";\r\n\r\nexport interface EnrollmentNotificationState {\r\n list: EnrollmentNotificationBase[]\r\n broker: {\r\n displayName: string;\r\n email: string;\r\n primaryPhone: string;\r\n }\r\n}\r\n\r\nexport interface EnrollmentNotificationBase {\r\n id: string;\r\n enrollmentId: string;\r\n isDeleted: boolean;\r\n}\r\n\r\nexport interface EnrollmentEndDateNotification extends EnrollmentNotificationBase {\r\n numberOfDays: number[]\r\n}\r\n\r\n// in the future when we have multiple types of enrollments, this type guard can be used to convert a base type\r\nexport function isEndDateNotification(enrollmentNotification: EnrollmentNotificationBase): enrollmentNotification is EnrollmentEndDateNotification {\r\n return !!enrollmentNotification && !!(enrollmentNotification as any).numberOfDays\r\n}\r\n\r\nexport function getEndDateNotification(state: EnrollmentNotificationState): EnrollmentEndDateNotification | undefined {\r\n return state.list.find(enrollment => isEndDateNotification(enrollment)) as EnrollmentEndDateNotification\r\n}\r\n\r\nconst initialState: EnrollmentNotificationState = {\r\n list: [],\r\n broker: {\r\n displayName: \"\",\r\n email: \"\",\r\n primaryPhone: \"\"\r\n }\r\n}\r\n\r\nexport function enrollmentNotificationReducer(state: EnrollmentNotificationState = initialState, action: Action): EnrollmentNotificationState {\r\n if (isType(action, storeEnrollmentNotifications)) {\r\n return {\r\n ...state,\r\n list: action.payload\r\n }\r\n }\r\n\r\n return {\r\n ...state\r\n }\r\n}","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ReduxState } from 'redux/store';\r\nimport { compose } from 'recompose';\r\nimport EmailTemplateDialog from './email_template_dialog';\r\nimport { Typography, makeStyles, createStyles } from '@material-ui/core';\r\nimport { Field, reduxForm, submit, InjectedFormProps, FormErrors, DecoratedComponentClass, ConfigProps, formValueSelector } from 'redux-form';\r\nimport { TextFormField } from './reduxform_fields';\r\nimport { EnrollmentEndDateNotification } from 'redux/reducers/enrollment_notification_reducer';\r\nimport { normalizeDecimal, normalizeNumber } from 'utility/form_normalization';\r\nimport { positiveNumber } from 'utility/form_validation';\r\n\r\nexport const FORM_NAME = 'ENROLLMENT_END_DATE_REMINDERS_FORM';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onClose: () => void;\r\n notification?: EnrollmentEndDateNotification;\r\n isNew: boolean;\r\n brokerName: string;\r\n companyName: string | undefined;\r\n}\r\n\r\ninterface StateProps {\r\n numberOfDays?: number;\r\n}\r\ninterface DispatchProps {\r\n submitForm: () => void;\r\n}\r\n\r\nconst useStyles = makeStyles(createStyles({\r\n emailMainText: {\r\n fontWeight: 500,\r\n margin: '15px'\r\n },\r\n openEnrollmentLink: {\r\n color: 'darkblue',\r\n textDecoration: 'underline',\r\n marginLeft: '15px'\r\n }\r\n}))\r\n\r\nexport interface FormData {\r\n numberOfDays: string;\r\n}\r\n\r\ntype Props = StateProps & DispatchProps & ComponentProps & InjectedFormProps;\r\n\r\n\r\ntype ValidateFn = (values: FormData, props: ComponentProps & InjectedFormProps) => FormErrors;\r\n\r\nconst validate: ValidateFn = (values, props) => {\r\n // validate unique number of days\r\n if (props.notification && props.notification.numberOfDays\r\n .filter(n => !props.initialValues.numberOfDays || n !== parseInt(props.initialValues.numberOfDays))\r\n .indexOf(Number(values.numberOfDays)) !== -1) {\r\n return {\r\n numberOfDays: 'Already exists'\r\n }\r\n }\r\n return {\r\n }\r\n}\r\n\r\nconst EnrollmentEndDateNotificationDialog = (props: Props) => {\r\n const [inviting, setInviting] = React.useState(false);\r\n const classes = useStyles(props);\r\n\r\n return \r\n This is the email employees will receive.\r\n Send reminder \r\n \r\n days before enrollment ends.\r\n } \r\n \r\n emailTitleText=\"Open Enrollment is almost over!\"\r\n dialogTitle=\"Set Reminder\"\r\n emailBody={<>\r\n Dear [Employee First Name],\r\n Your Enrollment ends in {props.numberOfDays} days!\r\n Our records show you have not submitted your elections. To finish making your elections, please click here:\r\n Go to open enrollment\r\n Thank you,\r\n {props.brokerName}\r\n Benefits Representative for {props.companyName}\r\n }\r\n loading={inviting}\r\n onSubmit={props.submitForm}\r\n onCancel={props.onClose}\r\n />\r\n}\r\n\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n numberOfDays: formValueSelector(FORM_NAME)(state, 'numberOfDays' as keyof FormData)\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n submitForm: () => dispatch(submit(FORM_NAME))\r\n }\r\n}\r\n\r\nexport default compose<\r\n Props,\r\n ComponentProps & Partial>\r\n>(\r\n reduxForm({\r\n form: FORM_NAME,\r\n validate: validate,\r\n enableReinitialize: true\r\n }),\r\n connect(mapStateToProps, mapDispatchToProps)\r\n)(EnrollmentEndDateNotificationDialog);\r\n\r\n","import { Button, Grid, Link, Paper, Typography, createStyles, Theme, List, ListItem, Divider, IconButton } from '@material-ui/core';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FileCopy from '@material-ui/icons/FileCopyOutlined';\r\nimport InsertInvitation from '@material-ui/icons/InsertInvitation';\r\nimport Mail from '@material-ui/icons/MailOutlined';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport AddReminder from '@material-ui/icons/AddAlert';\r\nimport Breadcrumb from 'components/common/breadcrumb';\r\nimport EnrollmentInvitationDialog from 'components/common/enrollment_invitation_dialog';\r\nimport CircleNumber from 'components/common/icons/icon_circle_number';\r\nimport MaterialTable from 'components/common/table';\r\nimport Title from 'components/common/title';\r\nimport EditEmailAddressesDialog from 'components/employee/edit_email_addresses_dialog';\r\nimport SetEnrollmentDatesDialog from 'components/enrollment/set_enrollment_dates_dialog';\r\nimport memoizeOne from 'memoize-one';\r\nimport moment from 'moment';\r\nimport * as PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport EmailTemplateDialog from 'components/common/email_template_dialog';\r\nimport CopyToClipboard from 'react-copy-to-clipboard';\r\nimport ReactPlaceholder from 'react-placeholder/lib';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { deletePlan, displaySnackbar, fetchEmployees, fetchEnrollment, updateEnrollment } from 'redux/actions';\r\nimport { Employee, EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentDTO, EnrollmentReducerState, EnrollmentReducerStatePropType, Plan, PlanPropType, SnackbarVariant } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport BasePage from '../../components/common/base_page';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport routes from '../../router/routes';\r\nimport { getEndDateNotification, EnrollmentEndDateNotification, EnrollmentNotificationBase } from 'redux/reducers/enrollment_notification_reducer';\r\nimport { getEnrollmentNotifications as fetchEnrollmentNotifications, updateEnrollmentNotification, sendImmediateReminders } from 'redux/actions/enrollment_notification_actions';\r\nimport EnrollmentEndDateNotificationDialog, { FormData as EnrollmentEnddateRemindersFormData } from 'components/common/enrollment_end_date_reminders_dialog';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport Help from '@material-ui/icons/Help';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\n\r\n\r\nexport interface EmployeeInvitation extends Employee {\r\n checked: boolean;\r\n email?: string;\r\n inviteStatus: string;\r\n enrollmentStatus: number\r\n}\r\n\r\nexport interface EmployeeNoInvitation extends Employee {\r\n email?: string;\r\n inviteStatus: string;\r\n}\r\n\r\ninterface StateProps {\r\n plans: Plan[];\r\n enrollment: EnrollmentReducerState;\r\n employees: EmployeeReducerState;\r\n endDateNotification?: EnrollmentEndDateNotification;\r\n}\r\n\r\ninterface DispatchProps {\r\n fetchEmployees: (companyId: string, enrollmentId: string) => Promise;\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n deletePlan: (companyId: string, enrollmentId: string, id: string, name: string) => Promise;\r\n updateEnrollment: (enrollment: EnrollmentDTO) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n fetchEndDateNotifications: (enrollmentId: string, companyId: string) => Promise\r\n updateNotification: (notification: EnrollmentNotificationBase, companyId: string) => Promise;\r\n sendImmediateReminders: (companyId: string, enrollmentId: string, employeeIds: string[]) => Promise;\r\n}\r\n\r\ntype Props = RouteComponentProps & StateProps & DispatchProps & WithStyles\r\n\r\ninterface State {\r\n setDatesDialog: boolean;\r\n loading: boolean;\r\n sendInvitationDialog: boolean;\r\n editEmailDialog: boolean;\r\n employeeIdsChecked: string[];\r\n editRemindersDialogOpen: boolean;\r\n sendImmediateReminderModalOpen: boolean;\r\n sendImmediateReminderEmployees: string[];\r\n editRemindersNumberOfDays?: number;\r\n sendingImmediateReminders: boolean;\r\n}\r\n\r\nclass EmployeeInvitations extends React.PureComponent {\r\n sortableTableHeaders: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n tootlTip?: boolean;\r\n toolTipText?: string;\r\n }[] = [\r\n { id: 'selectall', direction: false, label: ' ' },\r\n { id: 'fullName', direction: \"asc\", label: 'Employee Name' },\r\n { id: 'email', direction: \"asc\", label: 'Employee Email', tootlTip: true, toolTipText: 'Email Addresses are required for employees in order to be invited from the system' },\r\n { id: 'inviteStatus', direction: \"asc\", label: 'Invite Status' },\r\n { id: 'enrollmentStatus', direction: \"asc\", label: 'Enrollment Status' },\r\n ]\r\n\r\n sortableNonEnrolleeTableHeaders: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n tootlTip?: boolean;\r\n toolTipText?: string;\r\n }[] = [\r\n { id: '', direction: false, label: ' ' },\r\n { id: 'fullName', direction: \"asc\", label: 'Employee Name' },\r\n { id: 'email', direction: \"asc\", label: 'Employee Email', tootlTip: false },\r\n { id: 'inviteStatus', direction: \"asc\", label: 'Invite Status' },\r\n ]\r\n breadCrumb = ['Dashboard', 'Employee Invitations'];\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n setDatesDialog: false,\r\n loading: false,\r\n sendInvitationDialog: false,\r\n editEmailDialog: false,\r\n employeeIdsChecked: [],\r\n editRemindersDialogOpen: false,\r\n editRemindersNumberOfDays: undefined,\r\n sendImmediateReminderEmployees: [],\r\n sendImmediateReminderModalOpen: false,\r\n sendingImmediateReminders: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.employees.list.length === 0)\r\n this.props.fetchEmployees(this.companyId, this.enrollmentId)\r\n\r\n if (!this.props.enrollment.id) {\r\n this.props.fetchEnrollment(this.enrollmentId)\r\n } else {\r\n if (!this.props.endDateNotification)\r\n this.props.fetchEndDateNotifications(this.props.enrollment.id, this.props.enrollment.company.id)\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n if (\r\n !!this.props.enrollment.id &&\r\n !this.props.endDateNotification &&\r\n !prevProps.enrollment.id\r\n ) {\r\n this.props.fetchEndDateNotifications(this.props.enrollment.id, this.props.enrollment.company.id)\r\n }\r\n }\r\n\r\n get companyId() {\r\n return this.props.match.params[routes.planSetup.params!.companyId!.replace(':', '')];\r\n }\r\n\r\n get enrollmentId() {\r\n return this.props.match.params[routes.planSetup.params!.enrollmentId!.replace(':', '')];\r\n }\r\n\r\n convertToEmployeeNoInvitation = (employee: Employee) => {\r\n const email = (\r\n employee.contactInformation &&\r\n employee.contactInformation[0] &&\r\n employee.contactInformation[0].email &&\r\n employee.contactInformation[0].email.length > 0) ? employee.contactInformation[0].email : '--';\r\n const inEligible = employee.isInEligible ? \"Ineligible\" : undefined;\r\n const waivingCoverage = employee.isEmployeeWaiving ? \"Waiving Coverage\" : \"\";\r\n\r\n const emp: EmployeeNoInvitation = {\r\n ...employee,\r\n email,\r\n inviteStatus: inEligible === undefined ? waivingCoverage : inEligible,\r\n }\r\n return emp;\r\n }\r\n convertToEmployeeInvitation = (employee: Employee) => {\r\n const email = (\r\n employee.contactInformation &&\r\n employee.contactInformation[0] &&\r\n employee.contactInformation[0].email &&\r\n employee.contactInformation[0].email.length > 0) ? employee.contactInformation[0].email : '--';\r\n\r\n const emp: EmployeeInvitation = {\r\n ...employee,\r\n checked: this.state.employeeIdsChecked.indexOf(employee.id) !== -1,\r\n email,\r\n inviteStatus: this.getInviteStatus(employee),\r\n enrollmentStatus: employee.electionStatusId\r\n }\r\n return emp;\r\n }\r\n\r\n getInviteStatus = (emp: Employee) => {\r\n if (!emp.invitationStatusId)\r\n return 'Not Invited';\r\n\r\n switch (emp.invitationStatusId) {\r\n case getLookupId('NOTINVITED', LOOKUP_TYPE_IDS.invitationStatus):\r\n return \"Not Invited\";\r\n case getLookupId('ACTIVE', LOOKUP_TYPE_IDS.invitationStatus):\r\n return \"Active\";\r\n case getLookupId('INVITED', LOOKUP_TYPE_IDS.invitationStatus):\r\n return \"Invited on \" + moment.utc(emp.invitationSentDate).utcOffset(moment().utcOffset()).local().format('LL LT');// + \" \" + moment(emp.invitationSentDate).format('LT') ;\r\n default:\r\n return \"Not Invited\";\r\n }\r\n }\r\n handleSetDatesDialogOpen = () => {\r\n this.setState({ setDatesDialog: true })\r\n };\r\n\r\n handleSetDatesDialogCancel = () => {\r\n this.setState({ setDatesDialog: false });\r\n };\r\n\r\n handleSetDatesDialogSubmit = (startDate: moment.Moment, endDate: moment.Moment) => {\r\n this.setState({\r\n setDatesDialog: false,\r\n loading: true\r\n });\r\n const enrollmentPayload: EnrollmentDTO = {\r\n ...this.props.enrollment,\r\n effectiveDate: this.props.enrollment.effectiveDate ? this.props.enrollment.effectiveDate : undefined,\r\n startDate: moment(startDate).utc().local(false).startOf(\"day\").format(),\r\n endDate: moment(endDate).utc().local(false).startOf(\"day\").format(),\r\n setupCompletedOn: this.props.enrollment.setupCompletedOn ? this.props.enrollment.setupCompletedOn.utc().format() : undefined,\r\n submissionDate: this.props.enrollment.submissionDate ? this.props.enrollment.submissionDate.utc().format() : undefined\r\n };\r\n this.props.updateEnrollment(enrollmentPayload).then(this.done, this.done);\r\n };\r\n\r\n done = () => this.setState({ loading: false });\r\n\r\n\r\n _dates = memoizeOne((enroll: EnrollmentReducerState) => {\r\n return { start: enroll.startDate, end: enroll.endDate };\r\n });\r\n\r\n generateInviteURL = memoizeOne((companyId: string, enrollmentId: string) => {\r\n const inviteToken = btoa(companyId + '|' + enrollmentId) + 'bmall';\r\n return window.location.origin + \"/employeeInvitation/\" + inviteToken;\r\n });\r\n\r\n handleCheckChange = (e: any, checked: boolean) => {\r\n const id = (e.target || e.srcElement).value as string;\r\n console.log('cc', id, checked)\r\n const employeeIdsChecked = [\r\n ...this.state.employeeIdsChecked.filter(eid => eid !== id)\r\n ]\r\n if (checked) {\r\n employeeIdsChecked.push(id)\r\n }\r\n this.setState({ employeeIdsChecked });\r\n }\r\n\r\n handleSelectAll = (e: any, checked: boolean) => {\r\n this.setState({ employeeIdsChecked: checked ? this.props.employees.list.map(e => e.id) : [] });\r\n }\r\n\r\n openSendImmediateReminderDialog = () => {\r\n const employeeIds = this.state.employeeIdsChecked;\r\n this.setState({\r\n sendImmediateReminderEmployees: employeeIds,\r\n sendImmediateReminderModalOpen: true\r\n })\r\n }\r\n\r\n closeSendImmediateReminderDialog = () => {\r\n this.setState({\r\n sendImmediateReminderEmployees: [],\r\n sendImmediateReminderModalOpen: false\r\n })\r\n }\r\n\r\n sendImmediateReminders = async () => {\r\n this.setState({ sendingImmediateReminders: true })\r\n await this.props.sendImmediateReminders(\r\n this.props.enrollment.company.id,\r\n this.props.enrollment.id,\r\n this.state.sendImmediateReminderEmployees\r\n )\r\n this.setState({ sendingImmediateReminders: false })\r\n this.closeSendImmediateReminderDialog();\r\n }\r\n\r\n openSendInvitationsDialog = () => {\r\n this.setState({ sendInvitationDialog: true });\r\n };\r\n\r\n closeSendInvitationDialog = () => {\r\n this.setState({ sendInvitationDialog: false })\r\n }\r\n\r\n openEditEmailDialog = () => {\r\n this.setState({ editEmailDialog: true });\r\n }\r\n\r\n closeEditEmailDialog = () => {\r\n this.setState({ editEmailDialog: false });\r\n }\r\n\r\n handlePageChange = (index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n };\r\n\r\n setRemindersDialogOpen = (numberOfDays?: number) => {\r\n this.setState({ editRemindersDialogOpen: true, editRemindersNumberOfDays: numberOfDays })\r\n }\r\n\r\n setRemindersDialogClosed = () => {\r\n this.setState({ editRemindersDialogOpen: false, editRemindersNumberOfDays: undefined })\r\n }\r\n\r\n editRemindersNumberOfDays = (data: EnrollmentEnddateRemindersFormData) => {\r\n const notification = {\r\n enrollmentId: this.props.enrollment.id,\r\n isDeleted: false,\r\n ...this.props.endDateNotification,\r\n numberOfDays: [\r\n ...(this.props.endDateNotification ?\r\n this.props.endDateNotification.numberOfDays.filter(\r\n n => n !== parseInt(data.numberOfDays) &&\r\n (this.state.editRemindersNumberOfDays === undefined || n !== this.state.editRemindersNumberOfDays)\r\n ) : []),\r\n data.numberOfDays\r\n ]\r\n } as EnrollmentEndDateNotification;\r\n this.props.updateNotification(notification, this.companyId)\r\n this.setRemindersDialogClosed();\r\n }\r\n\r\n deleteRemindersNumberOfDays = (numberOfDays: number) => {\r\n const notification = {\r\n enrollmentId: this.props.enrollment.id,\r\n isDeleted: false,\r\n ...this.props.endDateNotification,\r\n numberOfDays: (this.props.endDateNotification ?\r\n this.props.endDateNotification.numberOfDays.filter(\r\n n => n !== numberOfDays\r\n ) : [])\r\n } as EnrollmentEndDateNotification;\r\n this.props.updateNotification(notification, this.companyId)\r\n }\r\n\r\n handleCopyUrl = () => {\r\n this.props.displaySnackbar('URL Copied', 'success')\r\n }\r\n\r\n handleEditEmailSuccess = () => {\r\n this.props.fetchEmployees(this.companyId, this.enrollmentId);\r\n this.closeEditEmailDialog();\r\n }\r\n\r\n handleEmployeeClick = (employeeId: string) => {\r\n const { path, params } = routes.guidedEnrollment;\r\n const enrollmentIdVarName = routes.companyDashboard.params!.enrollmentId!.replace(':', '');\r\n const companyIdVarName = routes.companyDashboard.params!.companyId!.replace(':', '');\r\n const enrollmentId = this.props.match.params[enrollmentIdVarName];\r\n const companyId = this.props.match.params[companyIdVarName];\r\n const route = path.replace(params!.companyId!, companyId)\r\n .replace(params!.enrollmentId!, enrollmentId)\r\n .replace(params!.employeeId!, employeeId)\r\n .replace(params!.stepId!, '');\r\n this.props.history.push(route);\r\n };\r\n\r\n render() {\r\n const { enrollment, classes } = this.props;\r\n const employeeInvitations = this.props.employees.list.filter(e => !e.isInEligible && !e.isEmployeeWaiving).map(this.convertToEmployeeInvitation)\r\n const employeeNoInvitations = this.props.employees.list.filter(e => e.isInEligible || e.isEmployeeWaiving).map(this.convertToEmployeeNoInvitation)\r\n const { start, end } = this._dates(enrollment);\r\n const inviteUrl = this.generateInviteURL(this.props.enrollment.company.id, this.props.enrollment.id)\r\n const employeesChecked = this.props.employees.list.filter(employee => this.state.employeeIdsChecked.indexOf(employee.id) !== -1);\r\n const enrollmentDatesAreSet = !!enrollment.startDate && !!enrollment.endDate;\r\n const numberOfDays = this.props.endDateNotification ? this.props.endDateNotification.numberOfDays.sort() : []\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {enrollment.company.name}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Enrollment Invitations\r\n
\r\n \r\n
\r\n \r\n \r\n {start && end ? `${start.format('MM/DD/YYYY')} - ${end.format('MM/DD/YYYY')}` : 'NO DATES SET'}\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n You have 2 options for inviting employees to online enrollment\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Copy the invite URL and send your own email.\r\n \r\n \r\n \r\n {enrollmentDatesAreSet ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n No Dates Set\r\n \r\n \r\n }\r\n \r\n \r\n \r\n or\r\n \r\n \r\n \r\n \r\n \r\n Select employees below and send an email from the system.\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n Scheduled Reminders\r\n
\r\n this.setRemindersDialogOpen()} className={classes.actionButton} >\r\n
\r\n \r\n \r\n Add Reminder\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Notification Date\r\n \r\n \r\n \r\n {numberOfDays.length ? numberOfDays.map(n => \r\n this.setRemindersDialogOpen(n)}>\r\n \r\n \r\n this.deleteRemindersNumberOfDays(n)}>\r\n \r\n \r\n \r\n \r\n \r\n ) : No Data Available}\r\n \r\n
\r\n
\r\n {/* Check Boxes */}\r\n \r\n
\r\n Employee Reminders\r\n {employeesChecked.length === 0 && {employeeInvitations.length} Employees}\r\n
\r\n {employeesChecked.length > 0 &&\r\n <>\r\n
\r\n {employeesChecked.length} Employee{employeesChecked.length > 1 ? 's' : ''} Selected\r\n
\r\n {enrollmentDatesAreSet && employeesChecked.length > 0 && <>\r\n \r\n \r\n \r\n }\r\n {employeesChecked.length > 0 &&\r\n \r\n }\r\n\r\n
\r\n
\r\n
 
\r\n \r\n }\r\n { }}\r\n onDelete={() => { }}\r\n sortableTableHeaders={this.sortableTableHeaders}\r\n content={employeeInvitations}\r\n handleEmployeeClicked={this.handleEmployeeClick}\r\n handleRowClick={() => { }}\r\n handleCheckClicked={this.handleCheckChange}\r\n hideBlankHeader={true}\r\n rowType=\"invitations\"\r\n hideFabForAdd={true}\r\n handleSelectAll={this.handleSelectAll}\r\n viewOnly={!enrollmentDatesAreSet}\r\n hidePaging={employeeInvitations.length < 25}\r\n showFooter={true}\r\n />\r\n
\r\n
\r\n
\r\n {employeeNoInvitations.length > 0 &&\r\n \r\n \r\n\r\n \r\n
\r\n Non Enrolling Employees\r\n \r\n }\r\n />\r\n {{employeeNoInvitations.length} Employees}\r\n
\r\n { }}\r\n onDelete={() => { }}\r\n sortableTableHeaders={this.sortableNonEnrolleeTableHeaders}\r\n content={employeeNoInvitations}\r\n handleEmployeeClicked={this.handleEmployeeClick}\r\n handleRowClick={() => { }}\r\n handleCheckClicked={() => { }}\r\n hideBlankHeader={true}\r\n rowType=\"ineligible\"\r\n hideFabForAdd={true}\r\n handleSelectAll={() => { }}\r\n viewOnly={true}\r\n hidePaging={employeeInvitations.length < 25}\r\n showFooter={true}\r\n />\r\n
\r\n
\r\n
\r\n }\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {/* immediate reminder dialog */}\r\n This is the email employees will receive.}\r\n emailTitleText=\"Open Enrollment is Almost Over!\"\r\n emailBody={<>\r\n Dear [Employee First Name],\r\n Your Enrollment ends in {moment(this.props.enrollment.endDate).startOf('day').diff(moment().startOf('day'), 'days')} days!\r\n Our records show you have not submitted your elections. To finish making your elections, please click here:\r\n Go to open enrollment\r\n Thank you,\r\n {this.props.enrollment.broker.displayName}\r\n Benefits Representative for {this.props.enrollment.company.name}\r\n }\r\n dialogTitle=\"Send Email Reminder\"\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (EmployeeInvitations as any).propTypes = {\r\n plans: PropTypes.arrayOf(PlanPropType),\r\n enrollment: EnrollmentReducerStatePropType,\r\n employees: EmployeeReducerStatePropType\r\n }\r\n}\r\n\r\nconst styles = createStyles((theme: Theme) => ({\r\n paper: {\r\n },\r\n container: {\r\n padding: theme.spacing(2)\r\n },\r\n circle: {\r\n backgroundColor: palette.green.primary,\r\n height: theme.spacing(7),\r\n width: theme.spacing(7),\r\n fontSize: 24,\r\n position: 'relative',\r\n margin: '0 auto'\r\n },\r\n setDates: {\r\n float: 'right',\r\n fontSize: 14,\r\n },\r\n inviteOptionLeft: {\r\n },\r\n or: {\r\n padding: theme.spacing(1, 0, 1, 3),\r\n textAlign: 'center'\r\n },\r\n inviteOptions: {\r\n paddingTop: theme.spacing(4)\r\n },\r\n inviteOptionContent: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center'\r\n },\r\n subHeader: {\r\n fontSize: 16,\r\n color: theme.palette.grey[500],\r\n },\r\n copyToClipboard: {\r\n marginTop: theme.spacing(2),\r\n textAlign: 'right',\r\n [theme.breakpoints.down('md')]: {\r\n textAlign: 'center'\r\n }\r\n },\r\n addReminderBtn: {\r\n float: 'right'\r\n },\r\n scheduledReminders: {\r\n borderLeft: `1px solid ${theme.palette.grey[500]}`,\r\n },\r\n actionButton: {\r\n cursor: 'pointer',\r\n color: palette.blue.link\r\n },\r\n actionContainer: {\r\n display: 'flex',\r\n },\r\n actionIcon: {\r\n fontSize: 24,\r\n width: 24,\r\n paddingLeft: 0,\r\n display: 'inline-flex',\r\n alignItems: 'center'\r\n },\r\n actionBtnText: {\r\n fontWeight: 500,\r\n fontFamily: 'Roboto',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n marginLeft: 8,\r\n fontSize: 12,\r\n letterSpacing: .5\r\n },\r\n // everything below this is old\r\n blueBanner: {\r\n backgroundColor: '#005ba1',\r\n height: '55px',\r\n color: 'white',\r\n borderTopLeftRadius: '4px',\r\n borderTopRightRadius: '4px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 36px',\r\n marginTop: 10\r\n },\r\n blueBannerIcon: {\r\n height: 24,\r\n width: 24,\r\n paddingRight: 4\r\n },\r\n blueBannerInsertLinks: {\r\n flexGrow: 0\r\n },\r\n blueBannerInsertLabel: {\r\n color: 'white',\r\n flexGrow: 1,\r\n },\r\n blueBannerInsertLink: {\r\n color: 'white',\r\n letterSpacing: 1.25\r\n },\r\n button: {\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n borderRadius: 5,\r\n width: 210,\r\n margin: 'auto'\r\n },\r\n buttonFlex: {\r\n display: 'flex',\r\n paddingLeft: 20\r\n },\r\n buttonText: {\r\n color: palette.blue.link,\r\n fontSize: 14,\r\n paddingRight: 40\r\n },\r\n employeeCount: {\r\n fontWeight: 'bold',\r\n fontSize: 20\r\n },\r\n employeeSubHeader: {\r\n fontSize: 16,\r\n color: palette.grey.text,\r\n margin: 'auto',\r\n paddingTop: 15\r\n },\r\n firstRow: {\r\n paddingBottom: 0,\r\n paddingLeft: 12\r\n },\r\n fileCopy: {\r\n height: 20,\r\n width: 20,\r\n color: palette.blue.link,\r\n paddingRight: 30\r\n },\r\n flex: {\r\n display: 'flex'\r\n },\r\n grid12: {\r\n padding: 12,\r\n marginTop: 32\r\n },\r\n header: {\r\n fontFamily: 'Roboto',\r\n fontSize: 20,\r\n fontWeight: 500,\r\n color: palette.grey.text\r\n },\r\n headerDiv: {\r\n paddingTop: 16,\r\n paddingBottom: 16,\r\n paddingRight: 24,\r\n paddingLeft: 24\r\n },\r\n invite: {\r\n fontSize: 12,\r\n color: palette.grey.text,\r\n wordBreak: 'break-all'\r\n },\r\n link: {\r\n fontSize: 12,\r\n marginLeft: 48,\r\n paddingTop: 0,\r\n cursor: 'pointer'\r\n },\r\n listItem: {\r\n fontSize: '.8em'\r\n },\r\n notch: {\r\n width: 0,\r\n height: 0,\r\n marginLeft: 25,\r\n borderLeft: '12px solid transparent',\r\n borderRight: '12px solid transparent',\r\n borderTop: '12px solid #005ba1',\r\n },\r\n notificationDateHeader: {\r\n padding: theme.spacing(1)\r\n },\r\n title: {\r\n fontSize: '24px',\r\n fontWeight: 500\r\n },\r\n warning: {\r\n color: palette.orange.primary,\r\n fontSize: 14,\r\n marginLeft: 16\r\n },\r\n warningText: {\r\n color: palette.grey.text,\r\n marginLeft: 10\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary,\r\n verticalAlign: 'middle'\r\n },\r\n whiteBanner: {\r\n height: '55px',\r\n marginBottom: '12px'\r\n },\r\n emailMainText: {\r\n fontWeight: 500,\r\n margin: '15px'\r\n },\r\n openEnrollmentLink: {\r\n color: 'darkblue',\r\n textDecoration: 'underline',\r\n marginLeft: '15px'\r\n },\r\n}))\r\n\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n plans: state.plan.list,\r\n enrollment: state.enrollment,\r\n employees: state.employee,\r\n endDateNotification: getEndDateNotification(state.enrollmentNotifications)\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchEmployees: (companyId, enrollmentId) => dispatch(fetchEmployees(companyId, enrollmentId)),\r\n deletePlan: (companyId, enrollmentId, id, name) => dispatch(deletePlan(companyId, enrollmentId, id, name)),\r\n fetchEnrollment: (enrollmentId) => dispatch(fetchEnrollment(enrollmentId)),\r\n updateEnrollment: (enrollment) => dispatch(updateEnrollment(enrollment)),\r\n displaySnackbar: (message, variant) => dispatch(displaySnackbar(message, variant)),\r\n updateNotification: (notification: EnrollmentNotificationBase, companyId: string) => dispatch(updateEnrollmentNotification(notification, companyId)),\r\n fetchEndDateNotifications: (enrollmentId: string, companyId: string) => dispatch(fetchEnrollmentNotifications(enrollmentId, companyId)),\r\n sendImmediateReminders: (companyId: string, enrollmentId: string, employeeIds: string[]) => dispatch(sendImmediateReminders(companyId, enrollmentId, employeeIds))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(EmployeeInvitations));","import { Divider, Typography } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport palette from 'utility/palette';\r\nimport * as qs from 'utility/query_string_util';\r\n\r\n\r\n\r\ninterface Props extends StyledComponentProps, RouteComponentProps {\r\n errors: string[];\r\n}\r\n\r\nconst DirectToCarrierErrorList = React.memo((props: Props) => {\r\n const { classes = {}, location } = props;\r\n const { errors } = qs.parse(location.search);\r\n return (\r\n
\r\n {Array.isArray(errors) ?\r\n errors.map((e: string, index: number) => (\r\n
\r\n {index !== 0 &&\r\n \r\n }\r\n Error {index + 1}\r\n {e}\r\n
\r\n ))\r\n :\r\n
\r\n\r\n Error 1\r\n {errors}\r\n
\r\n }\r\n {}\r\n
\r\n )\r\n})\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n errorDetail: {\r\n display: 'block',\r\n marginLeft: 24\r\n },\r\n errorDetailItem: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 8\r\n },\r\n errorHeading: {\r\n fontSize: 16,\r\n marginTop: 8,\r\n color: palette.red.primary\r\n },\r\n}\r\n\r\nexport default withStyles(styles)(DirectToCarrierErrorList)","import { Hidden, TableRow } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { GroupSubmission } from 'redux/reducers';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport { getLOCicons } from 'utility/simple_utils';\r\nimport palette from '../../utility/palette';\r\n\r\ninterface Props extends StyledComponentProps {\r\n groupApplication: GroupSubmission;\r\n}\r\n\r\nconst SubmitSeparateRow = (props: Props) => {\r\n const getIcons = memoizeOne(() => {\r\n return getLOCicons(props.groupApplication.plans);\r\n })\r\n const lookups = getLookups();\r\n\r\n return (\r\n \r\n \r\n \r\n {props.groupApplication.plans.map(p => <>
{p.carrierName}
)}\r\n
\r\n
\r\n \r\n {getIcons().map(loc => {\r\n return ();\r\n })}\r\n \r\n \r\n {lookups[props.groupApplication.stateId].key}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n capitalize: {\r\n textTransform: 'capitalize'\r\n },\r\n carrier: {\r\n color: palette.grey.primary\r\n },\r\n greyIcon: {\r\n color: palette.grey.text,\r\n marginRight: 4\r\n },\r\n};\r\n\r\nexport default withStyles(styles)(SubmitSeparateRow);","import { Hidden, Paper, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@material-ui/core';\r\nimport Help from '@material-ui/icons/Help';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport React from 'react';\r\nimport { GroupSubmission } from 'redux/reducers';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport palette from '../../utility/palette';\r\nimport SubmitSeparateRow from './submit_separate_row';\r\n\r\n\r\ninterface Props {\r\n groupApplications: GroupSubmission[];\r\n}\r\n\r\nconst SubmitSeparateTable = (props: Props) => {\r\n return (\r\n \r\n
\r\n \r\n Submit Directly to Carrier\r\n }\r\n />\r\n {/* \r\n {props.groupApplications.length} Carrier{props.groupApplications.length !== 1 && 's'}\r\n */}\r\n \r\n The following carrier(s) cannot be processed by BenefitMall.\r\n \r\n \r\n Please find the group application documents and submit the completed, signed, documents directly to the carrier manually.

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Carrier\r\n \r\n \r\n Lines of Coverage\r\n \r\n \r\n Market\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n props.groupApplications.map(gApp => {\r\n return \r\n })\r\n }\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n fontFamily: 'Roboto',\r\n fontSize: 20,\r\n fontWeight: 500,\r\n color: palette.grey.text,\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n subheader: {\r\n color: palette.grey.text,\r\n fontSize: 14\r\n },\r\n info: {\r\n color: palette.grey.text,\r\n fontSize: 14,\r\n marginBottom: -8,\r\n },\r\n info2: {\r\n color: palette.grey.text,\r\n fontSize: 14,\r\n marginBottom: -8\r\n },\r\n headerDiv: {\r\n paddingTop: 16,\r\n paddingRight: 24,\r\n paddingLeft: 24,\r\n }\r\n}\r\n\r\nexport default SubmitSeparateTable;","import { Button } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Check from '@material-ui/icons/Check';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport Adobeicon from '../../images/sign_app_RGB_2017.svg'\r\n\r\nimport memoizeOne from 'memoize-one';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { GroupAppSubmissionStatus, GroupSubmission } from 'redux/reducers';\r\nimport auth from 'utility/auth';\r\nimport { ENROLLMENT_SUBMISSION_MECHANISMS, getLookupId, getLookups, LOOKUP_TYPE_IDS, getLookupValue, getById } from 'utility/lookup_utils';\r\nimport { getLOCicons } from 'utility/simple_utils';\r\nimport palette from '../../utility/palette';\r\nimport withTableRow from '../common/table_row_hoc';\r\n\r\ninterface ComponentProps {\r\n content: GroupSubmission;\r\n nameLocation: string;\r\n noDelete: boolean;\r\n isEnrollmentSubmitted: boolean;\r\n onClick: (groupSubmissionId: string) => void;\r\n configurationTypeIds: number[];\r\n hasDigitalSignOptin: boolean;\r\n}\r\n\r\ninterface Props extends StyledComponentProps, ComponentProps {\r\n}\r\n\r\ninterface State {\r\n isHovering: boolean;\r\n}\r\n\r\nclass SubmitBenefitMallRow extends React.PureComponent{\r\n lookups = getLookups();\r\n renewalLookup = getLookupId('RENEWAL', LOOKUP_TYPE_IDS.enrollmentType);\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isHovering: false\r\n }\r\n }\r\n\r\n getIcons = memoizeOne(() => {\r\n return getLOCicons(this.props.content.plans);\r\n })\r\n\r\n getEarliestEffectiveDate = memoizeOne(() => {\r\n return moment.min(this.props.content.plans.map(plan => { return moment(plan.effectiveDate) }));\r\n })\r\n\r\n getStatusMessageDiv = () => {\r\n const isCyberScout = this.props.content.carrierCode === getLookupValue('CYBERSCOUTCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n const isHorizon = this.props.content.carrierCode === getLookupValue('HORIZONCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n const isAllstate = this.props.content.carrierCode === getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n const isD2C = this.props.content.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrier;\r\n const useD2cNoSubmission = this.props.configurationTypeIds && this.props.configurationTypeIds.indexOf(50) > -1;\r\n const isEbn = !useD2cNoSubmission && this.props.content.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.eBN;\r\n const isD2CNoGroups = useD2cNoSubmission || this.props.content.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.directToCarrierNoGroupApp;\r\n const isAutoGen = this.props.content.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.autoGen;\r\n const isRenewal = this.props.content.enrollmentTypeId === this.renewalLookup;\r\n const hasDocuments = this.props.content.documents.length > 0;\r\n const isBmallAdmin = auth.isUserEnrollmentSuperAdmin();\r\n const directToCarrier = this.props.content.directToCarrier;\r\n const checkIcon = ;\r\n const warningIcon = ;\r\n let icon;\r\n let message;\r\n\r\n if (isD2C) {\r\n if (!!directToCarrier) {\r\n if(isHorizon){\r\n const isGroupAppSubmittedToCarrier = this.props.content.submissionStatus === GroupAppSubmissionStatus.submitted;\r\n const isBMallAdminActionRequired = isBmallAdmin && this.props.isEnrollmentSubmitted && !isGroupAppSubmittedToCarrier;\r\n \r\n if(isGroupAppSubmittedToCarrier){ //All personas && Group App submitted to D2C \r\n message = 'Submission Confirmed';\r\n icon = checkIcon;\r\n } else if (isBMallAdminActionRequired) { //BenefitMall User && Group App not submitted to D2C\r\n message = 'Submission Required';\r\n icon = warningIcon;\r\n } else if (directToCarrier.isFormComplete && hasDocuments) { //All personas && Form Completed\r\n message = 'Form Complete';\r\n icon = checkIcon;\r\n } else if (!directToCarrier.isFormComplete) { //All personas && Form In-Complete\r\n message = 'Form Incomplete';\r\n icon = warningIcon;\r\n } else if (!hasDocuments) {\r\n message = 'Upload Missing Documents';\r\n icon = warningIcon;\r\n }\r\n }else {\r\n const hasUnsignedEGA = directToCarrier.egaLinks.length > 0;\r\n const hasSignedEGA = !!directToCarrier.egaLinks.find(x => x.isSigned);\r\n const isBMallAdminActionRequired = isBmallAdmin && this.props.isEnrollmentSubmitted && !hasUnsignedEGA;\r\n\r\n if (!directToCarrier.isFormComplete) { //All Personas && form incomplete\r\n message = 'Form Incomplete';\r\n icon = warningIcon;\r\n } else if (!this.props.isEnrollmentSubmitted || (!isBmallAdmin && !hasUnsignedEGA)) { //All Personas && enrollment isnt submitted OR non bmall admin && no unsigned EGA\r\n message = 'Form Complete';\r\n icon = checkIcon;\r\n } else if (isBMallAdminActionRequired) { //Is Bmall Admin && enrollment submitted && no unsigned EGA\r\n message = 'Submission Required';\r\n icon = warningIcon;\r\n } else if (hasSignedEGA && !hasSignedEGA) { //All Personas && has unsigned EGA && no signed EGA\r\n message = 'Submission Required';\r\n icon = warningIcon;\r\n } else if (hasSignedEGA) { //All Personas && has signed EGA\r\n message = 'Signed';\r\n icon = checkIcon;\r\n }\r\n }\r\n }\r\n } else if (isEbn) {\r\n const isD2CManualOverride = this.props.content.isDirectToCarrierRouteOverriden && !!directToCarrier;\r\n const isEbnValid = hasDocuments || isRenewal;\r\n\r\n if (isD2CManualOverride) { //Was flipped manually from d2c to eBN\r\n message = 'Submitted to eBN';\r\n icon = checkIcon;\r\n } else if (isEbnValid) { //At least 1 document uploaded OR is a renewal\r\n message = `${this.props.content.documents.length} Document${this.props.content.documents.length !== 1 ? 's' : ''} Uploaded`\r\n icon = checkIcon;\r\n } else { //Is not a renewal && has no uploaded docs \r\n message = 'Upload Missing Documents';\r\n icon = warningIcon;\r\n }\r\n } else if (isD2CNoGroups) {\r\n\r\n if (!!directToCarrier && !!directToCarrier.agentsOfRecord && directToCarrier.agentsOfRecord.length > 0) {\r\n const groupIdInvalid = isBmallAdmin && this.props.isEnrollmentSubmitted && !directToCarrier.groupId;\r\n\r\n if (!directToCarrier.agentsOfRecord[0].carrierAgentId) {//All Personas && No Carrier Agent ID\r\n message = isCyberScout ? `${this.props.content.carrierName} Broker ID Required` : (isAllstate ? 'Allstate Broker ID required' : 'Agent ID Required');\r\n icon = warningIcon;\r\n } else if (groupIdInvalid && !isAllstate) { //BMall Admin && Enrollment Submitted && no Group ID\r\n message = 'Group ID Required';\r\n icon = warningIcon;\r\n } else { //Has Agent ID && one of: is not BMall Admin, enrollment is not submitted, has group ID\r\n if (useD2cNoSubmission && !isRenewal && !hasDocuments) {\r\n message = 'Upload Missing Documents';\r\n icon = warningIcon;\r\n } else {\r\n message = 'Form Complete';\r\n icon = checkIcon;\r\n }\r\n }\r\n }\r\n } else if (isAutoGen) { \r\n const isAutoGenValid = hasDocuments || isRenewal;\r\n\r\n if (isAutoGenValid) { //At least 1 document uploaded OR is a renewal\r\n message = `${this.props.content.documents.length} Document${this.props.content.documents.length !== 1 ? 's' : ''} Uploaded`\r\n icon = checkIcon;\r\n } else { \r\n message = 'Upload Missing Documents';\r\n icon = warningIcon;\r\n }\r\n }\r\n\r\n return
\r\n {icon}\r\n < span style={styles.status} >\r\n {message}\r\n \r\n
\r\n }\r\n\r\n handleMouseHover = () => {\r\n this.setState({ isHovering: true })\r\n }\r\n\r\n handleMouseLeave = () => {\r\n this.setState({ isHovering: false })\r\n }\r\n\r\n handleViewDocs = (event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n this.props.content.enrollmentKitURLs.forEach(x => {\r\n window.open(x.storageURL, \"_blank\");\r\n });\r\n }\r\n getBusinessType = (enrollmentTypeId: number) => {\r\n return getById(enrollmentTypeId);\r\n }\r\n\r\n render() {\r\n const multipleKits = this.props.content.enrollmentKitURLs && this.props.content.enrollmentKitURLs.length > 1;\r\n const isNewBusiness = this.props.content.enrollmentTypeId ===\r\n getLookupId('NEWBUSINESS', LOOKUP_TYPE_IDS.enrollmentType);\r\n const hasAdobeConfiguration = this.props.configurationTypeIds && this.props.configurationTypeIds.indexOf(60) > -1;\r\n const displayDigitalSignIcon = this.props.hasDigitalSignOptin && hasAdobeConfiguration && isNewBusiness;\r\n\r\n return (\r\n <>\r\n \r\n {this.props.content.carrierName} {displayDigitalSignIcon && \r\n \"Adobe }\r\n \r\n \r\n {this.getIcons().map(loc => {\r\n return ();\r\n })}\r\n \r\n \r\n {this.lookups[this.props.content.stateId].key}\r\n \r\n \r\n {this.getBusinessType(this.props.content.enrollmentTypeId)}\r\n \r\n \r\n {this.props.content.carrierCuttoffDt ? moment(this.props.content.carrierCuttoffDt).format('ll') : 'N/A'}\r\n \r\n \r\n {this.getStatusMessageDiv()}\r\n \r\n \r\n {this.props.content.enrollmentKitURLs && this.props.content.enrollmentKitURLs.length > 0 &&\r\n \r\n }\r\n \r\n \r\n );\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n hover: {\r\n backgroundColor: palette.grey.surface,\r\n cursor: 'pointer',\r\n },\r\n capitalize: {\r\n textTransform: 'capitalize'\r\n },\r\n carrier: {\r\n color: palette.blue.primary\r\n },\r\n greyIcon: {\r\n color: palette.grey.text,\r\n marginRight: 4\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary,\r\n marginRight: 4\r\n },\r\n status: {\r\n fontFamily: 'Roboto',\r\n fontSize: '.875rem',\r\n },\r\n statusDiv: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n toolbarLogo: {\r\n height: 20,\r\n display: 'inline-list-item',\r\n top: -6\r\n },\r\n\r\n};\r\n\r\nexport default withTableRow(withStyles(styles)(SubmitBenefitMallRow));","import { Button, DialogActions, DialogContent, DialogContentText, Table, TableBody, TableRow, TableCell, Paper } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { characterLimit, email, required } from '../../utility/form_validation';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport SaveButton from '../common/save_button';\r\nexport const FORM_NAME = 'DIGITAL_SIGN_EMAIL_ADDRESSES';\r\n\r\nexport type SetDigitalSignEmailFormData = {\r\n brokerEmail: string;\r\n employerEmail: string;\r\n};\r\n\r\ninterface ComponentProps {\r\n onCancel: () => void;\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps\r\n\r\nconst requiredBrokerEmail = required('Broker Email is required');\r\nconst requiredEmployerEmail = required('Employer Email is required');\r\nconst characterLimit1000 = characterLimit(1000);\r\n\r\nconst SetDigitalSignEmailForm = (props: Props) => {\r\n return (\r\n
\r\n \r\n \r\n Please enter the email address of the primary signatory who need to provide their signature for this enrollment. \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Broker Email Address\r\n \r\n \r\n\r\n \r\n \r\n \r\n Employer Email Address\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 Save Email Addresses\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n emailMain: {\r\n maxWidth: '600px',\r\n border: \"0\",\r\n width: \"100%\"\r\n }\r\n}\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME\r\n})(SetDigitalSignEmailForm);","import BaseDialog from 'components/common/base_dialog';\r\nimport React from 'react';\r\nimport SetDigitalSignEmailForm, { SetDigitalSignEmailFormData, FORM_NAME as DIGITALSIGNEMAILADDRESSESFORM } from './set_digital_sign_email_form';\r\n\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onCancel: () => void;\r\n onDone: (formValues: SetDigitalSignEmailFormData) => void;\r\n initialValues?: SetDigitalSignEmailFormData;\r\n\r\n}\r\n\r\ntype Props = ComponentProps;\r\n\r\nconst SetDigitalSignEmailDialog = (props: Props) => {\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SetDigitalSignEmailDialog;\r\n\r\n\r\n","import { Grid, Paper, Table, TableBody, TableCell, TableFooter, TableHead, TableRow, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { GroupSubmission, CarrierConfigurations, DigitalDocumentDTO} from 'redux/reducers';\r\nimport palette from '../../utility/palette';\r\nimport SubmitBenefitMallRow from './submit_benefitmall_row';\r\nimport { getCarrierConfigConfigurationTypes } from 'utility';\r\nimport SaveButton from 'components/common/save_button';\r\nimport SetDigitalSignEmailDialog from './set_digital_sign_email_dialog';\r\nimport SetDigitalSignEmailForm, { SetDigitalSignEmailFormData, FORM_NAME as DIGITALSIGNEMAILADDRESSESFORM } from './set_digital_sign_email_form';\r\n\r\ninterface Props\r\n {\r\n groupApplications: GroupSubmission[];\r\n isEnrollmentSubmitted: boolean;\r\n handleRowClick: (groupSubmissionId: string) => void;\r\n carrierConfigurations: CarrierConfigurations[];\r\n hasDigitalSignOptin: boolean;\r\n onSaveEmailAddresses: (brokerEmail: string, employerEmail: string) => void;\r\n emailAddressInitialValues?: SetDigitalSignEmailFormData;\r\n}\r\n\r\nconst SubmitBenefitMallTable = React.memo((props: Props) => {\r\n const [setDigitalSignEmailDialog, setSetDigitalSignEmailDialog] = React.useState(false);\r\n\r\n const handleEmailSubmit = async (emailData: SetDigitalSignEmailFormData) => {\r\n setSetDigitalSignEmailDialog(false)\r\n await props.onSaveEmailAddresses(emailData.brokerEmail, emailData.employerEmail)\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n Submit to BenefitMall\r\n \r\n \r\n {props.groupApplications.length} Carrier{props.groupApplications.length !== 1 && 's'}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Carrier\r\n \r\n \r\n Lines of Coverage\r\n \r\n \r\n Market\r\n \r\n \r\n Business Type\r\n \r\n \r\n Cut-Off Date\r\n \r\n \r\n Group Application Status\r\n \r\n \r\n Documents Link\r\n \r\n \r\n \r\n \r\n {\r\n props.groupApplications.map(gApp => {\r\n return \r\n })\r\n }\r\n \r\n {props.hasDigitalSignOptin &&\r\n \r\n \r\n \r\n \r\n setSetDigitalSignEmailDialog(true)}\r\n loading={false}\r\n >Email Addresses\r\n \r\n setSetDigitalSignEmailDialog(false)}\r\n onDone={(emailData: SetDigitalSignEmailFormData) => handleEmailSubmit(emailData)}\r\n initialValues={props.emailAddressInitialValues}\r\n />\r\n\r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n fontFamily: 'Roboto',\r\n fontSize: 20,\r\n fontWeight: 500,\r\n color: palette.grey.text\r\n },\r\n subheader: {\r\n color: palette.grey.text,\r\n fontSize: 14\r\n },\r\n headerDiv: {\r\n paddingTop: 16,\r\n paddingRight: 24,\r\n paddingLeft: 24\r\n },\r\n paper: {\r\n marginBottom: 24,\r\n marginTop: -20\r\n }\r\n}\r\n\r\nexport default SubmitBenefitMallTable\r\n\r\n","import { CircularProgress } from '@material-ui/core';\r\nimport memoizeOne from 'memoize-one';\r\nimport { dequal as isDeepEqual } from 'dequal';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport Title from 'components/common/title';\r\nimport SubmitSeparateTable from 'components/group_applications/submit_separate_table';\r\nimport { fetchEnrollment, fetchGroupSubmissions, fetchPlans, fetchDigitalDocuments, saveDigitalDocEmailAddress } from 'redux/actions';\r\nimport { EnrollmentDTO, EnrollmentReducerState, GroupSubmission, GroupSubmissionReducerState, PlanReducerState, Plan, CarrierConfigurations } from 'redux/reducers';\r\nimport BasePage from '../../components/common/base_page';\r\nimport Breadcrumb from '../../components/common/breadcrumb';\r\nimport SubmitBenefitMallTable from '../../components/group_applications/submit_benefitmall_table';\r\nimport { ReduxState } from '../../redux/store';\r\nimport routes from '../../router/routes';\r\nimport { getCarrierConfigurations,missingAdobeSignatory } from 'utility';\r\nimport { SetDigitalSignEmailFormData } from '../../components/group_applications/set_digital_sign_email_form';\r\n\r\ninterface ComponentProps { }\r\ninterface MappedProps {\r\n companyName: string | undefined;\r\n groupApplicationState: GroupSubmissionReducerState;\r\n enrollmentState: EnrollmentReducerState;\r\n planState: PlanReducerState;\r\n\r\n}\r\ninterface DispatchProps {\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n fetchGroupSubmissions: (companyId: string, enrollmentId: string) => Promise;\r\n fetchPlans: (companyId: string, enrollmentId: string) => Promise;\r\n saveDigitalDocEmailAddress: (enrollment: EnrollmentDTO) => Promise;\r\n fetchDigitalDocuments: (companyId: string, enrollmentId: string) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps & DispatchProps & RouteComponentProps;\r\n\r\ninterface State {\r\n loading: boolean;\r\n carrierConfigurations: CarrierConfigurations[];\r\n openSetDigitalSignEmailDialog: boolean;\r\n}\r\n\r\nclass GroupApplicationList extends React.PureComponent{\r\n breadCrumb = ['Dashboard', 'Group Applications'];\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n carrierConfigurations: [],\r\n openSetDigitalSignEmailDialog: false\r\n };\r\n }\r\n handleSaveEmailAddresses = (brokerEmail: string, employerEmail: string) => {\r\n this.setState({\r\n openSetDigitalSignEmailDialog: false,\r\n loading: true\r\n });\r\n const enrollmentPayload: EnrollmentDTO = {\r\n ...this.props.enrollmentState,\r\n effectiveDate: this.props.enrollmentState.effectiveDate ? this.props.enrollmentState.effectiveDate : undefined,\r\n startDate: this.props.enrollmentState.startDate ? this.props.enrollmentState.startDate.utc().format() : undefined,\r\n endDate: this.props.enrollmentState.endDate ? this.props.enrollmentState.endDate.utc().format() : undefined,\r\n setupCompletedOn: this.props.enrollmentState.setupCompletedOn ? this.props.enrollmentState.setupCompletedOn.utc().format() : undefined,\r\n submissionDate: this.props.enrollmentState.submissionDate ? this.props.enrollmentState.submissionDate.utc().format() : undefined,\r\n brokerEmail: brokerEmail,\r\n employerEmail: employerEmail\r\n };\r\n this.props.saveDigitalDocEmailAddress(enrollmentPayload).then(this.done, this.done);\r\n };\r\n\r\n done = () => this.setState({ loading: false });\r\n\r\n handleCancelSetDigitalSignEmail = () => {\r\n this.setState({ openSetDigitalSignEmailDialog: false });\r\n }\r\n openSetDigitalSignEmailDialog = () => {\r\n this.setState({ openSetDigitalSignEmailDialog: true });\r\n }\r\n\r\n emailAddressInitialValues = () => {\r\n const isMissingAdobeSignatory = missingAdobeSignatory(this.props.planState.configurationTypeSet, this.props.enrollmentState);\r\n const authorizedSignatory =\r\n this.props.enrollmentState.companyContacts.find(x => x.isAuthorizedSignatory === true);\r\n var brokerEmail =\r\n (this.props.enrollmentState.brokerEmail === undefined || this.props.enrollmentState.brokerEmail === '')\r\n ? this.props.enrollmentState.broker.email\r\n : this.props.enrollmentState.brokerEmail;\r\n var employerEmail = this.props.enrollmentState.employerEmail === undefined && !isMissingAdobeSignatory && authorizedSignatory != null\r\n ? authorizedSignatory.email\r\n : this.props.enrollmentState.employerEmail;\r\n return {\r\n brokerEmail: brokerEmail ,\r\n employerEmail:employerEmail\r\n } as SetDigitalSignEmailFormData;\r\n }\r\n\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n if (!this.props.companyName) {\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n }\r\n const allGroupAppsUpdated = this.getGroupApplicationDBStatus(this.props.groupApplicationState.list);\r\n this.props.groupApplicationState.groupSubmissionProcessComplete = allGroupAppsUpdated;\r\n\r\n if (this.props.groupApplicationState.list.length === 0 || allGroupAppsUpdated === false) { \r\n promises.push(this.props.fetchGroupSubmissions(this.companyId, this.enrollmentId));\r\n }\r\n \r\n if (this.props.planState.list.length === 0) {\r\n promises.push(this.props.fetchPlans(this.companyId, this.enrollmentId));\r\n }\r\n Promise.all(promises).then(this.onLoadComplete, this.loadingOff);\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n const promises: Promise[] = [];\r\n if (\r\n !!this.props.enrollmentState.id &&\r\n !prevProps.enrollmentState.id\r\n ) {\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n }\r\n }\r\n\r\n\r\n onLoadComplete = () => {\r\n const configs = getCarrierConfigurations(this.props.planState.list);\r\n this.setState({ carrierConfigurations: configs, loading: false });\r\n }\r\n\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n get companyId() {\r\n return this.props.match.params[routes.groupApplication.params!.companyId!.replace(':', '')];\r\n }\r\n\r\n get enrollmentId() {\r\n return this.props.match.params[routes.groupApplication.params!.enrollmentId!.replace(':', '')];\r\n }\r\n\r\n getGroupApplicationDBStatus = memoizeOne((list: GroupSubmission[]) => {\r\n var allAppsUpdated = true;\r\n\r\n list.forEach(gApp => {\r\n if (gApp.salesForceDataUpdated === false)\r\n allAppsUpdated = false;\r\n }\r\n )\r\n return allAppsUpdated;\r\n }, isDeepEqual);\r\n\r\n getOtherGroupApplications = memoizeOne((list: GroupSubmission[]) => {\r\n return list.filter(gApp => gApp.enrollmentSubmissionMechanism !== 'ExportOnly')\r\n }, isDeepEqual);\r\n\r\n getExportOnlyGroupApplications = memoizeOne((list: GroupSubmission[]) => {\r\n return list.filter(gApp => gApp.enrollmentSubmissionMechanism === 'ExportOnly' && gApp.isDigitalDocument === false);\r\n }, isDeepEqual);\r\n\r\n handlePageChange = (index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n };\r\n\r\n handleRowClick = (groupSubmissionId: string) => {\r\n const { path, params } = routes.enrollmentKits;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId).replace(params!.groupSubmissionId!, groupSubmissionId);\r\n this.props.history.push(route);\r\n };\r\n\r\n \r\n render() {\r\n const { loading, carrierConfigurations } = this.state;\r\n \r\n return (\r\n \r\n {loading ?\r\n
\r\n

Loading your information

\r\n \r\n
\r\n :\r\n <>\r\n {this.props.companyName}\r\n \r\n {this.getOtherGroupApplications(this.props.groupApplicationState.list).length > 0 &&\r\n \r\n }\r\n {this.getExportOnlyGroupApplications(this.props.groupApplicationState.list).length > 0 &&\r\n \r\n }\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n companyName: state.enrollment.company.name,\r\n groupApplicationState: state.groupSubmission,\r\n enrollmentState: state.enrollment,\r\n planState: state.plan\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n fetchEnrollment: (enrollmentId) => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchGroupSubmissions: (companyId, enrollmentId) => dispatch(fetchGroupSubmissions(companyId, enrollmentId)),\r\n fetchPlans: (companyId, enrollmentId) => dispatch(fetchPlans(companyId, enrollmentId)),\r\n saveDigitalDocEmailAddress: (enrollment) => dispatch(saveDigitalDocEmailAddress(enrollment)),\r\n fetchDigitalDocuments: (companyId, enrollmentId) => dispatch(fetchDigitalDocuments(companyId, enrollmentId)),\r\n \r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(GroupApplicationList);","import * as React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport SaveButton from 'components/common/save_button';\r\n\r\nexport interface AbandonChanges {\r\n setNextProps: (props?: AbandonChangesProps) => void;\r\n}\r\n\r\nconst AbandonChangesContext = React.createContext({\r\n setNextProps: () => { }\r\n});\r\n\r\ntype handler = (...args: any) => void\r\ntype action = (...args: any) => void\r\ntype guard = (action: action) => handler\r\ninterface ProviderProps {\r\n children: (guard: guard) => React.ReactNode,\r\n onGuard: (...args: any) => void;\r\n}\r\nexport const AbandonChangesGuard = ({ children, onGuard }: ProviderProps) => {\r\n const [abandonChanges, setAbandonChanges] = React.useState(undefined)\r\n const [open, setOpen] = React.useState(false)\r\n\r\n const [{ onSaveButtonClicked, onCancelButtonClicked, onDiscardButtonClicked }, setDialogHandlers] = React.useState({\r\n onSaveButtonClicked: () => { },\r\n onCancelButtonClicked: () => { },\r\n onDiscardButtonClicked: () => { }\r\n })\r\n\r\n const guard: guard = (action: action) => (...args: any) => {\r\n if (abandonChanges && abandonChanges.isDirty) {\r\n // defer the action if state is dirty\r\n setDialogHandlers({\r\n onSaveButtonClicked: () => {\r\n // stay on the page and call the save handler\r\n abandonChanges && abandonChanges.onSave();\r\n },\r\n onDiscardButtonClicked: () => {\r\n // do the action and close the dialog\r\n action(...args);\r\n setOpen(false);\r\n },\r\n onCancelButtonClicked: () => {\r\n // do nothing - close the dialog\r\n onGuard(undefined);\r\n setOpen(false);\r\n }\r\n })\r\n onGuard(...args);\r\n setOpen(true);\r\n } else {\r\n // do the action\r\n action(...args)\r\n }\r\n }\r\n\r\n return <>\r\n {\r\n if (props) {\r\n // update props\r\n setAbandonChanges({\r\n ...abandonChanges,\r\n ...props\r\n })\r\n } else {\r\n // clear props, close modal\r\n setAbandonChanges(undefined)\r\n setOpen(false)\r\n }\r\n },\r\n }}>\r\n {children(guard)}\r\n \r\n \r\n \r\n {abandonChanges && abandonChanges.isValid ?\r\n You have unsaved changes{abandonChanges && abandonChanges.locationLabel ? on {abandonChanges.locationLabel} : <>}. Do you want to save?

If you do not save, your changes will be lost.
\r\n :\r\n You have unsaved changes{abandonChanges && abandonChanges.locationLabel ? on {abandonChanges.locationLabel} : <>}. Do you wish to continue?\r\n }\r\n
\r\n
\r\n \r\n {!(abandonChanges && abandonChanges.isValid) &&\r\n \r\n CANCEL\r\n \r\n }\r\n \r\n {abandonChanges && abandonChanges.isValid ? \"DON'T SAVE\" : \"DISCARD CHANGES\"}\r\n \r\n {abandonChanges && abandonChanges.isValid &&\r\n \r\n SAVE\r\n \r\n }\r\n \r\n \r\n
\r\n \r\n}\r\n\r\ninterface AbandonChangesProps {\r\n isSubmitting: boolean;\r\n isValid: boolean;\r\n isDirty: boolean;\r\n locationLabel: string;\r\n onSave: () => void;\r\n}\r\n\r\nexport default (props: AbandonChangesProps) => {\r\n // Wire up props to context\r\n const {\r\n setNextProps,\r\n } = React.useContext(AbandonChangesContext)\r\n\r\n React.useEffect(() => {\r\n // copy props over to the provider\r\n setNextProps(props)\r\n // eslint-disable-next-line\r\n }, [props.onSave, props.isDirty, props.isSubmitting, props.isValid, props.locationLabel])\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n // clear the provider's props on dismount\r\n setNextProps(undefined)\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n return <>\r\n \r\n}","import {\r\n CostCalculation,\r\n Election\r\n} from 'redux/reducers';\r\nimport memoizeOne from 'memoize-one';\r\nimport { getLookups } from 'utility';\r\n\r\nclass EnrollmentSummaryUtil {\r\n lookups: any;\r\n constructor() {\r\n }\r\n private _getContributionSummary = memoizeOne((costs: CostCalculation[], elections: Election[], employeeId: string) => {\r\n const validElections = elections.filter((election: Election) => !!election.planId || !election.isWaived);\r\n let contributions: CostCalculation[] = [];\r\n let employeeTotal = 0;\r\n let employerTotal = 0;\r\n costs.filter(cost =>\r\n cost.enrolleeId === employeeId &&\r\n validElections.filter((election: any) =>\r\n election.planId === cost.planId &&\r\n election.employeeId === employeeId\r\n ).length > 0\r\n )\r\n .forEach(cost => {\r\n contributions.push(cost);\r\n employeeTotal += cost.employeeCost;\r\n employerTotal += cost.employerCost;\r\n });\r\n return { employeeTotal: employeeTotal, employerTotal: employerTotal, contributions: contributions };\r\n });\r\n\r\n private _getPlanCost = memoizeOne((costs: CostCalculation[], planId: string) => {\r\n return costs.find(c => c.planId === planId);\r\n });\r\n\r\n getContributionSummary(costs: CostCalculation[], elections: Election[], employeeId: string) {\r\n return this._getContributionSummary(costs, elections, employeeId);\r\n }\r\n\r\n getPlanCost = (costs: CostCalculation[], planId: string) => {\r\n return costs && planId ? this._getPlanCost(costs, planId) : undefined;\r\n }\r\n\r\n private _getWaivedElections = memoizeOne((elections: Election[]) => {\r\n return elections.filter(e => e.isWaived);\r\n });\r\n\r\n getWaivedElections = (elections: Election[]) => {\r\n return this._getWaivedElections(elections);\r\n }\r\n\r\n private _getNonWaivedElections = memoizeOne((elections: Election[]) => {\r\n return elections.filter(e => !e.isWaived);\r\n });\r\n\r\n getNonWaivedElections = (elections: Election[]) => {\r\n return this._getNonWaivedElections(elections);\r\n }\r\n\r\n private _getPayPeriodDescription = memoizeOne((payrollCycleId?: number) => {\r\n if (this.lookups === undefined) {\r\n this.lookups = getLookups();\r\n }\r\n const payPeriod = !!payrollCycleId\r\n ? this.lookups[payrollCycleId!].value\r\n : ' per pay period';\r\n\r\n return payPeriod;\r\n });\r\n\r\n getPayPeriodDescription(payrollCycleId?: number) {\r\n return this._getPayPeriodDescription(payrollCycleId);\r\n }\r\n\r\n}\r\n\r\nvar enrollmentSummaryUtil = new EnrollmentSummaryUtil();\r\nexport default enrollmentSummaryUtil;","import React from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { Grid, Typography, StyledComponentProps } from '@material-ui/core';\r\nimport palette from 'utility/palette';\r\nimport { WithWidth } from '@material-ui/core/withWidth';\r\nimport { CostCalculationReducerState, Company, Election, Employee } from 'redux/reducers';\r\nimport { companySettings, formatCurrency } from 'utility';\r\nimport enrollmentSummaryUtil from 'utility/enrollment_summary_util';\r\n\r\ninterface ComponentProps {\r\n costCalculation: CostCalculationReducerState;\r\n employee: Employee | undefined;\r\n currentElection?: Election | null;\r\n company: Company;\r\n isHidden: boolean;\r\n}\r\n\r\ntype Props = ComponentProps & StyledComponentProps & WithWidth;\r\n\r\nconst ElectionCostSummary = (props: Props) => {\r\n const electionSummaryWrapper = {\r\n padding: '10px',\r\n marginTop: '10px'\r\n };\r\n const text = {\r\n color: palette.grey.text\r\n };\r\n const employeeCostText = {\r\n fontSize: '1.1rem'\r\n };\r\n\r\n const isMobile = ['xs', 'sm'].includes(props.width);\r\n if (isMobile || !props.employee) {\r\n return <>;\r\n }\r\n\r\n const companyLevelSetting = companySettings(props.company);\r\n const showEmployeeCost = companyLevelSetting.viewEmployeeCost;\r\n const showEmployerCost = companyLevelSetting.viewEmployerCost;\r\n\r\n const showSummary =\r\n !props.isHidden && !isMobile && (showEmployeeCost || showEmployerCost);\r\n\r\n if (!showSummary) {\r\n return <>;\r\n }\r\n\r\n var currentElections = props.employee.elections;\r\n if (props.currentElection) {\r\n const overrideExistingElection = props.employee.elections.find(election => props.currentElection && props.currentElection.id === election.id)\r\n if (overrideExistingElection) {\r\n currentElections = props.employee.elections.map((election: Election) => {\r\n if (props.currentElection && props.currentElection.id === election.id) {\r\n return { ...props.currentElection }\r\n }\r\n else return election;\r\n })\r\n } else {\r\n currentElections = [\r\n ...props.employee.elections,\r\n props.currentElection\r\n ]\r\n }\r\n }\r\n\r\n const contributionSummary = enrollmentSummaryUtil.getContributionSummary(\r\n props.costCalculation.list,\r\n currentElections,\r\n props.employee.id\r\n );\r\n const employeeContribution = contributionSummary.employeeTotal;\r\n const employerContribution = contributionSummary.employerTotal;\r\n\r\n const payPeriod = enrollmentSummaryUtil.getPayPeriodDescription(\r\n props.employee.payrollCycleId\r\n );\r\n\r\n return (\r\n <>\r\n \r\n {showEmployeeCost ? (\r\n <>\r\n \r\n \r\n You pay\r\n \r\n \r\n \r\n {formatCurrency(employeeContribution)}\r\n \r\n \r\n {payPeriod}\r\n \r\n \r\n \r\n \r\n ) : (\r\n undefined\r\n )}\r\n \r\n {showEmployerCost ? (\r\n <>\r\n \r\n Employer pays\r\n \r\n \r\n \r\n {`${formatCurrency(employerContribution)}`}\r\n \r\n \r\n {payPeriod}\r\n \r\n \r\n \r\n ) : (\r\n undefined\r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ElectionCostSummary;\r\n","import SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\nimport React from 'react';\r\nimport WrappedTooltip from '../wrapped_tool_tip';\r\n\r\ninterface Props extends SvgIconProps {\r\n onClick: () => void,\r\n style?: React.CSSProperties;\r\n tooltipTitle?: string;\r\n}\r\n\r\nconst Print = (props: Props) => {\r\n return (\r\n \r\n \r\n \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default Print;","import { Paper, Table, TableBody, TableCell, TableFooter, TableHead, TableRow } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport withTableRow from '../common/table_row_hoc';\r\nimport { FormBeneficiary } from '../forms/beneficiaries_form';\r\nimport DeleteDialog from \"../common/delete_dialog\";\r\n\r\ninterface Props extends StyledComponentProps, Partial> {\r\n title: string | JSX.Element;\r\n beneficiaries: FormBeneficiary[];\r\n enrollmentSubmitted: boolean;\r\n onClick: (id: string) => void;\r\n onDelete: (id: string, name: string) => void;\r\n}\r\n\r\nconst BeneficiariesTable = React.memo(({ title, beneficiaries, enrollmentSubmitted, onClick, onDelete, classes = {}, width }: Props) => {\r\n const lookups = React.useMemo(getLookups, []);\r\n const beneficiariesCount = React.useMemo(() => beneficiaries.reduce((acc, ben) => acc + (ben.benefitPercentage || 0), 0), [beneficiaries]);\r\n const mobile = width === 'xs';\r\n let deleteInfo = [\"Beneficiary\", \"Beneficiary info and Percentage assignment\"]\r\n\r\n const [state, setState] = React.useState({\r\n deleteDialogOpen: false,\r\n idToDelete: '',\r\n nameToDelete: '',\r\n })\r\n\r\n const { deleteDialogOpen, idToDelete, nameToDelete } = state;\r\n\r\n const handleDeleteConfirmed = () => {\r\n idToDelete && onDelete(idToDelete, nameToDelete || '');\r\n handleDeleteCancelled();\r\n };\r\n\r\n const handleDeleteOpened = (id: string, name: string) => {\r\n setState({ deleteDialogOpen: true, idToDelete: id, nameToDelete: name});\r\n }\r\n\r\n const handleDeleteCancelled = () => {\r\n setState({ deleteDialogOpen: false, idToDelete: '', nameToDelete: '' });\r\n };\r\n\r\n return (\r\n \r\n
{title}
\r\n {beneficiaries.length > 0 &&\r\n \r\n \r\n \r\n Name\r\n Relationship\r\n Percentage of Benefit\r\n \r\n \r\n \r\n \r\n {beneficiaries.map(ben => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n {beneficiariesCount !== 100 &&\r\n
\r\n \r\n Total must be 100%\r\n
\r\n }\r\n
\r\n \r\n
\r\n Total\r\n
\r\n
\r\n \r\n
\r\n {beneficiariesCount}%\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\ninterface BeneficiaryRowProps { name: string; relationship: string; percentage: number }\r\nconst BeneficiaryRow = withTableRow(React.memo(({ name, relationship, percentage }: BeneficiaryRowProps) => {\r\n return (\r\n <>\r\n {name}\r\n {relationship}\r\n {percentage}%\r\n \r\n );\r\n}));\r\n\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n paper: {\r\n margin: '15px 0',\r\n padding: 20\r\n },\r\n text: {\r\n color: palette.grey.text\r\n },\r\n header: {\r\n fontFamily: 'Roboto',\r\n fontSize: 20,\r\n fontWeight: 500,\r\n },\r\n subheader: {\r\n fontSize: 14\r\n },\r\n mobileTable: {\r\n width: 280,\r\n overflowX: 'auto'\r\n },\r\n warningText: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n fontSize: 14\r\n },\r\n warningIcon: {\r\n fontSize: 20,\r\n marginRight: 10,\r\n color: palette.orange.primary\r\n },\r\n warningCount: {\r\n fontWeight: 700,\r\n fontSize: 16\r\n },\r\n nameCell: {\r\n color: palette.blue.primary\r\n },\r\n footer: {\r\n borderTop: `3px ${palette.grey.border} solid`\r\n }\r\n};\r\n\r\nexport default withWidth()(withStyles(styles)(BeneficiariesTable));","import { Button, DialogActions, DialogContent, FormControlLabel, Grid, InputAdornment, makeStyles, Radio, TextField } from '@material-ui/core';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport Help from '@material-ui/icons/Help';\r\nimport BeneficiariesTable from 'components/employee/beneficiaries_table';\r\nimport React from 'react';\r\nimport { Field, FieldArray, InjectedFormProps, reduxForm, WrappedFieldArrayProps } from 'redux-form';\r\nimport { Beneficiary, Dependent } from 'redux/reducers';\r\nimport { formatPhone, formatSSN, formatZip } from 'utility/form_formatter';\r\nimport { convertToInteger, convertToMoment, convertToNumber, convertToString, normalizeDigits, normalizeSSN, normalizeZIP } from 'utility/form_normalization';\r\nimport { characterLimit, greaterThanZeroPercentage, phone, required, ssn, validPastDate, zip } from 'utility/form_validation';\r\nimport { getBeneficiaryTypes, getBeneficiaryRelationship, getLookupId, getStates, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../..//utility/common_styles';\r\nimport BaseDialog from '../common/base_dialog';\r\nimport { DatePickerField, RadioControlGroupField, SSNTextFormField, TextFormField } from '../common/reduxform_fields';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\nexport const FORM_NAME = 'BENEFICIARIES';\r\n\r\nexport interface FormBeneficiary extends Beneficiary {\r\n tempId?: string;\r\n}\r\n\r\nexport type FormData = { beneficiaries: FormBeneficiary[] };\r\n\r\ninterface ComponentProps {\r\n dependents?: Dependent[];\r\n onDelete: (id: string) => Promise;\r\n isAllstateOffered: boolean;\r\n}\r\ntype FormProps = ComponentProps & InjectedFormProps & WithWidth;\r\n\r\nconst uniqueSsn = (_value: any, formValues: FormData) => {\r\n if (formValues.beneficiaries === undefined)\r\n return undefined;\r\n\r\n const duplicateSSN = formValues.beneficiaries\r\n .filter(ben => ben.ssn && ben.ssn === _value)\r\n .length > 1;\r\n\r\n return duplicateSSN ? 'Another beneficiary already has this SSN' : undefined;\r\n}\r\n\r\nconst BeneficiariesForm = React.memo((props: FormProps) => {\r\n return (\r\n
\r\n \r\n \r\n );\r\n});\r\n\r\nconst useStyles = makeStyles({\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n buttonMargin: {\r\n margin: 4\r\n },\r\n buttonMarginMobile: {\r\n margin: '15px 4px'\r\n },\r\n subheader: {\r\n color: palette.grey.text,\r\n marginBottom: 15\r\n },\r\n endAdornment: {\r\n paddingRight: 11\r\n },\r\n orLineBreak: {\r\n lineHeight: '1em',\r\n position: 'relative',\r\n outline: 0,\r\n border: 0,\r\n color: palette.grey.text,\r\n textAlign: 'center',\r\n height: '1.5em',\r\n marginTop: 15,\r\n marginBottom: 15,\r\n '&:before': {\r\n content: `\"\"`,\r\n background: 'linear-gradient(to right, transparent, #818078, transparent)',\r\n position: 'absolute',\r\n left: 0,\r\n top: 10,\r\n width: '100%',\r\n height: '1px'\r\n },\r\n '&:after': {\r\n content: `\"OR\"`,\r\n position: 'relative',\r\n display: 'inline-block',\r\n padding: '0 .5em',\r\n lineHeight: '1.5em',\r\n color: palette.grey.text,\r\n backgroundColor: '#fff'\r\n }\r\n }\r\n});\r\n\r\ninterface FieldArrayProps extends WrappedFieldArrayProps {\r\n invalid: boolean;\r\n dependents?: Dependent[];\r\n enrollmentSubmitted: boolean;\r\n onDelete: (id: string) => Promise;\r\n touch(...field: string[]): void;\r\n change(field: string, value: any): void;\r\n isAllstateOffered: boolean;\r\n}\r\nconst BeneficiariesFieldArray: React.FunctionComponent = React.memo((props: FieldArrayProps) => {\r\n const { fields, onDelete, touch } = props;\r\n const [dialogOpen, setDialogOpen] = React.useState(false);\r\n const [isAdding, setIsAdding] = React.useState(false);\r\n const [editingIndex, setEditingIndex] = React.useState(-1);\r\n const [cachedBeneficiary, setCachedBeneficiary] = React.useState(undefined);\r\n\r\n const dependents = props.dependents || [];\r\n const beneficiaries = React.useMemo(props.fields.getAll, [props.fields]) || [];\r\n const primaryBeneficiaryTypeId = React.useMemo(() => getLookupId('PRIMARY', LOOKUP_TYPE_IDS.beneficiaryType), []);\r\n const primaryBeneficiaries = React.useMemo(() => beneficiaries.filter(ben => ben.beneficiaryTypeId === primaryBeneficiaryTypeId), [beneficiaries, primaryBeneficiaryTypeId]);\r\n const contingentBeneficiaries = React.useMemo(() => beneficiaries.filter(ben => ben.beneficiaryTypeId !== primaryBeneficiaryTypeId), [beneficiaries, primaryBeneficiaryTypeId]);\r\n const rootName = `${props.fields.name}[${editingIndex}]`;\r\n const primaryTooltip = 'A primary beneficiary is the first to receive the benefit payment upon your death.';\r\n const contingentTooltip = 'A contingent beneficiary will only receive the benefit payment if the primary beneficiary(ies) dies before you or is not legally able to accept the benefit.';\r\n\r\n const handleAddClick = React.useCallback(() => {\r\n const d = new Date();\r\n const newBeneficiary: Partial = {\r\n id: '',\r\n tempId: d.toTimeString() + d.getMilliseconds().toString(),\r\n firstName: '',\r\n lastName: '',\r\n beneficiaryTypeId: primaryBeneficiaryTypeId,\r\n benefitPercentage: 0\r\n };\r\n props.fields.insert(beneficiaries.length, newBeneficiary as FormBeneficiary);\r\n setEditingIndex(beneficiaries.length);\r\n setDialogOpen(true);\r\n setIsAdding(true);\r\n }, [beneficiaries, props.fields, primaryBeneficiaryTypeId]);\r\n\r\n const handleDialogCancel = React.useCallback(() => {\r\n props.fields.remove(editingIndex);\r\n if (!isAdding && cachedBeneficiary) {\r\n props.fields.insert(editingIndex, cachedBeneficiary);\r\n setCachedBeneficiary(undefined);\r\n }\r\n setDialogOpen(false);\r\n }, [editingIndex, cachedBeneficiary, isAdding, props.fields]);\r\n\r\n const handleDeleteClick = React.useCallback(async (id: string, tempId: string) => {\r\n const index = beneficiaries.findIndex(ben => (ben.id && ben.id === id) || (ben.tempId === tempId));\r\n if (index > -1) {\r\n const field = fields.get(index);\r\n if (field.id)\r\n await onDelete(field.id);\r\n fields.remove(index);\r\n }\r\n }, [beneficiaries, fields, onDelete]);\r\n\r\n const handleRowClick = React.useCallback((id: string) => {\r\n const index = beneficiaries.findIndex(ben => (ben.id && ben.id === id) || (ben.tempId === id));\r\n if (index > -1) {\r\n setEditingIndex(index);\r\n setDialogOpen(true);\r\n setIsAdding(false);\r\n setCachedBeneficiary(props.fields.get(index));\r\n }\r\n }, [beneficiaries, props.fields]);\r\n\r\n React.useEffect(() => {\r\n if (editingIndex !== -1 && beneficiaries[editingIndex] && beneficiaries[editingIndex].ssn) {\r\n const fieldNames = [`${rootName}.ssn`];\r\n touch(...fieldNames);\r\n }\r\n }, [editingIndex, touch, rootName, beneficiaries]);\r\n\r\n const classes = useStyles();\r\n\r\n const handleDependentSelected = (value: any) => {\r\n var dep = dependents.find(function (dependent) {\r\n return dependent.fullName === value;\r\n });\r\n\r\n if (dep !== undefined) {\r\n props.change(`${rootName}.firstName`, dep.firstName);\r\n props.change(`${rootName}.lastName`, dep.lastName);\r\n props.change(`${rootName}.dependentTypeId`, dep.dependentTypeId);\r\n props.change(`${rootName}.ssn`, dep.ssn);\r\n props.change(`${rootName}.dateOfBirth`, dep.dateOfBirth);\r\n props.change(`${rootName}.contactInformation[0].streetAddress1`, dep.contactInformation[0].streetAddress1);\r\n props.change(`${rootName}.contactInformation[0].streetAddress2`, dep.contactInformation[0].streetAddress2);\r\n props.change(`${rootName}.contactInformation[0].city`, dep.contactInformation[0].city);\r\n props.change(`${rootName}.contactInformation[0].county`, dep.contactInformation[0].county);\r\n props.change(`${rootName}.contactInformation[0].stateId`, dep.contactInformation[0].stateId);\r\n props.change(`${rootName}.contactInformation[0].zipCode`, dep.contactInformation[0].zipCode);\r\n props.change(`${rootName}.contactInformation[0].phone`, dep.contactInformation[0].phone);\r\n }\r\n };\r\n\r\n const handleDialogOK = React.useCallback(() => { setDialogOpen(false); }, []);\r\n const validateRequired = React.useCallback(required('This field is required'), []);\r\n const renderTitle = React.useCallback((title: string, tooltip: string) => {\r\n return ({title} } />)\r\n }, []);\r\n const characterLimit100 = React.useCallback(characterLimit(100), []);\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 isAdding && props.dependents && props.dependents.length > 0 &&\r\n (\r\n <>\r\n {\r\n handleDependentSelected(event.target.value);\r\n }}\r\n >\r\n \r\n {dependents.map(val => (\r\n \r\n ))}\r\n
\r\n
\r\n \r\n )\r\n }\r\n
Enter the beneficiary information below.
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {getBeneficiaryRelationship(props.isAllstateOffered).map(val => (\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\n \r\n \r\n \r\n \r\n {getStates().map(val => (\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 Beneficiary Type } />\r\n
\r\n \r\n {getBeneficiaryTypes().map(lookup =>\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 reduxForm({ form: FORM_NAME, enableReinitialize: true })(withWidth()(BeneficiariesForm));","import { FormControlLabel, Radio, RadioGroup, Typography } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport withStyles, { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector, change, getFormSyncErrors, FormErrors } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { convertToNumber, normalizeHeight, normalizeHeightInches, convertToMoment } from 'utility/form_normalization';\r\nimport { generateLabel } from 'utility/form_utils';\r\nimport { nonNegativeNumber, required, requiredForSubmission, validPastDate } from 'utility/form_validation';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { getLookupId, getMedicareEligibilityStatus, getStudentStatus, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport { CheckboxField, TextFormField, DatePickerField } from '../common/reduxform_fields';\r\nimport palette from 'utility/palette';\r\nimport { FormData } from './employee_additional_info_form';\r\nimport moment from 'moment';\r\nimport { hasPersonAdditionalInfo } from 'utility/employee_utils';\r\n\r\nexport type FieldData = {\r\n disability?: boolean;\r\n incapacitated?: boolean;\r\n tobaccoUsedNicotine?: boolean;\r\n tobaccoUsedeCigarette?: boolean;\r\n tobacco21UsedTobacco?: boolean;\r\n heightFeet?: number;\r\n heightInches?: number;\r\n weight?: number;\r\n student: number;\r\n isMedicareEligible?: boolean;\r\n schoolId: string;\r\n schoolName: string;\r\n medicareEligibility: number;\r\n marriageDate?: moment.Moment;\r\n maidenName: string;\r\n differentLastNameReason: string;\r\n nameChange: boolean;\r\n contactChange: boolean;\r\n addressChange: boolean;\r\n};\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n rootName: string;\r\n index: number;\r\n fullName: string;\r\n employeeLastName: string;\r\n lastNameDependent: string;\r\n spouseFullName?: string;\r\n maritalStatusId?: number;\r\n isSpouseFound: boolean;\r\n isChild: boolean;\r\n isSpouse: boolean;\r\n tobaccoUse: boolean;\r\n age: number;\r\n configurationTypeSet: Set;\r\n isAnyCarrierRenewal: boolean;\r\n displayRenewal: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n isStudent: boolean;\r\n isMedicareEligble?: boolean;\r\n medicareError: string;\r\n}\r\n\r\ninterface DispatchProps {\r\n changeIsMedicareEligible: (field: string, value: any) => void;\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps, DispatchProps { }\r\n\r\nconst EmployeeAdditionalFields = React.memo((props: Props) => {\r\n const nativeSelect = React.useMemo(() => ({ native: true }), []);\r\n const onMedicareCoveredRadio = React.useCallback((_event: any, checked: string) => {\r\n props.changeIsMedicareEligible(`${props.rootName}.isMedicareEligible`, checked === \"1\")\r\n }, []);\r\n React.useEffect(() => {\r\n if (props.configurationTypeSet.has(2) && props.isMedicareEligble === undefined) {\r\n props.changeIsMedicareEligible(`${props.rootName}.isMedicareEligible`, false)\r\n }\r\n }, [props.configurationTypeSet])\r\n const validateRequired = React.useCallback(required('This field is required'), []);\r\n const validateDepLastNameMismatch = required('Explanation is required');\r\n const marriage = getLookupId('MARRIED', LOOKUP_TYPE_IDS.maritalStatus);\r\n const isMarriageDateReqd = props.maritalStatusId ? (props.maritalStatusId === marriage) : false;\r\n const isChildLastNameDiff = !props.isSpouse && props.employeeLastName && props.lastNameDependent && props.lastNameDependent.toUpperCase() !== props.employeeLastName.toUpperCase() ? true : false;\r\n const show = hasPersonAdditionalInfo(props.configurationTypeSet, props.tobaccoUse, props.isSpouse, props.isChild, isChildLastNameDiff) || (props.displayRenewal && props.isAnyCarrierRenewal);\r\n\r\n if (show)\r\n return (\r\n \r\n
\r\n

{props.fullName}

\r\n
\r\n {props.configurationTypeSet.has(47) && props.displayRenewal &&\r\n \r\n \r\n Personal Information Change\r\n Select any personal information that has changed for {props.fullName} since last year:\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 {props.configurationTypeSet.has(1) &&\r\n <>\r\n
\r\n \r\n \r\n Disability\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {props.tobaccoUse && [6, 7, 11].some(i => props.configurationTypeSet.has(i)) &&\r\n <>\r\n
\r\n \r\n \r\n Tobacco\r\n \r\n {props.configurationTypeSet.has(6) &&\r\n \r\n \r\n \r\n }\r\n {props.configurationTypeSet.has(7) &&\r\n \r\n \r\n \r\n }\r\n {props.age > 21 && props.configurationTypeSet.has(11) &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n {props.configurationTypeSet.has(19) &&\r\n <>\r\n
\r\n \r\n \r\n Medical\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 {props.configurationTypeSet.has(10) &&\r\n <>\r\n
\r\n \r\n \r\n Student\r\n
\r\n \r\n {getStudentStatus().map(val => (\r\n \r\n ))}\r\n \r\n
\r\n {props.isStudent &&\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 {props.configurationTypeSet.has(2) &&\r\n <>\r\n
\r\n \r\n \r\n Medicare\r\n {props.medicareError}\r\n\r\n Are you currently covered by Medicare?\r\n \r\n } label=\"Yes\" />\r\n } label=\"No\" />\r\n \r\n\r\n {props.isMedicareEligble &&\r\n <>\r\n

\r\n \r\n {getMedicareEligibilityStatus().map(val => (\r\n \r\n ))}\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n }\r\n {props.configurationTypeSet.has(41) && isMarriageDateReqd && props.isSpouseFound && !props.isSpouse && !props.isChild &&\r\n <>\r\n
\r\n \r\n \r\n Marriage Date\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {props.configurationTypeSet.has(40) && props.isSpouse &&\r\n <>\r\n
\r\n \r\n \r\n Maiden Name\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n {props.configurationTypeSet.has(42) && !props.isSpouse && props.employeeLastName && props.lastNameDependent && props.lastNameDependent.toUpperCase() !== props.employeeLastName.toUpperCase() &&\r\n <>\r\n \r\n \r\n Child Name Different\r\n \r\n \r\n \r\n \r\n \r\n \r\n } \r\n
\r\n );\r\n else\r\n return ();\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const studentStatus = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.student`);\r\n const isStudent = studentStatus !== getLookupId('NOTASTUDENT', LOOKUP_TYPE_IDS.studentStatus);\r\n const isMedicareEligble = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.isMedicareEligible`);\r\n const errors = getFormSyncErrors(ownProps.formName)(state) as FormErrors; \r\n return {\r\n isStudent,\r\n isMedicareEligble: isMedicareEligble,\r\n medicareError: errors && errors.list && errors.list[ownProps.index] && errors.list[ownProps.index].isMedicareEligible\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n changeIsMedicareEligible: (field: string, value: any) => dispatch(change(ownProps.formName, field, value))\r\n };\r\n}\r\n\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n ...commonStyles,\r\n toLeftLabel: {\r\n marginLeft: '-12px'\r\n },\r\n radioInRow: {\r\n display: 'inline-block'\r\n },\r\n changedField: {\r\n paddingLeft: 10,\r\n },\r\n changedItems: {\r\n padding: 20,\r\n paddingLeft: 30,\r\n marginBottom: 10,\r\n },\r\n\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(EmployeeAdditionalFields));","import { Grid, Paper, Typography } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector, getFormSyncErrors, FormErrors } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { convertToMoment } from 'utility/form_normalization';\r\nimport { generateLabel } from 'utility/form_utils';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { requiredForSubmission, validPastDate } from '../../utility/form_validation';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport { CheckboxField, DatePickerField, TextFormField } from '../common/reduxform_fields';\r\nimport { FormData } from './employee_additional_info_form';\r\n\r\nexport type FieldData = {\r\n medicarePartAEnrolled?: boolean;\r\n medicarePartAIneligible?: boolean;\r\n medicarePartBEnrolled?: boolean;\r\n medicarePartBIneligible?: boolean;\r\n medicarePartDEnrolled?: boolean;\r\n medicarePartDIneligible?: boolean;\r\n eSRDOnsetDate: moment.Moment;\r\n coordinationPeriod?: boolean;\r\n disabledCurrentlyAtWork?: boolean;\r\n disabilityCurrentRenalDisease?: boolean;\r\n socialSecurityDisabilityInsurance?: boolean;\r\n sSDIEffectiveDate: moment.Moment;\r\n partAMedicareId: string;\r\n partAEffectiveDate: moment.Moment;\r\n partBMedicareId: string;\r\n partBEffectiveDate: moment.Moment;\r\n partDMedicareId: string;\r\n partDEffectiveDate: moment.Moment;\r\n partDCarrier: string;\r\n};\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n rootName: string;\r\n index: number;\r\n fullName: string;\r\n configurationTypeSet: Set;\r\n}\r\n\r\ninterface MappedProps {\r\n isMedicareEligible: boolean;\r\n medicarePartAEnrolled: boolean;\r\n medicarePartBEnrolled: boolean;\r\n medicarePartDEnrolled: boolean;\r\n medicarePartAIneligible: boolean;\r\n medicarePartBIneligible: boolean;\r\n medicarePartDIneligible: boolean;\r\n socialSecurityDisabilityInsurance: boolean;\r\n isMedicareESRD: boolean;\r\n isMedicareDisability: boolean;\r\n medicareError: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps { }\r\n\r\nconst EmployeeMedicareFields = React.memo((props: Props) => {\r\n if (props.configurationTypeSet.has(2) && props.isMedicareEligible)\r\n return (\r\n \r\n
\r\n
\r\n

Medicare - {props.fullName}

\r\n
\r\n \r\n \r\n Medicare Eligibility\r\n \r\n \r\n \r\n Medicare Part A\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 Medicare Part B\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 Medicare Part D\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.isMedicareESRD &&\r\n <>\r\n \r\n \r\n ESRD Information\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n }\r\n {props.isMedicareDisability &&\r\n <>\r\n \r\n \r\n Disability\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n }\r\n \r\n \r\n Social Security\r\n \r\n \r\n {props.socialSecurityDisabilityInsurance &&\r\n \r\n \r\n \r\n }\r\n \r\n {props.medicarePartAEnrolled &&\r\n <>\r\n \r\n \r\n Part A Information\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {props.medicarePartBEnrolled &&\r\n <>\r\n \r\n \r\n Part B Information\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {props.medicarePartDEnrolled &&\r\n <>\r\n \r\n \r\n Part D Information\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 else return ();\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const medicarePartAEnrolled = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.medicarePartAEnrolled`);\r\n const medicarePartBEnrolled = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.medicarePartBEnrolled`);\r\n const medicarePartDEnrolled = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.medicarePartDEnrolled`);\r\n const medicarePartAIneligible = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.medicarePartAIneligible`);\r\n const medicarePartBIneligible = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.medicarePartBIneligible`);\r\n const medicarePartDIneligible = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.medicarePartDIneligible`);\r\n const socialSecurityDisabilityInsurance = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.socialSecurityDisabilityInsurance`);\r\n const isMedicareEligible = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.isMedicareEligible`);\r\n const medicareEligibility = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.medicareEligibility`);\r\n\r\n const medicareEligStatusESRDValue = getLookupId('ESRD', LOOKUP_TYPE_IDS.medicareEligibilityStatus);\r\n const medicareEligStatusDisabilityValue = getLookupId('DISABILITY', LOOKUP_TYPE_IDS.medicareEligibilityStatus);\r\n\r\n const isMedicareEligStatusESRD = medicareEligibility === medicareEligStatusESRDValue;\r\n const isMedicareEligStatusDisability = medicareEligibility === medicareEligStatusDisabilityValue;\r\n const errors = getFormSyncErrors(ownProps.formName)(state) as FormErrors; \r\n\r\n return {\r\n isMedicareEligible,\r\n medicarePartAEnrolled,\r\n medicarePartAIneligible,\r\n medicarePartBEnrolled,\r\n medicarePartBIneligible,\r\n medicarePartDEnrolled,\r\n medicarePartDIneligible,\r\n socialSecurityDisabilityInsurance,\r\n isMedicareESRD: isMedicareEligStatusESRD,\r\n isMedicareDisability: isMedicareEligStatusDisability,\r\n medicareError: errors && errors.list && errors.list[ownProps.index]\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(EmployeeMedicareFields);","import { Grid } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { CurrentEnrolleeDTO } from 'redux/reducers';\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\n\r\nexport type FieldData = {\r\n dependents: CurrentEnrolleeDTO[];\r\n}\r\n\r\ninterface ComponentProps {\r\n employeeId?: string; \r\n planTypeId?: number;\r\n}\r\nenum PlanType {\r\n SpouseLife = 17,\r\n ChildLife = 18\r\n}\r\ninterface Props extends WrappedFieldArrayProps, ComponentProps {\r\n\r\n}\r\n\r\nconst RenewalMembersFieldArray = (props: Props) => {\r\n return (\r\n \r\n {props.fields.get(0) && props.fields.map((name, index, fields) => {\r\n const data = fields.get(index);\r\n let dependentDisable = false;\r\n if (props.planTypeId && props.planTypeId == PlanType.ChildLife && data.isSpouse)\r\n {\r\n dependentDisable = true;\r\n }\r\n else if (props.planTypeId && props.planTypeId == PlanType.SpouseLife && !data.isSpouse)\r\n {\r\n dependentDisable = true;\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 RenewalMembersFieldArray;","import React from 'react';\r\nimport { FieldArray, InjectedFormProps, reduxForm, WrappedFieldArrayProps } from 'redux-form';\r\nimport { Employee, Election, RenewalChangeDTO, RenewalDTO } from 'redux/reducers';\r\nimport { EnrolleeconfigurationTypes, hasAdditionalInfo, hasRenewalAdditionalInfo, isChildLastNameDiff } from 'utility/employee_utils';\r\nimport { flattenObject } from 'utility/simple_utils';\r\nimport EmployeeAdditionalFields, { FieldData as AdditionalFieldData } from './employee_additional_fields';\r\nimport EmployeeMedicareFields, { FieldData as MedicareFieldData } from './employee_medicare_fields';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility';\r\n\r\nexport const FORM_NAME = 'EMPLOYEE_ADDITIONAL_INFO';\r\n\r\n\r\ninterface ComponentProps {\r\n employeeId: string;\r\n employee: Employee;\r\n touchForm: boolean;\r\n enrollmentSubmitted: boolean;\r\n configurationTypes: EnrolleeconfigurationTypes;\r\n}\r\n\r\nexport type FieldArrayData = AdditionalFieldData & MedicareFieldData & { id: string; fullName: string; lastName: string, isChild: boolean; isSpouse: boolean, age: number; tobaccoUse: boolean; type: 'employee' | 'dependent' };\r\nexport type FormData = {\r\n list: FieldArrayData[],\r\n isAnyCarrierRenewal?: boolean\r\n};\r\n\r\ntype Props = InjectedFormProps & ComponentProps;\r\n\r\nconst EmployeeAdditionalInformationForm = React.memo((props: Props) => {\r\n const { touchForm, initialValues, touch } = props\r\n React.useEffect(() => {\r\n if (touchForm) {\r\n const fieldNames = flattenObject(initialValues);\r\n touch(...fieldNames as any);\r\n }\r\n }, [touchForm, initialValues, touch]);\r\n\r\n const hasAdditionalInfos = React.useMemo(() => {\r\n const list = props.initialValues.list || [];\r\n let has = false;\r\n list.forEach(person => {\r\n const isChildLastNameDiffFound = isChildLastNameDiff(props.employee.lastName, person.lastName);\r\n if (hasAdditionalInfo(props.configurationTypes, person.tobaccoUse, person.isSpouse, person.isChild, isChildLastNameDiffFound))\r\n has = true;\r\n });\r\n \r\n const hasRenewalAddInfo = hasRenewalAdditionalInfo(props.configurationTypes);\r\n\r\n if (hasRenewalAddInfo && (props.employee.renewalChangeInfo != null && props.employee.renewalChangeInfo.length != 0))\r\n has = true;\r\n return has;\r\n }, [props.initialValues.list]);\r\n\r\n return (\r\n <>\r\n {hasAdditionalInfos &&\r\n
\r\n \r\n \r\n }\r\n \r\n );\r\n});\r\n\r\ninterface EmployeeFieldArrayProps extends WrappedFieldArrayProps {\r\n configurationTypes: EnrolleeconfigurationTypes,\r\n medicareElectionsAnswerNO: Election[],\r\n employee: Employee,\r\n isAnyCarrierRenewal: boolean;\r\n}\r\nconst EmployeeAdditionalInfoFieldArray: React.FunctionComponent = React.memo((props: EmployeeFieldArrayProps) => {\r\n const { employee } = props;\r\n\r\n const spouseFullName = employee.dependents.filter(d => d.isSpouse).map(x => x.fullName)[0];\r\n const isSpouseFound = employee.dependents.find(d => d.isSpouse) ? true : false;\r\n \r\n\r\n return (\r\n <>\r\n {props.fields.map((name, index, fields) => {\r\n const data = fields.get(index);\r\n const configurationTypeSet = props.configurationTypes[data.id] || new Set();\r\n const isEmployee = (!data.isSpouse && !data.isChild);\r\n const renewalInfo = employee.renewalChangeInfo.length != 0 ? employee.renewalChangeInfo.find(a => a.enrolleeId == data.id) : false;\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\nexport default reduxForm({\r\n form: FORM_NAME,\r\n validate: (values, props) => {\r\n const errorMedicare = \"You answered 'No' to the Medicare question on the Critical Illness and/or Hospital Indemnity step. Please update one of your answers in order to continue\";\r\n\r\n let medicareLookupId = getLookupId('MEDICAREQUESTION', LOOKUP_TYPE_IDS.questionType);\r\n const medicareElectionsAnswerNO = props.employee.elections\r\n .filter(election => election.isWaived === false\r\n && election.questionAnswers\r\n && election.questionAnswers.filter(qa => qa.questionTypeId === medicareLookupId\r\n && qa.answers.find(ans => ans.value && ans.value.toUpperCase() === \"NO\")).length > 0) as Election[];\r\n\r\n const errors: any = {}\r\n\r\n errors.list = values.list && values.list.map(val => {\r\n if (val.isMedicareEligible && medicareElectionsAnswerNO.length > 0) {\r\n return {\r\n isMedicareEligible: errorMedicare\r\n }\r\n }\r\n return undefined\r\n })\r\n return errors\r\n }\r\n})((EmployeeAdditionalInformationForm));\r\n\r\n","import { Grid, IconButton, Paper } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport DownloadIcon from 'components/common/icons/icon_download';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { requiredForSubmission, validateIfNotReducedWithMessage } from 'utility/form_validation';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonFormStyles } from '../../utility/common_styles';\r\nimport DocumentIcon from '../common/icons/icon_document';\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\nimport { IReduceValidation } from 'redux/reducers';\r\n\r\ninterface ComponentProps extends IReduceValidation {\r\n formName: string;\r\n rootName: string;\r\n title: string;\r\n storageUrl: string;\r\n description: string;\r\n reduceValidation?: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps, StyledComponentProps { }\r\n\r\nconst EmployeeDocumentAcknowledgmentFields = React.memo((props: Props) => {\r\n\r\n const { classes = {} } = props;\r\n const hideSection = React.useMemo(() => (false), []);\r\n const title = props.title;\r\n const requiredIfNotReducedChecked = validateIfNotReducedWithMessage('Document acknowledgment is required');\r\n const labelText =

By checking this box, you acknowledge that you have read and agree to the {{`${title}`}} document above

\r\n if (!hideSection)\r\n return (\r\n \r\n \r\n {/* Icon, Title, and Description */}\r\n \r\n \r\n \r\n {/* This wraps longer title names */}\r\n \r\n

\r\n {props.title}\r\n

\r\n {props.description &&\r\n

\r\n {props.description}\r\n

\r\n }\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {/* Checkbox */}\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n );\r\n else\r\n return ();\r\n});\r\n\r\nexport const styles: { [key: string]: CSSProperties } = {\r\n boldText: {\r\n fontWeight: \"bold\"\r\n },\r\n button: {\r\n height: 10,\r\n width: 10,\r\n position: 'relative'\r\n },\r\n buttonIcon: {\r\n position: 'absolute'\r\n },\r\n checkboxContainer: {\r\n marginLeft: 15,\r\n },\r\n content: {\r\n fontFamily: 'sans-serif',\r\n marginTop: 10,\r\n marginBottom: -15,\r\n marginRight: 10,\r\n },\r\n description: {\r\n color: palette.grey.text,\r\n fontStyle: 'italic',\r\n fontSize: 14\r\n },\r\n documentTitle: {\r\n fontSize: 20,\r\n color: palette.grey.text,\r\n fontWeight: 'bold'\r\n },\r\n fileIcon: {\r\n color: palette.blue.primary,\r\n fontSize: 60,\r\n position: \"relative\"\r\n },\r\n header: {\r\n fontSize: 20,\r\n color: palette.grey.text,\r\n fontWeight: 'bold'\r\n },\r\n iconButton: {\r\n color: palette.grey.text,\r\n fontSize: 32,\r\n },\r\n labelText: {\r\n fontSize: 14,\r\n color: palette.grey.lightText,\r\n fontFamily: 'sans-serif',\r\n paddingLeft: 20\r\n },\r\n smallTopMargin: {\r\n marginTop: 3\r\n },\r\n negativeTopMargin: {\r\n marginTop: -15\r\n },\r\n textContainer: {\r\n flexShrink: 1\r\n },\r\n}\r\n\r\nexport default withStyles(styles)(EmployeeDocumentAcknowledgmentFields);\r\n","import React from 'react';\r\nimport { FieldArray, InjectedFormProps, reduxForm, WrappedFieldArrayProps } from 'redux-form';\r\nimport { Employee, Plan } from 'redux/reducers';\r\nimport { flattenObject } from 'utility/simple_utils';\r\nimport EmployeeDocumentAcknowledgmentFields from './employee_document_acknowledgment_fields';\r\n\r\nexport const FORM_NAME = 'EMPLOYEE_ACKNOWLEDGED_DOCUMENTS';\r\n\r\nexport type FieldArrayData = { acknowledgmentId: number; planId: string; documentLink: string; title: string; isAcknowledged: boolean; description?: string; fileId: string;}; //reduceValidation?: boolean;\r\nexport type FormData = { list: FieldArrayData[], reduceValidation?: boolean };\r\n\r\ninterface ComponentProps {\r\n employeeId: string;\r\n employee: Employee;\r\n touchForm: boolean;\r\n enrollmentSubmitted: boolean;\r\n plans: Plan[];\r\n}\r\n\r\ntype Props = InjectedFormProps & ComponentProps;\r\n\r\n\r\nconst EmployeeDocumentAcknowledgmentForm = React.memo((props: Props) => {\r\n const { touchForm, touch, initialValues } = props;\r\n React.useEffect(() => {\r\n if (touchForm) {\r\n const fieldNames = flattenObject(initialValues);\r\n touch(...fieldNames as any);\r\n }\r\n }, [touchForm, touch, initialValues]);\r\n\r\n return (\r\n
\r\n \r\n \r\n );\r\n});\r\n\r\ninterface EmployeeFieldArrayProps extends WrappedFieldArrayProps {\r\n plans: Plan[];\r\n}\r\nconst EmployeeDocumentAcknowledgmentFieldArray: React.FunctionComponent = React.memo((props: EmployeeFieldArrayProps) => {\r\n return (\r\n <>\r\n {props.fields.map((name, index, fields) => {\r\n const data = fields.get(index);\r\n\r\n let description = data.description || \"\";\r\n return (\r\n
\r\n \r\n
\r\n );\r\n })}\r\n \r\n );\r\n});\r\n\r\nexport default reduxForm({ form: FORM_NAME })((EmployeeDocumentAcknowledgmentForm));","import { ButtonBase, Grid, Paper } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport PersonAdd from '@material-ui/icons/PersonAdd';\r\nimport React from 'react';\r\nimport { compose } from 'redux';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\n\r\ninterface ComponentProps {\r\n disableSpouse?: boolean;\r\n onClick: (isSpouse: boolean, dependentType: number) => void;\r\n}\r\n\r\ninterface Props extends ComponentProps, StyledComponentProps, WithWidth { }\r\n\r\nconst AddDependentCard = (props: Props) => {\r\n const { disableSpouse, classes = {}, width, onClick } = props;\r\n const spouseLookupId = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.dependentType);\r\n const childLookupId = getLookupId('CHILD', LOOKUP_TYPE_IDS.dependentType);\r\n const mobile = width === 'xs';\r\n return (\r\n \r\n !disableSpouse && onClick(true, spouseLookupId)}>\r\n \r\n \r\n \r\n
Add Spouse/Partner
\r\n
\r\n
\r\n
\r\n onClick(false, childLookupId)}>\r\n \r\n \r\n \r\n
Add Dependent
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n body: {\r\n backgroundColor: palette.grey.dark,\r\n borderWidth: 1,\r\n borderStyle: 'dashed',\r\n borderColor: palette.grey.text,\r\n padding: '20px 0',\r\n width: '100%',\r\n textAlign: 'center'\r\n },\r\n button: {\r\n width: '100%'\r\n },\r\n icon: {\r\n color: palette.grey.text,\r\n fontSize: 60\r\n },\r\n text: {\r\n color: palette.blue.primary,\r\n textTransform: 'uppercase'\r\n },\r\n disabledText: {\r\n color: palette.grey.lightText\r\n },\r\n disabledIcon: {\r\n color: palette.grey.lightText\r\n },\r\n depMobile: {\r\n margin: '0 30px'\r\n }\r\n}\r\n\r\nexport default compose(\r\n withStyles(styles),\r\n withWidth()\r\n)(AddDependentCard) as React.FunctionComponent;","import React from 'react';\r\nimport { formValueSelector, Field, FieldArray } from 'redux-form';\r\nimport { connect } from 'react-redux';\r\nimport { ReduxState } from 'redux/store';\r\nimport { ElectionRenewalInfoDTO, Plan, EmployeeReducerState, GroupSubmission } from 'redux/reducers';\r\nimport { getLookupId, getLookupValue, LOOKUP_TYPE_IDS, getLOCs, CONFIGURATION_TYPE_IDS, isEmployeeOnlyLOC, CARRIER_RENEWAL } from 'utility';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { Typography, FormControlLabel, Radio, Grid, Paper } from '@material-ui/core';\r\nimport { RadioControlGroupField, CheckboxField} from 'components/common/reduxform_fields';\r\nimport RenewalMembersFieldArray from './renewal_members_field_array';\r\nimport { requiredForSubmission } from 'utility/form_validation';\r\nimport DependentFieldArray from '../forms/dependent_field_array';\r\nimport { ContactInfo, AddressType } from 'redux/reducers';\r\nimport auth from 'utility/auth';\r\n\r\ninterface CarrierInfo {\r\n carrierCode: string;\r\n carrierName: string;\r\n}\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n homeAddress?: ContactInfo[];\r\n employeeId?: string;\r\n currentSelectedPlanId?: string;\r\n currentSelectedPlanName?: string;\r\n lineOfCoverage?: number;\r\n isCurrentElectionWaived?: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n isDroppedEnrollee?: boolean;\r\n previousYearRenewalCarrierCode?: string;\r\n previousYearRenewalCarrierName?: string;\r\n employee?: EmployeeReducerState;\r\n allPlans?: Plan[];\r\n groupSubmissionState?: GroupSubmission[];\r\n electionRenewal?: ElectionRenewalInfoDTO;\r\n companyName?: string;\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps { }\r\n\r\n\r\nconst RenewalQuestionsFields = (props: Props) => {\r\n const renewalId = getLookupId('RENEWAL', LOOKUP_TYPE_IDS.enrollmentType);\r\n const newBusinessId = getLookupId('NEWBUSINESS', LOOKUP_TYPE_IDS.enrollmentType);\r\n const employee = props.employee && props.employee.list.find(emp => emp.id === props.employeeId);\r\n const defaultHomeAddress = () => {\r\n if (props.homeAddress)\r\n return props.homeAddress.find(contactInfo => contactInfo.addressType === AddressType.Home);\r\n else\r\n return undefined;\r\n }\r\n\r\n const getUniqueRenewalCarrierInfo = (renewalPlansInSelectedLOC: Plan[] | undefined) => {\r\n const renewalCarrierList = renewalPlansInSelectedLOC && renewalPlansInSelectedLOC.map((p) => {\r\n const carrierInfo: CarrierInfo = {\r\n carrierCode: p.carrierCode,\r\n carrierName: p.carrierName\r\n };\r\n return carrierInfo;\r\n });\r\n\r\n let uniqueRenewalCarrierList: CarrierInfo[] = [];\r\n\r\n renewalCarrierList && renewalCarrierList.forEach((carrier: CarrierInfo) => {\r\n if (uniqueRenewalCarrierList.findIndex(cn => cn.carrierCode === carrier.carrierCode) === -1) {\r\n uniqueRenewalCarrierList.push({ carrierCode: carrier.carrierCode, carrierName: carrier.carrierName });\r\n }\r\n });\r\n return uniqueRenewalCarrierList;\r\n }\r\n\r\n // Get the Saved Election Info (on First load)\r\n const savedSelectedPlanId = employee && employee.elections\r\n && employee.elections.find(elec => elec.lineOfCoverageId === props.lineOfCoverage)\r\n && employee.elections.find(elec => elec.lineOfCoverageId === props.lineOfCoverage)!.planId;\r\n const savedSelectedPlan = props.allPlans && props.allPlans.find(p => p.id === savedSelectedPlanId);\r\n const savedSelectedLOC = savedSelectedPlan && savedSelectedPlan.lineOfCoverageId;\r\n\r\n // Get Current Election info real time on change\r\n const currentSelectedPlan = props.allPlans && props.allPlans.find(p => p.id === props.currentSelectedPlanId);\r\n\r\n // Get all saved plans in context of an LOC \r\n const plansInSavedSelectedLOC = props.allPlans && props.allPlans.filter(plan => plan.lineOfCoverageId === savedSelectedLOC) as Plan[];\r\n\r\n // Determine if Brand new Election\r\n const isNewElection = plansInSavedSelectedLOC && plansInSavedSelectedLOC.length === 0;\r\n const AllstateCarrierCode = getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n const AllstatePlans = props.allPlans && props.allPlans.filter(p => p.carrierCode === AllstateCarrierCode);\r\n const isAllstateOffered = AllstatePlans && AllstatePlans.length>0;\r\n const plansInSelectedLOC = props.allPlans && props.allPlans.filter(plan => plan.lineOfCoverageId === props.lineOfCoverage);\r\n const carriersInSelectedLOC = plansInSelectedLOC && plansInSelectedLOC.map(plan => plan.carrierCode);\r\n\r\n const isAnyConfigurationRenewalNewElection = (props.currentSelectedPlanId !== null || props.isCurrentElectionWaived)\r\n && plansInSelectedLOC && plansInSelectedLOC.some(plan => plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.RenewalInfoPerLOC))\r\n const isAnyConfigurationRenewalExistingElection = plansInSavedSelectedLOC && plansInSavedSelectedLOC.some(plan => plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.RenewalInfoPerLOC));\r\n const isAnyConfigurationRenewal = isNewElection ? isAnyConfigurationRenewalNewElection : isAnyConfigurationRenewalExistingElection;\r\n\r\n const newBusinessGroupApps = props.groupSubmissionState && props.groupSubmissionState.filter(grp => grp.enrollmentTypeId === newBusinessId);\r\n const nbCarrierCodes = newBusinessGroupApps && newBusinessGroupApps.map(g => g.carrierCode);\r\n\r\n const renewalPlansInSelectedLOC = isAnyConfigurationRenewal && plansInSelectedLOC != undefined ? plansInSelectedLOC.filter(plan => plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.RenewalInfoPerLOC) && nbCarrierCodes && nbCarrierCodes.findIndex(carrierCode => carrierCode === plan.carrierCode) < 0) : undefined;\r\n const uniqueRenewalCarrierInfo = getUniqueRenewalCarrierInfo(renewalPlansInSelectedLOC);\r\n\r\n // Determine if NO Plans selected for an LOC\r\n const isAnyPlanSelectedOrElectionWaived = props.currentSelectedPlanId !== \"\" || props.isCurrentElectionWaived;\r\n\r\n // Determine if the carriers in the selected LOC are Renewals based on the Group Application values\r\n const isAnyGrpSubmissionRenewal = props.groupSubmissionState && props.groupSubmissionState.filter(grp => carriersInSelectedLOC!.includes(grp.carrierCode)).some(grp => grp.enrollmentTypeId === renewalId);\r\n\r\n // Determine if any Renewal plan present in the selected LOC\r\n const isAnyRenewalPlanPresent = isAnyGrpSubmissionRenewal && isAnyConfigurationRenewal && isAnyPlanSelectedOrElectionWaived;\r\n\r\n //Determine questions display toggle\r\n const IsRenewalPrimaryQuestionRequired = isAnyRenewalPlanPresent && uniqueRenewalCarrierInfo.length > 0;\r\n\r\n //Determine selectedcarrier & LOC names\r\n const selectedLOCName = getLOCs().find(loc => loc.id === props.lineOfCoverage)\r\n && getLOCs().find(loc => loc.id === props.lineOfCoverage)!.value;\r\n const isLOCEmployeeOnly = props.lineOfCoverage && isEmployeeOnlyLOC(props.lineOfCoverage);\r\n const carrierRenewal = (props.previousYearRenewalCarrierCode != '' && props.previousYearRenewalCarrierCode != undefined && props.previousYearRenewalCarrierCode != CARRIER_RENEWAL.notapplicable && props.previousYearRenewalCarrierCode != CARRIER_RENEWAL.notsure);\r\n const IsRenewalSecondaryQuestionRequired = carrierRenewal && !isLOCEmployeeOnly;\r\n const selectedCurrentCarrierCode = currentSelectedPlan && currentSelectedPlan.carrierCode.toUpperCase();\r\n const selectedCurrentCarrierName = currentSelectedPlan && currentSelectedPlan.carrierName;\r\n const isCurrentAndLastYearCarrierSame = carrierRenewal && (props.previousYearRenewalCarrierCode != undefined && (props.previousYearRenewalCarrierCode.toUpperCase() === selectedCurrentCarrierCode) ? true : false);\r\n\r\n const planTypeId = currentSelectedPlan ? currentSelectedPlan.planTypeId : undefined;\r\n\r\n return (\r\n <>\r\n {IsRenewalPrimaryQuestionRequired &&\r\n <>\r\n \r\n
\r\n Tell us about your Current Coverage\r\n
\r\n \r\n {`You have just selected ${selectedLOCName} coverage - The following questions about your current year's policy will assist us with processing insurance enrollment forms on your behalf. `}\r\n \r\n \r\n {`1) Select the ${selectedLOCName} carrier you are covered by in the current year's coverage with ${props.companyName}:`}\r\n \r\n \r\n \r\n \r\n {uniqueRenewalCarrierInfo.map(carrierInfo => {\r\n return (\r\n }\r\n label={{carrierInfo.carrierName}}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n );\r\n })\r\n }\r\n }\r\n label={No, I am not currently covered by these carriers with my employer}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n }\r\n label={I am not sure}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n \r\n \r\n \r\n
\r\n {IsRenewalSecondaryQuestionRequired &&\r\n <>\r\n \r\n {`2) You noted in question 1 you are currently covered by ${props.previousYearRenewalCarrierName}. Which members of your family are covered under your ${props.previousYearRenewalCarrierName} ${selectedLOCName} coverage?`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n \r\n {`3) Are there any additional dependents NOT listed in question 2 that you are covering?`}\r\n \r\n \r\n }\r\n label={Yes}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n }\r\n label={No}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n }\r\n label={I am not sure}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n \r\n
\r\n {props.isDroppedEnrollee &&\r\n <>\r\n Please add the dependent(s) currently covered:\r\n \r\n
\r\n \r\n }\r\n \r\n }\r\n {isCurrentAndLastYearCarrierSame &&\r\n <>\r\n \r\n {`${(IsRenewalSecondaryQuestionRequired) ? '4)' : '2)'} You are electing ${selectedCurrentCarrierName} \"${props.currentSelectedPlanName}\" Plan this upcoming year, and you noted in question 1 that you are covered by the same carrier this year. Are you choosing the same plan for next year as you have currently?`}\r\n \r\n \r\n }\r\n label={Yes}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n }\r\n label={No}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n }\r\n label={I am not sure}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\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\nfunction mapStateToProps(state: ReduxState, ownProps: Props): MappedProps {\r\n var groupSubmissionState = state.groupSubmission.list;\r\n var employee = state.employee;\r\n var allPlans = state.plan.list;\r\n const isDroppedEnrollee = formValueSelector(ownProps.formName)(state, 'isDroppedEnrollee') as string;\r\n const previousYearRenewalCarrierCode = formValueSelector(ownProps.formName)(state, 'previousYearRenewalCarrierCode') as string;\r\n const renewalSelectedCarrierPlan = allPlans.find(p => p.carrierCode === previousYearRenewalCarrierCode);\r\n const previousYearSelectedCarrierName = renewalSelectedCarrierPlan && renewalSelectedCarrierPlan.carrierName;\r\n const companyName = state.enrollment.company.name;\r\n\r\n return {\r\n employee: employee,\r\n allPlans: allPlans,\r\n groupSubmissionState: groupSubmissionState,\r\n isDroppedEnrollee: isDroppedEnrollee === \"true\",\r\n previousYearRenewalCarrierCode: previousYearRenewalCarrierCode,\r\n previousYearRenewalCarrierName: previousYearSelectedCarrierName,\r\n companyName: companyName\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(RenewalQuestionsFields); ","import { InjectedFormProps, reduxForm } from 'redux-form';\r\nimport React from 'react';\r\nimport { CurrentEnrolleeDTO, Election, Employee } from 'redux/reducers';\r\nimport RenewalQuestionsFields from '../forms/renewal_questions_fields';\r\nimport { FieldData as DependentFieldData } from './dependent_fields';\r\n\r\nexport const FORM_NAME = 'RENEWAL_QUESTIONS_FORM';\r\n\r\nexport type FormData = {\r\n carrierRenewal?:string;\r\n planRenewal?: string;\r\n isDroppedEnrollee?: string;\r\n currentEnrollees?: CurrentEnrolleeDTO[];\r\n isCurrentEnrolleesNotSure?: boolean;\r\n reduceValidation?: boolean;\r\n droppedEnrollees?: DependentFieldData[];\r\n previousYearRenewalCarrierCode: string;\r\n}\r\n\r\ninterface ComponentProps {\r\n lineOfCoverage?:number;\r\n currentSelectedPlanId?: string;\r\n currentSelectedPlanName?: string;\r\n employee?: Employee;\r\n isCurrentElectionWaived?: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps, InjectedFormProps {}\r\n\r\nexport const dependentsUniqueSsn = (_value: any, formValues: FormData, props: ComponentProps) => {\r\n if (_value === undefined || formValues.droppedEnrollees === undefined)\r\n return undefined;\r\n \r\n const allDroppedEnrolleeSSNs = formValues.droppedEnrollees.filter(x => x.ssn !== undefined && x.ssn !== '').map(x => x.ssn!);\r\n const dependentsSSNs = props.employee!.dependents.filter(x => x.ssn !== undefined && x.ssn !== '').map(x => x.ssn!); \r\n const allSSNs = allDroppedEnrolleeSSNs.concat(dependentsSSNs);\r\n\r\n if (props.employee!.ssn !== undefined) {\r\n allSSNs.push(props.employee!.ssn!);\r\n }\r\n\r\n const duplicateSSN = allSSNs.filter(ssn => ssn === _value).length > 1;\r\n\r\n return duplicateSSN ? 'Another member of your enrollment already has this SSN' : undefined;\r\n}\r\n\r\nconst RenewalQuestionsForm = (props: Props) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME,\r\n})(RenewalQuestionsForm);","import { Button, Grid, Paper } from '@material-ui/core';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { formatSSN, formatZip } from 'utility/form_formatter';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { convertToMoment, convertToNumber, normalizeSSN, normalizeZIP } from '../../utility/form_normalization';\r\nimport { characterLimit, required, requiredForSubmission, ssn, validPastDate, zip, validateIfNotReducedWithMessage, validSpouseAge } from '../../utility/form_validation';\r\nimport { getChildDependentTypes, getGenders, getLookupId, getSpouseDependentTypes, getStates, LOOKUP_TYPE_IDS, getTobaccoUse } from '../../utility/lookup_utils';\r\nimport { CheckboxField, DatePickerField, SSNTextFormField, TextFormField } from '../common/reduxform_fields';\r\nimport { FieldData as ContactInformationFieldData } from './contact_info_fields';\r\nimport { employeeAndDependentsUniqueSsn } from './employee_upsert_form';\r\nimport { dependentsUniqueSsn } from './renewal_questions_form';\r\nimport { IReduceValidation } from 'redux/reducers';\r\n\r\nexport type FieldData = {\r\n id: string;\r\n firstName: string;\r\n maidenName: string;\r\n lastName: string;\r\n genderId: number;\r\n ssn?: string;\r\n tobaccoUse: boolean;\r\n dateOfBirth: moment.Moment;\r\n dependentTypeId: number;\r\n addressSameAsEmployee?: boolean;\r\n contactInformation: [ContactInformationFieldData];\r\n objectState: 0 | 1 | 2 | 3;\r\n isSpouse: boolean;\r\n isFosterChildPlaced?: boolean;\r\n isPartnerEmployedAtSameCompany?: boolean;\r\n}\r\n\r\ninterface ComponentProps {\r\n name: string;\r\n index: number;\r\n data: FieldData;\r\n formName: string;\r\n hardValidate: boolean;\r\n onDelete: (index: number) => any;\r\n isRenewal?: boolean;\r\n triggerValidation: boolean;\r\n isEmployeeWaiving: boolean;\r\n hasDependentElected: boolean;\r\n isAllstateOffered: boolean;\r\n showTobaccoUseDropDown: boolean;\r\n}\r\n\r\ninterface MappedProps extends IReduceValidation {\r\n dependentTypeId?: number;\r\n maritalStatusId?: number;\r\n addressSameAsEmployee?: boolean;\r\n lastNameEmployee?: string;\r\n lastNameDependent?: string;\r\n spouseMinimumAge?: number;\r\n}\r\ninterface Props extends MappedProps, ComponentProps, WithWidth {\r\n\r\n}\r\n\r\ninterface State { }\r\n\r\nconst characterLimit100 = characterLimit(100);\r\nconst validateFirstName = required('First Name is required');\r\nconst validateLastName = required('Last Name is required');\r\nconst validateGender = validateIfNotReducedWithMessage('Gender is required');\r\nconst validateDependentType = required('Dependent Type is required');\r\nconst validateTobaccoUser = validateIfNotReducedWithMessage('Tobacco user is required');\r\nconst validateDOB = [validateIfNotReducedWithMessage('Date of Birth is required'), validPastDate];\r\nconst nativeSelect = { native: true };\r\n\r\nclass DependentFields extends React.PureComponent{\r\n validateSpouseDOB = [validateIfNotReducedWithMessage('Date of Birth is required'), validPastDate, validSpouseAge(this.props.spouseMinimumAge)];\r\n fosterChild = getLookupId('FOSTERCHILD', LOOKUP_TYPE_IDS.dependentType);\r\n partnership = getLookupId('DOMESTICPARTNER', LOOKUP_TYPE_IDS.dependentType);\r\n spouse = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.dependentType);\r\n divorced = getLookupId('DIVORCED', LOOKUP_TYPE_IDS.maritalStatus);\r\n\r\n childTypes = getChildDependentTypes(this.props.isAllstateOffered);\r\n spouseTypes = getSpouseDependentTypes();\r\n\r\n genders = getGenders();\r\n states = getStates();\r\n\r\n validateUniqueSSN = this.props.isRenewal ? dependentsUniqueSsn : employeeAndDependentsUniqueSsn;\r\n\r\n render() {\r\n const { isRenewal, name, index, data, width, addressSameAsEmployee, onDelete, dependentTypeId, maritalStatusId, triggerValidation } = this.props;\r\n const isMobile = width === 'xs';\r\n const isPartnership = dependentTypeId === this.partnership;\r\n const isFosterChild = dependentTypeId === this.fosterChild;\r\n const isRemoveSpousePartnerDisabled = isRenewal ? false : (dependentTypeId === this.partnership || dependentTypeId === this.spouse) && (maritalStatusId != this.divorced);\r\n return (\r\n \r\n \r\n {isMobile &&
}\r\n
\r\n

{data.isSpouse ? 'Spouse/Partner' : 'Dependent'} Info

\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.genders.map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {!this.props.isEmployeeWaiving &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {data.isSpouse ?\r\n this.spouseTypes.map(val => (\r\n \r\n ))\r\n :\r\n this.childTypes.map(val => (\r\n \r\n ))\r\n }\r\n \r\n \r\n {(isRenewal || this.props.isEmployeeWaiving) ?\r\n \r\n \r\n \r\n :\r\n <>\r\n {this.props.showTobaccoUseDropDown &&\r\n \r\n \r\n \r\n {getTobaccoUse().map(val => (\r\n \r\n ))}\r\n \r\n \r\n }\r\n {!this.props.showTobaccoUseDropDown &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n }\r\n {!isRenewal && data.isSpouse && !this.props.isEmployeeWaiving &&\r\n \r\n \r\n \r\n }\r\n {!isRenewal && isFosterChild && !this.props.isEmployeeWaiving &&\r\n \r\n \r\n \r\n }\r\n {!isRenewal && isPartnership && !this.props.isEmployeeWaiving &&\r\n \r\n \r\n \r\n }\r\n {!addressSameAsEmployee && !this.props.isEmployeeWaiving &&\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 {this.states.map(val => (\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\nfunction mapStateToProps(state: ReduxState, ownProps: Props): MappedProps {\r\n const reduceValidation = state.enrollment.reduceValidation;\r\n const { name } = ownProps;\r\n const dependentTypeId = formValueSelector(ownProps.formName)(state, `${name}.dependentTypeId`);\r\n const maritalStatusId = formValueSelector(ownProps.formName)(state, `maritalStatusId`);\r\n const addressSameAsEmployee = formValueSelector(ownProps.formName)(state, `${name}.addressSameAsEmployee`);\r\n const lastNameEmployee = formValueSelector(ownProps.formName)(state, `lastName`);\r\n const lastNameDependent = formValueSelector(ownProps.formName)(state, `${name}.lastName`);\r\n return {\r\n reduceValidation,\r\n dependentTypeId,\r\n maritalStatusId,\r\n addressSameAsEmployee,\r\n lastNameEmployee,\r\n lastNameDependent\r\n };\r\n}\r\n\r\nexport default withWidth()(connect(mapStateToProps)(DependentFields));","import React from 'react';\r\nimport { WrappedFieldArrayProps } from 'redux-form';\r\nimport { getChildDependentTypes, getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport AddDependentCard from '../employee/add_dependent_card';\r\nimport { FieldData as ContactInfoFieldData } from './contact_info_fields';\r\nimport DependentFields, { FieldData as DependentFieldData } from './dependent_fields';\r\nimport { ElectionDependent } from '../../redux/reducers/employee_reducer';\r\n\r\nexport type FieldData = {\r\n dependents: DependentFieldData[];\r\n};\r\ninterface Props extends WrappedFieldArrayProps {\r\n defaultAddress?: ContactInfoFieldData;\r\n formName: string;\r\n hardValidate: boolean;\r\n maritalStatusId?: number;\r\n isRenewal?: boolean;\r\n triggerValidation: boolean;\r\n onDependentChange?: (depId: string, operation: 'ADD' | 'DELETE') => void;\r\n isEmployeeWaiving: boolean;\r\n electedDependents: ElectionDependent[];\r\n isAllstateOffered: boolean;\r\n isAllstateCriticalOffered: boolean;\r\n spouseMinimumAge?: number;\r\n}\r\n\r\nconst DependentFieldArray: React.FunctionComponent = React.memo((props: Props) => {\r\n const { fields, defaultAddress, maritalStatusId, isRenewal, triggerValidation, spouseMinimumAge } = props;\r\n const spouseLookupId = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.dependentType);\r\n const marriedId = getLookupId('MARRIED', LOOKUP_TYPE_IDS.maritalStatus);\r\n const domesticPartnershipId = getLookupId('DOMESTICPARTNERSHIP', LOOKUP_TYPE_IDS.maritalStatus);\r\n const singleId = getLookupId('SINGLE', LOOKUP_TYPE_IDS.maritalStatus);\r\n const widowId = getLookupId('WIDOW', LOOKUP_TYPE_IDS.maritalStatus);\r\n\r\n const childTypeIds = React.useMemo(() => getChildDependentTypes(props.isAllstateOffered).map(x => x.id), []);\r\n\r\n React.useEffect(() => {\r\n const fieldsIntialized = fields.getAll() !== undefined;\r\n if (!fieldsIntialized)\r\n return;\r\n const shouldAddSpouse = maritalStatusId === marriedId || maritalStatusId === domesticPartnershipId;\r\n const spouseAlreadyExists = hasSpouse();\r\n\r\n const isSingle = maritalStatusId === singleId || maritalStatusId === widowId;\r\n if (shouldAddSpouse && !spouseAlreadyExists) {\r\n handleAdd(true, spouseLookupId); //Add spousal card\r\n }\r\n else if (isSingle && spouseAlreadyExists) {\r\n handleDelete(0); //Delete spousal card\r\n }\r\n\r\n }, [maritalStatusId, fields]);\r\n\r\n const handleAdd = React.useCallback((isSpouse: boolean, depType: number, isRenewal?: boolean) => {\r\n const newDep = { dependentTypeId: depType, isSpouse: isSpouse, addressSameAsEmployee: true, objectState: 1 } as DependentFieldData;\r\n\r\n if ((childTypeIds.indexOf(depType) !== -1) && defaultAddress) {\r\n newDep.contactInformation = [defaultAddress];\r\n newDep.addressSameAsEmployee = true;\r\n }\r\n\r\n //Handle when DEP is added\r\n if (!isRenewal && props.onDependentChange)\r\n props.onDependentChange('0', 'ADD');\r\n\r\n if (isSpouse)\r\n fields.unshift(newDep);\r\n else\r\n fields.push(newDep);\r\n\r\n }, [childTypeIds, defaultAddress, fields]);\r\n\r\n const handleDelete = React.useCallback((index: number, isRenewal?: boolean) => {\r\n let dependentId = fields.get(index).id;\r\n\r\n //Handle when DEP is deleted\r\n if (!isRenewal && props.onDependentChange)\r\n props.onDependentChange(dependentId, 'DELETE');\r\n\r\n fields.remove(index);\r\n }, [fields]);\r\n\r\n const hasSpouse = React.useCallback(() => {\r\n return (fields.getAll() || []).some(dep => dep.isSpouse);\r\n }, [fields]);\r\n\r\n const hasDependentElected = (value: string) => {\r\n return props.electedDependents.some(d => d.id == value);\r\n };\r\n\r\n return (\r\n <>\r\n {fields.map((name, index, fields) => {\r\n //Nake sure that the SPouse always shows up to the top of the DEP array\r\n fields.getAll() && fields.getAll().findIndex((dep) => dep.dependentTypeId && dep.dependentTypeId.toString() === \"\") < 0\r\n && fields.getAll().sort((dep1, dep2) => dep1.dependentTypeId - dep2.dependentTypeId);\r\n\r\n\r\n const dep = fields.get(index);\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n \r\n \r\n );\r\n});\r\n\r\nexport default DependentFieldArray;","import { Grid, Paper } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { convertToMoment, convertToNumber } from 'utility/form_normalization';\r\nimport { requiredForSubmission, validPastDate } from 'utility/form_validation';\r\nimport { ReduxState } from '../../redux/store';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { getCobraEvents, getContinuationMonths, isEmployeeCobra } from '../../utility/lookup_utils';\r\nimport { DatePickerField, TextFormField } from '../common/reduxform_fields';\r\n\r\nexport type FieldData = {\r\n cobraEventId?: number;\r\n cobraEventDate?: moment.Moment;\r\n cobraBeginDate?: moment.Moment;\r\n cobraEndDate?: moment.Moment;\r\n cobraLossOfCoverageDate?: moment.Moment;\r\n lengthOfContinuationInMonths?: string;\r\n};\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n hardValidate: boolean;\r\n changeField: (name: string, value: any) => void;\r\n}\r\n\r\ninterface StateProps {\r\n cobraStatus: boolean;\r\n cobraBeginDate: moment.Moment;\r\n continuationMonths: number;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps;\r\n\r\nconst nativeSelect = { native: true };\r\n\r\nconst CobraFields = React.memo((props: Props) => {\r\n const { changeField, cobraBeginDate, continuationMonths } = props;\r\n const lengthUpdateEndDate = React.useCallback((_event: any) => {\r\n const startDate = cobraBeginDate;\r\n const length = _event.target ? _event.target.value : \"18\";\r\n if (startDate && startDate.isValid() && _event) {\r\n const parsedStartDate = moment(startDate).startOf('day').add(length, 'months');\r\n changeField('cobraEndDate', parsedStartDate);\r\n }\r\n }, [changeField, cobraBeginDate]);\r\n\r\n const startDateUpdateEndDate = React.useCallback((_event: any) => {\r\n const startDate = moment(_event);\r\n const length = continuationMonths;\r\n if (startDate && startDate.isValid() && length) {\r\n const parsedStartDate = moment(startDate).startOf('day').add(length, 'months');\r\n changeField('cobraEndDate', parsedStartDate);\r\n }\r\n }, [changeField, continuationMonths]);\r\n\r\n return (\r\n <>\r\n {props.cobraStatus &&\r\n \r\n
\r\n

COBRA/Continuation Details

\r\n
\r\n \r\n \r\n \r\n \r\n {getCobraEvents().map(val => )}\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 {getContinuationMonths().map(val => )}\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\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const employmentStatusId = formValueSelector(ownProps.formName)(state, 'employmentStatusId') as number;\r\n const cobraStatus = isEmployeeCobra(employmentStatusId);\r\n const continuationMonths = formValueSelector(ownProps.formName)(state, 'lengthOfContinuationInMonths');\r\n const cobraBeginDate = formValueSelector(ownProps.formName)(state, 'cobraBeginDate');\r\n\r\n return {\r\n cobraStatus,\r\n continuationMonths,\r\n cobraBeginDate\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(CobraFields);","import { Grid, InputAdornment, Paper } from '@material-ui/core';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport HelpIcon from '@material-ui/icons/Help';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { AddressType } from 'redux/reducers';\r\nimport palette from 'utility/palette';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { formatPhone, formatZip } from '../../utility/form_formatter';\r\nimport { convertToNumber, normalizeDigits, normalizeZIP } from '../../utility/form_normalization';\r\nimport { characterLimit, email, phone, requiredForSubmission, zip } from '../../utility/form_validation';\r\nimport { getContactMethods, getStates } from '../../utility/lookup_utils';\r\nimport { CheckboxField, TextFormField } from '../common/reduxform_fields';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\nexport type FieldData = {\r\n streetAddress1?: string;\r\n streetAddress2?: string;\r\n city?: string;\r\n county?: string;\r\n stateId?: number;\r\n zipCode?: string;\r\n email?: string;\r\n phone?: string;\r\n sameasHome?: boolean;\r\n addressType: AddressType;\r\n contactMethodId?: number;\r\n};\r\n\r\ninterface Props extends WithWidth {\r\n rootName: string;\r\n showSameAsHome: boolean;\r\n hardValidate: boolean;\r\n onHomeToggleChange?: (ev: any) => void;\r\n}\r\n\r\nconst nativeSelect = { native: true };\r\n\r\nconst characterLimit50 = characterLimit(50);\r\nconst characterLimit100 = characterLimit(100);\r\nconst emailInputAdornment = (mobile: boolean) => (\r\n \r\n \r\n Changing the email address here will not affect your login information. You can change your login email by clicking the account icon in the top right.\r\n
\r\n }\r\n content={\r\n \r\n }\r\n />\r\n \r\n);\r\n\r\nconst ContactInfoFields = React.memo((props: Props) => {\r\n const { width } = props;\r\n const mobile = width === 'xs';\r\n\r\n return (\r\n \r\n
\r\n {\r\n return (\r\n

{props.input.value === AddressType.Home ? 'Home Address' : 'Mailing Address'}

\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 {getStates().map(val => (\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 {getContactMethods().map(val => (\r\n \r\n ))}\r\n \r\n \r\n {props.showSameAsHome &&\r\n \r\n \r\n \r\n }\r\n \r\n
\r\n );\r\n});\r\n\r\nconst localStyles: { [key: string]: React.CSSProperties } = {\r\n endAdornment: {\r\n paddingRight: 11,\r\n color: palette.grey.text,\r\n height: 20,\r\n width: 20\r\n },\r\n mobilePadding: {\r\n marginRight: 140\r\n }\r\n}\r\n\r\nexport default withWidth()(ContactInfoFields);","import React from 'react';\r\nimport { WrappedFieldArrayProps } from 'redux-form';\r\nimport ContactInfoFields, { FieldData as ContactInfoFieldData } from './contact_info_fields';\r\n\r\nexport type FieldData = {\r\n contactInformation: ContactInfoFieldData[];\r\n};\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n initialHomeCheck: boolean;\r\n hardValidate: boolean;\r\n}\r\n\r\ninterface State {\r\n sameAsHomeCheck: boolean;\r\n}\r\n\r\nclass ContactInfoFieldArray extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n sameAsHomeCheck: props.initialHomeCheck\r\n };\r\n }\r\n\r\n handleHomeToggle = (ev: any) => {\r\n this.setState({ sameAsHomeCheck: ev.target.checked })\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.props.fields.map((name, index) => {\r\n if (!this.state.sameAsHomeCheck || index === 0)\r\n return (\r\n \r\n );\r\n else\r\n return ();\r\n })}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default ContactInfoFieldArray as React.ComponentClass;","import { Grid, Paper } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { formatSSN } from 'utility/form_formatter';\r\nimport { convertToMoment, convertToNumber, normalizeSSN } from 'utility/form_normalization';\r\nimport { calculateAge } from 'utility/time_utils';\r\nimport { employeeAndDependentsUniqueSsn } from '../../components/forms/employee_upsert_form';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { characterLimit, required, requiredForSubmission, ssn, validAdultAge, validPastDate, validateIfNotReducedWithMessage } from '../../utility/form_validation';\r\nimport { getGenders, getTobaccoUse } from '../../utility/lookup_utils';\r\nimport { CheckboxField, DatePickerField, SSNTextFormField, TextFormField } from '../common/reduxform_fields';\r\nimport { IReduceValidation } from 'redux/reducers';\r\n\r\nexport interface FieldData extends IReduceValidation {\r\n reduceValidation?: boolean;\r\n firstName: string;\r\n lastName: string;\r\n genderId: number;\r\n dateOfBirth: moment.Moment;\r\n age: number;\r\n ssn: string;\r\n tobaccoUse: boolean;\r\n isUSCitizen: boolean;\r\n isEmployeeWaiving: boolean;\r\n};\r\n\r\ninterface Props {\r\n hardValidate: boolean;\r\n isInEligible: boolean;\r\n isEmployeeWaiving: boolean;\r\n changeField: (name: string, value: any) => void;\r\n onWaivingChange: (newValue: boolean) => void;\r\n showTobaccoUseDropDown: boolean;\r\n}\r\n\r\nconst characterLimit100 = characterLimit(100);\r\nconst validateFirstName = required('First Name is required');\r\nconst validateLastName = required('Last Name is required');\r\nconst validateGender = validateIfNotReducedWithMessage('Gender is required');\r\nconst validateTobaccoUser = validateIfNotReducedWithMessage('Tobacco user is required');\r\nconst validateDOB = [validateIfNotReducedWithMessage('Date of Birth is required'), validPastDate, validAdultAge];\r\nconst nativeSelect = { native: true };\r\n\r\nconst EmployeeIdentificationFields = React.memo((props: Props) => {\r\n const handleUpdateAge = (_event: any, dob: moment.Moment) => {\r\n if (dob && dob.isValid()) {\r\n const age = calculateAge(dob);\r\n props.changeField('age', age);\r\n } else {\r\n props.changeField('age', 0);\r\n }\r\n }\r\n\r\n\r\n\r\n return (\r\n \r\n
\r\n

Identification

\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 {getGenders().map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(!props.isInEligible && !props.isEmployeeWaiving) &&\r\n <>\r\n \r\n \r\n \r\n {props.showTobaccoUseDropDown &&\r\n \r\n \r\n \r\n {getTobaccoUse().map(val => (\r\n \r\n ))}\r\n \r\n \r\n }\r\n {!props.showTobaccoUseDropDown &&\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 EmployeeIdentificationFields;","import { Paper } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { convertToMoment, convertToNumber } from 'utility/form_normalization';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { characterLimit, maxNumber, nonNegativeInteger, required, requiredForSubmission, validDate } from '../../utility/form_validation';\r\nimport { getEmploymentStatus, getIneligibleEmploymentStatus, getPayrollCycles, isEmployeeCobra } from '../../utility/lookup_utils';\r\nimport { DatePickerField, TextFormField } from '../common/reduxform_fields';\r\n\r\nexport type FieldData = {\r\n jobTitle: string;\r\n employmentStatusId: number;\r\n hireDate: moment.Moment;\r\n weeklyHours: number;\r\n payrollCycleId: number;\r\n};\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n hardValidate: boolean;\r\n isInEligible: boolean;\r\n isEmployeeWaiving: boolean;\r\n changeField: (filed: string, value: any) => void;\r\n}\r\n\r\ninterface MappedProps {\r\n isCobraEmployee: boolean;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps;\r\n\r\nconst nativeSelect = { native: true };\r\nconst characterLimit100 = characterLimit(100);\r\nconst maxNumber168 = maxNumber(168);\r\nconst hireDateIsRequired = required('Hire Date is required');\r\n\r\nconst EmploymentFields = React.memo((props: Props) => {\r\n const { changeField } = props;\r\n const onChange = React.useCallback((e: any) => {\r\n let newHours = e.target.value === \"137\" ? 40 : 0;\r\n changeField('weeklyHours', newHours);\r\n }, [changeField]);\r\n\r\n return (\r\n \r\n
\r\n

Employment

\r\n
\r\n \r\n {(!props.isInEligible && !props.isEmployeeWaiving) &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n {(props.isInEligible || props.isEmployeeWaiving) &&\r\n \r\n getIneligibleEmploymentStatus().map(val => (\r\n \r\n ))}\r\n {(!props.isInEligible && !props.isEmployeeWaiving) &&\r\n \r\n getEmploymentStatus().map(val => (\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 {(!props.isInEligible && !props.isEmployeeWaiving) &&\r\n \r\n \r\n }\r\n \r\n \r\n
\r\n );\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const employmentStatusId = formValueSelector(ownProps.formName)(state, 'employmentStatusId') as number;\r\n const isCobraEmployee = isEmployeeCobra(employmentStatusId);\r\n\r\n return {\r\n isCobraEmployee,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(EmploymentFields);","import React from 'react';\r\nimport { Grid, Paper } from '@material-ui/core';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { SwitchField, TextFormField } from '../common/reduxform_fields';\r\nimport auth from 'utility/auth';\r\nimport { getWaivedReasons } from '../../utility/lookup_utils';\r\nimport { required } from 'utility/form_validation';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { ReduxState } from 'redux/store';\r\nimport { connect } from 'react-redux';\r\nimport { FORM_NAME } from 'components/forms/employee_upsert_form';\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility';\r\nimport { Plan, PlanReducerState } from 'redux/reducers';\r\n\r\n\r\nexport type FieldData = {\r\n isInEligible: boolean;\r\n isEmployeeWaiving: boolean;\r\n waiverReasonId?: number;\r\n spouseMinimumAge?: number;\r\n};\r\n\r\ninterface ComponentProps {\r\n enableInEligibleFlag: boolean;\r\n enableWaiverReason?: boolean;\r\n employeeWaivedReasonId?: number;\r\n onInEligibilityChange: (newValue: boolean) => void;\r\n onWaivingChange: (newValue: boolean) => void;\r\n isEnrollmentConfirmed: boolean;\r\n}\r\n\r\n\r\ninterface MappedProps {\r\n isInEligible: boolean;\r\n isWaiving: boolean;\r\n planState: PlanReducerState;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps;\r\n\r\nconst EnrollmentFields = React.memo((props: Props) => {\r\n\r\n const onChange = (inEligibilityChangeEvent: React.ChangeEvent) => {\r\n if (inEligibilityChangeEvent.target.checked) {\r\n props.onInEligibilityChange(true);\r\n } else {\r\n props.onInEligibilityChange(false);\r\n }\r\n }\r\n\r\n const onWaivingChange = (waivingChangeEvent: React.ChangeEvent) => {\r\n if (waivingChangeEvent.target.checked) {\r\n props.onWaivingChange(true);\r\n } else {\r\n props.onWaivingChange(false);\r\n }\r\n }\r\n\r\n const fieldRequired = React.useMemo(() => required('This field is required'), []);\r\n const isEmployee = auth.isUserEmployee();\r\n let planList = props.planState.list;\r\n let isWaiverToggleEnabled = false;\r\n planList.forEach((plan: Plan) => {\r\n if (plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.DisplayWaiveAll)) {\r\n isWaiverToggleEnabled = true;\r\n }\r\n });\r\n let reasons = getWaivedReasons();\r\n\r\n return (\r\n <>\r\n{props.isEnrollmentConfirmed &&\r\n \r\n
\r\n

Enrollment

\r\n
\r\n \r\n {(!isEmployee && isWaiverToggleEnabled) &&\r\n \r\n \r\n \r\n }\r\n {props.enableInEligibleFlag &&\r\n \r\n \r\n \r\n }\r\n\r\n {props.enableWaiverReason && isWaiverToggleEnabled &&\r\n
\r\n \r\n \r\n {reasons.map(val => (\r\n \r\n ))}\r\n \r\n
}\r\n
\r\n
\r\n }\r\n\r\n );\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const isInEligible = (formValueSelector(FORM_NAME)(state, 'isInEligible'));\r\n const isWaiving = (formValueSelector(FORM_NAME)(state, 'isEmployeeWaiving'));\r\n const planState = state.plan;\r\n return {\r\n isInEligible,\r\n isWaiving,\r\n planState\r\n };\r\n}\r\n\r\n\r\n\r\nexport default connect(mapStateToProps)(EnrollmentFields);\r\n\r\n","import { Paper } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport React from 'react';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { connect } from 'react-redux';\r\nimport { convertToNumber, convertToMoment } from 'utility/form_normalization';\r\nimport { requiredForSubmission, required } from '../../utility/form_validation';\r\nimport { getMaritalStatus, getLookupId, LOOKUP_TYPE_IDS, } from '../../utility/lookup_utils'; //getLookupId, LOOKUP_TYPE_IDS\r\nimport { TextFormField, DatePickerField } from '../common/reduxform_fields';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { ReduxState } from 'redux/store';\r\n\r\n\r\nexport type FieldData = {\r\n maritalStatusId?: number;\r\n marriageDate?: Date;\r\n};\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n hardValidate: boolean;\r\n isEmployeeWaiving: boolean;\r\n onMaritalStatusChange: (event: any) => void;\r\n}\r\ninterface MappedProps {\r\n maritalStatusId?: number;\r\n}\r\ninterface Props extends ComponentProps, MappedProps {\r\n}\r\n\r\nconst nativeSelect = { native: true };\r\n\r\nconst validateMartialStatus = (maritalStatusId: number, formData: any) => {\r\n const dependents = formData.dependents;\r\n const marriedId = getLookupId('MARRIED', LOOKUP_TYPE_IDS.maritalStatus);\r\n const domesticPartnershipId = getLookupId('DOMESTICPARTNERSHIP', LOOKUP_TYPE_IDS.maritalStatus);\r\n\r\n const spouseDependentTypeId = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.dependentType);\r\n const domesticPartnerDependentTypeId = getLookupId(\"DOMESTICPARTNER\", LOOKUP_TYPE_IDS.dependentType);\r\n\r\n const isSpouseInfoRequired = maritalStatusId === marriedId || maritalStatusId === domesticPartnershipId;\r\n\r\n const isSpouseInfoMissing =\r\n dependents === undefined\r\n || dependents.length === 0\r\n || dependents.filter((d: any) => {\r\n return d.dependentTypeId === spouseDependentTypeId\r\n || d.dependentTypeId === domesticPartnerDependentTypeId;\r\n }).length === 0;\r\n\r\n if (isSpouseInfoMissing && isSpouseInfoRequired) {\r\n return \"Must add a spouse or partner as a dependent\";\r\n }\r\n return undefined;\r\n\r\n}\r\nconst MaritalPartnerStatusFields = React.memo((props: Props) => { \r\n const fieldRequired = React.useMemo(() => required('This field is required'), []);\r\n return (\r\n \r\n
\r\n

Marital/Partner Status

\r\n
\r\n \r\n \r\n \r\n \r\n {getMaritalStatus().map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n
\r\n );\r\n});\r\nfunction mapStateToProps(state: ReduxState, ownProps: Props): MappedProps {\r\n const maritalStatusId = formValueSelector(ownProps.formName)(state, 'maritalStatusId');\r\n\r\n return {\r\n maritalStatusId\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(MaritalPartnerStatusFields);","import { InputAdornment, Paper } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { characterLimit, nonNegativeNumber, requiredForSubmission } from '../../utility/form_validation';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\n\r\nexport type FieldData = {\r\n annualSalary: number\r\n};\r\n\r\ninterface Props {\r\n disabled: boolean;\r\n isLifeOrDisabilityMultiSalary?: boolean;\r\n}\r\n\r\nconst characterLimit16 = characterLimit(16);\r\n\r\nconst inputProps = {\r\n startAdornment: ($)\r\n};\r\n\r\nconst salaryRequiredValidator = (value?: number, values?: any, props?: Props) => {\r\n\r\n if (props && props.isLifeOrDisabilityMultiSalary === true && ( value == undefined || value == null || value == 0 )) \r\n {\r\n return \"Salary is required\";\r\n }\r\n return undefined;\r\n}\r\n\r\nconst SalaryFields = React.memo((props: Props) => {\r\n return (\r\n \r\n
\r\n

Salary

\r\n
\r\n This information is required to calculate Benefit Amounts for life and/or disability insurance.\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 SalaryFields;","import React, { Dispatch } from 'react';\r\nimport { FieldArray, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { AddressType } from 'redux/reducers';\r\nimport { validateEmployeeSSN } from 'utility';\r\nimport auth from 'utility/auth';\r\nimport { flattenObject } from 'utility/simple_utils';\r\nimport { styles } from '../../utility/common_styles';\r\nimport MessageCard from '../common/message_card';\r\nimport DependentFieldArray, { FieldData as DependentFieldArrayData } from '../forms/dependent_field_array';\r\nimport CobraFields, { FieldData as CobraFieldData } from './cobra_fields';\r\nimport ContactInfoFieldArray, { FieldData as ContactInfoFieldArrayData } from './contact_info_field_array';\r\nimport EmployeeIdentificationFields, { FieldData as IdentificationFieldData } from './employee_identification_fields';\r\nimport EmploymentFields, { FieldData as EmploymentFieldData } from './employment_fields';\r\nimport EnrollmentFields, { FieldData as EnrollmentFieldData } from './enrollment_fields';\r\nimport MaritalPartnerStatusFields, { FieldData as MaritalPartnerStatusFieldData } from './marital_partner_status_fields';\r\nimport SalaryFields, { FieldData as SalaryFieldData } from './salary_fields';\r\nimport { ElectionDependent } from '../../redux/reducers/employee_reducer';\r\n\r\nexport const FORM_NAME = 'EMPLOYEE_UPSERT';\r\n\r\nexport type FormData = IdentificationFieldData & MaritalPartnerStatusFieldData & ContactInfoFieldArrayData & EnrollmentFieldData & EmploymentFieldData & SalaryFieldData & DependentFieldArrayData & CobraFieldData;\r\n\r\ninterface ComponentProps {\r\n isLifeOrDisabilityMultiSalary?: boolean;\r\n touchForm: boolean;\r\n companyId: string;\r\n enrollmentId: string;\r\n employeeId: string;\r\n enableInEligibleFlag: boolean;\r\n electionSubmittedOrCompleted: boolean;\r\n onDependentChange: (depId: string, operation: 'ADD' | 'DELETE') => void;\r\n onEmployeeEligibilityChange: (newValue: boolean) => void;\r\n onEmployeeWaivingChange: (newValue: boolean) => void;\r\n isEnrollmentConfirmed: boolean;\r\n electedDependents: ElectionDependent[];\r\n isAllstateOffered: boolean;\r\n isAllstateCriticalOffered: boolean;\r\n spouseMinimumAge?: number;\r\n}\r\n\r\ninterface Props extends InjectedFormProps, ComponentProps { }\r\n\r\ninterface State {\r\n maritalStatusId?: number;\r\n isInEligible: boolean;\r\n isEmployeeWaiving: boolean;\r\n waiverReasonId?: number;\r\n enableWaiverReason?: boolean;\r\n}\r\n\r\nconst asyncValidate = (values: FormData, dispatch: Dispatch, props: ComponentProps, field: string) => {\r\n if (field === 'ssn' && values.ssn && values.ssn.length > 0) {\r\n return validateEmployeeSSN(props.companyId, props.enrollmentId, props.employeeId, values.ssn)().then(result => {\r\n if (!result) {\r\n throw { ssn: 'SSN is already being used. Please contact your Benefits Administrator.' }\r\n }\r\n });\r\n }\r\n return Promise.resolve();\r\n}\r\n\r\nexport const employeeAndDependentsUniqueSsn = (_value: any, formValues: FormData) => {\r\n if (_value === undefined)\r\n return undefined;\r\n\r\n const allSSNs = formValues.dependents.filter(x => x.ssn != undefined && x.ssn != \"\").map(x => x.ssn!);\r\n if (formValues.ssn) {\r\n allSSNs.push(formValues.ssn);\r\n }\r\n\r\n const duplicateSSN = allSSNs.filter(ssn => ssn === _value).length > 1;\r\n\r\n return duplicateSSN ? 'Another member of your enrollment already has this SSN' : undefined;\r\n}\r\n\r\nclass EmployeeUpsertForm extends React.PureComponent {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n maritalStatusId: this.props.initialValues.maritalStatusId,\r\n isInEligible: this.props.initialValues.isInEligible ? this.props.initialValues.isInEligible : false,\r\n isEmployeeWaiving: this.props.initialValues.isEmployeeWaiving ? this.props.initialValues.isEmployeeWaiving : false,\r\n waiverReasonId: this.props.initialValues.waiverReasonId,\r\n enableWaiverReason: this.props.initialValues.isEmployeeWaiving\r\n }\r\n }\r\n isEmployee = auth.isUserEmployee();\r\n\r\n componentDidMount() {\r\n this.touchFields();\r\n }\r\n componentDidUpdate() {\r\n this.touchFields();\r\n }\r\n touchFields() {\r\n if (this.props.touchForm) {\r\n const fieldNames = flattenObject(this.props.initialValues);\r\n this.props.touch(...fieldNames as any);\r\n }\r\n else {\r\n this.props.touch(\"firstName\", \"lastName\", \"genderId\", \"dateOfBirth\");\r\n }\r\n }\r\n\r\n\r\n\r\n get homeAddress() {\r\n if (this.props.initialValues.contactInformation)\r\n return this.props.initialValues.contactInformation.find(contactInfo => contactInfo.addressType === AddressType.Home);\r\n else return undefined;\r\n }\r\n\r\n get initialHomeCheck() {\r\n if (this.props.initialValues && this.props.initialValues.contactInformation && this.props.initialValues.contactInformation[0])\r\n return this.props.initialValues.contactInformation[0].sameasHome;\r\n else return false;\r\n }\r\n\r\n onMaritalStatusChange = (event: any) => {\r\n const maritalStatusId = Number(event.target.value);\r\n this.setState({ maritalStatusId: maritalStatusId });\r\n }\r\n\r\n onInEligibilityChange = (newValue: boolean) => {\r\n this.setState({\r\n isInEligible: newValue\r\n });\r\n this.props.onEmployeeEligibilityChange(newValue);\r\n }\r\n\r\n onWaivingChange = (newValue: boolean) => {\r\n this.setState({\r\n isEmployeeWaiving: newValue,\r\n waiverReasonId: 160,\r\n enableWaiverReason: newValue\r\n });\r\n this.props.onEmployeeWaivingChange(newValue);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n

\r\n Personal Information\r\n

\r\n {this.isEmployee ?\r\n All fields are required, unless stated otherwise.}\r\n elevation={0}\r\n />\r\n : \r\n <>\r\n \r\n Please provide the information required below to complete enrollment.\r\n \r\n
\r\n All fields are required.\r\n \r\n }\r\n
\r\n \r\n {this.props.enableInEligibleFlag && \r\n \r\n }\r\n {(!this.state.isInEligible && !this.state.isEmployeeWaiving) && \r\n \r\n }\r\n \r\n {(!this.state.isInEligible) &&\r\n <>\r\n {(!this.state.isEmployeeWaiving && )}\r\n {(!this.state.isEmployeeWaiving && )}\r\n \r\n
\r\n

\r\n Dependent Information\r\n

\r\n \r\n Please provide the information required below to complete enrollment.\r\n
\r\n All fields are required.\r\n
\r\n
\r\n \r\n \r\n }\r\n \r\n);\r\n}\r\n};\r\n\r\nexport default reduxForm({ form: FORM_NAME, asyncValidate, asyncBlurFields: ['ssn'] })(EmployeeUpsertForm as any);","import { Button, createStyles, withStyles, WithStyles } from '@material-ui/core';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport AbandonChangesOption from 'components/common/AbandonChangesOption';\r\nimport SaveButton from 'components/common/save_button';\r\nimport BeneficiariesForm, { FormBeneficiary, FormData } from 'components/forms/beneficiaries_form';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { initialize, isDirty, isSubmitting, isValid, submit } from 'redux-form';\r\nimport { deleteBeneficiary, updateBeneficiaries } from 'redux/actions';\r\nimport { BeneficiaryDTO, Employee, EnrollmentReducerState, PlanReducerState } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { getById, isEnrollmentSubmitted, CONFIGURATION_TYPE_IDS } from 'utility';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { simpleCompare } from 'utility/simple_utils';\r\nimport { FORM_NAME as BENEFICIARIES } from '../../components/forms/beneficiaries_form';\r\n\r\ninterface ComponentProps {\r\n employee: Employee;\r\n onBackButtonClicked: () => void;\r\n onDone: (jumpToNextStep?: boolean) => void;\r\n endDateIsInFuture: boolean;\r\n endDateMessage: string;\r\n isAllstateOffered: boolean;\r\n}\r\n\r\ninterface StateProps {\r\n submitting: boolean;\r\n dirty: boolean;\r\n valid: boolean;\r\n employee: Employee;\r\n enrollment: EnrollmentReducerState;\r\n planState: PlanReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n saveBeneficiaries: (beneficiaries: BeneficiaryDTO[]) => Promise;\r\n deleteBeneficiary: (beneficiariesId: string) => Promise;\r\n submitForm: () => void;\r\n resetForm: (formData: FormData) => void;\r\n}\r\n\r\ntype Props = ComponentProps & DispatchProps & WithStyles & StateProps & WithWidth;\r\n\r\nconst BeneficiariesContainer = React.memo((props: Props) => {\r\n const { deleteBeneficiary, employee, enrollment, } = props;\r\n const [loading, setLoading] = React.useState(false);\r\n const [continueToNextPage, setContinueToNextPage] = React.useState(false);\r\n const primaryBeneficiaryTypeId = getLookupId('PRIMARY', LOOKUP_TYPE_IDS.beneficiaryType);\r\n const plansWithBeneficiaries = props.planState.list.filter(x=>x.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.beneficiaries));\r\n\r\n let locNames = \"\";\r\n\r\n employee.elections.forEach(plan => {\r\n if (plansWithBeneficiaries.some(f => { return f.id === plan.planId; })){\r\n \r\n locNames += getById(plan.lineOfCoverageId) + \", \";\r\n }\r\n })\r\n locNames = locNames.replace(/,\\s*$/, \"\");\r\n locNames = locNames.replace(/, ((?:.(?!, ))+)$/, ' and $1');\r\n\r\n const beneficiaries = React.useMemo((): FormBeneficiary[] => {\r\n if (employee.beneficiaries.length > 0) {\r\n return employee.beneficiaries.sort(simpleCompare('dependentTypeId'));\r\n }\r\n else {\r\n return [];\r\n }\r\n }, [employee]);\r\n const enrollmentSubmitted = isEnrollmentSubmitted(employee, enrollment);\r\n const enrollmentSubmittedOrWaived = isEnrollmentSubmitted(employee, enrollment) || employee.isEmployeeWaiving;\r\n\r\n const handleDeleteClick = React.useCallback(async (id: string) => {\r\n if (enrollmentSubmitted) return;\r\n if (id) {\r\n setLoading(true);\r\n await deleteBeneficiary(id);\r\n setLoading(false);\r\n }\r\n }, [deleteBeneficiary]);\r\n\r\n const saveBeneficiaries = React.useCallback((goToNextStep: boolean) => {\r\n setContinueToNextPage(goToNextStep)\r\n setTimeout(() => props.submitForm(), 0)\r\n }, [])\r\n\r\n const handleSubmit = async (formValues: FormData) => {\r\n if (enrollmentSubmitted) return;\r\n setLoading(true);\r\n await props.saveBeneficiaries(formValues.beneficiaries.map(ben => ({ ...ben, dateOfBirth: ben.dateOfBirth && ben.dateOfBirth.startOf('day') ? ben.dateOfBirth.startOf('day').format() : '' })));\r\n setLoading(false);\r\n props.resetForm(formValues);\r\n props.onDone(continueToNextPage)\r\n }\r\n\r\n const formLevelWarnings = React.useCallback((formValues: FormData) => {\r\n const warnings: { [key: string]: string } = {};\r\n if (formValues.beneficiaries === undefined)\r\n return warnings;\r\n\r\n //Benefit Percentage adds to 100%\r\n const primaryPercentSum = formValues.beneficiaries.filter(ben => ben.beneficiaryTypeId === primaryBeneficiaryTypeId).reduce((acc, ben) => acc + ben.benefitPercentage, 0);\r\n const contingentPercentSum = formValues.beneficiaries.filter(ben => ben.beneficiaryTypeId !== primaryBeneficiaryTypeId).reduce((acc, ben) => acc + ben.benefitPercentage, 0);\r\n if (primaryPercentSum !== 100 || (contingentPercentSum !== 0 && contingentPercentSum !== 100))\r\n warnings['_warning'] = 'Percentage of Benefit must add to 100% for each Beneficiary Type';\r\n return warnings;\r\n }, [primaryBeneficiaryTypeId]);\r\n /* ------------------ */\r\n\r\n const { classes = {}, onBackButtonClicked: onGoBack, width } = props;\r\n const fullWidthButton = width === 'xs';\r\n return (\r\n
\r\n
Beneficiaries
\r\n
Here you can add beneficiaries to your {locNames} plan(s). These are the people who would receive the payout of the benefit.
\r\n \r\n
\r\n\r\n {!props.endDateIsInFuture &&\r\n
\r\n {props.endDateMessage}\r\n
\r\n }\r\n\r\n
\r\n
\r\n \r\n Go Back\r\n \r\n saveBeneficiaries(false)}\r\n className={fullWidthButton ? classes.buttonMarginMobile : classes.buttonMargin}\r\n variant='outlined'\r\n loading={props.submitting || loading}\r\n disabled={!props.valid || enrollmentSubmittedOrWaived}\r\n fullWidth={fullWidthButton}\r\n >\r\n Save Beneficiaries\r\n \r\n saveBeneficiaries(true)}\r\n loading={props.submitting || loading}\r\n disabled={!props.valid || enrollmentSubmittedOrWaived}\r\n variant='contained'\r\n color='primary'\r\n className={classes.buttonMargin}\r\n fullWidth={fullWidthButton}\r\n >\r\n Save & Continue \r\n \r\n
\r\n {!enrollmentSubmittedOrWaived &&\r\n \r\n }\r\n
\r\n );\r\n});\r\n\r\nconst styles = createStyles({\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n buttonMargin: {\r\n margin: 4\r\n },\r\n buttonMarginMobile: {\r\n margin: '15px 4px'\r\n },\r\n cancelButtonMobile: {\r\n margin: '15px 4px',\r\n paddingRight: 15\r\n },\r\n container: {\r\n marginTop: 25\r\n },\r\n text: {\r\n color: palette.grey.text\r\n },\r\n header: {\r\n fontSize: 24,\r\n marginBottom: 15\r\n },\r\n subheader: {\r\n fontSize: 14,\r\n marginBottom: 15\r\n },\r\n saveDisclaimer: {\r\n fontStyle: 'italic',\r\n textAlign: 'right',\r\n fontSize: 15\r\n },\r\n disclaimer: {\r\n textAlign: 'center',\r\n fontSize: 16\r\n }\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const employee = state.employee.list.find(emp => emp.id === ownProps.employee.id)!;\r\n return {\r\n submitting: isSubmitting(BENEFICIARIES)(state),\r\n dirty: isDirty(BENEFICIARIES)(state),\r\n valid: isValid(BENEFICIARIES)(state),\r\n employee,\r\n enrollment: state.enrollment,\r\n planState: state.plan\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n submitForm: () => dispatch(submit(BENEFICIARIES)),\r\n deleteBeneficiary: beneficiaryId => dispatch(deleteBeneficiary(ownProps.employee.id, beneficiaryId)),\r\n saveBeneficiaries: beneficiaries => dispatch(updateBeneficiaries(ownProps.employee.id, beneficiaries)),\r\n resetForm: (data: FormData) => dispatch(initialize(BENEFICIARIES, data))\r\n };\r\n}\r\n\r\nexport default compose(\r\n withWidth(),\r\n withStyles(styles),\r\n connect(mapStateToProps, mapDispatchToProps)\r\n)(BeneficiariesContainer)\r\n","import { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\ninterface Props extends StyledComponentProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst StepCircle = (props: Props) => {\r\n return (\r\n
\r\n \r\n {props.children}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n circle: {\r\n borderRadius: '50%',\r\n width: 24,\r\n height: 24,\r\n background: palette.blue.primary,\r\n marginTop: 8,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n circleNumber: {\r\n color: 'white',\r\n fontSize: 16,\r\n },\r\n};\r\n\r\nexport default StepCircle;","import React from 'react';\r\nimport {reduxForm, InjectedFormProps } from \"redux-form\"; \r\nimport { Grid } from '@material-ui/core';\r\nimport { Field } from 'redux-form';\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\nimport { required } from 'utility/form_validation';\r\n\r\n\r\nexport const FORM_NAME = 'AMERICAN_PUBLIC_LIFE_BROCHURE_FORM';\r\nexport type FormData = {\r\n isAmericanPublicLife?:boolean;\r\n}\r\n\r\ninterface Props extends InjectedFormProps{}\r\n\r\nconst requiredAmericanPublicLifeBrochure = required(\"American Public Life check is required.\");\r\n\r\nconst AmericanPublicLifeForm = (props: Props) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n}\r\nexport default reduxForm({ form: FORM_NAME })(AmericanPublicLifeForm);\r\n\r\n","import React from 'react';\r\nimport {reduxForm, InjectedFormProps } from \"redux-form\"; \r\nimport { Grid, InputAdornment } from '@material-ui/core';\r\nimport { Field } from 'redux-form';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport { required,nonNegativeIntegerRounding } from 'utility/form_validation';\r\n\r\n\r\nexport const FORM_NAME = 'BASIC_LIFE_PREVIOUS_AMOUNT_FORM';\r\nexport type FormData = {\r\n basicLifePreviousAmount?:number;\r\n}\r\n\r\ninterface Props extends InjectedFormProps{}\r\n\r\nconst inputProps = {\r\n startAdornment: ($)\r\n};\r\nconst requiredBasicLifePrevAmt = required(\"Basic Life Previous Amount is required.\");\r\n\r\nconst BasicLifePreviousAmountForm = (props: Props) => {\r\n if (props.initialValues.basicLifePreviousAmount == undefined || props.initialValues.basicLifePreviousAmount == null)\r\n {\r\n props.initialValues.basicLifePreviousAmount = 0;\r\n }\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n}\r\nexport default reduxForm({ form: FORM_NAME })(BasicLifePreviousAmountForm);\r\n\r\n","import React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { PolicyEnrollee } from 'redux/reducers';\r\nimport { generateLabel } from 'utility/form_utils';\r\nimport { styles } from \"../../utility/common_styles\";\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\n\r\nexport type VisionEnrollee = PolicyEnrollee & {\r\n checked: boolean;\r\n}\r\n\r\nexport type FieldData = {\r\n visionExistingCoverage: VisionEnrollee[];\r\n}\r\n\r\ninterface Props extends WrappedFieldArrayProps { }\r\n\r\nconst ExistingCoverageVisionFieldArray: React.FunctionComponent = (props: Props) => {\r\n const { fields } = props;\r\n return (\r\n <>\r\n {fields.map((name, index, fields) => {\r\n const visionEnrollee = fields.get(index);\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 ExistingCoverageVisionFieldArray;","import { FormControlLabel, Grid, Paper, Radio, RadioGroup } from '@material-ui/core';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { arrayPush, arrayRemoveAll, change, Field, FieldArray, formValueSelector } from 'redux-form';\r\nimport { Dependent, Employee } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\nimport { ExistingCoverageFieldArrayData } from './existing_coverage_fields';\r\nimport { PolicyEnrolleeData } from './existing_coverage_enrollee_field_array';\r\nimport { FORM_NAME as existingCoverageForm } from './existing_coverage_form';\r\nimport ExistingCoverageVisionFieldArray, { FieldData as VisionEnrolleeFieldData } from './existing_coverage_vision_field_array';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from '../../utility';\r\n\r\nexport type FieldData = VisionEnrolleeFieldData & {\r\n electionCoveredByEffectiveDate?: boolean;\r\n existingRxCoverage?: boolean;\r\n dentalCoveredLastYear?: boolean;\r\n dentalCoveredByEmployerBefore?: boolean;\r\n dentalPriorOrthodontia?: boolean;\r\n};\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n isMedical: boolean;\r\n isMedicalRX: boolean;\r\n isDental: boolean;\r\n isVision: boolean;\r\n effectiveDate?: string;\r\n employee: Employee;\r\n lineOfCoverageId: number;\r\n enforceCaptureOfExistingCoverage: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n existingCoverages: ExistingCoverageFieldArrayData[];\r\n electionCoveredByEffectiveDate: string;\r\n reduceValidation?: boolean;\r\n}\r\ninterface DispatchProps {\r\n arrayPush: (policy: ExistingCoverageFieldArrayData) => void;\r\n clearPolicies: () => void;\r\n updateExistingCoverageFormValues: (field: string, value: any) => void;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps & DispatchProps\r\n\r\nconst ExistingCoverageBaseFields = (props: Props) => {\r\n const { existingCoverages, employee, arrayPush, clearPolicies, updateExistingCoverageFormValues, isMedical, isMedicalRX, isDental, isVision, effectiveDate, electionCoveredByEffectiveDate } = props;\r\n const addFirstPolicy = () => {\r\n let policyEnrollees: PolicyEnrolleeData[] = [];\r\n policyEnrollees.push({\r\n id: employee.id,\r\n fullName: employee.fullName,\r\n isEmployee: true,\r\n checked: false\r\n });\r\n employee.dependents.forEach((dep: Dependent) => {\r\n policyEnrollees.push({\r\n id: dep.id,\r\n fullName: dep.fullName,\r\n isEmployee: false,\r\n checked: false\r\n })\r\n });\r\n arrayPush({ enrollees: policyEnrollees });\r\n }\r\n const handleUpdateElectionCoveredBy = React.useCallback((checked: boolean) => {\r\n updateExistingCoverageFormValues('electionCoveredByEffectiveDate', checked);\r\n if (isDental) {\r\n updateExistingCoverageFormValues('dentalCoveredLastYear', checked);\r\n if (!checked) {\r\n updateExistingCoverageFormValues('dentalCoveredByEmployerBefore', false);\r\n updateExistingCoverageFormValues('dentalCoveredLastYear', false);\r\n updateExistingCoverageFormValues('dentalPriorOrthodontia', false);\r\n updateExistingCoverageFormValues('existingRxCoverage', false);\r\n }\r\n }\r\n }, [updateExistingCoverageFormValues, isDental])\r\n const handleAddFirstPolicy = React.useCallback((_event: any, checked: string) => {\r\n if (checked === \"1\" && (existingCoverages || []).length === 0) {\r\n addFirstPolicy();\r\n } else {\r\n clearPolicies();\r\n }\r\n handleUpdateElectionCoveredBy(checked === \"1\");\r\n }, [existingCoverages, employee, arrayPush, clearPolicies, handleUpdateElectionCoveredBy]);\r\n\r\n const isMedicalLOC = props.lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isDentalLOC = props.lineOfCoverageId === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isVisionLOC = props.lineOfCoverageId === getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const label = `${isMedical || isMedicalLOC ? 'medical' : isDental || isDentalLOC ? 'dental' : isVision || isVisionLOC ? 'vision' : ''}`;\r\n\r\n if(props.enforceCaptureOfExistingCoverage && props.existingCoverages && props.existingCoverages.length == 0){\r\n addFirstPolicy();\r\n handleUpdateElectionCoveredBy(true);\r\n }\r\n\r\n return (\r\n \r\n
\r\n Existing Coverage - {(isMedical || isMedicalLOC) && 'Medical'}{(isDental || isDentalLOC) && 'Dental'}{(isVision || isVisionLOC) && 'Vision'}\r\n
\r\n \r\n \r\n
\r\n {props.enforceCaptureOfExistingCoverage \r\n ? generateLabel('Your selection requires you to provide Carrier Name & Policy Number of your existing coverage.')\r\n : generateLabel(`Will you or any of your dependents be covered by another ${label} plan on or after ${effectiveDate}`)}\r\n
\r\n {!props.enforceCaptureOfExistingCoverage && \r\n \r\n } label=\"Yes\" />\r\n } label=\"No\" />\r\n \r\n }\r\n
\r\n {isMedical && isMedicalRX && electionCoveredByEffectiveDate === \"1\" &&\r\n \r\n \r\n \r\n }\r\n {isDental && electionCoveredByEffectiveDate === \"1\" &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {isVision && electionCoveredByEffectiveDate === \"1\" &&\r\n \r\n

Which of the following are covered under another Eye Care Plan?

\r\n \r\n
\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst generateLabel = (text: string) => {\r\n return

{text}

\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const existingCoverages = formValueSelector(ownProps.formName)(state, 'policies');\r\n const electionCoveredByEffectiveDate = formValueSelector(ownProps.formName)(state, 'electionCoveredByEffectiveDate');\r\n return {\r\n existingCoverages,\r\n electionCoveredByEffectiveDate: electionCoveredByEffectiveDate === true ? \"1\" : \"0\",\r\n reduceValidation: state.enrollment.reduceValidation\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n arrayPush: policy => dispatch(arrayPush(ownProps.formName, 'policies', policy)),\r\n clearPolicies: () => dispatch(arrayRemoveAll(ownProps.formName, 'policies')),\r\n updateExistingCoverageFormValues: (field: string, value: any) => (dispatch(change(existingCoverageForm, field, value)))\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n ...commonStyles,\r\n noVertPadding: {\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n toLeftLabel: {\r\n marginLeft: '-12px'\r\n },\r\n radioInRow: {\r\n display: 'inline-block'\r\n }\r\n}\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ExistingCoverageBaseFields);","import { ButtonBase, Grid, Paper } from '@material-ui/core';\r\nimport { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport PlaylistAdd from '@material-ui/icons/PlaylistAdd';\r\nimport React from 'react';\r\nimport palette from '../../utility/palette';\r\n\r\ninterface ComponentProps {\r\n onClick: () => void;\r\n}\r\n\r\ninterface Props extends ComponentProps, StyledComponentProps { }\r\n\r\nconst AddExistingCoverageCard = (props: Props) => {\r\n const { onClick } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
Add Existing Coverage
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n body: {\r\n backgroundColor: palette.grey.dark,\r\n borderWidth: 1,\r\n borderStyle: 'dashed',\r\n borderColor: palette.grey.text,\r\n padding: '20px 0',\r\n width: '100%',\r\n textAlign: 'center'\r\n },\r\n button: {\r\n width: '100%'\r\n },\r\n icon: {\r\n color: palette.grey.text,\r\n fontSize: 60\r\n },\r\n text: {\r\n color: palette.blue.primary,\r\n textTransform: 'uppercase'\r\n }\r\n}\r\n\r\nexport default AddExistingCoverageCard;","import { Grid, Typography } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { convertToMoment } from 'utility/form_normalization';\r\nimport { characterLimit, requiredForSubmission, validateIfNotReducedWithMessage } from 'utility/form_validation';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { DatePickerField, TextFormField } from '../common/reduxform_fields';\r\nimport { IReduceValidation } from 'redux/reducers';\r\n\r\n\r\nexport interface FieldData extends IReduceValidation {\r\n carrierName?: string;\r\n existingCoverageEffectiveDate?: moment.Moment;\r\n existingCoverageEndDate?: moment.Moment;\r\n groupNumber?: string;\r\n policyNumberIdNumber?: string;\r\n reduceValidation?: boolean;\r\n}\r\n\r\ninterface ComponentProps\r\n{\r\n rootName: string;\r\n touch(...field: string[]): void;\r\n}\r\n\r\ntype Props = ComponentProps;\r\n\r\n\r\n\r\nconst ExistingCoverageCarrierInformation = (props: Props) => {\r\n const { rootName } = props;\r\n const characterLimit100 = React.useCallback(characterLimit(100), []);\r\n const validateCarrierName = React.useCallback(validateIfNotReducedWithMessage('Carrier Name is required'), []);\r\n const validateIdNumber = React.useCallback(validateIfNotReducedWithMessage('Id Number is required'), []);\r\n\r\n React.useEffect(() => {\r\n props.touch(`${rootName}.carrierName`);\r\n props.touch(`${rootName}.policyNumberIdNumber`);\r\n }, []);\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n Existing Coverage Carrier Information\r\n
\r\n You can find this information on your health insurance ID card or the carrier's website.\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 ExistingCoverageCarrierInformation;","import { Grid, Typography } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { convertToMoment, convertToNumber } from 'utility/form_normalization';\r\nimport { required, requiredForSubmission, requiredForSubmissionIf, requiredIf, validPastDate } from 'utility/form_validation';\r\nimport { getExistingCoverageTypes } from 'utility/lookup_utils';\r\nimport { styles } from \"../../utility/common_styles\";\r\nimport { CheckboxField, DatePickerField, TextFormField } from '../common/reduxform_fields';\r\n\r\nexport type FieldData = {\r\n existingCoverageCancellationDate?: moment.Moment;\r\n coverageThroughEmployer?: boolean;\r\n employerName?: string;\r\n employmentDate?: moment.Moment;\r\n existingCoverageType?: string;\r\n}\r\n\r\ninterface ComponentProps {\r\n priorEmploymentInformation?: boolean;\r\n rootName: string;\r\n formName: string;\r\n}\r\n\r\ninterface MappedProps {\r\n employerCoverage?: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps { }\r\n\r\nconst ExistingCoverageEmploymentInformation = (props: Props) => {\r\n const { rootName } = props;\r\n const priorEmploymentInformation = props.priorEmploymentInformation || false;\r\n const nativeSelect = { native: true };\r\n const existingCoverageTypes = React.useMemo(getExistingCoverageTypes, []);\r\n const priorEmployerCoverage = props.employerCoverage === true;\r\n const validateCancellationDate = React.useCallback(requiredIf(priorEmployerCoverage, 'Cancellation Date is required'), [priorEmployerCoverage]);\r\n const validateEmployerName = React.useCallback(required('Employer Name is required'), []);\r\n const validateEmploymentDate = React.useCallback(required('Employment Date is required'), []);\r\n const validateCoverageType = React.useCallback(required('Coverage Type is required'), []);\r\n const warnCancellationDate = React.useCallback(requiredForSubmissionIf(priorEmployerCoverage),[priorEmployerCoverage]);\r\n return (\r\n <>\r\n {priorEmploymentInformation &&\r\n
\r\n \r\n \r\n \r\n Employment Information\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {priorEmployerCoverage &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n existingCoverageTypes.map((val: any) => (\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\nfunction mapStateToProps(state: ReduxState, ownProps: Props): MappedProps {\r\n const employerCoverage = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.coverageThroughEmployer`)\r\n return {\r\n employerCoverage\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, null)(ExistingCoverageEmploymentInformation)","import React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { PolicyEnrollee } from 'redux/reducers';\r\nimport { generateLabel } from 'utility/form_utils';\r\nimport { styles } from \"../../utility/common_styles\";\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\n\r\nexport type PolicyEnrolleeData = PolicyEnrollee & {\r\n checked: boolean;\r\n}\r\n\r\nexport type FieldData = {\r\n enrollees: PolicyEnrolleeData[];\r\n}\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n}\r\n\r\nconst ExistingCoverageEnrolleeFieldArray: React.FunctionComponent = (props: Props) => {\r\n const { fields } = props;\r\n return (\r\n <>\r\n {fields.map((name, index, fields) => {\r\n const policyEnrollee = fields.get(index);\r\n const { fullName } = policyEnrollee\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 ExistingCoverageEnrolleeFieldArray;","import { FormControlLabel, FormHelperText, Grid, Radio, Typography } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { change, Field, FieldArray, formValueSelector } from 'redux-form';\r\nimport { Dependent, Employee, PolicyEnrollee } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { convertToMoment, convertToNumber } from 'utility/form_normalization';\r\nimport { generateLabel } from 'utility/form_utils';\r\nimport { characterLimit, required, requiredForSubmission, validPastDate } from 'utility/form_validation';\r\nimport { getGenders, getLookupId, getRelationshipsToPolicyHolder, getStates, getWorkStatus, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport { styles } from \"../../utility/common_styles\";\r\nimport { CheckboxField, DatePickerField, RadioControlGroupField, TextFormField } from '../common/reduxform_fields';\r\nimport ExistingCoverageEnrolleeFieldArray from './existing_coverage_enrollee_field_array';\r\nimport { FormData as ExistingCoverageFormData } from './existing_coverage_form';\r\n\r\n\r\nexport type FormPolicyEnrollee = PolicyEnrollee & {\r\n checked?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nexport type FieldData = {\r\n coveredByPriorPlan?: boolean;\r\n floridaBlueCoverage?: string;\r\n emblemHealthcareCoverage?: string;\r\n existingPolicyHolder?: string;\r\n firstName?: string;\r\n lastName?: string;\r\n genderId?: number;\r\n dateOfBirth?: moment.Moment;\r\n address?: string;\r\n city?: string;\r\n zipCode?: string;\r\n stateId?: number;\r\n employmentStatusId?: number;\r\n retirementDate?: moment.Moment;\r\n relationshipToPolicyHolder?: number;\r\n coverageUnderCobra?: boolean;\r\n enrollees: FormPolicyEnrollee[];\r\n}\r\n\r\ninterface ComponentProps {\r\n rootName: string;\r\n lineOfCoverageId: number;\r\n employee: Employee;\r\n priorFloridaBlue?: boolean;\r\n priorEmblemHealthcare?: boolean;\r\n priorCollectDependents?: boolean;\r\n existingCoveragePolicyHolder?: boolean;\r\n disabledEnrollees: Set;\r\n formName: string;\r\n waivedEnrollees: boolean;\r\n touch(...field: string[]): void;\r\n}\r\n\r\ninterface MappedProps {\r\n employmentValue?: number;\r\n coveredEmployees: Set;\r\n enrollees: FormPolicyEnrollee[];\r\n}\r\n\r\ninterface DispatchProps {\r\n changeFirstName: (firstName: string) => void;\r\n changeLastName: (lastName: string) => void;\r\n changeGender: (genderId: number) => void;\r\n changeDateOfBirth: (dob: moment.Moment) => void;\r\n changeAddress: (address: string) => void;\r\n changeCity: (city: string) => void;\r\n changeState: (stateId: number) => void;\r\n changeZipCode: (zipCode: string) => void;\r\n changeExistingPolicyHolder: (name: string) => void;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps & DispatchProps\r\n\r\nconst ExistingCoveragePolicy = (props: Props) => {\r\n const isMedical = props.lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isDental = props.lineOfCoverageId === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isVision = props.lineOfCoverageId === getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const { employee, rootName, coveredEmployees, changeFirstName, changeAddress, changeCity, changeDateOfBirth, changeGender, changeLastName, changeState, changeZipCode, changeExistingPolicyHolder } = props\r\n const { fullName, dependents } = employee;\r\n const nativeSelect = { native: true };\r\n const priorFloridaBlue = props.priorFloridaBlue || false;\r\n const priorEmblemHealthcare = props.priorEmblemHealthcare || false;\r\n const priorCollectDependents = props.priorCollectDependents || false;\r\n const existingCoveragePolicyHolder = props.existingCoveragePolicyHolder || false;\r\n const showRetirement = props.employmentValue === 381\r\n const relationshipsToPolicyHolderTypes = React.useMemo(getRelationshipsToPolicyHolder, []);\r\n const characterLimit100 = React.useCallback(characterLimit(100), []);\r\n const validateFirstName = React.useCallback(required('First Name is required'), []);\r\n const validateLastName = React.useCallback(required('Last Name is required'), []);\r\n\r\n React.useEffect(() => {\r\n props.touch(`${rootName}.firstName`);\r\n props.touch(`${rootName}.lastName`);\r\n }, []);\r\n\r\n const updateValues = React.useCallback((person: any) => {\r\n if (person.firstName) {\r\n changeFirstName(person.firstName);\r\n changeLastName(person.lastName);\r\n changeGender(person.genderId);\r\n changeDateOfBirth(person.dateOfBirth);\r\n\r\n if (person.contactInformation) {\r\n const contactInfo = person.contactInformation[0];\r\n changeAddress(contactInfo.streetAddress1);\r\n changeCity(contactInfo.city);\r\n changeState(contactInfo.stateId);\r\n changeZipCode(contactInfo.zipCode);\r\n }\r\n } else {\r\n changeFirstName(\"\");\r\n changeLastName(\"\");\r\n changeGender(0);\r\n changeDateOfBirth(moment());\r\n changeAddress(\"\");\r\n changeCity(\"\");\r\n changeState(0);\r\n changeZipCode(\"\");\r\n\r\n }\r\n changeExistingPolicyHolder(person.fullName || \"Other\")\r\n\r\n }, [changeFirstName, changeAddress, changeCity, changeDateOfBirth, changeGender, changeLastName, changeState, changeZipCode, changeExistingPolicyHolder])\r\n \r\n const enrolleeSelectionRequired = (value: any, existingCoverageFormData: ExistingCoverageFormData) => {\r\n if(existingCoverageFormData \r\n && existingCoverageFormData.policies.some(policy => policy.enrollees.some(enrollee => enrollee.checked))){\r\n return undefined;\r\n }\r\n\r\n return 'Enrollee information is required';\r\n }\r\n\r\n return (\r\n
\r\n \r\n {(priorCollectDependents || props.waivedEnrollees) &&\r\n \r\n Enrollee Information\r\n

Who is covered on your existing or prior {isMedical && 'medical'}{isDental && 'dental'}{isVision && 'vision'} plan?

\r\n {props.enrollees \r\n && !props.enrollees.some(enrollee => enrollee.checked)\r\n && Enrollee information is required}\r\n \r\n
\r\n }\r\n {priorFloridaBlue &&\r\n \r\n Florida Blue Existing Coverage\r\n
\r\n \r\n
\r\n }\r\n {priorEmblemHealthcare &&\r\n \r\n Emblem Healthcare Existing Coverage\r\n
\r\n \r\n
\r\n }\r\n {(existingCoveragePolicyHolder || props.waivedEnrollees) &&\r\n <>\r\n \r\n Policy Holder Information for Existing {isMedical && 'Medical'}{isDental && 'Dental'}{isVision && 'Vision'} Coverage\r\n

Who is the policy holder on the existing coverage?

\r\n }\r\n compact\r\n radioName='existingPolicyHolder'\r\n warn={requiredForSubmission}\r\n >\r\n updateValues(employee)} />} label={generateLabel(`${fullName}`)} style={styles.rightIndent} />\r\n {dependents.map((dep, i) => {\r\n return (\r\n updateValues(dep)} />} label={generateLabel(`${dep.fullName}`)} style={styles.rightIndent} />\r\n );\r\n })}\r\n updateValues({})} />} label={generateLabel(`Other`)} style={styles.rightIndent} />\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {getGenders().map(val => (\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 {getStates().map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {getWorkStatus().map(val => (\r\n \r\n ))}\r\n \r\n \r\n {showRetirement &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {\r\n relationshipsToPolicyHolderTypes.map((val: any) => (\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\nconst coveredSearch = (employees: any, state: ReduxState, ownProps: ComponentProps) => {\r\n let result = new Set();\r\n const { fullName, dependents, id } = ownProps.employee;\r\n if (formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.${fullName}_coveredByPriorPlan`)) {\r\n result.add(id)\r\n }\r\n dependents.forEach((dependent: Dependent) => {\r\n const { fullName, id } = dependent;\r\n if (formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.${fullName}_coveredByPriorPlan`)) {\r\n result.add(id)\r\n }\r\n })\r\n return result;\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n\r\n const employmentValue = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.employmentStatusId`)\r\n const coveredEmployees = coveredSearch(ownProps.employee, state, ownProps)\r\n const enrollees = formValueSelector(ownProps.formName)(state, `${ownProps.rootName}.enrollees`)\r\n return {\r\n employmentValue,\r\n coveredEmployees,\r\n enrollees\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n changeFirstName: (firstName: string) => dispatch(change(ownProps.formName, `${ownProps.rootName}.firstName`, firstName)),\r\n changeLastName: (lastName: string) => dispatch(change(ownProps.formName, `${ownProps.rootName}.lastName`, lastName)),\r\n changeGender: (genderId: number) => dispatch(change(ownProps.formName, `${ownProps.rootName}.genderId`, genderId)),\r\n changeDateOfBirth: (dob: moment.Moment) => dispatch(change(ownProps.formName, `${ownProps.rootName}.dateOfBirth`, dob)),\r\n changeAddress: (address: string) => dispatch(change(ownProps.formName, `${ownProps.rootName}.address`, address)),\r\n changeCity: (city: string) => dispatch(change(ownProps.formName, `${ownProps.rootName}.city`, city)),\r\n changeState: (stateId: number) => dispatch(change(ownProps.formName, `${ownProps.rootName}.stateId`, stateId)),\r\n changeZipCode: (zipCode: string) => dispatch(change(ownProps.formName, `${ownProps.rootName}.zipCode`, zipCode)),\r\n changeExistingPolicyHolder: (name: string) => dispatch(change(ownProps.formName, `${ownProps.rootName}.existingPolicyHolder`, name))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ExistingCoveragePolicy);","import { Grid, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport { styles } from \"../../utility/common_styles\";\r\n\r\nexport type FieldData = {\r\n existingCoveragePayerName?: string;\r\n rxPolicyNumber?: string;\r\n rxMedicareId?: string;\r\n}\r\n\r\ninterface Props {\r\n rootName: string;\r\n}\r\nconst ExistingCoveragePrescriptionInformation = (props: Props) => {\r\n const { rootName } = props;\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n Existing Coverage Prescription Information\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 ExistingCoveragePrescriptionInformation;","import { Button, Grid, Paper } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { formValueSelector } from 'redux-form';\r\nimport { Employee } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport { styles } from \"../../utility/common_styles\";\r\nimport ExistingCoverageCarrierInformation, { FieldData as CarrierInformationFieldData } from './existing_coverage_carrier_info';\r\nimport ExistingCoverageEmploymentInformation, { FieldData as EmploymentInformationFieldData } from './existing_coverage_employment_information';\r\nimport ExistingCoveragePolicy, { FieldData as CoveragePolicyFieldData } from './existing_coverage_policy';\r\nimport ExistingCoveragePrescriptionInformation, { FieldData as PrescriptionInformationFieldData } from './existing_coverage_prescription_information';\r\n\r\ninterface ComponentProps {\r\n employee: Employee;\r\n lineOfCoverageId: number;\r\n configurationTypeIds: number[];\r\n onDelete: (index: number) => any;\r\n index: number;\r\n rootName: string;\r\n disabledEnrollees: Set;\r\n effectiveDate?: string;\r\n formName: string;\r\n waivedEnrollees: boolean;\r\n touch(...field: string[]): void;\r\n}\r\n\r\ninterface MappedProps {\r\n electionCoveredByEffectiveDate?: boolean;\r\n existingRxCoverage?: boolean;\r\n dentalCoveredLastYear?: boolean;\r\n dentalCoveredByEmployerBefore?: boolean;\r\n dentalPriorOrthodontia?: boolean;\r\n}\r\n\r\ntype Props = MappedProps & ComponentProps;\r\n\r\nexport type ExistingCoverageFieldArrayData = CarrierInformationFieldData & EmploymentInformationFieldData & CoveragePolicyFieldData & PrescriptionInformationFieldData\r\n\r\nconst ExistingCoverageFields = (props: Props) => {\r\n\r\n const { configurationTypeIds } = props;\r\n const existingRxCoverage = props.existingRxCoverage || false;\r\n\r\n const priorEmblemHealth = configurationTypeIds.includes(8);\r\n const priorFloridaBlue = configurationTypeIds.includes(9);\r\n const existingCoverageDependentsDental = configurationTypeIds.includes(13);\r\n const existingCoverageDependentMedical = configurationTypeIds.includes(14);\r\n const existingCoverageCarrierInfo = configurationTypeIds.includes(15);\r\n const existingCoveragePolicyHolder = configurationTypeIds.includes(16);\r\n const existingCoverageMedicalRx = configurationTypeIds.includes(17);\r\n const existingCoverageEmployer = configurationTypeIds.includes(18);\r\n\r\n const isMedical = props.lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isDental = props.lineOfCoverageId === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isVision = props.lineOfCoverageId === getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n\r\n const medicalCovered = props.electionCoveredByEffectiveDate;\r\n const dentalCovered = props.electionCoveredByEffectiveDate || props.dentalPriorOrthodontia || props.dentalCoveredLastYear || props.dentalCoveredByEmployerBefore;\r\n const existingCoverageSelected = medicalCovered || dentalCovered;\r\n const removeButtonStyling = {...styles.centerWithinAnother, ...styles.width100};\r\n\r\n\r\n return (\r\n <>\r\n {(existingCoverageSelected || props.waivedEnrollees) &&\r\n \r\n \r\n \r\n
\r\n

Existing {isMedical && 'Medical'}{isDental && 'Dental'}{isVision && 'Vision'} Coverage - Policy {props.index + 1}

\r\n
\r\n
\r\n {props.index > 0 &&\r\n <>\r\n \r\n \r\n \r\n \r\n }\r\n
\r\n\r\n \r\n {(existingCoverageCarrierInfo || props.waivedEnrollees || false) && }\r\n {(existingCoverageMedicalRx || props.waivedEnrollees || false) && existingRxCoverage && }\r\n \r\n\r\n
\r\n }\r\n \r\n )\r\n\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: Props): MappedProps {\r\n const electionCoveredByEffectiveDate = formValueSelector(ownProps.formName)(state, 'electionCoveredByEffectiveDate')\r\n const existingRxCoverage = formValueSelector(ownProps.formName)(state, 'existingRxCoverage');\r\n const dentalCoveredLastYear = formValueSelector(ownProps.formName)(state, 'dentalCoveredLastYear')\r\n const dentalCoveredByEmployerBefore = formValueSelector(ownProps.formName)(state, 'dentalCoveredByEmployerBefore');\r\n const dentalPriorOrthodontia = formValueSelector(ownProps.formName)(state, 'dentalPriorOrthodontia');\r\n return {\r\n electionCoveredByEffectiveDate,\r\n existingRxCoverage,\r\n dentalCoveredByEmployerBefore,\r\n dentalCoveredLastYear,\r\n dentalPriorOrthodontia,\r\n }\r\n}\r\nexport default connect(mapStateToProps, null)(ExistingCoverageFields)","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { formValueSelector, WrappedFieldArrayProps } from 'redux-form';\r\nimport { Dependent, Employee } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport AddExistingCoverageCard from './add_existing_coverage_card';\r\nimport ExistingCoverageFields, { ExistingCoverageFieldArrayData } from './existing_coverage_fields';\r\nimport { PolicyEnrolleeData } from './existing_coverage_enrollee_field_array';\r\n\r\nexport type FieldData = {\r\n policies: ExistingCoverageFieldArrayData[];\r\n}\r\n\r\ninterface ComponentProps {\r\n employee: Employee;\r\n configurationTypeIds: number[];\r\n lineOfCoverageId: number;\r\n disabledEnrollees: Set;\r\n formName: string;\r\n showAddExistingCoverageButton: boolean;\r\n waivedEnrollees: boolean;\r\n enforceCaptureOfExistingCoverage: boolean;\r\n touch(...field: string[]): void;\r\n}\r\n\r\ninterface MappedProps {\r\n policies: ExistingCoverageFieldArrayData[];\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps, WrappedFieldArrayProps { }\r\n\r\nconst ExistingCoverageFieldArray: React.FunctionComponent = (props: Props) => {\r\n const { fields, employee } = props;\r\n\r\n const handleAdd = React.useCallback(() => {\r\n let policyEnrollees: PolicyEnrolleeData[] = [];\r\n policyEnrollees.push({\r\n id: employee.id,\r\n fullName: employee.fullName,\r\n isEmployee: true,\r\n checked: false\r\n });\r\n employee.dependents.forEach((dep: Dependent) => {\r\n policyEnrollees.push({\r\n id: dep.id,\r\n fullName: dep.fullName,\r\n isEmployee: false,\r\n checked: false\r\n })\r\n });\r\n const newExistingCoverage = {\r\n enrollees: policyEnrollees\r\n } as ExistingCoverageFieldArrayData;\r\n\r\n fields.push(newExistingCoverage);\r\n }, [employee, fields]);\r\n\r\n const handleDelete = React.useCallback((index: number) => {\r\n fields.remove(index);\r\n }, [fields]);\r\n\r\n const generateDisabledEnrollees = React.useCallback((index: number, policies: ExistingCoverageFieldArrayData[]) => {\r\n const disabledEnrollees = new Set();\r\n policies.forEach((pol, i) => {\r\n if (i !== index) {\r\n for (let enrollee of pol.enrollees) {\r\n if (enrollee.checked) {\r\n disabledEnrollees.add(enrollee.id)\r\n }\r\n }\r\n }\r\n });\r\n return disabledEnrollees;\r\n }, [])\r\n\r\n return (\r\n <>\r\n {fields.map((name, index, fields) => {\r\n const disabledEnrollees = generateDisabledEnrollees(index, props.policies);\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n {props.showAddExistingCoverageButton && }\r\n \r\n )\r\n\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const policies = (formValueSelector(ownProps.formName)(state, 'policies') || []).slice();\r\n return {\r\n policies,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(ExistingCoverageFieldArray) as React.ComponentType;","import React from 'react';\r\nimport { FieldArray, InjectedFormProps, reduxForm } from \"redux-form\";\r\nimport { Employee } from \"redux/reducers\";\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from \"utility/lookup_utils\";\r\nimport ExistingCoverageBaseFields, { FieldData as BaseFieldData } from './existing_coverage_base_fields';\r\nimport ExistingCoverageFieldArray, { FieldData as CoveragesFieldData } from \"./existing_coverage_field_array\";\r\n\r\nexport type FormData = BaseFieldData & CoveragesFieldData;\r\n\r\ninterface ComponentProps {\r\n lineOfCoverageId: number;\r\n effectiveDate?: string;\r\n employee: Employee;\r\n isExistingCoverage?: boolean;\r\n isExistingRxCoverage?: boolean;\r\n configurationTypeIds: number[];\r\n showAddExistingCoverageButton: boolean;\r\n waivedEnrollees: boolean;\r\n enforceCaptureOfExistingCoverage: boolean;\r\n updateRxCoverage?: (bool: any) => void;\r\n updateDentalCoveredLastYear?: (bool: any) => void;\r\n updateDentalCoveredByEmployerBefore?: (bool: any) => void;\r\n updateDentalPriorOrthodontia?: (bool: any) => void;\r\n}\r\n\r\ntype Props = ComponentProps & InjectedFormProps;\r\n\r\nexport const FORM_NAME = 'PRIOR_COVERAGE';\r\n\r\nconst ExistingCoverageCard = (props: Props) => {\r\n const { configurationTypeIds } = props;\r\n const medicalExistingCoverage = configurationTypeIds.includes(5);\r\n const dentalExistingCoverage = configurationTypeIds.includes(4);\r\n const visionExistingCoverage = configurationTypeIds.includes(12);\r\n const existingCoverageMedicalRx = configurationTypeIds.includes(17);\r\n\r\n const isMedical = props.lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage) && medicalExistingCoverage;\r\n const isDental = props.lineOfCoverageId === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage) && dentalExistingCoverage;\r\n const isVision = props.lineOfCoverageId === getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage) && visionExistingCoverage;\r\n\r\n return (\r\n <>\r\n {(isMedical || isDental || isVision || props.waivedEnrollees) &&\r\n
\r\n \r\n \r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default reduxForm({ form: FORM_NAME })(ExistingCoverageCard);\r\n\r\n","import React from 'react';\r\nimport { reduxForm, InjectedFormProps } from \"redux-form\";\r\nimport { Grid } from '@material-ui/core';\r\nimport { Field } from 'redux-form';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport { required, nonNegativeNumber } from 'utility/form_validation';\r\n\r\nexport const FORM_NAME = 'SUBSCRIBER_FORM';\r\nexport type FormData = {\r\n subscriberId?: number;\r\n}\r\n\r\ninterface Props extends InjectedFormProps { }\r\n\r\nconst requiredSubscriberID = required(\"Subscriber/Member ID is required.\");\r\n\r\nconst SubscriberIDForm = React.memo((props: Props) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n});\r\n\r\nexport default reduxForm({ form: FORM_NAME })(SubscriberIDForm);\r\n\r\n","import Button from '@material-ui/core/Button';\r\nimport React from 'react';\r\nimport { Document } from 'redux/reducers';\r\nimport palette from 'utility/palette';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport DocumentIcon from './icons/icon_document';\r\n\r\ninterface ComponentProps {\r\n doc: Document;\r\n children?: any;\r\n}\r\ntype Props = ComponentProps;\r\n\r\nconst DocumentButton = React.memo((props: Props) => {\r\n const { doc, children } = props;\r\n return (\r\n \r\n {children ||\r\n <>\r\n \r\n {doc.title}\r\n \r\n }\r\n \r\n }\r\n />\r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n docButton: {\r\n maxWidth: 500\r\n },\r\n icon: {\r\n color: palette.grey.darkText\r\n },\r\n link: {\r\n textDecoration: 'none',\r\n textTransform: 'none',\r\n color: palette.blue.primary,\r\n marginLeft: '5px',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis'\r\n }\r\n};\r\n\r\nexport default DocumentButton;","import withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\ninterface Props extends StyledComponentProps {\r\n level: string;\r\n}\r\n\r\nconst MetalRateChip = (props: Props) => {\r\n const { level, classes = {} } = props;\r\n return (\r\n
{level}
\r\n )\r\n};\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n chip: {\r\n display: 'inline-block',\r\n borderRadius: 4,\r\n padding: '4px 18px 3px',\r\n fontSize: 16,\r\n color: palette.grey.light,\r\n textTransform: 'uppercase'\r\n },\r\n gold: {\r\n backgroundColor: palette.gold.primary\r\n },\r\n silver: {\r\n backgroundColor: palette.silver.primary\r\n },\r\n bronze: {\r\n backgroundColor: palette.bronze.primary\r\n },\r\n platinum: {\r\n backgroundColor: palette.platinum.primary,\r\n color: palette.platinum.text\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(MetalRateChip);","import ButtonBase from '@material-ui/core/ButtonBase';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Help from '@material-ui/icons/Help';\r\nimport RadioButtonCheckedIcon from '@material-ui/icons/RadioButtonChecked';\r\nimport RadioButtonIcon from '@material-ui/icons/RadioButtonUnchecked';\r\nimport React from 'react';\r\nimport palette from '../../utility/palette';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\ninterface WithRadioPaperProps {\r\n selectedText?: string;\r\n selected?: boolean;\r\n onSelected?: () => void;\r\n disabled?: boolean;\r\n typeOfRequiredEnrollee?: string;\r\n disabledToolTipText?: JSX.Element | string;\r\n waived?: boolean;\r\n}\r\n\r\nconst withRadioPaper =

(Component: React.ComponentType

) => {\r\n return (props: P & WithRadioPaperProps) => {\r\n const { selectedText, selected, onSelected, disabled, waived, disabledToolTipText, typeOfRequiredEnrollee, ...childProps } = props as WithRadioPaperProps;\r\n const title = selected ? selectedText || 'Selected' : 'Select Plan';\r\n const selectedStyle = selected ? styles.headerSelected : undefined;\r\n const RadioIcon = selected ? RadioButtonCheckedIcon : RadioButtonIcon;\r\n\r\n return (\r\n \r\n {disabled ?\r\n

\r\n {waived ?\r\n <>\r\n :\r\n <>\r\n \r\n Requires enrollment in other plan(s)\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 {title}\r\n \r\n }\r\n \r\n \r\n );\r\n };\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n marginBottom: 15\r\n },\r\n header: {\r\n color: palette.grey.light,\r\n backgroundColor: palette.blue.primary,\r\n minHeight: 50,\r\n borderRadius: '4px 4px 0 0',\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n height: 30\r\n },\r\n headerSelected: {\r\n backgroundColor: palette.green.primary,\r\n },\r\n headerDisabled: {\r\n color: palette.grey.light,\r\n backgroundColor: palette.silver.primary,\r\n minHeight: 50,\r\n borderRadius: '4px 4px 0 0',\r\n display: 'flex',\r\n justifyContent: 'flex-start'\r\n },\r\n disabledText: {\r\n paddingLeft: 34,\r\n paddingRight: 12,\r\n paddingTop: 18,\r\n lineHeight: 0.9,\r\n fontStyle: 'italic'\r\n },\r\n tooltip: {\r\n opacity: 0.6,\r\n height: 16,\r\n width: 16\r\n\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n paddingTop: 17\r\n },\r\n radioIcon: {\r\n paddingLeft: 40,\r\n paddingRight: 12,\r\n lineHeight: 0.9\r\n },\r\n radioIconMobile: {\r\n paddingLeft: 10\r\n }\r\n};\r\n\r\nexport default withRadioPaper;","import React from 'react';\r\nimport { Slider, Grid, Typography, InputAdornment } from '@material-ui/core';\r\nimport { Mark } from '@material-ui/core/Slider';\r\nimport { formatCurrencyWithShortName } from 'utility/form_formatter';\r\nimport palette from 'utility/palette';\r\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { TextFormField } from './reduxform_fields';\r\nimport { formatMoney } from '../../utility/form_formatter';\r\n\r\nimport { required } from 'utility/form_validation';\r\nexport const FORM_NAME = 'LIFE_BENEFIT_AMOUNT_FORM';\r\nexport type FormData = {\r\n lifeBenefitAmount?: number;\r\n}\r\n\r\ninterface ComponentProps {\r\n selectedAmount?: number;\r\n minBenefitAmount?: number;\r\n maxBenefitAmount?: number;\r\n benefitInterval?: number;\r\n benefitRange?: number[];\r\n onBenefitAmountSelected: (amount: number) => void;\r\n disableSlider: boolean;\r\n}\r\n\r\ninterface Props extends InjectedFormProps, ComponentProps { };\r\n\r\nfunction buildMarks(range: number[]) {\r\n let marks: Mark[] = [];\r\n const addLabel = range.length <= 11;\r\n let index = 0;\r\n let max = range.length - 1;\r\n let midPoint = Math.round(max / 2);\r\n range.forEach((val: number) => {\r\n if (addLabel || index === 0 || index === max || index === midPoint) {\r\n let label = formatCurrencyWithShortName(val);\r\n marks.push({ value: val, label });\r\n } else {\r\n marks.push({ value: val });\r\n }\r\n index++;\r\n });\r\n return marks;\r\n}\r\nfunction generateIntervals(min: number, max: number, interval: number): number[] {\r\n let intervals: number[] = [];\r\n for (let i = min; i <= max;) {\r\n intervals.push(i);\r\n i = i + interval;\r\n }\r\n if (intervals.indexOf(max) === -1) {\r\n intervals.push(max)\r\n }\r\n return intervals;\r\n}\r\n///TODO figure out if react has a built in way to do this.\r\nlet timeout: any = null;\r\nconst throttleAndNotify = (benefitAmount: number, onBenefitAmountSelected: any) => {\r\n if (timeout !== null) {\r\n clearTimeout(timeout);\r\n }\r\n timeout = setTimeout(() => {\r\n onBenefitAmountSelected(benefitAmount);\r\n }, 200);\r\n}\r\n\r\nconst requiredForSubmission = required('Required for enrollment');\r\nconst BenefitAmountSelector = (props: Props) => {\r\n const [marks, setMarks] = React.useState([] as Mark[]);\r\n const [maxValue, setMax] = React.useState(100);\r\n const [currentValue, setValue] = React.useState(props.initialValues.lifeBenefitAmount ? props.initialValues.lifeBenefitAmount : 0);\r\n\r\n React.useEffect(() => {\r\n let amounts: number[] = [];\r\n if (props.benefitRange) {\r\n amounts = props.benefitRange;\r\n } else if (props.benefitInterval && props.maxBenefitAmount && (props.minBenefitAmount != null)) {\r\n amounts = generateIntervals(props.minBenefitAmount, props.maxBenefitAmount, props.benefitInterval);\r\n }\r\n\r\n let mar = buildMarks(amounts);\r\n\r\n if (amounts === undefined || amounts.length == 0) {\r\n if (props.maxBenefitAmount) {\r\n setMax(props.maxBenefitAmount)\r\n }\r\n else {\r\n setMax(0);\r\n }\r\n }\r\n else {\r\n setMax(Math.max(...amounts));\r\n }\r\n\r\n setMarks(mar);\r\n }, [props.benefitInterval, props.minBenefitAmount, props.maxBenefitAmount, props.benefitRange])\r\n\r\n\r\n function valueLabelFormat(value: number) {\r\n return formatCurrencyWithShortName(value);\r\n }\r\n\r\n const handleInputChange = (event: any, benefitAmount: any) => {\r\n setValue(benefitAmount);\r\n props.change('lifeBenefitAmount', benefitAmount);\r\n\r\n if (props.onBenefitAmountSelected) {\r\n throttleAndNotify(benefitAmount, props.onBenefitAmountSelected);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n Choose your Benefit Amount by using the slider below\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n form: {\r\n paddingBottom: 40,\r\n }, help: {\r\n fontSize: 20,\r\n color: palette.grey.text,\r\n },\r\n benefitAmount: {\r\n paddingLeft: 40\r\n }\r\n}\r\n// export default BenefitAmountSelector;\r\n\r\nexport default reduxForm({ form: FORM_NAME })(BenefitAmountSelector as any);\r\n\r\n","import { Divider, ExpansionPanel, ExpansionPanelDetails, Grid, Typography } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport Help from '@material-ui/icons/Help';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { CostCalculation } from 'redux/reducers/cost_calculation_reducer';\r\nimport { getPlanCardIcon } from 'utility/loc_utils';\r\nimport { CompanySettings, Plan, Employee } from '../../redux/reducers';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { getLOCsByBaseLOC, getLookupId, getLookups, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\nimport DocumentButton from '../common/document_button';\r\nimport MetalRateChip from '../common/metal_rate_chip';\r\nimport withRadioPaper from '../common/radio_paper_hoc';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport BenefitAmountSelector, { FormData as lifeBenefitAmountFormData } from 'components/common/benefit_amount_selector';\r\nimport { CalcBenefitAmountType } from 'redux/actions/cost_calculation_actions';\r\nimport { formatCurrency } from '../../utility/simple_utils';\r\n\r\ninterface ComponentProps {\r\n plan: Plan;\r\n cost?: CostCalculation;\r\n overflow?: boolean;\r\n payrollCycleId?: number;\r\n companySettings: CompanySettings;\r\n onBenefitAmountChanged?: (planId: string, amount: number) => void;\r\n lifeBenefitAmountInitialValues?: lifeBenefitAmountFormData;\r\n planSelected: boolean;\r\n isWaived?: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps, Partial, StyledComponentProps { }\r\n\r\ninterface State { }\r\n\r\ntype Benefits = { name: string; value: string | number | undefined; }[];\r\n\r\nclass _LifeDisabilityElectionCardBase extends React.PureComponent{\r\n lookups = getLookups();\r\n summaryDocLookupId = getLookupId('PLANSUMMARY', LOOKUP_TYPE_IDS.document);\r\n otherDocsLookupId = getLookupId('DOCUMENTOTHER', LOOKUP_TYPE_IDS.document);\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n isLife = (plan: Plan) => { return getLOCsByBaseLOC('BASELIFE').some(lookup => lookup.id === plan.lineOfCoverageId); };\r\n isDisability = (plan: Plan) => { return getLOCsByBaseLOC('BASEDISABILITY').some(lookup => lookup.id === plan.lineOfCoverageId); };\r\n\r\n //benAmount will only have value in case of increment Amount type\r\n //When slider moves, we need to pick the current value of slider, if there is no current value the the initial value should be used\r\n benAmount = this.props.lifeBenefitAmountInitialValues && this.props.lifeBenefitAmountInitialValues.lifeBenefitAmount\r\n ? this.props.lifeBenefitAmountInitialValues.lifeBenefitAmount\r\n : 0;\r\n\r\n isFlatAmountType = this.props.plan.benefitAmountTypeId === getLookupId('FLATAMOUNT', LOOKUP_TYPE_IDS.benefitAmountType);\r\n isMultipleOfSalaryType = this.props.plan.benefitAmountTypeId === getLookupId('MULTIPLEOFSALARY', LOOKUP_TYPE_IDS.benefitAmountType);\r\n\r\n mainBenefits = memoizeOne((plan: Plan, cost: CostCalculation | undefined) => {\r\n const benefits: Benefits = [];\r\n const isLTD = plan.lineOfCoverageId == getLookupId('LTD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isSTD = plan.lineOfCoverageId == getLookupId('STD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n\r\n const percentageOfSalary = this.isMultipleOfSalaryType && plan && plan.benefitAmount != undefined ? plan.benefitAmount * 100 : 0;\r\n const isCoveredPayrollEligible = (isLTD || isSTD) && this.isMultipleOfSalaryType && plan.isBenefitAmountRatingTypeCoveredPayroll;\r\n\r\n benefits.push({\r\n name: 'Benefit Amount',\r\n value: this.isFlatAmountType ?\r\n formatCurrency(plan.benefitAmount) :\r\n (this.benAmount > 0 ?\r\n (isCoveredPayrollEligible ? percentageOfSalary + '% of first ' + formatCurrency(this.benAmount) + ' monthly earnings' : formatCurrency(this.benAmount)) :\r\n (cost && cost.benefitAmount ? (isCoveredPayrollEligible ? percentageOfSalary + '% of first ' + formatCurrency(cost.benefitAmount) + ' monthly earnings' : formatCurrency(cost.benefitAmount))\r\n : undefined))\r\n //If it is Flat Type , We use the Benefit Amount Broker provided in Plan BenefitAmount Page\r\n //If It is increment, we want to use the LifeBenefitAmount value, which is result of slider\r\n //If it is Multiple of Salary then we will use the amount that Cost calculator is returning based on Rates, Salary and multiple specified in Plan Page\r\n });\r\n\r\n if (this.isLife(plan)) {\r\n benefits.push({\r\n name: 'Guaranteed Issue',\r\n value: formatCurrency(plan.guaranteedIssueAmount)\r\n });\r\n } else if (this.isDisability(plan)) {\r\n benefits.push({\r\n name: 'Payout',\r\n value: (plan.payoutId && this.lookups[plan.payoutId].value) || '--'\r\n });\r\n benefits.push({\r\n name: 'Duration',\r\n value: plan.benefitDuration || '--'\r\n });\r\n benefits.push({\r\n name: 'Elimination Period',\r\n value: plan.eliminationPeriod || '--'\r\n });\r\n }\r\n\r\n return benefits;\r\n });\r\n\r\n extraBenefits = memoizeOne((plan: Plan) => {\r\n const benefits: Benefits = [];\r\n\r\n if (!this.isFlatAmountType) {\r\n benefits.push({\r\n name: 'Minimum',\r\n value: formatCurrency(plan.minimumBenefit)\r\n });\r\n\r\n if (this.isDisability(plan)) {\r\n benefits.push({\r\n name: 'Maximum',\r\n value: formatCurrency(plan.maximumBenefit)\r\n });\r\n }\r\n }\r\n\r\n if (this.isLife(plan)) {\r\n benefits.push({\r\n name: 'AD&D',\r\n value: plan.adAndDBenefit || '--'\r\n });\r\n }\r\n\r\n benefits.push({\r\n name: 'Other',\r\n value: plan.otherBenefit || '--'\r\n });\r\n\r\n return benefits;\r\n });\r\n\r\n summaryDoc = memoizeOne((plan: Plan, summaryDocLookupId: number) => {\r\n return plan.documents.find(doc => doc.typeId === summaryDocLookupId);\r\n });\r\n\r\n otherDocs = memoizeOne((plan: Plan, otherDocsLookupId: number) => {\r\n return plan.documents.filter(doc => doc.typeId === otherDocsLookupId);\r\n });\r\n\r\n onBenefitAmountChanged = (amount: number) => {\r\n if (this.props.onBenefitAmountChanged) {\r\n this.props.onBenefitAmountChanged(this.props.plan.id, amount);\r\n this.benAmount = amount;\r\n }\r\n }\r\n\r\n\r\n render() {\r\n const { plan, cost, width, classes = {} } = this.props;\r\n const carrier = plan.carrierName;\r\n const metalLevel = this.lookups[plan.metalLevelId] ? this.lookups[plan.metalLevelId].value : undefined;\r\n const summaryDoc = this.summaryDoc(this.props.plan, this.summaryDocLookupId);\r\n const otherDocs = this.otherDocs(this.props.plan, this.otherDocsLookupId);\r\n const mobile = width === 'xs';\r\n const logo = getPlanCardIcon(plan.lineOfCoverageId, plan.carrierLogo, mobile);\r\n const showEmployeeCost = this.props.companySettings.viewEmployeeCost;\r\n const showEmployerCost = this.props.companySettings.viewEmployerCost;\r\n const showBothCosts = showEmployeeCost && showEmployerCost;\r\n const tooltipMessage = 'The setup for this plan is not complete. Please reach out to your Benefits Administrator.'\r\n\r\n if (cost && (cost.benefitAmount === null || cost.benefitAmount === undefined)) {\r\n cost.benefitAmount = Number(this.benAmount);\r\n }\r\n return (\r\n <>\r\n
\r\n \r\n \r\n
{carrier}
\r\n
{plan.planDisplayName}
\r\n {!!metalLevel && }\r\n
\r\n {logo}\r\n
\r\n
\r\n \r\n {!this.props.isWaived && this.props.lifeBenefitAmountInitialValues && this.props.plan.benefitAmountTypeId === CalcBenefitAmountType.increment ?\r\n //this.props.lifeBenefitAmountInitialValues is null/undefined is used to tell that we are coming from Plan Preview Card route, as from that route we do not get this variable\r\n //If we have this value present that means we are on elction page and we need to display the slider\r\n \r\n : undefined\r\n }\r\n {this.mainBenefits(this.props.plan, cost).map((ben, index) => (\r\n \r\n {ben.name}\r\n {ben.value}\r\n {(mobile || (index + 1) % 2 === 0) && }\r\n \r\n ))}\r\n \r\n
\r\n
\r\n {!!plan.notes &&\r\n <>\r\n \r\n Notes \r\n {plan.notes}\r\n \r\n \r\n \r\n }\r\n
\r\n {summaryDoc && View Plan Summary}\r\n
\r\n
\r\n \r\n \r\n \r\n Benefit\r\n Details\r\n \r\n {this.extraBenefits(this.props.plan).map(ben => (\r\n \r\n {ben.name}\r\n {ben.value}\r\n \r\n \r\n ))}\r\n \r\n {otherDocs.length > 0 &&\r\n
\r\n Other Documents\r\n {otherDocs.map(doc => (\r\n \r\n ))}\r\n
\r\n }\r\n
\r\n
\r\n {showBothCosts &&\r\n (cost && cost.success ?\r\n
\r\n \r\n \r\n amount you pay {!!this.props.payrollCycleId ? this.lookups[this.props.payrollCycleId!].value : ' per pay period'}\r\n
{`${formatCurrency(cost.employeeCost)}`}
\r\n
\r\n \r\n amount employer pays {!!this.props.payrollCycleId ? this.lookups[this.props.payrollCycleId!].value : ' per pay period'}\r\n
{`${formatCurrency(cost.employerCost)}`}
\r\n
\r\n
\r\n
\r\n :\r\n
\r\n
No Rate Available} />
\r\n
\r\n )\r\n }\r\n {!showBothCosts && showEmployeeCost &&\r\n (cost && cost.success ?\r\n
\r\n amount you pay {!!this.props.payrollCycleId ? this.lookups[this.props.payrollCycleId!].value : ' per pay period'}\r\n
{`${formatCurrency(cost.employeeCost)}`}
\r\n
\r\n :\r\n
\r\n
No Rate Available} />
\r\n
\r\n )\r\n }\r\n {!showBothCosts && showEmployerCost &&\r\n (cost && cost.success ?\r\n
\r\n amount employer pays {!!this.props.payrollCycleId ? this.lookups[this.props.payrollCycleId!].value : ' per pay period'}\r\n
{`${formatCurrency(cost.employerCost)}`}
\r\n
\r\n :\r\n
\r\n
No Rate Available} />
\r\n
\r\n )\r\n }\r\n
\r\n \r\n );\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n benefitName: {\r\n fontSize: 12,\r\n padding: '15px 0',\r\n color: palette.grey.text,\r\n },\r\n benefitValue: {\r\n padding: '15px 20px 15px 0',\r\n fontSize: 13,\r\n textAlign: 'right'\r\n },\r\n benefitTitle: {\r\n fontSize: 14,\r\n paddingBottom: 15,\r\n color: palette.grey.tableHeader,\r\n },\r\n benefitDetails: {\r\n padding: 0,\r\n color: palette.grey.darkText,\r\n backgroundColor: palette.grey.medium,\r\n fontSize: 13,\r\n display: 'block'\r\n },\r\n cardWrapperDiv: {\r\n marginTop: 10\r\n },\r\n carrierName: {\r\n color: palette.grey.lightText,\r\n fontSize: 12,\r\n textTransform: 'uppercase'\r\n },\r\n centerText: {\r\n textAlign: 'center',\r\n textTransform: 'uppercase',\r\n fontSize: 12,\r\n paddingTop: 10\r\n },\r\n expandedBenefit: {\r\n padding: '15px 0',\r\n },\r\n greyContentContainer: {\r\n padding: '18px 40px 3px 40px',\r\n backgroundColor: palette.grey.medium,\r\n color: palette.grey.text,\r\n },\r\n mobileGreyContentContainer: {\r\n padding: '18px 10px 3px 10px'\r\n },\r\n notes: {\r\n fontSize: 12,\r\n padding: '15px 10px 15px 10px',\r\n color: palette.grey.text,\r\n overflow: 'hidden',\r\n paddingLeft: 0\r\n },\r\n noRate: {\r\n margin: '20px 0',\r\n fontWeight: 700,\r\n fontSize: 28\r\n },\r\n otherDocsContainer: {\r\n marginTop: 15\r\n },\r\n planName: {\r\n color: palette.grey.darkText,\r\n fontSize: 20,\r\n fontWeight: 700,\r\n textTransform: 'capitalize',\r\n margin: '5px 0',\r\n overflowWrap: 'break-word'\r\n },\r\n rate: {\r\n margin: '10px 0',\r\n fontWeight: 700,\r\n fontSize: 34\r\n },\r\n whiteContent: {\r\n padding: '20px 40px 0 40px',\r\n backgroundColor: palette.grey.light\r\n },\r\n whiteContentMobile: {\r\n padding: '15px 10px 0 10px'\r\n },\r\n};\r\n\r\nexport const LifeDisabilityElectionCardBase = withStyles(styles)(_LifeDisabilityElectionCardBase);\r\n\r\nexport default withWidth()(\r\n withStyles(styles)(\r\n withRadioPaper(\r\n _LifeDisabilityElectionCardBase\r\n )\r\n )\r\n);","import Button, { ButtonProps } from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport React from 'react';\r\nimport { Document } from 'redux/reducers';\r\n\r\ninterface ComponentProps {\r\n documents: Document[];\r\n}\r\n\r\ntype Props = ComponentProps & ButtonProps;\r\n\r\ninterface State {\r\n anchorEl?: HTMLElement;\r\n}\r\n\r\nclass DocsLink extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n anchorEl: undefined\r\n };\r\n }\r\n\r\n handleMenuOpen = (event: React.MouseEvent) => {\r\n this.setState({ anchorEl: event.currentTarget });\r\n };\r\n\r\n handleMenuClose = () => {\r\n this.setState({ anchorEl: undefined });\r\n };\r\n\r\n render() {\r\n const { documents, ...config } = this.props;\r\n const { anchorEl } = this.state;\r\n let buttonLink = \r\n }\r\n />\r\n ))}\r\n : \r\n }\r\n \r\n );\r\n};\r\n\r\nconst benefitsDisplay = (props: Props, isVoluntaryOrGAP: boolean, benefits: {\r\n name: string,\r\n inNetworkAmount: string | undefined,\r\n outOfNetworkAmount: string | undefined\r\n}[]) => {\r\n const { classes = {} } = props;\r\n return (\r\n
\r\n \r\n \r\n \r\n {isVoluntaryOrGAP ? (\r\n \r\n Benefit\r\n Amount\r\n \r\n ) : (\r\n \r\n Benefit\r\n In Network\r\n Out of Network\r\n \r\n )}\r\n \r\n \r\n {benefits.map(benefit => (\r\n \r\n {benefit.name}\r\n {benefit.inNetworkAmount}\r\n {!isVoluntaryOrGAP && {benefit.outOfNetworkAmount}}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n \r\n

\r\n Benefit (In-Network / Out-of-Network)\r\n

\r\n \r\n {benefits.map(ben => (\r\n
\r\n \r\n {ben.name}\r\n {ben.inNetworkAmount}\r\n {!isVoluntaryOrGAP && {ben.outOfNetworkAmount}}\r\n \r\n \r\n
\r\n ))}\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n benefitDetails: {\r\n margin: '-15px -25px 0',\r\n padding: '8px'\r\n },\r\n benefitDetailsMobile: {\r\n margin: '-15px -25px 0',\r\n padding: '25px'\r\n },\r\n benefitName: {\r\n fontSize: 14,\r\n color: palette.grey.tableHeader,\r\n whiteSpace: 'nowrap'\r\n },\r\n cardWrapperDivOverflow: {\r\n overflowX: 'auto',\r\n width: '100%'\r\n },\r\n docButton: {\r\n maxWidth: 500\r\n },\r\n docContainer: {\r\n marginTop: 10,\r\n padding: 0,\r\n display: 'block'\r\n },\r\n greyContent: {\r\n color: palette.grey.text,\r\n fontSize: 12,\r\n backgroundColor: palette.grey.medium,\r\n textTransform: 'none'\r\n },\r\n icon: {\r\n color: palette.grey.darkText\r\n },\r\n leftPadding: {\r\n paddingLeft: \"20px\"\r\n },\r\n leftPaddingB: {\r\n paddingLeft: \"15px\"\r\n },\r\n link: {\r\n textDecoration: 'none',\r\n textTransform: 'none',\r\n color: palette.blue.primary,\r\n marginLeft: '5px',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis'\r\n },\r\n mobileDocContainer: {\r\n marginLeft: -15\r\n },\r\n mobileBenefitRow: {\r\n color: palette.grey.darkText,\r\n padding: 5,\r\n lineHeight: 1.5\r\n },\r\n noPadding: {\r\n padding: 0,\r\n },\r\n tableRow: {\r\n height: \"40px\"\r\n },\r\n planSummary: {\r\n display: 'none'\r\n }\r\n}\r\n\r\nexport default withWidth()(withStyles(styles)(ExpandablePlan)) as React.ComponentClass;","import { Button, Divider, Grid, Hidden, Table, TableBody, TableCell, TableRow, Typography } from '@material-ui/core';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport Help from '@material-ui/icons/Help';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { CostCalculation } from 'redux/reducers/cost_calculation_reducer';\r\nimport { formatCurrency } from 'utility';\r\nimport { getPlanCardIcon } from \"utility/loc_utils\";\r\nimport { CompanySettings, Document, Plan } from '../../redux/reducers';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { getAdditionalDataById, getLookupId, getLookups, getPlanBenefits, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\nimport DocsLink from '../common/docs_link';\r\nimport ExpandablePlan from '../common/expandable_card';\r\nimport MetalRateChip from '../common/metal_rate_chip';\r\nimport withRadioPaper from '../common/radio_paper_hoc';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\ninterface Props extends Partial {\r\n plan: Plan;\r\n employeeAge?: number;\r\n cost?: CostCalculation;\r\n overflow?: boolean;\r\n payrollCycleId?: number;\r\n companySettings: CompanySettings;\r\n onBenefitAmountChanged?: (planId: string, amount: number) => void;\r\n}\r\n\r\ninterface State {\r\n expanded: boolean;\r\n}\r\n\r\nexport class PlanElectionCardBase extends React.PureComponent{\r\n lookups = getLookups();\r\n planSumLookup = getLookupId('PLANSUMMARY', LOOKUP_TYPE_IDS.document);\r\n otherDocsLookup = getLookupId('DOCUMENTOTHER', LOOKUP_TYPE_IDS.document);\r\n critIllnessBenAmountLookup = getLookupId('EMPLOYEEBENEFITAMOUNTCRITICALILLNESS', LOOKUP_TYPE_IDS.planBenefit);\r\n benefitPayoutAmountLookup = getLookupId('BENEFITPAYOUTHOSPITALRECOVERY', LOOKUP_TYPE_IDS.planBenefit);\r\n benefitPayoutLookup = getLookupId('BENEFITPAYOUT', LOOKUP_TYPE_IDS.planBenefit);\r\n critIllnessguaranteedIssueLookup = getLookupId('GUARANTEEDISSUECRITICALILLNESS', LOOKUP_TYPE_IDS.planBenefit);\r\n guaranteedIssueLookup = getLookupId('GUARANTEEDISSUE', LOOKUP_TYPE_IDS.planBenefit);\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n expanded: false\r\n };\r\n }\r\n\r\n planMemo = memoizeOne((documents: Document[], lookup: any) => documents.filter((doc: any) => doc.typeId === lookup));\r\n\r\n benefitsMemo = memoizeOne((plan: Plan) => {\r\n return getPlanBenefits().filter(lb => lb.parentIds.indexOf(plan.lineOfCoverageId) >= 0);\r\n });\r\n\r\n _hideExpandable = memoizeOne((plan: Plan) => {\r\n const otherDocs = this.planMemo(plan.documents, this.otherDocsLookup);\r\n return this.benefitsMemo(plan).filter(bm => bm.order > 4 && plan.benefits.find(b => b.benefitId === bm.id)).length < 1 && otherDocs.length < 1;\r\n });\r\n\r\n displayedBenefitsMemo = memoizeOne((plan: Plan) => {\r\n const benefitLookups = this.benefitsMemo(plan);\r\n\r\n const benefits = benefitLookups.map(lookup => {\r\n const benefit = plan.benefits.find(b => b.benefitId === lookup.id)\r\n return {\r\n name: lookup.value,\r\n inNetworkAmount: benefit && benefit.inNetworkAmount ? benefit.inNetworkAmount : undefined,\r\n lookupId: !!benefit ? benefit.benefitId : -1\r\n }\r\n });\r\n\r\n const availableBenefits = benefits.filter(b => b.inNetworkAmount);\r\n const missingBenefits = benefits.filter(b => !b.inNetworkAmount);\r\n\r\n return availableBenefits\r\n .concat(missingBenefits)\r\n .slice(0, 4)\r\n .map(b => ({\r\n name: b.name,\r\n value: b.inNetworkAmount ? b.inNetworkAmount : '--',\r\n calculatedValue: this.getBenefitValue(plan, b.lookupId)\r\n }));\r\n });\r\n\r\n getBenefitValue(plan: Plan, lookupId: number) {\r\n let benAmount = '--';\r\n const benefit = plan.benefits.find(b => b.benefitId === lookupId);\r\n if (benefit && benefit.inNetworkAmount) {\r\n benAmount = benefit.inNetworkAmount;\r\n const isCritIllnessBenAmount = lookupId === this.critIllnessBenAmountLookup;\r\n const isBenefitPayoutAmount = lookupId === this.benefitPayoutAmountLookup;\r\n const isBenefitPayout = lookupId === this.benefitPayoutLookup;\r\n const isGuaranteedIssueLookup = lookupId === this.critIllnessguaranteedIssueLookup || this.guaranteedIssueLookup;\r\n\r\n if ((isBenefitPayoutAmount || isBenefitPayout || isGuaranteedIssueLookup) && (Number(benefit.inNetworkAmount) === 0 || benefit.inNetworkAmount === null)) {\r\n benAmount = '--';\r\n }\r\n else {\r\n if (isCritIllnessBenAmount &&\r\n this.props.employeeAge &&\r\n this.props.employeeAge >= 65 &&\r\n plan.ageReductions) {\r\n let amount = Number(benefit.inNetworkAmount);\r\n if (amount) {\r\n plan.ageReductions.forEach(ar => {\r\n if (this.props.employeeAge &&\r\n ar.amount &&\r\n this.props.employeeAge >= ar.minAge &&\r\n this.props.employeeAge <= ar.maxAge) {\r\n const rate = (100 - ar.amount) / 100;\r\n amount = amount * rate;\r\n }\r\n })\r\n\r\n benAmount = formatCurrency(amount);\r\n }\r\n }\r\n if (isGuaranteedIssueLookup || isCritIllnessBenAmount) {\r\n if (Number(benefit.inNetworkAmount)) {\r\n benAmount = formatCurrency(Number(benefit.inNetworkAmount));\r\n }\r\n }\r\n\r\n }\r\n }\r\n return benAmount;\r\n }\r\n\r\n get hideExpandable() {\r\n return this._hideExpandable(this.props.plan);\r\n }\r\n\r\n changeDisplay = () => this.setState(prevState => ({ expanded: !prevState.expanded }));\r\n\r\n _getCoverageLevel = memoizeOne((cost: CostCalculation) => {\r\n const coverageLevel = cost ? this.lookups[cost.coverageLevel] : undefined;\r\n const id = coverageLevel ? parseInt(cost.coverageLevel, 10) : -1;\r\n return getAdditionalDataById(id);\r\n });\r\n\r\n getCoverageLevel = (cost: CostCalculation) => {\r\n return this._getCoverageLevel(cost);\r\n }\r\n\r\n\r\n render() {\r\n const { plan, cost, overflow, width } = this.props;\r\n const carrier = plan.carrierName;\r\n const metalLevel = this.lookups[plan.metalLevelId] ? this.lookups[plan.metalLevelId].value : undefined;\r\n const overflowAuto = overflow;\r\n const planSummary = this.planMemo(plan.documents, this.planSumLookup);\r\n const displayedBenefits = this.displayedBenefitsMemo(plan);\r\n const mobile = width === 'xs';\r\n const coverageLevel = cost ? this.getCoverageLevel(cost) : undefined;\r\n const coverageLevelValue = coverageLevel ? '(' + coverageLevel.SecondValue + ')' : '';\r\n const logo = getPlanCardIcon(plan.lineOfCoverageId, plan.carrierLogo, mobile);\r\n const showEmployeeCost = this.props.companySettings.viewEmployeeCost;\r\n const showEmployerCost = this.props.companySettings.viewEmployerCost;\r\n const showBothCosts = showEmployeeCost && showEmployerCost;\r\n const tooltipMessage = 'The setup for this plan is not complete. Please reach out to your Benefits Administrator.'\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n
{carrier}
\r\n
{plan.planDisplayName}
\r\n {!!metalLevel && }\r\n
\r\n {logo}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {displayedBenefits[0].name}\r\n {displayedBenefits[0].calculatedValue}\r\n {displayedBenefits[1].name}\r\n {displayedBenefits[1].calculatedValue}\r\n \r\n \r\n {displayedBenefits[2].name}\r\n {displayedBenefits[2].calculatedValue}\r\n {displayedBenefits[3].name}\r\n {displayedBenefits[3].calculatedValue}\r\n \r\n \r\n
\r\n
\r\n \r\n {displayedBenefits.map(ben => (\r\n
\r\n \r\n {ben.name}\r\n {ben.calculatedValue}\r\n \r\n \r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n {!!plan.notes &&\r\n <>\r\n \r\n Notes \r\n {plan.notes}\r\n \r\n \r\n \r\n }\r\n\r\n
\r\n {planSummary.length > 0 &&\r\n View Plan Summary\r\n }\r\n
\r\n\r\n\r\n {(showBothCosts || showEmployeeCost || showEmployerCost || !this.hideExpandable) &&\r\n
\r\n \r\n {showBothCosts &&\r\n (cost && cost.success ?\r\n
\r\n \r\n \r\n amount you pay {!!this.props.payrollCycleId ? this.lookups[this.props.payrollCycleId!].value : ' per pay period'}\r\n
{coverageLevelValue}\r\n
{formatCurrency(cost.employeeCost)}
\r\n
\r\n \r\n amount employer pays {!!this.props.payrollCycleId ? this.lookups[this.props.payrollCycleId!].value : ' per pay period'}\r\n
{coverageLevelValue}\r\n
{formatCurrency(cost.employerCost)}
\r\n
\r\n
\r\n
\r\n :\r\n
\r\n
No Rate Available} />
\r\n
\r\n )\r\n }\r\n {!showBothCosts && showEmployeeCost &&\r\n (cost && cost.success ?\r\n
\r\n amount you pay {!!this.props.payrollCycleId ? this.lookups[this.props.payrollCycleId!].value : ' per pay period'}\r\n
{coverageLevelValue}\r\n
{formatCurrency(cost.employeeCost)}
\r\n
\r\n :\r\n
\r\n
No Rate Available} />
\r\n
\r\n )\r\n }\r\n {!showBothCosts && showEmployerCost &&\r\n (cost && cost.success ?\r\n
\r\n amount employer pays {!!this.props.payrollCycleId ? this.lookups[this.props.payrollCycleId!].value : ' per pay period'}\r\n
{coverageLevelValue}\r\n
{formatCurrency(cost.employerCost)}
\r\n
\r\n :\r\n
\r\n
No Rate Available} />
\r\n
\r\n )\r\n }\r\n {!this.hideExpandable &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n benefitName: {\r\n fontSize: 12,\r\n color: palette.grey.text,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n paddingLeft: 0\r\n },\r\n benefitValue: {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '70px',\r\n paddingRight: 30\r\n },\r\n cardWrapperDiv: {\r\n marginTop: 5\r\n },\r\n carrierName: {\r\n color: palette.grey.lightText,\r\n fontSize: 12,\r\n textTransform: 'uppercase'\r\n },\r\n cardWrapperDivOverflow: {\r\n overflowX: 'auto',\r\n marginTop: 5\r\n },\r\n centerText: {\r\n textAlign: 'center',\r\n textTransform: 'uppercase',\r\n fontSize: 12,\r\n paddingTop: 10\r\n },\r\n greyContent: {\r\n padding: '18px 40px 3px 40px',\r\n color: palette.grey.text,\r\n fontSize: 12,\r\n backgroundColor: palette.grey.medium\r\n },\r\n greyContentMobile: {\r\n padding: '13px 10px 3px 10px',\r\n color: palette.grey.text,\r\n fontSize: 12,\r\n backgroundColor: palette.grey.medium\r\n },\r\n mobileBenefitRow: {\r\n paddingTop: 8,\r\n paddingBottom: 5\r\n },\r\n noRate: {\r\n margin: '20px 0',\r\n fontWeight: 700,\r\n fontSize: 28\r\n },\r\n notes: {\r\n fontSize: 12,\r\n padding: '15px 10px 15px 10px',\r\n color: palette.grey.text,\r\n overflow: 'hidden',\r\n paddingLeft: 0\r\n },\r\n planName: {\r\n color: palette.grey.darkText,\r\n fontSize: 20,\r\n fontWeight: 700,\r\n textTransform: 'capitalize',\r\n margin: '5px 0',\r\n overflowWrap: 'break-word'\r\n },\r\n rate: {\r\n margin: '10px 0',\r\n fontWeight: 700,\r\n fontSize: 34\r\n },\r\n textRight: {\r\n textAlign: 'right',\r\n paddingRight: 10\r\n },\r\n whiteContent: {\r\n padding: '20px 40px 0 40px',\r\n backgroundColor: palette.grey.light\r\n },\r\n whiteContentMobile: {\r\n padding: '15px 10px 0 10px'\r\n },\r\n};\r\n\r\nconst PlanElectionCard = withRadioPaper(withWidth()(PlanElectionCardBase));\r\nexport default PlanElectionCard;","import { CoverageLevel, Dependent, Election, ElectionDependent, Plan } from '../redux/reducers';\r\nimport { getChildDependentTypes, getLookupId, getSpouseDependentTypes, isChildLife, isSpouseLife, LOOKUP_TYPE_IDS } from './lookup_utils';\r\n\r\nexport const getSelectedPlan = (plans: Plan[], selectedPlanId?: string | null): Plan | undefined => {\r\n const autoCoverageList = plans.filter(p => isAutoEnroll(p));\r\n // grab the plan with the class first. if there isn't one with class, then without\r\n const autoCoverageWithClass = autoCoverageList.find(p => p.classIds.length !== 0) ;\r\n if (autoCoverageWithClass)\r\n {\r\n return autoCoverageWithClass;\r\n }\r\n else\r\n {\r\n const autoCoverage = autoCoverageList.find(p => p.classIds.length === 0) || autoCoverageList[0];\r\n if (autoCoverage) {return autoCoverage;}\r\n else {\r\n return plans.find(plan => plan.id === selectedPlanId);\r\n }\r\n }\r\n};\r\nexport const isAutoEnroll = (plan?: Plan): boolean => {\r\n return (plan && plan.autoEnrollId && plan.autoEnrollId > 0) ? true : false;\r\n}\r\nexport const getAutoEnrollEmployeeOnlyId = (): number => {\r\n return getLookupId('EMPLOYEES', LOOKUP_TYPE_IDS.autoEnrollment)\r\n}\r\nexport const getAutoEnrollEmployeeAndDepId = (): number => {\r\n return getLookupId('EMPANDDEP', LOOKUP_TYPE_IDS.autoEnrollment)\r\n}\r\nexport const isAutoEnrollEmployeeOnly = (plan?: Plan): boolean => {\r\n const empOnlyId = getAutoEnrollEmployeeOnlyId();\r\n return (plan && plan.autoEnrollId && plan.autoEnrollId === empOnlyId) ? true : false;\r\n}\r\nexport const isAutoEnrollEmployeeAndDependent = (plan?: Plan): boolean => {\r\n const empAndDepId = getAutoEnrollEmployeeAndDepId();\r\n return (plan && plan.autoEnrollId && plan.autoEnrollId === empAndDepId) ? true : false;\r\n}\r\nexport const getSelectedPlanId = (planId?: string, election?: Election) => {\r\n return planId ? planId : election && election.planId ? election.planId : '';\r\n}\r\nexport const getElectionOrDefaultDependents = (locId: number, election?: Election, dependents?: Dependent[]) => {\r\n if (election)\r\n return election.dependents;\r\n else if (dependents) {\r\n let dependentsResult = dependents\r\n .filter(dep => dep.enrolledLinesOfCoverage.indexOf(locId) > -1)\r\n .map(dep => {\r\n return {\r\n id: dep.id,\r\n firstName: dep.firstName,\r\n lastName: dep.lastName\r\n } as ElectionDependent;\r\n });\r\n\r\n if (isChildLife(locId)) {\r\n dependentsResult = selectAllChildren(dependentsResult, dependents);\r\n }\r\n else if (isSpouseLife(locId)) {\r\n dependentsResult = selectSpouse(dependentsResult, dependents);\r\n }\r\n\r\n return dependentsResult\r\n } else\r\n return [];\r\n}\r\nexport const getElectionOrDefaultWaived = (locId: number, election?: Election, coverageLevels?: CoverageLevel[]) => {\r\n if (election)\r\n return !!election.isWaived;\r\n else if (coverageLevels) {\r\n const cov = coverageLevels.find(x => x.lineOfCoverageId === locId);\r\n return (cov !== undefined && !!cov.waiverTypeId);\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nexport const getSelectedDependents = (plans: Plan[], planId?: string, dependents?: ElectionDependent[], otherDeps?: Dependent[]) => {\r\n const selectedPlan = getSelectedPlan(plans, planId);\r\n let dependentsResult = dependents || [];\r\n if (isAutoEnrollEmployeeAndDependent(selectedPlan)) {\r\n const employeesOnly = getLookupId('EMPLOYEES', LOOKUP_TYPE_IDS.autoEnrollment);\r\n dependentsResult = (selectedPlan && selectedPlan.autoEnrollId && selectedPlan.autoEnrollId === employeesOnly) ? [] :\r\n selectAllDependents(dependents, otherDeps);\r\n }\r\n\r\n return dependentsResult;\r\n}\r\nconst selectAllChildren = (dependents?: ElectionDependent[], otherDeps?: Dependent[]): ElectionDependent[] => {\r\n if (!otherDeps) return dependents || [];\r\n const childrenTypeIds = getChildDependentTypes(true).map(x => x.id);\r\n otherDeps.filter(dependent => childrenTypeIds.includes(dependent.dependentTypeId)).forEach(r => {\r\n dependents = addNewDependent(dependents || [], r);\r\n });\r\n return dependents || [];\r\n}\r\nconst selectSpouse = (dependents?: ElectionDependent[], otherDeps?: Dependent[]): ElectionDependent[] => {\r\n if (!otherDeps) return dependents || [];\r\n const spouseTypeIds = getSpouseDependentTypes().map(x => x.id);\r\n otherDeps.filter(dependent => spouseTypeIds.includes(dependent.dependentTypeId)).forEach(r => {\r\n dependents = addNewDependent(dependents || [], r);\r\n });\r\n return dependents || [];\r\n}\r\nconst selectAllDependents = (dependents?: ElectionDependent[], otherDeps?: Dependent[]): ElectionDependent[] => {\r\n if (!otherDeps) return dependents || [];\r\n otherDeps.forEach(r => {\r\n dependents = addNewDependent(dependents || [], r);\r\n });\r\n return dependents || [];\r\n}\r\nconst addNewDependent = (dependents: ElectionDependent[], item: Dependent) => {\r\n const deps = dependents ? dependents.slice() : [];\r\n const find = deps.filter(p => p.id === item.id);\r\n if (find && find.length > 0) return deps;\r\n else {\r\n deps.push({\r\n id: item.id,\r\n firstName: item.firstName,\r\n lastName: item.lastName\r\n });\r\n }\r\n return deps;\r\n};\r\n","import moment from 'moment';\r\nimport { AgeRestriction, Dependent, Lookup, Participant } from 'redux/reducers';\r\n\r\n// given a dependent and some context, determine if they should be disabled\r\ninterface DisabledCheckDependencies {\r\n ageRestrictions: AgeRestriction[],\r\n planParticipants: Participant[],\r\n spouseMemberLevelId: number,\r\n childMemberLevelId: number,\r\n isAutoEnrollEnabled: boolean,\r\n lookups: Lookup,\r\n effectiveDate: moment.Moment | Date,\r\n employeeWaiving?: boolean\r\n}\r\nexport const createDisabledCheck\r\n = ({ ageRestrictions, planParticipants, spouseMemberLevelId, childMemberLevelId, isAutoEnrollEnabled, lookups, effectiveDate, employeeWaiving }: DisabledCheckDependencies) =>\r\n (dep: Dependent, checked: boolean, dependentType: 'SPOUSE' | 'DOMESTICPARTNER' | 'CHILD') => {\r\n let disabled: boolean = false;\r\n // consider participant eligibility\r\n lookups[dep.dependentTypeId].parentIds.forEach(pId => {\r\n planParticipants.map(part => {\r\n if (part.participantTypeId === pId) {\r\n disabled = !part.isAllowed;\r\n }\r\n return part;\r\n })\r\n });\r\n\r\n const age = getAgeAtEffectiveDate(dep.dateOfBirth, moment(effectiveDate));\r\n\r\n // returns true if an the dependent age is explicitly out of range\r\n const ageCheck = (min: number | null | undefined, max: number | null | undefined) => {\r\n if (min !== null && min !== undefined) {\r\n if (age < min) {\r\n return true; // invalid\r\n }\r\n }\r\n\r\n if (max !== null && max !== undefined) {\r\n if (age > max) {\r\n return true; // invalid\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n if (employeeWaiving) {\r\n disabled = true;\r\n }\r\n // consider age restrictions\r\n if (dependentType === 'SPOUSE' || dependentType === 'DOMESTICPARTNER') {\r\n const invalid = ageRestrictions.filter(r =>\r\n r.memberLevelId === spouseMemberLevelId &&\r\n ageCheck(r.minAge, r.maxAge)\r\n )\r\n disabled = disabled || invalid.length > 0;\r\n } else {\r\n const dependentIsStudent = !!dep.additionalInfo && !!dep.additionalInfo.student\r\n const dependentHasDisability = !!dep.additionalInfo && !!dep.additionalInfo.disability\r\n\r\n const invalid = ageRestrictions.filter(r =>\r\n r.memberLevelId === childMemberLevelId &&\r\n r.isStudent === dependentIsStudent &&\r\n r.hasDisability === dependentHasDisability &&\r\n ageCheck(r.minAge, r.maxAge)\r\n )\r\n disabled = disabled || invalid.length > 0;\r\n }\r\n\r\n // consider auto enroll\r\n disabled = disabled || (!checked && isAutoEnrollEnabled);\r\n return disabled\r\n }\r\n\r\n\r\nconst getAgeAtEffectiveDate = (dob?: moment.Moment, effectiveDate?: moment.Moment) => {\r\n return moment(effectiveDate).diff(moment(dob), 'years', false);\r\n}","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst Crown = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Crown;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst WeddingRings = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default WeddingRings;","import { Button, createStyles, Theme, withStyles, WithStyles } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid/Grid';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport WaiveActiveIcon from '@material-ui/icons/Cancel';\r\nimport EnrollActiveIcon from '@material-ui/icons/CheckCircle';\r\nimport EnrollInactiveIcon from '@material-ui/icons/CheckCircleOutline';\r\nimport WaiveInactiveIcon from '@material-ui/icons/HighlightOff';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\ninterface ComponentProps {\r\n label: string;\r\n icon: React.ReactNode;\r\n isFlat?: boolean;\r\n isAutoEnrolled?: boolean;\r\n enrolled?: boolean;\r\n waived?: boolean;\r\n fullWidth?: boolean;\r\n disabled?: boolean;\r\n onEnrolled: () => void;\r\n onWaived: () => void;\r\n isEmployee?: boolean;\r\n}\r\ntype Props = ComponentProps & WithStyles\r\n\r\nconst EnrolleeChipToggle = (props: Props) => {\r\n const { classes = {}, label, icon, enrolled, waived, onEnrolled, onWaived, isAutoEnrolled } = props;\r\n const isEnrolled = enrolled === true ;\r\n const notYetElected = !isEnrolled && !waived;\r\n return (\r\n \r\n \r\n \r\n {icon} \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n center:{\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n active: {\r\n color: palette.blue.primary,\r\n },\r\n disabled: {\r\n color: palette.grey.text,\r\n },\r\n fullWidthPaper: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n padding: '13px 0px',\r\n width: '100%',\r\n height: 26,\r\n backgroundColor: palette.blue.light,\r\n },\r\n paper: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n padding: '13px 0px',\r\n minWidth: \"200px\",\r\n backgroundColor: palette.blue.light,\r\n },\r\n leftMargin: {\r\n marginLeft: 5\r\n },\r\n button: {\r\n margin: theme.spacing(0.5),\r\n width: '100px'\r\n },\r\n buttonIcon: {\r\n marginRight: theme.spacing(0.5),\r\n fontSize: 20,\r\n },\r\n enrolledColor: {\r\n backgroundColor: palette.green.primary,\r\n '&:hover': {\r\n backgroundColor: palette.green.primary,\r\n },\r\n },\r\n autoEnrolledColor: {\r\n '&:disabled':{\r\n backgroundColor: palette.green.primary,\r\n color: 'white'\r\n },\r\n },\r\n waivedColor: {\r\n backgroundColor: palette.red.light,\r\n '&:hover': {\r\n backgroundColor: palette.red.light,\r\n },\r\n },\r\n waivedBackground: {\r\n backgroundColor: palette.grey.light\r\n }\r\n});\r\n\r\nexport default withStyles(styles)(EnrolleeChipToggle);","import { createStyles, Grid, Paper, TextField, Divider, Theme, withStyles, WithStyles, withWidth } from '@material-ui/core';\r\nimport { WithWidth } from '@material-ui/core/withWidth';\r\nimport SupervisorAccount from '@material-ui/icons/SupervisorAccount';\r\nimport Crown from 'components/common/icons/icon_crown';\r\nimport WeddingRings from 'components/common/icons/icon_wedding_rings';\r\nimport memoizeOne from 'memoize-one';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { Dependent, ElectionDependent, Participant, Plan } from '../../redux/reducers';\r\nimport { getLookupId, getLookups, getWaivedReasons, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport EnrolleeChipToggle from '../common/enrollee_chip_toggle';\r\n\r\ninterface ComponentProps {\r\n firstName: string;\r\n lastName: string;\r\n isEmployeeChecked: boolean;\r\n isEmployeeWaived: boolean;\r\n isEmployeeDisabled: boolean;\r\n isEmployeeAutoEnrollEnabled: boolean;\r\n isDependentAutoEnrolledEnabled: boolean;\r\n isVoluntary: boolean;\r\n dependents: Dependent[];\r\n dependentReasons: { [key: string]: number };\r\n selectedDependents: ElectionDependent[];\r\n waivedDependents: ElectionDependent[];\r\n disabledDependents: ElectionDependent[];\r\n participantEligibility: Participant[];\r\n employeeWaivedReasonId?: number;\r\n dependentWaivedReasonId?: number;\r\n onEmployeeWaivedReasonSelected: (reasonId: number) => void;\r\n onDependentChecked: (dep: ElectionDependent, id: string) => void;\r\n onDependentWaived: (dep: ElectionDependent, id: string) => void;\r\n onEmployeeChecked: () => void;\r\n onEmployeeWaived: () => void;\r\n onDependentReasonSelected: (reasonId: number, index: string) => void;\r\n selectedPlan: Plan | undefined;\r\n}\r\n\r\ntype Props = ComponentProps & WithStyles & WithWidth;\r\n\r\nclass DependentPlanElection extends React.PureComponent{\r\n employeeParticipantTypeId = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.participationOptions);\r\n\r\n\r\n handleEmployeeClick = () => {\r\n if (!this.props.isEmployeeAutoEnrollEnabled) {\r\n this.props.onEmployeeChecked()\r\n }\r\n };\r\n\r\n isEmployeeAllowed = memoizeOne((participants: Participant[]) => {\r\n return participants.some(p => p.participantTypeId === this.employeeParticipantTypeId && p.isAllowed);\r\n });\r\n\r\n handleDependentWaivedReason = (event: React.ChangeEvent, index: string) => {\r\n if (event.target.value) this.props.onDependentReasonSelected(Number(event.target.value), index);\r\n }\r\n\r\n getAgeAtEffectiveDate = (dob?: moment.Moment) => {\r\n var effectiveDate: moment.Moment =\r\n this.props.selectedPlan !== undefined && this.props.selectedPlan.effectiveDate !== undefined ?\r\n moment(this.props.selectedPlan.effectiveDate) : moment()\r\n return effectiveDate.diff(moment(dob), 'years', false);\r\n }\r\n\r\n handleEmployeeWaivedReason = (event: React.ChangeEvent) => {\r\n if (event.target.value)\r\n this.props.onEmployeeWaivedReasonSelected(Number(event.target.value));\r\n }\r\n\r\n render() {\r\n const { firstName, lastName, selectedDependents, isVoluntary, dependentReasons, waivedDependents, classes, width, disabledDependents } = this.props;\r\n const lookups = getLookups();\r\n const spouse = this.props.dependents.find(dep => lookups[dep.dependentTypeId].key === 'SPOUSE');\r\n const dependents = this.props.dependents.filter(dep => lookups[dep.dependentTypeId].key !== 'SPOUSE');\r\n const sortedDependents = spouse ? [spouse].concat(dependents) : dependents;\r\n\r\n const isEmployeeAutoEnrollEnabled = this.props.isEmployeeAutoEnrollEnabled;\r\n const isDependentAutoEnrolledEnabled = this.props.isDependentAutoEnrolledEnabled;\r\n\r\n const mobile = width === 'xs' || width === 'sm';\r\n\r\n let reasons = getWaivedReasons();\r\n if (!isVoluntary) {\r\n reasons = reasons.filter(reason => reason.key !== \"KNOCKOUTPLANWAIVER\")\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n onEnrolled={() => {\r\n if (!isEmployeeAutoEnrollEnabled && !isDependentAutoEnrolledEnabled && !this.props.isEmployeeChecked) {\r\n this.handleEmployeeClick()\r\n }\r\n }}\r\n onWaived={() => {\r\n if (!isEmployeeAutoEnrollEnabled && !isDependentAutoEnrolledEnabled) {\r\n this.props.onEmployeeWaived();\r\n }\r\n }}\r\n />\r\n \r\n \r\n {this.props.isEmployeeWaived && !this.props.isEmployeeDisabled &&\r\n
\r\n \r\n \r\n {reasons.map(val => (\r\n \r\n ))}\r\n \r\n
\r\n\r\n }\r\n
\r\n
\r\n {sortedDependents.map((dep: Dependent, i: number) => {\r\n const checked = selectedDependents.findIndex(sel => sel.id === dep.id) > -1;\r\n const waived = waivedDependents.findIndex(sel => sel.id === dep.id) > -1;\r\n const isEmployeeWaiving = this.props.isEmployeeWaived;\r\n const disabled = disabledDependents.findIndex(sel => sel.id === dep.id) > -1;\r\n const dependentTypeKey = lookups[dep.dependentTypeId].key;\r\n const isSpouseOrDomesticPartner = dependentTypeKey === 'SPOUSE' || dependentTypeKey === 'DOMESTICPARTNER';\r\n let dependentTypeReasons = isSpouseOrDomesticPartner ? reasons : reasons.filter(reason => reason.key !== \"SPOUSEPLAN\");\r\n const dependentType: 'SPOUSE' | 'CHILD' = lookups[dep.dependentTypeId].key === 'SPOUSE' ? 'SPOUSE' : 'CHILD';\r\n const isDependentAutoEnrollEnabled = this.props.isDependentAutoEnrolledEnabled;\r\n const icon = isSpouseOrDomesticPartner ? : ;\r\n return (\r\n \r\n \r\n {\r\n if ( !checked) {\r\n this.props.onDependentChecked({\r\n id: dep.id,\r\n firstName: dep.firstName,\r\n lastName: dep.lastName,\r\n isWaived: false,\r\n waivedReasonId: undefined\r\n }, dep.id)\r\n }\r\n }}\r\n onWaived={() => {\r\n this.props.onDependentWaived({\r\n id: dep.id,\r\n firstName: dep.firstName,\r\n lastName: dep.lastName,\r\n isWaived: true\r\n }, dep.id);\r\n }}\r\n />\r\n \r\n \r\n {waived && !disabled &&\r\n
\r\n ) => this.handleDependentWaivedReason(e, dep.id)}\r\n fullWidth\r\n SelectProps={{ native: true }}\r\n error={!disabled && !dependentReasons[dep.id] && waived}\r\n >\r\n \r\n {dependentTypeReasons.map(val => (\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\nconst styles = (theme: Theme) => createStyles({\r\n electionOrWaive: {\r\n paddingTop: theme.spacing(.5),\r\n paddingBottom: theme.spacing(.5)\r\n },\r\n paper: {\r\n padding: theme.spacing(),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(3)\r\n },\r\n smallCell: {\r\n margin: '5px 0',\r\n width: '70vw'\r\n }\r\n});\r\n\r\nexport default withWidth()(withStyles(styles)(DependentPlanElection));","import React from 'react';\r\nimport { createStyles, Grid, Paper, Theme, withStyles, WithStyles, withWidth, FormControlLabel, RadioGroup, Radio } from '@material-ui/core';\r\nimport { WithWidth } from '@material-ui/core/withWidth';\r\nimport { ElectionDependent, Dependent } from 'redux/reducers';\r\nimport { compose } from 'redux';\r\nimport { styles as commonStyles, PlanSelectionSummaryStyles as currentViewStyles } from '../../utility/common_styles';\r\nimport { getLookups } from 'utility';\r\n\r\n\r\ninterface ComponentProps {\r\n allowedCoverageLevels: string[];\r\n dependents: Dependent[];\r\n selectedDependents: ElectionDependent[];\r\n waivedDependents: ElectionDependent[];\r\n disabledDependents: ElectionDependent[];\r\n isEmployeeChecked: boolean;\r\n isEmployeeDisabled: boolean;\r\n isEmployeeAutoEnrollEnabled: boolean;\r\n isDependentAutoEnrolledEnabled: boolean;\r\n onDependentChecked: (dep: ElectionDependent, id: string) => void;\r\n onDependentWaived: (dep: ElectionDependent, id: string) => void;\r\n onEmployeeChecked: () => void;\r\n onDependentReasonSelected: (reasonId: number, index: string) => void;\r\n isEmployeeWaived: boolean;\r\n waived?: boolean;\r\n onEmployeeWaivedReasonSelected: (reasonId: number) => void;\r\n onWaive: () => void;\r\n lineOfCoverage: number;\r\n}\r\ntype Props = ComponentProps & WithStyles & WithWidth;\r\ninterface CoverageLevelType {\r\n value: string;\r\n text: string;\r\n}\r\nconst coverageLevels: CoverageLevelType[] = [\r\n {\r\n value: 'EE',\r\n text: 'Yes, I want to elect',\r\n },\r\n {\r\n value: 'ES',\r\n text: 'Employee Spouse',\r\n },\r\n {\r\n value: 'EC',\r\n text: 'Employee Child',\r\n },\r\n {\r\n value: 'EF',\r\n text: 'Yes, I want to elect for my family and me',\r\n },\r\n {\r\n value: 'NO',\r\n text: 'No, I do not want to elect',\r\n }\r\n];\r\n\r\n\r\nconst determineElectedCoverageLevel = (\r\n isEmployeeEnrolled: boolean,\r\n dependents: Dependent[],\r\n selectedDependents: ElectionDependent[],\r\n allowedCoverageLevels: string[]) => {\r\n const lookups = getLookups();\r\n const enrolleeTypes = selectedDependents.map((dep) => {\r\n const d = dependents.find(d => d.id === dep.id)\r\n if (d) {\r\n return lookups[d.dependentTypeId].key;\r\n }\r\n return '';\r\n });\r\n\r\n const isSpouseEnrolled = enrolleeTypes.findIndex(s => s === 'SPOUSE') > -1 || enrolleeTypes.findIndex(s => s === 'DOMESTICPARTNER') > -1;\r\n const isChildEnrolled = enrolleeTypes.findIndex(s => s === 'CHILD') > -1 || enrolleeTypes.findIndex(s => s === 'ADOPTEDCHILD') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'STEPCHILD') > -1 || enrolleeTypes.findIndex(s => s === 'FOSTERCHILD') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'OTHER') > -1 || enrolleeTypes.findIndex(s => s === 'CHILDINSUITFORADOPTION') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'GRANDSON') > -1 || enrolleeTypes.findIndex(s => s === 'GRANDDAUGHTER') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'SON') > -1 || enrolleeTypes.findIndex(s => s === 'DAUGHTER') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'STEPSON') > -1 || enrolleeTypes.findIndex(s => s === 'STEPDAUGHTER') > -1;\r\n\r\n\r\n const isAnyDependentEnrolled = isSpouseEnrolled || isChildEnrolled;\r\n\r\n const isEfAllowed = allowedCoverageLevels.findIndex(s => s === \"EF\") > - 1;\r\n const isEcAllowed = allowedCoverageLevels.findIndex(s => s === \"EC\") > - 1;\r\n const isEsAllowed = allowedCoverageLevels.findIndex(s => s === \"ES\") > - 1;\r\n const isEEAllowed = allowedCoverageLevels.findIndex(s => s === \"EE\") > - 1;\r\n\r\n if (isEmployeeEnrolled && isChildEnrolled && isSpouseEnrolled && isEfAllowed) {\r\n return \"EF\";\r\n }\r\n\r\n if (isEmployeeEnrolled && isAnyDependentEnrolled && isEfAllowed && !isEcAllowed && !isEsAllowed) {\r\n return \"EF\";\r\n }\r\n\r\n if (isEmployeeEnrolled && isChildEnrolled && !isSpouseEnrolled && isEcAllowed) {\r\n return \"EC\";\r\n }\r\n\r\n if (isEmployeeEnrolled && isSpouseEnrolled && isEsAllowed) {\r\n return \"ES\";\r\n }\r\n\r\n if (isEmployeeEnrolled && isSpouseEnrolled && isEsAllowed) {\r\n return \"ES\";\r\n }\r\n\r\n if (isEmployeeEnrolled && isEEAllowed) {\r\n return \"EE\";\r\n }\r\n\r\n return 'NO';\r\n}\r\n\r\nconst getAllowedCoverageTypes = (dependents: Dependent[], disabledDependents: ElectionDependent[], allowedCoverageLevels: string[], lineOfCoverage: number) => {\r\n allowedCoverageLevels.push(\"NO\");\r\n const lookups = getLookups();\r\n const eligibleDependents = dependents.filter((dep) => {\r\n const isDependentDisabled = disabledDependents.findIndex(d => d.id === dep.id) > -1;\r\n return !isDependentDisabled;\r\n });\r\n const enrolleeTypes = eligibleDependents.map((dep) => {\r\n const d = dependents.find(d => d.id === dep.id)\r\n if (d) {\r\n return lookups[d.dependentTypeId].key;\r\n }\r\n return '';\r\n });\r\n const isSpouseEligible = enrolleeTypes.findIndex(s => s === 'SPOUSE') > -1 || enrolleeTypes.findIndex(s => s === 'DOMESTICPARTNER') > -1;\r\n const isChildEligible = enrolleeTypes.findIndex(s => s === 'CHILD') > -1 || enrolleeTypes.findIndex(s => s === 'ADOPTEDCHILD') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'STEPCHILD') > -1 || enrolleeTypes.findIndex(s => s === 'FOSTERCHILD') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'OTHER') > -1 || enrolleeTypes.findIndex(s => s === 'CHILDINSUITFORADOPTION') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'GRANDSON') > -1 || enrolleeTypes.findIndex(s => s === 'GRANDDAUGHTER') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'SON') > -1 || enrolleeTypes.findIndex(s => s === 'DAUGHTER') > -1 \r\n || enrolleeTypes.findIndex(s => s === 'STEPSON') > -1 || enrolleeTypes.findIndex(s => s === 'STEPDAUGHTER') > -1;\r\n const isAnyDependentEligible = isSpouseEligible || isChildEligible;\r\n const allowedCoverageTypes = coverageLevels.filter((coverage) => {\r\n if (coverage.value === \"ES\" && !isSpouseEligible) {\r\n return false;\r\n }\r\n if (coverage.value === \"EC\" && !isChildEligible) {\r\n return false;\r\n }\r\n\r\n if (coverage.value === \"EF\" && !isAnyDependentEligible) {\r\n return false;\r\n }\r\n\r\n return allowedCoverageLevels.findIndex(d => d === coverage.value) > -1;\r\n });\r\n\r\n return allowedCoverageTypes;\r\n}\r\nconst DependentPlanCoverageElection = (props: Props) => {\r\n const { classes, dependents, onEmployeeChecked,\r\n onDependentWaived, onDependentChecked,\r\n selectedDependents, disabledDependents,\r\n waivedDependents, isEmployeeChecked,\r\n isEmployeeAutoEnrollEnabled,\r\n allowedCoverageLevels,\r\n onDependentReasonSelected,\r\n isEmployeeWaived } = props;\r\n\r\n const allowedCoverageTypes = getAllowedCoverageTypes(dependents, disabledDependents, allowedCoverageLevels, props.lineOfCoverage);\r\n const isEmployeeEnrolled = !isEmployeeWaived && (isEmployeeChecked === true || isEmployeeAutoEnrollEnabled === true);\r\n const selectedCoverage = determineElectedCoverageLevel(isEmployeeEnrolled, dependents, selectedDependents, allowedCoverageLevels);\r\n const [coverageLevel, setCoverageLevel] = React.useState(selectedCoverage);\r\n\r\n React.useEffect(() => {\r\n setCoverageLevel(selectedCoverage);\r\n }, [selectedCoverage])\r\n\r\n const handleChange = React.useCallback((event: React.ChangeEvent) => {\r\n const selectedCoverageLevel = event.target.value as string;\r\n setCoverageLevel(selectedCoverageLevel);\r\n switch (selectedCoverageLevel) {\r\n case \"EE\":\r\n if (!isEmployeeEnrolled) {\r\n onEmployeeChecked();\r\n }\r\n dependents.map((dep) => {\r\n const isWaived = waivedDependents.findIndex(sel => sel.id === dep.id) > -1;\r\n if (!isWaived) {\r\n setTimeout(() => {\r\n onDependentWaived({\r\n id: dep.id,\r\n firstName: dep.firstName,\r\n lastName: dep.lastName,\r\n isWaived: true,\r\n }, dep.id);\r\n onDependentReasonSelected(159, dep.id);\r\n }, 200);\r\n }\r\n });\r\n\r\n break;\r\n case \"EF\":\r\n if (!isEmployeeEnrolled) {\r\n onEmployeeChecked();\r\n }\r\n dependents.map((dep) => {\r\n const isAlreadySelected = selectedDependents.findIndex(sel => sel.id === dep.id) > -1;\r\n const isDisabled = disabledDependents.findIndex(sel => sel.id === dep.id) > -1;\r\n if (!isAlreadySelected && !isDisabled) {\r\n onDependentChecked({\r\n id: dep.id,\r\n firstName: dep.firstName,\r\n lastName: dep.lastName,\r\n isWaived: false,\r\n waivedReasonId: undefined\r\n }, dep.id);\r\n }\r\n });\r\n break;\r\n case \"NO\": {\r\n props.onWaive();\r\n props.onEmployeeWaivedReasonSelected(159);\r\n }\r\n break;\r\n }\r\n }, [dependents, selectedDependents, disabledDependents, isEmployeeEnrolled])\r\n\r\n return (\r\n <>\r\n \r\n {allowedCoverageTypes.length > 0 && allowedCoverageTypes.map((coverage: CoverageLevelType, i: number) => {\r\n return (\r\n \r\n \r\n }\r\n label={{coverage.text}}\r\n />\r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n \r\n )\r\n}\r\nconst styles = (theme: Theme) => createStyles({\r\n ...commonStyles,\r\n electionOrWaive: {\r\n paddingTop: theme.spacing(.5),\r\n paddingBottom: theme.spacing(.5)\r\n },\r\n paper: {\r\n padding: theme.spacing(),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(3)\r\n },\r\n smallCell: {\r\n margin: '5px 0',\r\n width: '70vw'\r\n }\r\n});\r\nexport default compose(\r\n withStyles(styles),\r\n withWidth()\r\n)(DependentPlanCoverageElection) as React.FunctionComponent;\r\n","import { Grid, InputAdornment, Paper, TextField, Typography, FormControlLabel, Radio, FormControl, FormLabel, RadioGroup } from '@material-ui/core';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport React from 'react';\r\nimport { Plan } from 'redux/reducers/plan_reducer';\r\nimport palette from '../../utility/palette';\r\nimport MessageCard from '../common/message_card';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { getAnnualAmount, getPayPeriodAmount } from '../../utility/calculation_utils';\r\n\r\ninterface ComponentProps {\r\n hsaEligible: boolean;\r\n hsaContribution: number;\r\n hsaAmount: number;\r\n hsaContributionMode: number;\r\n hsaMaxValueAllowed: number;\r\n selectedPlan?: Plan;\r\n payFrequency: number;\r\n payPeriodName: string;\r\n updateHSA: (e: any) => void;\r\n updateHSAMode: (e: any) => void;\r\n annualContribValue: number;\r\n payPeriodContribValue: number;\r\n}\r\ninterface Props extends ComponentProps, WithWidth { }\r\nconst useStyles = makeStyles(theme => ({\r\n formControl: {\r\n margin: theme.spacing(-1),\r\n paddingTop: 10\r\n },\r\n}));\r\n\r\nconst annualContribution = \"Annual Contribution\";\r\nconst payPeriodContributionMessage = \"Pay Period Contribution\";\r\nconst perYear = \"Per Year\";\r\n\r\nconst HSACard = (props: Props) => {\r\n const classes = useStyles();\r\n const [contribTypeValue, setContribTypeValue] = React.useState(props.hsaContributionMode);\r\n const [hsaAmountLabel, setHsaAmountLabel] = React.useState(\"\");\r\n const [contributionAmountMessagePrefix, setContributionAmountMessagePrefix] = React.useState(\"\");\r\n const [contributionAmountMessageSuffix, setContributionAmountMessageSuffix] = React.useState(\"\");\r\n const [contributionAmount, setContributionAmount] = React.useState(0);\r\n const [hsaFieldAmount, sethsaFieldAmount] = React.useState(0);\r\n const hsaMaxValueAllowed = props.hsaMaxValueAllowed;\r\n const hsaMaxValueValidator = hsaFieldAmount > hsaMaxValueAllowed;\r\n\r\n React.useEffect(() => {\r\n setContribTypeLabels(contribTypeValue.toString());\r\n }, [props.hsaAmount, props.hsaContribution])\r\n\r\n\r\n\r\n const setContribTypeLabels = (value: React.SetStateAction) => {\r\n\r\n\r\n if (value === props.annualContribValue.toString()) {\r\n setHsaAmountLabel(`Contribution ${perYear}`);\r\n setContributionAmountMessagePrefix(payPeriodContributionMessage);\r\n setContributionAmountMessageSuffix(props.payPeriodName);\r\n sethsaFieldAmount(props.hsaContribution);\r\n setContributionAmount(props.hsaAmount);\r\n }\r\n else if (value === props.payPeriodContribValue.toString()) {\r\n setHsaAmountLabel(`Contribution Per Pay Period (${props.payPeriodName})`);\r\n setContributionAmountMessagePrefix(annualContribution);\r\n setContributionAmountMessageSuffix(perYear);\r\n sethsaFieldAmount(props.hsaAmount);\r\n setContributionAmount(props.hsaContribution);\r\n }\r\n }\r\n\r\n const handleContribTypeValueChange = (event: { target: { value: React.SetStateAction; }; }) => {\r\n setContribTypeValue(parseFloat(event.target.value.toString()));\r\n setContribTypeLabels(event.target.value);\r\n props.updateHSAMode(event);\r\n };\r\n\r\n return (\r\n \r\n {props.selectedPlan && props.hsaEligible ?\r\n <>\r\n HSA Contributions\r\n \r\n \r\n Look Up Federal HSA Contribution Limits\r\n \r\n \r\n \r\n \r\n } label={annualContribution} labelPlacement=\"end\" />\r\n } label={payPeriodContributionMessage} labelPlacement=\"end\" />\r\n \r\n \r\n \r\n \r\n $\r\n \r\n ),\r\n }}\r\n label={hsaAmountLabel}\r\n />\r\n \r\n \r\n \r\n \r\n Your {contributionAmountMessagePrefix} is\r\n \r\n   {`$${contributionAmount.toLocaleString('en-US')}`} \r\n {contributionAmountMessageSuffix}\r\n \r\n \r\n\r\n \r\n : props.selectedPlan ?

Your medical selection does not allow enrollment in a health savings account.

\r\n :

You must select a medical plan before enrolling in a Health Savings Account.

\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n paper: {\r\n padding: '20px 40px',\r\n marginBottom: 15\r\n },\r\n contributionGrid: {\r\n marginTop: \"30px\"\r\n },\r\n infoIcon: {\r\n display: \"block\",\r\n margin: \"auto\",\r\n paddingTop: \"50%\"\r\n },\r\n header: {\r\n color: palette.grey.lightText,\r\n fontSize: \"20px\",\r\n textAlign: \"center\"\r\n },\r\n annualContribution: {\r\n fontSize: \"16px\",\r\n padding: \"5px\",\r\n color: palette.grey.text\r\n },\r\n lightText: {\r\n color: palette.grey.lightText,\r\n marginBottom: \"20px\"\r\n },\r\n gridPadding: {\r\n padding: \"5px\",\r\n fontSize: \"16px\",\r\n color: palette.grey.text\r\n },\r\n amountPadding: {\r\n paddingTop: \"10px\",\r\n paddingLeft: \"5px\"\r\n },\r\n annualAmount: {\r\n color: palette.grey.text,\r\n fontSize: \"20px\",\r\n fontWeight: 500\r\n },\r\n employeContribution: {\r\n fontStyle: \"italics\",\r\n fontSize: \"16px\",\r\n lineHeight: \"25px\"\r\n },\r\n hsaMargin: {\r\n margin: \"30px 0px\"\r\n },\r\n textAlign: {\r\n textAlign: 'center'\r\n }\r\n}\r\n\r\nexport default withWidth()(HSACard);","import React from 'react';\r\nimport RenewalQuestionsForm, { FormData as RenewalQuestionsFormData, FORM_NAME as renewalQuestionsForm } from 'components/forms/renewal_questions_form';\r\nimport { Election,Employee } from 'redux/reducers';\r\n\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n currentSelectedPlanId?:string;\r\n currentSelectedPlanName?: string;\r\n lineOfCoverage?:number;\r\n renewalInitialValues?: RenewalQuestionsFormData;\r\n employee?: Employee;\r\n isCurrentElectionWaived?: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps{}\r\n\r\nconst RenewalQuestionsSection = (props: Props) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default (RenewalQuestionsSection);","import { ButtonBase, Grid, Paper } from '@material-ui/core';\r\nimport { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport PlaylistAdd from '@material-ui/icons/PlaylistAdd';\r\nimport React from 'react';\r\nimport palette from '../../utility/palette';\r\n\r\ninterface ComponentProps {\r\n onClick: () => void;\r\n}\r\n\r\ninterface Props extends ComponentProps, StyledComponentProps { }\r\n\r\nconst AddPrimaryCareCard = (props: Props) => {\r\n const { onClick } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
Add Another Provider
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n body: {\r\n backgroundColor: palette.grey.dark,\r\n borderWidth: 1,\r\n borderStyle: 'dashed',\r\n borderColor: palette.grey.text,\r\n padding: '20px 0',\r\n width: '100%',\r\n textAlign: 'center'\r\n },\r\n button: {\r\n width: '100%'\r\n },\r\n icon: {\r\n color: palette.grey.text,\r\n fontSize: 60\r\n },\r\n text: {\r\n color: palette.blue.primary,\r\n textTransform: 'uppercase'\r\n }\r\n}\r\n\r\nexport default AddPrimaryCareCard;","import { Button, Checkbox, FormControlLabel, Grid, Paper, TextField, Typography } from '@material-ui/core';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport Help from '@material-ui/icons/Help';\r\nimport AddPrimaryCareCard from 'components/forms/add_primarycare_card';\r\nimport React, { useState } from 'react';\r\nimport { ElectionDependent, Employee, PrimaryCareBase, PrimaryCareDTO, PrimaryCareEnrolleeBase, PrimaryCareEnrolleeDTO } from 'redux/reducers';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\ninterface Props {\r\n employee: Employee;\r\n primaryCares: PrimaryCareDTO[];\r\n onPrimaryCaresUpdated: (primaryCares: PrimaryCareDTO[]) => void;\r\n selectedDependents: ElectionDependent[];\r\n link?: string;\r\n lineOfCoverageId?: number;\r\n}\r\n\r\ninterface PrimaryCareView extends PrimaryCareBase {\r\n enrollees: PrimaryCareEnrolleeView[];\r\n viewId: string;\r\n}\r\n\r\ninterface PrimaryCareEnrolleeView extends PrimaryCareEnrolleeBase {\r\n isChecked: boolean;\r\n fullName: string;\r\n isEnabled: boolean;\r\n}\r\n\r\n\r\nconst PrimaryCareInformationCard = ({ selectedDependents, link, employee, primaryCares: primaryCareDtos, lineOfCoverageId, onPrimaryCaresUpdated }: Props) => {\r\n const primaryCares = primaryCareDtos.map((initialPrimaryCare, idx) => {\r\n const enrollees = initialPrimaryCare.enrollees || [];\r\n\r\n const otherPcps = primaryCareDtos.filter((_, i) => i !== idx);\r\n \r\n return {\r\n ...initialPrimaryCare,\r\n viewId: `${idx}`,\r\n enrollees: [\r\n {\r\n id: employee.id,\r\n isEmployee: true,\r\n isChecked: !!enrollees.find(e => e.isEmployee),\r\n fullName: employee.fullName,\r\n isEnabled: !!enrollees.find(e => e.isEmployee) || !otherPcps.find(p => !!(p.enrollees || []).find(e => e.isEmployee))\r\n } as PrimaryCareEnrolleeView,\r\n ...selectedDependents.map(d => ({\r\n id: d.id,\r\n isEmployee: false,\r\n isChecked: !!enrollees.find(e => e.id === d.id && !e.isEmployee),\r\n fullName: d.firstName + ' ' + d.lastName,\r\n isEnabled: !!enrollees.find(e => e.id === d.id) || !otherPcps.find(p => !!(p.enrollees || []).find(e => e.id === d.id))\r\n } as PrimaryCareEnrolleeView))\r\n ]\r\n } as PrimaryCareView;\r\n });\r\n\r\n const tooltipNote = \"You can still submit your enrollment, but a representative may reach out to collect this information later.\"\r\n const isMedical = lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n\r\n const pcpWithNoEnrolleesSelectedExist = primaryCares\r\n .filter(p => p.enrollees.filter(e => e.isChecked === true).length === 0).length > 0;\r\n\r\n const allowAddPrimaryCare = primaryCares\r\n .map(p => p.enrollees.filter(e => e.isChecked).length)\r\n .reduce((a, b) => a + b, 0) < selectedDependents.length + 1 && !pcpWithNoEnrolleesSelectedExist\r\n\r\n return (\r\n <>\r\n
{isMedical ? 'Primary Care Provider Information' : 'Dental Care Provider Information'}
\r\n
\r\n {`The plan you selected requires information about your ${isMedical ? 'primary care provider' : 'dental care provider'}. Please make sure the provider you select is in your plan's network.`}\r\n {link && }\r\n
\r\n {`What if I don't have my ${isMedical ? \"primary care provider\" : \"dental care provider\"} information?`}\r\n } />\r\n
\r\n {primaryCares.map(pcp => {\r\n return (\r\n {\r\n const primaryCareDtos = primaryCares\r\n .filter(primaryCare => primaryCare.viewId !== removedPcp.viewId)\r\n .map(primaryCare => ({\r\n ...primaryCare,\r\n enrollees: primaryCare.enrollees\r\n .filter(e => e.isChecked) as PrimaryCareEnrolleeDTO[]\r\n } as PrimaryCareDTO))\r\n onPrimaryCaresUpdated(primaryCareDtos)\r\n }}\r\n onPrimaryCareUpdated={(updatedPcp) => {\r\n const primaryCareDtos = primaryCares\r\n .map(primaryCare => {\r\n if (primaryCare.viewId === updatedPcp.viewId) {\r\n return updatedPcp\r\n }\r\n return primaryCare;\r\n })\r\n .map(primaryCare => ({\r\n ...primaryCare,\r\n enrollees: primaryCare.enrollees\r\n .filter(e => e.isChecked) as PrimaryCareEnrolleeDTO[]\r\n } as PrimaryCareDTO))\r\n onPrimaryCaresUpdated(primaryCareDtos)\r\n }}\r\n />\r\n )\r\n })}\r\n {allowAddPrimaryCare &&\r\n {\r\n onPrimaryCaresUpdated([\r\n ...primaryCares\r\n .map(primaryCare => ({\r\n ...primaryCare,\r\n enrollees: primaryCare.enrollees\r\n .filter(e => e.isChecked) as PrimaryCareEnrolleeDTO[]\r\n } as PrimaryCareDTO)),\r\n {\r\n assignDoctor: false,\r\n doctorId: '',\r\n doctorName: '',\r\n doctorZipCode: '',\r\n isExistingPatient: false,\r\n enrollees: []\r\n }\r\n ] as PrimaryCareDTO[])\r\n }} />\r\n }\r\n \r\n );\r\n};\r\n\r\ninterface FieldProps {\r\n isMedical: boolean;\r\n primaryCareInfo: PrimaryCareView;\r\n onPrimaryCareUpdated: (primaryCare: PrimaryCareView) => void;\r\n onPrimaryCareRemoved: (primaryCare: PrimaryCareView) => void;\r\n}\r\n\r\nconst PrimaryCareInformationFields = ({ primaryCareInfo, isMedical, onPrimaryCareUpdated = _ => { }, onPrimaryCareRemoved = _ => { } }: FieldProps) => {\r\n const [pcpEnrolleeChecked,setPcpEnrolleeChecked] = useState(false);\r\n\r\n const changeId = React.useCallback(\r\n (e: any) => {\r\n const doctorId = e.target.value;\r\n onPrimaryCareUpdated({\r\n ...primaryCareInfo,\r\n doctorId\r\n });\r\n },\r\n [primaryCareInfo, onPrimaryCareUpdated],\r\n );\r\n const changeName = React.useCallback(\r\n (e: any) => {\r\n const doctorName = e.target.value;\r\n onPrimaryCareUpdated({\r\n ...primaryCareInfo,\r\n doctorName\r\n });\r\n },\r\n [primaryCareInfo, onPrimaryCareUpdated],\r\n );\r\n const changeZipCode = React.useCallback(\r\n (e: any) => {\r\n const doctorZipCode = e.target.value;\r\n onPrimaryCareUpdated({\r\n ...primaryCareInfo,\r\n doctorZipCode\r\n });\r\n },\r\n [primaryCareInfo, onPrimaryCareUpdated],\r\n );\r\n const updateExistingPatient = React.useCallback(\r\n (e: any, isExistingPatient: boolean) => {\r\n onPrimaryCareUpdated({\r\n ...primaryCareInfo,\r\n isExistingPatient\r\n });\r\n },\r\n [primaryCareInfo, onPrimaryCareUpdated],\r\n );\r\n const updateAssignDoctor = React.useCallback(\r\n (e: any, assignDoctor: boolean) => {\r\n onPrimaryCareUpdated({\r\n ...primaryCareInfo,\r\n assignDoctor\r\n });\r\n },\r\n [primaryCareInfo, onPrimaryCareUpdated],\r\n );\r\n\r\n const onUpdatedEnrollee = (enrollee: PrimaryCareEnrolleeView, checked: boolean) => {\r\n checked ? setPcpEnrolleeChecked(true) : setPcpEnrolleeChecked(false);\r\n\r\n onPrimaryCareUpdated({\r\n ...primaryCareInfo,\r\n enrollees: primaryCareInfo.enrollees.map(e => ({\r\n ...e,\r\n isChecked: e.id === enrollee.id ? checked : e.isChecked\r\n }))\r\n })\r\n }\r\n\r\n const checkboxControl = Boolean(primaryCareInfo.doctorName ? primaryCareInfo.doctorName.length : false);\r\n const pcpWithAnyEnrolleesSelectedExist = primaryCareInfo.enrollees.some(e => e.isChecked === true);\r\n\r\n const index = parseInt(primaryCareInfo.viewId);\r\n return (\r\n \r\n
\r\n
\r\n {index > 0 &&\r\n \r\n }\r\n
\r\n Primary Care Provider Information\r\n Select members covered by care provider:\r\n \r\n \r\n {(primaryCareInfo.enrollees || []).map(e => {\r\n return (\r\n
\r\n onUpdatedEnrollee(e, !e.isChecked)} />\r\n {e.fullName}\r\n
\r\n )\r\n })\r\n }\r\n
\r\n {(pcpEnrolleeChecked || pcpWithAnyEnrolleesSelectedExist) &&\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 label={I am an existing patient}\r\n />\r\n
\r\n \r\n }\r\n label={\r\n \r\n {`Allow carrier to select my ${isMedical ? \"primary care provider\" : \"dental care provider\"} `}\r\n \r\n }\r\n />\r\n
\r\n }\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n paper: {\r\n padding: '20px 20px',\r\n marginBottom: 15,\r\n marginTop: 20\r\n },\r\n header: {\r\n color: palette.grey.lightText,\r\n fontSize: 24\r\n },\r\n subHeader: {\r\n color: palette.grey.lightText,\r\n marginBottom: '10px'\r\n },\r\n italicText: {\r\n fontStyle: \"italic\",\r\n paddingTop: \"4px\",\r\n color: palette.grey.text,\r\n fontSize: \"0.875rem\",\r\n fontWeight: 400,\r\n fontFamily: \"Roboto, Helvetica, Arial, sans-serif\",\r\n lineHeight: \"1.46429em\"\r\n },\r\n greyText: {\r\n color: palette.grey.text\r\n },\r\n toolTipContainer: {\r\n marginLeft: \"-30px\"\r\n },\r\n\r\n linkDiv: {\r\n margin: '10px 0',\r\n },\r\n link: {\r\n color: palette.blue.primary,\r\n textTransform: 'none'\r\n },\r\n text: {\r\n color: palette.grey.text\r\n },\r\n};\r\n\r\nexport default PrimaryCareInformationCard;","import { FormControlLabel, Radio, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@material-ui/core';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport { RadioControlGroupField } from 'components/common/reduxform_fields';\r\nimport React from 'react';\r\nimport { Field, FieldArray, FormErrors, getFormError, getFormValues, InjectedFormProps, isValid, reduxForm, WrappedFieldArrayProps } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { validateIfNotReducedWithMessage, requiredForSubmission } from 'utility/form_validation';\r\nimport { getLookupId, getMemberLevel, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport { capitalize, DependentAnswer, PlanQuestionsAnswer, PlanQuestionsData } from 'utility/question_utility';\r\n\r\nexport interface PlanQuestionsState {\r\n isValid: boolean;\r\n values?: PlanQuestionsData;\r\n error: PlanQuestionsError;\r\n}\r\n\r\nexport type PlanQuestionsErrorType = 'EmployeeNotEligible' | 'SpouseNotEligible' | 'DependentsNotEligible';\r\nexport type PlanQuestionsError = Set;\r\n\r\ninterface ComponentProps {\r\n type: QuestionType;\r\n}\r\n\r\ntype QuestionType = 'yesDisqualifiesEligibility' | 'noDisqualifiesEligibility';\r\n\r\ninterface Props extends ComponentProps, InjectedFormProps {\r\n\r\n}\r\n\r\nconst reqIfNotReducedValidation = validateIfNotReducedWithMessage('Required');\r\n\r\nfunction validate(values: PlanQuestionsData, { type }: Props): FormErrors {\r\n const employeeLevelId = getMemberLevel().find(l => l.key === 'EMPLOYEE')!;\r\n const spouseLevelId = getMemberLevel().find(l => l.key === 'SPOUSE')!;\r\n const errors: PlanQuestionsError = new Set();\r\n\r\n const questions = values.questions;\r\n if (!values.questions) {\r\n return {};\r\n }\r\n\r\n let checkDisqualified: (value: string) => boolean = () => false;\r\n if (type === 'yesDisqualifiesEligibility') {\r\n checkDisqualified = value => value.toLowerCase() === 'yes';\r\n } else if (type === 'noDisqualifiesEligibility') {\r\n checkDisqualified = value => value.toLowerCase() === 'no';\r\n }\r\n\r\n for (var i = 0; i < questions.length; ++i) {\r\n const answerDisqualified = (answer?: DependentAnswer) => answer && answer.value && checkDisqualified(answer.value);\r\n\r\n var employeeAnswer = questions[i].answers.find(answer => answer.memberId === employeeLevelId.id)\r\n if (employeeAnswer && answerDisqualified(employeeAnswer)) {\r\n errors.add('EmployeeNotEligible');\r\n }\r\n var spouseAnswers = questions[i].answers.filter(answer => answer.memberId === spouseLevelId.id);\r\n if (spouseAnswers.filter(answerDisqualified).length > 0) {\r\n errors.add('SpouseNotEligible');\r\n }\r\n\r\n var dependentAnswers = questions[i].answers.filter(answer => answer.memberId !== employeeLevelId.id && answer.memberId !== spouseLevelId.id);\r\n if (dependentAnswers.filter(answerDisqualified).length > 0) {\r\n errors.add('DependentsNotEligible');\r\n }\r\n }\r\n\r\n if (errors.size > 0) {\r\n return {\r\n _error: errors\r\n };\r\n } else {\r\n return {};\r\n }\r\n}\r\n\r\ninterface PlanQuestionsAnswerProps extends WrappedFieldArrayProps {\r\n}\r\n\r\nconst PlanQuestionsAnswersFieldArray = ({ fields, meta }: PlanQuestionsAnswerProps) => {\r\n const getMemberLevelId = (key: 'SPOUSE' | 'PERCHILD' | 'EMPLOYEE') => getLookupId(key, LOOKUP_TYPE_IDS.memberLevel)\r\n\r\n const levelIdToLabelMap = {\r\n [getMemberLevelId('EMPLOYEE')]: 'Self',\r\n [getMemberLevelId('SPOUSE')]: 'Spouse / DP',\r\n [getMemberLevelId('PERCHILD')]: 'Child(ren)',\r\n };\r\n\r\n const questionStyles = (hasChildren: boolean, isChild: boolean): CSSProperties => ({\r\n marginBottom: hasChildren ? 25 : undefined,\r\n paddingLeft: isChild ? 50 : undefined\r\n })\r\n\r\n const tableStyles = (hasChildren: boolean, isChild: boolean): CSSProperties => ({\r\n marginBottom: 25,\r\n marginLeft: isChild ? 50 : undefined\r\n })\r\n\r\n return <>{fields.map((name, idx) => {\r\n const { questionId, questionText, answers, hasChildren, isChildQuestion } = fields.get(idx);\r\n return \r\n {capitalize(questionText)}\r\n {!hasChildren &&\r\n \r\n \r\n {answers.map(answer => \r\n {levelIdToLabelMap[answer.memberId]}\r\n )}\r\n \r\n \r\n {answers.map((dependentAnswer, answerIdx) => {\r\n dependentAnswer != null &&\r\n \r\n }\r\n label={Yes}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n }\r\n label={No}\r\n labelPlacement=\"end\"\r\n style={{\r\n justifyContent: 'left'\r\n }}\r\n />\r\n \r\n })}\r\n \r\n \r\n
}\r\n
\r\n })}\r\n}\r\n\r\nconst PlanQuestionsForm = (props: Props) => {\r\n return <>\r\n \r\n \r\n}\r\n\r\nexport const selectPlanQuestionsState = (formName: string) => (state: ReduxState): PlanQuestionsState => ({\r\n isValid: isValid(formName)(state),\r\n values: getFormValues(formName)(state) as PlanQuestionsData,\r\n error: getFormError(formName)(state) as PlanQuestionsError\r\n})\r\n\r\nexport default reduxForm({\r\n validate: validate,\r\n enableReinitialize: true, // needed for the form state to re-initialize when initialValues is changed\r\n pure: false, // needed for the component to update when the initialValues is changed\r\n})(PlanQuestionsForm)","import { Paper, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Plan, PlanQuestion, QuestionAnswer } from 'redux/reducers';\r\nimport palette from 'utility/palette';\r\nimport { questionFlattener } from 'utility/question_utility';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { default as PlanQuestionsForm, PlanQuestionsError, PlanQuestionsErrorType } from './plan_questions_form';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\n\r\ninterface Props {\r\n error?: PlanQuestionsError;\r\n questions: PlanQuestion[];\r\n formName: string;\r\n selectedMemberLevels: Set;\r\n selectedLOCPlans: Plan[];\r\n selectedPlan?: Plan;\r\n savedAnswers?: QuestionAnswer[];\r\n}\r\n\r\nexport default ({ error = new Set(), savedAnswers = [], questions, formName, selectedMemberLevels, selectedLOCPlans, selectedPlan }: Props) => {\r\n let errorMessage: string | undefined = undefined;\r\n if (error.size > 0) {\r\n const nonKnockoutPlansAvailable = selectedLOCPlans\r\n .filter(plan => selectedPlan ? plan.id !== selectedPlan.id : true)\r\n .find(plan => !plan.questions.filter(q => q.questionTypeId === getLookupId('KNOCKOUTQUESTION', LOOKUP_TYPE_IDS.questionType) || plan.questions.filter(q => q.questionTypeId === getLookupId('KNOCKOUTQUESTION', LOOKUP_TYPE_IDS.questionType)).length > 0)) !== undefined;\r\n\r\n if (nonKnockoutPlansAvailable) {\r\n if (error.has('EmployeeNotEligible')) {\r\n errorMessage = `Based on your answers to the health questions, you and your dependents are not eligible to elect this coverage. Please select a plan with lower benefits or waive this coverage to continue.`;\r\n } else if (error.has('SpouseNotEligible') || error.has('DependentsNotEligible')) {\r\n errorMessage = `Based on your answers to the health questions, your spouse and/or children are not eligible to elect this coverage. Please select a plan with lower benefits or waive this coverage to continue.`;\r\n }\r\n } else {\r\n if (error.has('EmployeeNotEligible')) {\r\n errorMessage = `Based on your answers to the health questions, you and your dependents are not eligible to elect this coverage. Please waive this coverage to continue.`;\r\n } else if (error.has('SpouseNotEligible') || error.has('DependentsNotEligible')) {\r\n errorMessage = `Based on your answers to the health questions, your spouse and/or children are not eligible to elect this coverage. Please remove them from this election to continue.`;\r\n }\r\n }\r\n }\r\n\r\n const flattennedQuestions = React.useMemo(()=>{\r\n const qu = questionFlattener(questions, selectedMemberLevels, savedAnswers);\r\n return qu;\r\n }, [questions, selectedMemberLevels]);\r\n\r\n return \r\n
\r\n Health Questions\r\n
\r\n {errorMessage && {errorMessage}}\r\n \r\n
\r\n}","import { Paper, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { PlanQuestion, QuestionAnswer } from 'redux/reducers';\r\nimport palette from 'utility/palette';\r\nimport { questionFlattener } from 'utility/question_utility';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport PlanQuestionsForm, { PlanQuestionsError, PlanQuestionsErrorType } from './plan_questions_form';\r\n\r\ninterface ComponentProps {\r\n error?: PlanQuestionsError;\r\n questions: PlanQuestion[];\r\n formName: string;\r\n selectedMemberLevels: Set;\r\n savedAnswers?: QuestionAnswer[];\r\n}\r\n\r\ninterface Props extends ComponentProps{};\r\n\r\nexport default ({ error = new Set(), savedAnswers = [], questions, formName, selectedMemberLevels }: Props) => {\r\n let errorMessage: string | undefined = undefined;\r\n if (error.has('EmployeeNotEligible')) {\r\n errorMessage = `Based on your answer, you and your dependents are not eligible to elect this coverage. Please waive this coverage to continue.`;\r\n } else if (error.has('SpouseNotEligible') || error.has('DependentsNotEligible')) {\r\n errorMessage = `Based on your answer, your spouse and/or children are not eligible to elect this coverage. Please remove them from this election to continue.`;\r\n }\r\n\r\n return \r\n
\r\n Major Medical Coverage\r\n
\r\n {errorMessage && {errorMessage}}\r\n \r\n
\r\n}","import { Paper, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { PlanQuestion, QuestionAnswer } from 'redux/reducers';\r\nimport palette from 'utility/palette';\r\nimport { questionFlattener } from 'utility/question_utility';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport PlanQuestionsForm, { PlanQuestionsError, PlanQuestionsErrorType } from './plan_questions_form';\r\n\r\ninterface Props {\r\n error?: PlanQuestionsError;\r\n questions: PlanQuestion[];\r\n formName: string;\r\n selectedMemberLevels: Set;\r\n savedAnswers?: QuestionAnswer[];\r\n}\r\n\r\nexport default ({ error = new Set(), savedAnswers = [], questions, formName, selectedMemberLevels }: Props) => {\r\n let errorMessage: string | undefined = undefined;\r\n if (error.has('EmployeeNotEligible')) {\r\n errorMessage = `Based on your answers to the medicare questions, you and your dependents are not eligible to elect this medicare coverage. Please waive this coverage to continue.`;\r\n } else if (error.has('SpouseNotEligible') || error.has('DependentsNotEligible')) {\r\n errorMessage = `Based on your answers to the medicare questions, your spouse and/or children are not eligible to elect this medicare coverage. Please remove them from this election to continue.`;\r\n }\r\n\r\n \r\n\r\n return \r\n
\r\n Medicare Coverage\r\n
\r\n {errorMessage && {errorMessage}}\r\n \r\n
\r\n}","import { FormControlLabel, Radio, Table, TableBody, TableCell, TableRow, Typography } from '@material-ui/core';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport { RadioControlGroupField, TextFormField } from 'components/common/reduxform_fields';\r\nimport React from 'react';\r\nimport { Field, FieldArray, FormErrors, getFormError, getFormValues, InjectedFormProps, isValid, reduxForm, WrappedFieldArrayProps } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { required } from 'utility/form_validation';\r\nimport { capitalize, PlanQuestionsAnswer } from 'utility/question_utility';\r\n\r\nconst reqValidation = required('Required');\r\nexport const WILL_REPLACE_QUESTION_ID = \"5277AEC6-9F3A-4F35-923A-F45539C48165\"\r\nexport const IS_LIFESECURE_QUESTION_ID = \"A30069B2-8254-4B88-9CE1-679777E079DD\";\r\nexport const COMPANY_NAME_QUESTION_ID = \"611EF75D-BB54-4882-B9E7-88B99AF33A98\";\r\nexport const COMPANY_ADDRESS_QUESTION_ID = \"D15C26DD-1C00-4468-8436-AE5827B498CC\";\r\nexport const POLICY_NUMBER_QUESTION_ID = \"11B4FDA8-6A56-4D75-94DD-31BBB059430B\";\r\nexport const LIFESECURE = \"LifeSecure\";\r\n\r\nexport interface PlanQuestionsData {\r\n questions: PlanQuestionsAnswer[]\r\n}\r\n\r\nexport interface PlanReplacementCoverageQuestionsState {\r\n isValid: boolean;\r\n values?: PlanQuestionsData;\r\n error: ReplacementCoverageFormError;\r\n}\r\n\r\nexport type ReplacementCoverageFormError = string | PlanQuestionsAnswer[]\r\n\r\ninterface ComponentProps {\r\n displayChildren: boolean;\r\n isLifeSecureValue: string;\r\n}\r\n\r\ninterface Props extends ComponentProps, InjectedFormProps {\r\n\r\n}\r\n\r\nfunction validate(values: PlanQuestionsData) {\r\n const errors: FormErrors = {\r\n questions: [] as PlanQuestionsAnswer[]\r\n }\r\n const questions = values.questions;\r\n if (!values.questions) return {};\r\n\r\n const isLifeSecureField = questions.find(q => q.questionId === IS_LIFESECURE_QUESTION_ID);\r\n const isLifeSecureFieldValue = !!isLifeSecureField ? isLifeSecureField.answers[0].value : undefined;\r\n\r\n // handle company name\r\n const companyNameField = questions.find(q => q.questionId === COMPANY_NAME_QUESTION_ID);\r\n const companyNameFieldValue = companyNameField && companyNameField.answers[0].value;\r\n if (!companyNameFieldValue || companyNameFieldValue.length === 0) {\r\n const companyNameIndex = companyNameField ? questions.indexOf(companyNameField) : -1;\r\n errors.questions![companyNameIndex] = { answers: [] };\r\n errors.questions![companyNameIndex].answers[0] = { value: 'required' };\r\n }\r\n\r\n // handle company address \r\n const companyAddressField = questions.find(q => q.questionId === COMPANY_ADDRESS_QUESTION_ID);\r\n const companyAddressFieldValue = !!companyAddressField ? (companyAddressField.answers[0].value || '') : '';\r\n const companyAddressFieldIndex = !!companyAddressField ? questions.indexOf(companyAddressField) : -1;\r\n\r\n const policyNumberField = questions.find(q => q.questionId === POLICY_NUMBER_QUESTION_ID);\r\n const policyNumberFieldValue = !!policyNumberField ? (policyNumberField.answers[0].value || '') : '';\r\n const policyNumberFieldIndex = !!policyNumberField ? questions.indexOf(policyNumberField) : -1;\r\n\r\n if (isLifeSecureFieldValue && isLifeSecureFieldValue !== LIFESECURE) {\r\n if (companyAddressFieldValue.length === 0 && policyNumberFieldValue.length === 0) {\r\n errors.questions![companyAddressFieldIndex] = { answers: [] };\r\n errors.questions![companyAddressFieldIndex].answers[0] = { value: 'Address or Group number is required' };\r\n\r\n errors.questions![policyNumberFieldIndex] = { answers: [] };\r\n errors.questions![policyNumberFieldIndex].answers[0] = { value: 'Address or Group number is required' };\r\n }\r\n }\r\n\r\n if (isLifeSecureFieldValue && isLifeSecureFieldValue === LIFESECURE) {\r\n if (policyNumberFieldValue.length === 0) {\r\n errors.questions![policyNumberFieldIndex] = { answers: [] };\r\n errors.questions![policyNumberFieldIndex].answers[0] = { value: 'Required' };\r\n }\r\n }\r\n\r\n return errors;\r\n}\r\n\r\ninterface PlanReplacementCoverageQuestionsAnswerProps extends WrappedFieldArrayProps {\r\n displayChildren: boolean;\r\n isLifeSecureValue: string;\r\n}\r\n\r\nconst PlanReplacementCoverageQuestionsAnswers = ({ fields, displayChildren, isLifeSecureValue }: PlanReplacementCoverageQuestionsAnswerProps) => {\r\n const cellStyle = (): CSSProperties => ({\r\n borderBottom: 'none',\r\n width: '85%'\r\n });\r\n\r\n const questionStyles = (hasChildren: boolean, isChild: boolean): CSSProperties => ({\r\n marginBottom: hasChildren ? 25 : undefined,\r\n paddingLeft: isChild ? 50 : undefined\r\n });\r\n\r\n const tableStyles = (isChild: boolean): CSSProperties => ({\r\n marginBottom: 25,\r\n marginLeft: isChild ? '10%' : undefined,\r\n width: isChild ? '80%' : '100%'\r\n });\r\n\r\n\r\n return <>{fields.map((name, idx) => {\r\n const { questionId, questionText, answers, hasChildren, isChildQuestion, inputType } = fields.get(idx);\r\n const disableCompanyName =\r\n (questionId === COMPANY_NAME_QUESTION_ID || questionId === COMPANY_ADDRESS_QUESTION_ID) && isLifeSecureValue === LIFESECURE;\r\n const hideCompanyAddress = questionId === COMPANY_ADDRESS_QUESTION_ID && isLifeSecureValue === LIFESECURE;\r\n return \r\n {hasChildren ?\r\n <>\r\n {capitalize(questionText)}\r\n \r\n \r\n {answers.map((dependentAnswer, answerIdx) => {\r\n dependentAnswer != null &&\r\n \r\n }\r\n label={Yes}\r\n labelPlacement=\"end\"\r\n style={styles.justifyLeft}\r\n />\r\n }\r\n label={No}\r\n labelPlacement=\"end\"\r\n style={styles.justifyLeft}\r\n />\r\n \r\n })}\r\n \r\n \r\n
\r\n \r\n :\r\n displayChildren ?\r\n <>\r\n {!hideCompanyAddress &&\r\n <>\r\n {capitalize(questionText)}\r\n\r\n \r\n {answers.map((dependentAnswer, answerIdx) => \r\n {\r\n dependentAnswer != null &&\r\n inputType === 'Radio' ?\r\n \r\n }\r\n label={LifeSecure}\r\n labelPlacement=\"end\"\r\n style={styles.justifyLeft}\r\n />\r\n }\r\n label={Another Company}\r\n labelPlacement=\"end\"\r\n style={styles.justifyLeft}\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\nconst PlanReplacementCoverageQuestions = (props: Props) => {\r\n return <>\r\n \r\n \r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n displayBlock: {\r\n 'display': 'block'\r\n },\r\n justifyLeft: {\r\n justifyContent: 'left'\r\n },\r\n width_1_25: {\r\n width: '1.25rem'\r\n },\r\n width_85_percent: {\r\n width: '85%'\r\n }\r\n}\r\n\r\nexport const selectPlanReplacementCoverageQuestionsState = (formName: string) => (state: ReduxState): PlanReplacementCoverageQuestionsState => ({\r\n isValid: isValid(formName)(state),\r\n values: getFormValues(formName)(state) as PlanQuestionsData,\r\n error: getFormError(formName)(state) as ReplacementCoverageFormError\r\n})\r\n\r\nexport default reduxForm({\r\n validate: validate,\r\n enableReinitialize: true, // needed for the form state to re-initialize when initialValues is changed\r\n pure: false, // needed for the component to update when the initialValues is changed\r\n})(PlanReplacementCoverageQuestions)","import { Paper } from '@material-ui/core';\r\nimport React, { useMemo } from 'react';\r\nimport { PlanQuestion, QuestionAnswer } from 'redux/reducers';\r\nimport { questionFlattener } from 'utility/question_utility';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport PlanReplacementCoverageQuestionsForm, { COMPANY_ADDRESS_QUESTION_ID, COMPANY_NAME_QUESTION_ID, IS_LIFESECURE_QUESTION_ID, LIFESECURE, PlanQuestionsData, ReplacementCoverageFormError, WILL_REPLACE_QUESTION_ID } from './plan_replacement_coverage_form';\r\n\r\ninterface Props {\r\n error?: ReplacementCoverageFormError;\r\n questions: PlanQuestion[];\r\n formName: string;\r\n selectedMemberLevels: Set;\r\n savedAnswers?: QuestionAnswer[];\r\n replacementCoverageValues?: PlanQuestionsData;\r\n updateReplacementCoverageFormValues: (field: string, value: any) => void;\r\n}\r\n\r\nexport const ReplacementCoverageQuestions = ({ savedAnswers = [], questions, formName, selectedMemberLevels, replacementCoverageValues, updateReplacementCoverageFormValues }: Props) => {\r\n const questionValues = replacementCoverageValues && replacementCoverageValues.questions;\r\n const displayChildren = questionValues && questionValues[0].answers && questionValues[0].answers[0]\r\n && questionValues[0].answers[0].value === 'yes';\r\n const flattenedQuestions = questionFlattener(questions, selectedMemberLevels, savedAnswers);\r\n\r\n\r\n const isLifeSecureQuestion = questionValues && questionValues.find(q => q.questionId === IS_LIFESECURE_QUESTION_ID);\r\n const isLifeSecureValue = !!isLifeSecureQuestion ? (isLifeSecureQuestion.answers[0].value || '') : '';\r\n\r\n useMemo(() => {\r\n const companyNameQuestion = flattenedQuestions.find(q => q.questionId === COMPANY_NAME_QUESTION_ID);\r\n const companyNameIndex = !!companyNameQuestion ? flattenedQuestions.indexOf(companyNameQuestion) : -1;\r\n const companyNamePrevValue = !!companyNameQuestion ? companyNameQuestion.answers[0].value : '';\r\n const companyAddressQuestion = flattenedQuestions.find(q => q.questionId === COMPANY_ADDRESS_QUESTION_ID);\r\n const companyAddressIndex = !!companyAddressQuestion ? flattenedQuestions.indexOf(companyAddressQuestion) : -1;\r\n const companyAddressPrevValue = !!companyAddressQuestion ? companyAddressQuestion.answers[0].value : '';\r\n if (isLifeSecureValue === LIFESECURE) {\r\n updateReplacementCoverageFormValues(`questions[${companyNameIndex}].answers[0].value`, LIFESECURE);\r\n } else {\r\n updateReplacementCoverageFormValues(`questions[${companyNameIndex}].answers[0].value`, (companyNamePrevValue === LIFESECURE || !displayChildren) ? '' : companyNamePrevValue);\r\n updateReplacementCoverageFormValues(`questions[${companyAddressIndex}].answers[0].value`, (companyAddressPrevValue === LIFESECURE || !displayChildren) ? '' : companyAddressPrevValue);\r\n }\r\n }, [isLifeSecureValue]);\r\n\r\n useMemo(() => {\r\n if (!displayChildren) {\r\n flattenedQuestions.forEach((question, idx) => {\r\n if (question.questionId !== WILL_REPLACE_QUESTION_ID) {\r\n updateReplacementCoverageFormValues(`questions[${idx}].answers[0].value`, \"\");\r\n }\r\n });\r\n }\r\n }, [displayChildren]);\r\n\r\n\r\n return \r\n
\r\n Replacement Coverage\r\n
\r\n \r\n
\r\n}\r\n\r\nexport default(ReplacementCoverageQuestions);","import { Paper, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { PlanQuestion, QuestionAnswer } from 'redux/reducers';\r\nimport palette from 'utility/palette';\r\nimport { questionFlattener } from 'utility/question_utility';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport PlanQuestionsForm, { PlanQuestionsError, PlanQuestionsErrorType } from './plan_questions_form';\r\n\r\ninterface Props {\r\n error?: PlanQuestionsError;\r\n questions: PlanQuestion[];\r\n formName: string;\r\n selectedMemberLevels: Set;\r\n savedAnswers?: QuestionAnswer[];\r\n}\r\n\r\nexport default ({ error = new Set(), savedAnswers = [], questions, formName, selectedMemberLevels }: Props) => {\r\n let errorMessage: string | undefined = undefined;\r\n if (error.has('EmployeeNotEligible')) {\r\n errorMessage = `Based on your answers to the specified disease questions, you and your dependents are not eligible to elect this coverage. Please waive this coverage to continue.`;\r\n } else if (error.has('SpouseNotEligible') || error.has('DependentsNotEligible')) {\r\n errorMessage = `Based on your answers to the specified disease questions, your spouse and/or children are not eligible to elect this coverage. Please remove them from this election to continue.`;\r\n }\r\n\r\n return \r\n
\r\n Specified Disease Coverage\r\n
\r\n {errorMessage && {errorMessage}}\r\n \r\n
\r\n}","import memoizeOne from 'memoize-one';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from './lookup_utils';\r\n\r\nexport function getAnnualAmount(amount: number, payPeriodFrequency: number) {\r\n var totalAmount = Math.round((amount * payPeriodFrequency + 0.00001) * 100) / 100;\r\n return totalAmount;\r\n}\r\n\r\nexport function getPayPeriodAmount(amount: number, payPeriodFrequency: number) {\r\n var totalAmount = Math.round((amount / payPeriodFrequency + 0.00001) * 100) / 100;\r\n return totalAmount;\r\n}\r\n\r\n\r\n","import React from 'react';\r\nimport { Card, CardContent, Typography, Grid, Paper } from '@material-ui/core';\r\nimport HelpOutlineOutlinedIcon from '@material-ui/icons/HelpOutlineOutlined'; import { JSXElement } from '@babel/types';\r\nimport TrackChangesIcon from '@material-ui/icons/TrackChanges';\r\nimport AssignmentTurnedInOutlinedIcon from '@material-ui/icons/AssignmentTurnedInOutlined';\r\n\r\ninterface EducationalInfo {\r\n lineOfCoverage: string,\r\n title: string,\r\n description: string,\r\n icon: number\r\n}\r\n\r\ninterface ComponentProps {\r\n lineOfCoverage: string\r\n}\r\n\r\nconst determineIcon = (icon: number) => {\r\n if (icon == 1) {\r\n return ();\r\n } else if (icon == 2) {\r\n return ();\r\n } else if (icon == 3) {\r\n return ();\r\n } else {\r\n return undefined;\r\n }\r\n}\r\n\r\nconst displayTitle = (lineOfCoverage: string) => {\r\n if (lineOfCoverage == \"Hospital Indemnity\" || lineOfCoverage == \"Critical Illness\" || lineOfCoverage == \"Accident\" || lineOfCoverage == \"GAP\") {\r\n return (<> Why get {lineOfCoverage} Insurance?

);\r\n } else {\r\n return undefined;\r\n }\r\n}\r\n\r\nconst EduInfoCards = (props: ComponentProps) => {\r\n const data: EducationalInfo[] = [{ lineOfCoverage: \"Hospital Indemnity\", description: \"Hospital Indemnity helps cover expenses when someone is admitted to the hospital or ICU for a covered illness or injury.\", icon: 1, title: \"How does it work?\" },\r\n { lineOfCoverage: \"Hospital Indemnity\", description: \"Plans can provide coverage for planned or unplanned reasons.\", icon: 2, title: \"What is covered?\" },\r\n { lineOfCoverage: \"Hospital Indemnity\", description: \"This coverage is good for those who have a High Deductible Health Plan as well as those with limited savings.\", icon: 3, title: \"Who is this good for?\" },\r\n { lineOfCoverage: \"Critical Illness\", description: \"Critical Illness Insurance (CII) pays you a lump sum of money if you are diagnosed with a covered illness.\", icon: 1, title: \"How does it work?\" },\r\n { lineOfCoverage: \"Critical Illness\", description: \"This coverage can be used to pay for anything you want; from costs not covered by your health insurance like deductibles or out-of-network doctor costs, to personal costs such as your mortgage.\", icon: 2, title: \"What is covered?\" },\r\n { lineOfCoverage: \"Critical Illness\", description: \"This coverage is good for those who have a history of illness.\", icon: 3, title: \"Who is this good for?\" },\r\n { lineOfCoverage: \"Accident\", description: \"Accident insurance pays out a lump sum if you incur specific kinds of injury as a result of an accident. It complements disability insurance by allowing you to claim benefits even if your injury does not keep you out of work.\", icon: 1, title: \"How does it work?\" },\r\n { lineOfCoverage: \"Accident\", description: \"The benefit payment disbursed by the plans can be used to cover medical expenses that your health insurance doesn’t cover.\", icon: 2, title: \"What is covered?\" },\r\n { lineOfCoverage: \"Accident\", description: \"This coverage is good for those who have a very active lifestyle as well as those who have a family.\", icon: 3, title: \"Who is this good for?\" },\r\n { lineOfCoverage: \"GAP\", description: \"A medical gap plan pays the amount applied to the insured's major medical deductible and coinsurance. \", icon: 1, title: \"How does it work?\" },\r\n { lineOfCoverage: \"GAP\", description: \"It covers the same expenses as the major medical plan except for charges for professional fees in a doctor's office or medical clinic, outpatient prescription drugs, vision, dental, and plan copayments.\", icon: 2, title: \"What is covered?\" },\r\n { lineOfCoverage: \"GAP\", description: \"This coverage is good for those who have a very active lifestyle as well as those who have a family. \", icon: 3, title: \"Who is this good for?\" }\r\n ]\r\n const filteredData = data.filter((d) => {\r\n return d.lineOfCoverage === props.lineOfCoverage;\r\n });\r\n return (\r\n <>\r\n {displayTitle(props.lineOfCoverage)}\r\n\r\n \r\n {filteredData.map((info) => {\r\n return (\r\n \r\n \r\n {determineIcon(info.icon)}\r\n

\r\n

\r\n {info.title}\r\n\r\n

{info.description}

\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n educationalPaper: {\r\n textAlign: 'center',\r\n lineHeight: 1.5,\r\n width: 225,\r\n height: 235,\r\n marginRight: 10,\r\n padding: 20,\r\n marginBottom: 20,\r\n fontSize: 14\r\n },\r\n educationalInfoText: {\r\n fontWeight: \"bold\",\r\n fontSize: 20,\r\n lineHeight: 1\r\n }\r\n};\r\n\r\n\r\nexport default EduInfoCards;","import { Button, Paper, Typography, FormControlLabel, Radio, RadioGroup } from '@material-ui/core';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport AbandonChangesOption from 'components/common/AbandonChangesOption';\r\nimport MessageCard from 'components/common/message_card';\r\nimport StepCircle from 'components/common/step_circle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport AmericanPublicLifeForm, { FormData as americanPublicLifeFormData, FORM_NAME as americanPublicLifeBrochureForm } from 'components/forms/american_public_life_form';\r\nimport BasicLifePreviousAmountForm, { FormData as basicLifePreviousAmountData, FORM_NAME as basicLifePreviousAmountForm } from 'components/forms/basic_life_previous_amount_form';\r\nimport { ExistingCoverageFieldArrayData } from 'components/forms/existing_coverage_fields';\r\nimport ExistingCoverageForm, { FormData as FormDataExistingCoverage, FORM_NAME as existingCoverageForm } from 'components/forms/existing_coverage_form';\r\nimport { FormPolicyEnrollee } from 'components/forms/existing_coverage_policy';\r\nimport { VisionEnrollee } from 'components/forms/existing_coverage_vision_field_array';\r\nimport SubscriberIDForm, { FormData as subscriberFormData, FORM_NAME as subscriberForm } from 'components/forms/subscriber_id_form';\r\nimport LifeDisabilityElectionCard from 'components/plan/life_disability_election_card';\r\nimport PlanElectionCard from 'components/plan/plan_election_card';\r\nimport RenewalQuestionsForm, { FormData as RenewalQuestionsFormData, FORM_NAME as renewalQuestionsForm } from 'components/forms/renewal_questions_form';\r\nimport memoizeOne from 'memoize-one';\r\nimport { dequal as isDeepEqual } from 'dequal';\r\nimport moment from 'moment';\r\nimport * as PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { isInvalid, change, getFormValues, isValid, getFormSyncErrors } from 'redux-form';\r\nimport { CostCalculation, CostCalculationPropType } from 'redux/reducers/cost_calculation_reducer';\r\nimport { getEffectiveDateForEmployee, CARRIER_RENEWAL, PLAN_RENEWAL, DROPPED_ENROLLEE, getLookupValue, getWaivedReasons, checkForExistingCoverageEnforce } from 'utility';\r\nimport { getElectionOrDefaultWaived } from 'utility/auto_enrollment';\r\nimport { companySettings } from 'utility/company_utils';\r\nimport { createDisabledCheck } from 'utility/eligibility_utility';\r\nimport { isEnrollmentSubmitted } from 'utility/enrollment_utils';\r\nimport { calculateAge } from 'utility/time_utils';\r\nimport SaveButton from '../../components/common/save_button';\r\nimport DependentPlanElection from '../../components/plan/dependent_plan_election';\r\nimport DependentPlanCoverageElection from '../../components/plan/dependent_plan_coverage_election';\r\nimport HSACard from '../../components/plan/hsa_card';\r\nimport RenewalQuestionsSection from '../../components/plan/renewal_questions_section';\r\nimport PrimaryCareInformationCard from '../../components/plan/primary_care_information';\r\nimport { calculateCosts, createElection, updateElection, updateEmployee, reCalculateCosts, CalcBenefitAmountType } from '../../redux/actions';\r\nimport { Company, CompanySettings, convertAdditionalInfoToDTO, convertEmployeeToEmployeeDTO, Dependent, Election, ElectionAdditionalInfo, ElectionDependent, Employee, EmployeeDTO, EmployeePropType, EnrollmentReducerState, EnrollmentReducerStatePropType, ExistingCoverage, LinkedPlan, LinkedPlanType, ObjectState, Participant, Plan, PlanPropType, Policy, PolicyEnrollee, PrimaryCareDTO, QuestionAnswer, Setting, ElectionRenewalInfoDTO, RenewalDTO, CurrentEnrolleeDTO, DroppedEnrolleeDTO, ContactInfo } from '../../redux/reducers';\r\nimport { ReduxState } from '../../redux/store';\r\nimport { getElectionOrDefaultDependents, getSelectedDependents, getSelectedPlan, getSelectedPlanId, isAutoEnrollEmployeeAndDependent, isAutoEnrollEmployeeOnly } from '../../utility/auto_enrollment';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { annualPayrollCycles, getById, getLOCsByBaseLOC, getLookupId, getLookups, isChildLife, isSpouseLife, isVoluntaryLOC, LOOKUP_TYPE_IDS, payrollCycleName, getSpouseTypeSet, isElectiveVoluntaryLOC, getAllowedCoverageLevels } from '../../utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\nimport { getAnswers, PlanQuestionsAnswer, PlanQuestionsData } from '../../utility/question_utility';\r\nimport HealthKnockoutQuestions from './health_knockout_questions';\r\nimport MajorMedicalCoverageSection from './major_medical_coverage_questions';\r\nimport MedicareQuestionsSection from './medicare_questions';\r\nimport { PlanQuestionsState, selectPlanQuestionsState } from './plan_questions_form';\r\nimport { PlanReplacementCoverageQuestionsState, selectPlanReplacementCoverageQuestionsState } from './plan_replacement_coverage_form';\r\nimport ReplacementCoverageSection from './replacement_coverage_questions';\r\nimport SpecifiedDiseaseQuestionsSection from './specified_disease_questions';\r\nimport { FormData as lifeBenefitAmountFormData, FORM_NAME as lifeBenefitAmountForm } from 'components/common/benefit_amount_selector';\r\nimport { getAnnualAmount, getPayPeriodAmount } from '../../utility/calculation_utils';\r\nimport { getSpouseDependentTypes } from '../../utility/lookup_utils';\r\nimport { FieldData as ContactInformationFieldData } from 'components/forms/contact_info_fields';\r\nimport EduInfoCards from 'components/forms/educationalInfoCards';\r\nimport { ImportedRenewalsDTO } from 'utility/renewal_import_utility';\r\nimport { DEPENDENT_TYPE_IDS } from 'utility/employee_utils';\r\n\r\nexport const KNOCKOUT_QUESTIONS = 'KNOCKOUT_QUESTIONS';\r\nexport const MAJOR_MEDICAL_COVERAGE_QUESTIONS = 'MAJOR_MEDICAL_COVERAGE_QUESTIONS';\r\nexport const MEDICARE_QUESTIONS = 'MEDICARE_QUESTIONS';\r\nexport const SPECIFIED_DISEASE_QUESTIONS = 'SPECIFIED_DISEASE_QUESTIONS';\r\nexport const REPLACEMENT_QUESTIONS = 'REPLACEMENT_QUESTIONS'\r\nexport const RENEWAL_QUESTIONS = 'RENEWAL_QUESTIONS_FORM'\r\nexport const PRIOR_COVERAGE = 'PRIOR_COVERAGE';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n employeeId: string;\r\n enrollmentId: string;\r\n lineOfCoverage: number;\r\n onBackButtonClicked: () => void;\r\n onDone: (jumpToNextStep?: boolean) => void;\r\n onElectionChanged: (election: Election) => void;\r\n endDateIsInFuture: boolean;\r\n endDateMessage: string;\r\n currentSelectedElection?: Election | null;\r\n importedRenewals: ImportedRenewalsDTO[];\r\n}\r\n\r\ninterface MappedProps {\r\n formInvalid: boolean;\r\n allPlans: Plan[];\r\n plans: Plan[];\r\n settings: Setting;\r\n enrollmentState: EnrollmentReducerState;\r\n company: Company;\r\n employee: Employee;\r\n planCosts: CostCalculation[];\r\n existingCoverageValues: FormDataExistingCoverage;\r\n isExistingCoverageValid: boolean;\r\n isExistingCoverageMissingKeyFields: boolean;\r\n isEnrollmentConfirmed: boolean;\r\n isAmericanPublicLifeValid: boolean;\r\n americanPublicLifeValues?: americanPublicLifeFormData;\r\n subscriberFormValues?: subscriberFormData;\r\n basicLifePreviousAmountValues?: basicLifePreviousAmountData;\r\n lifeBenefitAmountValues?: lifeBenefitAmountFormData;\r\n majorMedicalCoverageValidation: PlanQuestionsState;\r\n majorMedicalCoverageQuestionsForm?: PlanQuestionsData;\r\n knockoutAnswersValidation: PlanQuestionsState;\r\n knockOutQuestionsForm?: PlanQuestionsData;\r\n medicareValidation: PlanQuestionsState;\r\n medicareQuestionsForm?: PlanQuestionsData;\r\n specifiedDiseaseValidation: PlanQuestionsState;\r\n specifiedDiseaseQuestionsForm?: PlanQuestionsData;\r\n replacementCoverageValidation: PlanReplacementCoverageQuestionsState;\r\n replacementCoverageValues?: PlanQuestionsData;\r\n renewalQuestionsFormValues?: RenewalQuestionsFormData;\r\n}\r\n\r\ninterface DispatchProps {\r\n createElection: (election: Election) => Promise;\r\n updateElection: (election: Election) => Promise;\r\n updateEmployee: (employee: EmployeeDTO) => Promise;\r\n calculateCosts: () => Promise;\r\n reCalculateCosts: (employee: Employee, planId?: string, amount?: number) => Promise;\r\n updateExistingCoverageFormValues: (field: string, value: any) => void;\r\n updateReplacementCoverageFormValues: (field: string, value: any) => void;\r\n}\r\ninterface Props extends MappedProps, DispatchProps, ComponentProps, WithWidth { }\r\n\r\ninterface State {\r\n selectedPlanId?: string;\r\n selectedWaive: boolean;\r\n isEmployeeChecked: boolean;\r\n selectedDependents: ElectionDependent[];\r\n waivedDependents: ElectionDependent[];\r\n waiveReasonId?: number;\r\n dependentWaiveReasonId?: number;\r\n dependentWaivedReasons: { [dependentId: string]: number };\r\n saveLoading: boolean;\r\n submitLoading: boolean;\r\n hsaContribution: number;\r\n hsaamount: number;\r\n hsaContributionMode: number;\r\n primaryCares: PrimaryCareDTO[];\r\n modifiedEmployee: Employee;\r\n isExistingMember: boolean;\r\n saveAndContinueClicked: boolean;\r\n employeePayFrequency: number;\r\n reduceValidation?: boolean;\r\n isSelecting: boolean;\r\n benefitAmount: number;\r\n}\r\n\r\nclass ElectionContainer extends React.Component{\r\n lookups = getLookups();\r\n employeeLookupId = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.participationOptions);\r\n isMedical = this.props.lineOfCoverage === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n isDental = this.props.lineOfCoverage === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n isVision = this.props.lineOfCoverage === getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n isSpouseLife = isSpouseLife(this.props.lineOfCoverage)\r\n originalState: State;\r\n isChildLife = isChildLife(this.props.lineOfCoverage)\r\n isVoluntary = isVoluntaryLOC(this.props.lineOfCoverage)\r\n employeeMemberLevelLookupId = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.memberLevel);\r\n spouseMemberLevelLookupId = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.memberLevel);\r\n childMemberLevelLookupId = getLookupId('PERCHILD', LOOKUP_TYPE_IDS.memberLevel);\r\n annual = getLookupId('ANNUAL', LOOKUP_TYPE_IDS.hsaContributionMode);\r\n payPeriod = getLookupId('PAYPERIOD', LOOKUP_TYPE_IDS.hsaContributionMode);\r\n isHorizonPlanOffered = this.props.plans.some(plan =>\r\n plan.carrierCode === getLookupValue('HORIZONCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode));\r\n spouseLOC = getLookupId('SPOUSELIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n childLOC = getLookupId('CHILDLIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n const electionPlanId = this.election ? this.election.planId : undefined;\r\n const selectedPlan = getSelectedPlan(props.plans, electionPlanId);\r\n const selectedPlanId = getSelectedPlanId(selectedPlan ? selectedPlan.id : undefined, this.election);\r\n const electionOrDefaultDependents = getElectionOrDefaultDependents(props.lineOfCoverage, this.election, props.employee.dependents);\r\n const selectedDependents = getSelectedDependents(\r\n props.plans,\r\n selectedPlanId,\r\n electionOrDefaultDependents,\r\n props.employee.dependents\r\n ).filter(dep => dep.isWaived !== true);\r\n\r\n\r\n const waivedDependents = getSelectedDependents(\r\n props.plans,\r\n selectedPlanId,\r\n electionOrDefaultDependents,\r\n props.employee.dependents\r\n ).filter(dep => dep.isWaived === true);\r\n const selectedWaive = getElectionOrDefaultWaived(props.lineOfCoverage, this.election, props.employee.coverageLevels);\r\n const dependentWaivedReasons = this.election ? this.election.dependents.reduce((dependentWaivedReasons, dependent) => {\r\n if (!dependent.waivedReasonId) {\r\n return dependentWaivedReasons;\r\n }\r\n return {\r\n ...dependentWaivedReasons,\r\n [dependent.id]: dependent.waivedReasonId\r\n }\r\n }, {} as { [key: string]: number }) : {}\r\n const biWeeklyPayrollCycle = 146;\r\n const companyPayCycle = props.company.payrollCycleId ? this.props.company.payrollCycleId : biWeeklyPayrollCycle;\r\n const employeePayCycle = props.employee && props.employee.payrollCycleId ? props.employee.payrollCycleId : companyPayCycle;\r\n const employeesPayFrequency = annualPayrollCycles(employeePayCycle ? employeePayCycle : biWeeklyPayrollCycle);\r\n const hsaContributionMode = props.employee && props.employee.hsaContributionMode\r\n ? props.employee.hsaContributionMode\r\n : getLookupId('ANNUAL', LOOKUP_TYPE_IDS.hsaContributionMode);\r\n this.state = {\r\n modifiedEmployee: { ...this.props.employee },\r\n selectedPlanId: selectedPlanId,\r\n waiveReasonId: this.election ? this.election.waivedReasonId : undefined,\r\n dependentWaiveReasonId: this.election ? (this.election.waivedReasonId == getLookupId('SPOUSEPLAN', LOOKUP_TYPE_IDS.waivedReason) ? 457 : this.election.waivedReasonId) : undefined,\r\n dependentWaivedReasons: dependentWaivedReasons,\r\n selectedDependents: selectedDependents,\r\n waivedDependents: waivedDependents,\r\n hsaContribution: props.employee ? props.employee.hsaContribution || 0 : 0,\r\n hsaamount: props.employee ? getPayPeriodAmount(props.employee.hsaContribution || 0, employeesPayFrequency) : 0,\r\n hsaContributionMode: hsaContributionMode,\r\n employeePayFrequency: employeesPayFrequency,\r\n saveLoading: false,\r\n submitLoading: false,\r\n saveAndContinueClicked: false,\r\n selectedWaive: selectedWaive,\r\n isEmployeeChecked: this.getEmployeeChecked(selectedPlan),\r\n primaryCares: !!(this.election && this.election.primaryCares && this.election.primaryCares.length > 0) ? this.election.primaryCares : [{\r\n assignDoctor: false,\r\n doctorId: '',\r\n doctorName: '',\r\n doctorZipCode: '',\r\n isExistingPatient: false\r\n }],\r\n isExistingMember: true,\r\n reduceValidation: this.props.enrollmentState.reduceValidation,\r\n isSelecting: false,\r\n benefitAmount: 0\r\n };\r\n this.originalState = this.state;\r\n }\r\n\r\n disabledCheck(dep: ElectionDependent, checked: boolean) {\r\n const ageRestrictions = this.selectedPlan ? (this.selectedPlan.ageRestrictions || []) : []\r\n\r\n const spouseMemberLevelId = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.memberLevel);\r\n const childMemberLevelId = getLookupId('PERCHILD', LOOKUP_TYPE_IDS.memberLevel);\r\n\r\n // we no longer care about this since dependents can always waive\r\n var isAutoEnrollEnabled = false;\r\n const dependent = this.props.employee.dependents.find(d => d.id === dep.id)!;\r\n const dependentTypeKey = getLookups()[dependent.dependentTypeId].key;\r\n const dependentType = dependentTypeKey === 'SPOUSE' ? 'SPOUSE' : dependentTypeKey === 'DOMESTICPARTNER' ? 'DOMESTICPARTNER' : 'CHILD';\r\n\r\n return createDisabledCheck({\r\n ageRestrictions,\r\n planParticipants: this.selectedPlan ? this.selectedPlan.participants : this.getMaximumEligibleParticipants(this.props.plans),\r\n spouseMemberLevelId,\r\n childMemberLevelId,\r\n isAutoEnrollEnabled,\r\n lookups: getLookups(),\r\n effectiveDate: this.selectedPlan ? moment(this.selectedPlan.effectiveDate) : moment(),\r\n employeeWaiving: this.props.employee.isEmployeeWaiving\r\n\r\n })(dependent, checked, dependentType)\r\n }\r\n\r\n getMaximumEligibleParticipants(plans: Plan[]) {\r\n const participantsEligibleOnAnyPlan = new Set();\r\n plans.forEach(x => x.participants.forEach(y => participantsEligibleOnAnyPlan.add(y)));\r\n return Array.from(participantsEligibleOnAnyPlan);\r\n }\r\n\r\n componentDidMount() {\r\n this.handleDependentsForCalcs();\r\n this.props.calculateCosts();\r\n }\r\n\r\n handleDependentsForCalcs(waivedDependents?: ElectionDependent[]) {\r\n const disabledDependents = this.getDisabledDependents();\r\n\r\n if (this.selectedPlan && this.state.modifiedEmployee.holdDependents)\r\n {\r\n const sPlan = this.selectedPlan;\r\n this.state.modifiedEmployee.dependents = this.state.modifiedEmployee.holdDependents.map(dep => ({...dep}) );\r\n let empDependents = [...this.state.modifiedEmployee.dependents];\r\n if ( (disabledDependents.length > 0 || (waivedDependents && waivedDependents.length > 0)) && empDependents)\r\n {\r\n empDependents.forEach(dep => {\r\n if (disabledDependents.some(el => el.id === dep.id) || (waivedDependents && waivedDependents.some(el => el.id == dep.id)) ){\r\n let locs = new Array();\r\n dep.enrolledLinesOfCoverage.forEach(loc => {\r\n if (loc != sPlan.lineOfCoverageId)\r\n {\r\n locs.push(loc);\r\n }\r\n })\r\n dep.enrolledLinesOfCoverage = locs;\r\n }\r\n });\r\n if (this.state.selectedPlanId && this.state.benefitAmount && this.state.benefitAmount > 0) {\r\n this.throttleReCalculateCosts(this.state.modifiedEmployee, this.state.selectedPlanId, this.state.benefitAmount);\r\n }\r\n else {\r\n this.throttleCalculateCosts(this.state.modifiedEmployee);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n hasStateChanged = () => {\r\n return this.state.selectedWaive !== this.originalState.selectedWaive\r\n || this.state.selectedPlanId !== this.originalState.selectedPlanId\r\n || !!this.state.waiveReasonId !== !!this.originalState.waiveReasonId\r\n || !!this.state.dependentWaiveReasonId !== !!this.originalState.dependentWaiveReasonId\r\n || this.state.hsaContribution !== this.originalState.hsaContribution\r\n || this.state.hsaamount !== this.originalState.hsaamount\r\n || this.state.hsaContributionMode !== this.originalState.hsaContributionMode\r\n || this.state.primaryCares !== this.originalState.primaryCares\r\n || this.state.dependentWaivedReasons !== this.originalState.dependentWaivedReasons\r\n || this.state.selectedDependents !== this.originalState.selectedDependents\r\n || this.state.employeePayFrequency !== this.state.employeePayFrequency\r\n }\r\n\r\n loadingOff() {\r\n this.setState({ saveLoading: false, submitLoading: false, saveAndContinueClicked: false });\r\n }\r\n\r\n electionFilter = memoizeOne((employee: Employee) => employee.elections.find(election => election.lineOfCoverageId === this.props.lineOfCoverage), isDeepEqual);\r\n get election(): Election | undefined {\r\n return this.electionFilter(this.props.employee);\r\n }\r\n\r\n get questionMajorMedicalCoverageAnswers() {\r\n return (this.props.majorMedicalCoverageQuestionsForm && getAnswers(this.props.majorMedicalCoverageQuestionsForm.questions)) || (this.election && this.election.questionAnswers);\r\n }\r\n\r\n get questionKnockoutAnswers() {\r\n return (this.props.knockOutQuestionsForm && getAnswers(this.props.knockOutQuestionsForm.questions)) || (this.election && this.election.questionAnswers);\r\n }\r\n\r\n get questionMedicareAnswers() {\r\n return (this.props.medicareQuestionsForm && getAnswers(this.props.medicareQuestionsForm.questions)) || (this.election && this.election.questionAnswers);\r\n }\r\n\r\n get questionSpecifiedDiseaseAnswers() {\r\n return (this.props.specifiedDiseaseQuestionsForm && getAnswers(this.props.specifiedDiseaseQuestionsForm.questions)) || (this.election && this.election.questionAnswers);\r\n }\r\n\r\n get plansEffectiveDate() {\r\n return this.props.plans.length > 0 && this.props.plans[0].effectiveDate;\r\n }\r\n\r\n get selectedPlan() {\r\n return this.props.plans.find(p => p.id === this.state.selectedPlanId)\r\n }\r\n\r\n get isLife() { return getLOCsByBaseLOC('BASELIFE').some(lookup => lookup.id === this.props.lineOfCoverage); }\r\n get isDisability() { return getLOCsByBaseLOC('BASEDISABILITY').some(lookup => lookup.id === this.props.lineOfCoverage); }\r\n get isCriticalIllness() { return getLOCsByBaseLOC('BASECRITICALILLNESS').some(lookup => lookup.id === this.props.lineOfCoverage); }\r\n get isHospital() { return getLOCsByBaseLOC('BASEHOSPITAL').some(lookup => lookup.id === this.props.lineOfCoverage); }\r\n\r\n get companySettings(): CompanySettings {\r\n return companySettings(this.props.company);\r\n }\r\n\r\n get existingCoveragePoliciesSectionActive() {\r\n var active = false;\r\n if (this.props.existingCoverageValues) {\r\n active = (this.props.existingCoverageValues.electionCoveredByEffectiveDate === true ||\r\n this.props.existingCoverageValues.dentalCoveredByEmployerBefore === true ||\r\n this.props.existingCoverageValues.dentalCoveredLastYear === true ||\r\n this.props.existingCoverageValues.dentalPriorOrthodontia === true ||\r\n this.props.existingCoverageValues.existingRxCoverage === true ||\r\n (this.props.existingCoverageValues.visionExistingCoverage && this.props.existingCoverageValues.visionExistingCoverage.length > 0 &&\r\n this.props.existingCoverageValues.visionExistingCoverage.filter(v => v.checked).length > 0));\r\n }\r\n\r\n\r\n return active;\r\n }\r\n\r\n getEmployeeDisabled = (plan: Plan) => {\r\n return !plan.participants.filter(part => part.participantTypeId === this.employeeLookupId)[0].isAllowed;\r\n }\r\n\r\n getDisabledDependents = () => {\r\n return this.props.employee.dependents.map(dep => {\r\n return {\r\n id: dep.id,\r\n firstName: dep.firstName,\r\n lastName: dep.lastName\r\n } as ElectionDependent\r\n }).filter(dep => { return this.disabledCheck(dep, false) });\r\n }\r\n\r\n getEmployeeChecked = (selectedPlan?: Plan) => {\r\n const selectedWaive = getElectionOrDefaultWaived(this.props.lineOfCoverage, this.election, this.props.employee.coverageLevels);\r\n if (selectedWaive) return false;\r\n const planToCheck = selectedPlan || this.props.plans[0];\r\n const employeeChecked = (this.state && this.state.isEmployeeChecked) ? true : false;\r\n const election = this.props.employee.elections.filter(elec => elec.lineOfCoverageId === this.props.lineOfCoverage);\r\n return election.length > 0 ? ((election[0].isEmployeeIncluded || employeeChecked) && !this.getEmployeeDisabled(planToCheck)) : !this.getEmployeeDisabled(planToCheck)\r\n }\r\n\r\n handleEmployeeChecked = () => {\r\n this.setState({\r\n isEmployeeChecked: true,\r\n selectedWaive: this.determineIfWaiving(true, this.state.selectedDependents),\r\n waiveReasonId: undefined,\r\n dependentWaiveReasonId: undefined,\r\n isSelecting: true\r\n });\r\n\r\n let modifiedEmployee = this.updateEmployeeElections(this.state.modifiedEmployee, this.props.lineOfCoverage, true);\r\n this.notifyElectionChanges(this.state.selectedPlanId as string);\r\n this.throttleCalculateCosts(modifiedEmployee);\r\n this.setState({ modifiedEmployee: modifiedEmployee });\r\n\r\n }\r\n\r\n\r\n updateLinesOfCoverage(enrolledLinesOfCoverage: number[], locId: number, addCoverage: boolean) {\r\n const locSet = new Set(enrolledLinesOfCoverage);\r\n if (addCoverage) {\r\n locSet.add(locId);\r\n } else {\r\n locSet.delete(locId);\r\n }\r\n return Array.from(locSet);\r\n }\r\n\r\n updateEmployeeElections = (employee: Employee, locId: number, addCoverage: boolean): Employee => {\r\n const updatedEmployee: Employee = {\r\n ...employee,\r\n enrolledLinesOfCoverage: [\r\n ...employee.enrolledLinesOfCoverage\r\n ],\r\n };\r\n updatedEmployee.enrolledLinesOfCoverage = this.updateLinesOfCoverage(updatedEmployee.enrolledLinesOfCoverage, locId, addCoverage);\r\n return updatedEmployee;\r\n }\r\n\r\n updateDependentElection = (employee: Employee, dependentId: string, locId: number, addCoverage: boolean) => {\r\n const updatedEmployee: Employee = {\r\n ...employee,\r\n dependents: employee.dependents.map(dependent => ({\r\n ...dependent,\r\n enrolledLinesOfCoverage: dependent.id === dependentId ?\r\n this.updateLinesOfCoverage(dependent.enrolledLinesOfCoverage, locId, addCoverage) :\r\n dependent.enrolledLinesOfCoverage\r\n }))\r\n };\r\n return updatedEmployee;\r\n }\r\n\r\n\r\n private notifyElectionChanges(selectedPlanId: string) {\r\n if (!this.election) {\r\n const currentElection = {\r\n planId: selectedPlanId,\r\n employeeId: this.props.employeeId\r\n } as Election;\r\n this.props.onElectionChanged(currentElection);\r\n } else {\r\n const currentElection = { ...this.election };\r\n currentElection.planId = selectedPlanId;\r\n this.props.onElectionChanged(currentElection);\r\n }\r\n }\r\n\r\n handleEmployeeUnchecked = () => {\r\n const waivedDependents = this.props.employee.dependents.map(dep => {\r\n return {\r\n id: dep.id,\r\n firstName: dep.firstName,\r\n lastName: dep.lastName\r\n } as ElectionDependent\r\n });\r\n\r\n let dependentWaivedReasons = this.props.employee.dependents.reduce((dependents, dependent) => {\r\n dependents[dependent.id] = undefined;\r\n return dependents;\r\n }, {});\r\n\r\n let holdPlanId = this.selectedPlan? this.selectedPlan.id: '';\r\n\r\n this.setState({\r\n selectedPlanId: '',\r\n isEmployeeChecked: false,\r\n selectedWaive: this.determineIfWaiving(false, this.state.selectedDependents),\r\n selectedDependents: [] as ElectionDependent[],\r\n waivedDependents,\r\n dependentWaivedReasons\r\n });\r\n\r\n let modifiedEmployee: Employee = this.updateEmployeeElections(this.state.modifiedEmployee, this.props.lineOfCoverage, false);\r\n modifiedEmployee.dependents.forEach((dep) => {\r\n modifiedEmployee = this.updateDependentElection(modifiedEmployee, dep.id, this.props.lineOfCoverage, false);\r\n });\r\n\r\n this.notifyElectionChanges('');\r\n\r\n this.onBenefitAmountChanged(holdPlanId,0);\r\n this.forceUpdate();\r\n }\r\n\r\n checkIsWaiveSelectedAfterDependentAdded = (dep: ElectionDependent) => {\r\n const newSelectedDependentList = this.state.selectedDependents.slice();\r\n newSelectedDependentList.push(dep);\r\n const isWaiveSelectedAfterDependentAdded = this.determineIfWaiving(this.state.isEmployeeChecked, newSelectedDependentList);\r\n return isWaiveSelectedAfterDependentAdded;\r\n }\r\n handleAddDependent = (dep: ElectionDependent, id: string) => {\r\n const isWaiveSelectedAfterDependentAdded = this.checkIsWaiveSelectedAfterDependentAdded(dep);\r\n //if the whole election is waived even after the dependent is added, the dependent cannot be added\r\n if (isWaiveSelectedAfterDependentAdded) {\r\n return;\r\n }\r\n\r\n this.setState(prevState => {\r\n const newSelectedDependentList = prevState.selectedDependents.slice();\r\n newSelectedDependentList.push(dep);\r\n const newWaivedDependentList = prevState.waivedDependents.slice();\r\n const index = newWaivedDependentList.findIndex(dep => dep.id === id);\r\n if (index > -1) {\r\n newWaivedDependentList.splice(index, 1);\r\n const waivedReasons = prevState.dependentWaivedReasons;\r\n delete waivedReasons[dep.id];\r\n return {\r\n ...prevState,\r\n selectedDependents: newSelectedDependentList,\r\n waivedDependents: newWaivedDependentList,\r\n dependentWaivedReasons: waivedReasons,\r\n selectedWaive: isWaiveSelectedAfterDependentAdded\r\n };\r\n }\r\n\r\n return {\r\n ...prevState,\r\n selectedDependents: newSelectedDependentList,\r\n waivedDependents: newWaivedDependentList,\r\n selectedWaive: isWaiveSelectedAfterDependentAdded\r\n };\r\n });\r\n let modifiedEmployee = this.updateDependentElection(this.state.modifiedEmployee, id, this.props.lineOfCoverage, true);\r\n this.throttleCalculateCosts(modifiedEmployee);\r\n this.setState({ modifiedEmployee: modifiedEmployee });\r\n };\r\n\r\n handleWaiveDependent = (dep: ElectionDependent, id: string) => {\r\n this.setState(prevState => {\r\n const newWaivedDependentList = prevState.waivedDependents.slice();\r\n const waiveIndex = newWaivedDependentList.findIndex(dep => dep.id === id);\r\n if (waiveIndex === -1) newWaivedDependentList.push(dep);\r\n\r\n const newSelectedDependentList = prevState.selectedDependents.slice();\r\n const index = newSelectedDependentList.findIndex(dep => dep.id === id);\r\n if (index > -1)\r\n newSelectedDependentList.splice(index, 1);\r\n\r\n return {\r\n selectedDependents: newSelectedDependentList,\r\n waivedDependents: newWaivedDependentList,\r\n selectedWaive: this.determineIfWaiving(prevState.isEmployeeChecked, newSelectedDependentList)\r\n };\r\n });\r\n let modifiedEmployee = this.updateDependentElection(this.state.modifiedEmployee, id, this.props.lineOfCoverage, false);\r\n this.throttleCalculateCosts(modifiedEmployee);\r\n this.setState({ modifiedEmployee: modifiedEmployee });\r\n };\r\n\r\n\r\n lastRecalculateRequest: any = null;\r\n\r\n throttleCalculateCosts = (employee: Employee) => {\r\n if (this.lastRecalculateRequest) {\r\n clearTimeout(this.lastRecalculateRequest);\r\n }\r\n this.lastRecalculateRequest = setTimeout(() => {\r\n this.props.reCalculateCosts(employee);\r\n }, 100);\r\n }\r\n throttleReCalculateCosts = (employee: Employee, planId: string, amount: number) => {\r\n if (this.lastRecalculateRequest) {\r\n clearTimeout(this.lastRecalculateRequest);\r\n }\r\n this.lastRecalculateRequest = setTimeout(() => {\r\n this.props.reCalculateCosts(employee, planId, amount);\r\n }, 100);\r\n }\r\n\r\n getLinkedPlanToolTip = memoizeOne((linkedPlans: LinkedPlan[]) => {\r\n const lps = this.getAppropriateLinkedPlans(linkedPlans);\r\n const allPlans = this.props.allPlans;\r\n\r\n return (\r\n
\r\n To enroll in this plan, you must enroll in:
\r\n {lps.filter(link => link.linkType === LinkedPlanType.election).map(p => {\r\n let matchedPlan = allPlans.filter(plan => plan.id === p.id);\r\n if (matchedPlan.length > 0) {\r\n // is there an auto enroll plan for LOC, if so, the message is different\r\n let isAutoEnroll = allPlans.filter(x => x.autoEnrollId != null && x.lineOfCoverageId == matchedPlan[0].lineOfCoverageId && x.id != matchedPlan[0].id).length > 0 ? true : false;\r\n if (isAutoEnroll) {\r\n return ({getById(matchedPlan[0].lineOfCoverageId) + ' - ' + matchedPlan[0].planDisplayName}
{' ***(Auto enroll conflict. Contact broker or employer to fix)'}
);\r\n }\r\n else {\r\n return ({getById(matchedPlan[0].lineOfCoverageId) + ' - ' + matchedPlan[0].planDisplayName}
);\r\n }\r\n\r\n }\r\n return ;\r\n })}\r\n
\r\n );\r\n }, isDeepEqual);\r\n employeeHasDependentType = (dependentTypeId: number) => {\r\n for (const dependent of this.state.modifiedEmployee.dependents) {\r\n if (dependent.dependentTypeId == dependentTypeId)\r\n return true;\r\n\r\n }\r\n return false;\r\n }\r\n getAppropriateLinkedPlans = memoizeOne((linkedPlans: LinkedPlan[]) => {\r\n let lps = new Array();\r\n {linkedPlans.filter(link => link.linkType === LinkedPlanType.election).map(p => {\r\n let matchedPlan = this.props.allPlans.filter(plan => plan.id === p.id);\r\n\r\n if (matchedPlan.length > 0) {\r\n // if plan is spouse or child, we need to make sure the employee has spouse or child... else it can't be required and linked\r\n let continueMatch = true;\r\n if (matchedPlan[0].lineOfCoverageId == this.spouseLOC) {\r\n continueMatch = this.employeeHasDependentType(DEPENDENT_TYPE_IDS.Spouse);\r\n }\r\n else if (matchedPlan[0].lineOfCoverageId == this.childLOC) {\r\n continueMatch = this.employeeHasDependentType(DEPENDENT_TYPE_IDS.Child);\r\n }\r\n\r\n if (continueMatch) {\r\n lps.push(p);\r\n }\r\n\r\n }\r\n })}\r\n\r\n return lps;\r\n });\r\n checkPlanDisabled = memoizeOne((linkedPlans: LinkedPlan[]) => {\r\n if (linkedPlans == undefined || linkedPlans == null || linkedPlans.length == 0) return false;\r\n\r\n let lps = this.getAppropriateLinkedPlans(linkedPlans);\r\n\r\n // we only want to check linked plans here and not base plan\r\n let linkedPlanIds = lps.filter(lp => lp.linkType == LinkedPlanType.election).map(function (item) { return item['id']; });\r\n let linkedPlansWithLOC = this.props.allPlans.filter(x => linkedPlanIds.includes(x.id)).sort((a, b) => a.lineOfCoverageId - b.lineOfCoverageId);\r\n const groupedMap = linkedPlansWithLOC.reduce(\r\n (entryMap, e) => entryMap.set(e.lineOfCoverageId, [...entryMap.get(e.lineOfCoverageId) || [], e]),\r\n new Map()\r\n );\r\n // go through the grouped LOCs and do an OR between them but AND for different LOCs\r\n let allGood = true;\r\n const values = Array.from(groupedMap.values());\r\n const elections = this.props.employee.elections;\r\n for (let i = 0; i < values.length; i++) {\r\n let goodWithin = false;\r\n for (let j = 0; j < values[i].length; j++) {\r\n // is there an election in the group?\r\n if (elections.some(el => el.planId === values[i][j].id)) { goodWithin = true; }\r\n else if (this.props.allPlans.filter(x => x.autoEnrollId).some(el => el.id === values[i][j].id)) { goodWithin = true; }\r\n\r\n // if good, we need to see if this is a child only plan because if so, we have to make sure not all dependents are waived\r\n if (goodWithin && (values[i][j].lineOfCoverageId == this.childLOC || values[i][j].lineOfCoverageId == this.spouseLOC)) {\r\n let election = elections.filter(plan => plan.planId == values[i][j].id);\r\n let allWaived = true;\r\n if (election.length > 0) {\r\n {\r\n election[0].dependents.map(e => {\r\n if (!e.isWaived) { allWaived = false; }\r\n })\r\n }\r\n }\r\n else {allWaived = false;}\r\n if (allWaived) { goodWithin = false; }\r\n }\r\n\r\n }\r\n if (!goodWithin) { allGood = false; }\r\n }\r\n return !allGood;\r\n }, isDeepEqual);\r\n\r\n handlePlanSelect = (selectedPlanId: string) => {\r\n const selectedPlan = this.props.plans.find(x => x.id === selectedPlanId);\r\n if (!selectedPlan) {\r\n return;\r\n }\r\n const employeeEligibleForSelectedPlan = !!selectedPlanId && !this.getEmployeeDisabled(selectedPlan);\r\n this.setState({\r\n selectedPlanId,\r\n isEmployeeChecked: employeeEligibleForSelectedPlan,\r\n selectedDependents: getSelectedDependents(\r\n this.props.plans,\r\n selectedPlanId,\r\n this.state.selectedDependents,\r\n this.props.employee.dependents\r\n ),\r\n isSelecting: true\r\n }, () => {\r\n this.updateDisabledDependents()\r\n });\r\n if (selectedPlanId === '')\r\n this.handleEmployeeUnchecked()\r\n else\r\n this.setState({ selectedWaive: false, waiveReasonId: undefined, dependentWaiveReasonId: undefined});\r\n\r\n this.notifyElectionChanges(selectedPlanId);\r\n\r\n let modifiedEmployee = this.state.modifiedEmployee;\r\n\r\n this.getDisabledDependents().forEach(dep => {\r\n modifiedEmployee = this.updateDependentElection(modifiedEmployee, dep.id, this.props.lineOfCoverage, false);\r\n })\r\n\r\n //The slider will recalculate the costs & not plan selection\r\n //this.props.reCalculateCosts(this.state.modifiedEmployee);\r\n };\r\n\r\n updateDisabledDependents = () => {\r\n const disabledDependents = this.getDisabledDependents();\r\n let waivedDependents = this.state.waivedDependents.slice();\r\n const waivedDependentReasons = Object.assign(this.state.dependentWaivedReasons, {});\r\n disabledDependents.forEach(dep => {\r\n const waiveIndex = waivedDependents.findIndex(x => x.id === dep.id);\r\n if (waiveIndex > -1) {\r\n waivedDependents.splice(waiveIndex, 1);\r\n delete waivedDependentReasons[dep.id];\r\n }\r\n });\r\n this.setState({\r\n waivedDependents,\r\n dependentWaivedReasons: waivedDependentReasons\r\n });\r\n this.handleDependentsForCalcs(waivedDependents);\r\n }\r\n\r\n\r\n handleWaiveReasonSelect = (waiveReasonId: number) => {\r\n this.setState(prevState => {\r\n let dependentWaivedReasons = this.props.employee.dependents.reduce((dependents, dependent) => {\r\n if (!this.disabledCheck(dependent, false) && prevState.waivedDependents.findIndex(x => x.id === dependent.id) > -1) {\r\n dependents[dependent.id] = waiveReasonId === getLookupId('SPOUSEPLAN', LOOKUP_TYPE_IDS.waivedReason) ? 457 : waiveReasonId;\r\n }\r\n return dependents;\r\n }, {})\r\n return {\r\n ...prevState,\r\n waiveReasonId,\r\n dependentWaivedReasons\r\n }\r\n });\r\n };\r\n\r\n handleDependentWaiveReasonSelected = (waiveReasonId: number, depId: string) => {\r\n this.setState(prevState => {\r\n let dependentWaivedReasons = Object.assign({}, prevState.dependentWaivedReasons);\r\n dependentWaivedReasons[depId] = waiveReasonId;\r\n return {\r\n ...prevState,\r\n dependentWaivedReasons\r\n }\r\n })\r\n };\r\n\r\n handleUpdateHSA = (e: any) => {\r\n const numberCheck = Boolean(parseFloat(e.target.value));\r\n let dollarAmount = numberCheck ? parseFloat(e.target.value) : undefined;\r\n let annualAmount = dollarAmount || 0;\r\n let payperiodAmount = dollarAmount || 0;\r\n\r\n if (this.state.hsaContributionMode === this.annual) {\r\n payperiodAmount = getPayPeriodAmount(dollarAmount || 0, this.state.employeePayFrequency) || 0;\r\n }\r\n else if (this.state.hsaContributionMode === this.payPeriod) {\r\n annualAmount = getAnnualAmount(dollarAmount || 0, this.state.employeePayFrequency) || 0;\r\n }\r\n\r\n this.setState({\r\n hsaContribution: annualAmount,\r\n hsaamount: payperiodAmount\r\n });\r\n };\r\n\r\n handleUpdateHSAContributionMode = (e: any) => {\r\n const hsaContributionMode = e.target.value ? Number(e.target.value) : 0;\r\n this.setState({ hsaContributionMode });\r\n };\r\n\r\n handleSubmit = async (goToNextPage: boolean = true) => {\r\n const enrollmentSubmitted = isEnrollmentSubmitted(this.props.employee, this.props.enrollmentState);\r\n if (enrollmentSubmitted) return;\r\n if (goToNextPage) {\r\n this.setState({ submitLoading: true });\r\n this.setState({ saveAndContinueClicked: true })\r\n } else {\r\n this.setState({ saveLoading: true });\r\n }\r\n const { employee, existingCoverageValues, lineOfCoverage } = this.props;\r\n\r\n const hasExistingCoverageValues = existingCoverageValues && (this.existingCoveragePoliciesSectionActive || (existingCoverageValues.visionExistingCoverage && existingCoverageValues.visionExistingCoverage.length > 0));\r\n\r\n const existingCoverage: ExistingCoverage = hasExistingCoverageValues ? {\r\n electionCoveredByEffectiveDate: existingCoverageValues.electionCoveredByEffectiveDate,\r\n dentalCoveredLastYear: this.isDental ? true : undefined,\r\n dentalCoveredByEmployerBefore: existingCoverageValues.dentalCoveredByEmployerBefore,\r\n dentalPriorOrthodontia: existingCoverageValues.dentalPriorOrthodontia,\r\n visionExistingCoverage: existingCoverageValues.visionExistingCoverage ? existingCoverageValues.visionExistingCoverage.filter(vs => vs.checked) : existingCoverageValues.visionExistingCoverage,\r\n policies: existingCoverageValues.policies.map(policy => {\r\n return {\r\n enrollees: policy.enrollees\r\n .filter(person => person.checked === true)\r\n .map(person => ({\r\n fullName: person.fullName,\r\n id: person.id,\r\n isEmployee: person.isEmployee\r\n })),\r\n floridaBlueCoverage: policy.floridaBlueCoverage,\r\n emblemHealthcareCoverage: policy.emblemHealthcareCoverage,\r\n policyHolder: policy.existingPolicyHolder ? {\r\n existingPolicyHolder: policy.existingPolicyHolder,\r\n firstName: policy.firstName,\r\n lastName: policy.lastName,\r\n genderId: policy.genderId,\r\n dateOfBirth: policy.dateOfBirth,\r\n address: policy.address,\r\n city: policy.city,\r\n stateId: policy.stateId,\r\n zipCode: policy.zipCode,\r\n employmentStatusId: policy.employmentStatusId,\r\n retirementDate: policy.retirementDate,\r\n coverageUnderCobra: policy.coverageUnderCobra,\r\n relationshipToPolicyHolder: policy.relationshipToPolicyHolder\r\n } : undefined,\r\n carrierName: policy.carrierName,\r\n existingCoverageEffectiveDate: policy.existingCoverageEffectiveDate,\r\n existingCoverageEndDate: policy.existingCoverageEndDate,\r\n groupNumber: policy.groupNumber,\r\n policyNumberIdNumber: policy.policyNumberIdNumber,\r\n typeOfCoverage: lineOfCoverage,\r\n priorCoverageType: lineOfCoverage,\r\n existingCoveragePayerName: policy.existingCoveragePayerName,\r\n rxPolicyNumber: policy.rxPolicyNumber,\r\n rxMedicareId: policy.rxMedicareId,\r\n existingCoverageCancellationDate: policy.existingCoverageCancellationDate,\r\n coverageThroughEmployer: policy.coverageThroughEmployer,\r\n employerName: policy.employerName,\r\n employmentDate: employee.hireDate,\r\n priorEmployerEmploymentDate: policy.employmentDate,\r\n existingCoverageType: policy.existingCoverageType\r\n } as Policy\r\n })\r\n } : { policies: [], visionExistingCoverage: [] };\r\n\r\n const selectedPlan = getSelectedPlan(this.props.plans, this.state.selectedPlanId);\r\n const isHsaPlan = selectedPlan && selectedPlan.eligibleForHsa ? selectedPlan.eligibleForHsa : false;\r\n const isMedical = this.props.lineOfCoverage === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n // HSA contributions\r\n // if (employee && this.state.hsaContribution) {\r\n const updatedEmployee = {\r\n ...convertEmployeeToEmployeeDTO(employee),\r\n hsaContribution: isMedical && !isHsaPlan ? 0 : this.state.hsaContribution,\r\n hsaContributionMode: isMedical && !isHsaPlan ? 0 : this.state.hsaContributionMode,\r\n dependents: employee.dependents.map(dep => ({\r\n ...dep,\r\n objectState: dep.objectState === ObjectState.added ? ObjectState.added : ObjectState.modified,\r\n id: dep.id || '',\r\n dateOfBirth: dep.dateOfBirth ? dep.dateOfBirth.format() : '',\r\n genderId: dep.genderId,\r\n additionalInfo: dep.additionalInfo ? convertAdditionalInfoToDTO(dep.additionalInfo) : undefined\r\n }))\r\n };\r\n await this.props.updateEmployee(updatedEmployee);\r\n //}\r\n\r\n // question answers\r\n const mapQuestionAnswer = (questionTypeId: number) => (planQuestionAnswer: PlanQuestionsAnswer): QuestionAnswer => ({\r\n parentQuestionId: planQuestionAnswer.parentQuestionId,\r\n questionId: planQuestionAnswer.questionId,\r\n questionKey: planQuestionAnswer.questionKey,\r\n questionTypeId: questionTypeId,\r\n answers: planQuestionAnswer.answers.map(answer => ({\r\n memberId: answer.memberId,\r\n value: answer.value\r\n }))\r\n });\r\n const questionAnswers = [\r\n ...(\r\n this.props.majorMedicalCoverageValidation.values ?\r\n this.props.majorMedicalCoverageValidation.values.questions : []\r\n ).map(mapQuestionAnswer(getLookupId('MAJORMEDICALCOVERAGEQUESTION', LOOKUP_TYPE_IDS.questionType))),\r\n ...(\r\n this.props.knockoutAnswersValidation.values ?\r\n this.props.knockoutAnswersValidation.values.questions : []\r\n ).map(mapQuestionAnswer(getLookupId('KNOCKOUTQUESTION', LOOKUP_TYPE_IDS.questionType))),\r\n ...(\r\n this.props.medicareValidation.values ?\r\n this.props.medicareValidation.values.questions : []\r\n ).map(mapQuestionAnswer(getLookupId('MEDICAREQUESTION', LOOKUP_TYPE_IDS.questionType))),\r\n ...(\r\n this.props.specifiedDiseaseValidation.values ?\r\n this.props.specifiedDiseaseValidation.values.questions : []\r\n ).map(mapQuestionAnswer(getLookupId('SPECIFIEDDISEASEQUESTION', LOOKUP_TYPE_IDS.questionType))),\r\n ...(\r\n this.props.replacementCoverageValidation.values ?\r\n this.props.replacementCoverageValidation.values.questions : []\r\n ).map(mapQuestionAnswer(getLookupId('REPLACEMENTQUESTION', LOOKUP_TYPE_IDS.questionType)))\r\n ]\r\n\r\n const primaryCares = this.state.primaryCares.filter(p => (p.enrollees || []).length > 0).map(p => {\r\n return {\r\n ...p,\r\n enrollees: p.enrollees || []\r\n } as PrimaryCareDTO\r\n });\r\n\r\n\r\n const updatedDependents = this.state.selectedDependents.map(dep => {\r\n return {\r\n ...dep,\r\n isWaived: dep.isWaived || this.disabledCheck(dep, false)\r\n }\r\n })\r\n\r\n const waivedDependents = employee.dependents.filter(dep => !updatedDependents.find(d => d.id === dep.id))\r\n .map(dep => {\r\n return {\r\n ...dep,\r\n isWaived: true,\r\n waivedReasonId: this.state.dependentWaivedReasons[dep.id]\r\n }\r\n });\r\n\r\n const finalizedDependents = [...updatedDependents, ...waivedDependents].map(dependent => {\r\n return {\r\n firstName: dependent.firstName,\r\n lastName: dependent.lastName,\r\n id: dependent.id,\r\n isWaived: dependent.isWaived,\r\n waivedReasonId: dependent.isWaived === true ? dependent.waivedReasonId : undefined\r\n } as ElectionDependent;\r\n })\r\n\r\n const isAmericanPublicLife = this.props.americanPublicLifeValues ? this.props.americanPublicLifeValues.isAmericanPublicLife : undefined;\r\n const lifeBenefitOverrideAmount = this.props.lifeBenefitAmountValues ? this.props.lifeBenefitAmountValues.lifeBenefitAmount : undefined;\r\n const previousYearRenewalCarrierCode = this.props.renewalQuestionsFormValues && this.props.renewalQuestionsFormValues.previousYearRenewalCarrierCode;\r\n const carrierRenewal = previousYearRenewalCarrierCode !== CARRIER_RENEWAL.notapplicable && previousYearRenewalCarrierCode !== CARRIER_RENEWAL.notsure ? true : false;\r\n const isItSameCarrier = this.selectedPlan && this.selectedPlan.carrierCode === previousYearRenewalCarrierCode ? true : false;\r\n const planRenewal = this.props.renewalQuestionsFormValues && isItSameCarrier === true ? (this.props.renewalQuestionsFormValues.planRenewal ? this.props.renewalQuestionsFormValues.planRenewal : PLAN_RENEWAL.false) : PLAN_RENEWAL.false;\r\n const isDroppedEnrollee = this.props.renewalQuestionsFormValues && carrierRenewal === true ? (this.props.renewalQuestionsFormValues.isDroppedEnrollee ? this.props.renewalQuestionsFormValues.isDroppedEnrollee : DROPPED_ENROLLEE.false) : DROPPED_ENROLLEE.false;\r\n\r\n const currentEnrollees = this.props.renewalQuestionsFormValues && carrierRenewal === true ? this.props.renewalQuestionsFormValues.currentEnrollees : undefined;\r\n const dependentDroppedEnrollees = this.props.renewalQuestionsFormValues && carrierRenewal === true && isDroppedEnrollee == DROPPED_ENROLLEE.true ? this.props.renewalQuestionsFormValues.droppedEnrollees : undefined;\r\n const isCurrentEnrolleesNotSure = this.props.renewalQuestionsFormValues && this.props.renewalQuestionsFormValues.isCurrentEnrolleesNotSure;\r\n const employeeSkippedRenewalQuestions = previousYearRenewalCarrierCode == CARRIER_RENEWAL.notsure || isCurrentEnrolleesNotSure || isDroppedEnrollee == DROPPED_ENROLLEE.notsure || planRenewal == PLAN_RENEWAL.notsure;\r\n\r\n const droppedEnrollees = dependentDroppedEnrollees != undefined ? dependentDroppedEnrollees.map(droppedEnrollee => {\r\n return {\r\n firstName: droppedEnrollee.firstName,\r\n lastName: droppedEnrollee.lastName,\r\n genderId: droppedEnrollee.genderId,\r\n dateOfBirth: droppedEnrollee.dateOfBirth,\r\n contactInformation: !droppedEnrollee.addressSameAsEmployee && droppedEnrollee.contactInformation ? droppedEnrollee.contactInformation : undefined,\r\n dependentTypeId: droppedEnrollee.dependentTypeId,\r\n ssn: droppedEnrollee.ssn,\r\n addressSameAsEmployee: droppedEnrollee.addressSameAsEmployee\r\n } as DroppedEnrolleeDTO\r\n }) : undefined;\r\n\r\n\r\n const renewal: RenewalDTO | undefined = {\r\n carrierRenewal: carrierRenewal,\r\n previousYearRenewalCarrierCode: previousYearRenewalCarrierCode,\r\n planRenewal: planRenewal,\r\n isDroppedEnrollee: isDroppedEnrollee,\r\n }\r\n\r\n var renewalInfo: ElectionRenewalInfoDTO = {\r\n renewal,\r\n currentEnrollees,\r\n isCurrentEnrolleesNotSure,\r\n droppedEnrollees,\r\n employeeSkippedRenewalQuestions\r\n }\r\n\r\n const subscriberId = this.props.subscriberFormValues ? this.props.subscriberFormValues.subscriberId : undefined;\r\n if (this.election) {\r\n const basicLifePreviousAmount = this.props.basicLifePreviousAmountValues ? this.props.basicLifePreviousAmountValues.basicLifePreviousAmount : undefined;\r\n\r\n const updatedElection: Election = {\r\n ...this.election,\r\n additionalInfo: {\r\n ...this.election.additionalInfo,\r\n subscriberId,\r\n basicLifePreviousAmount,\r\n isAmericanPublicLife,\r\n isExistingMember: this.state.isExistingMember,\r\n lifeBenefitOverrideAmount: lifeBenefitOverrideAmount,\r\n } as ElectionAdditionalInfo,\r\n renewalInfo: renewalInfo,\r\n planId: this.state.selectedPlanId!,\r\n waivedReasonId: this.state.selectedPlanId! ? undefined : this.state.waiveReasonId,\r\n isEmployeeIncluded: this.state.isEmployeeChecked,\r\n isWaived: this.state.selectedPlanId === '',\r\n dependents: finalizedDependents,\r\n existingCoverage: hasExistingCoverageValues ? existingCoverage as ExistingCoverage : undefined,\r\n questionAnswers,\r\n primaryCares\r\n };\r\n\r\n\r\n try {\r\n await this.props.updateElection(updatedElection);\r\n this.originalState = this.state;\r\n this.props.onDone(goToNextPage)\r\n }\r\n finally {\r\n this.loadingOff();\r\n }\r\n } else {\r\n const basicLifePreviousAmount = this.props.basicLifePreviousAmountValues ? this.props.basicLifePreviousAmountValues.basicLifePreviousAmount : undefined;\r\n const newElection: Election = {\r\n id: '',\r\n enrollmentId: this.props.enrollmentId,\r\n planId: this.state.selectedPlanId!,\r\n isEmployeeIncluded: this.state.isEmployeeChecked,\r\n waivedReasonId: this.state.selectedPlanId ? undefined : this.state.waiveReasonId,\r\n isWaived: this.state.selectedPlanId === '',\r\n employeeId: this.props.employeeId,\r\n lineOfCoverageId: this.props.lineOfCoverage,\r\n dependents: finalizedDependents,\r\n existingCoverage: hasExistingCoverageValues ? existingCoverage as ExistingCoverage : undefined,\r\n primaryCares,\r\n renewalInfo: renewalInfo,\r\n additionalInfo: {\r\n subscriberId: subscriberId,\r\n basicLifePreviousAmount: basicLifePreviousAmount,\r\n isAmericanPublicLife: isAmericanPublicLife,\r\n isExistingMember: this.state.isExistingMember,\r\n lifeBenefitOverrideAmount: lifeBenefitOverrideAmount\r\n } as ElectionAdditionalInfo,\r\n questionAnswers\r\n };\r\n\r\n try {\r\n await this.props.createElection(newElection);\r\n this.originalState = this.state;\r\n if (goToNextPage) this.props.onDone();\r\n }\r\n finally {\r\n this.loadingOff();\r\n }\r\n }\r\n }\r\n\r\n onPrimaryCaresUpdated = (primaryCares: PrimaryCareDTO[]) => {\r\n this.setState({ primaryCares });\r\n }\r\n\r\n onExistingMemberRadio = (_event: any, checked: string) => {\r\n this.setState({\r\n isExistingMember: checked === \"1\"\r\n })\r\n };\r\n\r\n\r\n renderElectionWarnings() {\r\n const renderedWarnings: JSX.Element[] = [];\r\n\r\n // Life Warnings\r\n if (this.isLife) {\r\n const employeeAge = calculateAge(this.props.employee.dateOfBirth || moment(), this.plansEffectiveDate || moment());\r\n if (employeeAge >= 65)\r\n renderedWarnings.push((\r\n \r\n ));\r\n }\r\n const displayMedicaidAlert = this.props.plans.filter(plan => plan.configurationTypeIds.includes(64)).length > 0;\r\n\r\n if (this.isCriticalIllness) {\r\n const employeeAge = calculateAge(this.props.employee.dateOfBirth || moment(), this.plansEffectiveDate || moment());\r\n if (employeeAge >= 65)\r\n renderedWarnings.push((\r\n \r\n ));\r\n\r\n if (displayMedicaidAlert)\r\n renderedWarnings.push((\r\n \r\n ));\r\n }\r\n return renderedWarnings;\r\n }\r\n\r\n generatePolicyEnrollees = (employee: Employee) => {\r\n const enrollees: FormPolicyEnrollee[] = [];\r\n enrollees.push({\r\n id: employee.id,\r\n fullName: employee.fullName,\r\n isEmployee: true,\r\n checked: false,\r\n })\r\n employee.dependents.forEach((dep: Dependent) => {\r\n enrollees.push({\r\n id: dep.id,\r\n fullName: dep.fullName,\r\n isEmployee: false,\r\n checked: false,\r\n })\r\n })\r\n return enrollees;\r\n }\r\n\r\n private getInitialValuesFromImport(importedRenewal: ImportedRenewalsDTO) {\r\n const currentEnrollees = this.props.employee.dependents.map((dep) => {\r\n const dependentInCurrentEnrollees = importedRenewal.currentEnrollees.find(enrollee => enrollee.enrolleeId === dep.id);\r\n const isEnrolled = dependentInCurrentEnrollees\r\n ? dependentInCurrentEnrollees.isEnrolled\r\n : false;\r\n return {\r\n enrolleeId: dep.id,\r\n enrolleeFullName: dep.fullName,\r\n isEnrolled: isEnrolled,\r\n };\r\n });\r\n\r\n currentEnrollees.unshift({\r\n enrolleeId: this.props.employee.id,\r\n enrolleeFullName: this.props.employee.fullName,\r\n isEnrolled: true\r\n });\r\n\r\n importedRenewal.currentEnrollees = currentEnrollees;\r\n\r\n return {\r\n isCurrentEnrolleesNotSure: importedRenewal.isCurrentEnrolleesNotSure,\r\n currentEnrollees: importedRenewal.currentEnrollees,\r\n carrierRenewal: importedRenewal.carrierRenewal.toString(),\r\n previousYearRenewalCarrierCode: importedRenewal.previousYearRenewalCarrierCode,\r\n planRenewal: importedRenewal.planRenewal,\r\n isDroppedEnrollee: DROPPED_ENROLLEE.false,\r\n reduceValidation: this.state.reduceValidation,\r\n } as RenewalQuestionsFormData;\r\n }\r\n\r\n renewalInitialValues = (importedRenewals: ImportedRenewalsDTO[] | undefined) => {\r\n const existingRenewal = this.election && this.election.renewalInfo;\r\n const importedRenewal = importedRenewals && importedRenewals.find(renewal => renewal.lineOfCoverageId === this.props.lineOfCoverage);\r\n if (!existingRenewal && importedRenewal) {\r\n return this.getInitialValuesFromImport(importedRenewal);\r\n }\r\n\r\n const enrolleesArr: CurrentEnrolleeDTO[] | undefined = this.election && this.election.renewalInfo && this.election.renewalInfo.currentEnrollees;\r\n var currentDepEnrollees = this.props.employee.dependents.map((dep) => ({\r\n enrolleeId: dep.id || undefined,\r\n enrolleeFullName: dep.fullName || undefined,\r\n isSpouse: dep.isSpouse,\r\n isEnrolled: enrolleesArr\r\n && enrolleesArr.find(en => en.enrolleeId === dep.id)\r\n && enrolleesArr.find(en => en.enrolleeId === dep.id)!.isEnrolled\r\n }));\r\n\r\n //Insert employee as first element\r\n currentDepEnrollees.unshift({\r\n enrolleeId: this.props.employee.id || undefined,\r\n enrolleeFullName: this.props.employee.fullName || undefined,\r\n isEnrolled: true,\r\n isSpouse: false\r\n });\r\n\r\n var isCurrentEnrolleesNotSure = this.election && this.election.renewalInfo && this.election.renewalInfo.isCurrentEnrolleesNotSure;\r\n\r\n const spouseTypes = getSpouseTypeSet();\r\n\r\n var droppedEnrollees = this.election && this.election.renewalInfo && this.election.renewalInfo.droppedEnrollees && this.election.renewalInfo.droppedEnrollees.map(droppedEnrollee => ({\r\n ...droppedEnrollee,\r\n isSpouse: spouseTypes.has(droppedEnrollee.dependentTypeId)\r\n }));\r\n\r\n return {\r\n currentEnrollees: currentDepEnrollees,\r\n isCurrentEnrolleesNotSure: isCurrentEnrolleesNotSure,\r\n droppedEnrollees: droppedEnrollees,\r\n carrierRenewal: this.election && this.election.renewalInfo && this.election.renewalInfo.renewal && this.election.renewalInfo.renewal.carrierRenewal,\r\n previousYearRenewalCarrierCode: this.election && this.election.renewalInfo && this.election.renewalInfo.renewal && this.election.renewalInfo.renewal.previousYearRenewalCarrierCode != undefined ? this.election.renewalInfo.renewal.previousYearRenewalCarrierCode : CARRIER_RENEWAL.notapplicable,\r\n planRenewal: this.election && this.election.renewalInfo && this.election.renewalInfo.renewal && this.election.renewalInfo.renewal.planRenewal != undefined ? this.election.renewalInfo.renewal.planRenewal : PLAN_RENEWAL.false,\r\n isDroppedEnrollee: this.election && this.election.renewalInfo && this.election.renewalInfo.renewal && this.election.renewalInfo.renewal.isDroppedEnrollee != undefined ? this.election.renewalInfo.renewal.isDroppedEnrollee : DROPPED_ENROLLEE.false,\r\n reduceValidation: this.state.reduceValidation\r\n } as RenewalQuestionsFormData;\r\n }\r\n\r\n existingCoverageInitialValues(waivedenrollees: boolean) {\r\n const selectedPlan = getSelectedPlan(this.props.plans, this.state.selectedPlanId);\r\n if (!selectedPlan && !waivedenrollees)\r\n return undefined;\r\n const employee = this.props.employee;\r\n const election = employee.elections.find(elect => elect.lineOfCoverageId === this.props.lineOfCoverage);\r\n const values = election && election.existingCoverage ? election.existingCoverage : {} as FormDataExistingCoverage;\r\n let visionExistingCoverage: VisionEnrollee[] = [];\r\n\r\n if (!election || !election.existingCoverage) {\r\n if (this.isVision) {\r\n\r\n visionExistingCoverage.push({\r\n id: employee.id,\r\n fullName: employee.fullName,\r\n isEmployee: true,\r\n checked: false\r\n });\r\n employee.dependents.forEach((dep: Dependent) => {\r\n visionExistingCoverage.push({\r\n id: dep.id,\r\n fullName: dep.fullName,\r\n isEmployee: false,\r\n checked: false\r\n })\r\n });\r\n }\r\n return {\r\n ...values,\r\n visionExistingCoverage: visionExistingCoverage,\r\n policies: [],\r\n reduceValidation: this.state.reduceValidation\r\n }\r\n } else {\r\n if (this.isVision) {\r\n let visionCoverageArray = [] as PolicyEnrollee[];\r\n if (election.existingCoverage && election.existingCoverage.visionExistingCoverage) visionCoverageArray = election.existingCoverage.visionExistingCoverage;\r\n\r\n visionExistingCoverage.push({\r\n id: employee.id,\r\n fullName: employee.fullName,\r\n isEmployee: true,\r\n checked: visionCoverageArray.some((vs: PolicyEnrollee) => vs.id === employee.id)\r\n });\r\n employee.dependents.forEach((dep: Dependent) => {\r\n visionExistingCoverage.push({\r\n id: dep.id,\r\n fullName: dep.fullName,\r\n isEmployee: false,\r\n checked: visionCoverageArray.some((vs: PolicyEnrollee) => vs.id === dep.id)\r\n })\r\n });\r\n }\r\n\r\n const flattenedPolicies = election.existingCoverage.policies\r\n .map((policy: Policy) => {\r\n let policyEnrollees = this.generatePolicyEnrollees(employee);\r\n if (policy.enrollees[0] && !(policy.enrollees[0].hasOwnProperty('checked'))) {\r\n policy.enrollees.forEach((person: PolicyEnrollee) => {\r\n let index = policyEnrollees.findIndex((enrollee: FormPolicyEnrollee) => enrollee.id === person.id)\r\n policyEnrollees[index].checked = true;\r\n })\r\n policy.enrollees = policyEnrollees;\r\n }\r\n return {\r\n ...policy,\r\n ...policy.policyHolder,\r\n } as ExistingCoverageFieldArrayData;\r\n });\r\n\r\n return {\r\n ...values,\r\n visionExistingCoverage: visionExistingCoverage,\r\n policies: flattenedPolicies,\r\n reduceValidation: this.state.reduceValidation\r\n }\r\n }\r\n };\r\n\r\n subscriberInitialValues = () => {\r\n const formData: subscriberFormData = {\r\n subscriberId: (this.election && this.election!.additionalInfo) ? this.election!.additionalInfo!.subscriberId : undefined\r\n }\r\n return formData;\r\n }\r\n basicLifePreviousAmountInitialValues = () => {\r\n const formData: basicLifePreviousAmountData = {\r\n basicLifePreviousAmount: (this.election && this.election!.additionalInfo) ? this.election!.additionalInfo!.basicLifePreviousAmount : undefined\r\n }\r\n if (formData.basicLifePreviousAmount == null) {\r\n formData.basicLifePreviousAmount = 0;\r\n }\r\n return formData;\r\n }\r\n americanPublicLifeFormInitialValues = () => {\r\n const formData: americanPublicLifeFormData = {\r\n isAmericanPublicLife: (this.election && this.election!.additionalInfo) ? this.election!.additionalInfo!.isAmericanPublicLife : undefined\r\n }\r\n return formData;\r\n }\r\n lifeAmountInitialValues = () => {\r\n const formData: lifeBenefitAmountFormData = {\r\n lifeBenefitAmount: (this.election && this.election!.additionalInfo) ? this.election!.additionalInfo!.lifeBenefitOverrideAmount : undefined\r\n }\r\n return formData;\r\n }\r\n get label() {\r\n const lookup = this.lookups[this.props.lineOfCoverage];\r\n const label = lookup && lookup.value;\r\n return label;\r\n }\r\n\r\n private get selectedMemberLevels() {\r\n const { isEmployeeChecked, selectedDependents } = this.state;\r\n return this.determineSelectedMemberLevels(isEmployeeChecked, selectedDependents);\r\n }\r\n\r\n determineSelectedMemberLevels = (isEmployeeSelected: boolean, selectedDependents: ElectionDependent[]) => {\r\n const { employee: { dependents } } = this.props;\r\n const lookups = getLookups();\r\n\r\n const spouseTypes = ['SPOUSE', 'DOMESTICPARTNER'];\r\n const getMemberLevelId = (key: 'SPOUSE' | 'PERCHILD' | 'EMPLOYEE') => getLookupId(key, LOOKUP_TYPE_IDS.memberLevel)\r\n\r\n const selectedMemberLevels = new Set(dependents\r\n .filter(dep => Boolean(selectedDependents.find(s => s.id === dep.id))).map(d => d.dependentTypeId)\r\n .map(type => Boolean(spouseTypes.find(t => t === lookups[type].key)) ? getMemberLevelId('SPOUSE') : getMemberLevelId('PERCHILD')));\r\n\r\n if (isEmployeeSelected) {\r\n selectedMemberLevels.add(getMemberLevelId('EMPLOYEE'))\r\n }\r\n\r\n return selectedMemberLevels;\r\n }\r\n\r\n determineIfWaiving = (isEmployeeSelected: boolean, selectedDependents: ElectionDependent[]) => {\r\n const requiredEnrolleeMemberLevelId = this.getRequiredEnrolleeMemberLevelId();\r\n const selectedMemberLevels = this.determineSelectedMemberLevels(isEmployeeSelected, selectedDependents);\r\n return !selectedMemberLevels.has(requiredEnrolleeMemberLevelId);\r\n }\r\n\r\n getRequiredEnrolleeMemberLevelId = () => {\r\n if (isSpouseLife(this.props.lineOfCoverage)) {\r\n return this.spouseMemberLevelLookupId;\r\n }\r\n if (isChildLife(this.props.lineOfCoverage)) {\r\n return this.childMemberLevelLookupId;\r\n }\r\n return this.employeeMemberLevelLookupId;\r\n }\r\n\r\n getRequiredEnrolleeMemberLevelString = () => {\r\n const requiredEnrolleeType = this.getRequiredEnrolleeMemberLevelId();\r\n if (requiredEnrolleeType === this.spouseMemberLevelLookupId) {\r\n return \"spouse\";\r\n }\r\n if (requiredEnrolleeType === this.childMemberLevelLookupId) {\r\n return \"child\";\r\n }\r\n return \"employee\";\r\n }\r\n\r\n validateDependentsSelections = () => {\r\n const deps = this.props.employee.dependents;\r\n if (deps.length === 0)\r\n return true;\r\n\r\n const checked = this.state.selectedDependents;\r\n const waived = this.state.waivedDependents;\r\n const disabled = this.getDisabledDependents();\r\n\r\n const allDependentsElected = deps.every(dep => (checked.findIndex(x => x.id === dep.id) > -1)\r\n || (waived.findIndex(x => x.id === dep.id) > -1)\r\n || (disabled.findIndex(x => x.id === dep.id) > -1));\r\n return allDependentsElected;\r\n }\r\n\r\n validateSubscriberID = () => {\r\n const subscriberID = this.props.subscriberFormValues ? this.props.subscriberFormValues.subscriberId : undefined;\r\n\r\n if(subscriberID !== undefined){\r\n if(subscriberID > 0){\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n onBenefitAmountChanged = (planId: string, amount: number) => {\r\n\r\n let modifiedEmployee = {\r\n ...this.state.modifiedEmployee,\r\n elections: this.state.modifiedEmployee.elections.map(election => ({\r\n ...election,\r\n additionalInfo: election.planId === planId ? {\r\n ...election.additionalInfo,\r\n lifeBenefitOverrideAmount: amount\r\n } : election.additionalInfo\r\n }))\r\n };\r\n\r\n this.props.reCalculateCosts(modifiedEmployee, planId, amount);\r\n this.setState({ modifiedEmployee: modifiedEmployee });\r\n }\r\n\r\n eligibleForEnforcingExistingCoverage = (employeeWaiveReasonId: number) => {\r\n const selectedWaiverReason = checkForExistingCoverageEnforce(employeeWaiveReasonId);\r\n\r\n return selectedWaiverReason && selectedWaiverReason.length > 0;\r\n }\r\n\r\n render(): JSX.Element {\r\n const { plans, settings, employee, isExistingCoverageValid, isEnrollmentConfirmed, majorMedicalCoverageValidation, knockoutAnswersValidation, medicareValidation, specifiedDiseaseValidation, replacementCoverageValidation } = this.props;\r\n\r\n const disableSaveForNoEnrollees = this.state.selectedWaive ? false : (this.isSpouseLife || this.isChildLife) ? this.state.selectedDependents.length === 0 ? true : false : false;\r\n const selectedPlan = getSelectedPlan(plans, this.state.selectedPlanId);\r\n const hsaMaxValueAllowed = 50000;\r\n const validHsaValue = this.state.hsaamount > hsaMaxValueAllowed || this.state.hsaContribution > hsaMaxValueAllowed;\r\n const showHsa = selectedPlan && selectedPlan.eligibleForHsa ? selectedPlan.eligibleForHsa : false;\r\n const participantEligibility = selectedPlan ? selectedPlan.participants : plans[0] ? plans[0].participants : [] as Participant[];\r\n const isEmployeeAutoEnrollEnabled = isAutoEnrollEmployeeOnly(selectedPlan);\r\n const isDependentAutoEnrolledEnabled = isAutoEnrollEmployeeAndDependent(selectedPlan);\r\n const dependents = employee.dependents;\r\n let isDependentDisabled = false;\r\n if (isDependentAutoEnrolledEnabled){\r\n isDependentDisabled = selectedPlan==undefined?false:this.checkPlanDisabled(selectedPlan.linkedPlans) || this.state.selectedWaive;\r\n\r\n }\r\n\r\n const majorMedicalQuestions = this.selectedPlan && (this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('MAJORMEDICALCOVERAGEQUESTION', LOOKUP_TYPE_IDS.questionType)));\r\n const knockoutQuestions = this.selectedPlan && (this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('KNOCKOUTQUESTION', LOOKUP_TYPE_IDS.questionType)));\r\n const replacementQuestions = this.selectedPlan && (this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('REPLACEMENTQUESTION', LOOKUP_TYPE_IDS.questionType)));\r\n const medicareQuestions = this.selectedPlan && (this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('MEDICAREQUESTION', LOOKUP_TYPE_IDS.questionType)));\r\n const specifiedDiseaseQuestions = this.selectedPlan && (this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('SPECIFIEDDISEASEQUESTION', LOOKUP_TYPE_IDS.questionType)));\r\n\r\n const LOC = this.lookups[this.props.lineOfCoverage].value;\r\n const fullWidthButton = this.props.width === 'xs';\r\n const PlanCardComponent = (this.isLife || this.isDisability) ? LifeDisabilityElectionCard : PlanElectionCard;\r\n const configurationTypeIds = selectedPlan ? selectedPlan.configurationTypeIds : [];\r\n const dentalExistingCoverage = configurationTypeIds.includes(4);\r\n const medicalExistingCoverage = configurationTypeIds.includes(5);\r\n const visionExistingCoverage = configurationTypeIds.includes(12);\r\n const hasExistingCoverage = ((this.isMedical && medicalExistingCoverage) || (this.isDental && dentalExistingCoverage) || (this.isVision && visionExistingCoverage));\r\n const effectiveDate = getEffectiveDateForEmployee(selectedPlan, employee.hireDate);\r\n const hasSubscriberMemberId = configurationTypeIds.includes(24);\r\n const hasBasicLifePreviousAmount = configurationTypeIds.includes(25);\r\n const hasAmericanPublicLifeBrochure = configurationTypeIds.includes(28);\r\n const typeOfRequiredEnrollee = this.getRequiredEnrolleeMemberLevelString();\r\n const hasExistingMember = configurationTypeIds.includes(35);\r\n const hasDisplayOnWaiver = configurationTypeIds.includes(43);\r\n const selectedPlanHasWaiveDisplay = (selectedPlan != undefined) && (hasDisplayOnWaiver && (dentalExistingCoverage || medicalExistingCoverage || visionExistingCoverage));\r\n const displayOnWaiveConfigEnabled = this.props.plans.filter(plan => plan.configurationTypeIds.includes(43));\r\n const displayOnWaiveConfigLoc = displayOnWaiveConfigEnabled.filter(plan => plan.lineOfCoverageId === this.props.lineOfCoverage);\r\n const displayOnWaiveConfigDental = displayOnWaiveConfigLoc.filter(plan => plan.configurationTypeIds.includes(4)).length > 0;\r\n const displayOnWaiveConfigMedical = displayOnWaiveConfigLoc.filter(plan => plan.configurationTypeIds.includes(5)).length > 0;\r\n const displayOnWaiveConfigVision = displayOnWaiveConfigLoc.filter(plan => plan.configurationTypeIds.includes(12)).length > 0;\r\n const waivedEnrollees = (selectedPlanHasWaiveDisplay && this.state.waivedDependents.length > 0 && this.state.isEmployeeChecked === true)\r\n || ((displayOnWaiveConfigDental || displayOnWaiveConfigMedical || displayOnWaiveConfigVision) && this.state.isEmployeeChecked === false);\r\n const isLocElectiveVoluntary = isElectiveVoluntaryLOC(this.props.lineOfCoverage);\r\n\r\n const displayAdditionalInfoHeader = showHsa ||\r\n (selectedPlan && selectedPlan.pcpInformationRequired) ||\r\n ((hasExistingCoverage || waivedEnrollees) && !isLocElectiveVoluntary) ||\r\n hasSubscriberMemberId || hasBasicLifePreviousAmount || hasAmericanPublicLifeBrochure ||\r\n (majorMedicalQuestions && majorMedicalQuestions.length > 0) ||\r\n (knockoutQuestions && knockoutQuestions.length > 0) ||\r\n (replacementQuestions && replacementQuestions.length > 0) ||\r\n (medicareQuestions && medicareQuestions.length > 0) ||\r\n (specifiedDiseaseQuestions && specifiedDiseaseQuestions.length > 0);\r\n\r\n const disabledDependents = this.getDisabledDependents();\r\n\r\n const validateSubscriberIDNumber = this.props.subscriberFormValues ? this.validateSubscriberID() : false;\r\n\r\n const validateDependentsSelections = this.validateDependentsSelections();\r\n const countDependentWaiveReasons = Object.values(this.state.dependentWaivedReasons).filter(x => x).length;\r\n const countWaivedDependents = this.state.waivedDependents.filter(dep => { return !this.disabledCheck(dep, false) }).length;\r\n const isEmployeeDisabled = this.getEmployeeDisabled(selectedPlan ? selectedPlan : this.props.plans[0])\r\n const missingWaiveReasons = employee.isEmployeeWaiving ? false : (!this.state.isEmployeeChecked && !isEmployeeDisabled && !this.state.waiveReasonId) || (countDependentWaiveReasons != countWaivedDependents);\r\n const electionIncomplete = missingWaiveReasons || (!this.state.selectedWaive && (!this.state.selectedPlanId || !isExistingCoverageValid)) || validHsaValue;\r\n const enrollmentSubmitted = isEnrollmentSubmitted(this.props.employee, this.props.enrollmentState);\r\n const lifeBenefitAmount = this.props.lifeBenefitAmountValues ? this.props.lifeBenefitAmountValues.lifeBenefitAmount : undefined;\r\n const isMissingLifeBenefitAmount =\r\n selectedPlan ?\r\n selectedPlan.benefitAmountTypeId === CalcBenefitAmountType.increment && lifeBenefitAmount === undefined : false;\r\n const payPeriodName = payrollCycleName(this.state.employeePayFrequency);\r\n\r\n const isDroppedEnrollee = this.props.renewalQuestionsFormValues && this.props.renewalQuestionsFormValues.isDroppedEnrollee === DROPPED_ENROLLEE.true ? true : false;\r\n const dependentDroppedEnrollees = this.props.renewalQuestionsFormValues && isDroppedEnrollee ? this.props.renewalQuestionsFormValues.droppedEnrollees : undefined;\r\n const isDroppedEnrolleeAdded = !isDroppedEnrollee || (isDroppedEnrollee && dependentDroppedEnrollees && dependentDroppedEnrollees.length > 0);\r\n\r\n const enforceCapturingExistingCoverage = this.isHorizonPlanOffered\r\n && !this.state.isEmployeeChecked\r\n && !!this.state.waiveReasonId\r\n && this.eligibleForEnforcingExistingCoverage(this.state.waiveReasonId);\r\n\r\n let fullDisableSave =\r\n\r\n validateSubscriberIDNumber ||\r\n electionIncomplete ||\r\n !validateDependentsSelections ||\r\n !isEnrollmentConfirmed ||\r\n disableSaveForNoEnrollees ||\r\n !majorMedicalCoverageValidation.isValid ||\r\n !knockoutAnswersValidation.isValid ||\r\n !medicareValidation.isValid ||\r\n !specifiedDiseaseValidation.isValid ||\r\n !this.props.isAmericanPublicLifeValid ||\r\n this.state.saveLoading ||\r\n this.state.submitLoading ||\r\n !replacementCoverageValidation.isValid ||\r\n enrollmentSubmitted ||\r\n isMissingLifeBenefitAmount ||\r\n !isDroppedEnrolleeAdded ||\r\n (enforceCapturingExistingCoverage && this.props.isExistingCoverageMissingKeyFields) ||\r\n this.props.formInvalid;\r\n\r\n let fullDisableSaveReduce =\r\n validateSubscriberIDNumber ||\r\n electionIncomplete ||\r\n !validateDependentsSelections ||\r\n !isEnrollmentConfirmed ||\r\n disableSaveForNoEnrollees ||\r\n this.state.saveLoading ||\r\n this.state.submitLoading ||\r\n enrollmentSubmitted ||\r\n !isDroppedEnrolleeAdded ||\r\n this.props.formInvalid;\r\n\r\n const isDisabledOverride = selectedPlan==undefined?false:this.checkPlanDisabled(selectedPlan.linkedPlans);\r\n if (isDisabledOverride) {\r\n fullDisableSave = true;\r\n fullDisableSaveReduce = true;\r\n }\r\n\r\n\r\n const generateLabel = (text: string) => {\r\n return

{text}

\r\n }\r\n\r\n const allowedCoverageLevels = getAllowedCoverageLevels(this.props.lineOfCoverage);\r\n const renewalInitialValues = this.renewalInitialValues(this.props.importedRenewals);\r\n const isEmployeeWaiving = employee ? employee.isEmployeeWaiving : false;\r\n return (\r\n <>\r\n\r\n {(this.isLife || this.isDisability) &&\r\n \r\n }\r\n {LOC} Coverage\r\n \r\n 1\r\n \r\n Please choose whom you would like to be covered by your {LOC} Plan.\r\n \r\n {isLocElectiveVoluntary ?\r\n \r\n :\r\n }\r\n 2\r\n \r\n Please choose your {LOC.toLowerCase()} plan or waive coverage.\r\n \r\n {this.renderElectionWarnings()}\r\n {!isEmployeeAutoEnrollEnabled && !isDependentAutoEnrolledEnabled && plans.map(plan => {\r\n const isDisabled = this.checkPlanDisabled(plan.linkedPlans) || this.state.selectedWaive;\r\n const isWaived = this.state.selectedWaive;\r\n if (this.election && this.election.additionalInfo )\r\n {\r\n if (isWaived ){\r\n let cost = this.props.planCosts.find(_cost => _cost.planId === plan.id);\r\n if (cost) {cost.benefitAmount = 0; cost.employeeCost = 0; cost.employerCost = 0;}\r\n }\r\n else if (this.state.isSelecting) {\r\n let amt = this.election && this.election.additionalInfo && this.election.additionalInfo.lifeBenefitOverrideAmount ? this.election.additionalInfo.lifeBenefitOverrideAmount : 0;\r\n let minAmt = plan && plan.minimumBenefit ? plan.minimumBenefit : 0;\r\n let maxAmt = Math.max(amt, minAmt);\r\n this.setState({ isSelecting: false, benefitAmount: maxAmt });\r\n this.election.additionalInfo.lifeBenefitOverrideAmount = maxAmt;\r\n if (this.state.selectedPlanId === plan.id) { this.throttleReCalculateCosts(this.state.modifiedEmployee, plan.id, maxAmt); }\r\n }\r\n }\r\n return (\r\n _cost.planId === plan.id)}\r\n selected={this.state.selectedPlanId === plan.id}\r\n onSelected={() => this.handlePlanSelect(plan.id)}\r\n disabled={isDisabled}\r\n waived={this.state.selectedWaive}\r\n disabledToolTipText={isDisabled ? this.getLinkedPlanToolTip(plan.linkedPlans) : undefined}\r\n typeOfRequiredEnrollee={typeOfRequiredEnrollee}\r\n payrollCycleId={employee.payrollCycleId}\r\n companySettings={this.companySettings}\r\n onBenefitAmountChanged={this.onBenefitAmountChanged}\r\n lifeBenefitAmountInitialValues={this.lifeAmountInitialValues()}\r\n planSelected={this.state.selectedPlanId === plan.id}\r\n isWaived = {isWaived}\r\n />\r\n );\r\n })}\r\n {/* {isLocElectiveVoluntary &&\r\n \r\n } */}\r\n {(isEmployeeAutoEnrollEnabled || isDependentAutoEnrolledEnabled) && selectedPlan &&\r\n _cost.planId === selectedPlan.id)}\r\n selectedText={isDependentDisabled?'':'Automatically Enrolled'}\r\n disabledToolTipText={isDependentDisabled ? this.getLinkedPlanToolTip(selectedPlan.linkedPlans) : undefined}\r\n selected={true}\r\n disabled={isDependentDisabled}\r\n waived={this.state.selectedWaive}\r\n payrollCycleId={employee.payrollCycleId}\r\n companySettings={this.companySettings}\r\n onBenefitAmountChanged={this.onBenefitAmountChanged}\r\n lifeBenefitAmountInitialValues={this.lifeAmountInitialValues()}\r\n planSelected={true}\r\n />\r\n }\r\n {\r\n displayAdditionalInfoHeader &&\r\n <>\r\n 3\r\n \r\n Additional Information\r\n \r\n \r\n }\r\n {\r\n showHsa === true &&\r\n <>\r\n Health Savings Account\r\n

If you choose an HSA-eligible health plan above, you can enroll in a health savings account.

\r\n \r\n \r\n }\r\n {\r\n selectedPlan && selectedPlan.pcpInformationRequired &&\r\n \r\n }\r\n \r\n {(hasExistingCoverage || waivedEnrollees) && !isLocElectiveVoluntary &&\r\n <>\r\n \r\n {'We need additional coverage information based on your selection.'}\r\n \r\n \r\n \r\n }\r\n {selectedPlan && hasExistingMember &&\r\n <>\r\n \r\n
\r\n Existing Member Information\r\n
\r\n \r\n \r\n
{generateLabel(`Are you an existing member of ${selectedPlan.carrierName}?`)}
\r\n \r\n } label=\"Yes\" />\r\n } label=\"No\" />\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n {hasSubscriberMemberId &&\r\n <>\r\n \r\n \r\n Subscriber/Member ID\r\n \r\n
\r\n \r\n If you are an existing member of this carrier, please enter your subscriber/member ID below.\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n }\r\n {hasBasicLifePreviousAmount &&\r\n <>\r\n \r\n \r\n Basic Life Previous Amount\r\n \r\n
\r\n \r\n If this Basic Life policy will replace your existing life insurance coverage under your current employer, provide the amount of the previous policy.\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n }\r\n {hasAmericanPublicLifeBrochure &&\r\n <>\r\n \r\n \r\n American Public Life Brochure\r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n {\r\n this.selectedPlan &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('REPLACEMENTQUESTION', LOOKUP_TYPE_IDS.questionType)) &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('REPLACEMENTQUESTION', LOOKUP_TYPE_IDS.questionType)).length > 0 &&\r\n q.questionTypeId === getLookupId('REPLACEMENTQUESTION', LOOKUP_TYPE_IDS.questionType))}\r\n selectedMemberLevels={this.selectedMemberLevels}\r\n savedAnswers={this.election && this.election.questionAnswers}\r\n replacementCoverageValues={this.props.replacementCoverageValues}\r\n updateReplacementCoverageFormValues={this.props.updateReplacementCoverageFormValues}\r\n />\r\n }\r\n\r\n {\r\n this.selectedPlan &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('MAJORMEDICALCOVERAGEQUESTION', LOOKUP_TYPE_IDS.questionType)) &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('MAJORMEDICALCOVERAGEQUESTION', LOOKUP_TYPE_IDS.questionType)).length > 0 &&\r\n <>\r\n
\r\n q.questionTypeId === getLookupId('MAJORMEDICALCOVERAGEQUESTION', LOOKUP_TYPE_IDS.questionType))}\r\n selectedMemberLevels={this.selectedMemberLevels}\r\n savedAnswers={this.questionMajorMedicalCoverageAnswers}\r\n />\r\n \r\n }\r\n {\r\n this.selectedPlan &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('KNOCKOUTQUESTION', LOOKUP_TYPE_IDS.questionType)) &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('KNOCKOUTQUESTION', LOOKUP_TYPE_IDS.questionType)).length > 0 &&\r\n q.questionTypeId === getLookupId('KNOCKOUTQUESTION', LOOKUP_TYPE_IDS.questionType))}\r\n selectedMemberLevels={this.selectedMemberLevels}\r\n selectedLOCPlans={plans}\r\n selectedPlan={selectedPlan}\r\n savedAnswers={this.questionKnockoutAnswers}\r\n />\r\n }\r\n {\r\n this.selectedPlan &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('MEDICAREQUESTION', LOOKUP_TYPE_IDS.questionType)) &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('MEDICAREQUESTION', LOOKUP_TYPE_IDS.questionType)).length > 0 &&\r\n q.questionTypeId === getLookupId('MEDICAREQUESTION', LOOKUP_TYPE_IDS.questionType))}\r\n selectedMemberLevels={this.selectedMemberLevels}\r\n savedAnswers={this.questionMedicareAnswers}\r\n />\r\n }\r\n {\r\n this.selectedPlan &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('SPECIFIEDDISEASEQUESTION', LOOKUP_TYPE_IDS.questionType)) &&\r\n this.selectedPlan.questions.filter(q => q.questionTypeId === getLookupId('SPECIFIEDDISEASEQUESTION', LOOKUP_TYPE_IDS.questionType)).length > 0 &&\r\n q.questionTypeId === getLookupId('SPECIFIEDDISEASEQUESTION', LOOKUP_TYPE_IDS.questionType))}\r\n selectedMemberLevels={this.selectedMemberLevels}\r\n savedAnswers={this.questionSpecifiedDiseaseAnswers}\r\n />\r\n }\r\n\r\n
\r\n\r\n {!this.props.endDateIsInFuture &&\r\n
\r\n {this.props.endDateMessage}\r\n
\r\n }\r\n\r\n
\r\n
\r\n \r\n Go Back\r\n \r\n this.handleSubmit(false)}\r\n style={fullWidthButton ? styles.buttonMarginMobile : styles.buttonMargin}\r\n variant='outlined'\r\n loading={this.state.saveLoading}\r\n disabled={this.state.reduceValidation ? fullDisableSaveReduce : fullDisableSave}\r\n fullWidth={fullWidthButton}\r\n >\r\n Save {LOC}\r\n \r\n this.handleSubmit(true)}\r\n style={fullWidthButton ? styles.buttonMarginMobile : {}}\r\n variant='contained'\r\n color='primary'\r\n loading={this.state.submitLoading}\r\n disabled={this.state.reduceValidation ? fullDisableSaveReduce : fullDisableSave}\r\n fullWidth={fullWidthButton}\r\n >\r\n Save & Continue\r\n \r\n
\r\n {!enrollmentSubmitted &&\r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n};\r\n\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (ElectionContainer as any).propTypes = {\r\n plans: PropTypes.arrayOf(PlanPropType),\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n employee: EmployeePropType,\r\n planCosts: PropTypes.arrayOf(CostCalculationPropType)\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const employee = state.employee.list.find(emp => emp.id === ownProps.employeeId)!;\r\n const settings = state.settings.values;\r\n const plans = state.plan.list.filter(plan => (plan.lineOfCoverageId === ownProps.lineOfCoverage));\r\n const allPlans = state.plan.list;\r\n const isEnrollmentConfirmed = state.enrollment.setupCompletedOn ? true : false;\r\n const planCosts = employee ? state.costCalculation.list.filter(calc => {\r\n return calc.enrolleeId === employee.id && plans.some(_plan => _plan.id === calc.planId);\r\n }) : [];\r\n\r\n const existingCoverageValues = getFormValues(existingCoverageForm)(state) as FormDataExistingCoverage;\r\n const isExistingCoverageValid = isValid(existingCoverageForm)(state);\r\n const isExistingCoverageMissingKeyFields = Object.keys(getFormSyncErrors(existingCoverageForm)(state)).length !== 0;\r\n const isAmericanPublicLifeValid = isValid(americanPublicLifeBrochureForm)(state);\r\n\r\n const subscriberFormValues = getFormValues(subscriberForm)(state) as subscriberFormData;\r\n const basicLifePreviousAmountValues = getFormValues(basicLifePreviousAmountForm)(state) as basicLifePreviousAmountData;\r\n const americanPublicLifeValues = getFormValues(americanPublicLifeBrochureForm)(state) as americanPublicLifeFormData;\r\n const lifeBenefitAmountValues = getFormValues(lifeBenefitAmountForm)(state) as lifeBenefitAmountFormData;\r\n\r\n const replacementCoverageQuestionsForm = getFormValues(REPLACEMENT_QUESTIONS)(state) as PlanQuestionsData;\r\n const knockOutQuestionsForm = getFormValues(KNOCKOUT_QUESTIONS)(state) as PlanQuestionsData;\r\n const medicareQuestionsForm = getFormValues(MEDICARE_QUESTIONS)(state) as PlanQuestionsData;\r\n const majorMedicalCoverageQuestionsForm = getFormValues(MAJOR_MEDICAL_COVERAGE_QUESTIONS)(state) as PlanQuestionsData;\r\n const specifiedDiseaseQuestionsForm = getFormValues(SPECIFIED_DISEASE_QUESTIONS)(state) as PlanQuestionsData;\r\n\r\n const renewalQuestionsFormValues = getFormValues(RENEWAL_QUESTIONS)(state) as RenewalQuestionsFormData;\r\n\r\n return {\r\n formInvalid: isInvalid(RENEWAL_QUESTIONS)(state) || isInvalid(PRIOR_COVERAGE)(state),\r\n allPlans,\r\n plans,\r\n employee,\r\n enrollmentState: state.enrollment,\r\n company: state.enrollment.company,\r\n settings,\r\n planCosts,\r\n existingCoverageValues,\r\n isExistingCoverageValid,\r\n isExistingCoverageMissingKeyFields,\r\n isEnrollmentConfirmed,\r\n subscriberFormValues,\r\n basicLifePreviousAmountValues,\r\n lifeBenefitAmountValues,\r\n americanPublicLifeValues,\r\n isAmericanPublicLifeValid,\r\n majorMedicalCoverageValidation: selectPlanQuestionsState(MAJOR_MEDICAL_COVERAGE_QUESTIONS)(state),\r\n majorMedicalCoverageQuestionsForm,\r\n knockoutAnswersValidation: selectPlanQuestionsState(KNOCKOUT_QUESTIONS)(state),\r\n knockOutQuestionsForm,\r\n medicareValidation: selectPlanQuestionsState(MEDICARE_QUESTIONS)(state),\r\n medicareQuestionsForm,\r\n specifiedDiseaseValidation: selectPlanQuestionsState(SPECIFIED_DISEASE_QUESTIONS)(state),\r\n specifiedDiseaseQuestionsForm,\r\n replacementCoverageValidation: selectPlanReplacementCoverageQuestionsState(REPLACEMENT_QUESTIONS)(state),\r\n replacementCoverageValues: replacementCoverageQuestionsForm,\r\n renewalQuestionsFormValues\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n createElection: election => dispatch(createElection(ownProps.companyId, ownProps.enrollmentId, election)),\r\n updateElection: election => dispatch(updateElection(ownProps.companyId, ownProps.enrollmentId, election)),\r\n updateEmployee: employee => dispatch(updateEmployee(ownProps.companyId, ownProps.enrollmentId, employee)),\r\n calculateCosts: () => dispatch(calculateCosts(undefined)),\r\n reCalculateCosts: (employee, planId?: string, amount?: number) => dispatch(reCalculateCosts({ employee: employee, planId: planId, lifebenefitAmount: amount })),\r\n\r\n updateExistingCoverageFormValues: (field: string, value: any) => (dispatch(change(existingCoverageForm, field, value))),\r\n updateReplacementCoverageFormValues: (field: string, value: any) => (dispatch(change(REPLACEMENT_QUESTIONS, field, value))),\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n ...commonStyles,\r\n buttonMargin: {\r\n margin: 4\r\n },\r\n buttonMarginMobile: {\r\n margin: '15px 4px'\r\n },\r\n cancelButtonMobile: {\r\n margin: '15px 4px',\r\n paddingRight: 15\r\n },\r\n dependentHeader: {\r\n marginLeft: 33,\r\n marginTop: -24,\r\n fontSize: 18,\r\n color: 'black',\r\n marginBottom: 10\r\n },\r\n dependentSubheader: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n },\r\n existingCoverage: {\r\n color: palette.grey.text,\r\n fontSize: 24\r\n },\r\n firstLetterCap: {\r\n textTransform: 'capitalize'\r\n },\r\n formButtons: {\r\n textAlign: 'right'\r\n },\r\n greyText: {\r\n color: palette.grey.text\r\n },\r\n header: {\r\n color: palette.grey.text,\r\n fontSize: 24,\r\n marginTop: 25,\r\n paddingBottom: 30\r\n },\r\n link: {\r\n color: palette.blue.link,\r\n textDecoration: 'underline',\r\n fontSize: 14,\r\n marginTop: -10,\r\n marginBottom: 20\r\n },\r\n messageCard: {\r\n marginBottom: 15\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15,\r\n marginBottom: 15,\r\n fontFamily: 'Roboto'\r\n },\r\n saveButtonMargin: {\r\n margin: \"4px 0 4px 4px\"\r\n },\r\n saveDisclaimer: {\r\n fontStyle: 'italic',\r\n textAlign: 'right',\r\n fontSize: 15\r\n },\r\n text: {\r\n fontSize: 14,\r\n color: palette.grey.text\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary,\r\n fontSize: 24,\r\n fontStyle: 'normal',\r\n marginRight: 10\r\n },\r\n warningText: {\r\n color: palette.grey.text,\r\n fontStyle: 'italic',\r\n fontSize: 16,\r\n marginBottom: 15\r\n },\r\n warningTitle: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginBottom: 5\r\n },\r\n warningSubtext: {\r\n marginLeft: 33\r\n }\r\n};\r\n\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps),\r\n withWidth()\r\n)(ElectionContainer)","import Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport AbandonChangesOption from 'components/common/AbandonChangesOption';\r\nimport SaveButton from 'components/common/save_button';\r\nimport EmployeeAdditionalInformationForm, { FieldArrayData, FormData } from 'components/forms/employee_additional_info_form';\r\nimport * as PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { initialize, isDirty, isSubmitting, isValid, submit, getFormSyncErrors, FormErrors, FieldArray } from 'redux-form';\r\nimport { isEnrollmentSubmitted } from 'utility';\r\nimport { getEnrolleeConfigurationTypes, hasRenewalAdditionalInfo, hasAdditionalInfo, enrollmentHasTobaccoUser, getEnrollees } from 'utility/employee_utils';\r\nimport { calculateAge } from 'utility/time_utils';\r\nimport { FORM_NAME as EMPLOYEE_ADDITIONAL_INFO } from '../../components/forms/employee_additional_info_form';\r\nimport { updateEmployee } from '../../redux/actions';\r\nimport { convertDependentToDependentDTO, convertEmployeeToEmployeeDTO, RenewalChangeDTO, Employee, EmployeeDTO, EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentReducerState, Plan, PlanPropType, Election } from '../../redux/reducers';\r\nimport { ReduxState } from '../../redux/store';\r\nimport { styles as commonFormStyles } from '../../utility/common_styles';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\n\r\ninterface ComponentProps {\r\n employeeId: string;\r\n companyId: string;\r\n enrollmentId: string;\r\n onBackButtonClicked: () => void;\r\n onDone: (jumpToNextStep?: boolean) => void;\r\n endDateIsInFuture: boolean;\r\n endDateMessage: string;\r\n}\r\n\r\ninterface MappedProps {\r\n employeeState: EmployeeReducerState;\r\n enrollment: EnrollmentReducerState;\r\n allPlans: Plan[];\r\n submitting: boolean;\r\n dirty: boolean;\r\n valid: boolean;\r\n}\r\n\r\ninterface DispatchProps {\r\n updateEmployee: (employee: EmployeeDTO) => Promise;\r\n submitForm: () => void;\r\n resetForm: (formData: FormData) => void;\r\n}\r\n\r\ntype Props = MappedProps & DispatchProps & ComponentProps & WithWidth;\r\n\r\nconst EmployeeAdditionalInformation = React.memo((props: Props) => {\r\n const employee = React.useMemo(() => {\r\n return props.employeeState.list.find(emp => emp.id === props.employeeId)!\r\n }, [props.employeeId, props.employeeState.list]);\r\n const [loading, setLoading] = React.useState(false);\r\n const [continueToNextPage, setContinueToNextPage] = React.useState(false);\r\n\r\n const initialValues = React.useMemo(() => {\r\n const empRenewal = employee.renewalChangeInfo && employee.renewalChangeInfo.find(a => a.enrolleeId == employee.id);\r\n\r\n const values: FormData = {\r\n list: [\r\n {\r\n ...employee.additionalInfo,\r\n id: employee.id,\r\n age: employee.age,\r\n fullName: employee.fullName,\r\n lastName: employee.lastName,\r\n tobaccoUse: employee.tobaccoUse,\r\n isSpouse: false,\r\n isChild: false,\r\n marriageDate: employee.marriageDate,\r\n type: 'employee',\r\n addressChange: empRenewal && empRenewal.addressChange ? empRenewal.addressChange : false,\r\n contactChange: empRenewal && empRenewal.contactChange ? empRenewal.contactChange : false,\r\n nameChange: empRenewal && empRenewal.nameChange ? empRenewal.nameChange : false\r\n\r\n } as FieldArrayData\r\n ],\r\n isAnyCarrierRenewal: employee.elections.some(elec => elec.renewalInfo && elec.renewalInfo.renewal && elec.renewalInfo.renewal.carrierRenewal == true)\r\n\r\n };\r\n\r\n employee.dependents.forEach(dep => {\r\n const depRenewal = employee.renewalChangeInfo && employee.renewalChangeInfo.find(a => a.enrolleeId == dep.id);\r\n values.list.push({\r\n ...dep.additionalInfo,\r\n id: dep.id,\r\n age: dep.dateOfBirth ? calculateAge(dep.dateOfBirth) : undefined,\r\n fullName: dep.fullName,\r\n lastName: dep.lastName,\r\n isSpouse: dep.isSpouse,\r\n isChild: !dep.isSpouse,\r\n tobaccoUse: dep.tobaccoUse,\r\n maidenName: dep.maidenName,\r\n differentLastNameReason: dep.differentLastNameReason,\r\n type: 'dependent',\r\n addressChange: depRenewal && depRenewal.addressChange ? depRenewal.addressChange : false,\r\n contactChange: depRenewal && depRenewal.contactChange ? depRenewal.contactChange : false,\r\n nameChange: depRenewal && depRenewal.nameChange ? depRenewal.nameChange : false\r\n } as FieldArrayData)\r\n });\r\n\r\n\r\n values.list.forEach(val => {\r\n if (val.student === undefined) {\r\n val.student = getLookupId('NOTASTUDENT', LOOKUP_TYPE_IDS.studentStatus);\r\n }\r\n if (val.medicareEligibility === undefined) {\r\n val.medicareEligibility = getLookupId('OVER65', LOOKUP_TYPE_IDS.medicareEligibilityStatus);\r\n }\r\n\r\n });\r\n\r\n return values\r\n }, [employee]);\r\n\r\n const saveAdditionalInfo = React.useCallback((goToNextStep: boolean) => {\r\n setContinueToNextPage(goToNextStep)\r\n setTimeout(() => props.submitForm(), 0)\r\n }, []);\r\n\r\n const enrollmentSubmitted = isEnrollmentSubmitted(employee, props.enrollment);\r\n const handleSubmit = async (formValues: FormData) => {\r\n if (enrollmentSubmitted) return;\r\n function cleanAttributes(obj: FieldArrayData) {\r\n delete obj.type;\r\n delete obj.fullName;\r\n delete obj.id;\r\n delete obj.age;\r\n delete obj.tobaccoUse;\r\n delete obj.addressChange;\r\n delete obj.contactChange;\r\n delete obj.nameChange;\r\n\r\n // Force boolean values to not be undefined. Necessary for correct EPS Validation\r\n obj.disability = !!obj.disability;\r\n obj.incapacitated = !!obj.incapacitated;\r\n obj.tobaccoUsedNicotine = !!obj.tobaccoUsedNicotine;\r\n obj.tobaccoUsedeCigarette = !!obj.tobaccoUsedeCigarette;\r\n obj.tobacco21UsedTobacco = !!obj.tobacco21UsedTobacco;\r\n obj.medicarePartAEnrolled = !!obj.medicarePartAEnrolled;\r\n obj.medicarePartAIneligible = !!obj.medicarePartAIneligible;\r\n obj.medicarePartBEnrolled = !!obj.medicarePartBEnrolled;\r\n obj.medicarePartBIneligible = !!obj.medicarePartBIneligible;\r\n obj.medicarePartDEnrolled = !!obj.medicarePartDEnrolled;\r\n obj.medicarePartDIneligible = !!obj.medicarePartDIneligible;\r\n obj.coordinationPeriod = !!obj.coordinationPeriod;\r\n obj.disabledCurrentlyAtWork = !!obj.disabledCurrentlyAtWork;\r\n obj.disabilityCurrentRenalDisease = !!obj.disabilityCurrentRenalDisease;\r\n obj.socialSecurityDisabilityInsurance = !!obj.socialSecurityDisabilityInsurance;\r\n\r\n if (obj.incapacitated)\r\n obj.disability = true;\r\n }\r\n\r\n const renewalChangeInfo: RenewalChangeDTO[] = [];\r\n const isAnyCarrierRenewal = employee.elections.some(elec => elec.renewalInfo && elec.renewalInfo.renewal && elec.renewalInfo.renewal.carrierRenewal == true);\r\n {\r\n isAnyCarrierRenewal && [...formValues.list].forEach(obj => {\r\n renewalChangeInfo.push({\r\n enrolleeId: obj.id,\r\n addressChange: obj.addressChange,\r\n contactChange: obj.contactChange,\r\n nameChange: obj.nameChange,\r\n fullName: obj.fullName,\r\n personalInfoChanged: false,\r\n enrolleeType: obj.isSpouse || obj.isChild ? getLookupId('DEPENDENTID', LOOKUP_TYPE_IDS.enrolleeType).toString() : getLookupId('EMPLOYEEID', LOOKUP_TYPE_IDS.enrolleeType).toString()\r\n })\r\n })\r\n }\r\n\r\n const employeeAdditionalInformation = { ...formValues.list[0] };\r\n\r\n cleanAttributes(employeeAdditionalInformation);\r\n const updatedEmployee: Employee = {\r\n ...employee,\r\n marriageDate: employeeAdditionalInformation ? employeeAdditionalInformation.marriageDate : undefined,\r\n additionalInfo: {\r\n ...employeeAdditionalInformation,\r\n isMedicareEligible: employeeAdditionalInformation ? employeeAdditionalInformation.isMedicareEligible : undefined,\r\n medicareEligibility: employeeAdditionalInformation && employeeAdditionalInformation.isMedicareEligible ? employeeAdditionalInformation.medicareEligibility : undefined\r\n },\r\n renewalChangeInfo: renewalChangeInfo\r\n }\r\n const updatedEmployeeDTO = {\r\n ...convertEmployeeToEmployeeDTO(updatedEmployee),\r\n dependents: employee.dependents.map(dep => {\r\n const depObj = dep;\r\n const dependentIndex = formValues.list.findIndex(x => x.id === dep.id);\r\n if (dependentIndex != -1) {\r\n const dependentAdditionalInfo = { ...formValues.list[dependentIndex] }\r\n cleanAttributes(dependentAdditionalInfo);\r\n depObj.maidenName = dependentAdditionalInfo.maidenName;\r\n depObj.differentLastNameReason = dependentAdditionalInfo.differentLastNameReason;\r\n depObj.additionalInfo = dependentAdditionalInfo;\r\n depObj.additionalInfo.medicareEligibility = depObj.additionalInfo.isMedicareEligible ? depObj.additionalInfo.medicareEligibility : undefined\r\n }\r\n return convertDependentToDependentDTO(depObj);\r\n })\r\n } as EmployeeDTO;\r\n\r\n setLoading(true);\r\n await props.updateEmployee(updatedEmployeeDTO);\r\n setLoading(false);\r\n props.resetForm(formValues);\r\n props.onDone(continueToNextPage);\r\n }\r\n\r\n const configurationTypes = getEnrolleeConfigurationTypes(props.allPlans, employee.elections, employee.id);\r\n const configurationTypeSet = configurationTypes[employee.id] || new Set();\r\n const touchForm = employee.hasAdditionalInfo && !!employee.lastUpdatedByCurrentUser;\r\n const fullWidthButton = props.width === 'xs';\r\n\r\n let enrollees = getEnrollees(employee);\r\n const enrolleesIds = enrollees.map(e => e.id);\r\n const hasTobaccoUser = enrollmentHasTobaccoUser(employee, enrolleesIds);\r\n const isSpouse = employee.dependents.find(i => i.isSpouse) ? true : false;\r\n const isChild = employee.dependents.find(i => !i.isSpouse) ? true : false;\r\n const isChildLastNameDiffFound = employee.dependents.find(i => i.lastName != employee.lastName) ? true : false;\r\n const isRenewalAdditionalInfo = employee.renewalChangeInfo && employee.renewalChangeInfo.length > 0;\r\n const hasRenewalInfo = hasRenewalAdditionalInfo(configurationTypes) && isRenewalAdditionalInfo;\r\n const hasAdditionalInfos = hasAdditionalInfo(configurationTypes, hasTobaccoUser, isSpouse, isChild, isChildLastNameDiffFound);\r\n const show = hasAdditionalInfos || hasRenewalInfo;\r\n\r\n if (show)\r\n return (\r\n
\r\n Additional Information\r\n
\r\n Based on the plans you selected, we need some more information about you and your dependents.\r\n \r\n
\r\n\r\n {!props.endDateIsInFuture &&\r\n
\r\n {props.endDateMessage}\r\n
\r\n }\r\n\r\n
\r\n
\r\n \r\n Go Back\r\n \r\n saveAdditionalInfo(false)}\r\n style={fullWidthButton ? commonFormStyles.guidedEnrollmentButtonMarginMobile : commonFormStyles.guidedEnrollmentButtonMargin}\r\n variant='outlined'\r\n loading={props.submitting || loading}\r\n disabled={enrollmentSubmitted || employee.isEmployeeWaiving}\r\n fullWidth={fullWidthButton}\r\n >\r\n Save Additional Information\r\n \r\n saveAdditionalInfo(true)}\r\n loading={props.submitting || loading}\r\n disabled={enrollmentSubmitted || employee.isEmployeeWaiving}\r\n variant='contained'\r\n color='primary'\r\n style={commonFormStyles.guidedEnrollmentButtonMargin}\r\n fullWidth={fullWidthButton}\r\n >\r\n Save & Continue\r\n \r\n
\r\n {!enrollmentSubmitted &&\r\n \r\n }\r\n\r\n
\r\n );\r\n else\r\n return ();\r\n\r\n});\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (EmployeeAdditionalInformation as any).propTypes = {\r\n employeeState: EmployeeReducerStatePropType,\r\n allPlans: PropTypes.arrayOf(PlanPropType)\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n const planState = state.plan.list;\r\n const syncErrors = getFormSyncErrors(EMPLOYEE_ADDITIONAL_INFO)(state) as any;\r\n const valid = isValid(EMPLOYEE_ADDITIONAL_INFO)(state) &&\r\n (!syncErrors || !syncErrors.list || !syncErrors.list.find((i: any) => i));\r\n return {\r\n employeeState: state.employee,\r\n enrollment: state.enrollment,\r\n allPlans: planState,\r\n submitting: isSubmitting(EMPLOYEE_ADDITIONAL_INFO)(state),\r\n dirty: isDirty(EMPLOYEE_ADDITIONAL_INFO)(state),\r\n valid,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n submitForm: () => dispatch(submit(EMPLOYEE_ADDITIONAL_INFO)),\r\n updateEmployee: (employee) => dispatch(updateEmployee(ownProps.companyId, ownProps.enrollmentId, employee, 'Additional Info saved')),\r\n resetForm: (data: FormData) => dispatch(initialize(EMPLOYEE_ADDITIONAL_INFO, data))\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n saveDisclaimer: {\r\n fontStyle: 'italic',\r\n textAlign: 'right',\r\n fontSize: 15\r\n },\r\n};\r\n\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps),\r\n withWidth(),\r\n)(EmployeeAdditionalInformation)","import { Button, Typography } from \"@material-ui/core\";\r\nimport { WithWidth } from '@material-ui/core/withWidth';\r\nimport AbandonChangesOption from \"components/common/AbandonChangesOption\";\r\nimport SaveButton from 'components/common/save_button';\r\nimport React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport { compose } from \"recompose\";\r\nimport { initialize, isDirty, isSubmitting, isValid, submit } from \"redux-form\";\r\nimport { updateEmployee } from 'redux/actions';\r\nimport { AcknowledgedDocument, AcknowledgmentDocument, convertEmployeeToEmployeeDTO, Employee, EmployeeDTO, EmployeeReducerState, EnrollmentReducerState, Plan } from \"redux/reducers\";\r\nimport { ReduxState } from \"redux/store\";\r\nimport { getAcknowledgmentDocuments } from \"utility/employee_utils\";\r\nimport { isEnrollmentSubmitted } from \"utility/enrollment_utils\";\r\nimport EmployeeDocumentAcknowledgmentForm, { FieldArrayData, FormData, FORM_NAME as EMPLOYEE_ACKNOWLEDGED_DOCUMENTS } from '../../components/forms/employee_document_acknowledgment_form';\r\nimport { styles as commonFormStyles } from '../../utility/common_styles';\r\n\r\ninterface ComponentProps {\r\n employeeId: string;\r\n companyId: string;\r\n enrollmentId: string;\r\n onBackButtonClicked: () => void;\r\n onDone: (jumpToNextStep?: boolean) => void;\r\n endDateIsInFuture: boolean;\r\n endDateMessage: string;\r\n}\r\n\r\ninterface MappedProps {\r\n employeeState: EmployeeReducerState;\r\n enrollmentState: EnrollmentReducerState;\r\n allPlans: Plan[];\r\n submitting: boolean;\r\n dirty: boolean;\r\n valid: boolean;\r\n}\r\n\r\ninterface DispatchProps {\r\n updateEmployee: (employee: EmployeeDTO) => Promise;\r\n submitForm: () => void;\r\n resetForm: (formData: FormData) => void;\r\n}\r\n\r\ntype Props = ComponentProps & DispatchProps & MappedProps & WithWidth;\r\n\r\nconst EmployeeDocumentAcknowledgment = React.memo((props: Props) => {\r\n const employee = React.useMemo(() => {\r\n return props.employeeState.list.find(emp => emp.id === props.employeeId)!\r\n }, [props.employeeId, props.employeeState.list]);\r\n const [loading, setLoading] = React.useState(false);\r\n const [continueToNextPage, setContinueToNextPage] = React.useState(false);\r\n const reduceValidation = props.enrollmentState.reduceValidation;\r\n\r\n const createInitialValues = () => {\r\n const employee = props.employeeState.list.find(x => x.id === props.employeeId) || {} as Employee;\r\n const existingDocuments = new Set();\r\n if (employee) {\r\n if (employee.acknowledgedDocuments) {\r\n employee.acknowledgedDocuments.forEach(document => {\r\n existingDocuments.add(document.documentFileId);\r\n })\r\n }\r\n }\r\n\r\n let documentList = getAcknowledgmentDocuments(employee, props.allPlans)\r\n\r\n const values: FormData = {\r\n list: [],\r\n reduceValidation: props.enrollmentState.reduceValidation\r\n }\r\n documentList.forEach((document: AcknowledgmentDocument) => {\r\n const documentId = document.acknowledgmentDocumentId;\r\n const documentUrl = document.documentUrl;\r\n const documentFileId = document.fileId;\r\n values.list.push({\r\n acknowledgmentId: documentId,\r\n documentLink: documentUrl,\r\n title: document.documentTitle,\r\n isAcknowledged: reduceValidation ? true : existingDocuments.has(documentFileId),\r\n description: document.description,\r\n fileId: documentFileId,\r\n } as FieldArrayData)\r\n })\r\n return values;\r\n };\r\n\r\n const saveDocuments = React.useCallback((goToNextStep: boolean) => {\r\n setContinueToNextPage(goToNextStep)\r\n setTimeout(() => props.submitForm(), 0)\r\n }, [])\r\n const enrollmentSubmitted = isEnrollmentSubmitted(employee, props.enrollmentState);\r\n\r\n const handleSubmit = async (formValues: FormData) => {\r\n if (enrollmentSubmitted) return;\r\n const employeeAcknowledgedDocuments = [] as AcknowledgedDocument[];\r\n formValues.list.forEach((value: FieldArrayData) => {\r\n let acknowledgedDocument = {\r\n isAcknowledged: value.isAcknowledged,\r\n acknowledgedDocumentId: value.acknowledgmentId,\r\n documentLink: value.documentLink,\r\n documentFileId: value.fileId\r\n }\r\n if(acknowledgedDocument.isAcknowledged){\r\n employeeAcknowledgedDocuments.push(acknowledgedDocument);\r\n }\r\n });\r\n\r\n const updatedEmployee: Employee = {\r\n ...employee,\r\n acknowledgedDocuments: employeeAcknowledgedDocuments\r\n }\r\n const updatedEmployeeDTO = convertEmployeeToEmployeeDTO(updatedEmployee);\r\n setLoading(true);\r\n await props.updateEmployee(updatedEmployeeDTO);\r\n setLoading(false);\r\n props.resetForm(formValues);\r\n props.onDone(continueToNextPage)\r\n }\r\n\r\n const touchForm = employee.hasAdditionalInfo && !!employee.lastUpdatedByCurrentUser;\r\n const initialValues = createInitialValues();\r\n\r\n const fullWidthButton = props.width === 'xs';\r\n return (\r\n
\r\n Document Review\r\n
\r\n Please review the following documents\r\n \r\n
\r\n\r\n {!props.endDateIsInFuture &&\r\n
\r\n {props.endDateMessage}\r\n
\r\n }\r\n
\r\n
\r\n \r\n Go Back\r\n \r\n saveDocuments(false)}\r\n style={fullWidthButton ? commonFormStyles.guidedEnrollmentButtonMarginMobile : commonFormStyles.guidedEnrollmentButtonMargin}\r\n variant='outlined'\r\n loading={props.submitting || loading}\r\n disabled={ enrollmentSubmitted || employee.isEmployeeWaiving }\r\n fullWidth={fullWidthButton}\r\n >\r\n Save Documents\r\n \r\n saveDocuments(true)}\r\n loading={props.submitting || loading}\r\n disabled={ enrollmentSubmitted || employee.isEmployeeWaiving }\r\n variant='contained'\r\n color='primary'\r\n style={commonFormStyles.guidedEnrollmentButtonMargin}\r\n fullWidth={fullWidthButton}\r\n >\r\n Save & Continue\r\n \r\n
\r\n\r\n {!enrollmentSubmitted &&\r\n \r\n }\r\n
\r\n );\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n const allPlans = state.plan.list;\r\n return {\r\n employeeState: state.employee,\r\n allPlans,\r\n enrollmentState: state.enrollment,\r\n submitting: isSubmitting(EMPLOYEE_ACKNOWLEDGED_DOCUMENTS)(state),\r\n dirty: isDirty(EMPLOYEE_ACKNOWLEDGED_DOCUMENTS)(state),\r\n valid: isValid(EMPLOYEE_ACKNOWLEDGED_DOCUMENTS)(state)\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n submitForm: () => dispatch(submit(EMPLOYEE_ACKNOWLEDGED_DOCUMENTS)),\r\n updateEmployee: (employee) => dispatch(updateEmployee(ownProps.companyId, ownProps.enrollmentId, employee, 'Document Review saved')),\r\n resetForm: (data: FormData) => dispatch(initialize(EMPLOYEE_ACKNOWLEDGED_DOCUMENTS, data))\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n saveDisclaimer: {\r\n fontStyle: 'italic',\r\n textAlign: 'right',\r\n fontSize: 15\r\n },\r\n};\r\n\r\nexport default compose(connect(mapStateToProps, mapDispatchToProps)\r\n)(EmployeeDocumentAcknowledgment);","import DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { Button } from '@material-ui/core';\r\n\r\ninterface Props {\r\n open: boolean;\r\n onCancel: () => void;\r\n onConfirm: () => void;\r\n}\r\n\r\nconst MaritalStatusChangeDialog = (props: Props) => {\r\n\r\n const {open, onCancel, onConfirm} = props;\r\n\r\n return (\r\n \r\n \r\n \r\n Changing your marital status, or adding or removing dependents will remove any elections you have already saved. Do you wish to continue?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MaritalStatusChangeDialog;","import DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { Button } from '@material-ui/core';\r\n\r\ninterface Props {\r\n open: boolean;\r\n onCancel: () => void;\r\n onConfirm: () => void;\r\n}\r\n\r\nconst EmployeeEligibilityChangeDialog = (props: Props) => {\r\n\r\n const {open, onCancel, onConfirm} = props;\r\n\r\n return (\r\n \r\n \r\n \r\n Marking an employee as ineligible will remove any elections made for the employee already. Do you wish to continue?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default EmployeeEligibilityChangeDialog;","import withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport AbandonChangesOption from 'components/common/AbandonChangesOption';\r\nimport { FieldData as ContactInformationFieldData } from 'components/forms/contact_info_fields';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { isInvalid, submit, isDirty, isSubmitting, formValueSelector, initialize } from 'redux-form';\r\nimport { AddressType, Plan, EnrollmentReducerState, PlanReducerState } from 'redux/reducers';\r\nimport { getDisabilityLOCS, getLifeLOCS, getLookupId, LOOKUP_TYPE_IDS, isEmployeeCobra, getLookupValue } from 'utility/lookup_utils';\r\nimport { compose } from 'recompose';\r\nimport SaveButton from '../../components/common/save_button';\r\nimport EmployeeUpsertForm, { FormData, FORM_NAME } from '../../components/forms/employee_upsert_form';\r\nimport { addEmployee, calculateCosts, fetchPlansForEmployee, updateEmployee, reCalculateCosts, displaySnackbar } from '../../redux/actions';\r\nimport { ContactInfo, convertEmployeeToEmployeeDTO, Dependent, DependentDTO, Employee, EmployeeDTO, EmployeeReducerState } from '../../redux/reducers';\r\nimport { ReduxState } from '../../redux/store';\r\nimport { isEnrollmentSubmitted } from 'utility/enrollment_utils';\r\nimport MaritalStatusChangeDialog from 'components/enrollment/marital_status_change_dialog'\r\nimport EmployeeEligibilityChangeDialog from 'components/enrollment/employee_eligibility_change_dialog'\r\n\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility/employee_utils';\r\nimport auth from 'utility/auth';\r\nimport { Election,ElectionDependent } from '../../redux/reducers/employee_reducer';\r\n\r\ninterface ComponentProps {\r\n employeeId: string;\r\n companyId: string;\r\n enrollmentId: string;\r\n onDone: () => void;\r\n endDateIsInFuture: boolean;\r\n endDateMessage: string;\r\n isEnrollmentConfirmed: boolean;\r\n isAllstateOffered: boolean;\r\n isAllstateCriticalOffered: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n employeeState: EmployeeReducerState;\r\n isLifeOrDisabilityMultiSalary: boolean;\r\n formInvalid: boolean;\r\n dirty: boolean;\r\n companyPayrollCycleId?: number;\r\n submitting: boolean;\r\n cobraStatus: boolean;\r\n maritalStatusId: number;\r\n enrollmentState: EnrollmentReducerState;\r\n planState: PlanReducerState;\r\n}\r\ninterface DispatchProps {\r\n addEmployee: (employee: EmployeeDTO) => Promise;\r\n updateEmployee: (employee: EmployeeDTO) => Promise;\r\n fetchPlansForEmployee: (employeeId: string) => Promise;\r\n submitForm: () => void;\r\n initialize: (data: FormData) => void;\r\n calculateCosts: () => Promise;\r\n reCalculateCosts: (employee: Employee) => Promise;\r\n showValidationAlert: () => void;\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps & DispatchProps & WithWidth;\r\n\r\nconst EmployeeUpsert = (props: Props) => {\r\n\r\n const [loading, setLoading] = React.useState(false);\r\n const [continueToNextPage, setContinueToNextPage] = React.useState(false);\r\n const [showDepElectionWarning, setShowDepElectionWarning] = React.useState(false);\r\n const [showEmployeeEligibilityWarning, setShowEmployeeEligibilityWarning] = React.useState(false);\r\n\r\n const [dependentChanged, setDependentChanged] = React.useState(false);\r\n const [userSubmitted, setUserSubmitted] = React.useState(false);\r\n const [employeeId, setEmployeeId] = React.useState(props.employeeId);\r\n\r\n const employee = props.employeeState.list.find(emp => emp.id === props.employeeId);\r\n const currentEligibility = employee ? employee.isInEligible : false;\r\n const currentWaiving = employee ? employee.isEmployeeWaiving : false;\r\n const [isEmployeeInEligible, setIsEmployeeInEligible] = React.useState(currentEligibility);\r\n const [isEmployeeWaiving, setIsEmployeeWaiving] = React.useState(currentWaiving);\r\n\r\n const initialValues = React.useMemo(() => {\r\n const reduceValidation = props.enrollmentState.reduceValidation;\r\n\r\n const homeAddress = employee && employee.contactInformation.find(c => c.addressType === AddressType.Home);\r\n const spouseMinimumAge = props.enrollmentState.spouseMinimumAge==undefined?0:props.enrollmentState.spouseMinimumAge; \r\n const mailingAddress = employee && employee.contactInformation.find(c => c.addressType === AddressType.Mail);\r\n const email = employee && employee.contactInformation && employee.contactInformation.length > 0 ? employee.contactInformation[0].email : '';\r\n const emptyAddress = { streetAddress1: '', city: '', county: '', stateId: undefined, zipCode: '', email: '', phone: '', addressType: AddressType.Home } as ContactInfo\r\n const contactInformation: ContactInformationFieldData[] = [\r\n (employee && homeAddress) ? { ...homeAddress, addressType: AddressType.Home, sameasHome: employee.mailAddressSameAsHome } : ({ ...emptyAddress, sameasHome: true, email } as ContactInfo),\r\n (employee && mailingAddress) ? { ...mailingAddress, addressType: AddressType.Mail, sameasHome: employee.mailAddressSameAsHome } : { ...emptyAddress, addressType: AddressType.Mail, sameasHome: employee && employee.mailAddressSameAsHome, email } as ContactInfo\r\n ];\r\n\r\n const employmentStatusId = employee && employee.employmentStatusId ? employee.employmentStatusId : 137;\r\n const weeklyHours = employee && typeof (employee.weeklyHours) == \"number\" && employee.weeklyHours != 0 ? employee.weeklyHours : defaultHours(employmentStatusId);\r\n const payrollCycleId = employee && employee.payrollCycleId ? employee.payrollCycleId : props.companyPayrollCycleId;\r\n const maritalStatusId = employee && employee.maritalStatusId ? employee.maritalStatusId : props.maritalStatusId;\r\n\r\n const _initialValues: any = {\r\n ...employee,\r\n reduceValidation: reduceValidation,\r\n employmentStatusId,\r\n weeklyHours,\r\n payrollCycleId,\r\n maritalStatusId,\r\n contactInformation,\r\n spouseMinimumAge\r\n };\r\n\r\n return _initialValues;\r\n }, [props.companyPayrollCycleId, employee])\r\n\r\n const hasElectionsBeenMade = () => {\r\n return employee && employee.elections && employee.elections.length > 0;\r\n }\r\n\r\n const validateAndSubmit = (saveContinue: boolean) => {\r\n setUserSubmitted(true);\r\n if (props.formInvalid) {\r\n props.showValidationAlert()\r\n return;\r\n }\r\n if (isEmployeeInEligible) {\r\n setShowEmployeeEligibilityWarning(true);\r\n }\r\n else if (dependentChanged && hasElectionsBeenMade()) {\r\n setShowDepElectionWarning(true);\r\n }\r\n else {\r\n setShowDepElectionWarning(false);\r\n setShowEmployeeEligibilityWarning(false);\r\n setTimeout(() => props.submitForm(), 0);\r\n setContinueToNextPage(saveContinue);\r\n }\r\n\r\n }\r\n\r\n const processSubmit = async (formValues: FormData) => {\r\n\r\n const newEmployee = convertEmployeeToEmployeeDTO(formValues as any);\r\n newEmployee.electionStatusId = employee!.electionStatusId;\r\n const partnership = getLookupId('DOMESTICPARTNERSHIP', LOOKUP_TYPE_IDS.maritalStatus);\r\n const waivingOrIneligible = (!newEmployee.isEmployeeWaiving && !newEmployee.isInEligible);\r\n const seasonalOrUnion = (newEmployee.employmentStatusId == getLookupId('SEASONAL', LOOKUP_TYPE_IDS.employmentStatus) || newEmployee.employmentStatusId == getLookupId('UNION', LOOKUP_TYPE_IDS.employmentStatus));\r\n\r\n newEmployee.dependents = formValues.dependents.map(dep => {\r\n const contactInfo: ContactInfo | undefined = dep.addressSameAsEmployee ? newEmployee.contactInformation[0] : (dep.contactInformation ? dep.contactInformation[0] : undefined);\r\n if (dep.objectState !== 1)\r\n dep.objectState = 3;\r\n if (contactInfo) {\r\n contactInfo.addressType = AddressType.Home;\r\n }\r\n return {\r\n ...dep,\r\n id: dep.id || '',\r\n dateOfBirth: dep.dateOfBirth ? dep.dateOfBirth.startOf('day').format() : '',\r\n genderId: dep.genderId,\r\n contactInformation: contactInfo ? [contactInfo] : undefined,\r\n tobaccoUse: dep.tobaccoUse,\r\n isFosterChildPlaced: dep.isFosterChildPlaced,\r\n isPartnerEmployedAtSameCompnay: dep.isPartnerEmployedAtSameCompany,\r\n enrolledLinesOfCoverage: []\r\n } as DependentDTO\r\n });\r\n\r\n if (newEmployee.maritalStatusId !== partnership || !newEmployee.isPartnershipRegistered) {\r\n newEmployee.isPartnershipRegistered = false;\r\n }\r\n\r\n if (waivingOrIneligible && seasonalOrUnion) {\r\n newEmployee.employmentStatusId = getLookupId('FULLTIME', LOOKUP_TYPE_IDS.employmentStatus);\r\n }\r\n\r\n if (formValues.contactInformation.length > 0 && formValues.contactInformation[0].sameasHome) {\r\n newEmployee.contactInformation[1] = {\r\n ...newEmployee.contactInformation[0] as ContactInfo,\r\n addressType: AddressType.Mail\r\n };\r\n }\r\n\r\n let deletedDep: any;\r\n employee && employee.dependents.some(dep => {\r\n const check = !formValues.dependents.find(formDep => dep.id === formDep.id);\r\n if (check)\r\n deletedDep = { ...dep, objectState: 2 };\r\n return check\r\n });\r\n if (deletedDep) {\r\n const { dateOfBirth, fullName, ...deletedDepDTO } = deletedDep as Dependent;\r\n newEmployee.dependents.push({\r\n ...deletedDepDTO,\r\n dateOfBirth: dateOfBirth ? dateOfBirth.startOf('day').format() : '',\r\n additionalInfo: undefined\r\n });\r\n }\r\n\r\n try {\r\n setLoading(true)\r\n if (employee) {\r\n await props.updateEmployee(newEmployee)\r\n await props.fetchPlansForEmployee(newEmployee.id);\r\n await props.calculateCosts();\r\n if (continueToNextPage) {\r\n props.onDone();\r\n }\r\n else {\r\n props.initialize(formValues);\r\n }\r\n }\r\n else {\r\n await props.addEmployee(newEmployee);\r\n if (continueToNextPage) {\r\n props.onDone();\r\n }\r\n else {\r\n props.initialize(formValues);\r\n }\r\n }\r\n } finally {\r\n setLoading(false)\r\n }\r\n }\r\n\r\n const getElectedDependents = () => {\r\n\r\n let electedDependents : ElectionDependent[] = [];\r\n var employeesNotWaived = employee && employee.elections && employee.elections.length>0 ? employee.elections.filter(a => a.isWaived === false) : undefined;\r\n if (employeesNotWaived && employeesNotWaived.length > 0) {\r\n employeesNotWaived.forEach((election: Election) => {\r\n if (election.dependents.length > 0) {\r\n election.dependents.forEach((dep: ElectionDependent) => {\r\n if (!dep.isWaived)\r\n electedDependents.push(dep);\r\n });\r\n }\r\n });\r\n }\r\n return electedDependents;\r\n\r\n }\r\n const handleSaveClick = (submit: boolean) => {\r\n setShowDepElectionWarning(false)\r\n setShowEmployeeEligibilityWarning(false)\r\n setContinueToNextPage(submit);\r\n setTimeout(() => props.submitForm(), 0);\r\n }\r\n\r\n const onDependentChange = (depId?: string, operation?: 'ADD' | 'DELETE') => {\r\n if (employee) { //operation === 'DELETE' && \r\n const updatedEmployee = {\r\n ...employee,\r\n dependents: employee.dependents.map(dependent => ({\r\n ...dependent,\r\n enrolledLinesOfCoverage: dependent.id === depId ?\r\n [] : dependent.enrolledLinesOfCoverage\r\n }))\r\n };\r\n\r\n props.reCalculateCosts(updatedEmployee);\r\n\r\n //Show Dependent warning once dep is added or deleted\r\n setDependentChanged(true);\r\n }\r\n }\r\n\r\n let touchForm = false;\r\n if (userSubmitted) {\r\n touchForm = true;\r\n }\r\n else if (employee) {\r\n touchForm = !!employee.lastUpdatedByCurrentUser;\r\n }\r\n\r\n const fullWidthButton = props.width === 'xs';\r\n const isMultiSalary = props.isLifeOrDisabilityMultiSalary && !props.cobraStatus;\r\n const electionSubmittedOrCompleted = employee ? isEnrollmentSubmitted(employee, props.enrollmentState) : false;\r\n const shouldEnableInEligibleFlag = () => {\r\n if (auth.isUserEmployee())\r\n return false;\r\n\r\n return props.planState.configurationTypeSet\r\n ? props.planState.configurationTypeSet.has(CONFIGURATION_TYPE_IDS.AllowInEligibleEmployees)\r\n : false;\r\n };\r\n\r\n return (\r\n <>\r\n \r\n setShowDepElectionWarning(false)}\r\n onConfirm={() => handleSaveClick(true)}\r\n />\r\n setShowEmployeeEligibilityWarning(false)}\r\n onConfirm={() => handleSaveClick(true)}\r\n />\r\n
\r\n\r\n {!props.endDateIsInFuture &&\r\n
\r\n {props.endDateMessage}\r\n
\r\n }\r\n\r\n
\r\n
\r\n {!isEmployeeInEligible &&\r\n validateAndSubmit(false)}\r\n style={fullWidthButton ? styles.buttonMarginMobile : styles.buttonMargin}\r\n variant='outlined'\r\n loading={loading}\r\n disabled={loading || electionSubmittedOrCompleted}\r\n fullWidth={fullWidthButton}\r\n >\r\n {'Save Personal Information'}\r\n \r\n }\r\n validateAndSubmit(true)}\r\n style={fullWidthButton ? styles.buttonMarginMobile : {}}\r\n variant='contained'\r\n color='primary'\r\n loading={loading}\r\n disabled={loading || electionSubmittedOrCompleted}\r\n fullWidth={fullWidthButton}\r\n >\r\n {isEmployeeInEligible ? 'Save & Complete' : 'Save & Continue'}\r\n \r\n
\r\n
\r\n {(!electionSubmittedOrCompleted) &&\r\n validateAndSubmit(true)}\r\n isValid={!props.formInvalid}\r\n isDirty={props.dirty}\r\n isSubmitting={props.submitting}\r\n />\r\n }\r\n \r\n );\r\n}\r\n\r\nconst defaultHours = memoizeOne((employmentStatusId: number) => {\r\n const fullTimeId = getLookupId('FULLTIME', LOOKUP_TYPE_IDS.employmentStatus);\r\n if (employmentStatusId === fullTimeId) {\r\n return 40;\r\n }\r\n\r\n return 0;\r\n})\r\n\r\nconst _isMultiSalary = memoizeOne((plans: Plan[], employee: EmployeeReducerState, employeeId: string) => {\r\n const benefitAmountTypeId = getLookupId('MULTIPLEOFSALARY', LOOKUP_TYPE_IDS.benefitAmountType)\r\n let lifeLocs = getLifeLOCS().map(l => l.id);\r\n let disabilityLocs = getDisabilityLOCS().map(l => l.id);\r\n let lifeAndDisabLoc = [...lifeLocs, ...disabilityLocs];\r\n\r\n const emp = employee.list.find(emp => emp.employeeId === employeeId);\r\n if (emp)\r\n {\r\n\r\n let elections = emp.elections.filter(p => lifeAndDisabLoc.includes(p.lineOfCoverageId) && !p.isWaived).map(x=>x.planId);\r\n let lifeAndDisabilityPlans = plans.filter(p => lifeAndDisabLoc.includes(p.lineOfCoverageId) && elections.includes(p.id) );\r\n \r\n if (lifeAndDisabilityPlans.length > 0) {\r\n let plansWithMultiSalary = lifeAndDisabilityPlans.filter(p => p.benefitAmountTypeId && p.benefitAmountTypeId === benefitAmountTypeId)\r\n return plansWithMultiSalary.length > 0;\r\n }\r\n \r\n }\r\n return false;\r\n})\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n const employmentStatusId = formValueSelector(FORM_NAME)(state, 'employmentStatusId') as number;\r\n const cobraStatus = isEmployeeCobra(employmentStatusId);\r\n const maritalStatusId = formValueSelector(FORM_NAME)(state, 'maritalStatusId') as number;\r\n const employeeId = formValueSelector(FORM_NAME)(state, 'employeeId') as string;\r\n return {\r\n employeeState: state.employee,\r\n companyPayrollCycleId: state.enrollment.company.payrollCycleId,\r\n formInvalid: isInvalid(FORM_NAME)(state),\r\n isLifeOrDisabilityMultiSalary: _isMultiSalary(state.plan.list, state.employee, employeeId),\r\n dirty: isDirty(FORM_NAME)(state),\r\n submitting: isSubmitting(FORM_NAME)(state),\r\n cobraStatus,\r\n maritalStatusId,\r\n enrollmentState: state.enrollment,\r\n planState: state.plan\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n showValidationAlert: () => dispatch(displaySnackbar(\"Missing required information\", \"warning\", [])),\r\n submitForm: () => dispatch(submit(FORM_NAME)),\r\n initialize: (data) => dispatch(initialize(FORM_NAME, data)),\r\n addEmployee: (employee) => dispatch(addEmployee(ownProps.companyId, ownProps.enrollmentId, employee)),\r\n updateEmployee: (employee) => dispatch(updateEmployee(ownProps.companyId, ownProps.enrollmentId, employee, 'Personal Info saved')),\r\n fetchPlansForEmployee: (employeeId) => dispatch(fetchPlansForEmployee(ownProps.companyId, ownProps.enrollmentId, employeeId)),\r\n calculateCosts: () => dispatch(calculateCosts()),\r\n reCalculateCosts: (employee, planId?: string, amount?: number) => dispatch(reCalculateCosts({ employee: employee, planId: planId, lifebenefitAmount: amount })),\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n buttonMargin: {\r\n margin: 4\r\n },\r\n buttonMarginMobile: {\r\n margin: '15px 4px'\r\n },\r\n formButtons: {\r\n textAlign: 'right'\r\n },\r\n saveDisclaimer: {\r\n fontStyle: 'italic',\r\n textAlign: 'right',\r\n fontSize: 15\r\n },\r\n};\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps),\r\n withWidth()\r\n)(EmployeeUpsert);","import React from 'react';\r\nimport ScriptLoader from 'utility/external_script_loader';\r\nimport auth from 'utility/auth';\r\nimport logger from 'utility/logger_utility';\r\n\r\ninterface ComponentProp {\r\n loadScripts?: boolean;\r\n showContent?: boolean;\r\n contentId: RtpContentLocation;\r\n}\r\n\r\n\r\nexport enum RtpContentLocation {\r\n electionTop = 0,\r\n electionBottom = 1,\r\n electionLeft = 2,\r\n}\r\ntype Props = ComponentProp\r\n\r\nconst RtpContent = (props: Props) => {\r\n const win: any = window;\r\n const isLoggedIn = auth.isLoggedIn();\r\n const rtpAppKey = process.env.REACT_APP_RTP_KEY as string;\r\n const rtpMunchkinKey = process.env.REACT_APP_MUNCHKIN_KEY as string;\r\n const isRtpKeyConfigured = rtpAppKey !== \"\" && rtpAppKey !== null && rtpAppKey.length > 0;\r\n const contentIdLookup = [{\r\n id: RtpContentLocation.electionTop,\r\n contentId: \"oe-bm-election-content-top\"\r\n },\r\n {\r\n id: RtpContentLocation.electionBottom,\r\n contentId: \"oe-bm-election-content-bottom\"\r\n }, {\r\n id: RtpContentLocation.electionLeft,\r\n contentId: \"oe-bm-election-content-left\"\r\n }]\r\n\r\n const errorContentId = \"oe-bm-error-content\";\r\n const content = contentIdLookup.find(d => d.id === props.contentId);\r\n const contentId = content ? content.contentId : errorContentId;\r\n\r\n React.useEffect(() => {\r\n if (!isRtpKeyConfigured) {\r\n logger.log(\"RTP disabled as app key is not defined\");\r\n return;\r\n }\r\n if (!isLoggedIn) {\r\n logger.warn(\"RTP disabled as user is not logged in\");\r\n return;\r\n }\r\n\r\n\r\n if (!win.rtp) {\r\n //This function is provided by marketo\r\n (function (c, a, i, e) {\r\n c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments) };\r\n c[a].a = i; c[a].e = e;\r\n })(window, \"rtp\", rtpAppKey);\r\n }\r\n\r\n if (win.Munchkin) {\r\n logger.log(\"RTP scripts already loaded\");\r\n completeRtpSetup();\r\n return;\r\n }\r\n\r\n if (props.loadScripts === true) {\r\n logger.log(\"Loading RTP scripts.\");\r\n\r\n //These scripts don't change per env\r\n const scriptLoader = new ScriptLoader([\r\n \"https://munchkin.marketo.net/munchkin.js\",\r\n `https://sjrtp7-cdn.marketo.com/rtp-api/v1/rtp.js?aid=${rtpAppKey}`\r\n ]);\r\n\r\n scriptLoader.onLoad().then(() => {\r\n if (win.Munchkin) {\r\n completeRtpSetup();\r\n } else {\r\n logger.error(\"Failed to load Munchkin object\");\r\n }\r\n }, (src: string) => {\r\n logger.error(\"RTP scripts failed to load\", src);\r\n });\r\n }\r\n\r\n }, []);\r\n\r\n const completeRtpSetup = () => {\r\n if (!isLoggedIn || props.loadScripts !== true) {\r\n return;\r\n }\r\n win.Munchkin.init(rtpMunchkinKey);\r\n win.rtp('set', 'customVar1', auth.decodedJWT.enrollment_user_type);\r\n win.rtp('send', 'view');\r\n win.rtp('get', 'campaign', true);\r\n win.rtp('get', 'visitor', function (x: any) {\r\n logger.log(\"visitor\", x);\r\n })\r\n logger.log(\"RTP variables set\");\r\n }\r\n if (isRtpKeyConfigured) {\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n );\r\n}\r\n\r\nexport default RtpContent;","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst Reopen = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n\r\n );\r\n};\r\n\r\nexport default Reopen;","import { Divider, Grid, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport { AddressType, ContactInfo } from '../../redux/reducers';\r\nimport { formatPhone, formatZip } from '../../utility/form_formatter';\r\nimport { getStates } from '../../utility/lookup_utils';\r\n\r\ninterface Props extends ContactInfo { }\r\n\r\nconst ContactInfoCard = (props: Props) => {\r\n const noValueDefault = '--';\r\n const contactInfo = (contact: ContactInfo) => {\r\n if (contact === undefined) {\r\n return {\r\n address: noValueDefault,\r\n cityStateZip: noValueDefault,\r\n country: noValueDefault,\r\n phone: noValueDefault,\r\n email: noValueDefault,\r\n addressType: 'Home Address'\r\n };\r\n }\r\n else {\r\n const stateInfo = getStates().find(p => p.id === contact.stateId);\r\n const state = (stateInfo !== undefined) ? stateInfo.value : noValueDefault;\r\n const zipFormatted = !!contact.zipCode ? formatZip(contact.zipCode as string, '') : '';\r\n const cityStZip = [contact.city, state, zipFormatted].filter(Boolean).join(', ');\r\n const addressValue = [contact.streetAddress1, contact.streetAddress2].filter(Boolean).join(' ');\r\n const phoneFormatted = !!contact.phone ? formatPhone(contact.phone as string) : '';\r\n return {\r\n address: addressValue,\r\n cityStateZip: cityStZip,\r\n country: contact.county,\r\n phone: formatPhone(phoneFormatted),\r\n email: contact.email,\r\n addressType: contact.addressType === AddressType.Mail ? 'Mailing Address' : contact.addressType === AddressType.Home ? 'Home Address' : 'Other Address'\r\n };\r\n }\r\n }\r\n const { address, cityStateZip, country, phone, email, addressType } = contactInfo(props);\r\n return (\r\n <>\r\n \r\n \r\n \r\n {addressType}\r\n \r\n \r\n \r\n \r\n {address}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n City, State, Zip\r\n \r\n \r\n \r\n \r\n {cityStateZip}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n County\r\n \r\n \r\n \r\n \r\n {country}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Phone Number\r\n \r\n \r\n \r\n \r\n {phone}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Email Address\r\n \r\n \r\n \r\n \r\n {email}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n text: {\r\n color: palette.grey.text,\r\n },\r\n groupText: {\r\n fontSize: 12,\r\n color: palette.grey.text,\r\n },\r\n forceBreak: {\r\n wordBreak: 'break-word'\r\n }\r\n};\r\n\r\nexport default ContactInfoCard;","import { Divider, Grid, Typography } from '@material-ui/core';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\ninterface Props extends StyledComponentProps {\r\n gender: React.ReactNode;\r\n birthDate: string;\r\n ssn: string;\r\n label: string;\r\n relationshipType: string;\r\n icon: React.ReactNode;\r\n}\r\n\r\nconst DependentInfoCard = (props: Props) => {\r\n const { classes = {}, icon } = props;\r\n const relType = !props.relationshipType ? '' : ['(', props.relationshipType, ')'].filter(Boolean).join('');\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {icon}\r\n \r\n \r\n
\r\n {props.label} {relType}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {props.gender}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.birthDate}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.ssn}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n wrapper: {\r\n margin: 5\r\n },\r\n text: {\r\n color: palette.grey.text,\r\n },\r\n alignRight: {\r\n textAlign: 'right'\r\n },\r\n alignLeft: {\r\n textAlign: 'left'\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(DependentInfoCard);","import { Card, CardContent, CardHeader, Divider, Grid, IconButton, Typography } from '@material-ui/core';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport SupervisorAccount from '@material-ui/icons/SupervisorAccount';\r\nimport React from 'react';\r\nimport WeddingRings from 'components/common/icons/icon_wedding_rings';\r\nimport { Employee, AddressType } from '../../redux/reducers';\r\nimport { getDependentTypes, getDependentRelationship, getEmploymentStatus, getGenders, getLookups, getPayrollCycles } from '../../utility/lookup_utils';\r\nimport { maskSSN } from '../../utility/masking_helper';\r\nimport palette from '../../utility/palette';\r\nimport ContactInfoCard from '../employee/contact_info_card';\r\nimport DependentInfoCard from '../employee/dependent_info';\r\n\r\ninterface Props {\r\n canNavigateSteps: boolean;\r\n employee: Employee;\r\n isAllstateOffered: boolean;\r\n jumpStep: () => void;\r\n}\r\n\r\nconst EmployeeReviewCard = (props: Props) => {\r\n const noValueDefault = '--';\r\n const emp = props.employee;\r\n const genderInfo = getGenders().find(p => p.id === emp!.genderId);\r\n const gender = !!genderInfo ? genderInfo.value : noValueDefault;\r\n const empStatusInfo = getEmploymentStatus().find(p => p.id === emp.employmentStatusId);\r\n const empStatus = !!empStatusInfo ? empStatusInfo.value : noValueDefault;\r\n const empBirthDate = !!emp.dateOfBirth ? emp.dateOfBirth.format('LL') : noValueDefault;\r\n const empHireDate = !!emp.hireDate ? emp.hireDate.format('LL') : noValueDefault;\r\n const payCycleInfo = getPayrollCycles().find(p => p.id === emp.payrollCycleId);\r\n const payCycle = !!payCycleInfo ? payCycleInfo.value : noValueDefault;\r\n const lookups = getLookups();\r\n const hasDependents = !!emp!.dependents;\r\n const spouse = emp.dependents.find(dep => lookups[dep.dependentTypeId].key === 'SPOUSE');\r\n const dependents = emp.dependents.filter(dep => lookups[dep.dependentTypeId].key !== 'SPOUSE');\r\n const employeeDependents = spouse ? [spouse].concat(dependents) : dependents;\r\n const empSSN = maskSSN(emp!.ssn);\r\n const empSSNMask = !empSSN ? noValueDefault : empSSN;\r\n const hasContacts = !!emp!.contactInformation;\r\n const homeAddress = emp.contactInformation.find(c => c.addressType === AddressType.Home);\r\n const otherAddresses = emp.contactInformation.filter(c => c.addressType === AddressType.Mail);\r\n const empAddresses = homeAddress ? [homeAddress].concat(otherAddresses) : otherAddresses;\r\n const dependentTypes = props.isAllstateOffered ? getDependentRelationship() : getDependentTypes();\r\n return (\r\n <>\r\n \r\n \r\n {emp!.fullName!}\r\n
\r\n }\r\n action={props.canNavigateSteps &&\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n <>\r\n
\r\n \r\n Identification\r\n \r\n\r\n \r\n \r\n \r\n Gender\r\n \r\n \r\n \r\n \r\n {gender}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Date of Birth\r\n \r\n \r\n \r\n \r\n {empBirthDate}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n SSN\r\n \r\n \r\n \r\n \r\n {empSSNMask}\r\n \r\n \r\n \r\n
\r\n {hasContacts &&\r\n \r\n Address & Contact\r\n \r\n }\r\n {hasContacts && empAddresses.map(c => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n \r\n Employment\r\n \r\n \r\n \r\n \r\n Position\r\n \r\n \r\n \r\n \r\n {emp!.jobTitle}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Employment Status\r\n \r\n \r\n \r\n \r\n {empStatus}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Hired Date\r\n \r\n \r\n \r\n \r\n {empHireDate}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Hours Per Week\r\n \r\n \r\n \r\n \r\n {emp.weeklyHours}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Payroll Cycle\r\n \r\n \r\n \r\n \r\n {payCycle}\r\n \r\n \r\n \r\n
\r\n {hasDependents &&\r\n \r\n Dependents\r\n \r\n }\r\n {hasDependents && employeeDependents.map(dep => {\r\n const icon = lookups[dep.dependentTypeId].key === 'SPOUSE' || lookups[dep.dependentTypeId].key === 'DOMESTICPARTNER' ? : ;\r\n const genderInfo = getGenders().find(p => p.id === dep.genderId);\r\n const gender = !!genderInfo ? genderInfo.value : noValueDefault;\r\n const depDOB = !!dep.dateOfBirth ? dep.dateOfBirth.format('LL') : noValueDefault;\r\n const depSSN = maskSSN(dep!.ssn, 'X');\r\n const depTypeInfo = dependentTypes.find(p => p.id === dep!.dependentTypeId);\r\n const depType = !!depTypeInfo ? depTypeInfo.value : '';\r\n const depSSNMasked = !depSSN ? noValueDefault : depSSN;\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n wrapper: {\r\n margin: 5\r\n },\r\n cardHeader: {\r\n backgroundColor: palette.blue.primary,\r\n },\r\n headerContent: {\r\n color: 'white'\r\n },\r\n text: {\r\n color: palette.grey.text,\r\n }\r\n};\r\n\r\nexport default EmployeeReviewCard;","import React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport { CompanySettings, Plan } from 'redux/reducers';\r\nimport { getLOCsByBaseLOC } from 'utility/lookup_utils';\r\nimport { LifeDisabilityElectionCardBase } from './life_disability_election_card';\r\nimport { PlanElectionCardBase } from './plan_election_card';\r\nimport { CostCalculation } from 'redux/reducers/cost_calculation_reducer';\r\n\r\ninterface Props {\r\n open: boolean;\r\n plan?: Plan;\r\n cost?: CostCalculation;\r\n onCancel: () => void;\r\n payrollCycleId?: number;\r\n companySettings: CompanySettings\r\n}\r\n\r\nconst PlanPreviewDialog = React.memo((props: Props) => {\r\n if (!props.plan)\r\n return ;\r\n else {\r\n const isLife = getLOCsByBaseLOC('BASELIFE').some(lookup => lookup.id === props.plan!.lineOfCoverageId);\r\n const isDisability = getLOCsByBaseLOC('BASEDISABILITY').some(lookup => lookup.id === props.plan!.lineOfCoverageId);\r\n\r\n const PlanCardComponent = (isLife || isDisability) ? LifeDisabilityElectionCardBase : PlanElectionCardBase;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n});\r\n\r\nexport default PlanPreviewDialog;","import { Button, Card, CardContent, CardHeader, Grid, List, ListItem, ListItemIcon, ListItemText, Typography } from '@material-ui/core';\r\nimport Check from '@material-ui/icons/Check';\r\nimport Close from '@material-ui/icons/Close';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport Help from '@material-ui/icons/Help';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport PlanPreviewDialog from 'components/plan/plan_preview_dialogue';\r\nimport React from 'react';\r\nimport { CostCalculation } from 'redux/reducers/cost_calculation_reducer';\r\nimport { isNumber } from 'util';\r\nimport { formatCurrency } from 'utility';\r\nimport { companySettings } from 'utility/company_utils';\r\nimport { getEffectiveDateForEmployee } from 'utility/plan_eligibility_utils';\r\nimport { Company, Election, Employee, Plan } from '../../redux/reducers';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { PlanReviewCardStyles as currentViewStyles } from '../../utility/common_styles';\r\nimport { getLookups } from '../../utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\ninterface Props {\r\n disabled: boolean;\r\n editMode: boolean;\r\n election: Election;\r\n plan?: Plan;\r\n employee: Employee;\r\n company: Company,\r\n cost?: CostCalculation;\r\n jumpStep: (loc: number) => void;\r\n hasWarnings: boolean;\r\n warningMessage?: string;\r\n}\r\n\r\ninterface State {\r\n planPreviewOpen: boolean;\r\n canViewPreview: boolean;\r\n}\r\n\r\nclass PlanReviewCard extends React.PureComponent{\r\n lookups = getLookups();\r\n constructor(props: Props) {\r\n super(props)\r\n\r\n this.state = {\r\n planPreviewOpen: false,\r\n canViewPreview: !!this.props.plan\r\n };\r\n }\r\n\r\n get displayLOC() {\r\n const lookup = this.lookups[this.props.election.lineOfCoverageId];\r\n return lookup ? lookup.value : '';\r\n }\r\n\r\n get displayWaivedReason() {\r\n if(this.props.employee.isEmployeeWaiving && !!this.props.employee.waiverReasonId){\r\n const lookup = this.lookups[this.props.employee.waiverReasonId];\r\n return lookup ? lookup.value : '';\r\n }else if(!!this.props.election.waivedReasonId) {\r\n const lookup = this.lookups[this.props.election.waivedReasonId];\r\n return lookup ? lookup.value : '';\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n get displayCarrier() {\r\n const plan = this.props.plan;\r\n if (!plan) return '';\r\n const carrier = this.props.plan!.carrierName;\r\n return carrier ? carrier : '';\r\n }\r\n\r\n displayRelationshipType = (dependentTypeId: number) => {\r\n const lookup = this.lookups[dependentTypeId];\r\n return lookup ? lookup.value : '';\r\n };\r\n\r\n handlePreviewButtonClicked = () => this.setState({ planPreviewOpen: true });\r\n handleClosePreviewDialogue = () => this.setState({ planPreviewOpen: false });\r\n\r\n handleEdit = () => {\r\n this.props.jumpStep(this.props.election.lineOfCoverageId);\r\n };\r\n\r\n get employeeCost() {\r\n if (!this.props.election.isWaived && this.props.cost && this.props.cost.success && isNumber(this.props.cost.employeeCost)) {\r\n return `${formatCurrency(this.props.cost.employeeCost)}`;\r\n } else {\r\n return '$--';\r\n }\r\n }\r\n\r\n get employerCost() {\r\n if (!this.props.election.isWaived && this.props.cost && this.props.cost.success && isNumber(this.props.cost.employerCost)) {\r\n return `${formatCurrency(this.props.cost.employerCost)}`;\r\n } else {\r\n return '$--';\r\n }\r\n }\r\n\r\n get companySettings() {\r\n return companySettings(this.props.company);\r\n }\r\n\r\n render() {\r\n const isWaived = this.props.election.isWaived\r\n const cost = this.props.cost;\r\n const showEmployeeCost = this.companySettings.viewEmployeeCost;\r\n const showEmployerCost = this.companySettings.viewEmployerCost;\r\n const showBoth = showEmployeeCost && showEmployerCost;\r\n const noneWaivedDependends = this.props.election.dependents.filter(dependent => dependent.isWaived === false);\r\n const tooltipMessage = 'The setup for this plan is not complete. Please reach out to your Benefits Administrator.'\r\n return (\r\n <>\r\n \r\n \r\n \r\n {this.displayLOC.toUpperCase()}\r\n \r\n {this.props.editMode &&\r\n \r\n }\r\n \r\n }\r\n />\r\n \r\n {isWaived ?\r\n <>\r\n \r\n You have waived {this.displayLOC} coverage\r\n \r\n \r\n Waived Reason: {this.displayWaivedReason}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n You elected to waive coverage and may not be eligible for benefits until the next open enrollment or at the time of a qualifying life event.\r\n \r\n \r\n \r\n\r\n \r\n :\r\n <>\r\n \r\n EFFECTIVE {getEffectiveDateForEmployee(this.props.plan, this.props.employee.hireDate)}\r\n {this.props.hasWarnings && *}\r\n \r\n \r\n \r\n \r\n {this.props.plan && this.props.plan!.planDisplayName}\r\n \r\n \r\n \r\n {this.props.hasWarnings &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.warningMessage}\r\n \r\n \r\n \r\n }\r\n \r\n Plan Details\r\n \r\n {this.state.canViewPreview &&\r\n \r\n }\r\n {this.props.employee.dependents.length > 0 &&\r\n <>\r\n
\r\n
\r\n \r\n Who is covered?\r\n \r\n \r\n \r\n \r\n {!!this.props.election.isEmployeeIncluded ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n {this.props.employee.fullName}\r\n \r\n }\r\n />\r\n \r\n {this.props.employee.dependents.map(dep => (\r\n \r\n \r\n {!!noneWaivedDependends.find(elecDep => elecDep.id === dep.id) ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n {dep.fullName} ({this.displayRelationshipType(dep.dependentTypeId)})\r\n \r\n }\r\n />\r\n \r\n ))}\r\n \r\n \r\n }\r\n \r\n }\r\n
\r\n {!isWaived && (showEmployeeCost || showEmployerCost) &&\r\n \r\n \r\n {showBoth &&\r\n <>\r\n \r\n {this.employeeCost === '$--' ?\r\n
\r\n
No Rate Available} />
\r\n
\r\n :\r\n <>\r\n \r\n You pay\r\n \r\n \r\n {this.employeeCost}\r\n \r\n \r\n }\r\n \r\n {isWaived || !cost || !cost.success ? '-' : (!!this.props.employee.payrollCycleId ? this.lookups[this.props.employee.payrollCycleId!].value : ' per pay period')}\r\n \r\n
\r\n \r\n \r\n Employer pays\r\n \r\n \r\n {this.employerCost}\r\n \r\n \r\n {isWaived || !cost || !cost.success ? '-' : (!!this.props.employee.payrollCycleId ? this.lookups[this.props.employee.payrollCycleId!].value : ' per pay period')}\r\n \r\n \r\n \r\n }\r\n {!showBoth && showEmployeeCost &&\r\n \r\n\r\n {this.employeeCost === '$--' ?\r\n
\r\n
No Rate Available} />
\r\n
\r\n :\r\n <>\r\n \r\n You pay\r\n \r\n \r\n {this.employeeCost}\r\n \r\n \r\n }\r\n \r\n {isWaived || !cost || !cost.success ? '-' : (!!this.props.employee.payrollCycleId ? this.lookups[this.props.employee.payrollCycleId!].value : ' per pay period')}\r\n \r\n
\r\n }\r\n {!showBoth && showEmployerCost &&\r\n \r\n \r\n Employer pays\r\n \r\n \r\n {this.employerCost}\r\n \r\n \r\n {isWaived || !cost || !cost.success ? '-' : (!!this.props.employee.payrollCycleId ? this.lookups[this.props.employee.payrollCycleId!].value : ' per pay 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 PlanReviewCard;","class ScriptLoader {\r\n private scripts: string[] = [];\r\n private loaded: string[] = [];\r\n private failed: string[] = [];\r\n private pending: string[] = [];\r\n constructor(scripts: string[]) {\r\n this.scripts = scripts;\r\n }\r\n\r\n onLoad = () => {\r\n return new Promise((resolve, reject) => {\r\n this.scripts.forEach((src: string) => {\r\n this.loadSrc(src, resolve, reject);\r\n })\r\n });\r\n }\r\n\r\n private loadSrc = (src: string, resolve: any, reject: any) => {\r\n if (this.loaded.indexOf(src) >= 0) {\r\n return Promise.resolve(src);\r\n }\r\n\r\n this.pending.push(src);\r\n return this.createScriptTag(src)\r\n .then(() => {\r\n this.loaded.push(src);\r\n if (this.loaded.length === this.scripts.length) {\r\n resolve();\r\n }\r\n })\r\n .catch(() => {\r\n this.failed.push(src);\r\n reject(src);\r\n });\r\n }\r\n\r\n private createScriptTag = (src: string) => {\r\n return new Promise((resolve, reject) => {\r\n let resolved = false,\r\n errored = false,\r\n body = document.getElementsByTagName('body')[0],\r\n tag: any = document.createElement('script');\r\n\r\n tag.type = 'text/javascript';\r\n tag.async = false; // Load in order\r\n const handleLoad = (evt?: any) => { resolved = true; resolve(src); }\r\n const handleReject = (evt?: any) => { errored = true; reject(src) }\r\n\r\n tag.onreadystatechange = () => {\r\n if (resolved) return handleLoad();\r\n if (errored) return handleReject();\r\n const state = tag.readyState;\r\n if (state === 'complete') {\r\n handleLoad()\r\n } else if (state === 'error') {\r\n handleReject()\r\n }\r\n };\r\n\r\n tag.addEventListener('load', handleLoad)\r\n tag.addEventListener('error', handleReject);\r\n tag.src = src;\r\n body.appendChild(tag);\r\n return tag;\r\n });\r\n }\r\n}\r\n\r\nexport default ScriptLoader;","import { Button, Card, CardContent, CardHeader, Checkbox, Divider, FormControlLabel, Grid, Hidden, Radio, RadioGroup, TextField, Typography } from '@material-ui/core';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport AccessTime from '@material-ui/icons/AccessTime';\r\nimport CheckCircle from '@material-ui/icons/CheckCircle';\r\nimport Help from '@material-ui/icons/Help';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport Reopen from 'components/common/icons/icon_reopen';\r\nimport MessageCard, { MessageCardLevel } from 'components/common/message_card';\r\nimport SaveButton from 'components/common/save_button';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport memoizeOne from 'memoize-one';\r\nimport * as PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport { fetchKaiserUrl, saveKaiserResponse } from 'redux/actions/employee_actions';\r\nimport routes from 'router/routes';\r\nimport auth from 'utility/auth';\r\nimport { companySettings } from 'utility/company_utils';\r\nimport { CONFIGURATION_TYPE_IDS, getEnrolleeConfigurationTypes } from 'utility/employee_utils';\r\nimport enrollmentSummaryUtil from 'utility/enrollment_summary_util';\r\nimport kaiserUtil from 'utility/kaiser_utility';\r\nimport scrollUtility from 'utility/scroll_utility';\r\nimport { calculateEnrollmentTimeframe } from 'utility/time_utils';\r\nimport EmployeeReviewCard from '../../components/employee/employee_review_card';\r\nimport PlanReviewCard from '../../components/plan/plan_review_card';\r\nimport { calculateCosts, FinalizedElection, reOpenEmployeeEnrollment, submitEmployeeEnrollment } from '../../redux/actions';\r\nimport { Company, CostCalculationReducerState, CostCalculationReducerStatePropType, Election, ElectionDependent, Employee, EnrollmentReducerState, EnrollmentReducerStatePropType, Plan, PlanPropType, ElectionRenewalInfoDTO } from '../../redux/reducers';\r\nimport { ReduxState } from '../../redux/store';\r\nimport { formatCurrency, isUserReadOnly, Zones } from '../../utility';\r\nimport { classes, PlanSelectionSummaryStyles as currentViewStyles } from '../../utility/common_styles';\r\nimport { getLookupId, getLookups, getLookupValue, getStates, LOOKUP_TYPE_IDS, isEmployeeCobra } from '../../utility/lookup_utils';\r\nimport RtpContent, { RtpContentLocation } from 'components/common/rtp_content';\r\n\r\ninterface ComponentProps {\r\n employee: Employee;\r\n companyId: string;\r\n enrollmentId: string;\r\n readyToSubmit: boolean;\r\n jumpStep: (loc?: number) => void;\r\n isEnrollmentMine: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n costCalculation: CostCalculationReducerState;\r\n enrollment: EnrollmentReducerState;\r\n elections: Election[];\r\n company: Company;\r\n plans: Plan[];\r\n}\r\ninterface DispatchProps {\r\n submitEmployeeEnrollment: (finalizedElection: FinalizedElection) => Promise;\r\n reOpenEmployeeEnrollment: () => Promise;\r\n fetchKaiserUrl: () => Promise;\r\n saveKaiserResponse: () => Promise;\r\n calculateCosts: () => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & WithWidth & MappedProps & DispatchProps\r\n\r\ninterface State {\r\n loading: boolean;\r\n reduceValidation?: boolean;\r\n employeeConfirmed: boolean;\r\n confirmedOnEmployeeBehalf: boolean;\r\n obtainedEmployeePermissionChecked: boolean;\r\n acknowledgedAndAgreedToElectionsChecked: boolean;\r\n signature: string;\r\n employeeSignatureCity: string;\r\n employeeSignatureState: string;\r\n employeeCityStateConfirmed: boolean;\r\n isEmployeeSignatureCityDirty: boolean;\r\n isEmployeeSignatureStateDirty: boolean;\r\n selectedSubmitEnrollmentId: number;\r\n isKaiserAgreementAccepted?: boolean;\r\n spouseSignature: string;\r\n spouseConfirmed: boolean;\r\n spouseSignatureCity: string;\r\n spouseSignatureState: string;\r\n}\r\n\r\nclass PlanSelectionSummary extends React.PureComponent{\r\n lookups = getLookups();\r\n completedStatusId = getLookupId('COMPLETED', LOOKUP_TYPE_IDS.electionStatus);\r\n reopenedStatusId = getLookupId('REOPENED', LOOKUP_TYPE_IDS.electionStatus);\r\n notStartedStatus = getLookupId('NOTSTARTED', LOOKUP_TYPE_IDS.electionStatus);\r\n electionsSubmittedStatusId = getLookupId('SUBMITTED', LOOKUP_TYPE_IDS.electionStatus);\r\n signaturePendingStatus = getLookupId('SIGNATUREPENDING', LOOKUP_TYPE_IDS.electionStatus);\r\n renewalQuestionsPendingStatus = getLookupId('RENEWALQUESTIONSPENDING', LOOKUP_TYPE_IDS.electionStatus);\r\n kaiserCarrierCode = getLookupValue('KAISERCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n submitOnEmployeeBehalf = getLookupId('SUBMITONEMPLOYEEBEHALF', LOOKUP_TYPE_IDS.enrollmentSubmissionType);\r\n submitByEmployee = getLookupId('SUBMITBYEMPLOYEE', LOOKUP_TYPE_IDS.enrollmentSubmissionType);\r\n submitByEmployeeInBrokerPresence = getLookupId('SUBMITBYEMPLOYEEONBROKERACCT', LOOKUP_TYPE_IDS.enrollmentSubmissionType);\r\n isEmployee = auth.isUserEmployee();\r\n isInternalUser = auth.isUserEnrollmentSuperAdmin();\r\n isEmployer = auth.isUserEmployer();\r\n isBroker = auth.isUserEnrollmentManager();\r\n californiaId = getLookupId('CA', LOOKUP_TYPE_IDS.state);\r\n mississippiId = getLookupId('MS', LOOKUP_TYPE_IDS.state);\r\n medicalId = getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n \r\n\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n let signature = '';\r\n let employeeSignatureCity = '';\r\n let employeeSignatureState = '';\r\n let spouseSignature = '';\r\n let spouseSignatureCity = '';\r\n let spouseSignatureState = '';\r\n\r\n let selectedSubmitEnrollmentId = 0;\r\n if (props.employee && props.employee.employeeSignature) {\r\n signature = props.employee.employeeSignature\r\n }\r\n\r\n const isKaiserAgreementRequired = this.isKaiserPlanElected && this.isEmployeeCAOrMissResident;\r\n\r\n selectedSubmitEnrollmentId =\r\n !this.isEmployee\r\n ? ((props.employee.electionStatusId === this.signaturePendingStatus) ? this.submitByEmployee : (!isKaiserAgreementRequired ? this.defaultSubmissionEnrollmentId : this.submitByEmployee))\r\n : this.submitByEmployee;\r\n\r\n this.state = {\r\n loading: false,\r\n reduceValidation: this.props.enrollment.reduceValidation,\r\n employeeConfirmed: !this.isEmployee ? true : (signature.length > 0 ? true : false),\r\n confirmedOnEmployeeBehalf: false,\r\n obtainedEmployeePermissionChecked: false,\r\n acknowledgedAndAgreedToElectionsChecked: false,\r\n signature,\r\n employeeSignatureCity: employeeSignatureCity,\r\n employeeSignatureState: employeeSignatureState,\r\n employeeCityStateConfirmed: false,\r\n isEmployeeSignatureCityDirty: false,\r\n isEmployeeSignatureStateDirty: false,\r\n selectedSubmitEnrollmentId,\r\n isKaiserAgreementAccepted: this.props.employee.kaiserAgreementAccepted,\r\n spouseSignature: spouseSignature,\r\n spouseSignatureCity: spouseSignatureCity,\r\n spouseSignatureState: spouseSignatureState,\r\n spouseConfirmed: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.calculateCosts();\r\n }\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n loadingOff = () => this.setState({ loading: false });\r\n loadingOffSuccess = () => {\r\n scrollUtility.scrollToTop();\r\n this.setState({ loading: false })\r\n };\r\n kaiserAccepted = () => this.setState({ isKaiserAgreementAccepted: true });\r\n\r\n changeSignature = (e: any) => {\r\n const signature = e.target.value;\r\n this.setState({\r\n signature,\r\n employeeConfirmed: signature.length > 0\r\n });\r\n }\r\n changeSignatureCity = (e: any) => {\r\n const signatureCity = e.target.value;\r\n this.setState({\r\n employeeSignatureCity: signatureCity,\r\n isEmployeeSignatureCityDirty: true,\r\n employeeCityStateConfirmed: (signatureCity.length > 0 && this.state.employeeSignatureState.length > 0) ? true : false\r\n });\r\n }\r\n changeSignatureState = (e: any) => {\r\n const signatureState = e.target.value;\r\n this.setState({\r\n employeeSignatureState: signatureState,\r\n isEmployeeSignatureStateDirty: true,\r\n employeeCityStateConfirmed: (signatureState.length > 0 && this.state.employeeSignatureCity.length > 0) ? true : false\r\n });\r\n }\r\n\r\n changeSpouseSignature = (e: any) => {\r\n const spouseSignature = e.target.value;\r\n this.setState({\r\n spouseSignature,\r\n spouseConfirmed: spouseSignature.length > 0 ? true : false\r\n });\r\n }\r\n\r\n openAgreement = () => {\r\n this.props.fetchKaiserUrl().then((url: string) => {\r\n url = url.replace('\"', '').replace('\"', '');\r\n kaiserUtil.getResponse(url).then((result) => {\r\n if (result) {\r\n this.props.saveKaiserResponse().then(this.kaiserAccepted, this.loadingOff);\r\n }\r\n });\r\n })\r\n }\r\n\r\n reopenEnrollment = () => {\r\n this.loadingOn();\r\n this.setState({\r\n employeeConfirmed: !this.isEmployee ? true : false,\r\n selectedSubmitEnrollmentId: this.defaultSubmissionEnrollmentId,\r\n obtainedEmployeePermissionChecked: false,\r\n acknowledgedAndAgreedToElectionsChecked: false\r\n })\r\n this.props.reOpenEmployeeEnrollment().then(this.loadingOffSuccess, this.loadingOff);\r\n };\r\n\r\n get defaultSubmissionEnrollmentId() {\r\n if (!this.props.enrollment.reduceValidation && !!this.nonQualifyingSubmissionOnBehalfOfEmployeePlan)\r\n return this.submitByEmployee;\r\n\r\n return this.submitOnEmployeeBehalf;\r\n }\r\n\r\n getElectionsReviewUrl = () => {\r\n const { path, params } = routes.guidedEnrollment;\r\n const route = path.replace(params!.companyId!, this.props.companyId)\r\n .replace(params!.enrollmentId!, this.props.enrollmentId)\r\n .replace(params!.employeeId!, this.props.employee.id)\r\n .replace(params!.stepId!, '');\r\n return window.location.origin + route;\r\n }\r\n \r\n\r\n _getConfigurationTypeIds = memoizeOne((plans: Plan[]) => {\r\n let configurationTypeIds: number[] = [];\r\n plans.forEach(plan => {\r\n configurationTypeIds.push(...plan.configurationTypeIds);\r\n });\r\n return configurationTypeIds;\r\n });\r\n\r\n get configurationTypeIds() {\r\n return this._getConfigurationTypeIds(this.props.plans);\r\n }\r\n\r\n get isAllstateOffered() {\r\n let AllstatePlans = this.props.plans.filter(p => p.carrierCode.toUpperCase() === getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode) );\r\n return AllstatePlans && AllstatePlans.length>0\r\n }\r\n _enrolleeConfigurationTypes = memoizeOne((plans: Plan[], employee: Employee) => {\r\n return getEnrolleeConfigurationTypes(plans, employee.elections, employee.id);\r\n });\r\n\r\n get enrolleeConfigurationTypes() {\r\n return this._enrolleeConfigurationTypes(this.props.plans, this.props.employee);\r\n }\r\n\r\n _isSpouseIncludedInElection = memoizeOne((elections: Election[]) => {\r\n const anySpouseInElections = elections.map(e => this.anySpouse(e.dependents)).filter(e => e);\r\n return anySpouseInElections && anySpouseInElections.length > 0;\r\n });\r\n\r\n get isSpouseIncludedInElection() {\r\n return this._isSpouseIncludedInElection(this.props.elections);\r\n }\r\n\r\n get isSpouseSignatureRequired() {\r\n return this.isSpouseIncludedInElection && (this.isSubmitByEmployee || this.isSubmitByEmployeeInBrokerPresence) && this.configurationTypeIds.includes(21);\r\n }\r\n\r\n anySpouse = (deps: ElectionDependent[]) => {\r\n const allTrue = deps.map(d => this.isSpouse).filter(s => s);\r\n return allTrue && allTrue.length > 0;\r\n }\r\n\r\n isSpouse = (dep: ElectionDependent) => {\r\n const exist = this.props.employee.dependents.find(d => d.id === dep.id && d.isSpouse);\r\n return exist ? true : false;\r\n }\r\n\r\n get isSpouseConfirmed() {\r\n return ((this.isEmployee || (this.isSubmitByEmployeeInBrokerPresence)) && this.isSpouseSignatureRequired && this.state.spouseConfirmed)\r\n || (this.isSubmitOnEmployeeBehalf) || (this.isSubmitByEmployee) || !this.isSpouseSignatureRequired;\r\n }\r\n get signatureLSICityStateConfirmed() {\r\n return this.state.employeeCityStateConfirmed && this.state.employeeSignatureState === this.props.company.contactInformation[0].stateId!.toString();\r\n }\r\n get isEmployeeConfirmed() {\r\n return ((this.isEmployee || (this.isSubmitByEmployeeInBrokerPresence && this.state.signature.length > 0)) && this.state.employeeConfirmed)\r\n || (this.isSubmitOnEmployeeBehalf)\r\n || (this.isSubmitByEmployee && (!this.isEmployee || (this.isEmployee && this.state.signature.length > 0)));\r\n }\r\n\r\n get isLsiSignatureExpected() {\r\n return !this.isEmployee && this.state.selectedSubmitEnrollmentId === this.submitByEmployee ? false : true;\r\n }\r\n\r\n get areSignaturesRequiredAndPresent() {\r\n return this.electionLSICarrierExists && this.isLsiSignatureExpected ? (this.isSpouseConfirmed && this.isEmployeeConfirmed && this.signatureLSICityStateConfirmed)\r\n : (this.isSpouseConfirmed && this.isEmployeeConfirmed);\r\n }\r\n\r\n handleSubmit = () => {\r\n this.setState({ loading: true });\r\n const finalizedElection: FinalizedElection = {\r\n employeeSignature: this.state.signature,\r\n employeeSignatureCity: this.state.employeeSignatureCity,\r\n employeeSignatureState: this.state.employeeSignatureState,\r\n signatureType: this.state.selectedSubmitEnrollmentId,\r\n electionsReviewUrl: this.getElectionsReviewUrl(),\r\n signaturePending: this.state.selectedSubmitEnrollmentId === this.submitByEmployee && !this.isEmployee,\r\n spouseSignature: this.state.spouseSignature,\r\n spouseSignatureCity: this.state.spouseSignatureCity,\r\n spouseSignatureState: this.state.spouseSignatureState,\r\n hsaContribution: this.props.employee.hsaContribution, //PROD Bug Fix#126133 - Map HSAContribution\r\n obtainedEmployeePermission: this.state.obtainedEmployeePermissionChecked,\r\n acknowledgedAndAgreedToElections: this.state.acknowledgedAndAgreedToElectionsChecked,\r\n reduceValidation: this.state.reduceValidation,\r\n renewalQuestionsPending: this.isRenewalQuestionsPending\r\n }\r\n this.props.submitEmployeeEnrollment(finalizedElection).then(this.loadingOffSuccess, this.loadingOff);\r\n }\r\n\r\n confirmOnEmployeeBehalfBoxOne = () => {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n obtainedEmployeePermissionChecked: !prevState.obtainedEmployeePermissionChecked\r\n }));\r\n }\r\n\r\n confirmOnEmployeeBehalfBoxTwo = () => {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n acknowledgedAndAgreedToElectionsChecked: !prevState.acknowledgedAndAgreedToElectionsChecked\r\n }));\r\n }\r\n\r\n handleChange = (event: React.ChangeEvent) => {\r\n var id = event.target.value;\r\n this.setState({ selectedSubmitEnrollmentId: parseInt(id, 10), signature: '' });\r\n }\r\n\r\n //Election Statuses\r\n get isElectionReopened() {\r\n return this.props.employee.electionStatusId === this.reopenedStatusId;\r\n }\r\n\r\n get isElectionsCompleted() {\r\n return (this.props.employee.electionStatusId === this.renewalQuestionsPendingStatus || this.props.employee.electionStatusId === this.completedStatusId) && !this.isOpenEnrollmentExpired;\r\n }\r\n\r\n get isElectionsSubmitted() {\r\n return this.props.employee.electionStatusId === this.electionsSubmittedStatusId;\r\n }\r\n\r\n get isElectionCompletedOrReopened() {\r\n return this.isElectionReopened || this.isElectionsCompleted || (auth.isUserEnrollmentSuperAdmin() && this.isElectionsSubmitted); //Admins are allowed to reopen even if the status is already opend\r\n }\r\n\r\n get isSignaturePending() {\r\n return this.props.employee.electionStatusId === this.signaturePendingStatus;\r\n }\r\n \r\n get isRenewalQuestionsPending() {\r\n return this.props.employee.elections != undefined && this.props.employee.elections.some(e => e.renewalInfo != undefined && e.renewalInfo.employeeSkippedRenewalQuestions);\r\n }\r\n //Election Statuses\r\n\r\n //Enrollment Statuses\r\n get isOpenEnrollmentExpired() {\r\n return this.props.enrollment.openEnrollmentExpired || false;\r\n }\r\n get isEnrollmentSubmitted() {\r\n return this.props.enrollment.submissionDate ? true : false;\r\n }\r\n //Enrollemnt Statuses\r\n\r\n get isSubmitOnEmployeeBehalf() {\r\n return this.state.selectedSubmitEnrollmentId === this.submitOnEmployeeBehalf;\r\n }\r\n\r\n get isSubmitByEmployee() {\r\n return this.state.selectedSubmitEnrollmentId === this.submitByEmployee;\r\n }\r\n\r\n get isSubmitByEmployeeInBrokerPresence() {\r\n return this.state.selectedSubmitEnrollmentId === this.submitByEmployeeInBrokerPresence;\r\n }\r\n\r\n get isSubmitEnrollmentSelection() {\r\n return (this.isEmployee || this.props.isEnrollmentMine) ? true : ((this.isSubmitOnEmployeeBehalf && this.state.obtainedEmployeePermissionChecked && this.state.acknowledgedAndAgreedToElectionsChecked) || this.isSubmitByEmployee || this.isSubmitByEmployeeInBrokerPresence);\r\n }\r\n\r\n ///Show/Hide/Disable Logic\r\n get isEntireScreenReadOnly() {\r\n return isUserReadOnly(this.props.enrollment, Zones.PlanSelectionSummary);\r\n }\r\n\r\n get canReopenElections() {\r\n return this.isElectionsCompleted || (this.isElectionsSubmitted && auth.isUserEnrollmentSuperAdmin());\r\n }\r\n\r\n get canSubmitEnrollment() {\r\n const hasPlan = this.props.plans.length > 0;\r\n if (!hasPlan && isEmployeeCobra(this.props.employee.employmentStatusId || 0) ) {\r\n return !this.isEntireScreenReadOnly && !this.isElectionsCompleted && this.props.readyToSubmit && this.areSignaturesRequiredAndPresent && !this.isMissingNeccessaryKaiserAgreement && this.isSubmitEnrollmentSelection && !this.nameCharacterLimitExceeded;\r\n }\r\n else if (auth.isUserEnrollmentSuperAdmin()) {\r\n // Relax Kaiser agreement validation\r\n return hasPlan && !this.isElectionsCompleted && (this.state.reduceValidation || (this.props.readyToSubmit && this.areSignaturesRequiredAndPresent && !this.isMissingNeccessaryKaiserAgreement && this.isSubmitEnrollmentSelection)) ;\r\n }\r\n else if (auth.isUserEmployee()) {\r\n return hasPlan && !(this.isElectionsCompleted || this.isElectionsSubmitted) && this.props.readyToSubmit && this.areSignaturesRequiredAndPresent && !this.nameCharacterLimitExceeded ;\r\n }\r\n else {\r\n return hasPlan && !this.isEntireScreenReadOnly && !this.isElectionsCompleted && this.props.readyToSubmit && this.areSignaturesRequiredAndPresent && !this.isMissingNeccessaryKaiserAgreement && this.isSubmitEnrollmentSelection && !this.nameCharacterLimitExceeded ;\r\n }\r\n }\r\n\r\n get allowEdit() {\r\n if (auth.isUserEnrollmentSuperAdmin()) {\r\n return !this.isElectionsCompleted && !this.isElectionsSubmitted;\r\n }\r\n else if (this.isEntireScreenReadOnly) {\r\n return false\r\n }\r\n else {\r\n return !this.isElectionsCompleted; // Don't allow election edits until they reopen\r\n }\r\n }\r\n get shouldDisableSignature() {\r\n return this.isElectionsCompleted || !this.props.readyToSubmit || this.isElectionsSubmitted;\r\n }\r\n\r\n get companySettings() {\r\n return companySettings(this.props.company);\r\n }\r\n\r\n getKaiserMedicalPlans = memoizeOne((plans: Plan[]) => {\r\n const kaiserStates = new Set([this.californiaId, this.mississippiId]) //This handles states that require Kaiser Acknowledgment\r\n return plans.filter(p => p.carrierCode === this.kaiserCarrierCode && p.lineOfCoverageId === this.medicalId && kaiserStates.has(p.stateId));\r\n });\r\n\r\n _isKaiserPlanElected = memoizeOne((elections: Election[], kaiserPlans: Plan[]) => {\r\n return elections.filter(p => kaiserPlans.find(plan => plan.id === p.planId)).length > 0 ? true : false;\r\n });\r\n\r\n get isKaiserPlanElected() {\r\n return this._isKaiserPlanElected(this.props.elections, this.getKaiserMedicalPlans(this.props.plans))\r\n }\r\n\r\n get nameCharacterLimitExceeded() {\r\n return (\r\n !!this.state.signature && (this.state.signature.length > 200)\r\n )\r\n }\r\n get signatureCityValid() {\r\n return (\r\n !this.state.isEmployeeSignatureCityDirty || (!!this.state.employeeSignatureCity && (this.state.employeeSignatureCity.length > 0))\r\n )\r\n }\r\n\r\n get isMissingNeccessaryKaiserAgreement() {\r\n return this.isEmployee && this.isEmployeeCAOrMissResident && this.isKaiserPlanElected ? !this.props.employee.kaiserAgreementAccepted : false;\r\n }\r\n\r\n get isEmployeeCAOrMissResident() {\r\n if (this.props.employee.contactInformation && this.props.employee.contactInformation[0]) {\r\n const employeeStateId = this.props.employee.contactInformation[0].stateId;\r\n return [this.californiaId, this.mississippiId].some(i => i === employeeStateId);\r\n } else return false;\r\n }\r\n\r\n _nonQualifyingSubmissionOnBehalfOfEmployeePlan = memoizeOne((plans: Plan[], elections: Election[]) => {\r\n var plan = plans.find(plan =>\r\n plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.preventSubmissionOnBehalfOfEmployee)\r\n && elections.some(election => election.planId == plan.id));\r\n\r\n return plan;\r\n });\r\n\r\n get nonQualifyingSubmissionOnBehalfOfEmployeePlan() {\r\n return this._nonQualifyingSubmissionOnBehalfOfEmployeePlan(this.props.plans, this.props.elections);\r\n }\r\n\r\n get disableOnBehalfOfEmployee() {\r\n return (this.isKaiserPlanElected && this.isEmployeeCAOrMissResident) || !!this.nonQualifyingSubmissionOnBehalfOfEmployeePlan;\r\n }\r\n\r\n get electionLSICarrierExists() {\r\n var lsiPlanIds = this.props.plans.filter(plan => plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.SignatureRequiredCityState)).map(plan => plan.id);\r\n return lsiPlanIds && this.props.elections.find(election => lsiPlanIds.includes(election.planId));\r\n };\r\n\r\n render() {\r\n const { headline } = !!this.props.enrollment.endDate && !!this.props.enrollment.startDate ? calculateEnrollmentTimeframe(this.props.enrollment.startDate, this.props.enrollment.endDate) : { headline: undefined };\r\n const { enrollment, employee, elections, isEnrollmentMine, readyToSubmit } = this.props;\r\n const { signature, spouseSignature, employeeSignatureCity, employeeSignatureState } = this.state;\r\n const reduceValidation = enrollment.reduceValidation;\r\n const enrollmentEndDate = enrollment.started ? enrollment.endDate!.format('ll') : '';\r\n const electionCompletedDate = employee.electionCompletedDate && employee.electionCompletedDate.format('LL');\r\n\r\n const terms = 'By signing below, you acknowledge and agree that (1) you consent to the electronic acceptance of these insurance selections (and delivery of related documents), (2) that this consent will be contractually binding (to the same extent as a written signature) and (3) if requested by the carrier, you will provide a signed document authorizing these selections.';\r\n var contributionSummary = enrollmentSummaryUtil.getContributionSummary(this.props.costCalculation.list, this.props.elections, this.props.employee.id);\r\n const employeeContribution = contributionSummary.employeeTotal;\r\n const employerContribution = contributionSummary.employerTotal;\r\n const contributions = contributionSummary.contributions;\r\n const mobile = this.props.width === 'xs';\r\n\r\n const showEmployeeCost = this.companySettings.viewEmployeeCost;\r\n const showEmployerCost = this.companySettings.viewEmployerCost;\r\n const showBothCosts = showEmployeeCost && showEmployerCost;\r\n const payPeriodDescription = enrollmentSummaryUtil.getPayPeriodDescription(this.props.employee.payrollCycleId);\r\n\r\n return (\r\n <>\r\n\r\n {!this.isElectionCompletedOrReopened && !this.isEntireScreenReadOnly && !this.props.readyToSubmit &&\r\n \r\n \r\n \r\n }\r\n {this.isElectionCompletedOrReopened && !this.isEntireScreenReadOnly &&\r\n \r\n \r\n \r\n }\r\n {headline &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {headline}\r\n \r\n {enrollment.started &&\r\n \r\n {`${enrollment.startDate!.format('ll')}`} - {enrollmentEndDate}\r\n \r\n }\r\n \r\n \r\n \r\n }\r\n {this.isElectionCompletedOrReopened &&\r\n \r\n \r\n \r\n {!this.isElectionReopened ? : }\r\n \r\n \r\n \r\n {this.isElectionReopened ? 'Re-opened Elections' : `Submitted on ${electionCompletedDate}`}\r\n \r\n \r\n \r\n \r\n }\r\n\r\n\r\n\r\n {(headline || this.isElectionCompletedOrReopened) &&\r\n \r\n \r\n \r\n }\r\n {showEmployeeCost &&\r\n <>\r\n \r\n \r\n You pay{employeeContribution > 0 ? \"*\" : \"\"}\r\n \r\n \r\n \r\n \r\n {`${formatCurrency(employeeContribution )}`}\r\n \r\n \r\n {payPeriodDescription}\r\n \r\n \r\n \r\n }\r\n {showEmployerCost &&\r\n <>\r\n \r\n {showBothCosts &&
}\r\n \r\n Employer pays\r\n \r\n
\r\n \r\n \r\n {`${formatCurrency(employerContribution)}`}\r\n \r\n \r\n {payPeriodDescription}\r\n \r\n \r\n \r\n }\r\n {this.isElectionsCompleted &&\r\n <>\r\n \r\n
\r\n \r\n Personal Info\r\n \r\n \r\n This is the information we have for your profile.\r\n \r\n
\r\n \r\n \r\n \r\n \r\n }\r\n
\r\n\r\n
\r\n \r\n Benefit Summary\r\n \r\n \r\n {this.props.elections.length === 0 ? 'You are not currently enrolled in any benefits.' :\r\n (enrollmentSummaryUtil.getNonWaivedElections(elections).length > 0 ? 'These are the benefits you will be enrolled in.' : '')}\r\n \r\n
\r\n\r\n {enrollmentSummaryUtil.getNonWaivedElections(elections).map(elec => {\r\n const plan = this.props.plans.find(plan => plan.id === elec.planId)\r\n const cost = plan ? enrollmentSummaryUtil.getPlanCost(contributions, plan!.id) : undefined;\r\n const hasWarnings = plan ? plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.reviewCardWarning) : false;\r\n let warningMessage = \"Rates, coverage, and effective dates are subject to carrier approval. This premium does not reflect employer contribution, if any.\";\r\n const isCyberScout = (hasWarnings && plan) ? plan.carrierCode === getLookupValue('CYBERSCOUTCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode) : false;\r\n const isAllstate = (hasWarnings && plan) ? plan.carrierCode === getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode) : false;\r\n if (isCyberScout || isAllstate) {\r\n warningMessage = `This ${plan!.carrierName} plan effective date is subject to change by the carrier. Your benefits administrator may contact you in the case of effective date changes.`;\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n\r\n\r\n\r\n {enrollmentSummaryUtil.getWaivedElections(elections).length > 0 &&\r\n <>\r\n \r\n These are the benefits you have waived.\r\n \r\n \r\n }\r\n\r\n\r\n {enrollmentSummaryUtil.getWaivedElections(elections).map(elec => {\r\n const plan = this.props.plans.find(plan => plan.id === elec.planId)\r\n const cost = plan ? enrollmentSummaryUtil.getPlanCost(contributions, plan!.id) : undefined;\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n\r\n{(!this.isEntireScreenReadOnly || (this.isEmployee && (this.isElectionCompletedOrReopened || this.isSignaturePending))) && this.props.readyToSubmit &&\r\n <>\r\n {!this.isEmployee && this.isKaiserPlanElected && this.isEmployeeCAOrMissResident &&\r\n
\r\n \r\n
\r\n }\r\n {this.isEmployee && this.isKaiserPlanElected && this.isEmployeeCAOrMissResident &&\r\n <>\r\n Arbitration Agreement\r\n \r\n \r\n \r\n You have enrolled in a plan from the carrier Kaiser Permanente. They require a seperate arbitration agreement.\r\n \r\n {this.state.isKaiserAgreementAccepted ?\r\n <>\r\n \r\n \r\n \r\n Agreement Accepted\r\n \r\n \r\n \r\n :\r\n <>\r\n \r\n \r\n \r\n Agreement Required\r\n \r\n \r\n \r\n \r\n VIEW AGREEMENT\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n }\r\n {!(this.isElectionsCompleted || this.isElectionsSubmitted) && (!this.isOpenEnrollmentExpired) &&\r\n <>\r\n Submit Enrollment\r\n {!readyToSubmit &&\r\n
\r\n \r\n
\r\n }\r\n \r\n \r\n {(!this.isEmployee && !isEnrollmentMine) && !this.isElectionsCompleted &&\r\n <>\r\n \r\n How would you like to submit this employee's enrollment?\r\n \r\n \r\n }\r\n label={\r\n Submit on behalf of the employee\r\n {!this.state.reduceValidation && !!this.nonQualifyingSubmissionOnBehalfOfEmployeePlan &&\r\n \r\n }\r\n />\r\n }\r\n \r\n }\r\n />\r\n }\r\n label={Employee will review, sign, and submit elections}\r\n />\r\n }\r\n label={Employee is present and will sign the application now}\r\n />\r\n\r\n \r\n {(this.isSubmitOnEmployeeBehalf) &&\r\n \r\n
\r\n
\r\n \r\n \r\n Submit on behalf of employee\r\n \r\n }\r\n />\r\n \r\n <>\r\n \r\n }\r\n label={\r\n \r\n By checking this box, you represent that you have obtained the employee’s express and written permission to enroll in the selections specified by you on behalf of the employee.\r\n \r\n }\r\n />\r\n \r\n }\r\n label={\r\n \r\n By checking this box, you acknowledge and agree that (1) you and the employee consent to the electronic acceptance of the employee’s insurance selections (and delivery of related documents), (2) that this consent will be contractually binding (to the same extent as a written signature) and (3) if requested by the carrier, you will provide a signed document authorizing these selections.\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n {(this.isSubmitByEmployee) &&\r\n \r\n
\r\n Reminder to invite Employee}\r\n subtitle={\r\n <>\r\n \r\n Note: If the employee will review, sign, and submit elections theirself, make sure you\r\n invite them. You can invite them by sending them the invite URL on the dashboard.\r\n \r\n \r\n }\r\n elevation={1}\r\n />\r\n
\r\n }\r\n \r\n }\r\n {((this.isEmployee || isEnrollmentMine || this.isSubmitByEmployeeInBrokerPresence) && !this.isElectionsCompleted) &&\r\n <>\r\n
\r\n \r\n Please read and accept the below terms and conditions, sign, and submit your elections\r\n \r\n
\r\n \r\n
\r\n\r\n {this.electionLSICarrierExists &&\r\n <>\r\n \r\n \r\n I represent that I have signed the application in:\r\n \r\n \r\n {employeeSignatureState && employeeSignatureState !== this.props.company.contactInformation[0].stateId!.toString() &&\r\n \r\n \r\n In order to complete your enrollment with your LifeSecure elections, you must sign from {getStates().find(s => s.id === this.props.company!.contactInformation[0]!.stateId!)!.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 {getStates().map(val => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n }\r\n \r\n Employee Signature\r\n \r\n \r\n \r\n \r\n \r\n

\r\n \r\n By signing electronically, I acknowledge that I am submitting my enrollment and have read the Terms & Conditions above.\r\n \r\n

\r\n
\r\n
{signature}
\r\n
\r\n \r\n }\r\n {((this.isEmployee || isEnrollmentMine || this.isSubmitByEmployeeInBrokerPresence) && this.isSpouseSignatureRequired && !this.isElectionsCompleted) &&\r\n <>\r\n \r\n Spouse Signature\r\n \r\n \r\n \r\n \r\n \r\n

\r\n \r\n By signing electronically, I acknowledge that I am submitting my enrollment and have read the Terms & Conditions above.\r\n \r\n

\r\n
\r\n
{spouseSignature}
\r\n
\r\n \r\n }\r\n\r\n
\r\n \r\n \r\n

\r\n {this.isOpenEnrollmentExpired && 'The enrollment is closed.'}\r\n {this.isElectionsCompleted && 'You have already submitted your enrollment. Re-open to make changes.'}\r\n {this.isElectionReopened && 'Submitting again will overwrite your previous enrollment.'}\r\n {!this.isOpenEnrollmentExpired && !this.isElectionsCompleted && !this.isElectionReopened && 'Yes, you can come back and make changes!'}\r\n

\r\n \r\n {this.isEmployee ? 'Complete Enrollment' : (this.isSubmitOnEmployeeBehalf ? 'Complete Enrollment' : (this.isSubmitByEmployee ? 'Save Enrollment' : 'Submit Enrollment'))}\r\n \r\n
\r\n
\r\n \r\n }\r\n \r\n }\r\n{(showEmployeeCost && employeeContribution > 0) ? (\r\n <>\r\n \r\n \r\n \r\n *Rates, coverage and effective dates are subject to carrier approval.\r\n \r\n \r\n \r\n \r\n ) : (\r\n undefined\r\n )\r\n }\r\n\r\n{this.isElectionsCompleted ?
: undefined}\r\n\r\n\r\n );\r\n };\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (PlanSelectionSummary as any).propTypes = {\r\n costCalculation: CostCalculationReducerStatePropType,\r\n enrollment: EnrollmentReducerStatePropType,\r\n plans: PropTypes.arrayOf(PlanPropType)\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const elections = ownProps.employee.elections.filter(elec => !!elec.planId || elec.isWaived);\r\n\r\n return {\r\n costCalculation: state.costCalculation,\r\n enrollment: state.enrollment,\r\n company: state.enrollment.company,\r\n elections,\r\n plans: state.plan.list\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n submitEmployeeEnrollment: (finalizedElection: FinalizedElection) => dispatch(submitEmployeeEnrollment(ownProps.companyId, ownProps.enrollmentId, ownProps.employee.id, ownProps.employee.employeeId, finalizedElection)),\r\n reOpenEmployeeEnrollment: () => dispatch(reOpenEmployeeEnrollment(ownProps.companyId, ownProps.enrollmentId, ownProps.employee.id)),\r\n fetchKaiserUrl: () => dispatch(fetchKaiserUrl(ownProps.companyId)),\r\n saveKaiserResponse: () => dispatch(saveKaiserResponse(ownProps.companyId, ownProps.enrollmentId, ownProps.employee.id, true)),\r\n calculateCosts: () => dispatch(calculateCosts())\r\n };\r\n}\r\n\r\n\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps),\r\n withWidth()\r\n)(PlanSelectionSummary)","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { compose } from 'recompose';\r\nimport MessageCard, { MessageCardLevel } from 'components/common/message_card';\r\nimport SaveButton from 'components/common/save_button';\r\nimport { PlanSelectionSummaryStyles as currentViewStyles } from '../../utility/common_styles';\r\nimport { reOpenEmployeeEnrollment } from 'redux/actions';\r\n\r\ninterface ComponentProps {\r\n companyId: any;\r\n enrollmentId: any;\r\n employeeId: any;\r\n isElectionsCompleted: boolean;\r\n isEmployeeWaiving: boolean;\r\n electionCompletedDate: string | undefined;\r\n canReopenElections: boolean;\r\n enrollmentEndDate: string;\r\n isInEligibleEmployee?: boolean;\r\n}\r\n\r\ninterface DispatchProps {\r\n reOpenEmployeeEnrollment: () => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & DispatchProps;\r\n\r\nconst ReopenElections = (props: Props) => {\r\n const [loading, setLoading] = React.useState(false);\r\n const reOpen = () => {\r\n setLoading(true);\r\n props.reOpenEmployeeEnrollment().then(() => setLoading(false));\r\n }\r\n\r\n return (\r\n \r\n
\r\n

\r\n \r\n Re-open your elections and submit your changes\r\n {props.enrollmentEndDate ? ` by ${props.enrollmentEndDate}.` : '.'}\r\n \r\n

\r\n {props.isEmployeeWaiving &&

This Employee has been marked as waiving all coverages, no further actions are needed for this employee for enrolling. Please deselect the \"Employee is waiving all coverages\" option on Personal Info to change elections.

}\r\n {props.isInEligibleEmployee &&

This employee has been marked as ineligible, no further actions needed for employee in this enrollment.

}\r\n
\r\n \r\n Re-Open Elections\r\n \r\n \r\n ) : (\r\n You need to submit again to save any changes.{props.isEmployeeWaiving && Please deselect the \"Waiving all coverages\" option in Personal Info to make any changes to elections.} \r\n )\r\n }\r\n elevation={1}\r\n hideRibbon={true}\r\n messageLevel={MessageCardLevel.information}\r\n style={currentViewStyles.messageCard}\r\n />\r\n );\r\n};\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps{\r\n return {\r\n reOpenEmployeeEnrollment: () => dispatch(reOpenEmployeeEnrollment(ownProps.companyId, ownProps.enrollmentId, ownProps.employeeId)),\r\n };\r\n}\r\n\r\nexport default compose(\r\n connect(null, mapDispatchToProps),\r\n)(ReopenElections);\r\n","import { Grid, Typography } from '@material-ui/core';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport AccountCircleIcon from '@material-ui/icons/AccountCircleOutlined';\r\nimport AssignmentTurnedInIcon from '@material-ui/icons/AssignmentTurnedInOutlined';\r\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\r\nimport PeopleIcon from '@material-ui/icons/People';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport { AbandonChangesGuard } from 'components/common/AbandonChangesOption';\r\nimport Breadcrumb from 'components/common/breadcrumb';\r\nimport DynamicStepper, { IStep } from 'components/common/dynamic_stepper';\r\nimport ElectionCostSummary from 'components/common/election_cost_summary';\r\nimport DocumentIcon from 'components/common/icons/icon_document';\r\nimport Print from 'components/common/icons/icon_print';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, RouteComponentProps } from 'react-router';\r\nimport { compose } from 'recompose';\r\nimport { isDirty, isValid } from 'redux-form';\r\nimport { Beneficiary, Company, CompanyContact, CostCalculationReducerState, Election, Employee, EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentReducerState, EnrollmentReducerStatePropType, GroupSubmissionReducerState, PlanReducerState, PlanReducerStatePropType, EmployeeStatus, ElectionRenewalInfoDTO } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { isUserReadOnly, isEndDateInFuture, locIconSelector, Zones, getLookupValue, isEmployeeCobra } from 'utility';\r\nimport auth from 'utility/auth';\r\nimport { enrollmentHasTobaccoUser, getAcknowledgmentDocuments, getEnrolleeConfigurationTypes, getEnrollees, hasAdditionalInfo, enrollmentHasChildNameDifferent, enrollmentHasChild, enrollmentHasSpouse, hasRenewalAdditionalInfo } from 'utility/employee_utils';\r\nimport { availableLOCs, sortedLOCs } from 'utility/loc_utils';\r\nimport { getBasicAndSupplementalLifeLOC, getLifeLOCS, getLookupId, getLookups, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport BasePage from '../../components/common/base_page';\r\nimport { FORM_NAME as BENEFICIARIES } from '../../components/forms/beneficiaries_form';\r\nimport { FORM_NAME as EMPLOYEE_ADDITIONAL_INFO } from '../../components/forms/employee_additional_info_form';\r\nimport { FORM_NAME as EMPLOYEE_ACKNOWLEDGED_DOCUMENTS } from '../../components/forms/employee_document_acknowledgment_form';\r\nimport { FORM_NAME as FORM_EMPLOYEE_UPSERT } from '../../components/forms/employee_upsert_form';\r\nimport { calculateCosts, fetchCompanyContacts, fetchEmployee, fetchEnrollment, fetchGroupSubmissions, fetchPlansForEmployee } from '../../redux/actions';\r\nimport routes from '../../router/routes';\r\nimport BeneficiariesContainer from './beneficiaries_container';\r\nimport ElectionContainer from './election_container';\r\nimport EmployeeAdditionalInformation from './employee_additional_information';\r\nimport EmployeeDocumentAcknowledgement from './employee_document_acknowledgment';\r\nimport EmployeeUpsert from './employee_upsert';\r\nimport PlanSelectionSummary from './plan_selection_summary';\r\nimport RtpContent, { RtpContentLocation } from 'components/common/rtp_content';\r\nimport ReopenElections from './reopen-elections';\r\nimport { fetchImportedRenewals, ImportedRenewalsDTO } from 'utility/renewal_import_utility';\r\n\r\ninterface ComponentProps { }\r\n\r\ninterface DispatchProps {\r\n fetchEmployee: (companyId: string, enrollmentId: string, employeeId: string) => Promise;\r\n fetchPlansForEmployee: (companyId: string, enrollmentId: string, employeeId: string) => Promise;\r\n fetchEnrollment: (companyId: string) => Promise;\r\n fetchCompanyContacts: (companyId: string, enrollmentId: string) => Promise;\r\n fetchGroupSubmissions: (companyId: string, enrollmentId: string) => Promise;\r\n calculatePlanCosts: () => Promise;\r\n}\r\ninterface MappedProps {\r\n employeeState: EmployeeReducerState;\r\n CompanyContacts: CompanyContact[];\r\n planState: PlanReducerState;\r\n enrollmentState: EnrollmentReducerState;\r\n groupApplicationState: GroupSubmissionReducerState;\r\n isEmployUpsertDirty: boolean;\r\n isEmployUpsertValid: boolean;\r\n isBeneficiarDirty: boolean;\r\n isAdditionalInfoDirty: boolean;\r\n isDocumentAcknowledgmentDirty: boolean;\r\n costCalculation: CostCalculationReducerState;\r\n company: Company;\r\n}\r\n\r\ntype Props = RouteComponentProps & WithWidth & DispatchProps & MappedProps & StyledComponentProps;\r\n\r\ninterface State {\r\n initialLoading: boolean;\r\n nextStepId?: number;\r\n currentElection?: Election | null;\r\n importedRenewals: ImportedRenewalsDTO[];\r\n}\r\n\r\nclass GuidedEnrollment extends React.PureComponent{\r\n electionCompleteId = getLookupId('COMPLETED', LOOKUP_TYPE_IDS.electionStatus);\r\n electionSubmittedId = getLookupId('SUBMITTED', LOOKUP_TYPE_IDS.electionStatus);\r\n reopenedStatusId = getLookupId('REOPENED', LOOKUP_TYPE_IDS.electionStatus);\r\n renewalQuestionsPendingStatus = getLookupId('RENEWALQUESTIONSPENDING', LOOKUP_TYPE_IDS.electionStatus);\r\n\r\n ltdLOC = getLookupId('LTD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n stdLOC = getLookupId('STD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n medicalLOC = getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n visionLOC = getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n dentalLOC = getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n childLifeLOC = getLookupId('CHILDLIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n groupLifeLOC = getLookupId('GROUPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n spouseLifeLOC = getLookupId('SPOUSELIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n suppLifeLOC = getLookupId('SUPPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n accidentLOC = getLookupId('ACCIDENT', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n criticalIllnessLOC = getLookupId('CRITICALILLNESS', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n hospitalLOC = getLookupId('HOSPITAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n petLOC = getLookupId('PETINSURANCE', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n identityProtectionLoc = getLookupId('IDENTITYPROTECTION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n legalLoc = getLookupId('LEGAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n gapLOC = getLookupId('GAPLOC', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n masaLOC = getLookupId('MASA', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n\r\n allLOCs = sortedLOCs();\r\n lifeLOCs = getLifeLOCS();\r\n\r\n primaryBeneficiary = getLookupId('PRIMARY', LOOKUP_TYPE_IDS.beneficiaryType);\r\n\r\n lookups = getLookups();\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n initialLoading: true,\r\n importedRenewals: []\r\n };\r\n }\r\n\r\n get employeeId() {\r\n const employeeIdVarName = routes.guidedEnrollment.params!.employeeId!.replace(':', '');\r\n return this.props.match.params[employeeIdVarName];\r\n }\r\n\r\n get companyId() {\r\n const companyIdVarName = routes.guidedEnrollment.params!.companyId!.replace(':', '');\r\n return this.props.match.params[companyIdVarName];\r\n }\r\n\r\n get enrollmentId() {\r\n const enrollmentIdVarName = routes.guidedEnrollment.params!.enrollmentId!.replace(':', '');\r\n return this.props.match.params[enrollmentIdVarName];\r\n }\r\n\r\n get activeStep() {\r\n const stepIdVarName = routes.guidedEnrollment.params!.stepId!.replace(':', '').replace('?', '');\r\n const step = parseInt(this.props.match.params[stepIdVarName]);\r\n return isNaN(step) ? undefined : step;\r\n }\r\n\r\n onElectionChanged = (election: Election) => {\r\n this.setState({ currentElection: election });\r\n }\r\n\r\n async componentDidMount() {\r\n const promises: Promise[] = [\r\n this.props.fetchEmployee(this.companyId, this.enrollmentId, this.employeeId),\r\n this.props.fetchPlansForEmployee(this.companyId, this.enrollmentId, this.employeeId)\r\n ];\r\n\r\n if (auth.isUserEmployer()) {\r\n promises.push(this.props.fetchCompanyContacts(this.companyId, this.enrollmentId));\r\n }\r\n\r\n if (!this.props.enrollmentState.id) {\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n }\r\n\r\n if (auth.isUserEmployee() && this.props.groupApplicationState.list.length === 0) {\r\n promises.push(this.props.fetchGroupSubmissions(this.companyId, this.enrollmentId));\r\n }\r\n\r\n try {\r\n await Promise.all(promises);\r\n\r\n const { enrollmentState } = this.props;\r\n const isReadOnly = isUserReadOnly(enrollmentState, Zones.EnrollmentSteps);\r\n\r\n // asynchronous actions\r\n this.calculatePlanCosts();\r\n\r\n this.fetchImportedRenewals();\r\n\r\n if (\r\n (this.employee && !this.employee.isInEligible &&\r\n (this.employee.electionStatusId === this.electionCompleteId || this.employee.electionStatusId === this.electionSubmittedId)\r\n ) || isReadOnly) {\r\n this.props.history.replace(this.getStepUrl(this.reviewStepId));\r\n } else {\r\n this.props.history.replace(this.getStepUrl(this.personalInfoStepId));\r\n }\r\n this.setState({ initialLoading: false });\r\n } finally {\r\n }\r\n }\r\n\r\n _employee = memoizeOne((employees: Employee[], employeeId: string) => employees.find(emp => emp.id === employeeId));\r\n get employee(): Employee | undefined {\r\n return this._employee(this.props.employeeState.list, this.employeeId);\r\n }\r\n\r\n _employeeInfoStatus = memoizeOne((employeeStatusList: EmployeeStatus[], employeeId: string) => employeeStatusList.find(status => status.id == employeeId));\r\n get employeeInfoStatus(): EmployeeStatus | undefined {\r\n return this._employeeInfoStatus(this.props.employeeState.infoStatusList, this.employeeId);\r\n }\r\n\r\n _isEnrollmentMine = memoizeOne((employeeId: string | undefined, compnayContacts: CompanyContact[]) => {\r\n if (!employeeId || compnayContacts.length === 0) return false;\r\n const myEmail = auth.getUserName();\r\n const contacts = compnayContacts.filter(c => c.email === myEmail);\r\n if (contacts.length > 0 && contacts[0].employeeId) {\r\n return employeeId === contacts[0].employeeId\r\n }\r\n return false;\r\n })\r\n get isEnrollmentMine() {\r\n return this._isEnrollmentMine(this.employee ? this.employee.id : undefined, this.props.CompanyContacts);\r\n }\r\n\r\n get isUserEmployee() {\r\n return auth.isUserEmployee();\r\n }\r\n get availableLOCs() {\r\n return availableLOCs(this.props.planState.list, this.employee);\r\n }\r\n get personalInfoStepId() {\r\n return this.allLOCs[0].id - 1;\r\n }\r\n get beneficiariesStepId() {\r\n return this.allLOCs[this.allLOCs.length - 1].id + 150;\r\n }\r\n get documentAcknowledgmentStepId() {\r\n return this.allLOCs[this.allLOCs.length - 1].id + 300;\r\n }\r\n get additionalInfoStepId() {\r\n return this.allLOCs[this.allLOCs.length - 1].id + 450;\r\n }\r\n get reviewStepId() {\r\n return this.additionalInfoStepId + 1;\r\n }\r\n get electionComplete() {\r\n return this.employee && (this.employee.electionStatusId === this.electionCompleteId || this.employee.electionStatusId === this.electionSubmittedId);\r\n }\r\n get isElectionsSubmitted(){\r\n return this.employee!.electionStatusId === this.electionSubmittedId;\r\n }\r\n get isElectionReopened(){\r\n return this.employee!.electionStatusId === this.reopenedStatusId;\r\n } \r\n get isElectionsCompleted() {\r\n const isOpenEnrollmentExpired = this.props.enrollmentState.openEnrollmentExpired || false;\r\n return (this.employee!.electionStatusId === this.renewalQuestionsPendingStatus || this.employee!.electionStatusId === this.electionCompleteId) \r\n && !isOpenEnrollmentExpired;\r\n }\r\n get isElectionCompletedOrReopened() {\r\n return this.isElectionReopened \r\n || this.isElectionsCompleted \r\n //Admins are allowed to reopen even if the status is already opend\r\n || (auth.isUserEnrollmentSuperAdmin() && this.isElectionsSubmitted);\r\n }\r\n get canReopenElections() {\r\n return this.isElectionsCompleted || (this.isElectionsSubmitted && auth.isUserEnrollmentSuperAdmin());\r\n }\r\n\r\n beneficiarySums = memoizeOne((beneficiaries: Beneficiary[]) => {\r\n const sums = { primary: 0, contingent: 0 };\r\n beneficiaries.forEach(ben => {\r\n if (ben.beneficiaryTypeId === this.primaryBeneficiary)\r\n sums.primary += ben.benefitPercentage;\r\n else\r\n sums.contingent += ben.benefitPercentage;\r\n });\r\n return sums;\r\n });\r\n\r\n hasBasicSupplementalLifeElections = memoizeOne((elections: Election[]) => {\r\n const basicSupplementalLifeLOC = getBasicAndSupplementalLifeLOC();\r\n const result = elections.some(el => basicSupplementalLifeLOC.map(lookup => lookup.id).includes(el.lineOfCoverageId) && !el.isWaived);\r\n return result;\r\n });\r\n\r\n getStepIcon = (loc: number) => {\r\n const { classes = {} } = this.props;\r\n let StepIcon: any;\r\n switch (loc) {\r\n case this.personalInfoStepId:\r\n StepIcon = AccountCircleIcon;\r\n return () => ;\r\n case this.medicalLOC:\r\n StepIcon = locIconSelector('MEDICAL');\r\n return () => ;\r\n case this.dentalLOC:\r\n StepIcon = locIconSelector('DENTAL');\r\n return () => ;\r\n case this.visionLOC:\r\n StepIcon = locIconSelector('VISION');\r\n return () => ;\r\n case this.stdLOC:\r\n case this.ltdLOC:\r\n StepIcon = locIconSelector('DISABILITY');\r\n return () => ;\r\n case this.childLifeLOC:\r\n case this.spouseLifeLOC:\r\n case this.groupLifeLOC:\r\n case this.suppLifeLOC:\r\n StepIcon = locIconSelector('LIFE');\r\n return () => ;\r\n case this.accidentLOC:\r\n case this.criticalIllnessLOC:\r\n case this.hospitalLOC:\r\n StepIcon = locIconSelector('VOLUNTARY');\r\n return () => ;\r\n case this.petLOC:\r\n StepIcon = locIconSelector('PET');\r\n return () => ;\r\n case this.identityProtectionLoc:\r\n StepIcon = locIconSelector('IDENTITYPROTECTION');\r\n return () => ;\r\n case this.legalLoc:\r\n StepIcon = locIconSelector('LEGAL');\r\n return () => ;\r\n case this.gapLOC:\r\n StepIcon = locIconSelector('GAPLOC');\r\n return () => ;\r\n case this.masaLOC:\r\n StepIcon = locIconSelector('MASA');\r\n return () => ;\r\n case this.beneficiariesStepId:\r\n StepIcon = PeopleIcon;\r\n return () => \r\n case this.documentAcknowledgmentStepId:\r\n StepIcon = DocumentIcon;\r\n return () => \r\n case this.additionalInfoStepId:\r\n StepIcon = InfoOutlinedIcon;\r\n return () => \r\n case this.reviewStepId:\r\n StepIcon = AssignmentTurnedInIcon;\r\n return () => \r\n default:\r\n return undefined;\r\n }\r\n };\r\n\r\n calculatePlanCosts = () => {\r\n const { employeeState, planState } = this.props;\r\n if (employeeState.list.length > 0 && planState.list.length > 0) {\r\n this.props.calculatePlanCosts();\r\n }\r\n };\r\n\r\n fetchImportedRenewals = () => {\r\n fetchImportedRenewals(this.companyId, this.enrollmentId, this.employeeId)\r\n .then(result => this.setState({importedRenewals: result}));\r\n }\r\n\r\n computeStepInfo = () => {\r\n // initialize data\r\n const completedSteps: Set = new Set();\r\n const incompleteSteps: Set = new Set();\r\n const inCompleteRenewalSteps: Set = new Set();\r\n const steps: IStep[] = [];\r\n const lookups = getLookups();\r\n const employee = this.employee;\r\n\r\n if (!employee) {\r\n return {\r\n steps, completedSteps, incompleteSteps, inCompleteRenewalSteps\r\n }\r\n }\r\n\r\n const configurationTypes = getEnrolleeConfigurationTypes(this.props.planState.list, employee.elections, employee.id);\r\n let hideAdditionalInfo = true;\r\n\r\n let enrollees = getEnrollees(employee);\r\n const enrolleesIds = enrollees.map(e => e.id);\r\n const hasTobaccoUser = enrollmentHasTobaccoUser(employee, enrolleesIds);\r\n const isSpouse = enrollmentHasSpouse(employee.dependents, enrolleesIds);\r\n const isChild = enrollmentHasChild(employee.dependents, enrolleesIds);\r\n const isChildLastNameDiffFound = enrollmentHasChildNameDifferent(employee, enrolleesIds);\r\n const isRenewalAdditionalInfo = employee.renewalChangeInfo && employee.renewalChangeInfo.length > 0;\r\n const hasRenewalInfo = hasRenewalAdditionalInfo(configurationTypes) && isRenewalAdditionalInfo;\r\n hideAdditionalInfo = hasAdditionalInfo(configurationTypes, hasTobaccoUser, isSpouse, isChild, isChildLastNameDiffFound) || hasRenewalInfo;\r\n\r\n let hideBeneficiaries = true;\r\n for (let key in configurationTypes) {\r\n const found = [23].some(i => configurationTypes[key].has(i));\r\n if (found) {\r\n hideBeneficiaries = false;\r\n break\r\n }\r\n }\r\n\r\n let hideDocumentAcknowledgment = true;\r\n let documents = getAcknowledgmentDocuments(employee, this.props.planState.list)\r\n if (documents.length > 0) hideDocumentAcknowledgment = false;\r\n\r\n // build step logic\r\n steps.push(\r\n {\r\n id: this.personalInfoStepId,\r\n label: 'Personal Info',\r\n icon: this.getStepIcon(this.personalInfoStepId)\r\n }\r\n );\r\n\r\n if(employee.isInEligible){\r\n completedSteps.add(this.personalInfoStepId);\r\n return {\r\n steps, completedSteps, incompleteSteps, inCompleteRenewalSteps\r\n }\r\n }\r\n\r\n if(employee.isEmployeeWaiving){\r\n completedSteps.add(this.personalInfoStepId);\r\n }\r\n\r\n this.availableLOCs.forEach(loc => {\r\n steps.push({ \r\n id: loc,\r\n label: lookups[loc].value,\r\n icon: this.getStepIcon(loc)\r\n });\r\n });\r\n\r\n if (!hideBeneficiaries) {\r\n steps.push({\r\n id: this.beneficiariesStepId,\r\n label: 'Beneficiaries',\r\n icon: this.getStepIcon(this.beneficiariesStepId)\r\n });\r\n }\r\n if (!hideDocumentAcknowledgment) {\r\n steps.push({\r\n id: this.documentAcknowledgmentStepId,\r\n label: 'Document Review',\r\n icon: this.getStepIcon(this.documentAcknowledgmentStepId)\r\n })\r\n }\r\n if (hideAdditionalInfo) {\r\n steps.push({\r\n id: this.additionalInfoStepId,\r\n label: 'Additional Info',\r\n icon: this.getStepIcon(this.additionalInfoStepId)\r\n });\r\n }\r\n\r\n steps.push({\r\n id: this.reviewStepId,\r\n label: 'Review',\r\n icon: this.getStepIcon(this.reviewStepId)\r\n });\r\n\r\n // calculate employee specific info\r\n if (this.employee) {\r\n if (this.employeeInfoStatus && this.employeeInfoStatus.personalInfoComplete)\r\n completedSteps.add(this.personalInfoStepId);\r\n else if (!!this.employee.lastUpdatedByCurrentUser)\r\n incompleteSteps.add(this.personalInfoStepId); \r\n\r\n this.availableLOCs.forEach(loc => {\r\n const election = employee.elections.find(el => el.lineOfCoverageId === loc);\r\n if (election) {\r\n if (this != undefined \r\n && this.employeeInfoStatus != undefined \r\n && this.employeeInfoStatus.failedLoCIds != undefined \r\n && this.employeeInfoStatus.failedLoCIds.includes(loc))\r\n incompleteSteps.add(loc);\r\n else\r\n completedSteps.add(loc);\r\n\r\n if(!this.isUserEmployee && election.renewalInfo && election.renewalInfo.employeeSkippedRenewalQuestions)\r\n inCompleteRenewalSteps.add(loc);\r\n }\r\n });\r\n\r\n if(!employee.jobTitle && !employee.isEmployeeWaiving){\r\n incompleteSteps.add(this.personalInfoStepId);\r\n } \r\n\r\n if (!employee.weeklyHours && !isEmployeeCobra(employee.employmentStatusId || 0)){\r\n incompleteSteps.add(this.personalInfoStepId);\r\n } \r\n\r\n if (!hideBeneficiaries) {\r\n const beneficiarySums = this.beneficiarySums(this.employee.beneficiaries);\r\n if (beneficiarySums.primary === 100 && ([0, 100].includes(beneficiarySums.contingent))) {\r\n completedSteps.add(this.beneficiariesStepId);\r\n }\r\n }\r\n\r\n if (!hideDocumentAcknowledgment) {\r\n if (employee.acknowledgedDocuments && documents.length > 0 && documents.length === employee.acknowledgedDocuments.length) {\r\n completedSteps.add(this.documentAcknowledgmentStepId);\r\n }\r\n }\r\n\r\n if (hideAdditionalInfo) {\r\n if (this.employeeInfoStatus && this.employeeInfoStatus.additionalInfoComplete)\r\n completedSteps.add(this.additionalInfoStepId);\r\n }\r\n\r\n if (this.employee.electionStatusId === this.electionCompleteId || this.employee.electionStatusId === this.renewalQuestionsPendingStatus || this.employee.electionStatusId === this.electionSubmittedId)\r\n completedSteps.add(this.reviewStepId);\r\n }\r\n\r\n return {\r\n completedSteps,\r\n incompleteSteps,\r\n inCompleteRenewalSteps,\r\n steps,\r\n }\r\n };\r\n\r\n changeStep = (direction: 'BACKWARDS' | 'FORWARDS') => {\r\n const { steps } = this.computeStepInfo();\r\n\r\n const activeIndex = steps.findIndex(step => step.id === this.activeStep);\r\n const nextStep = steps[activeIndex + (direction === 'BACKWARDS' ? -1 : 1)];\r\n\r\n if (nextStep) {\r\n this.jumpStep(nextStep.id);\r\n }\r\n }\r\n\r\n jumpStep = (loc: number) => {\r\n this.setState({ currentElection: null });\r\n const stepIdVarName = routes.guidedEnrollment.params!.stepId!.replace(':', '').replace('?', '');\r\n const step = parseInt(this.props.match.params[stepIdVarName]);\r\n const mobile = this.props.width === 'xs' || this.props.width === 'sm';\r\n if (loc === step && mobile) {\r\n this.props.history.push('null');\r\n } else\r\n this.props.history.push(this.getStepUrl(loc || this.personalInfoStepId));\r\n }\r\n\r\n getStepUrl = (loc: number) => {\r\n const { path, params } = routes.guidedEnrollment;\r\n return path.replace(params!.companyId!, this.companyId)\r\n .replace(params!.enrollmentId!, this.enrollmentId)\r\n .replace(params!.employeeId!, this.employeeId)\r\n .replace(params!.stepId!, loc.toString())\r\n }\r\n\r\n getWarningMessage = () => {\r\n // Display warning messgaes based on regular LOC OR Life/Disability LOC\r\n var warningMsgs: { [id: number]: JSX.Element } = {};\r\n const isBroker = auth.isUserEnrollmentManager();\r\n const { classes = {} } = this.props;\r\n\r\n let enrollmentSetUpMsg: JSX.Element =
Please confirm enrollment setup prior to making elections for employees. You can still save the Personal Info and Additional Info.
;\r\n\r\n this.availableLOCs.forEach(locId => {\r\n warningMsgs[locId] = (\r\n
{(isBroker && !this.props.enrollmentState.setupCompletedOn)\r\n ?\r\n \r\n \r\n \r\n {enrollmentSetUpMsg}\r\n \r\n \r\n : }\r\n\r\n
\r\n
\r\n );\r\n });\r\n\r\n return warningMsgs;\r\n };\r\n\r\n backToDashboard = (index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n };\r\n\r\n _getBreadCrumb = memoizeOne((employee: Employee) => {\r\n return ['Dashboard', 'Elections for ' + employee.fullName];\r\n });\r\n\r\n get breadCrumb() {\r\n if (this.employee && this.employee.fullName)\r\n return this._getBreadCrumb(this.employee);\r\n else\r\n return ['Dashboard', 'Elections']\r\n }\r\n\r\n goBack = () => {\r\n this.changeStep('BACKWARDS')\r\n }\r\n\r\n isAllstateOffered = () => {\r\n let AllstatePlans = this.props.planState.list.filter(p => p.carrierCode.toUpperCase() === getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode) );\r\n return AllstatePlans && AllstatePlans.length>0\r\n }\r\n isAllstateCriticalOffered = () => {\r\n let AllstatePlans = this.props.planState.list.filter(p => p.carrierCode.toUpperCase() === getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode) && p.lineOfCoverageId === getLookupId('CRITICALILLNESS', LOOKUP_TYPE_IDS.lineOfCoverage));\r\n return AllstatePlans && AllstatePlans.length > 0\r\n }\r\n\r\n onDone = (jumpToNextStep = true) => {\r\n if (jumpToNextStep) {\r\n const nextStepId = this.state.nextStepId\r\n if (nextStepId) {\r\n this.setState({\r\n nextStepId: 0\r\n }, () => {\r\n this.jumpStep(nextStepId)\r\n })\r\n } else {\r\n this.setState({\r\n nextStepId: 0\r\n }, () => {\r\n this.changeStep('FORWARDS')\r\n })\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { enrollmentState, classes = {}, costCalculation, company } = this.props;\r\n const isReadOnly = isUserReadOnly(enrollmentState, Zones.EnrollmentSteps);\r\n const { initialLoading: loading } = this.state;\r\n const isSuperAdmin = auth.isUserEnrollmentSuperAdmin();\r\n const { steps, completedSteps, incompleteSteps, inCompleteRenewalSteps } = this.computeStepInfo();\r\n const showPrintIcon = this.activeStep === this.reviewStepId && this.electionComplete;\r\n const mobile = this.props.width === 'xs' || this.props.width === 'sm';\r\n const isEmployee = auth.isUserEmployee();\r\n const hasDOB = this.employee && !!this.employee.dateOfBirth;\r\n const hideEnrollmentCostSummary = this.activeStep === this.reviewStepId;\r\n const endDateIsInFuture = isEndDateInFuture(enrollmentState);\r\n var endDateMessage = \"\";\r\n const reduceValidation = enrollmentState.reduceValidation;\r\n const electionCompletedDate = this.employee && this.employee.electionCompletedDate && this.employee.electionCompletedDate.format('LL') || '';\r\n const enrollmentEndDate = enrollmentState.started ? enrollmentState.endDate!.format('ll') : '';\r\n const isInEligible = this.employee && this.employee.isInEligible;\r\n\r\n if (enrollmentState.endDate !== undefined) {\r\n endDateMessage = \"As of \" + enrollmentState.endDate.format('MM/DD/YYYY') + \", your open enrollment has ended.\";\r\n //endDateMessage2 = \"Please contact your benefits administrator.\";\r\n }\r\n\r\n if (loading) {\r\n return \r\n
\r\n

Loading your information

\r\n \r\n
\r\n
\r\n }\r\n\r\n if (!this.activeStep && !mobile) {\r\n return \r\n \r\n \r\n }\r\n\r\n if (!this.employee) {\r\n return \r\n \r\n \r\n }\r\n\r\n return {\r\n this.setState({ nextStepId: typeof loc === 'number' ? loc : undefined })\r\n }}>{guard => \r\n
\r\n {enrollmentState.company.name}
\r\n
\r\n
\r\n {!isEmployee &&\r\n \r\n }{isEmployee &&\r\n \r\n {this.activeStep === steps.length - 1 ? `${enrollmentState.startDate!.year()} Open Enrollment for ${this.employee!.fullName}` : `Employee Enrollment for ${this.employee!.fullName}`}\r\n \r\n }\r\n
\r\n
\r\n Employee Enrollment for {this.employee!.fullName}\r\n
\r\n {showPrintIcon &&\r\n
\r\n \r\n
\r\n }\r\n \r\n \r\n \r\n \r\n }\r\n stepContentHeader={this.isElectionCompletedOrReopened && !isReadOnly ? \r\n <>\r\n \r\n : <>\r\n }\r\n stepContent={(step?: number) => {\r\n const readyToSubmit = reduceValidation || (completedSteps.size >= steps.filter(step => !step.hidden).length - 1);\r\n\r\n switch (step) {\r\n case this.personalInfoStepId:\r\n return (\r\n \r\n );\r\n case this.medicalLOC:\r\n case this.dentalLOC:\r\n case this.visionLOC:\r\n case this.childLifeLOC:\r\n case this.spouseLifeLOC:\r\n case this.groupLifeLOC:\r\n case this.suppLifeLOC:\r\n case this.ltdLOC:\r\n case this.stdLOC:\r\n case this.accidentLOC:\r\n case this.criticalIllnessLOC:\r\n case this.hospitalLOC:\r\n case this.petLOC:\r\n case this.identityProtectionLoc:\r\n case this.legalLoc:\r\n case this.gapLOC:\r\n case this.masaLOC:\r\n return (\r\n \r\n );\r\n case this.beneficiariesStepId:\r\n return (\r\n \r\n );\r\n case this.documentAcknowledgmentStepId:\r\n return (\r\n \r\n )\r\n case this.additionalInfoStepId:\r\n return (\r\n \r\n );\r\n case this.reviewStepId:\r\n return (\r\n \r\n );\r\n default:\r\n return ();\r\n }\r\n }}\r\n disabled={(this.electionComplete && !isSuperAdmin) || (!hasDOB) || isReadOnly || (isEmployee)}\r\n warningMessages={this.getWarningMessage()}\r\n onClick={guard(this.jumpStep)}\r\n />\r\n
}
\r\n }\r\n};\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (GuidedEnrollment as any).propTypes = {\r\n employeeState: EmployeeReducerStatePropType,\r\n planState: PlanReducerStatePropType,\r\n enrollmentState: EnrollmentReducerStatePropType\r\n }\r\n}\r\n\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n blueIcon: {\r\n fontSize: 24,\r\n color: palette.blue.primary,\r\n height: '100%'\r\n },\r\n breadCrumb: {\r\n float: 'left'\r\n },\r\n centerText: {\r\n textAlign: 'center'\r\n },\r\n paddedContent: {\r\n paddingLeft: 10,\r\n paddingRight: 10\r\n },\r\n printIconBox: {\r\n float: 'right'\r\n },\r\n printIcon: {\r\n cursor: 'pointer',\r\n fontSize: '32px',\r\n marginTop: '-12px',\r\n color: palette.grey.darkGrey\r\n },\r\n primaryTitle: {\r\n fontSize: 34,\r\n letterSpacing: 0.25,\r\n lineHeight: 1.5,\r\n color: palette.grey.text,\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\r\n },\r\n text: {\r\n color: palette.grey.text\r\n },\r\n titleMobile: {\r\n fontSize: '1.5rem'\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary,\r\n fontSize: 24,\r\n marginLeft: 7\r\n },\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n isEmployUpsertDirty: FORM_EMPLOYEE_UPSERT ? isDirty(FORM_EMPLOYEE_UPSERT)(state) : false,\r\n isEmployUpsertValid: isValid(FORM_EMPLOYEE_UPSERT)(state),\r\n isBeneficiarDirty: BENEFICIARIES ? isDirty(BENEFICIARIES)(state) : false,\r\n isAdditionalInfoDirty: EMPLOYEE_ADDITIONAL_INFO ? isDirty(EMPLOYEE_ADDITIONAL_INFO)(state) : false,\r\n isDocumentAcknowledgmentDirty: EMPLOYEE_ACKNOWLEDGED_DOCUMENTS ? isDirty(EMPLOYEE_ACKNOWLEDGED_DOCUMENTS)(state) : false,\r\n employeeState: state.employee,\r\n planState: state.plan,\r\n enrollmentState: state.enrollment,\r\n CompanyContacts: state.enrollment.companyContacts,\r\n groupApplicationState: state.groupSubmission,\r\n costCalculation: state.costCalculation,\r\n company: state.enrollment.company\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchEmployee: (companyId, enrollmentId, employeeId) => dispatch(fetchEmployee(companyId, enrollmentId, employeeId)),\r\n fetchPlansForEmployee: (companyId, enrollmentId, employeeId) => dispatch(fetchPlansForEmployee(companyId, enrollmentId, employeeId)),\r\n fetchEnrollment: enrollmentId => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchCompanyContacts: (companyId, enrollmentId) => dispatch(fetchCompanyContacts(companyId, enrollmentId)),\r\n fetchGroupSubmissions: (companyId, enrollmentId) => dispatch(fetchGroupSubmissions(companyId, enrollmentId)),\r\n calculatePlanCosts: () => dispatch(calculateCosts())\r\n }\r\n}\r\n\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps),\r\n withStyles(styles),\r\n withWidth(),\r\n)(GuidedEnrollment);","import React from 'react';\r\nimport { Redirect, RouteComponentProps } from 'react-router';\r\nimport routes from 'router/routes';\r\nimport auth from 'utility/auth';\r\n\r\ninterface Props extends RouteComponentProps { }\r\n\r\ninterface State {\r\n authenticating: boolean;\r\n}\r\n\r\nclass Home extends React.PureComponent {\r\n isLoggedIn = false;\r\n isLocalHost = false;\r\n redirectURL = routes.loginComplete.path;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.isLoggedIn = auth.isLoggedIn();\r\n this.isLocalHost = window.location.hostname === \"localhost\";\r\n\r\n if (!this.isLoggedIn && !this.isLocalHost) {\r\n auth.loginEmployee();\r\n }\r\n }\r\n\r\n render() {\r\n if (!this.isLoggedIn && !this.isLocalHost) {\r\n return (\r\n
\r\n
Redirecting to login
\r\n
\r\n );\r\n }\r\n\r\n if (this.isLocalHost) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Home;","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport withWidth, { WithWidth } from '@material-ui/core/withWidth';\r\nimport EventIcon from '@material-ui/icons/Event';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Route, RouteComponentProps } from 'react-router';\r\nimport { compose } from 'redux';\r\nimport { fetchEmployee, fetchEnrollment, fetchPlansForEmployee } from 'redux/actions';\r\nimport { Employee, EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentReducerState, EnrollmentReducerStatePropType, Plan, PlanReducerState, PlanReducerStatePropType } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport { getLOCs, getLookups } from 'utility/lookup_utils';\r\nimport { locIconSelector } from 'utility/simple_utils';\r\nimport BasePage from '../../components/common/base_page';\r\nimport Heart from '../../components/common/icons/icon_heart';\r\nimport { calculateEnrollmentTimeframe, isEnrollmentLockedOut } from '../../utility';\r\nimport auth from '../../utility/auth';\r\nimport palette from '../../utility/palette';\r\nimport NotFound from '../common/not_found';\r\n\r\ninterface ComponentProps {\r\n employee: Employee;\r\n}\r\n\r\ninterface MappedProps {\r\n planState: PlanReducerState,\r\n enrollmentState: EnrollmentReducerState,\r\n employeeState: EmployeeReducerState,\r\n}\r\ninterface DispatchProps {\r\n fetchPlans: (compayId: string, enrollmentId: string, employeeId: string) => Promise;\r\n fetchEnrollment: (compayId: string) => Promise;\r\n fetchEmployee: (compayId: string, enrollmentId: string, employeeId: string) => Promise;\r\n}\r\n\r\ntype Props = MappedProps & DispatchProps & ComponentProps & RouteComponentProps & WithWidth & StyledComponentProps;\r\n\r\ninterface State {\r\n loading: boolean;\r\n}\r\n\r\nclass EmployeeLanding extends React.PureComponent {\r\n lookups = getLookups();\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true\r\n };\r\n }\r\n\r\n get companyId() {\r\n const companyIdVarName = routes.employeeLanding.params!.companyId!.replace(':', '');\r\n return this.props.match.params[companyIdVarName];\r\n }\r\n\r\n get enrollmentId() {\r\n const enrollmentIdVarName = routes.employeeLanding.params!.enrollmentId!.replace(':', '');\r\n return this.props.match.params[enrollmentIdVarName];\r\n }\r\n\r\n get employeeId() {\r\n const employeeIdVarName = routes.employeeLanding.params!.employeeId!.replace(':', '');\r\n return this.props.match.params[employeeIdVarName];\r\n }\r\n\r\n get employee() {\r\n return this.props.employeeState.list.find(emp => emp.id === this.employeeId);\r\n }\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n\r\n if (!this.employee) {\r\n promises.push(this.props.fetchEmployee(this.companyId, this.enrollmentId, this.employeeId));\r\n }\r\n\r\n promises.push(this.props.fetchPlans(this.companyId, this.enrollmentId, this.employeeId));\r\n\r\n if (!this.props.enrollmentState.id) {\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n }\r\n\r\n this.loadingOn();\r\n Promise.all(promises).then(this.shouldGoToGuidedEnrollment, this.loadingOff);\r\n }\r\n\r\n shouldGoToGuidedEnrollment = () => {\r\n if (this.employee && !auth.isFirstTimeLogin) {\r\n this.goToGuidedEnrollment();\r\n } else {\r\n this.loadingOff();\r\n }\r\n };\r\n\r\n goToGuidedEnrollment = () => {\r\n const { path, params } = routes.guidedEnrollment;\r\n const route = path.replace(params!.companyId!, this.companyId)\r\n .replace(params!.enrollmentId!, this.enrollmentId)\r\n .replace(params!.employeeId!, this.employeeId)\r\n .replace(params!.stepId!, '');\r\n this.props.history.push(route);\r\n };\r\n\r\n getLinesOfCoverage = memoizeOne((planList: Plan[]) => {\r\n const locIds = planList.map(plan => plan.lineOfCoverageId);\r\n const locsPresent = getLOCs().filter(loc => locIds.indexOf(loc.id) > -1);\r\n const baseLOCs = new Set();\r\n locsPresent.forEach(loc => baseLOCs.add(loc.parentIds[0]));\r\n return Array.from(baseLOCs).map(locId => this.lookups[locId]);\r\n });\r\n\r\n render() {\r\n const { enrollmentState, classes = {} } = this.props;\r\n const { headline } = enrollmentState.started ? calculateEnrollmentTimeframe(enrollmentState.startDate!, enrollmentState.endDate!) : { headline: 'XX' };\r\n const enrollmentYear = enrollmentState.endDate ? enrollmentState.endDate.format('YYYY') : '';\r\n const mobile = this.props.width === 'xs';\r\n const h4ToH6 = !mobile ? 'h4' : 'h6';\r\n const h6ToSubtitle = !mobile ? 'h6' : 'subtitle1';\r\n const currentEmployee = this.props.employeeState.list.find(emp => emp.id === this.employeeId);\r\n const isIneligible = currentEmployee ? currentEmployee.isInEligible : false;\r\n return (\r\n <>\r\n {this.state.loading ?\r\n \r\n
\r\n

Loading your information

\r\n \r\n
\r\n
\r\n :\r\n <>\r\n {isEnrollmentLockedOut(enrollmentState) ?\r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n {`Welcome ${this.employee!.firstName}!`}\r\n \r\n
\r\n \r\n {isIneligible ? `Your benefits administrator has deemed you as ineligible for making elections for open enrollment this year. Please reach out to your administrator if you have any questions.` : `It's time for ${enrollmentYear} open enrollment.`}\r\n \r\n
\r\n
\r\n \r\n \r\n {headline}\r\n \r\n
\r\n {enrollmentState.started &&\r\n \r\n {`${enrollmentState.startDate!.format('LL')}`} - {`${enrollmentState.endDate!.format('LL')}`}\r\n \r\n }\r\n
\r\n
\r\n {!isIneligible &&\r\n <>\r\n \r\n \r\n \r\n You can enroll in the following benefit(s):\r\n \r\n
\r\n
    \r\n {this.getLinesOfCoverage(this.props.planState.list).map(loc => {\r\n const Icon = locIconSelector(loc.key) || Heart;\r\n return (\r\n
  • \r\n \r\n \r\n {loc.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 You'll need the following information:\r\n \r\n
    \r\n
  • \r\n \r\n Your Contact Information\r\n \r\n
  • \r\n
  • \r\n \r\n Your Social Security Number\r\n \r\n
  • \r\n
  • \r\n \r\n Dependent Social Security Number(s)\r\n \r\n
  • \r\n
  • \r\n \r\n Dependent Date(s) of Birth\r\n \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n SELECT MY BENEFITS\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\nif (process.env.NODE_ENV !== \"production\") {\r\n (EmployeeLanding as any).propTypes = {\r\n employeeState: EmployeeReducerStatePropType,\r\n planState: PlanReducerStatePropType,\r\n enrollmentState: EnrollmentReducerStatePropType\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n outerGrid: {\r\n marginTop: 20\r\n },\r\n paper: {\r\n padding: 20\r\n },\r\n header: {\r\n textAlign: 'center'\r\n },\r\n eventIcon: {\r\n fontSize: 80,\r\n color: palette.blue.primary\r\n },\r\n countdown: {\r\n color: palette.blue[900]\r\n },\r\n fullHeightPaper: {\r\n height: 'calc(100% - 40px)'\r\n },\r\n alignCenter: {\r\n textAlign: 'center'\r\n },\r\n locListPadding: {\r\n paddingLeft: 'calc(50% - 80px)'\r\n },\r\n locSpan: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n marginTop: 20\r\n },\r\n iconLOC: {\r\n fontSize: 32,\r\n marginRight: 20\r\n },\r\n iconLOCMobile: {\r\n fontSize: 32,\r\n marginRight: 15\r\n },\r\n linesOfCoverage: {\r\n listStyle: 'none',\r\n fontSize: 18,\r\n padding: 0,\r\n margin: 0\r\n },\r\n loc: {\r\n margin: 10,\r\n fontWeight: 'bold'\r\n },\r\n infoList: {\r\n listStyle: 'none',\r\n marginBottom: '10px'\r\n },\r\n infoListMobile: {\r\n padding: 0\r\n },\r\n infoItem: {\r\n margin: 20\r\n },\r\n text: {\r\n color: palette.grey.text\r\n },\r\n darkText: {\r\n color: palette.grey.darkText\r\n },\r\n lightWeight: {\r\n fontWeight: 400\r\n }\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n planState: state.plan,\r\n enrollmentState: state.enrollment,\r\n employeeState: state.employee,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n fetchPlans: (companyId, enrollmentId, employeeId) => dispatch(fetchPlansForEmployee(companyId, enrollmentId, employeeId)),\r\n fetchEnrollment: (companyId) => dispatch(fetchEnrollment(companyId)),\r\n fetchEmployee: (companyId, enrollmentId, employeeId) => dispatch(fetchEmployee(companyId, enrollmentId, employeeId))\r\n }\r\n}\r\n\r\nexport default compose(\r\n connect(mapStateToProps, mapDispatchToProps),\r\n withWidth(),\r\n withStyles(styles)\r\n)(EmployeeLanding);","import { TableCell, Typography } from \"@material-ui/core\";\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport withTableRow from 'components/common/table_row_hoc';\r\nimport React from \"react\";\r\nimport { Plan } from \"redux/reducers\";\r\nimport { getStepIcon } from \"utility/loc_utils\";\r\nimport { getLookups } from \"utility/lookup_utils\";\r\nimport palette from \"utility/palette\";\r\nimport { planRatesCheck, planSetupCompleteCheck } from \"utility/plan_setup_utils\";\r\nimport { gridRowStyles } from '../../utility/common_styles';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\n\r\ninterface Props extends StyledComponentProps {\r\n content: Plan,\r\n}\r\nconst PlanRow = (props: Props) => {\r\n\r\n const { classes = {}, content } = props;\r\n const locIcon = getStepIcon(content.lineOfCoverageId);\r\n const setupComplete = planSetupCompleteCheck(content) && planRatesCheck(content);\r\n const hasContributions = content.contributions.length > 0 && content.contributions.every(rate => typeof rate.amount === 'number');\r\n const isAutoEntoll = content.autoEnrollId;\r\n const lookups = React.useMemo(getLookups, []);\r\n\r\n return (\r\n <>\r\n \r\n {locIcon}\r\n \r\n \r\n {lookups[content.lineOfCoverageId].value}\r\n \r\n \r\n {props.content.planDisplayName.length > 75 ?\r\n {props.content.planDisplayName}\r\n }\r\n />\r\n : {props.content.planDisplayName}\r\n }\r\n \r\n \r\n {props.content.carrierName}\r\n \r\n \r\n {setupComplete ?\r\n
\r\n \r\n Complete\r\n
\r\n :\r\n
\r\n \r\n Missing Info\r\n
\r\n }\r\n
\r\n \r\n {hasContributions ? : \"\"}\r\n \r\n \r\n {isAutoEntoll ? : \"\"}\r\n \r\n \r\n );\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n locIcon: {\r\n textAlign: 'right',\r\n paddingLeft: \"0px\"\r\n },\r\n noLeftPadding: {\r\n paddingLeft: \"0px\"\r\n },\r\n icon: {\r\n fontSize: 19,\r\n color: palette.grey.lightText,\r\n marginRight: \"12px\"\r\n },\r\n onlyIcon: {\r\n fontSize: 19,\r\n color: palette.grey.lightText,\r\n paddingTop: \"5px\",\r\n paddingLeft: \"20%\"\r\n },\r\n capitalize: {\r\n textTransform: 'capitalize'\r\n },\r\n name: {\r\n color: palette.blue.primary\r\n },\r\n flexIconCell: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n whiteSpace: 'nowrap'\r\n },\r\n iconCell: {\r\n alignItems: 'center'\r\n },\r\n warning: {\r\n color: palette.orange.primary,\r\n marginRight: \"8px\"\r\n },\r\n};\r\n\r\nexport default withTableRow(withStyles(styles)(PlanRow));","import Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport palette from 'utility/palette';\r\n\r\ninterface Props {\r\n open: boolean;\r\n planName?: string;\r\n dependentPlans?: string[];\r\n onDone: (name: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nconst DeletePlanDialog = (props: Props) => {\r\n const canDelete = !props.dependentPlans || props.dependentPlans.length === 0;\r\n return (\r\n \r\n {canDelete ?\r\n
\r\n \r\n \r\n Deleting {props.planName} will delete its data, rates, and documents.\r\n \r\n This cannot be undone.\r\n \r\n \r\n \r\n props.onDone(props.planName || \"\")}\r\n color='primary'\r\n >\r\n Delete Plan\r\n \r\n \r\n
\r\n :\r\n
\r\n \r\n \r\n
\r\n The following plans are dependent on the Benefit Amount for this plan:\r\n
\r\n {props.dependentPlans!.map(planName => {\r\n return (

{planName}

)\r\n })}\r\n
\r\n You must update or delete these plan(s) before deleting this plan.\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n
\r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n confirmDeletion: {\r\n paddingTop: \"8px\"\r\n },\r\n planName: {\r\n color: palette.grey.text,\r\n fontWeight: 'bold',\r\n },\r\n warningBlock: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary,\r\n }\r\n}\r\nexport default DeletePlanDialog;","import Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport palette from 'utility/palette';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\n\r\ninterface Props {\r\n open: boolean;\r\n planName?: string;\r\n onDone: (name: string) => void;\r\n onCancel: () => void;\r\n isClearContents: boolean;\r\n onClickClearContents: (event: any, checked: boolean) => void;\r\n isCopyData: boolean;\r\n onClickCopyData: (event: any, checked: boolean) => void;\r\n isCopyRates: boolean;\r\n onClickCopyRates: (event: any, checked: boolean) => void;\r\n isCopyDocuments: boolean;\r\n onClickCopyDocuments: (event: any, checked: boolean) => void;\r\n isCopyContributions: boolean;\r\n onClickCopyContributions: (event: any, checked: boolean) => void;\r\n isCopyEligibility: boolean;\r\n onClickCopyEligibility: (event: any, checked: boolean) => void;\r\n alwaysCopyRates: boolean;\r\n\r\n}\r\n\r\nconst CopyPlanDialog = (props: Props) => {\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n Copy \"{props.planName}\"\r\n \r\n \r\n }\r\n label={Select all}\r\n />\r\n
\r\n \r\n }\r\n label={Copy benefits and plan details}\r\n />\r\n
\r\n \r\n }\r\n label={Copy rates}\r\n />\r\n
\r\n \r\n }\r\n label={Copy documents (plan summary will always copy)}\r\n />\r\n
\r\n \r\n }\r\n label={Copy contributions}\r\n />\r\n
\r\n \r\n }\r\n label={Copy eligibility settings}\r\n />\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n props.onDone(props.planName || \"\")}\r\n color='primary'\r\n >\r\n Copy Plan\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n confirmCopy: {\r\n paddingTop: \"8px\"\r\n },\r\n planName: {\r\n color: palette.grey.text,\r\n fontWeight: 'bold',\r\n },\r\n warningBlock: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n },\r\n warningIcon: {\r\n color: palette.orange.primary,\r\n }\r\n}\r\nexport default CopyPlanDialog;","import { Fab, Table, TableBody, TableCell, TableHead, TablePagination, TableRow, TableSortLabel, Tooltip, Typography } from \"@material-ui/core\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Help from '@material-ui/icons/Help';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport PlanRow from \"components/plan/plan_row\";\r\nimport { PlanRowContent } from \"containers/plan_list/plan_list\";\r\nimport memoizeOne from 'memoize-one';\r\nimport React from \"react\";\r\nimport palette from 'utility/palette';\r\nimport { simpleCompare } from \"utility/simple_utils\";\r\nimport DeletePlanDialog from \"../plan/delete_plan_dialog\";\r\nimport CopyPlanDialog from \"../plan/copy_plan_dialog\";\r\nimport { CopyPlanDTO } from '../../redux/reducers/plan_reducer';\r\n\r\n\r\ninterface Props {\r\n loading?: boolean;\r\n tableHeaders?: string[];\r\n content: any[];\r\n sortableTableHeaders?: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n tootlTip?: boolean;\r\n toolTipText?: string;\r\n }[];\r\n viewOnly?: boolean;\r\n rowType: string;\r\n showRemarks?: boolean;\r\n hideFabForAdd?: boolean;\r\n hidePaging?: boolean;\r\n companyContactAssociateSelected?: string;\r\n showFooter?: boolean;\r\n hideBlankHeader?: boolean;\r\n fabClick?: () => void;\r\n onDelete: (id: string, name: string) => void;\r\n onCopy: (id: string, name: string, options: CopyPlanDTO) => void;\r\n handleRowClick: (route: string) => void;\r\n displayCorrectError?: JSX.Element;\r\n}\r\n\r\ntype TableHeader = {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n};\r\n\r\ninterface State {\r\n pagination: {\r\n page: number;\r\n size: number;\r\n };\r\n deleteDialogOpen: boolean;\r\n idToDelete?: string;\r\n typeToDelete?: string;\r\n copyDialogOpen: boolean;\r\n idToCopy?: string;\r\n addDialogOpen: boolean;\r\n sortableTableHeaders: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n tootlTip?: boolean;\r\n toolTipText?: string;\r\n }[];\r\n sortedContent: any;\r\n nameToDelete?: string;\r\n nameToCopy?: string;\r\n dependentPlansToDelete?: string[];\r\n isClearContents: boolean;\r\n isCopyData: boolean;\r\n isCopyRates: boolean;\r\n isCopyContributions: boolean;\r\n isCopyDocuments: boolean;\r\n isCopyEligibility: boolean;\r\n alwaysCopyRates: boolean;\r\n}\r\n\r\nclass MaterialTable extends React.PureComponent {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n pagination: {\r\n page: 0,\r\n size: 25\r\n },\r\n copyDialogOpen: false,\r\n deleteDialogOpen: false,\r\n addDialogOpen: false,\r\n sortableTableHeaders: props.sortableTableHeaders || [],\r\n sortedContent: props.content.slice(),\r\n isClearContents: true,\r\n isCopyData: true,\r\n isCopyRates: true,\r\n isCopyContributions: true,\r\n isCopyDocuments: true,\r\n isCopyEligibility: true,\r\n alwaysCopyRates:false\r\n }\r\n }\r\n\r\n _sortContent = memoizeOne((content: any[], sortableTableHeaders: TableHeader[]) => {\r\n let sortedContent = content.slice();\r\n const sortedCol = sortableTableHeaders.find(col => col.direction !== false);\r\n if (sortedCol) {\r\n sortedContent.sort(simpleCompare(sortedCol.id, sortedCol.direction === 'desc'));\r\n }\r\n\r\n return sortedContent;\r\n });\r\n get sortedContent() {\r\n return this._sortContent(this.props.content, this.state.sortableTableHeaders);\r\n }\r\n\r\n handleSort = (key: string, content: any) => {\r\n const propTableHeaders = this.props.sortableTableHeaders || [];\r\n this.setState(prevState => {\r\n let headersToSort = prevState.sortableTableHeaders;\r\n if (propTableHeaders.length > prevState.sortableTableHeaders.length) headersToSort = propTableHeaders;\r\n const newtableHeaders = headersToSort.slice();\r\n const newSortedContent = content;\r\n newtableHeaders.forEach(col => {\r\n if (col.id === key) {\r\n if (col.direction === false || col.direction === 'desc') {\r\n col.direction = 'asc';\r\n newSortedContent.sort(simpleCompare(key, false));\r\n } else if (col.direction === 'asc') {\r\n col.direction = 'desc'\r\n newSortedContent.sort(simpleCompare(key, true));\r\n }\r\n } else {\r\n col.direction = false;\r\n }\r\n });\r\n\r\n return {\r\n ...prevState,\r\n tableHeaders: newtableHeaders,\r\n sortedContent: newSortedContent\r\n };\r\n });\r\n };\r\n\r\n handlePageChange = (_event: any, page: number) => {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n pagination: {\r\n ...prevState.pagination,\r\n page\r\n }\r\n }));\r\n }\r\n\r\n handleRowSizeChange = (event: any) => {\r\n const rowsPerPage = event.target.value;\r\n this.setState(prevState => ({\r\n ...prevState,\r\n pagination: {\r\n ...prevState.pagination,\r\n size: rowsPerPage,\r\n page: 0\r\n }\r\n }));\r\n };\r\n\r\n handleDeleteConfirmed = () => {\r\n this.state.idToDelete && this.props.onDelete(this.state.idToDelete, this.state.nameToDelete || '');\r\n this.handleDeleteCancelled();\r\n };\r\n\r\n handleDeleteCancelled = () => {\r\n this.setState({ deleteDialogOpen: false, idToDelete: undefined, nameToDelete: undefined, typeToDelete: undefined, dependentPlansToDelete: undefined });\r\n };\r\n\r\n handleDeleteOpened = (id: string, name: string, type: string) => {\r\n let dependentPlansToDelete = undefined;\r\n if (this.props.rowType === 'plan') {\r\n dependentPlansToDelete = (this.props.content as PlanRowContent[]).find(x => x.id === id)!.dependentPlans;\r\n }\r\n this.setState({ deleteDialogOpen: true, idToDelete: id, nameToDelete: name, typeToDelete: type, dependentPlansToDelete: dependentPlansToDelete });\r\n }\r\n handleCopyConfirmed = () => {\r\n const options: CopyPlanDTO = {\r\n planId: this.state.idToCopy || '',\r\n isCopyData: this.state.isCopyData,\r\n isCopyRates: this.state.isCopyRates,\r\n isCopyContributions: this.state.isCopyContributions,\r\n isCopyDocuments: this.state.isCopyDocuments,\r\n isCopyEligibility: this.state.isCopyEligibility\r\n };\r\n\r\n this.state.idToCopy && this.props.onCopy(this.state.idToCopy, this.state.nameToCopy || '', options);\r\n this.handleCopyCancelled();\r\n };\r\n\r\n handleCopyCancelled = () => {\r\n this.setState({ copyDialogOpen: false, idToCopy: undefined, nameToCopy: undefined });\r\n };\r\n\r\n handleCopyOpened = (id: string, name: string, _rowType: string, alwaysCopyRates: boolean) => {\r\n\r\n this.setState({ copyDialogOpen: true, idToCopy: id, nameToCopy: name, alwaysCopyRates:alwaysCopyRates });\r\n }\r\n\r\n //JCK - We should refactor section below to be passed in through props\r\n generateRow = (content: any, id: number, isReadOnly?: boolean) => {\r\n return (\r\n { } : this.handleDeleteOpened}\r\n onCopy={isReadOnly ? () => { } : this.handleCopyOpened}\r\n viewOnly={this.props.viewOnly}\r\n rowType=\"plan\"\r\n />\r\n )\r\n }\r\n\r\n tooltipTitle = memoizeOne(() => {\r\n return 'Add New Plan';\r\n });\r\n\r\n handleClickClearContents = (_e: any, checked: boolean) => {\r\n this.setState({ isClearContents: checked });\r\n\r\n // set all of the checkboxes except copydata. Rates is dependent on flag alwaysCopyRates (Allstate)\r\n this.setState({ isCopyRates: this.state.alwaysCopyRates ? this.state.alwaysCopyRates : checked });\r\n this.setState({ isCopyDocuments: checked });\r\n this.setState({ isCopyContributions: checked });\r\n this.setState({ isCopyEligibility: checked });\r\n }\r\n handleClickCopyData = (_e: any) => {\r\n // don't allow this one to go false\r\n // it looks better to not disable the checkbox so we just make sure it stays checked\r\n this.setState({ isCopyData: true });\r\n }\r\n handleClickCopyRates = (_e: any, checked: boolean) => {\r\n this.setState({ isCopyRates: this.state.alwaysCopyRates ? this.state.alwaysCopyRates : checked });\r\n }\r\n handleClickCopyDocuments = (_e: any, checked: boolean) => {\r\n this.setState({ isCopyDocuments: checked });\r\n }\r\n handleClickCopyContributions = (_e: any, checked: boolean) => {\r\n this.setState({ isCopyContributions: checked });\r\n }\r\n handleClickCopyEligibility = (_e: any, checked: boolean) => {\r\n this.setState({ isCopyEligibility: checked });\r\n }\r\n\r\n render() {\r\n const { nameToDelete, pagination, dependentPlansToDelete, nameToCopy } = this.state;\r\n const { page, size } = pagination;\r\n const sortableTableHeaders = this.props.sortableTableHeaders || this.state.sortableTableHeaders;\r\n const contents = this.sortedContent;\r\n const { viewOnly = false } = this.props\r\n\r\n const tooltipTitle = this.tooltipTitle();\r\n const tableHeaders = this.props.tableHeaders || [];\r\n const noDataFooter = Boolean(this.props.showFooter && contents.length === 0)\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n {!this.props.hideBlankHeader &&\r\n \r\n {!viewOnly && !this.props.hideFabForAdd &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n\r\n { sortableTableHeaders.map(header => (\r\n this.handleSort(header.id, contents)} sortDirection={header.direction}>\r\n {header.tootlTip === true ?\r\n <>\r\n }\r\n />\r\n\r\n \r\n {header.label}\r\n \r\n\r\n \r\n :\r\n \r\n {header.label}\r\n \r\n }\r\n \r\n )\r\n )\r\n }\r\n {this.props.hideBlankHeader && }\r\n \r\n \r\n \r\n {contents.slice(page * size, page * size + size).map((content: any, id: number) => {\r\n return this.generateRow(content, id, viewOnly);\r\n }\r\n )}\r\n {noDataFooter &&\r\n <>\r\n { 0 ? this.state.sortableTableHeaders.length + 1 : tableHeaders.length + 1} align='center'>\r\n {this.props.displayCorrectError ? this.props.displayCorrectError : No Data Available}\r\n }\r\n \r\n }\r\n \r\n
\r\n {!this.props.hidePaging &&\r\n \r\n }\r\n
\r\n \r\n \r\n \r\n );\r\n}\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n blackFill: {\r\n fill: 'black'\r\n },\r\n noBorder: {\r\n border: 'none',\r\n paddingTop: 20\r\n },\r\n noData: {\r\n border: 'none',\r\n paddingTop: 15\r\n },\r\n buttonCell: {\r\n width: 16,\r\n paddingTop: 12,\r\n paddingBottom: 12,\r\n paddingRight: 12,\r\n paddingLeft: 17\r\n },\r\n cell: {\r\n whiteSpace: 'nowrap',\r\n paddingLeft: '0px'\r\n },\r\n centerText: {\r\n textAlign: 'center'\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n verticalAlign: 'middle'\r\n },\r\n overflow: {\r\n overflowX: 'auto'\r\n },\r\n warning: {\r\n fontSize: 14,\r\n marginBottom: -2,\r\n color: palette.orange.primary\r\n },\r\n}\r\n\r\nexport default MaterialTable;","import { CircularProgress } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { Field, InjectedFormProps, reduxForm, ConfigProps } from 'redux-form';\r\nimport { CarrierList, ZipCountyMapping, EmployeeReducerState } from 'redux/reducers';\r\nimport { formatZip } from 'utility/form_formatter';\r\nimport { convertToMoment, convertToNumber, normalizeZIP, normalizeDigits } from 'utility/form_normalization';\r\nimport { required, validateEffectiveDate, zip, positiveNumber, validateGroupCount,nullOrPositiveNumber } from 'utility/form_validation';\r\nimport { getBaseLOCs, getStates } from 'utility/lookup_utils';\r\nimport { DatePickerField, TextFormField } from '../common/reduxform_fields';\r\nimport SaveButton from '../common/save_button';\r\n\r\n\r\nconst validateRequired = required('This field is required');\r\nconst nativeSelect = { native: true };\r\nconst validateGroupCount999 = validateGroupCount(999);\r\n\r\n\r\nexport const FORM_NAME = \"PLAN_SEARCH_FORM\";\r\n\r\nexport type FormData = {\r\n stateId: number;\r\n lineOfCoverageId: number;\r\n carrierCode: string;\r\n effectiveDate: moment.Moment;\r\n zipCode: string;\r\n county: string;\r\n groupSize: number;\r\n sicCode?: number;\r\n reduceValidation?: boolean;\r\n};\r\n\r\ninterface ComponentProps {\r\n loadingCarriers?: boolean;\r\n loadingCounties?: boolean;\r\n importLoading?: boolean;\r\n carriers: CarrierList[];\r\n counties: ZipCountyMapping[];\r\n}\r\n\r\ntype Props = ComponentProps & InjectedFormProps;\r\n\r\nconst PlanSearchForm = React.memo((props: Props) => {\r\n const [loading, setLoading] = React.useState(false);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {getStates().map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {getBaseLOCs().map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {props.carriers.map(val => (\r\n \r\n ))}\r\n \r\n {props.loadingCarriers && }\r\n \r\n \r\n \r\n \r\n \r\n {props.counties !== undefined && props.counties.length > 1 &&\r\n \r\n \r\n {props.counties.map(val => (\r\n \r\n ))}\r\n \r\n }\r\n {(props.counties === undefined) || (props.counties != undefined && props.counties.length <= 1) &&\r\n \r\n \r\n }\r\n {props.loadingCounties && }\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 Search For Plans\r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n form: {\r\n padding: 10\r\n },\r\n carrierCol: {\r\n position: 'relative'\r\n },\r\n carrierSpinner: {\r\n position: 'absolute',\r\n top: '35%',\r\n left: '45%'\r\n },\r\n countySpinner: {\r\n position: 'absolute',\r\n top: '53%',\r\n left: '70%'\r\n },\r\n buttonContainer: {\r\n marginTop: 20\r\n },\r\n\r\n};\r\n\r\n\r\n\r\nexport default reduxForm({ form: FORM_NAME })(PlanSearchForm);","import React from 'react';\r\nimport { getCarriers } from 'redux/actions';\r\nimport store from 'redux/store';\r\n\r\nfunction useCarriers(stateId: number, stateName: string, locId: number) {\r\n const [loading, setLoading] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (stateName && locId) {\r\n setLoading(true);\r\n store.dispatch(getCarriers(stateId, stateName, locId) as any).then(() => setLoading(false), () => setLoading(false));\r\n }\r\n }, [stateName, locId, stateId]);\r\n\r\n return loading;\r\n}\r\n\r\nexport default useCarriers;","import React from 'react';\r\nimport { getCounty } from 'redux/actions';\r\nimport store from 'redux/store';\r\n\r\nfunction useCounties(zipCode: string | undefined) {\r\n const [loading, setLoading] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (zipCode !== undefined && zipCode !== null && zipCode.length === 5) {\r\n setLoading(true);\r\n store.dispatch(getCounty(zipCode) as any).then(() => setLoading(false), () => setLoading(false));\r\n }\r\n }, [zipCode]);\r\n\r\n return loading;\r\n}\r\n\r\nexport default useCounties;\r\n","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport http from '../../utility/http';\r\nimport { ZipCountyMapping } from '../reducers';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\nexport const storeCounties = acFactory('STORE_COUNTY');\r\n\r\nexport function getCounty(zipcode: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n const counties: ZipCountyMapping[] = await http(`zipcode/${zipcode}`);\r\n\r\n const formattedCounties = counties.map(county => {\r\n const countyName = county.countyName;\r\n if (countyName && countyName.length > 0) {\r\n return {\r\n ...county,\r\n countyName: countyName.substring(0, 1).toUpperCase() + countyName.substring(1).toLowerCase()\r\n }\r\n }\r\n return {\r\n ...county\r\n }\r\n })\r\n\r\n dispatch(storeCounties(formattedCounties));\r\n\r\n } catch (ex) {\r\n throw ex;\r\n }\r\n }\r\n}","import { Button, InputAdornment, LinearProgress, Paper, Table, TableBody, TableCell, TableHead, TablePagination, TableRow, TextField } from '@material-ui/core';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport React from 'react';\r\nimport { SearchPlan } from 'redux/actions';\r\nimport palette from 'utility/palette';\r\n\r\ninterface ComponentProps {\r\n data: SearchPlan[];\r\n importLoading?: boolean;\r\n onPlanSelected: (planId: string, universalPlanId: string) => void;\r\n}\r\n\r\ninterface Props extends ComponentProps { }\r\n\r\nconst PlanImportTable = React.memo((props: Props) => {\r\n const initialSize = 10;\r\n const [searchText, setSearchText] = React.useState('');\r\n const [page, setPage] = React.useState(0);\r\n const [size, setSize] = React.useState(initialSize);\r\n const searchInputProps = React.useMemo(() => ({\r\n startAdornment: ()\r\n }), []);\r\n\r\n const filteredData = React.useMemo(() => {\r\n setPage(0);\r\n if (searchText)\r\n return props.data.filter(item => item.planName.toLowerCase().indexOf(searchText.toLowerCase()) > -1);\r\n else\r\n return props.data;\r\n }, [searchText, props.data]);\r\n\r\n const handleSearchChange = (event: React.ChangeEvent) => setSearchText(event.target.value);\r\n const handlePageChange = (_event: React.MouseEvent | null, page: number) => setPage(page);\r\n const handleRowSizeChange = (event: React.ChangeEvent) => {\r\n setPage(0);\r\n setSize(event.target.value);\r\n }\r\n\r\n return (\r\n \r\n \r\n {props.importLoading && }\r\n \r\n \r\n \r\n Plan Name\r\n \r\n \r\n \r\n \r\n {filteredData.slice(page * size, page * size + size).map(row => (\r\n props.onPlanSelected(row.planId, row.universalPlanId)}\r\n />\r\n ))}\r\n \r\n
\r\n {filteredData.length > initialSize &&\r\n \r\n }\r\n
\r\n );\r\n});\r\n\r\nexport default PlanImportTable;\r\n\r\ninterface RowProps { data: SearchPlan; disabled?: boolean; onClick: () => void; }\r\nconst PlanImportRow = React.memo((props: RowProps) => {\r\n const [isHovering, setHover] = React.useState(false);\r\n\r\n const handleMouseEnter = () => setHover(true);\r\n const handleMouseLeave = () => setHover(false);\r\n\r\n const rowStyle = isHovering ? styles.hover : undefined\r\n\r\n return (\r\n \r\n \r\n {props.data.planName}\r\n \r\n \r\n {isHovering && }\r\n \r\n \r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n position: 'relative'\r\n },\r\n hover: {\r\n backgroundColor: palette.grey.surface\r\n },\r\n buttonCell: {\r\n textAlign: 'right'\r\n },\r\n search: {\r\n position: 'absolute',\r\n marginTop: 12,\r\n right: 10\r\n }\r\n};","import { styles } from 'utility/common_styles';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport Help from '@material-ui/icons/Help';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport PlanSearchForm, { FormData, FORM_NAME } from 'components/forms/plan_search_form';\r\nimport useCarriers from 'hooks/use_carriers';\r\nimport useCounties from 'hooks/use_counties';\r\nimport memoizeOne from 'memoize-one';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { change, clearFields, formValueSelector, hasSubmitSucceeded } from 'redux-form';\r\nimport { fetchEmployees, importPlan, ImportPlanPayload, SearchPlan, SearchPlanPayload, searchPlans, storePlanSearchValues } from 'redux/actions';\r\nimport { CarrierList, EmployeeReducerState, EnrollmentReducerState, EnrollmentReducerStatePropType, PlanSearchFields, ZipCodeReducerState } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { filterCarriers } from 'utility';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { simpleCompare } from 'utility/simple_utils';\r\nimport Link from '../common/link';\r\nimport PlanImportTable from './plan_import_table';\r\n\r\ninterface ComponentProps {\r\n open: boolean;\r\n onClose: () => void;\r\n handlePlanImported: (planId: string) => void;\r\n}\r\n\r\ninterface StateProps {\r\n carriers: CarrierList[];\r\n countiesState: ZipCodeReducerState;\r\n lineOfCoverageId?: number;\r\n stateName: string;\r\n submitted: boolean;\r\n companyZipCode?: string;\r\n companyCounty?: string;\r\n zipCode?: string;\r\n effectiveDate?: moment.Moment;\r\n carrierCode?: string;\r\n county?: string;\r\n stateId?: number;\r\n allowCustomPlans?: boolean\r\n enrollmentstate: EnrollmentReducerState;\r\n employeeState: EmployeeReducerState;\r\n sicCode?: number;\r\n}\r\n\r\ninterface DispatchProps {\r\n searchPlans: (payload: SearchPlanPayload) => Promise\r\n importPlan: (payload: ImportPlanPayload) => Promise\r\n clearCarrier: () => Promise\r\n savePlanSearchValues: (values: PlanSearchFields) => void;\r\n clearCounties: () => Promise;\r\n updateCounty: (name: string) => void;\r\n fetchEmployees: (companyId: string, enrollmentId: string) => Promise;\r\n}\r\n\r\ninterface Props extends ComponentProps, StateProps, DispatchProps { };\r\n\r\nconst PlanImportDialog = React.memo((props: Props) => {\r\n const { clearCarrier, clearCounties, companyZipCode, companyCounty, stateId, enrollmentstate, searchPlans, importPlan, handlePlanImported, sicCode, lineOfCoverageId } = props;\r\n const { effectiveDate } = enrollmentstate;\r\n const [planList, setPlanList] = React.useState([] as SearchPlan[]);\r\n const [importLoading, setImportLoading] = React.useState(false);\r\n const [cachedFormValues, setFormValues] = React.useState({} as FormData);\r\n const lookups = React.useMemo(getLookups, []);\r\n const loadingCarriers = useCarriers(props.stateId || 0, props.stateName, props.lineOfCoverageId as number);\r\n const loadingCounties = useCounties(props.zipCode);\r\n const [loading, setLoading] = React.useState(false);\r\n const companyId = props.enrollmentstate.company.id;\r\n const enrollmentId = props.enrollmentstate.id;\r\n\r\n\r\n React.useEffect(() => {\r\n setLoading(true);\r\n\r\n const promises: Promise[] = [];\r\n\r\n if (props.employeeState.list.length === 0) {\r\n promises.push(props.fetchEmployees(companyId, enrollmentId))\r\n }\r\n\r\n Promise.all(promises).then(() => setLoading(false), () => setLoading(false));\r\n }, [props.employeeState.list.length, props.fetchEmployees, companyId, enrollmentId]);\r\n\r\n let groupSize = 2;\r\n if (props.enrollmentstate.fullTimeEmployeesCount !== null && props.enrollmentstate.fullTimeEmployeesCount !== undefined)\r\n {\r\n if (props.employeeState.list.length > props.enrollmentstate.fullTimeEmployeesCount)\r\n {\r\n groupSize = props.employeeState.list.length;\r\n }\r\n else\r\n {\r\n groupSize = props.enrollmentstate.fullTimeEmployeesCount;\r\n }\r\n }\r\n else if(props.enrollmentstate.fullTimeEmployeesCount === null && props.employeeState.list.length > 0)\r\n {\r\n groupSize = props.employeeState.list.length;\r\n }\r\n\r\n React.useEffect(() => {\r\n if (loadingCarriers === true) {\r\n clearCarrier();\r\n }\r\n\r\n if (loadingCounties === true) {\r\n clearCounties();\r\n }\r\n else if (loadingCounties === false) {\r\n if (props.countiesState != undefined && props.countiesState.zipCountyData != undefined && props.countiesState.zipCountyData.length === 1) {\r\n //when only one county found for given zip code, put that in county textbox\r\n props.updateCounty(props.countiesState.zipCountyData[0].countyName);\r\n } //When Company county is present select the one in county list\r\n else if (props.countiesState != undefined && props.countiesState.zipCountyData != undefined && props.countiesState.zipCountyData.length > 1 && companyCounty != undefined) {\r\n var countyIndex = props.countiesState.zipCountyData.findIndex(x => x.countyName.toLowerCase() == companyCounty.toLowerCase());\r\n if (countyIndex >= 0) {\r\n props.updateCounty(props.countiesState.zipCountyData[countyIndex].countyName);\r\n }\r\n }\r\n //When no counties found for given zip code clear the textbox\r\n else if (props.countiesState === undefined || (props.countiesState != undefined && props.countiesState.zipCountyData != undefined && props.countiesState.zipCountyData.length === 0)) {\r\n props.updateCounty(\"\");\r\n }\r\n }\r\n }, [clearCarrier, clearCounties, loadingCarriers, loadingCounties])\r\n\r\n const initialValues = React.useMemo(() => {\r\n const values: Partial = {\r\n zipCode: companyZipCode,\r\n stateId: stateId,\r\n effectiveDate: effectiveDate ? moment(effectiveDate) : moment().add(1, 'month').startOf('month'),\r\n groupSize: groupSize,\r\n reduceValidation: props.enrollmentstate.reduceValidation,\r\n sicCode: sicCode,\r\n lineOfCoverageId: lineOfCoverageId\r\n };\r\n return values\r\n }, [companyZipCode, companyCounty, stateId, effectiveDate, groupSize, sicCode, lineOfCoverageId]);\r\n\r\n const handleSubmit = React.useCallback(async (formValues: FormData) => {\r\n setFormValues(formValues);\r\n const payload: SearchPlanPayload = {\r\n baseLineOfCoverage: lookups[formValues.lineOfCoverageId].value,\r\n carrierCodes: [formValues.carrierCode],\r\n stateCode: lookups[formValues.stateId].key,\r\n effectiveDate: formValues.effectiveDate.format(),\r\n countyName: formValues.county,\r\n groupSize: formValues.groupSize,\r\n sicCode: formValues.sicCode\r\n };\r\n const planList: SearchPlan[] = await searchPlans(payload);\r\n setPlanList(planList.sort(simpleCompare('planName')));\r\n }, [searchPlans, lookups]);\r\n\r\n const handlePlanSelected = React.useCallback(async (planId: string, universalPlanId: string) => {\r\n setImportLoading(true);\r\n try {\r\n const stateLookup = getLookups()[cachedFormValues.stateId];\r\n const partialPayload: ImportPlanPayload = {\r\n planId: planId,\r\n universalPlanId: universalPlanId,\r\n county: cachedFormValues.county,\r\n stateCode: stateLookup.key,\r\n zipCode: Number(cachedFormValues.zipCode),\r\n effectiveDate: cachedFormValues.effectiveDate.format(),\r\n groupSize: Number(cachedFormValues.groupSize),\r\n sicCode: Number(cachedFormValues.sicCode)\r\n }\r\n const newPlanId = await importPlan(partialPayload);\r\n handlePlanImported(newPlanId);\r\n }\r\n catch{\r\n setImportLoading(false);\r\n }\r\n }, [cachedFormValues.stateId, cachedFormValues.effectiveDate, cachedFormValues.county, cachedFormValues.zipCode, cachedFormValues.sicCode, importPlan, handlePlanImported]);\r\n\r\n React.useEffect(() => {\r\n if (!props.open) setPlanList([]);\r\n }, [props.open]);\r\n\r\n const saveSearchFields = () => {\r\n const carrierList = props.carrierCode ? props.carriers.find(c => c.carrierCode === props.carrierCode) : undefined;\r\n\r\n props.savePlanSearchValues({\r\n stateId: props.stateId,\r\n lineOfCoverageId: props.lineOfCoverageId,\r\n carrierCode: props.carrierCode,\r\n carrierName: carrierList && carrierList.carrierName,\r\n effectiveDate: props.effectiveDate,\r\n zipCode: props.zipCode,\r\n county: props.county,\r\n sicCode: props.sicCode\r\n });\r\n\r\n props.handlePlanImported('new');\r\n };\r\n\r\n const _isCustomPlanAllowed = memoizeOne((carriers: CarrierList[], carrierCode: string | undefined) => {\r\n if (!carrierCode) return true;\r\n const carrier = carriers.find(c => c.carrierCode === carrierCode);\r\n return carrier ? carrier.customPlanAllowed : true;\r\n });\r\n\r\n const isCustomPlanAllowed = () => {\r\n return props.allowCustomPlans && _isCustomPlanAllowed(props.carriers, props.carrierCode);\r\n }\r\n\r\n return (\r\n \r\n \r\n
Find a plan in our library and import all plan benefits and rates.
\r\n
\r\n \r\n
\r\n {planList.length > 0 && }\r\n {isCustomPlanAllowed() &&\r\n \r\n {(planList.length === 0 && props.submitted) ? \"No results found.\" : \"Plan not in library?\"}\r\n
\r\n Create new plan.\r\n Add plans manually if they are not available in the library.

You can add carriers that are not in the library but this may require you to process these carrier plans on your own.
} content={} />\r\n
\r\n }\r\n \r\n \r\n );\r\n});\r\n\r\nconst componentStyles: { [key: string]: React.CSSProperties } = {\r\n ...styles,\r\n text: {\r\n color: palette.grey.text\r\n },\r\n paper: {\r\n padding: 40,\r\n textAlign: 'center'\r\n },\r\n space: {\r\n marginBottom: 10\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n paddingTop: 17\r\n }\r\n};\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (PlanImportDialog as any).propTypes = {\r\n enrollmentState: EnrollmentReducerStatePropType,\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const lineOfCoverageId = formValueSelector(FORM_NAME)(state, 'lineOfCoverageId');\r\n const contactInfo = state.enrollment.company.contactInformation[0] || {};\r\n const stateId = contactInfo.stateId;\r\n const zipCode = formValueSelector(FORM_NAME)(state, 'zipCode');\r\n const effectiveDate = formValueSelector(FORM_NAME)(state, 'effectiveDate');\r\n const carrierCode = formValueSelector(FORM_NAME)(state, 'carrierCode');\r\n const allowCustomPlansSetting =\r\n Object.values(state.settings.values).find(setting => setting.key === 'ALLOW_CUSTOM_PLANS');\r\n const allowCustomPlans = Boolean(allowCustomPlansSetting && ((allowCustomPlansSetting.value && (allowCustomPlansSetting.value.toLowerCase() !== 'false')) || allowCustomPlansSetting.value == null));\r\n const carriers = filterCarriers(lineOfCoverageId, state.lookup.carriers, state.plan.list, false, true);\r\n const county = formValueSelector(FORM_NAME)(state, 'county');\r\n const stateName = stateId ? getLookups()[stateId].value : 'stateName';\r\n const submitted = hasSubmitSucceeded(FORM_NAME)(state);\r\n const sicCode = state.enrollment.company.sicCode;\r\n\r\n return {\r\n carriers,\r\n countiesState: state.counties,\r\n lineOfCoverageId,\r\n stateName,\r\n submitted,\r\n companyZipCode: contactInfo.zipCode,\r\n companyCounty: contactInfo.county,\r\n zipCode,\r\n effectiveDate,\r\n carrierCode,\r\n county,\r\n stateId,\r\n allowCustomPlans,\r\n enrollmentstate: state.enrollment,\r\n employeeState: state.employee,\r\n sicCode\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n searchPlans: payload => dispatch(searchPlans(payload)),\r\n importPlan: payload => dispatch(importPlan(payload)),\r\n clearCarrier: () => dispatch(clearFields(FORM_NAME, false, false, 'carrierCode')),\r\n savePlanSearchValues: values => dispatch(storePlanSearchValues(values)),\r\n clearCounties: () => dispatch(clearFields(FORM_NAME, false, false, 'county')),\r\n updateCounty: (countyName: string) => dispatch(change(FORM_NAME, 'county', countyName)),\r\n fetchEmployees: (companyId, enrollmentId) => dispatch(fetchEmployees(companyId, enrollmentId))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PlanImportDialog);","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport http from '../../utility/http';\r\nimport { CopyContributionDTO, Document, PlanDTO, PlanSearchFields, CopyPlanDTO } from '../reducers/plan_reducer';\r\nimport { ReduxState } from '../store';\r\nimport { displaySnackbar, displaySnackbarWithErrors } from './app_actions';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\n// Store Plans Action Creator\r\nexport const storePlans = acFactory('STORE_PLANS');\r\n\r\n// Fetch Plans Thunk\r\nexport function fetchPlans(companyId: string, enrollmentId: string) {\r\n return async (dispatch: any) => {\r\n const plans: PlanDTO[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/plans`);\r\n dispatch(storePlans(plans));\r\n };\r\n}\r\n\r\n// Fetch Plans for Employee Thunk\r\nexport function fetchPlansForEmployee(companyId: string, enrollmentId: string, employeeId: string) {\r\n return async (dispatch: any) => {\r\n const plan = await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/employees/${employeeId}`);\r\n dispatch(storePlans(plan));\r\n };\r\n}\r\n\r\n// Store Plan Action Creator\r\nexport const storePlan = acFactory('STORE_PLAN');\r\n\r\n// Get Plan Thunk\r\nexport function fetchPlan(companyId: string, enrollmentId: string, planId: string) {\r\n return async (dispatch: any) => {\r\n const plan = await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${planId}`);\r\n dispatch(storePlan(plan));\r\n };\r\n}\r\n\r\n// Add Plan Thunk\r\nexport function addPlan(companyId: string, enrollmentId: string, plan: PlanDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n const createdPlan: PlanDTO = await http(`companies/${companyId}/enrollments/${enrollmentId}/plans`, { method: 'POST', body: JSON.stringify(plan) });\r\n const displayName = (plan.planDisplayName && plan.planDisplayName.length > 0) ?\r\n plan.planDisplayName![0].toUpperCase() + plan.planDisplayName!.slice(1) : 'Plan';\r\n dispatch(storePlan(createdPlan));\r\n dispatch(displaySnackbar(displayName + ' saved', 'success'));\r\n return createdPlan.id;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving plan'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Update Plan Thunk\r\nexport function updatePlan(companyId: string, enrollmentId: string, plan: PlanDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n const updatedPlan: PlanDTO = await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${plan.id}`, { method: 'PUT', body: JSON.stringify(plan) });\r\n const displayName = (plan.planDisplayName && plan.planDisplayName.length > 0) ?\r\n plan.planDisplayName![0].toUpperCase() + plan.planDisplayName!.slice(1) : 'Plan';\r\n dispatch(storePlan(updatedPlan));\r\n dispatch(displaySnackbar(displayName + ' saved', 'success'));\r\n return updatedPlan.id;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving plan'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Remove Plan Action Creator\r\nexport const removePlan = acFactory('REMOVE_PLAN');\r\n\r\n// Delete Plan Thunk\r\nexport function deletePlan(companyId: string, enrollmentId: string, planId: string, name: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${planId}`, { method: 'DELETE' });\r\n dispatch(removePlan(planId));\r\n dispatch(displaySnackbar(`${name} removed`, 'deletion'));\r\n return planId;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with removing plan'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Copy Plan Thunk\r\nexport function copyPlan(companyId: string, enrollmentId: string, planId: string, name: string, options: CopyPlanDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${planId}/copy`, { method: 'PUT', body: JSON.stringify(options) });\r\n await dispatch(fetchPlans(companyId, enrollmentId));\r\n dispatch(displaySnackbar(`${name} copied.`, 'success'));\r\n return planId;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with copying plan'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Store Plan Documents Action Creator\r\nexport const storePlanDocuments = acFactory<{ id: string, documents: Document[] }>('STORE_PLAN_DOCUMENTS');\r\n\r\n// Refresh Plan Documents Thunk\r\nexport function refetchPlanDocuments(companyId: string, enrollmentId: string, planId: string) {\r\n return async (dispatch: any) => {\r\n const documents: Document[] = await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${planId}/documents`);\r\n dispatch(storePlanDocuments({ id: planId, documents }));\r\n };\r\n}\r\n\r\n// store plan search field values Action Creator\r\nexport const storePlanSearchValues = acFactory('STORE_PLAN_SEARCH_FIELDS');\r\n\r\n\r\n// Upsert Document to Plan Thunk\r\nexport type FileUpload = { file?: File } & Partial;\r\nexport function upsertDocumentToPlan(companyId: string, enrollmentId: string, planId: string, fileUpload: FileUpload) {\r\n return async (dispatch: any) => {\r\n const formData = new FormData();\r\n fileUpload.file && formData.append('file', fileUpload.file);\r\n fileUpload.title && formData.append('title', fileUpload.title);\r\n fileUpload.description && formData.append('description', fileUpload.description);\r\n fileUpload.typeId && formData.append('typeId', String(fileUpload.typeId));\r\n fileUpload.id && formData.append('id', fileUpload.id);\r\n try {\r\n if (!!fileUpload.id) {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${planId}/documents/${fileUpload.id}`, { method: 'PUT', body: formData });\r\n\r\n } else {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${planId}/documents`, { method: 'POST', body: formData });\r\n }\r\n await dispatch(refetchPlanDocuments(companyId, enrollmentId, planId));\r\n dispatch(displaySnackbar('Document saved to plan', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with saving document to plan'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n// Delete Document Thunk\r\nexport function deleteDocument(companyId: string, enrollmentId: string, planId: string, docId: string, name: string) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${planId}/documents/${docId}`, { method: 'DELETE' });\r\n await dispatch(refetchPlanDocuments(companyId, enrollmentId, planId));\r\n dispatch(displaySnackbar(`${name} deleted`, 'deletion'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with deleting document'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n//Copy Contributions Thunk\r\nexport function copyContributions(companyId: string, enrollmentId: string, planId: string, copyContribution: CopyContributionDTO) {\r\n return async (dispatch: any) => {\r\n try {\r\n await http(`companies/${companyId}/enrollments/${enrollmentId}/plans/${planId}/copycontribution`, { method: 'POST', body: JSON.stringify(copyContribution) });\r\n await dispatch(fetchPlans(companyId, enrollmentId));\r\n dispatch(displaySnackbar('Contributions copied', 'success'));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with copy contributions'));\r\n throw ex;\r\n }\r\n };\r\n}\r\n\r\n//Search Plans Thunk\r\nexport interface SearchPlanPayload {\r\n baseLineOfCoverage: string;\r\n carrierCodes: string[];\r\n stateCode: string;\r\n countyName: string,\r\n effectiveDate: string;\r\n terminationDate?: string;\r\n groupSize?: number;\r\n sicCode?: number;\r\n}\r\nexport type SearchPlan = { planId: string; universalPlanId: string; planName: string; };\r\ninterface SearchPlanResponse { plans: SearchPlan[] }\r\nexport function searchPlans(payload: SearchPlanPayload) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n const { enrollment } = getState();\r\n const data: SearchPlanResponse = await http(`companies/${enrollment.company.id}/enrollments/${enrollment.id}/plans/search`, { method: 'POST', body: JSON.stringify(payload) });\r\n return data.plans;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with plan search'));\r\n throw ex;\r\n }\r\n }\r\n}\r\n\r\n//Import Plan Thunk\r\nexport interface ImportPlanPayload {\r\n planId: string;\r\n universalPlanId: string;\r\n county: string;\r\n stateCode: string;\r\n zipCode: number;\r\n effectiveDate: string;\r\n groupSize: number;\r\n sicCode?: number;\r\n}\r\nexport function importPlan(payload: ImportPlanPayload) {\r\n return async (dispatch: any, getState: () => ReduxState) => {\r\n try {\r\n const { enrollment } = getState();\r\n\r\n const importedPlan: PlanDTO = await http(`companies/${enrollment.company.id}/enrollments/${enrollment.id}/plans/import/${enrollment.externalReferenceId}`, { method: 'POST', body: JSON.stringify(payload) });\r\n\r\n dispatch(storePlan(importedPlan));\r\n dispatch(displaySnackbar('Plan imported', 'success'));\r\n return importedPlan.id;\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Error with plan import'));\r\n throw ex;\r\n }\r\n }\r\n}","import { LinearProgress, Paper } from '@material-ui/core';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Breadcrumb from 'components/common/breadcrumb';\r\nimport MaterialTable from 'components/common/plan_table';\r\nimport TableHeader from 'components/common/table_header';\r\nimport Title from 'components/common/title';\r\nimport PlanImportDialog from 'components/plan/plan_import_dialog';\r\nimport memoizeOne from 'memoize-one';\r\nimport * as PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { deletePlan, fetchEnrollment, fetchPlans, copyPlan } from 'redux/actions';\r\nimport { EnrollmentReducerState, EnrollmentReducerStatePropType, LinkedPlanType, Plan, PlanPropType } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { isUserReadOnly, simpleCompare, Zones } from 'utility';\r\nimport auth from 'utility/auth';\r\nimport palette from 'utility/palette';\r\nimport BasePage from '../../components/common/base_page';\r\nimport routes from '../../router/routes';\r\nimport { CopyPlanDTO } from '../../redux/reducers/plan_reducer';\r\n\r\nexport interface PlanRowContent extends Plan {\r\n dependentPlans: string[]\r\n}\r\n\r\ninterface ComponentProps {\r\n}\r\ninterface MappedProps {\r\n plans: Plan[];\r\n enrollment: EnrollmentReducerState;\r\n}\r\ninterface DispatchProps {\r\n fetchPlans: (companyId: string, enrollmentId: string) => Promise;\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n deletePlan: (companyId: string, enrollmentId: string, id: string, name: string) => Promise;\r\n copyPlan: (companyId: string, enrollmentId: string, id: string, name: string, options: CopyPlanDTO) => Promise;\r\n}\r\n\r\ntype Props = MappedProps & DispatchProps & ComponentProps & RouteComponentProps;\r\n\r\ninterface State {\r\n loadingPlans: boolean;\r\n planImportDialogOpen: boolean;\r\n}\r\n\r\nclass PlanList extends React.PureComponent {\r\n tableHeaders: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n tootlTip?: boolean;\r\n toolTipText?: string;\r\n }[] = [\r\n { id: 'delete', direction: false, label: ''},\r\n { id: 'copy', direction: false, label: '' },\r\n { id: 'carrierName', direction: false, label: 'Line of Coverage' },\r\n { id: 'planName', direction: false, label: 'Plan Name' },\r\n { id: 'carrier', direction: false, label: 'Carrier' },\r\n { id: 'planStatus', direction: false, label: 'Plan Status', tootlTip: true, toolTipText : 'Plan Status indicates if a plan has missing data in plan setup modules. Plans do not have to be complete before you begin open enrollment however the risk is employee required data may be missing when submitted if enrollment elections are made prior to completing this information.'},\r\n { id: 'contribution', direction: false, label: 'Contribution', tootlTip: true, toolTipText: 'This status indicates whether employer contributions have been set up for a plan.' },\r\n { id: 'autoEnroll', direction: false, label: 'Auto-Enroll', tootlTip: true, toolTipText: 'This column indicates whether employees or dependents are auto-enrolled for a plan.' }\r\n ];\r\n \r\n breadCrumb = ['Dashboard', 'Plans'];\r\n isEmployer = auth.isUserEmployer();\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loadingPlans: false,\r\n planImportDialogOpen: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n\r\n promises.push(this.props.fetchPlans(this.companyId, this.enrollmentId));\r\n\r\n if (!this.props.enrollment.id)\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n\r\n this.loadingOn();\r\n Promise.all(promises).then(this.loadingOff, this.loadingOff);\r\n }\r\n\r\n loadingOn = () => this.setState({ loadingPlans: true });\r\n loadingOff = () => this.setState({ loadingPlans: false });\r\n dialogOpen = () => this.setState({ planImportDialogOpen: true });\r\n dialogClosed = () => this.setState({ planImportDialogOpen: false });\r\n\r\n get companyId() {\r\n return this.props.match.params[routes.planSetup.params!.companyId!.replace(':', '')];\r\n }\r\n\r\n get enrollmentId() {\r\n return this.props.match.params[routes.planSetup.params!.enrollmentId!.replace(':', '')];\r\n }\r\n\r\n goToPlanSetup = (planId?: string) => {\r\n const { path, params } = routes.planSetup;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId).replace(params!.planId!, planId || \"new\");\r\n this.props.history.push(route);\r\n };\r\n\r\n handlePageChange = (index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n };\r\n\r\n handleAdd = (planId: string) => {\r\n this.dialogClosed();\r\n this.goToPlanSetup(planId);\r\n };\r\n\r\n handleDelete = (id: string, name: string) => {\r\n this.loadingOn();\r\n this.props.deletePlan(this.companyId, this.enrollmentId, id, name).then(this.loadingOff, this.loadingOff);\r\n };\r\n handleCopy = (id: string, name: string, options: CopyPlanDTO) => {\r\n this.loadingOn();\r\n\r\n this.props.copyPlan(this.companyId, this.enrollmentId, id, name, options).then(this.loadingOff, this.loadingOff);\r\n };\r\n handleRowClick = (planId: string) => {\r\n const { path, params } = routes.planSetup;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId).replace(params!.planId!, planId);\r\n this.props.history.push(route);\r\n };\r\n\r\n setLinesOfCoverage = memoizeOne((plans: Plan[]) => {\r\n const linesOfCoverage = new Set();\r\n plans.forEach((plans: Plan) => {\r\n linesOfCoverage.add(plans.lineOfCoverageId)\r\n })\r\n return linesOfCoverage;\r\n });\r\n\r\n sortPlans = memoizeOne((plans: Plan[]) => {\r\n return plans.slice().sort(simpleCompare(\"lineOfCoverageId\", false))\r\n });\r\n\r\n render() {\r\n const { loadingPlans, planImportDialogOpen } = this.state;\r\n const { plans, enrollment } = this.props;\r\n const linesOfCoverage = this.setLinesOfCoverage(plans);\r\n const planCount = plans.length;\r\n\r\n const tableContent = this.sortPlans(plans).map(plan => {\r\n const dependentPlans = plans\r\n .filter(x => x.linkedPlans.find(y => y.linkType === LinkedPlanType.benefit && y.id === plan.id))\r\n .map(plan => plan.planDisplayName);\r\n return { ...plan, dependentPlans: dependentPlans } as PlanRowContent;\r\n });\r\n\r\n const viewOnly = !!enrollment.setupCompletedOn || this.isEmployer || isUserReadOnly(this.props.enrollment, Zones.PlanEdit);\r\n\r\n return (\r\n \r\n
\r\n {enrollment.company.name}
\r\n
\r\n \r\n \r\n }\r\n primaryActionText=\"Add New Plan\"\r\n handlePrimaryAction={this.dialogOpen}\r\n counts={[\r\n { amount: linesOfCoverage.size, type: 'Lines of Coverage' },\r\n { amount: planCount, type: 'Plans' }\r\n ]}\r\n />\r\n {loadingPlans && }\r\n \r\n \r\n \r\n
\r\n\r\n );\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (PlanList as any).propTypes = {\r\n plans: PropTypes.arrayOf(PlanPropType),\r\n enrollment: EnrollmentReducerStatePropType,\r\n }\r\n}\r\n\r\nconst styles = {\r\n header: {\r\n fontFamily: 'Roboto',\r\n fontSize: 20,\r\n fontWeight: 500,\r\n color: palette.grey.text\r\n },\r\n headerDiv: {\r\n paddingTop: 16,\r\n paddingBottom: 16,\r\n paddingRight: 24,\r\n paddingLeft: 24\r\n },\r\n subheader: {\r\n color: palette.grey.text\r\n },\r\n}\r\n\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n plans: state.plan.list,\r\n enrollment: state.enrollment,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n fetchPlans: (companyId, enrollmentId) => dispatch(fetchPlans(companyId, enrollmentId)),\r\n deletePlan: (companyId, enrollmentId, id, name) => dispatch(deletePlan(companyId, enrollmentId, id, name)),\r\n fetchEnrollment: (enrollmentId) => dispatch(fetchEnrollment(enrollmentId)),\r\n copyPlan: (companyId, enrollmentId, id, name, options) => dispatch(copyPlan(companyId, enrollmentId, id, name, options))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PlanList);","import { Grid, Paper } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { AgeRestriction, Plan } from 'redux/reducers';\r\nimport { CONFIGURATION_TYPE_IDS } from 'utility';\r\nimport { nonNegativeInteger } from 'utility/form_validation';\r\nimport { getLookupId, getMemberLevel, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\n\r\nexport type AgeRestrictionForm = AgeRestriction;\r\n\r\nexport type FieldData = {\r\n ageRestrictions: AgeRestrictionForm[];\r\n}\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n isReadOnly?: boolean;\r\n plan: Plan;\r\n}\r\n\r\nexport function getDefaultFormValues(savedPlan: Plan) {\r\n const employee = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.memberLevel);\r\n const spouse = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.memberLevel);\r\n const child = getLookupId('PERCHILD', LOOKUP_TYPE_IDS.memberLevel);\r\n const minAge18 = savedPlan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.minAge18);\r\n const ageRestrictions: AgeRestrictionForm[] = [\r\n {\r\n memberLevelId: employee,\r\n hasDisability: false,\r\n isStudent: false,\r\n minAge: null,\r\n maxAge: null\r\n },\r\n {\r\n memberLevelId: spouse,\r\n hasDisability: false,\r\n isStudent: false,\r\n minAge: null,\r\n maxAge: null\r\n },\r\n {\r\n memberLevelId: child,\r\n hasDisability: false,\r\n isStudent: false,\r\n minAge: null,\r\n maxAge: null\r\n },\r\n {\r\n memberLevelId: child,\r\n hasDisability: true,\r\n isStudent: false,\r\n minAge: null,\r\n maxAge: null\r\n\r\n },\r\n {\r\n memberLevelId: child,\r\n hasDisability: false,\r\n isStudent: true,\r\n minAge: null,\r\n maxAge: null\r\n },\r\n ];\r\n return ageRestrictions;\r\n}\r\n\r\nconst AgeRestrictionsFieldArray: React.FunctionComponent = (props: Props) => {\r\n const { fields, plan } = props;\r\n\r\n const employee = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.memberLevel);\r\n const spouse = getLookupId('SPOUSE', LOOKUP_TYPE_IDS.memberLevel);\r\n const child = getLookupId('PERCHILD', LOOKUP_TYPE_IDS.memberLevel);\r\n const isMinMaxAgeDefaulted = !!plan && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.minMaxDefaultAge);\r\n const isReadOnly = props.isReadOnly === true || isMinMaxAgeDefaulted;\r\n const minAge18 = props.plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.minAge18);\r\n const disableField = isReadOnly || minAge18;\r\n \r\n return (\r\n \r\n
\r\n

Age Restrictions

\r\n \r\n Min ageMax Age\r\n {fields.map((name, index) => {\r\n const ageRestriction = fields.get(index);\r\n const memberLevel = getMemberLevel().find(m => m.id === ageRestriction.memberLevelId)\r\n if (!memberLevel) {\r\n return <>;\r\n }\r\n const disabled = ageRestriction.hasDisability;\r\n const student = ageRestriction.isStudent;\r\n const label = `${\r\n memberLevel.id === employee ? 'Employee' :\r\n memberLevel.id === spouse ? 'Spouse/Domestic Partner' :\r\n memberLevel.id === child ? 'Child/Other' :\r\n ''\r\n }${(disabled || student) ? ` - ${disabled ? 'Disabled' : student ? 'Student' : ''}` : ''}`\r\n return <>\r\n {label}\r\n \r\n \r\n \r\n })}\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n color: palette.grey.text,\r\n },\r\n headerText: {\r\n fontSize: 22,\r\n margin: '15px 0'\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15\r\n },\r\n memberLevel: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n}\r\n\r\nexport default AgeRestrictionsFieldArray;","import { FormControlLabel, Paper, Radio } from '@material-ui/core';\r\nimport Help from '@material-ui/icons/Help';\r\nimport { RadioControlGroupField } from 'components/common/reduxform_fields';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { getAutoEnrollments } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { Plan } from '../../redux/reducers';\r\nimport { styles as mainStyles } from '../../utility/common_styles';\r\nimport { SwitchField } from '../common/reduxform_fields';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\nexport type FieldData = {\r\n toggleAuto: boolean;\r\n autoEnrollId: string;\r\n}\r\n\r\ninterface ComponentProps {\r\n planId: string;\r\n lineOfCoverageId: number;\r\n selectedLocId?: number;\r\n formName: string;\r\n isReadOnly?: boolean;\r\n hasEmployeesElectedAnyPlan?:boolean;\r\n}\r\n\r\ninterface StateProps {\r\n selectedClassIds: string[];\r\n toggleAuto: boolean;\r\n locPlans: Plan[];\r\n}\r\ntype Props = StateProps & ComponentProps\r\n\r\ninterface State { }\r\n\r\nclass AutoEnrollCard extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {};\r\n\r\n }\r\n\r\n get disableAutoEnroll() {\r\n return !this.allowAutoEnroll(this.props.selectedClassIds, this.props.locPlans, this.props.planId);\r\n }\r\n\r\n validateAutoEnrollId = (value: string, allValues: FieldData) => allValues.toggleAuto ? value ? undefined : 'Required' : undefined;\r\n\r\n allowAutoEnroll = memoizeOne((selectedClassids: string[], locPlans: Plan[], planId: string): boolean => { \r\n if (locPlans.find(plan => !!plan.autoEnrollId && plan.classIds.length === 0 && plan.id !== planId) && selectedClassids.length === 0)\r\n return false;\r\n\r\n const classIds = locPlans\r\n .filter(plan => plan.id !== planId && plan.autoEnrollId)\r\n .map(plan => plan.classIds);\r\n let flag = true;\r\n for (var i = 0; i < classIds.length; i++) {\r\n if (classIds[i] && classIds[i].filter(classId => selectedClassids.indexOf(classId) > -1).length > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n\r\n return flag;\r\n });\r\n\r\n render() {\r\n const autoEnrollToolTip = \"Prevents employee from waiving coverage for this plan. Only 1 auto-enroll plan is allowed for a given line of coverage and employee class.\";\r\n const disableAutoEnroll = this.disableAutoEnroll;\r\n const isReadOnly = this.props.isReadOnly === true;\r\n return (\r\n \r\n
\r\n

Auto-Enrollment

\r\n
\r\n
\r\n \r\n }\r\n />\r\n
\r\n
\r\n );\r\n }\r\n};\r\n\r\nexport const styles: { [key: string]: React.CSSProperties } = {\r\n ...mainStyles,\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16,\r\n marginLeft: '-6px'\r\n },\r\n tooltip: {\r\n opacity: 0.6,\r\n paddingBottom: '2px'\r\n },\r\n toolTipDiv: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n alignContent: 'center'\r\n },\r\n toggleDiv: {\r\n marginTop: '-15px',\r\n paddingLeft: '45px'\r\n }\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const toggleAuto = formValueSelector(ownProps.formName)(state, 'toggleAuto') as boolean;\r\n const classes = (formValueSelector(ownProps.formName)(state, 'classes') || []) as any[];\r\n const selectedClassIds = classes.filter(f => f.selected).map(f => f.id);\r\n const locPlans = state.plan.list.filter(plan => plan.lineOfCoverageId === ownProps.lineOfCoverageId);\r\n return {\r\n selectedClassIds: selectedClassIds,\r\n toggleAuto,\r\n locPlans\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(AutoEnrollCard);\r\n\r\n","import ButtonBase from '@material-ui/core/ButtonBase';\r\nimport Grid from '@material-ui/core/Grid/Grid';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport CheckCircle from '@material-ui/icons/CheckCircle';\r\nimport RadioButtonUnchecked from '@material-ui/icons/RadioButtonUnchecked';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\n\r\ninterface ComponentProps {\r\n label: string;\r\n icon: React.ReactNode;\r\n isFlat?: boolean;\r\n isAutoEnrolled?: boolean;\r\n checked?: boolean;\r\n fullWidth?: boolean;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n}\r\ntype Props = ComponentProps & StyledComponentProps\r\n\r\nconst ChipToggle = (props: Props) => {\r\n const { classes = {}, label, icon, checked, onClick } = props;\r\n\r\n return (\r\n \r\n onClick && onClick()}\r\n >\r\n \r\n \r\n {icon}\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n {checked ? : }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n wrapper: {\r\n margin: 5\r\n },\r\n paper: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n padding: 13,\r\n minWidth: \"200px\"\r\n },\r\n disabled: {\r\n backgroundColor: palette.grey.dark,\r\n color: palette.grey.lightText,\r\n border: `1px solid ${palette.grey.border}`\r\n },\r\n isFlat: {\r\n border: `1px solid ${palette.grey.border}`\r\n },\r\n fullWidthWrapper: {\r\n margin: 5,\r\n width: '100%',\r\n },\r\n fullWidthPaper: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n padding: 13,\r\n width: '100%',\r\n marginRight: 10,\r\n marginLeft: 10,\r\n height: 26\r\n },\r\n checkedBackground: {\r\n backgroundColor: palette.blue[100]\r\n },\r\n checkedBackgroundAutoEnroll: {\r\n backgroundColor: palette.blue[100],\r\n border: `1px solid ${palette.grey.border}`\r\n },\r\n text: {\r\n padding: '0 30px 0 10px'\r\n },\r\n icon: {\r\n marginTop: \"-6px\",\r\n color: palette.blue.primary\r\n },\r\n disabledIcon: {\r\n marginTop: \"-6px\",\r\n color: palette.grey.text\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(ChipToggle);","import { FormControlLabel, Switch } from '@material-ui/core';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport AssignmentIcon from '@material-ui/icons/AssignmentInd';\r\nimport ChipToggle from 'components/common/chip_toggle';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { change, Field, FieldArray, formValueSelector, WrappedFieldArrayProps, WrappedFieldProps } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport palette from 'utility/palette';\r\nimport { styles as mainStyles } from '../../utility/common_styles';\r\nimport { FORM_NAME } from './eligibility_upsert_form';\r\n\r\ntype ClassData = {\r\n id: string;\r\n name: string;\r\n selected: boolean;\r\n};\r\n\r\nexport type FieldData = {\r\n classes: ClassData[];\r\n}\r\n\r\ninterface ComponentProps {\r\n goToClassTab: () => void;\r\n initialToggleClasses: boolean;\r\n enabled: boolean;\r\n isReadOnly?: boolean;\r\n}\r\n\r\ninterface DispatchProps{\r\n deselectClass: (c: ClassData, index: number) => void;\r\n}\r\n\r\ninterface MappedProps{\r\n classesArray: ClassData[];\r\n}\r\n\r\ntype Props = ComponentProps & DispatchProps & MappedProps;\r\n\r\nconst ClassesFields = React.memo((props: Props) => {\r\n const { initialToggleClasses, enabled } = props;\r\n const [toggleClasses, setToggleClasses] = React.useState(initialToggleClasses);\r\n const isReadOnly = props.isReadOnly === true;\r\n const onChange = (value: boolean) => {\r\n setToggleClasses(value);\r\n if(!value && props.classesArray && props.classesArray.length > 0){\r\n props.classesArray.forEach((c, i) => {\r\n props.deselectClass(c, i);\r\n });\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n

Classes

\r\n

\r\n Please choose which employee classes can opt in to this plan.\r\n
\r\n You can manage employee classes in the \r\n Classes Tab\r\n \r\n

\r\n
\r\n
\r\n onChange(!toggleClasses)}\r\n disabled={!enabled || isReadOnly}\r\n />}\r\n />\r\n
\r\n {toggleClasses &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n );\r\n});\r\n\r\nexport const styles: { [key: string]: React.CSSProperties } = {\r\n ...mainStyles,\r\n classesIcon: {\r\n color: palette.blue.link,\r\n height: \"30px\",\r\n width: \"20px\"\r\n },\r\n link: {\r\n color: palette.blue.link\r\n },\r\n linkHover: {\r\n color: palette.blue.link,\r\n textDecoration: 'underline',\r\n cursor: 'pointer',\r\n }\r\n\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n const classesArray = formValueSelector(FORM_NAME)(state, 'classes')\r\n return {\r\n classesArray\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n deselectClass: (c: ClassData, index: number) => dispatch(change(FORM_NAME, `classes[${index}]`, {id: c.id, name:c.name, selected : false})),\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ClassesFields);\r\n\r\ninterface PlanClassesFieldArrayProps {\r\n disabled: boolean;\r\n}\r\n\r\n/** Helpers */\r\nconst PlanClassesFieldArray = (props: WrappedFieldArrayProps & PlanClassesFieldArrayProps) => {\r\n return (\r\n <>\r\n {props.fields.map((name, index) => {\r\n const _class = props.fields.get(index);\r\n const disabled = props.disabled;\r\n return (\r\n (\r\n }\r\n onClick={() => props.input.onChange(!props.input.value)}\r\n />\r\n )}\r\n />\r\n );\r\n })}\r\n \r\n );\r\n}\r\n","import { Grid, Paper } from '@material-ui/core';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps, formValueSelector } from 'redux-form';\r\nimport palette from 'utility/palette';\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { ReduxState } from 'redux/store';\r\nimport { connect } from 'react-redux';\r\nimport { Plan } from 'redux/reducers';\r\n\r\nexport type LinkedPlanForm = {\r\n id: string;\r\n name?: string;\r\n selected: boolean;\r\n LOC?: string;\r\n};\r\n\r\nexport type FieldData = {\r\n linkedElectionPlans: LinkedPlanForm[];\r\n}\r\n\r\ninterface MappedProps {\r\n selectedLinkedPlans: Plan[];\r\n}\r\n\r\nexport interface ComponentProps {\r\n isReadOnly?: boolean;\r\n formName: string;\r\n savedPlan: Plan;\r\n}\r\n\r\ninterface Props extends WrappedFieldArrayProps, ComponentProps, MappedProps { }\r\n\r\nconst LinkedPlanFieldArray = React.memo((props: Props) => {\r\n const { selectedLinkedPlans } = props;\r\n const isReadOnly = props.isReadOnly === true;\r\n\r\n const savedPlanClassesIds = props.savedPlan.classIds;\r\n\r\n var displayWarning = React.useMemo(() => {\r\n // Loop thru Selected Linked Plans & match each of their classes with Saved Plan\r\n var matchedClassesPlans = selectedLinkedPlans.filter(linkedPlan => linkedPlan.classIds.length === savedPlanClassesIds.length && linkedPlan.classIds.every((linkPlan, i) => linkPlan === savedPlanClassesIds[i]));\r\n return (matchedClassesPlans && matchedClassesPlans.length) !== (selectedLinkedPlans && selectedLinkedPlans.length);\r\n }, [selectedLinkedPlans]);\r\n\r\n if (props.fields.length) {\r\n return (\r\n \r\n
\r\n

Linked Plans

\r\n

\r\n In order to enroll in this plan, employees must also enroll in the plans selected below.\r\n

\r\n {displayWarning &&\r\n
\r\n \r\n The plans you are linking to may not share the same classes.\r\n
\r\n }\r\n
\r\n \r\n {props.fields.length && props.fields.map((name, index, fields) => {\r\n var data = fields.get(index);\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 else {\r\n return (\r\n \r\n
\r\n

Linked Plans

\r\n

\r\n No available plans to link\r\n

\r\n
\r\n
\r\n )\r\n }\r\n\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n ...commonStyles,\r\n header: {\r\n color: palette.grey.text,\r\n },\r\n headerText: {\r\n fontSize: 22,\r\n margin: '15px 0'\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15\r\n },\r\n orangeIcon: {\r\n color: palette.orange.primary\r\n },\r\n subText: {\r\n fontSize: 16,\r\n color: palette.grey.text\r\n },\r\n flexIconCell: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n whiteSpace:'nowrap'\r\n },\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const linkedElectionPlans = formValueSelector(ownProps.formName)(state, 'linkedElectionPlans') as LinkedPlanForm[];\r\n const planState = state.plan;\r\n\r\n const selectedLinkedPlanIds = linkedElectionPlans ? linkedElectionPlans.filter(linkedPlan => linkedPlan.selected).map(linkedPlan => linkedPlan.id) : [];\r\n const selectedLinkedPlans = planState.list.filter(plan => selectedLinkedPlanIds.includes(plan.id)) as Plan[];\r\n\r\n return {\r\n selectedLinkedPlans,\r\n }\r\n\r\n}\r\n\r\nexport default connect(mapStateToProps)(LinkedPlanFieldArray);","import { FormControlLabel, Grid, Paper, Radio } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { ReduxState } from 'redux/store';\r\nimport { required, positiveNumber } from 'utility/form_validation';\r\nimport { getWaitingPeriodsById } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { RadioControlGroupField, TextFormField } from '../common/reduxform_fields';\r\nimport { FORM_NAME } from './eligibility_upsert_form';\r\n\r\nexport type FieldData = {\r\n waitingPeriodTypeId?: string;\r\n waitingPeriod?: number;\r\n}\r\n\r\ninterface ComponentProps {\r\n waitingPeriodOptions: {\r\n waitingPeriodTypeId: number;\r\n waitingPeriodTypeName: string;\r\n }[];\r\n isReadOnly?: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n waitingPeriodTypeIdSelected?: string\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps;\r\n\r\nconst NewHireWaitingPeriod = React.memo((props: Props) => {\r\n const { waitingPeriodOptions, waitingPeriodTypeIdSelected } = props;\r\n\r\n const waitingPeriodRequired = required('Number of days in the waiting period is required');\r\n const noMoreThanNinetyDays = (value: any) => {\r\n return value > 90 ? 'Number of days in the waiting period cannot be greater than 90 days' : undefined;\r\n };\r\n const isReadyOnly = props.isReadOnly === true;\r\n return (\r\n \r\n
\r\n

New Hire Waiting Period

\r\n

Please choose the amount of time new hires must wait before enrolling in this plan.\r\n If nothing is set here, new hires will be enrolled with the effective date of the plan.

\r\n
\r\n \r\n \r\n {\r\n waitingPeriodOptions.map((option) => {\r\n return }\r\n />\r\n })\r\n\r\n }\r\n \r\n
\r\n {(waitingPeriodTypeIdSelected === String(getWaitingPeriodsById()!.filter(wp => wp.waitingPeriodTypeName === 'First of the month after a number of days')[0].waitingPeriodTypeId)\r\n || waitingPeriodTypeIdSelected === String(getWaitingPeriodsById()!.filter(wp => wp.waitingPeriodTypeName === 'Number of days after date of hire')[0].waitingPeriodTypeId)) &&\r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n );\r\n});\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: Props): MappedProps {\r\n const waitingPeriodTypeIdSelected = formValueSelector(FORM_NAME)(state, 'waitingPeriodTypeId') as string;\r\n return {\r\n waitingPeriodTypeIdSelected\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n color: palette.grey.text,\r\n },\r\n headerText: {\r\n fontSize: 22,\r\n margin: '15px 0'\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15\r\n },\r\n}\r\n\r\nexport default connect(mapStateToProps)(NewHireWaitingPeriod);","import { Grid, Paper } from '@material-ui/core';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { Participant } from 'redux/reducers';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { isParticipantEligible } from 'utility/plan_eligibility_utils';\r\nimport { CheckboxField } from '../common/reduxform_fields';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport Help from '@material-ui/icons/Help';\r\nimport { styles as common_styles } from '../../utility/common_styles';\r\n\r\nexport type FieldData = {\r\n participants: Participant[];\r\n}\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n lineOfCoverageId: number;\r\n isReadOnly?: boolean;\r\n}\r\n\r\nconst ParticipantFieldArray: React.FunctionComponent = (props: Props) => {\r\n const lookups = getLookups();\r\n const isReadOnly = props.isReadOnly === true;\r\n return (\r\n \r\n
\r\n

\r\n Participants\r\n \r\n }\r\n />\r\n

\r\n

\r\n Please choose who is able to enroll in this plan.\r\n
\r\n  Changing participants will reset your rates & contributions.\r\n

\r\n
\r\n \r\n {props.fields.get(0) && props.fields.map((name, index, fields) => {\r\n const { participantTypeId } = fields.get(index);\r\n const label = lookups[participantTypeId].value;\r\n const eligibility = isParticipantEligible(props.lineOfCoverageId, participantTypeId);\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n color: palette.grey.text,\r\n },\r\n headerText: {\r\n fontSize: 22,\r\n margin: '15px 0'\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15\r\n },\r\n warnIcon: {\r\n fontSize: 14,\r\n marginBottom: -2,\r\n color: palette.orange.primary\r\n },\r\n warnMessage: {\r\n fontSize: 13\r\n }\r\n}\r\n\r\nexport default ParticipantFieldArray;","import { Grid } from '@material-ui/core';\r\nimport MessageCard from '../common/message_card';\r\nimport palette from '../../utility/palette';\r\nimport React from 'react';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\n\r\n\r\ninterface Props {\r\n warning?: boolean;\r\n messageTitle?: string\r\n}\r\n\r\nconst PlanCoverageLevelMessage = (props: Props) => {\r\n return (\r\n <>\r\n {props.warning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nexport default PlanCoverageLevelMessage;","import { Grid } from '@material-ui/core';\r\nimport MessageCard from '../common/message_card';\r\nimport palette from 'utility/palette';\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n isSubmitted?: boolean;\r\n employeesElectedCurrentPlanCount: number;\r\n electionMessageTitle : string\r\n}\r\n\r\nconst PlanModificationMessage = (props: Props) => { \r\n return (\r\n <>\r\n {!props.isSubmitted && props.employeesElectedCurrentPlanCount > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 1\r\n }\r\n\r\n}\r\nexport default PlanModificationMessage;\r\n","import { Typography } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Help from '@material-ui/icons/Help';\r\nimport React from 'react';\r\nimport { FieldArray, FormErrors, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { LinkedPlanType, Participant, Plan, WaitingPeriodOption } from 'redux/reducers';\r\nimport { EnrollmentClass } from 'redux/reducers/enrollment_reducer';\r\nimport { generateParticipantsList } from 'utility/generator_funcs';\r\nimport { getAutoEnrollments, getById, getWaitingPeriodsById, isElectiveVoluntaryLOC } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { styles as mainStyles } from '../../utility/common_styles';\r\nimport SaveButton from '../common/save_button';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport AgeRestrictionsFieldArray, { AgeRestrictionForm, FieldData as AgeRestrictionFieldData, getDefaultFormValues } from './age_restrictions_field_array';\r\nimport AutoEnrollCard, { FieldData as AutoEnrollOptionsFieldData } from './auto_enroll_card';\r\nimport ClassesFields, { FieldData as ClassesFieldData } from './classes_fields';\r\nimport LinkedPlanFieldArray, { ComponentProps as LinkedPlanFieldArrayProps, FieldData as LinkedPlanFieldData, LinkedPlanForm } from './linkedplan_field_array';\r\nimport NewHireWaitingPeriod, { FieldData as NewHireWaitingPeriodFieldData } from './new_hire_waiting_period_fields';\r\nimport ParticipantFieldArray, { FieldData as ParticipantsFieldData } from './participant_field_array';\r\nimport PlanCoverageLevelMessage from '../plan/plan_coverage_level_message';\r\nimport PlanModificationMessage from '../plan/plan_modification_message';\r\nimport auth from 'utility/auth';\r\nexport const FORM_NAME = 'ELIGIBILITY_UPSERT';\r\n\r\nexport type FormData = AutoEnrollOptionsFieldData & ClassesFieldData & ParticipantsFieldData & LinkedPlanFieldData & AgeRestrictionFieldData & NewHireWaitingPeriodFieldData;\r\ntype FormError = string | AgeRestrictionForm[];\r\n\r\ninterface ComponentProps {\r\n isSetupComplete: boolean;\r\n disableSave?: boolean;\r\n onCancel?: () => void;\r\n goToClassTab: () => void;\r\n enrollmentClasses: EnrollmentClass[];\r\n savedPlan: Plan;\r\n availableElectionPlans: Plan[];\r\n waitingPeriodOptions: WaitingPeriodOption[];\r\n isReadOnly?: boolean;\r\n isSubmitted?: boolean;\r\n employeesElectedCurrentPlanCount: number;\r\n electionMessageTitle: string;\r\n hasEmployeesElectedAnyPlan: boolean;\r\n showCoverageApprovalWarning?: boolean;\r\n coverageMessageTitle: string;\r\n}\r\n\r\ninterface Props extends InjectedFormProps, ComponentProps {\r\n}\r\n\r\nconst validate = (values: FormData) => {\r\n const errors: FormErrors = {\r\n ageRestrictions: [] as AgeRestrictionForm[]\r\n };\r\n let ageResrictions = values.ageRestrictions;\r\n if (!!ageResrictions) {\r\n ageResrictions.forEach((ageRestriction, index) => {\r\n const min = (ageRestriction.minAge && parseInt(ageRestriction.minAge.toString()));\r\n const max = (ageRestriction.maxAge && parseInt(ageRestriction.maxAge.toString()));\r\n\r\n if (!!min && !!max && !isNaN(min) && !isNaN(max) && min >= max) {\r\n errors.ageRestrictions![index] = {\r\n minAge: 'Min age must be less than max age',\r\n maxAge: 'Max age must be greater than min age'\r\n }\r\n }\r\n if (!min && min !== 0 && !!max) {\r\n errors.ageRestrictions![index] = {\r\n minAge: 'Min age must have a value'\r\n }\r\n }\r\n if (!max && !!min) {\r\n errors.ageRestrictions![index] = {\r\n maxAge: 'Max age must have a value'\r\n }\r\n }\r\n if (max === 0) {\r\n errors.ageRestrictions![index] = {\r\n maxAge: 'Max age must have a value other than zero'\r\n }\r\n }\r\n });\r\n }\r\n return errors;\r\n}\r\n\r\nconst EligibilityUpsertFormComponent = (props: Props) => {\r\n const whyDisabled = \"Once employees started elections, age restriction info cannot be updated.\";\r\n const { submitting, invalid, onCancel, availableElectionPlans, handleSubmit, savedPlan, enrollmentClasses, isSetupComplete, disableSave, initialize, waitingPeriodOptions } = props;\r\n const isBrokerAndSubmitted = props.isSubmitted && auth.isUserEnrollmentManager();\r\n React.useEffect(() => {\r\n initialize({\r\n classes: enrollmentClasses.map(c => ({ id: c.id, name: c.className, selected: savedPlan.classIds.some(id => c.id === id) })),\r\n participants: [\r\n ...generateParticipantsList(savedPlan.lineOfCoverageId).map(participant => ({\r\n ...participant, // default values\r\n ...savedPlan.participants.find(p => p.participantTypeId === participant.participantTypeId) // saved values to override if they exist\r\n } as Participant))\r\n ],\r\n toggleAuto: !!savedPlan.autoEnrollId,\r\n autoEnrollId: `${savedPlan.autoEnrollId ? savedPlan.autoEnrollId : getAutoEnrollments()[0].id}`,\r\n linkedElectionPlans: availableElectionPlans.map(electionPlan => ({\r\n id: electionPlan.id,\r\n name: electionPlan.planDisplayName,\r\n selected: savedPlan.linkedPlans.some(linkedPlan => linkedPlan.id === electionPlan.id && linkedPlan.linkType === LinkedPlanType.election),\r\n LOC: getById(electionPlan.lineOfCoverageId)\r\n })),\r\n ageRestrictions: getDefaultFormValues(props.savedPlan).map(ageRestriction => ({\r\n ...ageRestriction, // default values\r\n ...(savedPlan.ageRestrictions || []).find(a =>\r\n a.memberLevelId === ageRestriction.memberLevelId &&\r\n a.isStudent === ageRestriction.isStudent &&\r\n a.hasDisability === ageRestriction.hasDisability) // plan values to override if exists\r\n })),\r\n waitingPeriodTypeId: savedPlan.waitingPeriodTypeId ? String(savedPlan.waitingPeriodTypeId) : String(getWaitingPeriodsById()!.filter(wp => wp.waitingPeriodTypeName === 'Immediate')[0].waitingPeriodTypeId),\r\n waitingPeriod: savedPlan.waitingPeriod\r\n })\r\n }, [savedPlan, availableElectionPlans, enrollmentClasses, initialize])\r\n\r\n return (\r\n <>\r\n Eligibility \r\n {props.employeesElectedCurrentPlanCount>0\r\n ?
\r\n Why can't I edit this information?\r\n }\r\n />\r\n
\r\n : Please provide the relevant information for plan eligibility.}\r\n \r\n\r\n \r\n
\r\n 0}\r\n initialToggleClasses={enrollmentClasses.some(ec => savedPlan.classIds.some(id => id === ec.id))}\r\n isReadOnly={props.isReadOnly || props.hasEmployeesElectedAnyPlan}\r\n />\r\n
\r\n \r\n
\r\n {!isElectiveVoluntaryLOC(props.savedPlan.lineOfCoverageId) &&\r\n <>\r\n \r\n
\r\n \r\n }\r\n\r\n {!isElectiveVoluntaryLOC(props.savedPlan.lineOfCoverageId) &&\r\n <>\r\n \r\n name='linkedElectionPlans'\r\n component={LinkedPlanFieldArray}\r\n isReadOnly={props.isReadOnly}\r\n formName={FORM_NAME}\r\n savedPlan={savedPlan}\r\n />\r\n
\r\n 0}\r\n plan={props.savedPlan}\r\n />\r\n \r\n }\r\n \r\n\r\n
\r\n
\r\n \r\n \r\n Save Eligibility\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n ...mainStyles,\r\n buttonMargin: {\r\n marginRight: '8px'\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n subHeader: {\r\n color: palette.grey.text,\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n marginBottom: 20,\r\n color: palette.grey.text,\r\n },\r\n disable: {\r\n fontSize: 14,\r\n fontStyle: 'italic',\r\n marginRight: '10px',\r\n color: palette.grey.text,\r\n },\r\n toolTipDiv: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n alignContent: 'center'\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16\r\n },\r\n}\r\nexport default reduxForm({ form: FORM_NAME, validate })(EligibilityUpsertFormComponent);","import { Grid, InputAdornment, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldProps } from 'redux-form';\r\nimport { TextFormField } from 'components/common/reduxform_fields';\r\nimport { Rate, RawLookup } from 'redux/reducers';\r\nimport { nonNegativeNumber } from 'utility/form_validation';\r\nimport { getLookups, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { RateType } from 'utility/rate_type_utility';\r\n\r\nconst inputProps = {\r\n startAdornment: ($)\r\n};\r\n\r\ninterface Props extends WrappedFieldProps {\r\n showTobaccoRates: boolean;\r\n showGenderRates: boolean;\r\n rateType: RateType;\r\n isDisabled: boolean;\r\n showAgeBandedTierTobaccoRates: boolean;\r\n}\r\nconst AmountField = ({ disabled, property, index }: any) => \r\n \r\n\r\n\r\nconst AgeBandedRateFieldArray = (props: Props) => {\r\n const { showGenderRates, showTobaccoRates, rateType, showAgeBandedTierTobaccoRates, input: { value } } = props;\r\n const rates = value as Rate[] || [];\r\n const lookups = getLookups();\r\n\r\n // all the coverage levels\r\n const coverageLevels = Object\r\n .keys(lookups)\r\n .map(id => ({ ...lookups[id], id: parseInt(id) } as RawLookup))\r\n .filter(l => l.typeId === LOOKUP_TYPE_IDS.coverageLevel);\r\n\r\n // all the member levels\r\n const memberLevels = Object\r\n .keys(lookups)\r\n .map(id => ({ ...lookups[id], id: parseInt(id) } as RawLookup))\r\n .filter(l => l.typeId === LOOKUP_TYPE_IDS.memberLevel);\r\n\r\n const getLookupIdForRate = (rate: Rate): number => {\r\n if (rateType === 'AGEBANDEDTIERS') {\r\n return rate.coverageLevelId || 0\r\n }\r\n else if (rateType === 'AGEBANDEDINDIVIDUAL') {\r\n return rate.memberLevelId || 0\r\n }\r\n else {\r\n return -1; // not applicable\r\n }\r\n }\r\n const getHeaderValue = (header: RawLookup | string): string => {\r\n if (typeof header === 'object') {\r\n // it's a lookup object\r\n if (rateType === 'AGEBANDEDTIERS') {\r\n return header.key // we just want the abbreviation (e.g. EE, ES)\r\n }\r\n else if (rateType === 'AGEBANDEDINDIVIDUAL') {\r\n return header.value // we want the entire value (Spouse, etc)\r\n }\r\n else {\r\n return '' // not applicable\r\n }\r\n }\r\n else {\r\n // it's a string\r\n return header;\r\n }\r\n }\r\n\r\n let headers: (string | RawLookup)[] = [];\r\n if (rateType === 'AGEBANDEDTIERS') {\r\n if (showAgeBandedTierTobaccoRates === true) { //not getting prop value correctly here\r\n headers = headers.concat([\r\n \"EE Non-T\",\r\n \"EE T\",\r\n \"ES Non-T\",\r\n \"ES T\",\r\n \"EC Non-T\",\r\n \"EC T\",\r\n \"EF Non-T\",\r\n \"EF T\"\r\n ])\r\n }\r\n else {\r\n headers = headers.concat(coverageLevels)\r\n\r\n }\r\n }\r\n else if (rateType === 'AGEBANDEDINDIVIDUAL') {\r\n // we only want to show the member level headers for what is asked for\r\n var uniqueMemberLevelIds = Array.from(new Set(rates.map(rate => rate.memberLevelId)))\r\n headers = headers.concat(memberLevels.filter(memberLevel => uniqueMemberLevelIds.includes(memberLevel.id)))\r\n }\r\n else if (rateType === 'AGEBANDED') {\r\n if (showGenderRates) {\r\n if (showTobaccoRates) {\r\n headers = headers.concat([\r\n \"M Non-Tobacco\",\r\n \"M Tobacco\",\r\n \"F Non-Tobacco\",\r\n \"F Tobacco\"\r\n ])\r\n } else {\r\n headers = headers.concat([\r\n \"Male\",\r\n \"Female\"\r\n ])\r\n }\r\n } else {\r\n if (showTobaccoRates) {\r\n headers = headers.concat(['Non-Tobacco', 'Tobacco']);\r\n } else {\r\n headers = headers.concat([''])\r\n }\r\n }\r\n }\r\n\r\n const ageRanges = rates.reduce((ranges, rate, index) => {\r\n // find the age range in the list\r\n let range = ranges.find(range => range.minAge === rate.minAge && range.maxAge === rate.maxAge)\r\n if (!range) {\r\n // create it if it doesn't exist\r\n range = { minAge: rate.minAge, maxAge: rate.maxAge, rates: [] };\r\n ranges = [...ranges, range]; // append the newly created range to the list\r\n }\r\n const rateDisplay = { ...rate, index }; // convert it to our custom rate display model\r\n range.rates = range.rates\r\n .concat([rateDisplay]) // add it to the end of the list\r\n .sort((rateA, rateB) => {\r\n const headerLookupsById = headers\r\n .filter(h => typeof h === 'object')\r\n .map(h => (h as RawLookup).id)\r\n const rateALookupId = getLookupIdForRate(rateA);\r\n const rateBLookupId = getLookupIdForRate(rateB);\r\n return headerLookupsById.indexOf(rateALookupId) - headerLookupsById.indexOf(rateBLookupId);\r\n })\r\n return ranges;\r\n }, [] as AgeRange[]);\r\n\r\n return <>\r\n
\r\n \r\n Age\r\n {headers.map((header, i) => {getHeaderValue(header)})}\r\n \r\n
\r\n
{ageRanges.map((ageRange) => \r\n \r\n \r\n {generateAgeLabel(ageRange, ageRanges[ageRanges.length - 1].minAge)}\r\n \r\n {ageRange.rates.map(rate => \r\n {!showGenderRates && <>\r\n \r\n {(showTobaccoRates || showAgeBandedTierTobaccoRates) && <>\r\n \r\n }\r\n }\r\n {showGenderRates && <>\r\n \r\n {showTobaccoRates && }\r\n \r\n {showTobaccoRates && }\r\n }\r\n\r\n )}\r\n \r\n )}
\r\n \r\n}\r\n\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n row: {\r\n marginTop: 12,\r\n paddingTop: 12,\r\n alignItems: 'left'\r\n },\r\n header: {\r\n color: palette.grey.text,\r\n fontWeight: 500\r\n },\r\n subheaderAge: {\r\n color: palette.grey.lightText\r\n },\r\n subheader: {\r\n color: palette.grey.lightText,\r\n fontSize: '.75em',\r\n paddingTop: '11px'\r\n },\r\n containerHeader: {\r\n whiteSpace: 'nowrap',\r\n alignContent: 'left',\r\n alignItems: 'left',\r\n width: 'auto',\r\n maxWidth: '100%'\r\n },\r\n containerItem: {\r\n boxSizing: 'initial',\r\n },\r\n divParent: {\r\n width: 'auto',\r\n },\r\n};\r\n\r\ninterface RateDisplay extends Rate {\r\n index: number; // this is the index of the rate relative to its position in the form's list (to make it easy to update)\r\n}\r\n\r\ninterface AgeRange {\r\n minAge: number,\r\n maxAge?: number,\r\n rates: RateDisplay[]\r\n}\r\n\r\nfunction generateAgeLabel({ minAge: min, maxAge: max }: AgeRange, maxMin: number) {\r\n if (min === maxMin) {\r\n return `${min}+`;\r\n } else if (min === max || !max)\r\n return min;\r\n else\r\n return `${min}-${max}`\r\n}\r\n\r\nexport default AgeBandedRateFieldArray;","import { InputAdornment, Typography } from '@material-ui/core';\r\nimport { TextFormField } from 'components/common/reduxform_fields';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { Rate } from 'redux/reducers';\r\nimport { normalizeDecimal } from 'utility/form_normalization';\r\nimport { nonNegativeNumber } from 'utility/form_validation';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\n\r\nconst inputProps = {\r\n startAdornment: ($)\r\n};\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n isSubmitted: boolean;\r\n showCostPerUnit?: boolean;\r\n isReadOnly?: boolean;\r\n}\r\n\r\nconst CompositeRateFieldArray: React.FunctionComponent = (props: Props) => {\r\n const lookups = getLookups();\r\n const isReadOnly = props.isReadOnly === true;\r\n return (\r\n <>\r\n Composite Rates\r\n {props.showCostPerUnit &&\r\n Cost per ${props.input.value || 0} of Coverage}\r\n />\r\n }\r\n
\r\n {props.fields.map((name, index, fields) => {\r\n const { coverageLevelId } = fields.get(index);\r\n const label = coverageLevelId ? lookups[coverageLevelId].value : '';\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n color: palette.grey.text,\r\n fontWeight: 500\r\n },\r\n compositeRatesDiv: {\r\n marginTop: 20\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 20\r\n },\r\n costPerUnitInfoText: {\r\n fontSize: 12,\r\n color: palette.grey.text,\r\n marginTop: 8,\r\n marginBottom: -8\r\n }\r\n};\r\n\r\nexport default CompositeRateFieldArray;","import { InputAdornment, Typography } from '@material-ui/core';\r\nimport { TextFormField } from 'components/common/reduxform_fields';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { Rate } from 'redux/reducers';\r\nimport { normalizeDecimal } from 'utility/form_normalization';\r\nimport { nonNegativeNumber } from 'utility/form_validation';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\n\r\nconst inputProps = {\r\n startAdornment: ($)\r\n};\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n isSubmitted: boolean;\r\n showCostPerUnit?: boolean;\r\n isReadOnly?: boolean;\r\n}\r\n\r\nconst FlatRateFieldArray: React.FunctionComponent = (props: Props) => {\r\n const lookups = getLookups();\r\n const isReadOnly = props.isReadOnly === true;\r\n return (\r\n <>\r\n Flat Rate\r\n {props.showCostPerUnit &&\r\n Cost per ${props.input.value || 0} of Coverage}\r\n />\r\n }\r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n color: palette.grey.text,\r\n fontWeight: 500\r\n },\r\n FlatRatesDiv: {\r\n marginTop: 20\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 20\r\n },\r\n costPerUnitInfoText: {\r\n fontSize: 12,\r\n color: palette.grey.text,\r\n marginTop: 8,\r\n marginBottom: -8\r\n }\r\n};\r\n\r\nexport default FlatRateFieldArray;","import { InputAdornment, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { TextFormField } from 'components/common/reduxform_fields';\r\nimport { Rate } from 'redux/reducers';\r\nimport { nonNegativeNumber } from 'utility/form_validation';\r\nimport { getLookups, getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\n\r\nconst inputProps = {\r\n startAdornment: ($)\r\n};\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n isSetupComplete: boolean;\r\n showCostPerUnit?: boolean;\r\n}\r\n\r\nconst IndividualRateFieldArray: React.FunctionComponent = (props: Props) => {\r\n const lookups = getLookups();\r\n const childMemberLevelId = getLookupId('PERCHILD', LOOKUP_TYPE_IDS.memberLevel);\r\n return (\r\n <>\r\n Composite Rates\r\n {props.showCostPerUnit &&\r\n Cost per ${props.input.value || 0} of Coverage}\r\n />\r\n }\r\n
\r\n {props.fields.map((name, index, fields) => {\r\n const { memberLevelId } = fields.get(index);\r\n let label = '';\r\n if (memberLevelId) {\r\n const lookup = lookups[memberLevelId!];\r\n const isChild = memberLevelId === childMemberLevelId;\r\n label = (isChild ? JSON.parse(lookup.additionalDataJson).SecondValue : lookup.value) + ' Rate';\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n color: palette.grey.text,\r\n fontWeight: 500\r\n },\r\n compositeRatesDiv: {\r\n marginTop: 20\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 20\r\n },\r\n costPerUnitInfoText: {\r\n fontSize: 12,\r\n color: palette.grey.text,\r\n marginTop: 8,\r\n marginBottom: -8\r\n }\r\n};\r\n\r\nexport default IndividualRateFieldArray;","import { Button, FormControlLabel, Grid, InputAdornment, Paper, Radio, Typography } from '@material-ui/core';\r\nimport MessageCard from 'components/common/message_card';\r\nimport React from 'react';\r\nimport { Field, FieldArray, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { Rate, RawLookup } from 'redux/reducers';\r\nimport { positiveNumber, required } from 'utility/form_validation';\r\nimport { getRateTypes, isDisabilityLOC, isLifeLOC } from 'utility/lookup_utils';\r\nimport { getRateTypeFromId } from 'utility/rate_type_utility';\r\nimport palette from '../../utility/palette';\r\nimport { RadioControlGroupField, SwitchField, TextFormField } from '../common/reduxform_fields';\r\nimport SaveButton from '../common/save_button';\r\nimport AgeBandedTable from './age_banded_table';\r\nimport CompositeRateFieldArray from './composite_rate_field_array';\r\nimport FlatRateFieldArray from './flat_rate_field_array';\r\nimport IndividualRateFieldArray from './individual_rate_field_array';\r\nimport PlanModificationMessage from '../plan/plan_modification_message';\r\nimport PlanCoverageLevelMessage from '../plan/plan_coverage_level_message';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\n\r\nexport const FORM_NAME = 'RATES_UPSERT';\r\n\r\nexport type FormData = {\r\n rateTypeId: string;\r\n rates: Rate[];\r\n showTobaccoRates: boolean;\r\n showGenderRates: boolean;\r\n costPerUnit?: number;\r\n flatRateAmount?: number;\r\n showAgeBandedTierTobaccoRates: boolean;\r\n};\r\n\r\ninterface ComponentProps {\r\n isSubmitted?: boolean;\r\n isConfirmed?: boolean;\r\n rateTypeId?: number;\r\n lineOfCoverageId?: number;\r\n disableSave?: boolean;\r\n isReadOnly?: boolean;\r\n showRatesWarning?: boolean;\r\n onCancel?: () => void;\r\n warningText?: string;\r\n employeesElectedCurrentPlanCount?: number;\r\n electionMessageTitle?: string;\r\n showCoverageApprovalWarning?: boolean;\r\n coverageMessageTitle?: string;\r\n showAgeBandedTierTobaccoRates?: boolean;\r\n showLevelFundedWarning?: boolean;\r\n\r\n}\r\n\r\nconst inputProps = {\r\n startAdornment: ($)\r\n};\r\n\r\ninterface Props extends InjectedFormProps, ComponentProps {}\r\n\r\ninterface State {\r\n showSwitcher: boolean;\r\n isGenderChecked: boolean;\r\n isTobaccoChecked: boolean;\r\n}\r\n\r\nclass RatesUpsertForm extends React.PureComponent{\r\n rateTypes: RawLookup[];\r\n constructor(props: Props) {\r\n super(props);\r\n const rateType = getRateTypeFromId(this.props.rateTypeId || this.props.initialValues.rateTypeId);\r\n\r\n\r\n this.state = {\r\n showSwitcher: rateType === 'AGEBANDED',\r\n isGenderChecked: props.initialValues.showGenderRates === true,\r\n isTobaccoChecked: props.initialValues.showTobaccoRates === true\r\n };\r\n\r\n this.rateTypes = getRateTypes(props.lineOfCoverageId);\r\n }\r\n\r\n changeRateType = (event: React.ChangeEvent) => {\r\n const rateType = getRateTypeFromId(event.target.value);\r\n this.setState({ showSwitcher: rateType === 'AGEBANDED' });\r\n };\r\n\r\n handleIncludeTobaccoChange = (toggleTobaccoSwitcherEv: React.ChangeEvent) => {\r\n const check = toggleTobaccoSwitcherEv.target.checked;\r\n this.setState({ isTobaccoChecked: check });\r\n };\r\n\r\n handleIncludeGenderChange = (toggleGenderSwitcherEv: React.ChangeEvent) => {\r\n const check = toggleGenderSwitcherEv.target.checked;\r\n this.setState({ isGenderChecked: check });\r\n }\r\n\r\n render() {\r\n const { employeesElectedCurrentPlanCount, electionMessageTitle, rateTypeId, submitting, invalid, handleSubmit, lineOfCoverageId, disableSave, isSubmitted, initialValues, onCancel, showRatesWarning, isReadOnly = true, showLevelFundedWarning } = this.props;\r\n const showCostPerUnit = lineOfCoverageId && (isDisabilityLOC(lineOfCoverageId) || isLifeLOC(lineOfCoverageId));\r\n const rateType = getRateTypeFromId(rateTypeId || initialValues.rateTypeId);\r\n const showGenderRates = this.state.isGenderChecked && rateType === 'AGEBANDED';\r\n const showTobaccoRates = this.state.isTobaccoChecked && rateType === 'AGEBANDED';\r\n const showAgeBandedTierTobaccoRates = rateType === 'AGEBANDEDTIERS' && this.props.showAgeBandedTierTobaccoRates === true;\r\n const validateUnitAmount = required('Per Unit is required');\r\n\r\n return (\r\n <>\r\n Rates\r\n Please provide the rates related to this plan.\r\n {showLevelFundedWarning &&\r\n NOTE: Some quotes have rates and benefits that are illustrative for comparison purposes only. Final level funded rates require carrier underwriting, approval and will be based on actual enrollment. Please refer to the carrier's proposal for detailed rates, benefits, limitations, and exclusions.\r\n }\r\n \r\n {showRatesWarning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n {this.props.warningText && false ? \r\n \r\n \r\n \r\n \r\n \r\n : undefined}\r\n
\r\n \r\n
\r\n
\r\n

Rate Type

\r\n
\r\n
\r\n \r\n {this.rateTypes.map(rateType => (\r\n }\r\n label={`${rateType.value}`}\r\n disabled={isReadOnly}\r\n />\r\n ))}\r\n \r\n
\r\n {showCostPerUnit &&\r\n \r\n \r\n }\r\n
\r\n {rateType === 'COMPOSITE' && }\r\n {rateType === 'FLAT' && }\r\n {(rateType === 'AGEBANDED' || rateType === 'AGEBANDEDINDIVIDUAL' || rateType === 'AGEBANDEDTIERS') &&\r\n <>\r\n {(rateType === 'AGEBANDED' || rateType === 'AGEBANDEDINDIVIDUAL' ) && \r\n Age-Banded Rates }\r\n {(rateType === 'AGEBANDEDTIERS' ) && \r\n Age-Banded Tier Rates }\r\n {showAgeBandedTierTobaccoRates &&\r\n Non-T = Non-Tobacco, T = Tobacco\r\n }\r\n {showCostPerUnit &&\r\n Cost per ${props.input.value || 0} of Coverage}\r\n />}\r\n {this.state.showSwitcher &&
\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n }\r\n {rateType === 'INDIVIDUAL' && }\r\n
\r\n
\r\n \r\n \r\n Save Rates\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n padding: '20px 40px'\r\n },\r\n buttonMargin: {\r\n marginRight: '8px'\r\n },\r\n rateTypeDiv: {\r\n marginBottom: 20\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n headerText: {\r\n fontSize: 24,\r\n marginBottom: 15,\r\n marginTop: 0\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n marginBottom: 20\r\n },\r\n levelFundedText: {\r\n fontSize: 14,\r\n fontStyle: \"italic\",\r\n marginBottom: 10\r\n },\r\n costPerUnitInfoText: {\r\n fontSize: 12,\r\n color: palette.grey.text,\r\n marginBottom: 16,\r\n marginTop: -4,\r\n },\r\n costPerUnit: {\r\n marginTop: 16\r\n },\r\n rateType: {\r\n position: 'relative',\r\n marginTop: -15\r\n },\r\n switcherHeader: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: -5,\r\n marginTop: -5\r\n },\r\n switcherText: {\r\n color: palette.grey.text,\r\n marginLeft: -10,\r\n fontSize: 14\r\n },\r\n rateTypes: {\r\n marginTop: '10px'\r\n }\r\n};\r\n\r\nexport default reduxForm({\r\n form: FORM_NAME,\r\n})(RatesUpsertForm);","import { Card, Paper, Typography } from '@material-ui/core';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport ReactPlaceholder from 'react-placeholder/lib';\r\nimport { FileUpload } from 'redux/actions';\r\nimport { Document, Plan, SnackbarVariant, GroupSubmission } from 'redux/reducers';\r\nimport { getLookupId, LOOKUP_TYPE_IDS, ENROLLMENT_SUBMISSION_MECHANISMS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport Help from '@material-ui/icons/Help';\r\nimport { styles as commonStyles } from '../..//utility/common_styles';\r\nimport FileUploadButton from '../common/file_upload_button';\r\nimport DeleteDocumentDialog from './delete_document_dialog';\r\nimport DocumentUploadDialogue from './document_upload_dialogue';\r\nimport PlanDocumentCard from './plan_document_card';\r\nimport PlanModificationMessage from '../plan/plan_modification_message';\r\nimport PlanCoverageLevelMessage from '../plan/plan_coverage_level_message';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport routes from 'router/routes';\r\nimport { RouteComponentProps, withRouter } from 'react-router-dom'\r\n\r\ninterface ComponentProps {\r\n reduceValidation?:boolean;\r\n plan: Plan;\r\n disableSave?: boolean;\r\n upsertDocumentToPlan: (planId: string, fileUpload: FileUpload) => Promise;\r\n deleteDocument: (planId: string, documentId: string, name: string) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n isSubmitted?: boolean;\r\n isConfirmed?: boolean;\r\n employeesElectedCurrentPlanCount: number;\r\n electionMessageTitle: string;\r\n showCoverageApprovalWarning?: boolean;\r\n coverageMessageTitle: string;\r\n enrollmentId: string;\r\n companyId:string;\r\n groupSubmission:GroupSubmission;\r\n}\r\n\r\ntype Props = ComponentProps & RouteComponentProps;\r\n\r\ninterface State {\r\n deleteDialogueOpen: boolean;\r\n dialogOpen: boolean;\r\n file?: File;\r\n title?: string;\r\n typeId?: number;\r\n acknowledgmentDocument?: boolean;\r\n description?: string;\r\n loadingIds: Set;\r\n docOnEdit?: string;\r\n docOnDelete?: string;\r\n fileName?: string;\r\n}\r\n\r\nclass PlanDocuments extends React.PureComponent{\r\n summaryTypeId = getLookupId('PLANSUMMARY', LOOKUP_TYPE_IDS.document);\r\n otherTypeId = getLookupId('DOCUMENTOTHER', LOOKUP_TYPE_IDS.document);\r\n acknowledgmentTypeId = getLookupId('ACKNOWLEDGMENTDOCUMENT', LOOKUP_TYPE_IDS.documentType);\r\n planDocumentsToolTip = 'You can add group documents from the \"Group Applications\" Tile on the main dashboard. Group applications will be available after confirming enrollment set up.';\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n deleteDialogueOpen: false,\r\n dialogOpen: false,\r\n loadingIds: new Set()\r\n };\r\n }\r\n\r\n openDeleteModal = (docId: string) => {\r\n const doc = this.props.plan.documents.find(doc => doc.id === docId)!;\r\n this.setState({\r\n docOnDelete: docId,\r\n title: doc.title,\r\n deleteDialogueOpen: true\r\n });\r\n }\r\n\r\n closeDeleteModal = () => {\r\n this.setState({\r\n docOnDelete: undefined,\r\n title: undefined,\r\n deleteDialogueOpen: false\r\n })\r\n }\r\n\r\n loadingOn = (docId: string) => this.setState(prevState => {\r\n const newSet = new Set(prevState.loadingIds);\r\n newSet.add(docId);\r\n return {\r\n loadingIds: newSet\r\n };\r\n });\r\n\r\n loadingOff = (docId: string) => this.setState(prevState => {\r\n const newSet = new Set(prevState.loadingIds);\r\n newSet.delete(docId);\r\n return {\r\n loadingIds: newSet\r\n };\r\n });\r\n\r\n get groupSubmissionId(){\r\n return this.props.groupSubmission && this.props.groupSubmission.id;\r\n } \r\n\r\n get isGroupSubmissionExportOnly(){\r\n return this.props.groupSubmission && this.props.groupSubmission.enrollmentSubmissionMechanism === ENROLLMENT_SUBMISSION_MECHANISMS.exportOnly;\r\n } \r\n \r\n goToGroupAppDocs = () => {\r\n var route = null;\r\n if(!this.isGroupSubmissionExportOnly){\r\n const {path, params} = routes.enrollmentKits;\r\n route = path.replace(params!.companyId!, this.props.companyId).replace(params!.enrollmentId!, this.props.enrollmentId).replace(params!.groupSubmissionId!, this.groupSubmissionId);\r\n }\r\n else{\r\n const {path, params} = routes.groupApplication;\r\n route = path.replace(params!.companyId!, this.props.companyId).replace(params!.enrollmentId!, this.props.enrollmentId);\r\n }\r\n this.props.history.push(route);\r\n }\r\n\r\n filterSummaryDocs = memoizeOne((docs: Document[]) => docs.filter(doc => doc.typeId === this.summaryTypeId));\r\n get summaryDocs() {\r\n return this.filterSummaryDocs(this.props.plan.documents);\r\n }\r\n\r\n filterOtherDocs = memoizeOne((docs: Document[]) => docs.filter(doc => doc.typeId === this.otherTypeId || doc.typeId === this.acknowledgmentTypeId));\r\n get otherDocs() {\r\n return this.filterOtherDocs(this.props.plan.documents);\r\n }\r\n\r\n get defaultFileInfo() {\r\n return {\r\n title: this.state.title,\r\n description: this.state.description,\r\n isAcknowledgmentDocument: this.state.acknowledgmentDocument\r\n\r\n };\r\n }\r\n\r\n uploadSummaryDoc = (event: any) => {\r\n const inputFile = event.target.files[0] as File;\r\n if (inputFile && inputFile.type === 'application/pdf') {\r\n const fileUpload: FileUpload = {\r\n file: inputFile,\r\n title: 'Plan Summary',\r\n typeId: this.summaryTypeId,\r\n };\r\n this.loadingOn('summary_new');\r\n this.props.upsertDocumentToPlan(this.props.plan.id, fileUpload)\r\n .then(() => this.loadingOff('summary_new'), () => this.loadingOff('summary_new'));\r\n } else {\r\n this.props.displaySnackbar('Document not uploaded. Only PDFs are accepted.', 'warning');\r\n }\r\n };\r\n\r\n uploadOtherDoc = (event: any) => {\r\n const inputFile = (event.target as any).files[0] as File;\r\n if (inputFile && inputFile.type === 'application/pdf') {\r\n this.setState({\r\n file: inputFile,\r\n typeId: this.otherTypeId,\r\n dialogOpen: true,\r\n fileName: inputFile.name\r\n });\r\n } else {\r\n this.props.displaySnackbar('Document not uploaded. Only PDFs are accepted.', 'warning');\r\n }\r\n };\r\n\r\n saveDocument = (title?: string, description?: string, isAcknowledgmentDocument?: boolean) => {\r\n if (this.state.file && !this.state.docOnEdit) {\r\n this.loadingOn(`document_other`);\r\n let docTitle = !!title ? title : this.state.file.name;\r\n this.props.upsertDocumentToPlan(this.props.plan.id, {\r\n file: this.state.file,\r\n title: docTitle,\r\n typeId: isAcknowledgmentDocument ? this.acknowledgmentTypeId : this.otherTypeId, //fix\r\n description\r\n }).then(() => this.loadingOff(`document_other`), () => this.loadingOff(`document_other`))\r\n } else {\r\n this.loadingOn(`${this.state.docOnEdit}`);\r\n let doc = this.props.plan.documents.find(doc => doc.id === this.state.docOnEdit)!;\r\n doc.title = !!title ? title : doc.title;\r\n doc.description = description;\r\n doc.typeId = isAcknowledgmentDocument ? this.acknowledgmentTypeId : this.otherTypeId\r\n this.props.upsertDocumentToPlan(this.props.plan.id, doc)\r\n .then(() => this.loadingOff(`${doc.id}`), () => this.loadingOff(`${doc.id}`));\r\n }\r\n };\r\n\r\n editDocument = (id: string) => {\r\n const doc = this.props.plan.documents.find(doc => doc.id === id)!;\r\n let isAcknowledgmentDocument = false;\r\n if (doc.typeId) isAcknowledgmentDocument = doc.typeId === this.acknowledgmentTypeId;\r\n this.setState({\r\n title: doc.title,\r\n description: doc.description,\r\n acknowledgmentDocument: isAcknowledgmentDocument,\r\n dialogOpen: true,\r\n docOnEdit: id,\r\n fileName: doc.fileName\r\n });\r\n };\r\n\r\n cancelEdit = () => {\r\n this.setState({\r\n dialogOpen: false,\r\n docOnEdit: undefined,\r\n title: undefined,\r\n description: undefined,\r\n file: undefined,\r\n typeId: undefined,\r\n fileName: undefined\r\n });\r\n };\r\n\r\n deleteDocument = (id: string) => {\r\n this.loadingOn(`${id}`);\r\n let fileName = this.state.title || \"\";\r\n this.props.deleteDocument(this.props.plan.id, id, fileName)\r\n .then(() => this.loadingOff(`${this.state.docOnEdit}`), () => this.loadingOff(`${this.state.docOnEdit}`));\r\n this.closeDeleteModal();\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n Documents\r\n
\r\n Please provide the plan documents related to this plan.\r\n Employees will see these documents on the plan details during enrollment.\r\n
\r\n \r\n \r\n Looking to upload group documents?\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n \r\n Plan Summary\r\n \r\n \r\n Summary of Benefits and Coverage document\r\n \r\n\r\n {this.summaryDocs.map(doc => (\r\n \r\n ))}\r\n {this.summaryDocs.length === 0 &&\r\n <>\r\n \r\n \r\n \r\n Browse Files\r\n \r\n \r\n \r\n \r\n Only PDF files will be accepted\r\n \r\n \r\n }\r\n \r\n Other Documents\r\n \r\n \r\n Any other plan-specific documents helpful to employees during enrollment\r\n \r\n {this.otherDocs.map(doc => (\r\n \r\n ))}\r\n \r\n \r\n \r\n Browse Files\r\n \r\n \r\n \r\n \r\n Only PDF files will be accepted\r\n \r\n \r\n {this.state.docOnDelete &&\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n card: {\r\n boxShadow: 'none',\r\n border: 1,\r\n borderStyle: 'dashed',\r\n borderColor: 'black',\r\n marginTop: 20,\r\n height: 80,\r\n position: 'relative'\r\n },\r\n docsHeader: {\r\n color: palette.grey.text,\r\n fontSize: 24,\r\n },\r\n otherDocsHeader: {\r\n color: palette.grey.text,\r\n fontSize: 24,\r\n marginTop: 16\r\n },\r\n docsSubHeader: {\r\n color: palette.grey.text,\r\n fontSize: 16,\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 15,\r\n marginTop: 15\r\n },\r\n browseButton: {\r\n marginTop: 22,\r\n marginLeft: '50%',\r\n transform: 'translateX(-50%)'\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n info: {\r\n marginBottom: 20\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n },\r\n infoUri: {\r\n fontSize: 12,\r\n color: palette.grey.text,\r\n },\r\n link: {\r\n color: palette.blue.link,\r\n cursor:'pointer'\r\n }\r\n};\r\n\r\nexport default withRouter(PlanDocuments);","import { CSSProperties } from \"react\";\r\nimport React from \"react\";\r\nimport { Switch } from \"@material-ui/core\";\r\nimport palette from \"utility/palette\";\r\n\r\ninterface ComponentProps {\r\n leftLabel: string;\r\n rightLabel: string;\r\n checked: boolean;\r\n onChange: (event: any) => void;\r\n disable?: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps {\r\n}\r\n\r\nconst TwoLabelToggle = (props: Props) => {\r\n return (\r\n
\r\n {props.leftLabel}\r\n \r\n {props.rightLabel}\r\n
\r\n );\r\n}\r\n\r\nconst styles: { [key: string]: CSSProperties } = {\r\n label: {\r\n color: palette.grey.text,\r\n fontSize: 14,\r\n fontFamily: 'Roboto'\r\n },\r\n};\r\n\r\nexport default TwoLabelToggle;","import TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport { CalculationRow } from './contribution_upsert_preview';\r\n\r\ninterface Props {\r\n calculationRow: CalculationRow;\r\n}\r\n\r\nconst ContributionPreviewRow = (props: Props) => {\r\n const { calculationRow } = props;\r\n const cellStyle = calculationRow.rowType === \"valid\" || calculationRow.rowType === \"noRate\" ? styles.validRow : styles.invalidRow;\r\n return (\r\n \r\n \r\n {calculationRow.name}\r\n \r\n \r\n {calculationRow.coverageLevel}\r\n \r\n \r\n {formatColumn(calculationRow.employeeCost, calculationRow.rowType, \"employeeCost\")}\r\n \r\n \r\n {formatColumn(calculationRow.employerCost, calculationRow.rowType, \"employerCost\")}\r\n \r\n \r\n {formatColumn(calculationRow.totalCost, calculationRow.rowType, \"totalCost\")}\r\n \r\n \r\n );\r\n}\r\n\r\nconst formatColumn = (value: number | undefined, rowType: string, fieldName: string) => {\r\n if (value !== undefined) {\r\n return \"$\" + value.toFixed(2);\r\n }\r\n else {\r\n if (rowType === \"noRate\" && fieldName === \"totalCost\") {\r\n return \"No rate\";\r\n }\r\n else {\r\n return \"--\";\r\n }\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n invalidRow: {\r\n backgroundColor: palette.grey.selectedTab,\r\n color: palette.grey.lightText\r\n },\r\n validRow: {\r\n color: palette.grey.darkText\r\n },\r\n cell:{\r\n paddingRight: '24px'\r\n },\r\n cellName:{\r\n paddingRight: 0,\r\n width: '40px'\r\n }\r\n};\r\n\r\nexport default ContributionPreviewRow;","import { Table, TableBody, TableCell, TableHead, TableRow, TableSortLabel } from '@material-ui/core';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport { simpleCompare } from '../../utility/simple_utils';\r\nimport ContributionPreviewRow from './contribution_preview_row';\r\nimport { CalculationRow } from './contribution_upsert_preview';\r\n\r\ninterface Props {\r\n calculationRows: CalculationRow[];\r\n invalidCalculationRows: CalculationRow[];\r\n}\r\n\r\ninterface State {\r\n headerColumns: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n fieldName: string;\r\n numeric: boolean;\r\n alignRight: boolean;\r\n }[],\r\n}\r\n\r\nclass ContributionPreviewTable extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n headerColumns: [\r\n { id: 'employee', direction: \"asc\", label: 'Employee', fieldName: \"name\", numeric: false, alignRight: false },\r\n { id: 'coverage', direction: false, label: 'Coverage', fieldName: \"coverageLevel\", numeric: false, alignRight: false },\r\n { id: 'eeCost', direction: false, label: 'EE Cost', fieldName: \"employeeCost\", numeric: true, alignRight: true },\r\n { id: 'erCost', direction: false, label: 'ER Cost', fieldName: \"employerCost\", numeric: true, alignRight: true},\r\n { id: 'totalCost', direction: false, label: 'Total Plan Cost', fieldName: \"totalCost\", numeric: true, alignRight: true }\r\n ],\r\n };\r\n }\r\n\r\n sort = memoizeOne((calculationRows: CalculationRow[], headerColumns: any) => {\r\n let sortedCalculationRows = calculationRows.slice();\r\n const sortedCol = headerColumns.find((col: any) => col.direction !== false);\r\n if (sortedCol) {\r\n sortedCalculationRows.sort(simpleCompare(sortedCol.fieldName, sortedCol.direction === 'desc'));\r\n }\r\n\r\n return sortedCalculationRows;\r\n });\r\n\r\n handleSortClick = (key: string) => {\r\n const newSortedCostCalculations = this.props.calculationRows.slice();\r\n if(key==='eeCost'){\r\n const eeCosts = newSortedCostCalculations.map(c=>c.employeeCost).filter(c=>c !== 0);\r\n if(eeCosts.length === 0) return;\r\n }else if(key==='erCost'){\r\n const erCosts = newSortedCostCalculations.map(c=>c.employerCost).filter(c=>c !== 0);\r\n if(erCosts.length === 0) return;\r\n }else if(key === 'totalCost'){\r\n const totalCosts = newSortedCostCalculations.map(c=>c.totalCost).filter(c=>c !== 0);\r\n if(totalCosts.length === 0) return;\r\n }\r\n this.setState(prevState => {\r\n const newHeaderColumns = prevState.headerColumns.slice();\r\n newHeaderColumns.forEach(col => {\r\n if (col.id === key) {\r\n if (col.direction === false || col.direction === 'desc') {\r\n col.direction = 'asc';\r\n newSortedCostCalculations.sort(simpleCompare(col.fieldName, false));\r\n } else if (col.direction === 'asc') {\r\n col.direction = 'desc'\r\n newSortedCostCalculations.sort(simpleCompare(col.fieldName, true));\r\n }\r\n } else {\r\n col.direction = false;\r\n }\r\n });\r\n\r\n return {\r\n headerColumns: newHeaderColumns,\r\n sortedCalculationRows: newSortedCostCalculations\r\n };\r\n });\r\n };\r\n\r\n render() {\r\n const sortedCalculationRows = this.sort(this.props.calculationRows, this.state.headerColumns);\r\n return (\r\n \r\n \r\n \r\n {this.state.headerColumns.map(column => (\r\n this.handleSortClick(column.id)}\r\n sortDirection={column.direction}\r\n style={column.alignRight ? styles.cellRightAlign : styles.cell}\r\n size={\"small\"}\r\n >\r\n \r\n {column.label}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {sortedCalculationRows.map(row => (\r\n \r\n ))}\r\n {this.props.invalidCalculationRows.map(row => (\r\n \r\n ))}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n headers: {\r\n fontSize: 14,\r\n whiteSpace: \"nowrap\",\r\n padding: 0\r\n },\r\n previewTable: {\r\n color: palette.grey.text,\r\n },\r\n cellRightAlign: {\r\n textAlign: 'right',\r\n paddingRight: '1px'\r\n },\r\n cell:{\r\n paddingRight: '1px'\r\n }\r\n\r\n};\r\n\r\nexport default ContributionPreviewTable;","import { Paper, Typography } from '@material-ui/core';\r\nimport { FormData as FormDataContributions } from 'components/forms/contribution_upsert_form';\r\nimport { FormData as FormDataInfo } from 'components/forms/plan_upsert_form';\r\nimport { FormData as FormDataRates } from 'components/forms/rates_upsert_form';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { getFormValues } from 'redux-form';\r\nimport { CalcContribution, CalcDependent, CalcEmployee, CalcPlan, CalcRate, calculateCosts, CalculationRequest, generateBenefitInfo, getCalcPlanMapper, translateDependentType } from 'redux/actions';\r\nimport { Employee, EmployeeReducerState, EmployeeReducerStatePropType, LinkedPlanType, Plan, PlanPropType } from 'redux/reducers';\r\nimport { CostCalculation } from 'redux/reducers/cost_calculation_reducer';\r\nimport { ReduxState } from 'redux/store';\r\nimport { getLookupValue, getBaseLOCforLOC, getChildDependentTypes, getLookupId, getLookups, getSpouseDependentTypes, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { simpleCompare } from 'utility/simple_utils';\r\nimport MessageCard from '../common/message_card';\r\nimport TwoLabelToggle from '../common/two_label_toggle';\r\nimport ContributionPreviewTable from './contribution_preview_table';\r\nimport { CONFIGURATION_TYPE_IDS } from \"../../utility/employee_utils\";\r\n\r\ntype PlanFormData = FormDataInfo & FormDataRates & FormDataContributions;\r\n\r\nexport interface CalculationRow extends CostCalculation {\r\n id: string;\r\n name: string;\r\n coverageLevel: string;\r\n rowType: \"valid\" | \"noCov\" | \"noRate\"\r\n}\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n planId: string;\r\n isSubmitted?: boolean;\r\n isReadOnly?: boolean;\r\n}\r\ninterface StateProps {\r\n calculationRows: CalculationRow[];\r\n companyPayrollCycleId: number | undefined;\r\n employeeState: EmployeeReducerState;\r\n plans: Plan[];\r\n plan: Plan;\r\n planFormData: PlanFormData;\r\n}\r\ninterface DispatchProps {\r\n calculateCosts: (calculationRequest: CalculationRequest) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps\r\n\r\ninterface State {\r\n previewAsMonthly: boolean;\r\n}\r\n\r\nclass ContributionUpsertPreview extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n previewAsMonthly: true\r\n };\r\n }\r\n isAllstateOffered = this.props.plan.carrierCode === getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode);\r\n spouseTypeIds = getSpouseDependentTypes().map(x => x.id);\r\n childTypeIds = getChildDependentTypes(this.isAllstateOffered).map(x => x.id);\r\n\r\n monthlyLookupId = getLookupId(\"MONTHLY\", LOOKUP_TYPE_IDS.payrollCycle);\r\n lookups = getLookups();\r\n ready = true;\r\n\r\n getValidRows = memoizeOne((calculationRows: CalculationRow[]) => {\r\n return calculationRows.filter(x => x.rowType === \"valid\" || x.rowType === \"noRate\");\r\n });\r\n\r\n getInvalidRows = memoizeOne((calculationRows: CalculationRow[]) => {\r\n return calculationRows.filter(x => x.rowType === \"noCov\").sort(simpleCompare(\"name\", false))\r\n });\r\n\r\n componentDidMount() {\r\n setTimeout(this.updateCalculations, 1000);\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n if (this.ready && prevProps.planFormData !== this.props.planFormData) {\r\n this.setNotReady();\r\n setTimeout(this.updateCalculations, 1000);\r\n }\r\n }\r\n\r\n togglePreviewAsMonthly = (event: any) => {\r\n this.setState({ previewAsMonthly: event.target.checked }, this.updateCalculations);\r\n }\r\n\r\n updateCalculations = () => {\r\n const request = this.constructCalculationRequest();\r\n this.props.calculateCosts(request);\r\n this.setReady();\r\n }\r\n\r\n constructCalculationRequest = () => {\r\n //Plan data in redux store is used for request, except for contribution info, which comes from formData\r\n const formData = this.props.planFormData;\r\n const linkedPlanEntry = this.props.plan.linkedPlans.find(x => x.linkType === LinkedPlanType.benefit);\r\n const linkedPlanId = linkedPlanEntry ? linkedPlanEntry.id : undefined;\r\n const linkedPlan = linkedPlanId ? this.props.plans.find(x => x.id === linkedPlanId)! : undefined;\r\n\r\n const basePlan = Boolean(formData.basePlanId) ? this.props.plans.find(p => p.id === formData.basePlanId) : undefined;\r\n\r\n const toCalcPlan = getCalcPlanMapper(this.props.plans);\r\n const checkForDependentTobaccoUse = this.props.plan.configurationTypeIds && this.props.plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.CheckDependentTobaccoUse) ;\r\n\r\n const plan: CalcPlan = {\r\n id: this.props.plan.id,\r\n effectiveDate: this.props.plan.effectiveDate ? this.props.plan.effectiveDate.format() : '',\r\n baseLineOfCoverage: getBaseLOCforLOC(this.props.plan.lineOfCoverageId),\r\n lineOfCoverage: this.props.plan.lineOfCoverageId,\r\n contributionLevel: Number(formData.contributionLevelId),\r\n contributionModelType: Number(formData.contributionModelTypeId),\r\n contributions: formData.contributions.filter(x => x.amount).map(contribution => {\r\n return {\r\n coverageLevel: contribution.coverageLevelId,\r\n memberLevel: contribution.memberLevelId,\r\n memberLevelTotalDependents: contribution.memberLevelTotalDependentsId,\r\n amount: contribution.amount,\r\n maxAmount: contribution.maxAmount\r\n } as CalcContribution\r\n }),\r\n rateType: Number(this.props.plan.rateTypeId),\r\n rates: this.props.plan.rates.filter(x => x.amount !== null).map(rate => {\r\n return {\r\n coverageLevel: rate.coverageLevelId,\r\n memberLevel: rate.memberLevelId,\r\n minAge: rate.minAge,\r\n maxAge: rate.maxAge,\r\n amount: rate.amount,\r\n tobaccoAmount: rate.tobaccoAmount,\r\n maleAmount: rate.maleAmount,\r\n maleTobaccoAmount: rate.maleTobaccoAmount,\r\n femaleAmount: rate.femaleAmount,\r\n femaleTobaccoAmount: rate.femaleTobaccoAmount\r\n } as CalcRate\r\n }),\r\n benefitInfo: generateBenefitInfo(this.props.plan, linkedPlan),\r\n baseContributionPlan: basePlan && toCalcPlan(basePlan),\r\n useEmployeeAge: this.props.plan.useEmployeeAge,\r\n checkForDependentTobaccoUse: checkForDependentTobaccoUse\r\n }\r\n\r\n const employees = this.props.employeeState.list.map(emp => {\r\n return {\r\n id: emp.id,\r\n dateOfBirth: emp.dateOfBirth ? emp.dateOfBirth.format() : undefined,\r\n payrollCycle: this.state.previewAsMonthly ? this.monthlyLookupId : this.props.companyPayrollCycleId,\r\n tobaccoUse: emp.tobaccoUse,\r\n gender: emp.genderId,\r\n enrolledLinesOfCoverage: emp.enrolledLinesOfCoverage,\r\n annualSalary: emp.annualSalary,\r\n dependents: emp.dependents.map(dependent => {\r\n return {\r\n id: dependent.id,\r\n dateOfBirth: dependent.dateOfBirth ? dependent.dateOfBirth.format() : undefined,\r\n dependentType: translateDependentType(dependent.dependentTypeId, this.spouseTypeIds, this.childTypeIds),\r\n tobaccoUse: dependent.tobaccoUse,\r\n gender: dependent.genderId,\r\n enrolledLinesOfCoverage: dependent.enrolledLinesOfCoverage\r\n } as CalcDependent\r\n })\r\n } as CalcEmployee\r\n })\r\n\r\n const request: CalculationRequest = {\r\n employees: employees,\r\n plans: [plan]\r\n }\r\n\r\n return request;\r\n }\r\n\r\n setReady = () => this.ready = true;\r\n setNotReady = () => this.ready = false;\r\n\r\n render() {\r\n const planName = this.props.plan.planDisplayName;\r\n const planLOC = this.props.plan.lineOfCoverageId ? this.lookups[this.props.plan.lineOfCoverageId].value : \"\";\r\n const payRollCycle = this.props.companyPayrollCycleId ? this.lookups[this.props.companyPayrollCycleId].value : \"\";\r\n const displayToggle = this.props.companyPayrollCycleId !== this.monthlyLookupId;\r\n const validRows = this.getValidRows(this.props.calculationRows);\r\n const invalidRows = this.getInvalidRows(this.props.calculationRows);\r\n return (\r\n
\r\n Contribution Preview\r\n
\r\n \r\n
\r\n
\r\n {planLOC} Plan: {planName}\r\n
\r\n {displayToggle &&\r\n }\r\n \r\n Plan Costs ({this.state.previewAsMonthly ? \"Monthly\" : payRollCycle})\r\n
\r\n \r\n
\r\n
\r\n *Estimates can only be shown for employees with a known coverage level.\r\n
\r\n );\r\n }\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n footnote: {\r\n marginTop: 24,\r\n color: palette.grey.text,\r\n fontSize: 14\r\n },\r\n message: {\r\n marginTop: 20\r\n },\r\n planName: {\r\n marginTop: 32,\r\n color: palette.grey.text,\r\n fontWeight: 'bold',\r\n fontSize: 16\r\n },\r\n scrollBox: {\r\n overflowX: 'auto',\r\n },\r\n table: {\r\n marginTop: 20\r\n },\r\n tableTitle: {\r\n paddingTop: 24,\r\n marginLeft: 24,\r\n color: palette.grey.text,\r\n fontSize: 20,\r\n fontWeight: 500\r\n },\r\n title: {\r\n marginTop: 48,\r\n color: palette.grey.text,\r\n fontSize: 20,\r\n },\r\n};\r\n\r\nfunction createCalculationRowArray(costCalculations: CostCalculation[], employees: Employee[], lineOfCoverageId: number) {\r\n const lookups = getLookups();\r\n const calculationRows = costCalculations.map(calc => {\r\n const employee = employees.find(x => x.id === calc.enrolleeId)!;\r\n const coverageLevel = employee.coverageLevels.find(x => x.lineOfCoverageId === lineOfCoverageId && !!x.coverageLevelId);\r\n\r\n if (!coverageLevel) {\r\n return {\r\n id: `${employee.id}|${calc.planId}`,\r\n rowType: \"noCov\",\r\n name: employee.fullName,\r\n coverageLevel: \"N/A*\",\r\n } as CalculationRow;\r\n }\r\n\r\n let coverageLevelString = lookups[coverageLevel.coverageLevelId].key;\r\n if ('SPOUSELIFE' === lookups[lineOfCoverageId].key) {\r\n coverageLevelString = 'Spouse';\r\n }\r\n else if ('CHILDLIFE' === lookups[lineOfCoverageId].key) {\r\n coverageLevelString = 'Child(ren)';\r\n }\r\n\r\n if (!calc.success) {\r\n return {\r\n id: `${employee.id}|${calc.planId}`,\r\n rowType: \"noRate\",\r\n name: employee.fullName,\r\n coverageLevel: coverageLevelString,\r\n } as CalculationRow;\r\n }\r\n\r\n return {\r\n id: `${employee.id}|${calc.planId}`,\r\n rowType: \"valid\",\r\n name: employee.fullName,\r\n coverageLevel: coverageLevelString,\r\n employeeCost: calc.employeeCost,\r\n employerCost: calc.employerCost,\r\n totalCost: calc.totalCost,\r\n } as CalculationRow;\r\n })\r\n\r\n return calculationRows;\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const planFormData = getFormValues(ownProps.formName)(state) as PlanFormData;\r\n const plan = state.plan.list.find(x => x.id === ownProps.planId)!;\r\n const plans = state.plan.list;\r\n return {\r\n calculationRows: createCalculationRowArray(state.costCalculation.list, state.employee.list, plan.lineOfCoverageId),\r\n companyPayrollCycleId: state.enrollment.company.payrollCycleId,\r\n employeeState: state.employee,\r\n plans: plans,\r\n plan: plan,\r\n planFormData,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n calculateCosts: (calculationRequest) => dispatch(calculateCosts(calculationRequest))\r\n }\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (ContributionUpsertPreview as any).propTypes = {\r\n plan: PlanPropType,\r\n employeeState: EmployeeReducerStatePropType\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ContributionUpsertPreview);","import { TableCell, TableRow } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { formValueSelector } from 'redux-form';\r\nimport { Contribution } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { getLookups } from 'utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\n\r\ninterface ComponentProps {\r\n isFlatRate: boolean;\r\n formName: string;\r\n}\r\n\r\ninterface MappedProps {\r\n contributions: Contribution[];\r\n}\r\n\r\ntype Props = ComponentProps & MappedProps\r\nconst PlanContributionInfo = React.memo((props: Props) => {\r\n const lookups = getLookups();\r\n return (\r\n <>\r\n {props.contributions[0].contributionLevelId && props.contributions.map((contribution, index) => {\r\n const { coverageLevelId, memberLevelId } = contribution;\r\n const label = coverageLevelId ? lookups[coverageLevelId].key : memberLevelId ? lookups[memberLevelId].value : '';\r\n const lastRow = props.contributions.length - 1;\r\n const value = contribution.amount ? Number(contribution.amount) : 0;\r\n const maxValue = contribution.maxAmount ? '$' + Number(contribution.maxAmount) : 'N/A';\r\n return (\r\n \r\n \r\n {label}\r\n \r\n \r\n {props.isFlatRate && $}\r\n {props.isFlatRate ? value.toFixed(2) : value}\r\n {!props.isFlatRate && %}\r\n \r\n {!props.isFlatRate &&\r\n \r\n {maxValue}\r\n \r\n }\r\n \r\n );\r\n })}\r\n \r\n )\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n lastRow: {\r\n borderBottom: 0,\r\n textAlign: 'center'\r\n },\r\n cell: {\r\n textAlign: 'center'\r\n },\r\n tableCell: {\r\n color: palette.grey.darkText,\r\n fontFamily: 'Roboto'\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n return {\r\n contributions: formValueSelector(ownProps.formName)(state, 'contributions')\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(PlanContributionInfo);","import { Button, Checkbox, DialogActions, DialogContent, DialogContentText, Table, TableBody, TableCell, TableHead, TableRow, TableSortLabel, Typography } from '@material-ui/core';\r\nimport withStyles, { CSSProperties, StyledComponentProps } from '@material-ui/core/styles/withStyles';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\nimport { simpleCompare } from '../../utility/simple_utils';\r\nimport MessageCard from '../common/message_card';\r\nimport PlanContributionInfo from './plan_contribution_info';\r\n\r\nexport interface FieldData {\r\n id: string;\r\n rateTypeId?: number,\r\n locName: string;\r\n planName: string;\r\n selected: boolean;\r\n}\r\n\r\ninterface Props extends StyledComponentProps {\r\n openDialog: boolean;\r\n contributionModelTypeId?: number;\r\n planList?: FieldData[];\r\n formName: string;\r\n onCancel?: () => void;\r\n onCopyToPlans?: (planList?: FieldData[]) => void;\r\n}\r\n\r\ninterface State {\r\n headerColumns: {\r\n id: string;\r\n direction: 'asc' | 'desc' | false;\r\n label: string;\r\n }[],\r\n sortedPlans: FieldData[],\r\n isHovering: boolean;\r\n}\r\n\r\nclass PlanContributionDialog extends React.PureComponent{\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n headerColumns: [\r\n { id: 'select', direction: false, label: '' },\r\n { id: 'locName', direction: false, label: 'Line of Coverage' },\r\n { id: 'planName', direction: false, label: 'Plan Name' },\r\n ],\r\n sortedPlans: props.planList!.slice(),\r\n isHovering: false,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n if (prevProps.planList!.length !== this.props.planList!.length) {\r\n this.setState(prevState => {\r\n const newSortedPlans = this.props.planList!.slice();\r\n const sortingColumn = this.state.headerColumns.find(x => !!x.direction);\r\n\r\n if (sortingColumn && sortingColumn.direction === 'asc') {\r\n newSortedPlans.sort(simpleCompare(sortingColumn.id, false));\r\n }\r\n else if (sortingColumn && sortingColumn.direction === 'desc') {\r\n newSortedPlans.sort(simpleCompare(sortingColumn.id, true));\r\n }\r\n\r\n // reselect previously selected plans\r\n newSortedPlans.map(p => {\r\n const plan = prevState.sortedPlans.find(plan => plan.id === p.id);\r\n p.selected = plan ? plan.selected : false;\r\n return p;\r\n });\r\n\r\n return {\r\n ...prevState,\r\n sortedPlans: newSortedPlans\r\n };\r\n })\r\n }\r\n }\r\n\r\n handleSort = (key: string) => {\r\n this.setState(prevState => {\r\n const newHeaderColumns = prevState.headerColumns.slice();\r\n const newSortedPlans = this.props.planList!.slice();\r\n\r\n newHeaderColumns.forEach(col => {\r\n if (col.id === key) {\r\n if (col.direction === false || col.direction === 'desc') {\r\n col.direction = 'asc';\r\n newSortedPlans.sort(simpleCompare(key, false));\r\n } else if (col.direction === 'asc') {\r\n col.direction = 'desc'\r\n newSortedPlans.sort(simpleCompare(key, true));\r\n }\r\n } else {\r\n col.direction = false;\r\n }\r\n });\r\n\r\n // reselect previously selected plans\r\n newSortedPlans.map(p => {\r\n const plan = prevState.sortedPlans.find(plan => plan.id === p.id);\r\n p.selected = plan ? plan.selected : false;\r\n return p;\r\n });\r\n\r\n return {\r\n ...prevState,\r\n headerColumns: newHeaderColumns,\r\n sortedPlans: newSortedPlans\r\n };\r\n });\r\n };\r\n\r\n selectPlan = (updated: boolean, checkState: boolean, p: FieldData): FieldData => {\r\n if (updated) {\r\n return ({\r\n ...p,\r\n selected: checkState\r\n });\r\n }\r\n else {\r\n return ({ ...p });\r\n }\r\n };\r\n\r\n onPlanClick = (ev: any) => {\r\n const plans = this.state.sortedPlans;\r\n const updatedPlans: FieldData[] = plans.map((p, i) => {\r\n return this.selectPlan(p.id === ev.target.value, ev.target.checked, p);\r\n });\r\n this.setState({ sortedPlans: updatedPlans });\r\n };\r\n\r\n onCopyPlanClicked = () => {\r\n this.props.onCopyToPlans!(this.state.sortedPlans);\r\n };\r\n\r\n numberOfSelectionFilter = memoizeOne((sortedPlans: FieldData[]) => sortedPlans.filter(p => p.selected === true).length);\r\n get numberOfSelectedPlans() {\r\n return this.numberOfSelectionFilter(this.state.sortedPlans);\r\n }\r\n\r\n render() {\r\n const { classes = {} } = this.props;\r\n const hoverClass = this.state.isHovering ? classes.hover : '';\r\n const isFlatRate = this.props.contributionModelTypeId === getLookupId('FLATDOLLAR', LOOKUP_TYPE_IDS.contributionModelType);\r\n const lastRow = this.props.planList ? this.props.planList.length - 1 : 0;\r\n return (\r\n \r\n \r\n \r\n Choose the plans to which these contributions should apply.\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Coverage\r\n Contribution ({isFlatRate ? '$' : '%'})\r\n {!isFlatRate &&\r\n Max Contribution ($)\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 {this.state.headerColumns.map(column => (\r\n this.handleSort(column.id)} sortDirection={column.direction}>\r\n \r\n {column.label}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {this.state.sortedPlans.map((row, index) => (\r\n \r\n \r\n \r\n \r\n \r\n {row.locName}\r\n \r\n \r\n {row.planName}\r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n {this.numberOfSelectedPlans} plan(s) selected\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nconst styles: { [key: string]: CSSProperties } = {\r\n contributionWrapper: {\r\n marginTop: 24,\r\n marginBottom: 32,\r\n alignContent: 'center',\r\n textAlign: 'center'\r\n },\r\n hover: {\r\n backgroundColor: palette.grey.surface,\r\n cursor: 'pointer',\r\n },\r\n table: {\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: '100%'\r\n },\r\n tableParent: {\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: '100%',\r\n borderRadius: 5,\r\n display: 'inline-block',\r\n marginTop: 16,\r\n maxHeight: 450\r\n },\r\n tableTop: {\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n maxWidth: '100%'\r\n },\r\n tableParentTop: {\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: '100%',\r\n maxWidth: '100%',\r\n borderRadius: 5,\r\n display: 'inline-block',\r\n marginTop: 16\r\n },\r\n lastRow: {\r\n borderBottom: 0\r\n },\r\n tableHeaderTop: {\r\n textAlign: 'center',\r\n whiteSpace: 'nowrap'\r\n },\r\n tableHeaderBottom: {\r\n textAlign: 'left',\r\n whiteSpace: 'nowrap'\r\n },\r\n tableCell: {\r\n color: palette.grey.darkText\r\n },\r\n numberOfSelectedPlans: {\r\n float: 'right',\r\n marginTop: 10\r\n }\r\n}\r\nexport default withStyles(styles)(PlanContributionDialog);\r\n","import { InputAdornment, TableCell, TableRow, Typography } from '@material-ui/core';\r\nimport { TextFormField } from 'components/common/reduxform_fields';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { Contribution, Lookup } from 'redux/reducers';\r\nimport { nonNegativeNumber, validPercentage } from 'utility/form_validation';\r\nimport { getLookupId, getLookups, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n hideAmount: boolean;\r\n isFlatRate: boolean;\r\n isSubmitted: boolean;\r\n isReadOnly: boolean;\r\n}\r\n\r\nexport const getContributionLabel = ({ coverageLevelId, memberLevelId, memberLevelTotalDependentsId }: Contribution, lookups: Lookup) => {\r\n const childMemberLevelId = getLookupId('PERCHILD', LOOKUP_TYPE_IDS.memberLevel);\r\n if (coverageLevelId)\r\n return lookups[coverageLevelId].value.split(\" Rate\")[0];\r\n else if (memberLevelId) {\r\n const lookup = lookups[memberLevelId!];\r\n const isChild = memberLevelId === childMemberLevelId;\r\n return (isChild ? JSON.parse(lookup.additionalDataJson).SecondValue : lookup.value);\r\n }\r\n else if (memberLevelTotalDependentsId) {\r\n return lookups[memberLevelTotalDependentsId].value\r\n }\r\n}\r\n\r\nconst ContributionFieldArray: React.FunctionComponent = (props: Props) => {\r\n const lookups = getLookups();\r\n const startAdornment =\r\n {\r\n startAdornment: ($)\r\n }\r\n const endAdornment =\r\n {\r\n endAdornment: (%)\r\n };\r\n return (\r\n <>\r\n {props.fields.map((name, index, fields) => {\r\n const contribution = fields.get(index);\r\n const label = getContributionLabel(contribution, lookups);\r\n const lastRow = props.fields.length - 1;\r\n return (\r\n \r\n \r\n {label}\r\n \r\n {!props.hideAmount &&\r\n \r\n {props.input.value ? \"$\" + props.input.value.toFixed(2) : \"--\"}} />\r\n \r\n }\r\n \r\n \r\n \r\n {!props.isFlatRate &&\r\n \r\n \r\n \r\n }\r\n \r\n );\r\n })}\r\n \r\n )\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n lastRow: {\r\n borderBottom: 0\r\n },\r\n endAdornment: {\r\n paddingRight: 8\r\n }\r\n}\r\n\r\nexport default ContributionFieldArray;","import { Grid } from '@material-ui/core';\r\nimport MessageCard from '../common/message_card';\r\nimport palette from '../../utility/palette';\r\nimport React from 'react';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\n\r\n\r\ninterface Props {\r\n warning?: boolean;\r\n messageTitle?: string\r\n}\r\n\r\nconst PlanSameContributionMessage = (props: Props) => {\r\n return (\r\n <>\r\n {props.warning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nexport default PlanSameContributionMessage;","import { Button, FormControlLabel, Hidden, Paper, Radio, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@material-ui/core';\r\nimport Help from '@material-ui/icons/Help';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { BaseFieldProps, Field, FieldArray, FormErrors, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { Contribution, PartialPlan, Participant, Plan, Rate } from 'redux/reducers/plan_reducer';\r\nimport { getAdditionalDataById, getLookupId, getLookups, isDisabilityLOC, isLifeLOC, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\nimport { RadioControlGroupField, RadioControlGroupFieldProps, SwitchField, TextFormField } from '../common/reduxform_fields';\r\nimport SaveButton from '../common/save_button';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport ContributionsUpsertPreview from '../plan/contribution_upsert_preview';\r\nimport PlanContributionDialog, { FieldData } from '../plan/plan_contribution_dialog';\r\nimport ContributionFieldArray, { getContributionLabel } from './contribution_field_array';\r\nimport PlanModificationMessage from '../plan/plan_modification_message';\r\nimport PlanCoverageLevelMessage from '../plan/plan_coverage_level_message';\r\nimport PlanSameContributionMessage from '../plan/plan_same_contribution_message';\r\n\r\nexport const FORM_NAME = 'CONTRIBUTIONS_UPSERT';\r\nconst nativeSelect = { native: true };\r\ntype FormError = string;\r\n\r\nexport type FormData = {\r\n id: string;\r\n contributionLevelId: string;\r\n contributionModelTypeId: string;\r\n isFlatRate: boolean;\r\n contributions: Contribution[];\r\n rates: Rate[];\r\n lineOfCoverageId: number;\r\n basePlanId: string;\r\n};\r\n\r\ninterface ComponentProps {\r\n savedPlan: Plan;\r\n contributionModelTypeId?: number;\r\n contributionLevelId?: number;\r\n planList?: FieldData[];\r\n disableSave?: boolean;\r\n isSubmitted?: boolean;\r\n onCopyClick?: (copy: PartialPlan[]) => void;\r\n onCancel?: () => void;\r\n availableBasePlans: Plan[];\r\n basePlan?: Plan;\r\n isReadOnly: boolean;\r\n showSameContributionWarning?: boolean;\r\n showCoverageApprovalWarning?: boolean;\r\n coverageMessageTitle: string;\r\n contributionMessageTitle: string;\r\n\r\n employeesElectedCurrentPlanCount: number;\r\n electionMessageTitle: string;\r\n}\r\n\r\ninterface Props extends InjectedFormProps, ComponentProps { }\r\n\r\ninterface State {\r\n openDialog: boolean;\r\n contributionLevelDisplay: string;\r\n}\r\n\r\nconst validate = (values: FormData) => {\r\n const errors: FormErrors = {\r\n basePlanId: ''\r\n }\r\n\r\n const basePlanContributionLevelId = getLookupId('BASEPLANLEVEL', LOOKUP_TYPE_IDS.contributionLevel);\r\n if (values.contributionLevelId === basePlanContributionLevelId.toString() && !values.basePlanId) {\r\n errors.basePlanId = 'A base plan is required';\r\n }\r\n\r\n return errors;\r\n}\r\n\r\nclass ContributionsUpsertForm extends React.PureComponent{\r\n lookups = getLookups();\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n openDialog: false,\r\n contributionLevelDisplay: 'Coverage',\r\n };\r\n }\r\n\r\n compositeRateTypeId = getLookupId('COMPOSITE', LOOKUP_TYPE_IDS.planRateType);\r\n flatRateTypeId = getLookupId('FLAT', LOOKUP_TYPE_IDS.planRateType);\r\n individualRateTypeId = getLookupId('INDIVIDUAL', LOOKUP_TYPE_IDS.planRateType);\r\n ageBandedRateTypeId = getLookupId('AGEBANDED', LOOKUP_TYPE_IDS.planRateType);\r\n ageBandedTiersRateTypeId = getLookupId('AGEBANDEDTIERS', LOOKUP_TYPE_IDS.planRateType);\r\n ageBandedIndividualRateTypeId = getLookupId('AGEBANDEDINDIVIDUAL', LOOKUP_TYPE_IDS.planRateType);\r\n basePlanContributionLevelId = getLookupId('BASEPLANLEVEL', LOOKUP_TYPE_IDS.contributionLevel);\r\n memberLevelContributionTypeId = getLookupId('MEMBERLEVEL', LOOKUP_TYPE_IDS.contributionLevel);\r\n memberLevelContributionTotalDependentsTypeId = getLookupId('MEMBERLEVELTOTALDEPENDENTS', LOOKUP_TYPE_IDS.contributionLevel);\r\n coverageLevelContributionTypeId = getLookupId('COVERAGELEVEL', LOOKUP_TYPE_IDS.contributionLevel);\r\n flatDollarContributionModelTypeId = getLookupId('FLATDOLLAR', LOOKUP_TYPE_IDS.contributionModelType);\r\n percentContributionModelTypeId = getLookupId('PERCENTAGE', LOOKUP_TYPE_IDS.contributionModelType);\r\n employeeParticipantId = getLookupId('EMPLOYEE', LOOKUP_TYPE_IDS.participationOptions);\r\n\r\n updateContributionModelType = (isFlatRateToggleEvent: React.ChangeEvent) => {\r\n if (isFlatRateToggleEvent.target.checked) {\r\n this.props.change('contributionModelTypeId', `${this.flatDollarContributionModelTypeId}`);\r\n } else {\r\n this.props.change('contributionModelTypeId', `${this.percentContributionModelTypeId}`);\r\n }\r\n }\r\n renderDialog() {\r\n const isMemberLevelContributions = this.props.contributionLevelId === this.memberLevelContributionTypeId;\r\n const validPlansForCopyContributions = this.filterValidPlansForCopyContributions(this.props.planList!, isMemberLevelContributions);\r\n return (\r\n \r\n );\r\n }\r\n\r\n filterValidPlansForCopyContributions = memoizeOne((plans: FieldData[], isMemberLevelContributions: boolean) => {\r\n return plans.filter(x => x.rateTypeId && (!isMemberLevelContributions || x.rateTypeId === this.ageBandedRateTypeId));\r\n });\r\n\r\n hasEmployeeAndDependentParticipants = memoizeOne((participants: Participant[]) => {\r\n var hasEmployee = false;\r\n var hasDependent = false;\r\n participants.forEach(part => {\r\n if (part.participantTypeId === this.employeeParticipantId && part.isAllowed) {\r\n hasEmployee = true\r\n } else if (part.isAllowed) {\r\n hasDependent = true;\r\n }\r\n })\r\n return hasEmployee && hasDependent;\r\n });\r\n\r\n handleCopyClicked = () => this.setState({ openDialog: true });\r\n cancelCopy = () => this.setState({ openDialog: false });\r\n\r\n handleCopyContribution = (planList?: FieldData[]) => {\r\n if (planList && planList.find(p => p.selected)) {\r\n const plans: PartialPlan[] = planList.filter(x => x.selected)\r\n .map(p => ({\r\n id: p.id,\r\n rateTypeId: p.rateTypeId ? p.rateTypeId : 0\r\n }));\r\n this.setState({ openDialog: false });\r\n this.props.onCopyClick!(plans);\r\n }\r\n }\r\n\r\n onContributionLevelIdChange = (e: any, val: any) => {\r\n let lookupAdditional = getAdditionalDataById(parseInt(val, 10));\r\n let value = lookupAdditional ? lookupAdditional['SecondValue'] : 'Coverage';\r\n this.setState({ contributionLevelDisplay: value })\r\n }\r\n\r\n getBasePlanContribution = (contribution: Contribution) => {\r\n const baseRate = this.props.basePlan && this.props.basePlan.rates.find(r => r && r.coverageLevelId === contribution.coverageLevelId);\r\n const calculatedContributionBasedOnBase = \r\n contribution && \r\n contribution.amount && baseRate &&\r\n ((contribution.amount! / 100) * (baseRate.amount || 0));\r\n\r\n const savedPlanRate = this.props.savedPlan.rates.find(r=>r.coverageLevelId === contribution.coverageLevelId); \r\n const savedRateAmount = (savedPlanRate && savedPlanRate.amount) || 0;\r\n const calculatedRate = savedRateAmount < (calculatedContributionBasedOnBase || 0) ? savedRateAmount : calculatedContributionBasedOnBase;\r\n return calculatedRate ? calculatedRate.toFixed(2) : \"0.00\";\r\n }\r\n\r\n render() {\r\n const { submitting, invalid, handleSubmit, savedPlan, disableSave, isSubmitted, contributionLevelId, availableBasePlans, basePlan, onCancel } = this.props;\r\n const rates = this.props.initialValues.rates || [];\r\n const copyToolTip = \"You can avoid extra typing by copying these contributions to other plans.\";\r\n const isFlatRate = this.props.contributionModelTypeId === this.flatDollarContributionModelTypeId;\r\n const isLifeOrDisability = isLifeLOC(this.props.initialValues.lineOfCoverageId!) || isDisabilityLOC(this.props.initialValues.lineOfCoverageId!);\r\n\r\n const basePlanTypeAllowed = this.props.initialValues.lineOfCoverageId! === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage)\r\n || this.props.initialValues.lineOfCoverageId! === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage)\r\n || this.props.initialValues.lineOfCoverageId! === getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isBasePlanContributionType = contributionLevelId === this.basePlanContributionLevelId;\r\n const basePlanSelectedWithContributions = isBasePlanContributionType && basePlan && basePlan.contributions.length;\r\n const hideContributionTable =\r\n (isBasePlanContributionType && !basePlanSelectedWithContributions) ||\r\n (basePlanSelectedWithContributions && basePlan!.rateTypeId !== this.compositeRateTypeId);\r\n \r\n return (\r\n <>\r\n Contributions\r\n Please provide the contributions related to this plan.\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n

Contribution Type

\r\n
\r\n
\r\n >\r\n name='contributionLevelId'\r\n component={RadioControlGroupField}\r\n label=''\r\n radioName='contribution_level'\r\n style={styles.contributionLevel}\r\n onChange={this.onContributionLevelIdChange as any}\r\n >\r\n }\r\n label={\r\n \r\n Coverage Level (EE, ES, EC, EF)\r\n {savedPlan.rateTypeId === this.individualRateTypeId &&\r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n \r\n }\r\n />\r\n }\r\n label={\r\n \r\n Member Level (Employee, Spouse, Children)\r\n {(savedPlan.rateTypeId === this.compositeRateTypeId || savedPlan.rateTypeId === this.flatRateTypeId ) &&\r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n \r\n }\r\n />\r\n {this.hasEmployeeAndDependentParticipants(this.props.savedPlan.participants) &&\r\n }\r\n label={\r\n \r\n Member Level (Employee, Total Dependents)\r\n \r\n }\r\n />\r\n }\r\n {basePlanTypeAllowed && }\r\n label={Base Plan}\r\n value={`${this.basePlanContributionLevelId}`}\r\n />}\r\n \r\n
\r\n
\r\n\r\n {isBasePlanContributionType && availableBasePlans.length > 0 &&
\r\n \r\n \r\n {availableBasePlans.map(plan => (\r\n \r\n ))}\r\n \r\n
}\r\n\r\n
\r\n\r\n {!hideContributionTable && <>\r\n
\r\n

Contribution Amount

\r\n
\r\n\r\n {!isBasePlanContributionType ?
\r\n Percentage (%)\r\n \r\n Flat Amount ($)\r\n
:
}\r\n
\r\n \r\n \r\n \r\n \r\n {this.state.contributionLevelDisplay}\r\n \r\n {(savedPlan.rateTypeId === this.compositeRateTypeId || savedPlan.rateTypeId === this.flatRateTypeId) &&\r\n Monthly Plan Cost\r\n }\r\n Employer Contribution {!isBasePlanContributionType && (isFlatRate ? '($)' : '(%)')}\r\n {!isFlatRate &&\r\n Employer Contribution Max ($)\r\n }\r\n \r\n \r\n \r\n {!isBasePlanContributionType\r\n ? \r\n : basePlan && basePlan.contributions.map((contribution, idx) => \r\n \r\n {getContributionLabel(contribution, this.lookups)}\r\n \r\n {savedPlan.rateTypeId === this.compositeRateTypeId && \r\n {rates[idx].amount ? `$${rates[idx].amount!.toFixed(2)}` : \"--\"}\r\n }\r\n \r\n {\r\n `$${contribution.contributionModelTypeId === this.flatDollarContributionModelTypeId ?\r\n (contribution.amount==null?0:contribution.amount) :\r\n this.getBasePlanContribution(contribution)}`\r\n }\r\n \r\n )}\r\n \r\n
\r\n
\r\n }\r\n
\r\n {!isLifeOrDisability && !isBasePlanContributionType &&\r\n
\r\n \r\n COPY CONTRIBUTIONS TO OTHER PLANS\r\n \r\n }\r\n />\r\n
\r\n }\r\n
\r\n \r\n
\r\n \r\n \r\n Save Contributions\r\n \r\n
\r\n {this.renderDialog()}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n basePlanRadio: {\r\n marginBottom: -16\r\n },\r\n button: {\r\n marginRight: 10\r\n },\r\n buttonDiv: {\r\n marginTop: 15,\r\n textAlign: 'right'\r\n },\r\n buttonMargin: {\r\n marginRight: '8px'\r\n },\r\n content: {\r\n marginBottom: 20\r\n },\r\n contributionAmountHeader: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: -5,\r\n marginTop: -5\r\n },\r\n contributionLevel: {\r\n position: 'relative',\r\n marginTop: -20\r\n },\r\n copyButtonHelp: {\r\n color: palette.grey.text,\r\n height: 16,\r\n width: 16\r\n },\r\n copyButtonDiv: {\r\n height: 44,\r\n alignItems: 'center',\r\n display: 'flex',\r\n alignContent: 'center'\r\n },\r\n copyButtonText: {\r\n color: palette.blue.primary,\r\n width: 349\r\n },\r\n coverageLevelRadio: {\r\n marginBottom: -15,\r\n marginTop: 4\r\n },\r\n flatAmount: {\r\n color: palette.grey.text,\r\n marginLeft: -10,\r\n fontSize: 14\r\n },\r\n header: {\r\n color: palette.grey.text,\r\n },\r\n headerText: {\r\n fontSize: 24,\r\n marginBottom: 15,\r\n marginTop: 0\r\n },\r\n headerInfoText: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n help: {\r\n color: palette.grey.text,\r\n marginLeft: 10,\r\n height: 16,\r\n width: 16\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 20\r\n },\r\n memberLevelRadio: {\r\n marginBottom: -15\r\n },\r\n paper: {\r\n padding: '20px 40px'\r\n },\r\n percentage: {\r\n color: palette.grey.text,\r\n marginRight: 15,\r\n fontSize: 14\r\n },\r\n table: {\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: 'auto',\r\n maxWidth: '100%'\r\n },\r\n tableParent: {\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.border,\r\n overflowX: 'auto',\r\n zIndex: 100,\r\n width: 'auto',\r\n maxWidth: '100%',\r\n borderRadius: 5,\r\n display: 'inline-block'\r\n },\r\n tableHeader: {\r\n whiteSpace: 'nowrap'\r\n },\r\n tooltip: {\r\n opacity: 0.6,\r\n height: 16,\r\n width: 16\r\n },\r\n tooltipSpan: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n};\r\n\r\nexport default reduxForm({ form: FORM_NAME, validate })(ContributionsUpsertForm);\r\n","import { Grid, InputAdornment, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { AgeReduction } from 'redux/reducers';\r\nimport { validPercentage } from 'utility/form_validation';\r\nimport { isSpouseLife } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\n\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n locId: number,\r\n isSubmitted?: boolean,\r\n isReadOnly?: boolean\r\n}\r\n\r\nconst inputProps = {\r\n endAdornment: (%),\r\n min: 0,\r\n max: 100,\r\n};\r\n\r\nconst AgeReductionFieldArray: React.FunctionComponent = React.memo((props: Props) => {\r\n const lastRowIndex = props.fields.length - 1;\r\n\r\n const labelProps = { shrink: true }\r\n const isSpouse = isSpouseLife(props.locId);\r\n const isReadOnly = props.isReadOnly === true;\r\n return (\r\n <>\r\n {\r\n props.fields.get(0) && props.fields.map((name, index, fields) => {\r\n const label = `Age ${fields.get(index).minAge}`;\r\n return (\r\n \r\n \r\n \r\n {label}{index === lastRowIndex && '+'}\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\nconst styles: { [key: string]: React.CSSProperties } = {\r\n label: {\r\n fontSize: 18,\r\n fontFamily: 'Roboto',\r\n color: palette.grey.label,\r\n marginBottom: -8,\r\n marginTop: 16\r\n }\r\n}\r\n\r\nexport default AgeReductionFieldArray;","import { Paper } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { change, FieldArray, formValueSelector } from 'redux-form';\r\nimport { AgeReduction } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { generateAgeReductionsList } from 'utility/generator_funcs';\r\nimport { isChildLife, isCriticalLOC, isLifeLOC } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport AgeReductionFieldArray from './age_reduction_field_array';\r\n\r\nexport type FieldData = {\r\n ageReductions: AgeReduction[];\r\n}\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n isSubmitted?: boolean;\r\n isReadOnly?: boolean;\r\n}\r\n\r\ninterface DispatchProps {\r\n updateAgeReductions: (ageReductions: AgeReduction[]) => void\r\n}\r\n\r\ninterface StateProps {\r\n displayAgeReduction?: boolean;\r\n carrier?: string;\r\n lineOfCoverageId?: number;\r\n ageReductions: AgeReduction[]\r\n}\r\n\r\ntype Props = ComponentProps & StateProps & DispatchProps;\r\n\r\nconst AgeReductionFields = (props: Props) => {\r\n React.useEffect(() => {\r\n if (props.displayAgeReduction && (props.ageReductions || []).length === 0) {\r\n props.updateAgeReductions(generateAgeReductionsList())\r\n }\r\n }, [props.displayAgeReduction, props.ageReductions])\r\n\r\n if (props.displayAgeReduction && !isChildLife(props.lineOfCoverageId || 0)) {\r\n return (\r\n \r\n
\r\n

Age Reduction

\r\n

\r\n The following will be shown to employees during election.\r\n

\r\n
\r\n \r\n
\r\n );\r\n }\r\n return (<>)\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n color: palette.grey.text,\r\n marginBottom: -16\r\n },\r\n headerText: {\r\n fontSize: 24,\r\n margin: '15px 0',\r\n fontFamily: 'Roboto'\r\n },\r\n subheaderText: {\r\n fontFamily: 'Roboto',\r\n fontSize: 14\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15\r\n },\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const lineOfCoverageId = formValueSelector(ownProps.formName)(state, 'lineOfCoverageId');\r\n const carrier = formValueSelector(ownProps.formName)(state, \"carrierName\");\r\n const displayAgeReduction = isLifeLOC(lineOfCoverageId) || isCriticalLOC(lineOfCoverageId, carrier);\r\n const ageReductions = formValueSelector(ownProps.formName)(state, \"ageReductions\")\r\n \r\n return {\r\n displayAgeReduction,\r\n carrier,\r\n lineOfCoverageId,\r\n ageReductions\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n updateAgeReductions: ageReductions => dispatch(change(ownProps.formName, \"ageReductions\", ageReductions))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AgeReductionFields);","import Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { url } from 'utility/form_validation';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport { ReduxState } from '../../redux/store';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\n\r\nexport type FieldData = {\r\n pcpurl: string;\r\n}\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n isSubmitted?: boolean;\r\n isReadOnly?: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n displayPCP?: boolean;\r\n lineOfCoverageId?: number;\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps { }\r\n\r\nconst PCPLookupField = (props: Props) => {\r\n const isMedical = props.lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isReadOnly = props.isReadOnly === true;\r\n if (props.displayPCP) {\r\n return (\r\n \r\n
\r\n

{isMedical ? 'Primary Care Provider Lookup Link' : 'Dental Care Provider Lookup Link'}

\r\n

\r\n {`This link will allow the employee to look up their ${isMedical ? \"primary care provider\" : \"dental care provider\"} and enter the Id.`}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n return (<>)\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: Props): MappedProps {\r\n const displayPCP = formValueSelector(ownProps.formName)(state, 'pcpInformationRequired')\r\n const lineOfCoverageId = formValueSelector(ownProps.formName)(state, 'lineOfCoverageId')\r\n return {\r\n displayPCP,\r\n lineOfCoverageId\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(PCPLookupField);","import { InputAdornment, Typography } from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport React from 'react';\r\nimport { Field, WrappedFieldArrayProps } from 'redux-form';\r\nimport { nullOrPositiveNumber } from 'utility/form_validation';\r\nimport { Benefit } from '../../redux/reducers';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { getLookupId, getLookups, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport MessageCard from 'components/common/message_card';\r\n\r\nexport type FieldData = {\r\n benefits: Benefit[];\r\n}\r\n\r\ninterface Props extends WrappedFieldArrayProps {\r\n isSubmitted: boolean;\r\n isVoluntary: boolean;\r\n isReadOnly?: boolean;\r\n warningText?: string;\r\n}\r\n\r\nconst PlanBenefitsFieldArray: React.FunctionComponent = (props: Props) => {\r\n const lookups = getLookups();\r\n const isReadOnly = props.isReadOnly === true;\r\n const positiveNumberValidator = React.useCallback(nullOrPositiveNumber, []);\r\n const critIllnessBenAmountLookup = getLookupId('EMPLOYEEBENEFITAMOUNTCRITICALILLNESS', LOOKUP_TYPE_IDS.planBenefit);\r\n const inputProps = {\r\n startAdornment: ($)\r\n };\r\n return (\r\n <>\r\n {props.fields.length > 0 && <>\r\n
\r\n {props.warningText && props.warningText.length > 0 &&\r\n \r\n }\r\n \r\n
\r\n

Plan Benefits

\r\n
\r\n These benefits will show up in the plan summary and will help employees make their elections\r\n
\r\n
\r\n {props.fields.map((name, index, fields) => {\r\n const { benefitId } = props.fields.get(index);\r\n const benefitName = lookups[benefitId].value;\r\n const isNumeric = benefitId === critIllnessBenAmountLookup;\r\n return (\r\n \r\n \r\n

{benefitName}

\r\n \r\n
\r\n {!props.isVoluntary &&\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 PlanBenefitsFieldArray;","import WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport Help from '@material-ui/icons/Help';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { ReduxState } from '../../redux/store';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { getLookupId, isDisabilityLOC, isLifeLOC, LOOKUP_TYPE_IDS } from '../../utility/lookup_utils';\r\nimport { SwitchField } from '../common/reduxform_fields';\r\n\r\nexport type FieldData = {\r\n eligibleForCobra: boolean;\r\n eligibleForHsa: boolean;\r\n pcpInformationRequired: boolean;\r\n listedOnExchange: boolean;\r\n isVoluntary: boolean;\r\n}\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n isSubmitted?: boolean;\r\n isReadOnly?: boolean;\r\n}\r\n\r\ninterface StateProps {\r\n lineOfCoverageId?: number;\r\n}\r\n\r\ninterface Props extends ComponentProps, StateProps { }\r\n\r\nconst PlanFeaturesFields = (props: Props) => {\r\n const isMedical = props.lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isDental = props.lineOfCoverageId === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isVision = props.lineOfCoverageId === getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isLifeOrDisability = props.lineOfCoverageId && (isLifeLOC(props.lineOfCoverageId) || isDisabilityLOC(props.lineOfCoverageId));\r\n const showFeatures = (isMedical || isDental || isVision || isLifeOrDisability);\r\n const showPCPRequired = (isMedical || isDental);\r\n const showHSAElegible = isMedical;\r\n const isReadOnly = props.isReadOnly === true;\r\n return (\r\n <>\r\n{showFeatures &&\r\n \r\n
\r\n

Plan Features\r\n Plan Features allow you to enable plan configuration options. When options are turned on the enrollment selections will present additional information for the employee to provide, or make an option available to them.

A Plan Feature is 'on' when the slider is highlighted green and aligned to the right. Default settings are 'off' and the slider is left aligned.

} content={} />\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {showPCPRequired &&\r\n \r\n \r\n \r\n \r\n }\r\n {showHSAElegible &&\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\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): StateProps {\r\n const lineOfCoverageId = formValueSelector(ownProps.formName)(state, 'lineOfCoverageId')\r\n return {\r\n lineOfCoverageId: lineOfCoverageId\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(PlanFeaturesFields);","import { FormControlLabel, Grid, InputAdornment, Paper, Radio } from '@material-ui/core';\r\nimport Help from '@material-ui/icons/Help';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Field, formValueSelector } from 'redux-form';\r\nimport { Plan, IReduceValidation } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { convertToNumber } from 'utility/form_normalization';\r\nimport { characterLimit, nonNegativeInteger, nonNegativeNumber, required, validPercentage, validateIfNotReducedWithMessage, requiredForSubmission } from 'utility/form_validation';\r\nimport { getBenefitAmountType, getLookupId, getRoundingMethod, isChildLife, isDisabilityLOC, isLifeLOC, isSpouseLife, LOOKUP_TYPE_IDS } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport { RadioControlGroupField, TextFormField } from '../common/reduxform_fields';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\nimport { SwitchField } from '../common/reduxform_fields';\r\n\r\nexport interface FieldData extends IReduceValidation {\r\n benefitAmountTypeId?: number;\r\n benefitAmount?: number;\r\n minimumBenefit: number;\r\n maximumBenefit: number;\r\n benefitDuration: string;\r\n isBenefitAmountRatingTypeCoveredPayroll?: boolean;\r\n eliminationPeriod: string;\r\n adAndDBenefit: string;\r\n otherBenefit: string;\r\n guaranteedIssueAmount: number;\r\n benefitRoundingTypeId: number;\r\n benefitRoundingIntervalString: string;\r\n otherRoundingInterval: number;\r\n linkedBenefitPlanId?: string;\r\n reduceValidation?: boolean;\r\n}\r\n\r\nconst inputStartProps = {\r\n startAdornment: ($)\r\n};\r\nconst inputEndProps = {\r\n endAdornment: (%)\r\n};\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n changeField: (name: string, value: any) => void;\r\n isSubmitted?: boolean;\r\n isReadOnly?: boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n lineOfCoverageId?: number;\r\n benefitAmountTypeId?: number;\r\n benefitRoundingIntervalString?: string;\r\n benefitRoundingTypeId?: number;\r\n groupOrSuppPlans: Plan[];\r\n}\r\n\r\ninterface Props extends MappedProps, ComponentProps { }\r\n\r\nconst nativeSelect = { native: true };\r\n\r\nconst characterLimit100 = characterLimit(100);\r\nconst validateRequired = required('This field is required');\r\n\r\nclass PlanLifeInsuranceFields extends React.PureComponent{\r\n flatAmountId = getLookupId('FLATAMOUNT', LOOKUP_TYPE_IDS.benefitAmountType);\r\n multSalaryId = getLookupId('MULTIPLEOFSALARY', LOOKUP_TYPE_IDS.benefitAmountType);\r\n incrementAmountId = getLookupId('INCREMENTMULTIPLIER', LOOKUP_TYPE_IDS.benefitAmountType);\r\n linkedAmountId = getLookupId('LINKEDAMOUNT', LOOKUP_TYPE_IDS.benefitAmountType);\r\n dontRoundId = getLookupId('DONTROUND', LOOKUP_TYPE_IDS.roundingMethod);\r\n rel = \"noopener noreferrer\"\r\n guaranteedIssueInputAdornment = {\r\n /* eslint-disable-next-line */\r\n endAdornment: \r\n }\r\n />\r\n ,\r\n startAdornment: $\r\n }\r\n\r\n validateIncrementMax = (maxValue: number, values: FieldData) =>{\r\n const minValue = values.minimumBenefit;\r\n if (!minValue || !maxValue)\r\n return undefined;\r\n\r\n const min = Number(minValue || 0);\r\n const max = Number(maxValue || 0);\r\n return max >= min ? undefined : 'Increment amount cannot be greater than guranteed issue amount';\r\n \r\n }\r\n\r\n validateMax = (maxValue: number, values: FieldData) => {\r\n const minValue = values.minimumBenefit;\r\n if (!minValue || !maxValue)\r\n return undefined;\r\n\r\n const min = Number(minValue || 0);\r\n const max = Number(maxValue || 0);\r\n return max >= min ? undefined : 'Maximum amount cannot be less than minimum amount';\r\n };\r\n\r\n validateGuaranteedMax = (maxValue: number, values: FieldData) => {\r\n const minValue = values.minimumBenefit\r\n if (!minValue || !maxValue)\r\n return undefined;\r\n\r\n const min = Number(minValue || 0);\r\n const max = Number(maxValue || 0);\r\n return max >= min ? undefined : 'Guaranteed issue amount cannot be less than minimum amount';\r\n };\r\n\r\n validateGuaranteedMin = (minValue: number, values: FieldData) =>{\r\n const maxValue = values.guaranteedIssueAmount;\r\n if (!minValue || !maxValue)\r\n return undefined;\r\n\r\n const min = Number(minValue || 0);\r\n const max = Number(maxValue || 0);\r\n return max >= min ? undefined : 'Increment amount cannot be greater than guranteed issue amount';\r\n \r\n }\r\n\r\n noReturn = () =>{\r\n return; \r\n }\r\n\r\n benefitAmountRequired = validateIfNotReducedWithMessage(\"Amount is required\");\r\n benefitAmountTypeRequired = validateIfNotReducedWithMessage(\"Amount Type is required\")\r\n minimumRequired = validateIfNotReducedWithMessage(\"This field is required\");\r\n guaranteedAmountRequired = validateIfNotReducedWithMessage(\"This field is required\")\r\n\r\n render() {\r\n const isDisability = this.props.lineOfCoverageId && isDisabilityLOC(this.props.lineOfCoverageId);\r\n const isLTD = this.props.lineOfCoverageId == getLookupId('LTD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isSTD = this.props.lineOfCoverageId == getLookupId('STD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isLife = this.props.lineOfCoverageId && isLifeLOC(this.props.lineOfCoverageId);\r\n const isChild = this.props.lineOfCoverageId && isChildLife(this.props.lineOfCoverageId);\r\n const isSpouse = this.props.lineOfCoverageId && isSpouseLife(this.props.lineOfCoverageId);\r\n const isMultipleOfSalary = this.props.benefitAmountTypeId === this.multSalaryId;\r\n const isIncrementAmount = this.props.benefitAmountTypeId === this.incrementAmountId;\r\n const isFlatAmount = this.props.benefitAmountTypeId === this.flatAmountId;\r\n const isLinkedAmount = this.props.benefitAmountTypeId === this.linkedAmountId;\r\n const isPercentValue = (isMultipleOfSalary && isDisability) || isLinkedAmount;\r\n const isReadOnly = this.props.isReadOnly === true;\r\n const showMinAndMaxBenefits = isMultipleOfSalary || isLinkedAmount || isIncrementAmount;\r\n const benefitAmountLabel = isIncrementAmount ? 'Increment Amount' : isMultipleOfSalary ? 'Multiplier of Salary Amount' : 'Amount';\r\n if (isLife || isDisability) {\r\n return (\r\n \r\n
\r\n

Plan Benefits

\r\n
\r\n These benefits will show up in the plan summary and will help employees make their elections.\r\n
\r\n
\r\n \r\n \r\n

Benefit Amount

\r\n
\r\n \r\n \r\n \r\n {getBenefitAmountType(this.props.lineOfCoverageId).map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {(showMinAndMaxBenefits) &&\r\n <>\r\n \r\n \r\n \r\n {isLife &&\r\n \r\n \r\n \r\n }\r\n {isDisability &&\r\n \r\n \r\n \r\n }\r\n\r\n \r\n }\r\n {isLinkedAmount &&\r\n \r\n \r\n \r\n {this.props.groupOrSuppPlans.map(plan => (\r\n \r\n ))}\r\n \r\n \r\n }\r\n {(isLTD || isSTD) && isMultipleOfSalary &&\r\n <>\r\n \r\n

Volume Determination

\r\n
\r\n \r\n Benefit Amount  \r\n \r\n \r\n \r\n \r\n }\r\n \r\n

Benefit Details

\r\n
\r\n {isDisability ?\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 {!isChild && !isSpouse && isMultipleOfSalary &&\r\n <>\r\n \r\n

Rounding Preferences

\r\n
\r\n \r\n \r\n \r\n {getRoundingMethod().map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n }\r\n {!!this.props.benefitRoundingTypeId && this.props.benefitRoundingTypeId !== this.dontRoundId && isMultipleOfSalary &&\r\n \r\n \r\n } label=\"$1\" />\r\n } label=\"$1,000\" />\r\n } label=\"$5,000\" />\r\n } label=\"$10,000\" />\r\n } label=\"\" />\r\n \r\n this.props.changeField('benefitRoundingIntervalString', 'other')}\r\n onChange={this.props.benefitRoundingIntervalString !== 'other' ? () => this.props.changeField('benefitRoundingIntervalString', 'other') : undefined}\r\n />\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n return (<>)\r\n }\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n header: {\r\n color: palette.grey.text,\r\n marginBottom: 22\r\n },\r\n headerText: {\r\n fontSize: 24,\r\n margin: '15px 0',\r\n fontFamily: 'Roboto'\r\n },\r\n subheaderText: {\r\n fontSize: 14,\r\n fontFamily: 'Roboto',\r\n },\r\n sectionHeaderText: {\r\n fontSize: 18,\r\n fontFamily: 'Roboto',\r\n color: palette.grey.label,\r\n marginBottom: -8,\r\n marginTop: 0\r\n },\r\n paper: {\r\n position: 'relative',\r\n padding: 20,\r\n paddingTop: 5,\r\n marginTop: 15\r\n },\r\n removeDependentButton: {\r\n position: 'absolute',\r\n top: 5,\r\n right: 20\r\n },\r\n otherAmount: {\r\n marginTop: -50,\r\n marginLeft: 35,\r\n width: 'calc(100% - 46px)'\r\n },\r\n inputAdornment: {\r\n width: 'calc(100% - 14px)'\r\n },\r\n endAdornment: {\r\n paddingRight: 11\r\n }\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const lineOfCoverageId = formValueSelector(ownProps.formName)(state, 'lineOfCoverageId');\r\n const benefitAmountTypeId = formValueSelector(ownProps.formName)(state, 'benefitAmountTypeId'); \r\n const benefitRoundingIntervalString = formValueSelector(ownProps.formName)(state, 'benefitRoundingIntervalString');\r\n const benefitRoundingTypeId = formValueSelector(ownProps.formName)(state, 'benefitRoundingTypeId');\r\n\r\n const groupOrSupp = [getLookupId('GROUPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage), getLookupId('SUPPLIFE', LOOKUP_TYPE_IDS.lineOfCoverage)];\r\n const groupOrSuppPlans = state.plan.list.filter(plan => groupOrSupp.includes(plan.lineOfCoverageId));\r\n\r\n return {\r\n lineOfCoverageId,\r\n benefitAmountTypeId, \r\n benefitRoundingIntervalString,\r\n benefitRoundingTypeId,\r\n groupOrSuppPlans\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(PlanLifeInsuranceFields);","import Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Help from '@material-ui/icons/Help';\r\nimport * as React from 'react';\r\nimport { Field } from 'redux-form';\r\nimport { characterLimit } from 'utility/form_validation';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { TextFormField } from '../common/reduxform_fields';\r\nimport WrappedTooltip from '../common/wrapped_tool_tip';\r\n\r\ninterface ComponentProps {\r\n formName: string;\r\n isSubmitted?: boolean;\r\n isReadOnly?: boolean;\r\n}\r\n\r\ninterface Props extends ComponentProps { }\r\n\r\nconst characterLimit280 = characterLimit(280);\r\n\r\nconst PlanNotesFields = (props: Props) => {\r\n\r\n return (\r\n \r\n
\r\n

\r\n Plan Notes\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 PlanNotesFields;","import Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport React from 'react';\r\nimport BaseDialog from 'components/common/base_dialog';\r\n\r\ninterface Props {\r\n open: boolean;\r\n carrierName?: string;\r\n updateCarrier: (event: React.ChangeEvent) => void;\r\n onDone: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nconst AddCarrierDialog = (props: Props) => {\r\n const carrierNameCharacterLimitExceeded = !!props.carrierName && props.carrierName.length > 255;\r\n return (\r\n \r\n \r\n \r\n Add the name of the custom carrier below.\r\n \r\n {\r\n if (ev.key === 'Enter') {\r\n props.onDone()\r\n }\r\n }}\r\n error={carrierNameCharacterLimitExceeded}\r\n helperText={carrierNameCharacterLimitExceeded ? \"Max 255 characters\" : undefined}\r\n />\r\n \r\n \r\n \r\n props.onDone()}\r\n color='primary'\r\n type=\"submit\"\r\n disabled={carrierNameCharacterLimitExceeded}\r\n >\r\n Add Carrier\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n textBox: {\r\n marginTop: \"40px\"\r\n }\r\n\r\n}\r\nexport default AddCarrierDialog;","import { CircularProgress, Grid, Paper } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { change, Field, formValueSelector } from 'redux-form';\r\nimport { getCarriers } from 'redux/actions';\r\nimport { CarrierList, Lookup, Plan, IReduceValidation } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport { filterCarriers } from 'utility';\r\nimport { convertEmptyToZero, convertToMoment, convertToNumber } from 'utility/form_normalization';\r\nimport { styles } from '../../utility/common_styles';\r\nimport { characterLimit, required, validateEffectiveDate, validateIfNotReducedWithMessage, requiredForSubmission } from '../../utility/form_validation';\r\nimport { getLOCs, getLookupId, getLookups, getMetalLevels, getPlanTypes, getStates, LOOKUP_TYPE_IDS, getPlanFundingType } from '../../utility/lookup_utils';\r\nimport { DatePickerField, TextFormField } from '../common/reduxform_fields';\r\nimport AddCarrierDialog from '../plan/add_carrier_dialog';\r\n\r\nexport interface FieldData extends IReduceValidation {\r\n id: string;\r\n stateId: number;\r\n lineOfCoverageId: number;\r\n carrierName: string;\r\n planTypeId: number;\r\n planDisplayName: string;\r\n systemName: string;\r\n metalLevelId: number;\r\n effectiveDate: moment.Moment;\r\n notes: string;\r\n reduceValidation?: boolean;\r\n fundingType?: number;\r\n}\r\n\r\ninterface ComponentProps {\r\n isSubmitted?: boolean;\r\n isEdit?: boolean;\r\n isCustom: boolean;\r\n formName: string;\r\n changeField: (name: string, value: any) => void;\r\n isReadOnly?: boolean;\r\n disableLevelFunded? : boolean;\r\n}\r\n\r\ninterface MappedProps {\r\n plans: Plan[];\r\n lineOfCoverageId?: number;\r\n stateId?: number;\r\n carriers: CarrierList[];\r\n lookups: Lookup;\r\n carrierName?: string;\r\n isMedical: Boolean;\r\n isDental: Boolean;\r\n allowCustomPlans: boolean;\r\n}\r\n\r\ninterface DispatchProps {\r\n getCarriers: (stateId: number, stateName: string, lineOfCoverageId: number) => Promise;\r\n updateCarrier: (name: string) => void;\r\n}\r\n\r\ninterface Props extends ComponentProps, MappedProps, DispatchProps { }\r\n\r\nconst characterLimit255 = characterLimit(255);\r\nconst validateState = required('State is required');\r\nconst validateLineOfCoverage = required('Line of Coverage is required');\r\nconst validateCarrier = required('Carrier is required');\r\n\r\nconst validatePlanTypeLOC = (value: number, allProps: any) => {\r\n if(allProps.reduceValidation) return undefined;\r\n\r\n const planTypeLookup = getLookups()[value];\r\n if (!planTypeLookup || (allProps.lineOfCoverageId && planTypeLookup.parentIds.indexOf(allProps.lineOfCoverageId!) === -1))\r\n return 'Please re-select an appropriate Plan Type';\r\n else\r\n return undefined;\r\n};\r\nconst validatePlanType = [validateIfNotReducedWithMessage('Plan Type is required'), validatePlanTypeLOC];\r\nconst validatePlanDisplayName = required('Plan Display Name is required');\r\nconst validatePlanSystemName = validateIfNotReducedWithMessage('Plan System Name is required');\r\nconst validateEffectiveDateList = [validateIfNotReducedWithMessage('Effective Date is required'), validateEffectiveDate];\r\nconst nativeSelect = { native: true };\r\n\r\ninterface State {\r\n otherValue: string;\r\n addModalOpen: boolean;\r\n loading: boolean;\r\n isMedical: boolean;\r\n}\r\n\r\nclass PlanOverviewFields extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props)\r\n this.state = {\r\n otherValue: \"\",\r\n addModalOpen: false,\r\n loading: false,\r\n isMedical: false\r\n\r\n }\r\n }\r\n componentDidUpdate(prevProps: Props) {\r\n const { stateId, lineOfCoverageId, lookups, isEdit } = this.props;\r\n const differentState = prevProps.stateId !== stateId;\r\n const differentCoverage = prevProps.lineOfCoverageId !== lineOfCoverageId;\r\n let stateName = \"\";\r\n\r\n if (stateId) stateName = lookups[stateId].value;\r\n const isMedical = lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n this.setState({ isMedical: isMedical });\r\n if (stateId && !isEdit && stateName !== \"\" && lineOfCoverageId && (differentState || differentCoverage)) {\r\n this.setState({ otherValue: \"\", loading: true });\r\n this.props.getCarriers(stateId, stateName, lineOfCoverageId).then(this.loadingOff, this.loadingOff);\r\n }\r\n }\r\n\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n cancelModal = () => {\r\n this.setState({ otherValue: \"\" });\r\n this.closeModal();\r\n };\r\n\r\n closeModal = () => {\r\n this.setState({ addModalOpen: false });\r\n };\r\n\r\n openModal = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n if (value === \"Other\" || value === this.state.otherValue) {\r\n this.setState({ addModalOpen: true });\r\n }\r\n };\r\n\r\n setModal = () => {\r\n this.props.updateCarrier(this.state.otherValue);\r\n this.closeModal();\r\n };\r\n\r\n updateOther = (event: React.ChangeEvent) => {\r\n if (this.state.otherValue !== \"Other\") {\r\n this.setState({ otherValue: event.target.value });\r\n }\r\n };\r\n updateCobraToggle = (event: React.ChangeEvent) => {\r\n if (event.target) {\r\n const lookup = parseInt(event.target.value);\r\n const isMedical = lookup === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isDental = lookup === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isVision = lookup === getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const showCobraEligibility = (isMedical || isDental || isVision);\r\n this.setState({ isMedical: isMedical });\r\n showCobraEligibility ? this.props.changeField('eligibleForCobra', true) : this.props.changeField('eligibleForCobra', false);\r\n }\r\n };\r\n\r\n carriers = () => {\r\n return filterCarriers(this.props.lineOfCoverageId || -1, this.props.carriers, this.props.plans, this.props.allowCustomPlans, false, this.state.otherValue);\r\n }\r\n\r\n isReadOnly = () => {\r\n return this.props.isReadOnly === true;\r\n }\r\n \r\n\r\n render() {\r\n return (\r\n \r\n <>\r\n\r\n\r\n
\r\n

Plan Overview

\r\n
\r\n \r\n \r\n \r\n \r\n {getStates().map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {getLOCs().map(val => (\r\n \r\n ))}\r\n \r\n \r\n \r\n {this.props.isEdit ?\r\n \r\n :\r\n <>\r\n \r\n \r\n {this.carriers().map(val => (\r\n \r\n ))}\r\n \r\n {this.state.loading && }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n {getPlanTypes().filter(lookup => lookup.parentIds.indexOf(this.props.lineOfCoverageId!) >= 0).map(val => (\r\n \r\n ))}\r\n \r\n \r\n {this.state.isMedical &&\r\n \r\n \r\n \r\n {getPlanFundingType().map(val => (\r\n \r\n ))}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Display Metal Levels ONLY for MEDICAL & DENTAL LOCs */}\r\n {(this.props.isMedical || this.props.isDental) ?\r\n \r\n \r\n \r\n {getMetalLevels().map(val => (\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.isReadOnly() &&\r\n \r\n }\r\n\r\n );\r\n }\r\n};\r\n\r\nfunction mapStateToProps(state: ReduxState, ownProps: ComponentProps): MappedProps {\r\n const lineOfCoverageId = formValueSelector(ownProps.formName)(state, 'lineOfCoverageId');\r\n const contactInfo = state.enrollment.company.contactInformation[0] || {};\r\n const stateId = contactInfo.stateId;\r\n const carrierName = formValueSelector(ownProps.formName)(state, 'carrierName')\r\n const carriers = state.lookup.carriers;\r\n const lookups = state.lookup.values;\r\n const isMedical = lineOfCoverageId === getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const isDental = lineOfCoverageId === getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n const allowCustomPlansSetting =\r\n Object.values(state.settings.values).find(setting => setting.key === 'ALLOW_CUSTOM_PLANS');\r\n const allowCustomPlans =\r\n Boolean(allowCustomPlansSetting && ((allowCustomPlansSetting.value && (allowCustomPlansSetting.value.toLowerCase() !== 'false')) || allowCustomPlansSetting.value == null));\r\n\r\n return {\r\n plans: state.plan.list,\r\n lineOfCoverageId,\r\n stateId,\r\n carriers,\r\n lookups,\r\n carrierName,\r\n isMedical,\r\n isDental,\r\n allowCustomPlans\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n getCarriers: (stateId, stateName, lineOfCoverageId) => dispatch(getCarriers(stateId, stateName, lineOfCoverageId)),\r\n updateCarrier: (name: string) => dispatch(change('PLAN_UPSERT', 'carrierName', name)),\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PlanOverviewFields);","import { Grid } from '@material-ui/core';\r\nimport MessageCard from '../common/message_card';\r\nimport palette from '../../utility/palette';\r\nimport React from 'react';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\n\r\n\r\ninterface Props {\r\n warning?: boolean;\r\n messageTitle?: string | JSX.Element;\r\n}\r\n\r\nconst PlanWaiverFormReminderMessage = (props: Props) => {\r\n return (\r\n <>\r\n {props.warning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nexport default PlanWaiverFormReminderMessage;","import { Grid } from '@material-ui/core';\r\nimport MessageCard from '../common/message_card';\r\nimport palette from 'utility/palette';\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n isSubmitted?: boolean;\r\n showEffectiveDateChangeWarning: boolean;\r\n effectiveDateChangeTitle: string\r\n messageHeader: string;\r\n}\r\n\r\nconst EffectiveDateChangeMessage = (props: Props) => { \r\n return (\r\n <>\r\n {props.showEffectiveDateChangeWarning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 1\r\n }\r\n\r\n}\r\nexport default EffectiveDateChangeMessage;\r\n","import { Grid } from '@material-ui/core';\r\nimport MessageCard from '../common/message_card';\r\nimport palette from '../../utility/palette';\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n warning?: boolean;\r\n messageTitle?: string | JSX.Element;\r\n}\r\n\r\nconst PlanCyberScoutElectionMessage = (props: Props) => {\r\n return (\r\n <>\r\n {props.warning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 1\r\n }\r\n\r\n}\r\nexport default PlanCyberScoutElectionMessage;","import { Grid, Typography } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport React from 'react';\r\nimport { FieldArray, InjectedFormProps, reduxForm } from 'redux-form';\r\nimport { isBasicLife, isSuppLife, isVoluntaryLOC, isGAP } from 'utility/lookup_utils';\r\nimport palette from 'utility/palette';\r\nimport MessageCard from '../common/message_card';\r\nimport SaveButton from '../common/save_button';\r\nimport AgeReductionFields, { FieldData as AgeReductionFieldData } from './age_reduction_fields';\r\nimport PCPLookupField, { FieldData as PCPLookupFieldData } from './pcp_fields';\r\nimport PlanBenefitsFieldArray, { FieldData as PlanBenefitsFieldData } from './plan_benefits_field_array';\r\nimport PlanFeaturesFields, { FieldData as PlanFeaturesFieldData } from './plan_features_fields';\r\nimport PlanLifeInsuranceFields, { FieldData as PlanLifeInsuranceData } from './plan_life_insurance_fields';\r\nimport PlanNotesFields from './plan_notes_fields';\r\nimport PlanOverviewFields, { FieldData as PlanOverviewFieldData } from './plan_overview_fields';\r\nimport { Zones, isPlanReadOnly } from 'utility';\r\nimport { Configuration} from 'redux/reducers';\r\nimport PlanModificationMessage from '../plan/plan_modification_message';\r\nimport PlanCoverageLevelMessage from '../plan/plan_coverage_level_message';\r\nimport PlanWaiverFormReminderMessage from '../plan/plan_waiverform_reminder_message';\r\nimport EffectiveDateChangeMessage from '../plan/effective_date_change_warning';\r\nimport { styles as commonStyles } from '../../utility/common_styles';\r\nimport PlanCyberScoutElectionMessage from '../plan/plan_cyberscout_election_message';\r\nimport MetLawInfoCards from './MetLawInfoCards';\r\n\r\nexport interface IEffectiveDateWarning {\r\n showEffectiveDateWarning: boolean;\r\n originalEffectiveDate: string;\r\n}\r\n\r\nexport const FORM_NAME = 'PLAN_UPSERT';\r\n\r\nexport type FormData = PlanOverviewFieldData & PlanFeaturesFieldData & PlanBenefitsFieldData & PCPLookupFieldData & PlanLifeInsuranceData & AgeReductionFieldData;\r\n\r\ninterface ComponentProps {\r\n isEdit?: boolean;\r\n disableSave?: boolean;\r\n onCancel?: () => void;\r\n isSubmitted?: boolean;\r\n isCustom: boolean;\r\n isCustomCarrierPlan: boolean;\r\n lineOfCoverage?: number;\r\n isReadOnly?: boolean;\r\n showSalaryWarning?: boolean;\r\n showRiderOptionWarning?: boolean;\r\n planConfigurations: Configuration[];\r\n employeesElectedCurrentPlanCount: number;\r\n electionMessageTitle: string;\r\n showCoverageApprovalWarning?: boolean;\r\n coverageMessageTitle: string;\r\n effectiveDateWarning: IEffectiveDateWarning;\r\n showWaiverFormReminder?: boolean;\r\n waiverFormReminderTitle: string | JSX.Element;\r\n showEffectiveDateChangeWarning: boolean;\r\n effectiveDateChangeTitle: string ;\r\n effectiveDateMessageHeader: string;\r\n groupEligibilityMessageTitle: string;\r\n showGroupEligibilityWarning: boolean;\r\n showMetLawWarning?: boolean;\r\n showSicCodeWarning?: boolean;\r\n planSicCode?: number;\r\n awsSicCode?: number;\r\n isConfirmed?: boolean;\r\n}\r\n\r\n\r\ninterface Props extends InjectedFormProps, ComponentProps { }\r\n\r\nconst PlanUpsertForm = (props: Props) => {\r\n const { isEdit, submitting, invalid, onCancel, handleSubmit, showSalaryWarning, showRiderOptionWarning, touch, effectiveDateWarning, showSicCodeWarning, planSicCode, awsSicCode } = props;\r\n const isBasicOrSuppLife = isSuppLife(props.lineOfCoverage || 0) || isBasicLife(props.lineOfCoverage || 0);\r\n const isVoluntary = isVoluntaryLOC(props.lineOfCoverage || 0);\r\n const isGapLoc = isGAP(props.lineOfCoverage || 0);\r\n const isVoluntaryOrGAP = isVoluntary || isGapLoc;\r\n const riderOptionWarningMessage = \"The current plan you've selected has required Riders. You will be able to continue the enrollment as is, but will not be able to utilize Humana's Paperless Submission Integration. \" +\r\n \"Continuing this enrollment as is will generate paper forms, and you will be able to submit the Group through the standard process with BenefitMall's support team. \" +\r\n \"In order to submit this plan through Humana's Paperless Submission Integration, you will need to add these Riders through the Benefitmall's Quoting tool, and begin your enrollment again.\";\r\n React.useEffect(() => {\r\n if (isEdit) {\r\n var fieldsToTouch = [\"effectiveDate\", \"benefitAmountTypeId\", \"benefitAmount\", \"guaranteedIssueAmount\", \"maximumBenefit\"]\r\n touch(...fieldsToTouch as any);\r\n }\r\n }, [isEdit, touch]);\r\n\r\n const ratesAndBenefitsReadOnly = React.useMemo(() => isPlanReadOnly(props.planConfigurations, Zones.PlanBenefits),\r\n [props.planConfigurations]);\r\n const customPlanTitle = \"You've added a custom plan that may not be supported by Benefitmall. Please contact your Sales Representative to determine the submission process for these plans.\";\r\n const disableLevelFunded = !props.isCustom || props.isSubmitted || props.isConfirmed;\r\n return (\r\n <>\r\n Overview & Benefits\r\n
\r\n Please provide the information required below to complete enrollment.\r\n \r\n \r\n \r\n \r\n \r\n {props.showMetLawWarning && }\r\n {props.isCustomCarrierPlan &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {ratesAndBenefitsReadOnly.value && false &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {showRiderOptionWarning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {showSicCodeWarning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {showSalaryWarning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {isBasicOrSuppLife &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {effectiveDateWarning.showEffectiveDateWarning &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n Required fields are marked with an *.\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 Save Plan Info\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n buttonGroup: {\r\n textAlign: 'right',\r\n marginTop: 20\r\n },\r\n buttonMargin: {\r\n marginRight: '8px'\r\n },\r\n header: {\r\n fontSize: 24,\r\n color: palette.grey.text,\r\n marginBottom: 12\r\n },\r\n infoText: {\r\n fontSize: 14,\r\n color: palette.grey.text,\r\n marginBottom: 20\r\n },\r\n negativeBottom: {\r\n marginBottom: \"-2%\"\r\n }\r\n}\r\n\r\nexport default reduxForm({ form: FORM_NAME })(PlanUpsertForm)\r\n","import { Grid, TextField } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport LeftNav, { TabOption } from 'components/common/left_nav';\r\nimport SaveButton from 'components/common/save_button';\r\nimport EligibilityUpsertForm, { FormData as FormDataEligibility, FORM_NAME as ELIGIBILITY_FORM } from 'components/forms/eligibility_upsert_form';\r\nimport RatesUpsertForm, { FormData as FormDataRates, FORM_NAME as RATES_FORM } from 'components/forms/rates_upsert_form';\r\nimport DeletePlanDialog from 'components/plan/delete_plan_dialog';\r\nimport CopyPlanDialog from 'components/plan/copy_plan_dialog';\r\nimport PlanDocuments from 'components/plan/plan_documents';\r\nimport PlanPreviewDialog from 'components/plan/plan_preview_dialogue';\r\nimport memoizeOne from 'memoize-one';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { change, formValueSelector, formValues } from 'redux-form';\r\nimport auth from 'utility/auth';\r\nimport { isIE } from 'utility/browser_utils';\r\nimport { generateContributionList, generateDefaultAgeBandedIndividualRates, generateDefaultAgeBandedRates, generateDefaultAgeBandedTiersRates, generateDefaultCoverageLevelRates, generateDefaultIndividualRates, generateParticipantsList, getDefaultContributionLevelId, getDefaultRateTypeId } from 'utility/generator_funcs';\r\nimport { planBenefitsCheck, planRatesCheck, planValidDatesCheck, IsCustomCarrierPlan, showMetLifeWarning } from 'utility/plan_setup_utils';\r\nimport ContributionUpsertForm, { FormData as FormDataContributions, FORM_NAME as CONTRIBUTIONS_FORM } from '../../components/forms/contribution_upsert_form';\r\nimport PlanUpsertForm, { FormData as FormDataInfo, FORM_NAME as PLAN_INFO_FORM, IEffectiveDateWarning } from '../../components/forms/plan_upsert_form';\r\nimport { addPlan, copyContributions, deleteDocument, deletePlan, displaySnackbar, fetchPlan, FileUpload, storePlanSearchValues, updatePlan, upsertDocumentToPlan, copyPlan } from '../../redux/actions';\r\nimport { Benefit, CarrierList, Company, ContactInfo, Contribution, CopyContributionDTO, EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentClass, EnrollmentClassesPropTypes, EnrollmentReducerState, EnrollmentReducerStatePropType, LinkedPlanType, PartialPlan, Plan, PlanDTO, PlanReducerState, PlanReducerStatePropType, PlanSearchFields, Rate, SnackbarVariant, GroupSubmission, CopyPlanDTO } from '../../redux/reducers';\r\nimport { ReduxState } from '../../redux/store';\r\nimport { companySettings, CONFIGURATION_TYPE_IDS, getIdsForEmployeesWithoutSalary, isUserReadOnly, Zones, isPlanReadOnly } from '../../utility';\r\nimport { AUTOENROLLMENT_TYPE_IDS, isBasicLife, isSuppLife, getDisabilityLOCS, getLifeLOCS, getLookupId, getLookups, getPlanBenefits, getPlanTypes, getRateTypes, getWaitingPeriodsById, isDisabilityLOC, isLifeLOC, isLifeOrDisabilityLOC, LOOKUP_TYPE_IDS, getLookupValue } from '../../utility/lookup_utils';\r\nimport palette from '../../utility/palette';\r\nimport scrollUtility from '../../utility/scroll_utility';\r\nimport { hasEmployeesElectedAnyPlan } from 'utility/employee_utils';\r\nimport moment from 'moment';\r\n\r\ninterface ComponentProps {\r\n companyId: string;\r\n enrollmentId: string;\r\n planId: string;\r\n goBack: () => void;\r\n onPlanChange: (planId: string) => void;\r\n goToClassTab: () => void;\r\n}\r\n\r\n\r\ninterface State {\r\n loading: boolean;\r\n deleteLoading: boolean;\r\n copyLoading: boolean;\r\n planPreviewOpen: boolean;\r\n canViewPreview: boolean;\r\n checkForm: boolean;\r\n planSwitchId: string;\r\n sectionIndex: number;\r\n deleteDialogOpen: boolean;\r\n copyDialogOpen: boolean;\r\n selectedPlanName: string;\r\n leftNavTabs: TabOption[];\r\n showIncompatibleContributionsWarning: ((confirmed: boolean) => any) | undefined;\r\n effectiveDateWarning: IEffectiveDateWarning;\r\n isClearContents: boolean;\r\n isCopyData: boolean;\r\n isCopyRates: boolean;\r\n isCopyContributions: boolean;\r\n isCopyDocuments: boolean;\r\n isCopyEligibility: boolean;\r\n alwaysCopyRates: boolean;\r\n}\r\n\r\ninterface DispatchProps {\r\n changeBenefits: (newBenefits: Benefit[]) => void;\r\n changePlanTypeId: (newPlanTypId: number) => void;\r\n changeRates: (newRates: Rate[]) => void;\r\n changeContributions: (newContributions: Contribution[]) => void;\r\n changePayoutId: (newPayoutId: number) => void;\r\n addPlan: (plan: PlanDTO) => Promise;\r\n updatePlan: (plan: PlanDTO) => Promise;\r\n fetchPlan: (id: string) => Promise;\r\n deletePlan: (id: string, name: string) => Promise;\r\n copyPlan: (id: string, name: string, options: CopyPlanDTO) => Promise;\r\n upsertDocumentToPlan: (planId: string, fileUpload: FileUpload) => Promise;\r\n deleteDocument: (planId: string, documentId: string, name: string) => Promise;\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n copyContribution: (planId: string, copyContrib: CopyContributionDTO) => void;\r\n removePlanSearchValues: () => void;\r\n}\r\n\r\ninterface MappedProps {\r\n planState: PlanReducerState;\r\n employeeState: EmployeeReducerState;\r\n enrollmentState: EnrollmentReducerState;\r\n carriers: CarrierList[];\r\n contactInfo: ContactInfo;\r\n company: Company;\r\n enrollmentClasses: EnrollmentClass[];\r\n isConfirmed: boolean;\r\n isSubmitted: boolean;\r\n isExpired: boolean;\r\n contributions: Contribution[];\r\n lineOfCoverageId: number;\r\n rateTypeId: number;\r\n contributionLevelId: number;\r\n contributionModelTypeId: number;\r\n savedPlanSearchFields: PlanSearchFields;\r\n basePlanId: string;\r\n payrollCycleId?: number;\r\n allowCustomPlans: boolean;\r\n groupSubmissionList: GroupSubmission[];\r\n}\r\n\r\ninterface LinkedPlanWithLOC {\r\n locId: number;\r\n linkLocId: number;\r\n}\r\n\r\ninterface Props extends ComponentProps, DispatchProps, MappedProps { }\r\n\r\nclass PlanUpsert extends React.PureComponent{\r\n isEmployer = auth.isUserEmployer();\r\n isBMallUser = auth.isUserEnrollmentSuperAdmin();\r\n\r\n compositeRateKey = 'COMPOSITE';\r\n AgeBandedRateKey = 'AGEBANDED';\r\n AgeBandedTiersRateKey = 'AGEBANDEDTIERS';\r\n AgeBandedIndividualRateKey = 'AGEBANDEDINDIVIDUAL';\r\n coverageLevelContributionKey = 'COVERAGELEVEL';\r\n basePlanLevelContributionKey = 'BASEPLANLEVEL';\r\n memberLevelContributionKey = 'MEMBERLEVEL';\r\n memberLevelTotalDependentsContributionKey = 'MEMBERLEVELTOTALDEPENDENTS';\r\n flatRateKey = 'FLAT';\r\n\r\n stdId = getLookupId('STD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n ltdId = getLookupId('LTD', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n medicalLOC = getLookupId('MEDICAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n dentalLOC = getLookupId('DENTAL', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n visionLOC = getLookupId('VISION', LOOKUP_TYPE_IDS.lineOfCoverage);\r\n compositeRateTypeId = getLookupId(this.compositeRateKey, LOOKUP_TYPE_IDS.planRateType);\r\n flatRateTypeId = getLookupId(this.flatRateKey, LOOKUP_TYPE_IDS.planRateType);\r\n individualRateTypeId = getLookupId('INDIVIDUAL', LOOKUP_TYPE_IDS.planRateType);\r\n ageBandedRateTypeId = getLookupId(this.AgeBandedRateKey, LOOKUP_TYPE_IDS.planRateType);\r\n ageBandedTiersRateTypeId = getLookupId(this.AgeBandedTiersRateKey, LOOKUP_TYPE_IDS.planRateType);\r\n ageBandedIndividualRateTypeId = getLookupId(this.AgeBandedIndividualRateKey, LOOKUP_TYPE_IDS.planRateType);\r\n basePlanContributionLevelId = getLookupId(this.basePlanLevelContributionKey, LOOKUP_TYPE_IDS.contributionLevel);\r\n memberLevelContributionId = getLookupId(this.memberLevelContributionKey, LOOKUP_TYPE_IDS.contributionLevel);\r\n coverageLevelContributionId = getLookupId(this.coverageLevelContributionKey, LOOKUP_TYPE_IDS.contributionLevel);\r\n flatDollarModelTypeId = getLookupId('FLATDOLLAR', LOOKUP_TYPE_IDS.contributionModelType);\r\n weeklyPayoutId = getLookupId('WEEKLY', LOOKUP_TYPE_IDS.payouts);\r\n monthlyPayoutId = getLookupId('MONTHLY', LOOKUP_TYPE_IDS.payouts);\r\n linkedAmountId = getLookupId('LINKEDAMOUNT', LOOKUP_TYPE_IDS.benefitAmountType);\r\n multipleSalaryTypeId = getLookupId('MULTIPLEOFSALARY', LOOKUP_TYPE_IDS.benefitAmountType);\r\n \r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n const plan = this.findPlan(this.props.planState.list, this.props.planId);\r\n const effectiveDateWarning = this.getEffectiveDateWarning(plan ? plan.effectiveDate : undefined, plan ? plan.originalEffectiveDate : undefined);\r\n \r\n this.state = {\r\n loading: false,\r\n deleteLoading: false,\r\n copyLoading: false,\r\n planPreviewOpen: false,\r\n canViewPreview: !!plan,\r\n checkForm: false,\r\n sectionIndex: 0,\r\n planSwitchId: plan ? plan.id : 'new',\r\n deleteDialogOpen: false,\r\n copyDialogOpen: false,\r\n selectedPlanName: \"\",\r\n leftNavTabs: [{\r\n title: 'Overview & Benefits',\r\n formName: PLAN_INFO_FORM\r\n },\r\n {\r\n title: 'Rates',\r\n formName: RATES_FORM,\r\n disabled: !(!!plan)\r\n },\r\n {\r\n title: 'Contributions',\r\n formName: CONTRIBUTIONS_FORM,\r\n disabled: !(!!plan)\r\n },\r\n {\r\n title: 'Eligibility',\r\n formName: ELIGIBILITY_FORM,\r\n disabled: !(!!plan)\r\n },\r\n {\r\n title: 'Documents',\r\n disabled: !(!!plan)\r\n }],\r\n showIncompatibleContributionsWarning: undefined,\r\n effectiveDateWarning: effectiveDateWarning,\r\n isClearContents: false,\r\n isCopyData: false,\r\n isCopyRates: false,\r\n isCopyContributions: false,\r\n isCopyDocuments: false,\r\n isCopyEligibility: false,\r\n alwaysCopyRates: plan? plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.ratesAndBenefitsReadOnly):false\r\n };\r\n }\r\n\r\n private getEffectiveDateWarning(planEffectiveDate: moment.Moment | undefined, planOriginalEffectiveDate: moment.Moment | undefined): IEffectiveDateWarning {\r\n const effectiveDate = planEffectiveDate ? planEffectiveDate.format(\"MM/DD/YYYY\") : \"\";\r\n const originalEffectiveDate = planOriginalEffectiveDate ? planOriginalEffectiveDate.format(\"MM/DD/YYYY\") : \"\";\r\n const showEffectiveDateWarning = effectiveDate !== \"\" && originalEffectiveDate !== \"\" && effectiveDate !== originalEffectiveDate;\r\n\r\n return {\r\n originalEffectiveDate: originalEffectiveDate,\r\n showEffectiveDateWarning: showEffectiveDateWarning\r\n }\r\n }\r\n\r\n isChangingPlan: boolean = false;\r\n clickedSectionIndex?: number;\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n const plan = this.findPlan(this.props.planState.list, this.props.planId);\r\n\r\n if (!this.isEdit && this.props.lineOfCoverageId && this.props.lineOfCoverageId !== prevProps.lineOfCoverageId) {\r\n const newBenefits = plan ? this.generateBenefitListForPlan(plan) : [];\r\n const filteredPlanTypes = getPlanTypes().filter(lookup => lookup.parentIds.indexOf(this.props.lineOfCoverageId!) >= 0)\r\n const newPlanTypeId = filteredPlanTypes && filteredPlanTypes[0] ? filteredPlanTypes[0].id : 2;\r\n this.props.changeBenefits(newBenefits);\r\n this.props.changePlanTypeId(newPlanTypeId);\r\n }\r\n\r\n if (this.props.rateTypeId && prevProps.rateTypeId && this.props.rateTypeId !== prevProps.rateTypeId) {\r\n const newRates = plan && plan.rateTypeId === this.props.rateTypeId ? this.generateRateList(this.props.rateTypeId, plan) : this.generateRateList(this.props.rateTypeId, plan);\r\n this.props.changeRates(newRates);\r\n }\r\n\r\n if (this.props.contributionLevelId && prevProps.contributionLevelId && this.props.contributionLevelId !== prevProps.contributionLevelId) {\r\n const savedContributions = plan && plan.contributions[0] && plan.contributions[0].contributionLevelId === this.props.contributionLevelId && plan.contributions[0].contributionModelTypeId === this.props.contributionModelTypeId && plan.contributions;\r\n const newContributions = savedContributions || generateContributionList(this.props.contributionLevelId, this.props.contributionModelTypeId, plan ? plan.participants : undefined);\r\n this.props.changeContributions(newContributions);\r\n }\r\n\r\n if (this.props.contributionModelTypeId && prevProps.contributionModelTypeId && this.props.contributionModelTypeId !== prevProps.contributionModelTypeId) {\r\n const savedContributions = plan && plan.contributions[0] && plan.contributions[0].contributionLevelId === this.props.contributionLevelId && plan.contributions[0].contributionModelTypeId === this.props.contributionModelTypeId && plan.contributions;\r\n const newContributions = savedContributions || generateContributionList(this.props.contributionLevelId, this.props.contributionModelTypeId, plan ? plan.participants : undefined);\r\n this.props.changeContributions(newContributions);\r\n }\r\n\r\n\r\n const disableSteps = plan ? false : true;\r\n const updatedTabs: TabOption[] = this.state.leftNavTabs.map(tab => {\r\n const warningForTab = this.warningForTabCheck(tab.title);\r\n\r\n return ({\r\n title: tab.title,\r\n formName: tab.formName,\r\n warning: warningForTab,\r\n disabled: disableSteps && tab.title !== \"OVERVIEW & BENEFITS\"\r\n });\r\n });\r\n if (this.state.leftNavTabs.some((tab, index) => tab.disabled !== updatedTabs[index].disabled || tab.warning !== updatedTabs[index].warning)) {\r\n this.setState({ leftNavTabs: updatedTabs });\r\n }\r\n\r\n if (isIE() && document.getElementsByClassName('MuiOutlinedInput-inputMultiline')[1]) {\r\n //IE has weird behavior for multiline inputs that creates extra space beyond the window.\r\n //Removing the element that causes it, causes this behavior to stop.\r\n //This one covers Plan Notes. If other multiline inputs are added. Then this will need to be updated\r\n document.getElementsByClassName('MuiOutlinedInput-inputMultiline')[1].remove()\r\n }\r\n }\r\n\r\n warningForTabCheck = (tabTitle: string) => {\r\n const plan = this.findPlan(this.props.planState.list, this.props.planId);\r\n\r\n if (tabTitle.toUpperCase() === \"OVERVIEW & BENEFITS\") {\r\n const salaryWarning = ((plan && plan.benefitAmountTypeId) ? plan.benefitAmountTypeId === this.multipleSalaryTypeId : false) && getIdsForEmployeesWithoutSalary(this.props.employeeState).length > 0;\r\n const benefitAmountWarning = plan ? !planBenefitsCheck(plan) : false;\r\n const effectiveDateWarning = plan ? !planValidDatesCheck(plan) : false;\r\n return salaryWarning || benefitAmountWarning || effectiveDateWarning;\r\n }\r\n else if (tabTitle.toUpperCase() === \"RATES\") {\r\n const ratesWarning = plan ? !planRatesCheck(plan) : false;\r\n return ratesWarning;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.removePlanSearchValues && this.props.removePlanSearchValues();\r\n }\r\n\r\n generateBenefitListForPlan = (plan: Plan) => {\r\n const planBenefits = plan.benefits;\r\n return getPlanBenefits()\r\n .filter(lookup => lookup.parentIds.indexOf(plan.lineOfCoverageId) >= 0)\r\n .map(lookup => ({\r\n benefitId: lookup.id,\r\n inNetworkAmount: planBenefits.length === 0 ? undefined :\r\n plan.benefits.find(b => b.benefitId === lookup.id) ? plan.benefits.find(b => b.benefitId === lookup.id)!.inNetworkAmount : undefined,\r\n outOfNetworkAmount: planBenefits.length === 0 ? undefined :\r\n plan.benefits.find(b => b.benefitId === lookup.id) ? plan.benefits.find(b => b.benefitId === lookup.id)!.outOfNetworkAmount : undefined,\r\n }));\r\n };\r\n\r\n private _getOtherPlans = memoizeOne((list: Plan[], planId: string) => {\r\n const lookups = getLookups();\r\n return list\r\n .filter(plan => plan.id !== planId && plan.lineOfCoverageId > 0 && plan.rateTypeId && plan.rateTypeId > 0 && !isLifeLOC(plan.lineOfCoverageId) && !isDisabilityLOC(plan.lineOfCoverageId))\r\n .map(plan =>\r\n ({\r\n id: plan.id,\r\n locName: lookups[plan.lineOfCoverageId].value,\r\n planName: plan.planDisplayName || '',\r\n rateTypeId: plan.rateTypeId,\r\n selected: false\r\n }));\r\n });\r\n get getOtherPlans() {\r\n //Note: Copy contribution's target plans include only the ones with LOC and Rate Type\r\n return this._getOtherPlans(this.props.planState.list, this.props.planId);\r\n }\r\n\r\n private _getDependentPlans = memoizeOne((list: Plan[], planId: string) => {\r\n return list\r\n .filter(x => x.linkedPlans.find(y => y.linkType === LinkedPlanType.benefit && y.id === this.props.planId))\r\n .map(plan => plan.planDisplayName);\r\n });\r\n\r\n get dependentPlans() {\r\n return this._getDependentPlans(this.props.planState.list, this.props.planId);\r\n };\r\n\r\n get groupSubmission() {\r\n const plan = this.findPlan(this.props.planState.list, this.props.planId);\r\n return this.props.groupSubmissionList && this.props.groupSubmissionList.find(grp => grp!.carrierCode === plan!.carrierCode)!;\r\n }\r\n\r\n generateRateList = memoizeOne((rateTypeId: number, plan?: Plan) => {\r\n let rates = [] as Rate[];\r\n let participants = undefined;\r\n if (plan) {\r\n rates = plan.rates;\r\n participants = plan.participants;\r\n }\r\n var tobaccoExtraRates = false;\r\n if (plan && plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.tobaccoExtraRates)) tobaccoExtraRates = true;\r\n var generatedRates;\r\n \r\n let maxAge = 65;\r\n let minAge18 = false;\r\n if (plan && plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.maxAge70)) maxAge = 70;\r\n if (plan && plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.maxAge80)) maxAge = 80;\r\n if (plan && plan.configurationTypeIds && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.minAge18)) minAge18 = true;\r\n if (rateTypeId === this.compositeRateTypeId) {\r\n generatedRates = generateDefaultCoverageLevelRates(rates);\r\n }\r\n else if (rateTypeId === this.ageBandedRateTypeId) {\r\n generatedRates = generateDefaultAgeBandedRates(rates, maxAge, minAge18);\r\n }\r\n else if (rateTypeId === this.individualRateTypeId) {\r\n generatedRates = generateDefaultIndividualRates(rates, participants);\r\n }\r\n else if (rateTypeId === this.ageBandedTiersRateTypeId) {\r\n generatedRates = generateDefaultAgeBandedTiersRates(rates, minAge18, tobaccoExtraRates, participants, maxAge);\r\n }\r\n else if (rateTypeId === this.ageBandedIndividualRateTypeId) {\r\n generatedRates = generateDefaultAgeBandedIndividualRates(rates, participants, maxAge);\r\n }\r\n else if (rateTypeId === this.flatRateTypeId) {\r\n generatedRates = generateDefaultCoverageLevelRates(rates);\r\n }\r\n else {\r\n return [];\r\n }\r\n if (minAge18) {\r\n generatedRates = generatedRates.filter(r => r.minAge>17);\r\n }\r\n return generatedRates;\r\n });\r\n\r\n findPlan = memoizeOne((plan: Plan[], planId: string) => plan.find(emp => emp.id === planId));\r\n\r\n getAvailableBasePlans(plan: Plan) {\r\n const { list: planList } = this.props.planState;\r\n\r\n if (plan.rateTypeId === undefined) {\r\n return []\r\n }\r\n const rateTypeId = plan.rateTypeId;\r\n\r\n const validLocsForBasePlan =\r\n plan.lineOfCoverageId === this.medicalLOC\r\n || plan.lineOfCoverageId === this.dentalLOC\r\n || plan.lineOfCoverageId === this.visionLOC;\r\n\r\n if (!validLocsForBasePlan) {\r\n return []\r\n }\r\n\r\n const rateContributionRules: { rateTypeKeys: string[], contributionLevelKeys: string[] }[] = [\r\n // base plan needs to be included here for the radio to be enabled but it gets filtered below on the planlist\r\n { rateTypeKeys: [this.compositeRateKey, this.AgeBandedTiersRateKey], contributionLevelKeys: [this.coverageLevelContributionKey, this.basePlanLevelContributionKey] },\r\n { rateTypeKeys: [this.AgeBandedRateKey, this.AgeBandedIndividualRateKey], contributionLevelKeys: [this.coverageLevelContributionKey, this.basePlanLevelContributionKey, this.memberLevelContributionKey, this.memberLevelTotalDependentsContributionKey] }\r\n ]\r\n\r\n const rule =\r\n rateContributionRules.find(rule => !!rule.rateTypeKeys.find(k => getLookupId(k, LOOKUP_TYPE_IDS.planRateType) === rateTypeId))\r\n\r\n const allowedContributionTypes =\r\n rule ? rule.contributionLevelKeys.map(k => getLookupId(k, LOOKUP_TYPE_IDS.contributionLevel)) : [];\r\n\r\n return planList\r\n .filter(basePlan => plan.id !== basePlan.id && plan.lineOfCoverageId === basePlan.lineOfCoverageId) // other plans in the same LOC\r\n .filter(basePlan => basePlan.contributionLevelId && allowedContributionTypes.find(t => t === basePlan.contributionLevelId) && basePlan.contributionLevelId != this.basePlanContributionLevelId)\r\n }\r\n\r\n get planDisplayName() {\r\n const plan = this.findPlan(this.props.planState.list, this.props.planId);\r\n return plan ? plan.planDisplayName : \"New Plan\";\r\n }\r\n\r\n get stateId() {\r\n return this.props.contactInfo.stateId;\r\n }\r\n\r\n get companySettings() {\r\n return companySettings(this.props.company);\r\n }\r\n\r\n get initialValues() {\r\n const plan = this.findPlan(this.props.planState.list, this.props.planId);\r\n const defaultRateTypeId = plan ? getRateTypes(plan.lineOfCoverageId)[0].id : this.ageBandedRateTypeId;\r\n const reduceValidation = this.props.enrollmentState.reduceValidation;\r\n const ratesList = plan ? this.generateRateList(plan.rateTypeId || defaultRateTypeId, plan) : [];\r\n var flatRateAmt = undefined;\r\n\r\n if (plan && plan.lineOfCoverageId && plan.rateTypeId === this.flatRateTypeId) {\r\n let rate = ratesList.find(r => (r.amount && r.amount > 0));\r\n flatRateAmt = (rate && rate.amount) ? rate.amount : undefined;\r\n }\r\n else if (plan && plan.lineOfCoverageId && plan.rateTypeId === this.compositeRateTypeId) {\r\n let rate = ratesList.find(r => (r.amount && r.amount > 0));\r\n let amt = 0;\r\n if (rate && rate.amount)\r\n amt = rate.amount;\r\n if (rate && rate.amount && ratesList.every(rl => rl.amount === amt ))\r\n flatRateAmt = (rate && rate.amount) ? rate.amount : undefined;\r\n }\r\n\r\n const formDataRates: Partial = {\r\n ...plan,\r\n rateTypeId: plan ? `${plan.rateTypeId || defaultRateTypeId}` : `${defaultRateTypeId}`,\r\n rates: ratesList,\r\n flatRateAmount: flatRateAmt,\r\n showTobaccoRates: (!plan || !plan.rates!.find(c => c.tobaccoAmount !== null || c.maleTobaccoAmount !== null || c.femaleTobaccoAmount !== null)) ? false : true,\r\n showGenderRates: (!plan || plan.rates!.find(c => c.femaleAmount !== null || c.femaleTobaccoAmount !== null || c.maleAmount !== null || c.maleTobaccoAmount !== null)) ? true : false,\r\n showAgeBandedTierTobaccoRates: (!plan || !(plan === undefined || !plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.tobaccoExtraRates)))\r\n };\r\n if (plan && plan.lineOfCoverageId && !plan.costPerUnit) {\r\n const isLife = plan!.lineOfCoverageId && isLifeLOC(plan!.lineOfCoverageId);\r\n if (isLife) {\r\n formDataRates.costPerUnit = 1000\r\n }\r\n else if (plan!.lineOfCoverageId === this.ltdId) {\r\n formDataRates.costPerUnit = 100;\r\n }\r\n else if (plan!.lineOfCoverageId === this.stdId) {\r\n formDataRates.costPerUnit = 10;\r\n }\r\n else {\r\n formDataRates.costPerUnit = 0;\r\n }\r\n\r\n }\r\n\r\n const formDataContributions: Partial = {\r\n ...plan,\r\n contributionLevelId: plan ? `${plan.contributionLevelId || ''}` : undefined,\r\n }\r\n if (plan && plan.contributionLevelId === this.basePlanContributionLevelId) {\r\n formDataContributions.contributionLevelId = `${plan.contributionLevelId}`;\r\n formDataContributions.isFlatRate = true;\r\n formDataContributions.contributionModelTypeId = `${this.flatDollarModelTypeId}`;\r\n const linkedBasePlan = plan!.linkedPlans.find(p => p.linkType === LinkedPlanType.contributionBase);\r\n if (linkedBasePlan) {\r\n formDataContributions.basePlanId = linkedBasePlan.id;\r\n } else {\r\n console.warn(\"Plan's contribution level is base plan, but linked base plan was not found!\")\r\n }\r\n }\r\n else if (!plan || !plan.contributions || plan.contributions.length === 0) {\r\n const isLifeOrDisability = isLifeOrDisabilityLOC(plan ? plan.lineOfCoverageId : undefined);\r\n const defaultContributionLevelId = getDefaultContributionLevelId(plan ? plan.lineOfCoverageId : this.coverageLevelContributionId);\r\n const defaultContributionModelType = this.flatDollarModelTypeId;\r\n formDataContributions.contributionLevelId = isLifeOrDisability ? `${this.memberLevelContributionId}` : `${defaultContributionLevelId}`;\r\n formDataContributions.contributions = generateContributionList(defaultContributionLevelId, defaultContributionModelType, plan ? plan.participants : undefined);\r\n formDataContributions.isFlatRate = true;\r\n formDataContributions.contributionModelTypeId = `${defaultContributionModelType}`;\r\n } else {\r\n const contributionModelType = plan.contributions[0].contributionModelTypeId;\r\n formDataContributions.contributionLevelId = `${plan.contributionLevelId}`;\r\n formDataContributions.isFlatRate = contributionModelType === this.flatDollarModelTypeId;\r\n formDataContributions.contributionModelTypeId = `${contributionModelType}`;\r\n }\r\n\r\n const formDataInfo: Partial = {\r\n ...plan,\r\n reduceValidation: reduceValidation\r\n };\r\n formDataInfo.benefits = plan ? this.generateBenefitListForPlan(plan) : [];\r\n formDataInfo.ageReductions = plan && plan.ageReductions && plan.ageReductions.length > 0 ? plan.ageReductions : [];\r\n\r\n formDataInfo.pcpurl = plan && (plan.pcpurl || plan.pcpurl === null) ? plan.pcpurl : \"https://www.healthgrades.com/\";\r\n\r\n // if benefitamounttype is multiplesalary and this is a disability the amount in db is in decimal (i.e 80 is recorded and .80) and should be converted \r\n if (plan && plan.benefitAmountTypeId && plan.benefitAmountTypeId === this.multipleSalaryTypeId && isDisabilityLOC(plan.lineOfCoverageId)) { \r\n formDataInfo.benefitAmount = formDataInfo.benefitAmount && formDataInfo.benefitAmount * 100; \r\n }\r\n \r\n if (plan && plan.lineOfCoverageId == getLookupId('LTD', LOOKUP_TYPE_IDS.lineOfCoverage)) {\r\n if (plan.benefitAmountTypeId != null &&\r\n (plan.benefitAmountTypeId !== this.multipleSalaryTypeId || (plan.benefitAmountTypeId === this.multipleSalaryTypeId && (plan.isBenefitAmountRatingTypeCoveredPayroll == null || plan.isBenefitAmountRatingTypeCoveredPayroll == false)))) {\r\n formDataInfo.isBenefitAmountRatingTypeCoveredPayroll = false\r\n }\r\n else\r\n {\r\n formDataInfo.isBenefitAmountRatingTypeCoveredPayroll = true;\r\n }\r\n }\r\n\r\n if (plan && plan.lineOfCoverageId == getLookupId('STD', LOOKUP_TYPE_IDS.lineOfCoverage)) {\r\n if (plan.benefitAmountTypeId != null &&\r\n (plan.benefitAmountTypeId !== this.multipleSalaryTypeId || (plan.benefitAmountTypeId === this.multipleSalaryTypeId && (plan.isBenefitAmountRatingTypeCoveredPayroll == null || plan.isBenefitAmountRatingTypeCoveredPayroll == true)))) {\r\n formDataInfo.isBenefitAmountRatingTypeCoveredPayroll = true;\r\n }\r\n else {\r\n formDataInfo.isBenefitAmountRatingTypeCoveredPayroll = false;\r\n }\r\n }\r\n\r\n\r\n if (plan && !!plan.benefitRoundingInterval && plan.benefitRoundingInterval !== 1\r\n && plan.benefitRoundingInterval !== 1000 && plan.benefitRoundingInterval !== 5000\r\n && plan.benefitRoundingInterval !== 10000) {\r\n formDataInfo.benefitRoundingIntervalString = 'other';\r\n formDataInfo.otherRoundingInterval = plan.benefitRoundingInterval;\r\n } else {\r\n formDataInfo.benefitRoundingIntervalString = plan ? `${plan.benefitRoundingInterval}` : '1';\r\n }\r\n\r\n if (!plan && this.props.savedPlanSearchFields) {\r\n const sh = this.props.savedPlanSearchFields;\r\n formDataInfo.lineOfCoverageId = sh.lineOfCoverageId;\r\n formDataInfo.stateId = sh.stateId;\r\n formDataInfo.effectiveDate = sh.effectiveDate || moment(this.props.enrollmentState.effectiveDate);\r\n formDataInfo.carrierName = sh.carrierName;\r\n }\r\n\r\n if (plan && plan.benefitAmountTypeId && plan.benefitAmountTypeId === this.linkedAmountId && plan.linkedPlans.length > 0) {\r\n const linkedPlan = plan.linkedPlans.find(link => link.linkType === LinkedPlanType.benefit);\r\n formDataInfo.linkedBenefitPlanId = linkedPlan && linkedPlan.id;\r\n }\r\n\r\n // enforce state from company information\r\n formDataInfo.stateId = this.stateId;\r\n return {\r\n formDataInfo,\r\n formDataRates,\r\n formDataContributions,\r\n };\r\n }\r\n\r\n get isEdit() {\r\n return !!this.findPlan(this.props.planState.list, this.props.planId);\r\n }\r\n\r\n deleteLoadingOn = () => this.setState({ deleteLoading: true });\r\n deleteLoadingOff = () => this.setState({ deleteLoading: false });\r\n copyLoadingOn = () => this.setState({ copyLoading: true });\r\n copyLoadingOff = () => this.setState({ copyLoading: false });\r\n\r\n \r\n handlePreviewButtonClicked = () => this.setState({ planPreviewOpen: true });\r\n handleClosePreviewDialogue = () => this.setState({ planPreviewOpen: false });\r\n\r\n handleSectionChange = (index: number) => {\r\n this.isChangingPlan = false;\r\n this.clickedSectionIndex = index;\r\n if (this.state.sectionIndex === 4 || this.isEmployer)\r\n this.setState({ sectionIndex: index });\r\n else\r\n this.setState({ checkForm: true });\r\n }\r\n\r\n handleCloseAbandonChangesDialogue = () => {\r\n const plan = this.findPlan(this.props.planState.list, this.props.planId);\r\n this.setState({ checkForm: false, planSwitchId: plan ? plan.id : 'new' })\r\n };\r\n\r\n handlePlanSwitcherChange = (planId: string) => {\r\n this.isChangingPlan = true;\r\n if (planId === \"new\") {\r\n this.setState({ sectionIndex: 0 });\r\n }\r\n\r\n this.setState({ planSwitchId: planId });\r\n if (!this.isEmployer)\r\n this.setState({ checkForm: true });\r\n\r\n if (this.state.sectionIndex === 4 || this.isEmployer) {\r\n this.props.onPlanChange(planId);\r\n };\r\n }\r\n\r\n handleSectionSwitcherContinue = () => {\r\n if (this.clickedSectionIndex !== undefined)\r\n this.setState({ sectionIndex: this.clickedSectionIndex, checkForm: false });\r\n }\r\n\r\n handlePlanSwitcherContinue = () => {\r\n this.props.onPlanChange(this.state.planSwitchId);\r\n this.setState({ checkForm: false });\r\n };\r\n\r\n onCopyClick = (plan: Plan, copy: PartialPlan[]) => {\r\n const newCopy = {\r\n contributions: this.props.contributions,\r\n planids: copy\r\n } as CopyContributionDTO;\r\n this.props.copyContribution(plan.id, newCopy);\r\n };\r\n\r\n openDeleteModal = (planId: string) => {\r\n this.setState({\r\n selectedPlanName: \"\",\r\n deleteDialogOpen: true\r\n });\r\n };\r\n openCopyModal = () => {\r\n this.setState({\r\n selectedPlanName: \"\",\r\n copyDialogOpen: true,\r\n isClearContents: true,\r\n isCopyData: true,\r\n isCopyRates: true,\r\n isCopyContributions: true,\r\n isCopyDocuments: true,\r\n isCopyEligibility: true\r\n });\r\n };\r\n closeDeleteModal = () => {\r\n this.setState({\r\n selectedPlanName: \"\",\r\n deleteDialogOpen: false\r\n })\r\n };\r\n\r\n closeCopyModal = () => {\r\n this.setState({\r\n selectedPlanName: \"\",\r\n copyDialogOpen: false\r\n })\r\n };\r\n handleDelete = (name: string) => {\r\n this.deleteLoadingOn();\r\n this.setState({ canViewPreview: false });\r\n this.props.deletePlan(this.props.planId, name).then(this.props.goBack, this.deleteLoadingOff);\r\n };\r\n handleCopy = (name: string) => {\r\n this.copyLoadingOn();\r\n this.setState({ canViewPreview: false });\r\n const options: CopyPlanDTO = {\r\n planId: this.props.planId,\r\n isCopyData: this.state.isCopyData,\r\n isCopyRates: this.state.isCopyRates,\r\n isCopyContributions: this.state.isCopyContributions,\r\n isCopyDocuments: this.state.isCopyDocuments,\r\n isCopyEligibility: this.state.isCopyEligibility\r\n };\r\n\r\n this.props.copyPlan(this.props.planId, name, options).then(this.props.goBack, this.copyLoadingOff);\r\n };\r\n\r\n handleSubmitInfo = async (formValues: FormDataInfo, plan?: Plan) => {\r\n const selectedCarrier = this.props.carriers.find(x => x.carrierName === formValues.carrierName);\r\n const carrierCode = plan ? plan.carrierCode : selectedCarrier ? selectedCarrier.carrierCode : \"Custom\";\r\n const carrierLogo = plan ? plan.carrierLogo : selectedCarrier ? selectedCarrier.carrierLogo : \"\";\r\n const isMultipleSalary = plan && plan.benefitAmountTypeId && plan.benefitAmountTypeId === this.multipleSalaryTypeId;\r\n const isLife = isLifeLOC(formValues.lineOfCoverageId);\r\n const isDisablity = isDisabilityLOC(formValues.lineOfCoverageId);\r\n var benefitRoundingInterval;\r\n var benefitRoundingTypeId;\r\n if ((isLife || isDisablity) && !isMultipleSalary) {\r\n benefitRoundingInterval = undefined;\r\n benefitRoundingTypeId = undefined;\r\n } else {\r\n benefitRoundingTypeId = formValues.benefitRoundingTypeId;\r\n if (formValues.benefitRoundingIntervalString === 'other') {\r\n benefitRoundingInterval = formValues.otherRoundingInterval;\r\n } else {\r\n benefitRoundingInterval = !!formValues.benefitRoundingIntervalString ? Number(formValues.benefitRoundingIntervalString) : undefined;\r\n }\r\n }\r\n\r\n const defaultRateTypeId = getDefaultRateTypeId(formValues.lineOfCoverageId);\r\n const defaultContributionLevelId = getDefaultContributionLevelId(formValues.lineOfCoverageId);\r\n const defaultContributionModelType = this.flatDollarModelTypeId;\r\n const defaultParticipants = generateParticipantsList(formValues.lineOfCoverageId);\r\n\r\n let linkedPlans = plan ? plan.linkedPlans : [];\r\n const link = linkedPlans.find(l => l.linkType === LinkedPlanType.benefit);\r\n\r\n if (formValues.benefitAmountTypeId && formValues.benefitAmountTypeId === this.linkedAmountId) {\r\n if (!link)\r\n linkedPlans.push({ id: formValues.linkedBenefitPlanId!, linkType: LinkedPlanType.benefit });\r\n else\r\n link.id = formValues.linkedBenefitPlanId!\r\n } else {\r\n linkedPlans = linkedPlans.filter(l => l.linkType !== LinkedPlanType.benefit);\r\n }\r\n\r\n const multipleEnteredAsPercent = formValues.benefitAmountTypeId && formValues.benefitAmountTypeId === this.multipleSalaryTypeId && isDisablity;\r\n const benefitAmount = multipleEnteredAsPercent ? (formValues.benefitAmount ? formValues.benefitAmount : 0) / 100 : formValues.benefitAmount;\r\n\r\n const benefits = isPlanReadOnly(plan && plan.configurations ? plan.configurations : [], Zones.PlanBenefits).value ?\r\n (plan && plan.benefits ? plan.benefits : []) :\r\n formValues.benefits.filter(benefit => benefit.inNetworkAmount || benefit.outOfNetworkAmount).map(benefit => ({\r\n benefitId: benefit.benefitId,\r\n inNetworkAmount: benefit.inNetworkAmount,\r\n outOfNetworkAmount: benefit.outOfNetworkAmount\r\n }));\r\n\r\n const fundingType = formValues.fundingType;\r\n const isLevelFunded = fundingType === getLookupId(\"LEVELFUNDED\", LOOKUP_TYPE_IDS.planFundingType);\r\n\r\n const planDTO: PlanDTO = {\r\n ...formValues,\r\n benefitAmount,\r\n carrierCode,\r\n carrierLogo,\r\n id: plan ? plan.id : '',\r\n benefits,\r\n documents: plan ? plan.documents : [],\r\n rateTypeId: plan ? plan.rateTypeId : defaultRateTypeId,\r\n rates: plan && plan.rates ? plan.rates : this.generateRateList(defaultRateTypeId, plan),\r\n contributionLevelId: plan && plan.contributionLevelId ? plan.contributionLevelId : defaultContributionLevelId,\r\n contributions: plan ? plan.contributions : generateContributionList(defaultContributionLevelId, defaultContributionModelType, defaultParticipants),\r\n participants: plan ? plan.participants : defaultParticipants,\r\n ageReductions: formValues.ageReductions || [],\r\n ageRestrictions: plan ? plan.ageRestrictions : [],\r\n classIds: plan ? plan.classIds : [],\r\n autoEnrollId: plan ? plan.autoEnrollId : undefined,\r\n pcpurl: formValues.pcpurl ? formValues.pcpurl : undefined,\r\n useEmployeeAge: plan ? plan.useEmployeeAge : false,\r\n benefitRoundingInterval,\r\n benefitRoundingTypeId,\r\n effectiveDate: formValues.effectiveDate && formValues.effectiveDate.startOf('day').format(),\r\n configurationTypeIds: plan ? plan.configurationTypeIds : [],\r\n linkedPlans,\r\n waitingPeriodTypeId: plan ? plan.waitingPeriodTypeId : getWaitingPeriodsById()!.filter(wp => wp.waitingPeriodTypeName === 'Immediate')[0].waitingPeriodTypeId,\r\n waitingPeriod: plan ? plan.waitingPeriod : undefined,\r\n questions: plan ? plan.questions : [],\r\n stateId: this.props.contactInfo.stateId! // enforcing state to come from company contact info,\r\n , fundingType: fundingType \r\n , levelFundedPlan: isLevelFunded\r\n };\r\n\r\n !!plan && this.setState({ canViewPreview: true });\r\n\r\n if (plan)\r\n return this.props.updatePlan(planDTO).then(() => {\r\n const effectiveDateWarning = this.getEffectiveDateWarning(formValues.effectiveDate, plan.originalEffectiveDate);\r\n this.setState({ effectiveDateWarning });\r\n scrollUtility.scrollToTop();\r\n }, scrollUtility.scrollToTop);\r\n else\r\n return this.props.addPlan(planDTO)\r\n .then((planId: string) => {\r\n this.props.onPlanChange(this.state.planSwitchId === 'new' ? planId : this.state.planSwitchId);\r\n }, scrollUtility.scrollToTop);\r\n };\r\n\r\n handleSubmitEligibility = async (formValues: FormDataEligibility, plan: Plan) => {\r\n const { classes, toggleAuto } = formValues;\r\n const saveClassIds = (classes || []).filter(c => c.selected).map(c => c.id);\r\n const isBasicOrSuppLife = isSuppLife(plan.lineOfCoverageId || 0) || isBasicLife(plan.lineOfCoverageId || 0);\r\n formValues.autoEnrollId = \"\";\r\n if (formValues.toggleAuto) {\r\n if (isBasicOrSuppLife) {\r\n formValues.autoEnrollId = AUTOENROLLMENT_TYPE_IDS.employeesOnly;\r\n } else {\r\n formValues.autoEnrollId = AUTOENROLLMENT_TYPE_IDS.employeesAndDependents;\r\n }\r\n }\r\n\r\n // update rates and contributions\r\n var participantsChanged = false;\r\n formValues.participants.forEach(formPart => {\r\n const curPlanPart = plan.participants.find(planPart => planPart.participantTypeId === formPart.participantTypeId);\r\n if (!curPlanPart || curPlanPart.isAllowed !== formPart.isAllowed) participantsChanged = true;\r\n });\r\n plan.participants = formValues.participants;\r\n var isBaseContribution = plan.contributionLevelId && plan.contributionLevelId === this.basePlanContributionLevelId ;\r\n\r\n const rates = plan.rates.length === 0 || participantsChanged ? this.generateRateList(plan.rateTypeId!, plan) : plan.rates;\r\n const isContributionListEmpty = (plan.contributions.length === 0 && !isBaseContribution);\r\n const contributions = isContributionListEmpty || participantsChanged ? generateContributionList(plan.contributionLevelId!, this.flatDollarModelTypeId, formValues.participants) : plan.contributions;\r\n const contributionLevelId = isContributionListEmpty || participantsChanged\r\n ? getDefaultContributionLevelId(plan.lineOfCoverageId)\r\n : plan.contributionLevelId;\r\n const linkedPlanElections = formValues.linkedElectionPlans.filter(plan => plan.selected).map(plan => {\r\n return {\r\n id: plan.id,\r\n linkType: LinkedPlanType.election\r\n };\r\n });\r\n\r\n const updatedPlan: PlanDTO = {\r\n ...plan,\r\n ageRestrictions: formValues.ageRestrictions,\r\n classIds: saveClassIds,\r\n autoEnrollId: toggleAuto ? Number(formValues.autoEnrollId) : undefined,\r\n effectiveDate: plan.effectiveDate!.startOf('day').format(),\r\n originalEffectiveDate: plan.originalEffectiveDate == undefined ? undefined : plan.originalEffectiveDate!.startOf('day').format(),\r\n participants: formValues.participants,\r\n rateTypeId: plan.rates.length === 0 || participantsChanged ? getDefaultRateTypeId(plan.lineOfCoverageId) : plan.rateTypeId,\r\n rates,\r\n contributionLevelId,\r\n contributions,\r\n waitingPeriodTypeId: Number(formValues.waitingPeriodTypeId),\r\n waitingPeriod: (Number(formValues.waitingPeriodTypeId) === getWaitingPeriodsById()!.filter(wp => wp.waitingPeriodTypeName === 'Immediate')[0].waitingPeriodTypeId\r\n || Number(formValues.waitingPeriodTypeId) === getWaitingPeriodsById()!.filter(wp => wp.waitingPeriodTypeName === 'First of the month following date of hire')[0].waitingPeriodTypeId)\r\n ? undefined : formValues.waitingPeriod,\r\n linkedPlans: [\r\n ...plan.linkedPlans.filter(link => link.linkType !== LinkedPlanType.election),\r\n ...linkedPlanElections\r\n ]\r\n };\r\n return this.props.updatePlan(updatedPlan);\r\n };\r\n\r\n handleSubmitRates = async (formValues: FormDataRates, plan: Plan) => {\r\n const isReadOnly = isPlanReadOnly(plan.configurations || [], Zones.PlanRate)\r\n \r\n const rates = isReadOnly.value\r\n ? plan.rates\r\n : formValues.rates.map(rate => {\r\n // if the rate type is flat rate, we copy the rate to the rates json and update the rate type\r\n if (formValues.rateTypeId === this.flatRateTypeId.toString()) {\r\n rate = {\r\n ...rate,\r\n rateTypeId: this.flatRateTypeId,\r\n amount :formValues.flatRateAmount\r\n }\r\n }\r\n // null out irrevelent values\r\n if (!formValues.showTobaccoRates && !formValues.showAgeBandedTierTobaccoRates) {\r\n rate = {\r\n ...rate,\r\n tobaccoAmount: undefined,\r\n maleTobaccoAmount: undefined,\r\n femaleTobaccoAmount: undefined\r\n }\r\n }\r\n if (formValues.showGenderRates) {\r\n rate = {\r\n ...rate, \r\n amount: undefined,\r\n tobaccoAmount: undefined\r\n }\r\n } else {\r\n rate = {\r\n ...rate,\r\n maleAmount: undefined,\r\n femaleAmount: undefined,\r\n maleTobaccoAmount: undefined,\r\n femaleTobaccoAmount: undefined\r\n }\r\n }\r\n\r\n return rate\r\n })\r\n\r\n // this is to get the current formvalues flatrate amount and assign it back to form, or the current value of the composite form if they are all same\r\n let flatRateAmt = formValues.flatRateAmount ;\r\n if (formValues.rateTypeId === this.compositeRateTypeId.toString()) {\r\n let rate = formValues.rates.find(r => (r.amount && r.amount > 0));\r\n let amt = 0;\r\n if (rate && rate.amount)\r\n amt = rate.amount;\r\n if (rate && rate.amount && formValues.rates.every(rl => rl.amount === amt))\r\n flatRateAmt = (rate && rate.amount) ? rate.amount : (formValues.flatRateAmount ? formValues.flatRateAmount : 0);\r\n formValues.flatRateAmount = flatRateAmt;\r\n }\r\n const updatedPlan: PlanDTO = {\r\n ...plan,\r\n rateTypeId: Number(formValues.rateTypeId),\r\n rates,\r\n effectiveDate: plan.effectiveDate ? plan.effectiveDate.startOf('day').format() : undefined,\r\n originalEffectiveDate: plan.originalEffectiveDate ? plan.originalEffectiveDate.startOf('day').format() : undefined,\r\n costPerUnit: formValues.costPerUnit,\r\n ratesUpdated: true\r\n };\r\n await this.props.updatePlan(updatedPlan).then(scrollUtility.scrollToTop, scrollUtility.scrollToTop);\r\n };\r\n\r\n handleSubmitContributions = (plan: Plan, formValues: FormDataContributions) => {\r\n const submit = async () => {\r\n var contributionLevelId = Number(formValues.contributionLevelId);\r\n var isBaseContribution = contributionLevelId === this.basePlanContributionLevelId ;\r\n\r\n const updatedPlan: PlanDTO = {\r\n ...plan,\r\n contributionLevelId: contributionLevelId,\r\n contributions: formValues.contributions.map(contribution => (\r\n {\r\n ...contribution,\r\n contributionModelTypeId: Number(formValues.contributionModelTypeId)\r\n }\r\n )),\r\n linkedPlans: [\r\n ...plan.linkedPlans.filter(p => p.linkType !== LinkedPlanType.contributionBase),\r\n ].concat(isBaseContribution ? { id: formValues.basePlanId!, linkType: LinkedPlanType.contributionBase } : []),\r\n effectiveDate: plan.effectiveDate ? plan.effectiveDate.startOf('day').format() : undefined,\r\n originalEffectiveDate: plan.originalEffectiveDate ? plan.originalEffectiveDate.startOf('day').format() : undefined,\r\n };\r\n await this.props.updatePlan(updatedPlan).then(scrollUtility.scrollToTop, scrollUtility.scrollToTop);\r\n }\r\n\r\n const plansWithIncompatibleContributions = this.props.planState.list.filter(plan =>\r\n // if this plan is a member contribution level plan\r\n Number(formValues.contributionLevelId) === this.memberLevelContributionId &&\r\n // plans that are linked to this plan\r\n !!plan.linkedPlans.find(lp =>\r\n lp.linkType === LinkedPlanType.contributionBase &&\r\n lp.id === this.props.planId\r\n ) &&\r\n // and whose ratetype is composite are incompatible\r\n (plan.rateTypeId === this.compositeRateTypeId || plan.rateTypeId === this.ageBandedTiersRateTypeId)\r\n );\r\n\r\n return new Promise((resolve, reject) => {\r\n if (plansWithIncompatibleContributions.length) {\r\n this.setState({\r\n showIncompatibleContributionsWarning: async (confirmed) => {\r\n this.setState({\r\n showIncompatibleContributionsWarning: undefined\r\n })\r\n if (confirmed) {\r\n await submit()\r\n // refetch each plan\r\n await Promise.all(plansWithIncompatibleContributions.map(plan => this.props.fetchPlan(plan.id)))\r\n }\r\n resolve()\r\n }\r\n })\r\n } else {\r\n submit().then(() => resolve());\r\n }\r\n });\r\n };\r\n\r\n getWaiverFormReminderTitle = () => {\r\n const njWaiverKey = process.env.REACT_APP_NJ_WAIVER_FORM_LINK as string;\r\n return (\r\n <>\r\n New Jersey requires a witnessed waiver form for all employees waiving or refusing coverage. Your final submission to BenefitMall will need to include the witnessed waiver form for each employee who waives coverage.\r\n \r\n\r\n )\r\n }\r\n\r\n getLocSortOrder = (id : number) => {\r\n switch(id) {\r\n case 321: return 1; //accident\r\n case 176: return 2; //basic life\r\n case 322: return 3; //critical illness\r\n case 128: return 4; //dental\r\n case 323: return 5; //hospital\r\n case 511: return 6; //identity\r\n case 521: return 7; //legal\r\n case 175: return 8; //LTD\r\n case 127: return 9; //medical\r\n case 503: return 10; //PET\r\n case 174: return 11; //STD\r\n case 129: return 12; //vision\r\n default: return 0;\r\n }\r\n }\r\n\r\n getLinkedLoc= (locId: number, linkedPlans: LinkedPlanWithLOC[]) =>{\r\n let locs : number[]=[];\r\n linkedPlans.forEach(lPlan => {\r\n if (lPlan.linkLocId == locId) { if (!locs.includes(lPlan.locId)) {locs.push(lPlan.locId);} } \r\n })\r\n return locs;\r\n }\r\n\r\n getAvailablePlans = (plan?: Plan) => {\r\n if (plan == undefined) {return [];}\r\n let allPlans = this.props.planState.list;\r\n let plans = allPlans.filter(p => p.id !== this.props.planId && p.lineOfCoverageId != plan.lineOfCoverageId)\r\n .sort((a,b)=>(this.getLocSortOrder(a.lineOfCoverageId) - this.getLocSortOrder(b.lineOfCoverageId)));\r\n\r\n // set all of the loc for plans.linkedplans to make it easier later\r\n let linkedPlans: LinkedPlanWithLOC[] = [];\r\n allPlans.forEach(aplan=>{\r\n aplan.linkedPlans.forEach(lplan => {\r\n // added check for election for bug 206858. Base plans were causing issue. Base and linked information are stored in the same field\r\n if (lplan.linkType == LinkedPlanType.election)\r\n {\r\n let tempLocId = allPlans[allPlans.findIndex(x=>x.id == lplan.id)].lineOfCoverageId;\r\n if (linkedPlans.findIndex(x=> x.locId == aplan.lineOfCoverageId && x.linkLocId == tempLocId ) == -1)\r\n {\r\n const linkedPlan = {locId: aplan.lineOfCoverageId, linkLocId: tempLocId}; \r\n linkedPlans.push(linkedPlan); \r\n } \r\n }\r\n })\r\n })\r\n\r\n // get all of the LOC to skip\r\n let locsToSkip = this.getLinkedLoc(plan.lineOfCoverageId, linkedPlans);\r\n let continueLoc = (locsToSkip.length > 0)?true:false;\r\n let iStart = 0;\r\n while (continueLoc){\r\n continueLoc = false;\r\n let newLocs : number[]=[];\r\n for (let i=iStart;i < locsToSkip.length;i++)\r\n {\r\n this.getLinkedLoc(locsToSkip[i], linkedPlans).forEach( x=> {\r\n newLocs.push(x)\r\n } )\r\n }\r\n iStart = locsToSkip.length;\r\n if (newLocs.length > 0){\r\n continueLoc = true;\r\n newLocs.forEach(x=>{locsToSkip.push(x)});\r\n }\r\n }\r\n if (locsToSkip.length > 0) { plans = plans.filter(p => !locsToSkip.includes(p.lineOfCoverageId)); }\r\n\r\n let includePlans:Plan[] = [];\r\n if (plan.classIds.length > 0)\r\n {\r\n plans.forEach(x=>{\r\n if (x.classIds.length==0)\r\n {\r\n includePlans.push(x);\r\n }\r\n else\r\n {\r\n let flag = false; \r\n plan.classIds.some(value => {\r\n if (x.classIds.includes(value)){\r\n flag = true;\r\n }\r\n }); \r\n if (flag) {includePlans.push(x);}\r\n }\r\n\r\n })\r\n }\r\n\r\n let returnPlans : Plan[]=[];\r\n if (includePlans.length == 0) {returnPlans = [...plans];}\r\n else {returnPlans = [...includePlans];}\r\n\r\n return returnPlans;\r\n } \r\n handleClickClearContents = (_e: any, checked: boolean) => {\r\n this.setState({ isClearContents: checked });\r\n // set all of the checkboxes except copydata\r\n this.setState({ isCopyRates: this.state.alwaysCopyRates ? this.state.alwaysCopyRates : checked });\r\n this.setState({ isCopyDocuments: checked });\r\n this.setState({ isCopyContributions: checked });\r\n this.setState({ isCopyEligibility: checked });\r\n }\r\n handleClickCopyData = (_e: any) => {\r\n // always true rather than disabling\r\n this.setState({ isCopyData: true });\r\n }\r\n handleClickCopyRates = (_e: any, checked: boolean) => {\r\n this.setState({ isCopyRates: this.state.alwaysCopyRates ? this.state.alwaysCopyRates : checked });\r\n }\r\n handleClickCopyDocuments = (_e: any, checked: boolean) => {\r\n this.setState({ isCopyDocuments: checked });\r\n }\r\n handleClickCopyContributions = (_e: any, checked: boolean) => {\r\n this.setState({ isCopyContributions: checked });\r\n }\r\n handleClickCopyEligibility = (_e: any, checked: boolean) => {\r\n this.setState({ isCopyEligibility: checked });\r\n } \r\n render() {\r\n const currentTab = this.state.leftNavTabs[this.state.sectionIndex];\r\n const plan = this.findPlan(this.props.planState.list, this.props.planId);\r\n const basePlan = this.props.basePlanId ? this.findPlan(this.props.planState.list, this.props.basePlanId) : undefined;\r\n const showSalaryWarning = Boolean(plan && plan.benefitAmountTypeId && plan.benefitAmountTypeId === this.multipleSalaryTypeId && getIdsForEmployeesWithoutSalary(this.props.employeeState).length > 0);\r\n const showRatesWarning = plan ? !planRatesCheck(plan) : false;\r\n const ratesAreReadOnly = isPlanReadOnly(plan && plan.configurations ? plan.configurations : [], Zones.PlanRate);\r\n const isEligibilityReadOnly = isUserReadOnly(this.props.enrollmentState, Zones.PlanEligibility) || this.initialValues.formDataInfo!.reduceValidation;\r\n const isEligibilitySaveReadOnly = isUserReadOnly(this.props.enrollmentState, Zones.PlanEligibilitySave) || this.initialValues.formDataInfo!.reduceValidation;\r\n const showAgeBandedTierTobaccoRates = !(plan === undefined || !plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.tobaccoExtraRates));\r\n const filteredSortedAvailablePlans = this.getAvailablePlans(plan);\r\n\r\n var showCoverageApprovalWarning = false;\r\n if (plan === undefined || !plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.coverageApprovalWarning)) {\r\n showCoverageApprovalWarning = false;\r\n } \r\n else {\r\n showCoverageApprovalWarning = true;\r\n }\r\n const coverageMessageWarning = \"Coverage and effective dates are subject to LifeSecure approval.\";\r\n const contributionMessageWarning = \"This LifeSecure product requires the same flat contribution amount for all coverage levels.\";\r\n var showSameContributionWarning = false;\r\n if (plan === undefined || !plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.sameContributionWarning)) {\r\n showSameContributionWarning = false;\r\n }\r\n else {\r\n showSameContributionWarning = true;\r\n }\r\n\r\n var showWaiverFormReminder = false;\r\n if (plan === undefined || !plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.waiverFormReminder)) {\r\n showWaiverFormReminder = false;\r\n }\r\n else {\r\n showWaiverFormReminder = true;\r\n }\r\n var orginialEffectiveDate = plan ? plan.effectiveDate ? plan.effectiveDate.clone().subtract(2, 'd').format(\"MM/DD\") : undefined : undefined;\r\n var probableEffectiveDate = plan ? plan.effectiveDate ? plan.effectiveDate.clone().add(1, 'M').format(\"MM/DD\") : undefined : undefined;\r\n var probableEffectiveDateLong = plan ? plan.effectiveDate ? plan.effectiveDate.clone().add(1, 'M').format(\"MMMM D, YYYY\") : undefined : undefined;\r\n var carrierName = plan ? plan.carrierName : \"\";\r\n\r\n var showEffectiveDateChangeWarning = false;\r\n var withinDays = \"\";\r\n if (plan != undefined && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.EffectiveDateLessThan10Days)) {\r\n showEffectiveDateChangeWarning = true;\r\n withinDays = \"10\";\r\n }\r\n else if (plan != undefined && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.EffectiveDateLessThan14Days)) {\r\n showEffectiveDateChangeWarning = true;\r\n withinDays = \"14\";\r\n }\r\n var effectiveDateChangeTitle = \"\";\r\n if (withinDays != \"\") {\r\n if (plan!.carrierCode == getLookupValue('AllstateCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode)) {\r\n effectiveDateChangeTitle = carrierName + \" requests the processing window is within \" + withinDays + \" days of the effective date; the Effective date may be pushed out to \" + probableEffectiveDateLong\r\n + \" to ensure the product will be properly processed and your group will get coverage. Please contact us if you have any questions.\"\r\n ;\r\n\r\n }\r\n else {\r\n effectiveDateChangeTitle = carrierName + \" needs this plan processed by \" + orginialEffectiveDate\r\n + \", if the processing window is within \" + withinDays + \" days of this date, BenefitMall Operations may push out the Effective date to \"\r\n + probableEffectiveDate\r\n + \" to ensure the product will be properly processed and your group will get coverage. Please contact us if you have any questions.\"\r\n ;\r\n\r\n }\r\n\r\n }\r\n\r\n var effectiveDateMessageHeader = carrierName + \" Effective Date\"\r\n\r\n var groupEligibilityMessageTitle = 'Your group must have 10 or more elections for this product to be eligible to receive it.';\r\n\r\n var showGroupEligibilityWarning = plan ? plan!.carrierCode === getLookupValue('CYBERSCOUTCARRIERCODE', LOOKUP_TYPE_IDS.carrierCode) : false;\r\n\r\n var showSicCodeWarning = false;\r\n const sicCodeWarningFlag = (plan !== undefined && plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.mismatchSicCodeWarning));\r\n const mismatchSicCode = (plan !== undefined && (plan.planSicCode !== this.props.enrollmentState.company.sicCode));\r\n\r\n if (sicCodeWarningFlag && mismatchSicCode) {\r\n showSicCodeWarning = true;\r\n }\r\n\r\n var showRiderOptionWarning = false;\r\n var employeesElectedCurrentPlanCount = this.props.employeeState.list.filter(e => e.elections.length > 0 && e.elections.find(el => el.planId == this.props.planId ||\r\n (el.planId == \"\" && el.isWaived && (!!plan && el.lineOfCoverageId == plan.lineOfCoverageId)))).length;\r\n\r\n var electionMessageTitle = employeesElectedCurrentPlanCount.toString() + ' employees have begun or completed elections. Making changes could effect their rates.';\r\n\r\n if (plan === undefined || !plan.configurationTypeIds.includes(CONFIGURATION_TYPE_IDS.RiderOptionWarning)) {\r\n showRiderOptionWarning = false;\r\n }\r\n else {\r\n var riderOptions = plan.riderOptions;\r\n showRiderOptionWarning = riderOptions ? riderOptions.filter(x => x.isRequired && x.riders.length > 0\r\n && x.riders.find(r => r.isSelected) === undefined).length > 0\r\n : false;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n this.handlePlanSwitcherChange(event.target.value)}\r\n style={styles.noMargin}\r\n SelectProps={{ native: true }}\r\n >\r\n {this.props.allowCustomPlans && !this.props.isConfirmed && !this.isEmployer && }\r\n {this.props.planState.list.map(plan => ())}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {(!isUserReadOnly(this.props.enrollmentState, Zones.PlanDeleteSave) && plan) &&\r\n \r\n \r\n \r\n\r\n }\r\n {(!isUserReadOnly(this.props.enrollmentState, Zones.PlanDeleteSave) && plan) &&\r\n \r\n \r\n \r\n\r\n }\r\n \r\n Preview Plan Card\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.state.sectionIndex === 0 && this.handleSubmitInfo(values, plan)}\r\n showSalaryWarning={showSalaryWarning}\r\n isEdit={this.isEdit}\r\n onCancel={this.props.goBack}\r\n enableReinitialize={this.state.planSwitchId === 'new'}\r\n disableSave={isUserReadOnly(this.props.enrollmentState, Zones.PlanDetailSave)}\r\n lineOfCoverage={this.props.lineOfCoverageId}\r\n planConfigurations={plan && plan.configurations ? plan.configurations : []}\r\n isReadOnly={isUserReadOnly(this.props.enrollmentState, Zones.PlanDetail)}\r\n showRiderOptionWarning={showRiderOptionWarning}\r\n employeesElectedCurrentPlanCount={employeesElectedCurrentPlanCount}\r\n electionMessageTitle={electionMessageTitle}\r\n showCoverageApprovalWarning={showCoverageApprovalWarning}\r\n coverageMessageTitle={coverageMessageWarning}\r\n effectiveDateWarning={this.state.effectiveDateWarning}\r\n waiverFormReminderTitle={this.getWaiverFormReminderTitle()}\r\n showWaiverFormReminder={showWaiverFormReminder}\r\n showEffectiveDateChangeWarning={showEffectiveDateChangeWarning}\r\n effectiveDateChangeTitle={effectiveDateChangeTitle}\r\n effectiveDateMessageHeader={effectiveDateMessageHeader}\r\n groupEligibilityMessageTitle={groupEligibilityMessageTitle}\r\n showGroupEligibilityWarning={showGroupEligibilityWarning}\r\n showMetLawWarning={showMetLifeWarning(plan)}\r\n showSicCodeWarning={showSicCodeWarning}\r\n planSicCode={plan ? plan.planSicCode : undefined}\r\n awsSicCode={this.props.enrollmentState.company.sicCode}\r\n isConfirmed={this.props.isConfirmed}\r\n />}\r\n {this.state.sectionIndex === 1 && !!plan &&\r\n this.handleSubmitRates(values, plan)}\r\n onCancel={this.props.goBack}\r\n rateTypeId={this.props.rateTypeId}\r\n lineOfCoverageId={plan.lineOfCoverageId}\r\n disableSave={isUserReadOnly(this.props.enrollmentState, Zones.PlanRateSave)}\r\n isReadOnly={isUserReadOnly(this.props.enrollmentState, Zones.PlanRate) || ratesAreReadOnly.value}\r\n showRatesWarning={showRatesWarning}\r\n showLevelFundedWarning = {plan.levelFundedPlan}\r\n employeesElectedCurrentPlanCount={employeesElectedCurrentPlanCount}\r\n electionMessageTitle={electionMessageTitle}\r\n showCoverageApprovalWarning={showCoverageApprovalWarning}\r\n coverageMessageTitle={coverageMessageWarning}\r\n showAgeBandedTierTobaccoRates={showAgeBandedTierTobaccoRates}\r\n />\r\n }\r\n {this.state.sectionIndex === 2 && !!plan &&\r\n this.handleSubmitContributions(plan, formData)}\r\n onCancel={this.props.goBack}\r\n planList={this.getOtherPlans}\r\n savedPlan={plan}\r\n onCopyClick={copy => this.onCopyClick(plan, copy)}\r\n availableBasePlans={this.getAvailableBasePlans(plan)}\r\n basePlan={basePlan}\r\n disableSave={isUserReadOnly(this.props.enrollmentState, Zones.PlanContributionSave)}\r\n isReadOnly={isUserReadOnly(this.props.enrollmentState, Zones.PlanContribution)}\r\n employeesElectedCurrentPlanCount={employeesElectedCurrentPlanCount}\r\n electionMessageTitle={electionMessageTitle}\r\n showCoverageApprovalWarning={showCoverageApprovalWarning}\r\n showSameContributionWarning={showSameContributionWarning}\r\n coverageMessageTitle={coverageMessageWarning}\r\n contributionMessageTitle={contributionMessageWarning}\r\n />\r\n }\r\n {this.state.sectionIndex === 3 && !!plan &&\r\n this.handleSubmitEligibility(formData, plan)}\r\n goToClassTab={this.props.goToClassTab}\r\n availableElectionPlans={filteredSortedAvailablePlans}\r\n waitingPeriodOptions={getWaitingPeriodsById()}\r\n disableSave={isEligibilitySaveReadOnly}\r\n isReadOnly={isEligibilityReadOnly}\r\n isSubmitted={this.props.isSubmitted}\r\n employeesElectedCurrentPlanCount={employeesElectedCurrentPlanCount}\r\n electionMessageTitle={electionMessageTitle}\r\n hasEmployeesElectedAnyPlan={hasEmployeesElectedAnyPlan(this.props.employeeState.list)}\r\n showCoverageApprovalWarning={showCoverageApprovalWarning}\r\n coverageMessageTitle={coverageMessageWarning}\r\n />\r\n }\r\n {this.state.sectionIndex === 4 && !!plan &&\r\n \r\n }\r\n \r\n \r\n {this.state.canViewPreview && !!plan &&\r\n \r\n }\r\n {this.state.canViewPreview && !!plan &&\r\n \r\n }\r\n {this.state.canViewPreview && !!plan &&\r\n \r\n }\r\n {this.state.showIncompatibleContributionsWarning &&\r\n this.state.showIncompatibleContributionsWarning && this.state.showIncompatibleContributionsWarning(false)} title=\"Incompatible Contributions\">\r\n \r\n \r\n The changes made to this plan's contributions will reset the contributions for its related buy up plans.\r\n \r\n This cannot be undone.\r\n \r\n \r\n \r\n this.state.showIncompatibleContributionsWarning && this.state.showIncompatibleContributionsWarning(true)}\r\n color='primary'\r\n >\r\n Confirm\r\n \r\n \r\n \r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (PlanUpsert as any).propTypes = {\r\n planState: PlanReducerStatePropType,\r\n enrollmentClasses: EnrollmentClassesPropTypes,\r\n employeeState: EmployeeReducerStatePropType,\r\n enrollmentState: EnrollmentReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n const allowCustomPlansSetting =\r\n Object.values(state.settings.values).find(setting => setting.key === 'ALLOW_CUSTOM_PLANS');\r\n const allowCustomPlans = Boolean(allowCustomPlansSetting && ((allowCustomPlansSetting.value && (allowCustomPlansSetting.value.toLowerCase() !== 'false')) || allowCustomPlansSetting.value === null));\r\n const carriers = allowCustomPlans ? state.lookup.carriers : state.lookup.carriers.filter(c => c.carrierCode !== 'OTHER');\r\n const enrollmentState = state.enrollment;\r\n const groupSubmissionList = state.groupSubmission && state.groupSubmission.list;\r\n return {\r\n planState: state.plan,\r\n employeeState: state.employee,\r\n carriers,\r\n contactInfo: state.enrollment.company.contactInformation[0] || {},\r\n enrollmentClasses: state.enrollment.enrollmentClasses,\r\n isConfirmed: !!state.enrollment.setupCompletedOn,\r\n isSubmitted: !!state.enrollment.submissionDate,\r\n isExpired: !!state.enrollment.isExpired,\r\n // TODO: Find a way to decouple the plan upsert from the state of its child forms\r\n lineOfCoverageId: formValueSelector(PLAN_INFO_FORM)(state, 'lineOfCoverageId'), // TODO: see above\r\n rateTypeId: Number(formValueSelector(RATES_FORM)(state, 'rateTypeId')), // TODO: see above\r\n contributionLevelId: Number(formValueSelector(CONTRIBUTIONS_FORM)(state, 'contributionLevelId')), // TODO: see above\r\n contributionModelTypeId: Number(formValueSelector(CONTRIBUTIONS_FORM)(state, 'contributionModelTypeId')), // TODO: see above\r\n contributions: formValueSelector(CONTRIBUTIONS_FORM)(state, 'contributions'), // TODO: see above\r\n savedPlanSearchFields: state.plan.planSearchFields,\r\n payrollCycleId: state.enrollment.company.payrollCycleId,\r\n basePlanId: formValueSelector(CONTRIBUTIONS_FORM)(state, 'basePlanId'), // TODO: see above\r\n company: state.enrollment.company,\r\n allowCustomPlans,\r\n enrollmentState,\r\n groupSubmissionList\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any, ownProps: ComponentProps): DispatchProps {\r\n return {\r\n changeBenefits: (newBenefits) => dispatch(change(PLAN_INFO_FORM, 'benefits', newBenefits)),\r\n changePlanTypeId: (newPlanTypeId) => dispatch(change(PLAN_INFO_FORM, 'planTypeId', newPlanTypeId)),\r\n changeRates: (newRates) => dispatch(change(RATES_FORM, 'rates', newRates)),\r\n changeContributions: (newContributions) => dispatch(change(CONTRIBUTIONS_FORM, 'contributions', newContributions)),\r\n changePayoutId: (newPayoutId) => dispatch(change(PLAN_INFO_FORM, 'payoutId', newPayoutId)),\r\n addPlan: (plan) => dispatch(addPlan(ownProps.companyId, ownProps.enrollmentId, plan)),\r\n updatePlan: (plan) => dispatch(updatePlan(ownProps.companyId, ownProps.enrollmentId, plan)),\r\n fetchPlan: (planId) => dispatch(fetchPlan(ownProps.companyId, ownProps.enrollmentId, planId)),\r\n deletePlan: (id, name) => dispatch(deletePlan(ownProps.companyId, ownProps.enrollmentId, id, name)),\r\n copyPlan: (id, name, options) => dispatch(copyPlan(ownProps.companyId, ownProps.enrollmentId, id, name, options)),\r\n upsertDocumentToPlan: (planId, fileUpload) => dispatch(upsertDocumentToPlan(ownProps.companyId, ownProps.enrollmentId, planId, fileUpload)),\r\n deleteDocument: (planId, documentId, name) => dispatch(deleteDocument(ownProps.companyId, ownProps.enrollmentId, planId, documentId, name)),\r\n displaySnackbar: (message, variant) => dispatch(displaySnackbar(message, variant)),\r\n copyContribution: (planId, copyContrib) => dispatch(copyContributions(ownProps.companyId, ownProps.enrollmentId, planId, copyContrib)),\r\n removePlanSearchValues: () => dispatch(storePlanSearchValues(undefined))\r\n };\r\n}\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n mainControl: {\r\n marginTop: 10,\r\n marginBottom: 24\r\n },\r\n header: {\r\n color: palette.grey.text,\r\n position: 'relative'\r\n },\r\n deleteButton: {\r\n padding: 5,\r\n minWidth: 36,\r\n marginRight: 10\r\n },\r\n copyButton: {\r\n padding: 5,\r\n minWidth: 36,\r\n marginRight: 10\r\n },\r\n previewButton: {\r\n marginRight: 10\r\n },\r\n deleteIcon: {\r\n color: palette.red.primary\r\n },\r\n copyIcon: {\r\n color: palette.blue.primary\r\n },\r\n planLibraryButtonText: {\r\n color: palette.blue.primary\r\n },\r\n buttonGroup: {\r\n position: 'absolute',\r\n right: -8\r\n },\r\n noMargin: {\r\n margin: 0\r\n },\r\n wrapper: {\r\n paddingLeft: 34\r\n }\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PlanUpsert);\r\n","import { CircularProgress } from '@material-ui/core';\r\nimport * as PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport Breadcrumb from 'components/common/breadcrumb';\r\nimport Title from 'components/common/title';\r\nimport { fetchEmployees, fetchEnrollment, fetchEnrollmentClasses, fetchPlans } from 'redux/actions';\r\nimport { EmployeeReducerState, EmployeeReducerStatePropType, EnrollmentClass, EnrollmentClassesPropTypes, Plan, PlanPropType } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport BasePage from '../../components/common/base_page';\r\nimport routes from '../../router/routes';\r\nimport PlanUpsert from './plan_upsert';\r\n\r\ninterface ComponentProps { }\r\ninterface MappedProps{\r\n plans: Plan[];\r\n enrollmentClasses: EnrollmentClass[];\r\n employees: EmployeeReducerState;\r\n companyName?: string;\r\n}\r\n\r\ninterface Props extends MappedProps,DispatchProps,RouteComponentProps,ComponentProps {\r\n}\r\n\r\ninterface DispatchProps{\r\n fetchPlans: (companyId: string, enrollmentId: string) => Promise;\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n fetchEnrollmentClasses: (companyId: string, enrollment: string) => Promise;\r\n fetchEmployees: (companyId: string, enrollmentId: string) => Promise;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n}\r\n\r\nclass PlanUpsertBase extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n promises.push(this.props.fetchPlans(this.companyId, this.enrollmentId));\r\n\r\n if (this.props.enrollmentClasses.length === 0) {\r\n promises.push(this.props.fetchEnrollmentClasses(this.companyId, this.enrollmentId));\r\n }\r\n\r\n if (this.props.employees.list.length === 0) {\r\n promises.push(this.props.fetchEmployees(this.companyId, this.enrollmentId));\r\n }\r\n\r\n if (!this.props.companyName) {\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n }\r\n\r\n this.loadingOn();\r\n Promise.all(promises).then(this.loadingOff, this.loadingOff);\r\n }\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n get companyId() {\r\n return this.props.match.params[routes.planSetup.params!.companyId!.replace(':', '')];\r\n }\r\n\r\n get enrollmentId() {\r\n return this.props.match.params[routes.planSetup.params!.enrollmentId!.replace(':', '')];\r\n }\r\n\r\n get planId() {\r\n return this.props.match.params[routes.planSetup.params!.planId!.replace(':', '')];\r\n }\r\n\r\n goToCompanyInfo = () => {\r\n const { path, params } = routes.companyInfo;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId).replace(params!.tab!, '1');\r\n this.props.history.push(route);\r\n }\r\n\r\n handlePlanChange = (id: string) => {\r\n const { path, params } = routes.planSetup;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId).replace(params!.planId!, id);\r\n this.props.history.push(route);\r\n\r\n this.setState({loading:true}, this.loadingOff);\r\n };\r\n\r\n handleGoBack = () => {\r\n const { path, params } = routes.planList;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n };\r\n\r\n handlePageChange = (index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n } else {\r\n const { path, params } = routes.planList;\r\n const route = path.replace(params!.companyId!, this.companyId).replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n }\r\n\r\n render() {\r\n const { loading } = this.state;\r\n return (\r\n \r\n
\r\n {this.props.companyName}
\r\n
\r\n \r\n {loading ?\r\n
\r\n

Loading your information

\r\n \r\n
\r\n :\r\n \r\n }\r\n
\r\n );\r\n };\r\n};\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (PlanUpsertBase as any).propTypes = {\r\n plans: PropTypes.arrayOf(PlanPropType),\r\n enrollmentClasses: EnrollmentClassesPropTypes,\r\n employees: EmployeeReducerStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): MappedProps {\r\n return {\r\n plans: state.plan.list,\r\n enrollmentClasses: state.enrollment.enrollmentClasses,\r\n companyName: state.enrollment.company.name,\r\n employees: state.employee\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchPlans: (companyId, enrollmentId) => dispatch(fetchPlans(companyId, enrollmentId)),\r\n fetchEnrollment: (enrollmentId) => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchEnrollmentClasses: (companyId, enrollmentId) => dispatch(fetchEnrollmentClasses(companyId, enrollmentId)),\r\n fetchEmployees: (companyId, enrollmentId) => dispatch(fetchEmployees(companyId, enrollmentId))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PlanUpsertBase);","import { Typography } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, RouteComponentProps } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\nimport { ISecurityTokenOverrideRequest } from 'redux/actions';\r\nimport routes from 'router/routes';\r\nimport auth from 'utility/auth';\r\nimport palette from 'utility/palette';\r\nimport BasePage from '../../components/common/base_page';\r\nimport { Field, reduxForm, InjectedFormProps } from 'redux-form';\r\nimport { TextFormField } from 'components/common/reduxform_fields';\r\nimport { required } from 'utility/form_validation';\r\nimport SaveButton from 'components/common/save_button';\r\n\r\ninterface ComponentProps {\r\n isLoading?: boolean,\r\n showError: boolean\r\n}\r\ninterface FormData extends ISecurityTokenOverrideRequest {\r\n\r\n}\r\ninterface Props extends InjectedFormProps, ComponentProps { };\r\nexport const requiredForSubmission = required('Required for override');\r\nconst OverridePersonaForm = (props: Props) => {\r\n const { handleSubmit, pristine, reset, submitting } = props\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\n

\r\n \r\n

\r\n \r\n

\r\n \r\n

\r\n Override\r\n {props.showError ?\r\n \r\n {Error occurred while getting override token.}\r\n \r\n : undefined\r\n }\r\n\r\n

\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n paper: {\r\n padding: '30px 60px',\r\n backgroundColor: palette.grey.dark,\r\n minHeight: 270\r\n },\r\n error: {\r\n color: palette.red.primary\r\n }\r\n};\r\n\r\nexport default reduxForm({ form: 'OVERRIDE_TOKEN' })(OverridePersonaForm as any);\r\n","import { Typography } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, RouteComponentProps } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\nimport { fetchOverrideToken, ISecurityTokenOverrideRequest, fetchTransformToken } from 'redux/actions';\r\nimport routes from 'router/routes';\r\nimport auth from 'utility/auth';\r\nimport BasePage from '../../components/common/base_page';\r\nimport { required } from 'utility/form_validation';\r\nimport OverridePersonaForm from './override_persona_form'\r\ninterface ComponentProps {\r\n}\r\n//override-using-b2c\r\ninterface DispatchProps {\r\n fetchOverrideToken: (request: ISecurityTokenOverrideRequest, method: string) => Promise;\r\n}\r\nexport const requiredForSubmission = required('Required for override');\r\nconst OverridePersona = (props: DispatchProps) => {\r\n const [redirectUrl, setRedirectUrl] = React.useState(\"\");\r\n const [loading, setLoading] = React.useState(false);\r\n const [showError, setError] = React.useState(false);\r\n\r\n const initialValues: ISecurityTokenOverrideRequest = {\r\n email: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n enrollmentId: \"1\",\r\n employeeId: \"\",\r\n userType: \"3\",\r\n }\r\n\r\n React.useEffect(() => {\r\n auth.handleIdpResponse();\r\n\r\n }, []);\r\n\r\n\r\n React.useEffect(() => {\r\n const isLoggedIn = auth.isMsalLoggedIn();\r\n if (!isLoggedIn) {\r\n auth.logOut();\r\n return;\r\n }\r\n const token: any = auth.decodedMsalJWT;\r\n initialValues.email = token.emails ? token.emails[0] : token.unique_name;\r\n initialValues.firstName = token.given_name ? token.given_name : \"\";\r\n initialValues.lastName = token.family_name ? token.family_name : \"\";\r\n initialValues.employeeId = token.enrollment_employee_id ? token.enrollment_employee_id : \"\";\r\n }, [auth.decodedMsalJWT]);\r\n\r\n const setTokenAndRedirect = (token: string) => {\r\n auth.jwt = token;\r\n setRedirectUrl(routes.loginComplete.path);\r\n }\r\n\r\n const onSubmit = (formValues: any) => {\r\n setLoading(true);\r\n const token: any = auth.decodedMsalJWT;\r\n auth.removeJwt();\r\n\r\n let method = token.emails ? \"override\" : \"override-using-b2c\";\r\n\r\n props.fetchOverrideToken(formValues, method).then((data: any) => {\r\n setTokenAndRedirect(data.token);\r\n auth.overridePersona = JSON.stringify(formValues);\r\n },()=>{\r\n setLoading(false);\r\n setError(true);\r\n });\r\n\r\n }\r\n\r\n if (redirectUrl !== '') {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n
\r\n
\r\n

Override Persona

\r\n

Please override the persona attributes by using the form below.

\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchOverrideToken: (request, method) => dispatch(fetchOverrideToken(request, method)) as Promise\r\n }\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(OverridePersona);","import { Link, Paper } from '@material-ui/core';\r\nimport { workFlowStyles } from 'utility/common_styles';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport SaveButton from 'components/common/save_button';\r\nimport { downloadRenewalImportTemplate } from 'utility/renewal_import_utility';\r\n\r\ninterface ComponentProps {\r\n stepHeader: string;\r\n companyId: string;\r\n enrollmentId: string;\r\n handleSubmit: () => void;\r\n}\r\n\r\ninterface DispatchProps {\r\n fetchRenewalImportTemplate: (companyId: string, enrollmentId: string) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & DispatchProps;\r\n\r\nconst RenewalImportDownloadTemplate = (props: Props) => {\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n {props.stepHeader}\r\n
\r\n
\r\n \r\n Download template to import the current coverage(s) for employees.{' '}\r\n props.fetchRenewalImportTemplate(props.companyId, props.enrollmentId)}>\r\n (download)\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Next\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchRenewalImportTemplate: (companyId, enrollmentId) => dispatch(downloadRenewalImportTemplate(companyId, enrollmentId))\r\n };\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(RenewalImportDownloadTemplate);\r\n","import { Card, IconButton } from '@material-ui/core';\r\nimport React from 'react';\r\nimport palette from 'utility/palette';\r\nimport DocumentIcon from './icons/icon_document';\r\nimport WrappedTooltip from 'components/common/wrapped_tool_tip';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\n\r\ninterface ComponentProps {\r\n fileName: string;\r\n onFileRemoved: () => void;\r\n}\r\n\r\nconst DocumentCard = (props: ComponentProps) => {\r\n return (\r\n \r\n
\r\n \r\n {props.fileName}\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\nconst styles: {[key: string]: React.CSSProperties} = {\r\n marginTop5: {\r\n marginTop: 5\r\n },\r\n card: {\r\n boxShadow: 'none',\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: palette.grey.dark,\r\n marginTop: 20,\r\n height: 80\r\n },\r\n cardBrowseButton: {\r\n boxShadow: 'none',\r\n border: 1,\r\n borderStyle: 'dashed',\r\n borderColor: 'black',\r\n marginTop: 20,\r\n height: 80,\r\n position: 'relative'\r\n },\r\n browseButton: {\r\n marginTop: 22,\r\n marginLeft: '50%',\r\n transform: 'translateX(-50%)'\r\n },\r\n fileIcon: {\r\n color: palette.blue.primary,\r\n fontSize: 60,\r\n position: \"relative\"\r\n },\r\n content: {\r\n marginTop: 10,\r\n marginLeft: 10,\r\n marginBottom: -35,\r\n marginRight: 10,\r\n position: 'relative',\r\n },\r\n textContainer: {\r\n position: 'relative',\r\n bottom: 20,\r\n maxWidth: '50%',\r\n whiteSpace: 'nowrap',\r\n fontSize: 20\r\n },\r\n buttonGroup: {\r\n position: 'absolute',\r\n top: 40,\r\n right: 5,\r\n backgroundColor: 'white'\r\n },\r\n deleteButton: {\r\n height: 10,\r\n width: 10,\r\n position: 'relative'\r\n },\r\n buttonIcon: {\r\n position: 'absolute'\r\n },\r\n}\r\n\r\nexport default DocumentCard;\r\n","import React from 'react';\r\nimport FileUploadButton from 'components/common/file_upload_button';\r\nimport SaveButton from 'components/common/save_button';\r\nimport { Card, Paper, Typography } from '@material-ui/core';\r\nimport { displaySnackbar } from 'redux/actions';\r\nimport { SnackbarVariant } from 'redux/reducers';\r\nimport { connect } from 'react-redux';\r\nimport { workFlowStyles } from 'utility/common_styles';\r\nimport { isExcelFileType } from 'utility/simple_utils';\r\nimport DocumentCard from 'components/common/document_card';\r\n\r\ninterface ComponentProps {\r\n stepHeader: string;\r\n fileName: string | undefined;\r\n handleSubmit: () => void;\r\n onRenewalImportFileSelected: (file: File) => void;\r\n onRenewalImportFileRemoved: () => void;\r\n}\r\n\r\ninterface DispatchProps {\r\n displaySnackbar: (message: string, variant: SnackbarVariant) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & DispatchProps;\r\n\r\nconst RenewalImportUploadFile = (props: Props) => {\r\n const [state, setState] = React.useState({\r\n fileName: props.fileName,\r\n fileSelected: props.fileName !== undefined\r\n });\r\n\r\n const onFileSelected = (event: any) => {\r\n const selectedFile = event.target.files[0] as File;\r\n if(!isExcelFileType(selectedFile.type)){\r\n props.displaySnackbar('Document not uploaded. Only Excel files are accepted.', 'warning');\r\n return;\r\n }\r\n \r\n setState({\r\n fileName: selectedFile.name,\r\n fileSelected: true\r\n });\r\n\r\n props.onRenewalImportFileSelected(selectedFile);\r\n };\r\n\r\n const onFileRemoved = () => {\r\n setState({\r\n fileName: undefined,\r\n fileSelected: false\r\n });\r\n\r\n if (props.onRenewalImportFileRemoved) props.onRenewalImportFileRemoved();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n {props.stepHeader}\r\n
\r\n
\r\n Select the completed current coverage file to upload.\r\n
\r\n
\r\n {state.fileName !== undefined ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n Browse Files\r\n \r\n \r\n \r\n Only .xslx files will be accepted\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n Next\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst styles: {[key: string]: React.CSSProperties} = {\r\n ...workFlowStyles,\r\n marginTop5: {\r\n marginTop: 5\r\n },\r\n cardBrowseButton: {\r\n boxShadow: 'none',\r\n border: 1,\r\n borderStyle: 'dashed',\r\n borderColor: 'black',\r\n marginTop: 20,\r\n height: 80,\r\n position: 'relative'\r\n },\r\n browseButton: {\r\n marginTop: 22,\r\n marginLeft: '50%',\r\n transform: 'translateX(-50%)'\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n displaySnackbar: (message, variant) =>\r\n dispatch(displaySnackbar(message, variant)),\r\n };\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(RenewalImportUploadFile);\r\n","import { Checkbox, Divider, FormControlLabel, Paper } from '@material-ui/core';\r\nimport { workFlowStyles } from 'utility/common_styles';\r\nimport palette from 'utility/palette';\r\nimport Warning from '@material-ui/icons/Warning';\r\nimport SaveButton from 'components/common/save_button';\r\nimport React from 'react';\r\n\r\ninterface ComponentProps {\r\n stepHeader: string;\r\n fileSelected: boolean;\r\n acknowledged: boolean;\r\n inProgressAndCompletedElections: number;\r\n justCompletedElections: number;\r\n onAcknowledgementChanged: (acknowledged: boolean) => void;\r\n handleSubmit: () => void;\r\n}\r\n\r\nconst RenewalImportAcknowledgement = (props: ComponentProps) => {\r\n const [acknowledged, setAcknowledgement] = React.useState(props.acknowledged);\r\n const statusText = props.inProgressAndCompletedElections > 0 \r\n ?
\r\n \r\n \r\n {props.inProgressAndCompletedElections} employee(s) have either started or completed their elections\r\n
\r\n : <>'';\r\n const endText =

\r\n Uploading the current coverage file will overwrite any selections related to \r\n current coverage(s) already confirmed by employees with saved elections.\r\n

\r\n\r\n const onAcknowledged = (event: any) => {\r\n setAcknowledgement(event.target.checked);\r\n props.onAcknowledgementChanged(event.target.checked);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {props.stepHeader}\r\n
\r\n
\r\n

\r\n {statusText}\r\n

\r\n {endText}\r\n

\r\n
\r\n \r\n }\r\n style={styles.marginTop20}\r\n label={'By checking this box, you acknowledge that this import will overwrite any current coverage details employees have already provided.'}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n {!props.fileSelected \r\n && Upload a file in Step #2 to proceed }\r\n \r\n Next\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nconst styles: {[key: string]: React.CSSProperties} = {\r\n ...workFlowStyles,\r\n marginTop20: {\r\n marginTop: 20\r\n },\r\n marginRight10: {\r\n marginRight: 10\r\n },\r\n warningIcon: { \r\n fontSize: 25, \r\n color: palette.orange.primary,\r\n display: 'inline-block',\r\n verticalAlign: 'middle'\r\n },\r\n warningText: {\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n paddingLeft: 5\r\n },\r\n text: {\r\n lineHeight: '1.5'\r\n }\r\n}\r\n\r\nexport default RenewalImportAcknowledgement;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport SaveButton from 'components/common/save_button';\r\nimport { Paper, Table, TableBody, TableCell, TableHead, TableRow } from '@material-ui/core';\r\nimport { workFlowStyles } from 'utility/common_styles';\r\nimport { RenewalImportResult, RenewalImportError, uploadAndProcessRenewalImportFile } from 'utility/renewal_import_utility';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport MessageCard, { MessageCardLevel } from 'components/common/message_card';\r\nimport palette from 'utility/palette';\r\n\r\ninterface ComponentProps {\r\n stepHeader: string;\r\n companyId: string;\r\n enrollmentId: string;\r\n acknowledgementRequired: boolean;\r\n acknowledged: boolean;\r\n renewalImportFile: File | undefined;\r\n disabled: boolean;\r\n onImportCompleted: () => void;\r\n}\r\n\r\ninterface DispatchProps {\r\n handleRenewalImportFile: (\r\n companyId: string,\r\n enrollmentId: string,\r\n acknowledgementRequired: boolean,\r\n acknowledged: boolean,\r\n fileToUpload: File\r\n ) => Promise;\r\n}\r\n\r\ntype Props = ComponentProps & DispatchProps;\r\n\r\nconst RenewalImportReview = (props: Props) => {\r\n const initialState:RenewalImportResult = {\r\n success: false,\r\n errorCategory: 1,\r\n errors: [],\r\n missingFields: [],\r\n additionalFields: [],\r\n electionRenewalSyncError: []\r\n };\r\n const [importInProgress, setImportInProgress] = React.useState(false);\r\n const [importStatus, setImportStatus] = React.useState('not-started');\r\n const [importResult, setImportResult] = React.useState(initialState);\r\n\r\n const onImportSuccessful = (renewalImportResult: RenewalImportResult) => {\r\n setImportInProgress(false);\r\n if (renewalImportResult && renewalImportResult.success) {\r\n setImportStatus('success');\r\n props.onImportCompleted && props.onImportCompleted();\r\n } else {\r\n setImportStatus('failed');\r\n setImportResult(renewalImportResult);\r\n }\r\n };\r\n\r\n const handleSubmit = () => {\r\n if (props.renewalImportFile) {\r\n setImportInProgress(true);\r\n props\r\n .handleRenewalImportFile(props.companyId, props.enrollmentId, props.acknowledgementRequired,\r\n props.acknowledged, props.renewalImportFile\r\n )\r\n .then(onImportSuccessful);\r\n }\r\n };\r\n\r\n const getErrorSummary = () => {\r\n const defaultErrorMsg = 'There were errors during the data import. Correct the errors in your file and try again on Step #2.';\r\n switch (importResult.errorCategory) {\r\n case 1: //Missing Renewal plans\r\n return There are no Renewal Carriers configured in this Enrollment to process this Current Coverage Import.;\r\n case 2: //Validations failed\r\n return {defaultErrorMsg};\r\n case 3: //Empty import file\r\n return The Current Coverage import file is Empty. Please upload the correct file in Step #2.;\r\n case 4: //Invalid Template\r\n const missingFieldsInTemplate = importResult.missingFields.map(field =>
  • {field}
  • );\r\n const additionalFieldsInTemplate = importResult.additionalFields.map(field =>
  • {field}
  • );\r\n return <>\r\n {defaultErrorMsg}\r\n {importResult.missingFields \r\n && !!importResult.missingFields.length\r\n &&

    The following columns are missing from the file uploaded:

      {missingFieldsInTemplate}

    }\r\n {importResult.additionalFields \r\n && !!importResult.additionalFields.length\r\n &&

    The following columns were not expected in the file uploaded:

      {additionalFieldsInTemplate}

    }\r\n Download the most recent template from Step #1 of the Current Coverage Import wizard if needed.\r\n ;\r\n default:\r\n return <>Unexpected error occurred during the data import.;\r\n }\r\n }\r\n\r\n const notStartedView = (\r\n
    \r\n

    \r\n {props.renewalImportFile && props.renewalImportFile.name}\r\n

    \r\n \r\n Import Current Coverage Data\r\n \r\n {props.acknowledgementRequired && !props.acknowledged \r\n &&
    Acknowledge in Step #3 to proceed
    }\r\n
    \r\n );\r\n\r\n const successfulView = (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n The Current Coverage data you uploaded has been sucessfully uploaded for all employees. \r\n \r\n
    \r\n
    \r\n );\r\n\r\n const failedView = (\r\n
    \r\n \r\n {importResult.errors && importResult.errors.length > 0 && (\r\n \r\n

    \r\n Error Summary\r\n
    \r\n {importResult.errors.length} Total Errors\r\n

    \r\n \r\n \r\n \r\n Row\r\n Column\r\n Error\r\n Acceptable Values\r\n \r\n \r\n \r\n {importResult.errors.map((error) => (\r\n \r\n {error.rowNumber ? `${error.rowNumber} - ${error.memberName}` : `${error.memberName}`}\r\n {error.errorColumn}\r\n {error.errorMessage}\r\n {error.acceptableValues}\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n )}\r\n {importResult.electionRenewalSyncError && importResult.electionRenewalSyncError.length > 0 && (\r\n \r\n

    \r\n Error Summary\r\n
    \r\n Unexptected Error Occurred. Elections could not be overwritten for employees. Please reach out to IT support.\r\n

    \r\n
    \r\n )}\r\n
    \r\n );\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n {props.stepHeader}\r\n
    \r\n
    \r\n Import data and review any errors that occurred.\r\n
    \r\n
    \r\n {importStatus === 'not-started' && notStartedView}\r\n {importStatus === 'success' && successfulView}\r\n {importStatus === 'failed' && failedView}\r\n
    \r\n \r\n );\r\n};\r\n\r\nconst styles: {[key:string]: React.CSSProperties} = {\r\n ...workFlowStyles,\r\n centered: {\r\n textAlign: 'center'\r\n },\r\n bigText: {\r\n fontSize: 20\r\n },\r\n successIconContainer: {\r\n borderRadius: '50%',\r\n backgroundColor: palette.green.primary,\r\n color: '#FFFFFF',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n width: 56,\r\n height: 56,\r\n display: 'inlineBlock',\r\n margin: '0 auto'\r\n },\r\n icon: {\r\n fontSize: 48\r\n },\r\n colWidth25:{\r\n width: '25%'\r\n },\r\n colWidth30: {\r\n width: '30%'\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n handleRenewalImportFile: (\r\n companyId: string,\r\n enrollmentId: string,\r\n acknowledgementRequired: boolean,\r\n acknowledged: boolean,\r\n fileToUpload: File\r\n ) =>\r\n dispatch(\r\n uploadAndProcessRenewalImportFile(\r\n companyId,\r\n enrollmentId,\r\n acknowledgementRequired,\r\n acknowledged,\r\n fileToUpload\r\n )\r\n ),\r\n };\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(RenewalImportReview);\r\n","import React from 'react';\r\nimport routes from '../../router/routes';\r\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\r\nimport BasePage from '../../components/common/base_page';\r\nimport Breadcrumb from 'components/common/breadcrumb';\r\nimport Title from 'components/common/title';\r\nimport { ReduxState } from 'redux/store';\r\nimport { EnrollmentReducerState, EmployeeReducerState, PlanReducerState } from 'redux/reducers';\r\nimport { connect } from 'react-redux';\r\nimport { fetchEmployees, fetchEnrollment, fetchPlans } from 'redux/actions';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport DynamicStepper, { IStep } from 'components/common/dynamic_stepper';\r\nimport StepCircle2 from 'components/common/step_circle2';\r\nimport { getLookupId, LOOKUP_TYPE_IDS } from 'utility';\r\nimport RenewalImportDownloadTemplate from './renewal_import_download_template';\r\nimport RenewalImportUploadFile from './renewal_import_upload_file';\r\nimport RenewalImportAcknowledgement from './renewal_import_acknowledgement';\r\nimport RenewalImportReview from './renewal_import_review';\r\n\r\ninterface RenewalImportRouterProps {\r\n company_id: string;\r\n enrollment_id: string;\r\n}\r\n\r\ninterface StateProps {\r\n enrollmentState: EnrollmentReducerState;\r\n planState: PlanReducerState,\r\n employeeState: EmployeeReducerState;\r\n}\r\n\r\ninterface DispatchProps {\r\n fetchEnrollment: (enrollmentId: string) => Promise;\r\n fetchPlans: (companyId: string, enrollmentId: string) => Promise;\r\n fetchEmployees: (companyId: string, enrollmentId: string) => Promise;\r\n}\r\n\r\ntype Props = RouteComponentProps &\r\n StateProps &\r\n DispatchProps;\r\n\r\ninterface State {\r\n loading: boolean;\r\n includeAcknowledgementStep: boolean;\r\n inProgressAndCompletedElectionsCount: number;\r\n completedElectionsCount: number;\r\n renewalImportSteps: IStep[];\r\n activeStep: number | undefined;\r\n completedSteps: Set;\r\n renewalImportFile: File | undefined;\r\n fileSelected: boolean;\r\n acknowledged: boolean;\r\n importComplete: boolean;\r\n}\r\n\r\nclass RenewalImport extends React.Component {\r\n companyId: string;\r\n enrollmentId: string;\r\n breadCrumb = ['Dashboard', 'Import Current Coverage'];\r\n downloadStepId = 1;\r\n uploadStepId = 2;\r\n acknowledgementStepId = 3;\r\n reviewStepId = 4;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n includeAcknowledgementStep: false,\r\n inProgressAndCompletedElectionsCount: 0,\r\n completedElectionsCount: 0,\r\n renewalImportSteps: [],\r\n activeStep: 0,\r\n completedSteps: new Set([this.downloadStepId]),\r\n renewalImportFile: undefined,\r\n fileSelected: false,\r\n acknowledged: false,\r\n importComplete: false\r\n };\r\n\r\n this.companyId = props.match.params.company_id;\r\n this.enrollmentId = props.match.params.enrollment_id;\r\n }\r\n\r\n componentDidMount() {\r\n const promises: Promise[] = [];\r\n if (!this.props.enrollmentState.id) {\r\n promises.push(this.props.fetchEnrollment(this.enrollmentId));\r\n }\r\n\r\n if (this.props.planState.list.length === 0) {\r\n promises.push(this.props.fetchPlans(this.companyId, this.enrollmentId));\r\n }\r\n\r\n if (this.props.employeeState.list.length === 0) {\r\n promises.push(\r\n this.props.fetchEmployees(this.companyId, this.enrollmentId)\r\n );\r\n }\r\n\r\n Promise.all(promises).then(this.initState, this.loadingOff);\r\n }\r\n\r\n initState = () => {\r\n const notStartedId = getLookupId('NOTSTARTED', LOOKUP_TYPE_IDS.electionStatus);\r\n const completedId = getLookupId('COMPLETED', LOOKUP_TYPE_IDS.electionStatus);\r\n const renewalQuestionsPendingId = getLookupId('RENEWALQUESTIONSPENDING', LOOKUP_TYPE_IDS.electionStatus);\r\n\r\n const inProgressAndCompletedElectionsCount = this.props.employeeState.list.filter(e => e.electionStatusId !== notStartedId ).length;\r\n const completedElectionsCount = this.props.employeeState.list.filter(e => e.electionStatusId === completedId \r\n || e.electionStatusId === renewalQuestionsPendingId).length;\r\n\r\n const includeAcknowledgementStep = inProgressAndCompletedElectionsCount > 0;\r\n const renewalImportSteps = this.initRenewalImportSteps(includeAcknowledgementStep);\r\n\r\n this.setState({\r\n activeStep: 1,\r\n renewalImportSteps,\r\n includeAcknowledgementStep,\r\n inProgressAndCompletedElectionsCount,\r\n completedElectionsCount,\r\n loading: false\r\n });\r\n }\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n handleBreadCrumbClick = (index: number) => {\r\n if (index === 0) {\r\n const { path, params } = routes.companyDashboard;\r\n const route = path\r\n .replace(params!.companyId!, this.companyId)\r\n .replace(params!.enrollmentId!, this.enrollmentId);\r\n this.props.history.push(route);\r\n }\r\n };\r\n\r\n private initRenewalImportSteps(includeAcknowledgement: boolean): IStep[] {\r\n const steps: IStep[] = [];\r\n const {activeStep} = this.state;\r\n \r\n let stepId = 1;\r\n steps.push(this.buildStep(stepId, 'Download Template', activeStep));\r\n steps.push(this.buildStep(++stepId, 'Upload Current Coverage', activeStep));\r\n \r\n if(includeAcknowledgement)\r\n steps.push(this.buildStep(++stepId, 'Acknowledgement', activeStep));\r\n \r\n steps.push(this.buildStep(++stepId, 'Import and Review', activeStep));\r\n\r\n return steps;\r\n };\r\n\r\n private buildStep(stepId: number, stepLabel: string, activeStep: number | undefined) {\r\n return {\r\n id: stepId,\r\n label: stepLabel,\r\n icon: () => (\r\n \r\n {stepId}\r\n \r\n ),\r\n };\r\n }\r\n\r\n renderStep = (step?: number) => {\r\n //Either file is not selected (OR) Acknowledgement is missing when it is required\r\n const disableReviewStep = !this.state.fileSelected \r\n || (this.state.includeAcknowledgementStep && !this.state.acknowledged);\r\n switch (step) {\r\n case 1:\r\n return (\r\n \r\n );\r\n case 2:\r\n const fileName = this.state.fileSelected ? this.state.renewalImportFile!.name : undefined;\r\n return (\r\n \r\n );\r\n case 3:\r\n if(this.state.includeAcknowledgementStep)\r\n return (\r\n \r\n );\r\n else \r\n return (\r\n \r\n );\r\n case 4: \r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n handleStepClick = (nextStep: number, mobile?: boolean) => {\r\n this.setState(prevState => {\r\n if (nextStep === prevState.activeStep && mobile)\r\n return { activeStep: undefined };\r\n else {\r\n return { activeStep: nextStep };\r\n }\r\n },\r\n () => window.scrollTo(0, 0)\r\n );\r\n };\r\n\r\n handleNextStep = () => {\r\n this.setState((currentStep) => {\r\n let completedSteps = currentStep.completedSteps;\r\n completedSteps.add(currentStep.activeStep!);\r\n return { \r\n completedSteps: completedSteps,\r\n activeStep: currentStep.activeStep! + 1\r\n };\r\n },\r\n () => window.scrollTo(0, 0));\r\n }\r\n\r\n onRenewalImportFileSelected = (file: File) => {\r\n this.setState({\r\n renewalImportFile: file,\r\n fileSelected: true,\r\n completedSteps: new Set([this.downloadStepId, this.uploadStepId])\r\n });\r\n }\r\n\r\n onRenewalImportFileRemoved = () => {\r\n this.setState({\r\n renewalImportFile: undefined,\r\n fileSelected: false,\r\n acknowledged: false,\r\n completedSteps: new Set([this.downloadStepId])\r\n });\r\n }\r\n\r\n onAcknowledgementChanged = (acknowledged: boolean) => {\r\n this.setState({\r\n acknowledged,\r\n completedSteps: acknowledged \r\n ? new Set([this.downloadStepId, this.uploadStepId, this.acknowledgementStepId]) \r\n : new Set([this.downloadStepId, this.uploadStepId])\r\n })\r\n }\r\n\r\n onImportCompleted = () => {\r\n this.setState({\r\n importComplete: true,\r\n completedSteps: new Set([this.downloadStepId, this.uploadStepId, this.acknowledgementStepId, this.reviewStepId]) \r\n })\r\n }\r\n\r\n render() {\r\n const {\r\n loading,\r\n renewalImportSteps,\r\n activeStep,\r\n completedSteps,\r\n importComplete\r\n } = this.state;\r\n return (\r\n \r\n
    \r\n \r\n {this.props.enrollmentState.company.name}\r\n \r\n
    \r\n
    \r\n \r\n {loading ? (\r\n
    \r\n

    Loading your information

    \r\n \r\n
    \r\n ) : (\r\n \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n enrollmentState: state.enrollment,\r\n planState: state.plan,\r\n employeeState: state.employee,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n fetchEnrollment: (enrollmentId) => dispatch(fetchEnrollment(enrollmentId)),\r\n fetchPlans: (companyId, enrollmentId) => dispatch(fetchPlans(companyId, enrollmentId)),\r\n fetchEmployees: (companyId, enrollmentId) => dispatch(fetchEmployees(companyId, enrollmentId))\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withRouter(RenewalImport));\r\n","import ExternalLogin from 'containers/auth/external_login';\r\nimport ExternalLoginComplete from 'containers/auth/external_login_complete';\r\nimport ExternalLoginCompleteUsingToken from 'containers/auth/external_login_using_token';\r\nimport LoginComplete from 'containers/auth/login_complete';\r\nimport LogoutComplete from 'containers/auth/logout_complete';\r\nimport PersonaSelection from 'containers/auth/persona_selection';\r\nimport RenewToken from 'containers/auth/renew_token';\r\nimport SignUp from 'containers/auth/signup';\r\nimport NotFound from 'containers/common/not_found';\r\nimport CompanyInfo from 'containers/company_info/company_info';\r\nimport EnrollmentSummary from 'containers/enrollment_summary/enrollment_summary';\r\nimport GroupApplication from 'containers/group_applications/group_application';\r\nimport KaiserResponseHandler from 'containers/kaiser/kaiser_response_handler';\r\nimport EmployeeInvitationLanding from 'containers/landing_pages/employee_invitation_landing';\r\nimport { securityPolicyTypes } from 'utility/auth_security_types';\r\nimport CensusImport from '../containers/census_import/census_import';\r\nimport CompanyDashboard from '../containers/company_dashboard/company_dashboard';\r\nimport EmployeeInvitations from '../containers/employee_invitations/employee_invitations';\r\nimport DirectToCarrierErrorList from '../containers/group_applications/direct_to_carrier_error_list';\r\nimport GroupApplicationList from '../containers/group_applications/group_application_list';\r\nimport GuidedEnrollment from '../containers/guided_enrollment/guided_enrollment';\r\nimport Home from '../containers/home/home';\r\nimport EmployeeLanding from '../containers/landing_pages/employee_landing';\r\nimport PlanList from '../containers/plan_list/plan_list';\r\nimport PlanSetup from '../containers/plan_setup/plan_setup';\r\nimport OverridePersona from 'containers/auth/override_persona';\r\nimport RenewalImport from 'containers/renewal_import/renewal_import';\r\n\r\ntype RouteParams = 'companyId' | 'enrollmentId' | 'employeeId' | 'planId' | 'emailId' | 'userType' | 'invitationToken' | 'groupSubmissionId' | 'tab' | 'accept' | 'stepId';\r\ntype Route = 'home' | 'notFound' | 'companyDashboard' | 'companyInfo' | 'censusImport' | 'renewalImport' | 'guidedEnrollment' | 'planSetup' | 'planList' | 'employeeInvitations' | 'employeeLanding' | 'employeeSignUp' | 'employerSignUp' | 'employeeWithTokenSignUp' | 'loginComplete' | 'personaSelection' | 'externalLogin' | 'externalLoginComplete' | 'externalLoginCheck' | 'employeeInvitationLanding' | 'groupApplication' | 'diretToCarrierErrors' | 'enrollmentKits' | 'logoutComplete' | 'enrollmentSummary' | 'externalLoginWithToken' | 'kaiserResponse' | 'renewToken' | 'overridePersona';\r\n\r\ntype Routes = {\r\n [key in Route]: {\r\n path: string;\r\n component: any;\r\n exact?: boolean;\r\n params?: { [key in RouteParams]?: string };\r\n permissions?: string[];\r\n blocks?: string[];\r\n }\r\n}\r\nconst routes: Routes = {\r\n home: {\r\n path: '/',\r\n component: Home,\r\n exact: true\r\n },\r\n notFound: {\r\n path: '/not-found',\r\n component: NotFound,\r\n exact: true\r\n },\r\n employeeSignUp: {\r\n path: '/signup/employee',\r\n component: SignUp,\r\n exact: true,\r\n },\r\n employerSignUp: {\r\n path: '/signup/employer',\r\n component: SignUp,\r\n exact: true,\r\n },\r\n employeeWithTokenSignUp: {\r\n path: '/signup/employ-token',\r\n component: SignUp,\r\n exact: true,\r\n },\r\n personaSelection: {\r\n path: '/persona-selection',\r\n component: PersonaSelection,\r\n exact: true,\r\n },\r\n overridePersona: {\r\n path: '/override-persona',\r\n component: OverridePersona,\r\n exact: true,\r\n },\r\n loginComplete: {\r\n path: '/login-complete',\r\n component: LoginComplete,\r\n exact: true\r\n },\r\n externalLogin: {\r\n path: '/external-login',\r\n component: ExternalLogin,\r\n exact: true\r\n },\r\n externalLoginWithToken: {\r\n path: '/external-login-with-token',\r\n component: ExternalLoginCompleteUsingToken,\r\n exact: true\r\n },\r\n logoutComplete: {\r\n path: '/logout-complete',\r\n component: LogoutComplete,\r\n exact: true\r\n },\r\n renewToken: {\r\n path: '/renew-token',\r\n component: RenewToken,\r\n exact: true\r\n },\r\n externalLoginCheck: {\r\n path: '/external-login-check/ut/:userType/eid/:enrollment_id',\r\n component: ExternalLoginComplete,\r\n params: {\r\n userType: ':userType',\r\n enrollmentId: ':enrollment_id'\r\n },\r\n exact: true\r\n },\r\n externalLoginComplete: {\r\n path: '/external-login-complete',\r\n component: ExternalLoginComplete,\r\n exact: true\r\n },\r\n companyDashboard: {\r\n path: '/company/:company_id/enrollment/:enrollment_id',\r\n component: CompanyDashboard,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement]\r\n },\r\n companyInfo: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/info/:tab?',\r\n component: CompanyInfo,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id',\r\n tab: ':tab?'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement]\r\n },\r\n censusImport: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/censusimport',\r\n component: CensusImport,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement]\r\n },\r\n renewalImport: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/renewalimport',\r\n component: RenewalImport,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement]\r\n },\r\n employeeInvitations: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/invitations',\r\n component: EmployeeInvitations,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement]\r\n },\r\n planList: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/plans',\r\n component: PlanList,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentUser]\r\n },\r\n planSetup: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/plan/:plan_id',\r\n component: PlanSetup,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id',\r\n planId: ':plan_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement]\r\n },\r\n employeeLanding: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/employee/:employee_id',\r\n component: EmployeeLanding,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id',\r\n employeeId: ':employee_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentUser],\r\n blocks: [securityPolicyTypes.EnrollmentAdministration, securityPolicyTypes.EnrollmentManagement]\r\n },\r\n guidedEnrollment: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/employee/:employee_id/guided/:step_id?',\r\n component: GuidedEnrollment,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id',\r\n employeeId: ':employee_id',\r\n stepId: ':step_id?'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentUser]\r\n },\r\n employeeInvitationLanding: {\r\n path: '/employeeInvitation/:invitation_token',\r\n component: EmployeeInvitationLanding,\r\n exact: true,\r\n params: {\r\n invitationToken: ':invitation_token'\r\n }\r\n },\r\n groupApplication: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/group-applications',\r\n component: GroupApplicationList,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id',\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement],\r\n },\r\n diretToCarrierErrors: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/group-applications/direct-to-carrier-errors',\r\n component: DirectToCarrierErrorList,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id',\r\n },\r\n },\r\n enrollmentKits: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/group-applications/:group_submission_id',\r\n component: GroupApplication,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id',\r\n groupSubmissionId: ':group_submission_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement],\r\n },\r\n enrollmentSummary: {\r\n path: '/company/:company_id/enrollment/:enrollment_id/summary',\r\n component: EnrollmentSummary,\r\n exact: true,\r\n params: {\r\n companyId: ':company_id',\r\n enrollmentId: ':enrollment_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentManagement]\r\n },\r\n kaiserResponse: {\r\n path: '/kaiser_response/accept/:accept/enrollment/:enrollment_id/employee/:employee_id',\r\n component: KaiserResponseHandler,\r\n exact: true,\r\n params: {\r\n accept: ':accept',\r\n enrollmentId: ':enrollment_id',\r\n employeeId: ':employee_id'\r\n },\r\n permissions: [securityPolicyTypes.EnrollmentUser],\r\n },\r\n};\r\n\r\nexport default routes;","import moment from 'moment';\r\nimport authPolicyValidator from './auth_policy_validator';\r\nimport { enrollmentUserType, I_JWT } from './auth_security_types';\r\nimport { MsalConfig, MsalService } from './msal_wrapper';\r\nimport routes from 'router/routes';\r\nimport { RouteProps } from 'react-router';\r\nimport memoizeOne from 'memoize-one';\r\nimport { transformToken, overrideToken } from 'redux/actions';\r\nimport logger from './logger_utility';\r\nclass Auth {\r\n private authPolicy = {\r\n employeeSignInSignUp: process.env.REACT_APP_EMPLOYEE_SIGN_IN_SIGN_UP_POLICY as string,\r\n employerSignInSignUp: process.env.REACT_APP_EMPLOYER_SIGN_IN_SIGN_UP_POLICY as string,\r\n brokerSignIn: process.env.REACT_APP_BROKER_SIGN_IN_SIGN_UP_POLICY as string,\r\n bmallSignIn: process.env.REACT_APP_BMALL_SIGN_IN_SIGN_UP_POLICY as string,\r\n azureAdLogin: process.env.REACT_APP_AZURE_AD_POLICY as string,\r\n forgotPassword: 'B2C_1_EnrollmentPasswordReset' as string\r\n }\r\n\r\n private sessionStorageKeys = {\r\n externalLoginFlag: \"oe.canvas.login\",\r\n overridePersona: \"oe.override.persona\",\r\n jwtToken: 'oe.token',\r\n msalToken: 'msal.idtoken',\r\n authErrorCd: 'msal.error',\r\n authErrorDescription: 'msal.error.description',\r\n authPolicy: 'oe.current.auth.policy',\r\n redirectUrl: 'oe.redirect.url',\r\n externalLoginRedirectUrl: 'oe.external.login.redirect.url',\r\n originalAuthPolicy: 'oe.original.auth.policy' //This will be set before the password reset flow is started. After this flow is done, we will redirect the the original policy\r\n }\r\n\r\n private config: MsalConfig = {\r\n instance: `https://${process.env.REACT_APP_IDENTITY_REALM}.b2clogin.com/`,\r\n tenant: `${process.env.REACT_APP_IDENTITY_REALM}.onmicrosoft.com`,\r\n policy: this.currentAuthPolicy,\r\n clientId: `${process.env.REACT_APP_B2C_CLIENT_ID}`,\r\n scopes: [`${process.env.REACT_APP_B2C_CLIENT_ID}`],\r\n cacheLocation: 'sessionStorage',\r\n postLogoutRedirectUri: routes.logoutComplete.path,\r\n redirectUrl: routes.loginComplete.path,\r\n popup: false\r\n }\r\n\r\n private get currentAuthPolicy() {\r\n const policy = sessionStorage.getItem(this.sessionStorageKeys.authPolicy);\r\n return policy || '';\r\n }\r\n\r\n get originalAuthPolicy() {\r\n const policy = sessionStorage.getItem(this.sessionStorageKeys.originalAuthPolicy);\r\n return policy || '';\r\n }\r\n\r\n private set currentAuthPolicy(policy: string) {\r\n this.config.policy = policy;\r\n sessionStorage.setItem(this.sessionStorageKeys.authPolicy, policy);\r\n }\r\n\r\n removeJwt() {\r\n sessionStorage.removeItem(this.sessionStorageKeys.jwtToken);\r\n }\r\n get jwt() {\r\n const encodedJWT = sessionStorage.getItem(this.sessionStorageKeys.jwtToken);\r\n return encodedJWT || '';\r\n }\r\n\r\n set jwt(encodedJWT: string) {\r\n sessionStorage.setItem(this.sessionStorageKeys.jwtToken, encodedJWT);\r\n }\r\n\r\n get overridePersona() {\r\n const val = sessionStorage.getItem(this.sessionStorageKeys.overridePersona);\r\n return val || '';\r\n }\r\n\r\n set overridePersona(encodedJWT: string) {\r\n sessionStorage.setItem(this.sessionStorageKeys.overridePersona, encodedJWT);\r\n }\r\n\r\n\r\n get msalJwt() {\r\n const encodedJWT = sessionStorage.getItem(this.sessionStorageKeys.msalToken);\r\n return encodedJWT || '';\r\n }\r\n\r\n set msalJwt(encodedJWT: string) {\r\n sessionStorage.setItem(this.sessionStorageKeys.msalToken, encodedJWT);\r\n }\r\n\r\n get isCanvasLogin() {\r\n const isItCavnvasLogin: any = sessionStorage.getItem(this.sessionStorageKeys.externalLoginFlag);\r\n return isItCavnvasLogin;\r\n }\r\n\r\n set isCanvasLogin(isItCavnvasLogin) {\r\n sessionStorage.setItem(this.sessionStorageKeys.externalLoginFlag, isItCavnvasLogin);\r\n }\r\n get isPasswordResetFlowStarted() {\r\n //Per Docs, this appears to be the only way that you can detect that a user clicked the \"forgot password in B2C\"\r\n //https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-policies\r\n //https://stackoverflow.com/questions/41497158/azure-ad-b2c-self-service-password-reset-link-doesnt-work\r\n const errorCd = sessionStorage.getItem(this.sessionStorageKeys.authErrorCd);\r\n const errorMessage = sessionStorage.getItem(this.sessionStorageKeys.authErrorDescription);\r\n\r\n return errorCd && errorCd !== '' && errorMessage && errorMessage.indexOf('AADB2C90118') > -1;\r\n }\r\n\r\n\r\n get isPasswordResetFlowCanceled() {\r\n const errorCd = sessionStorage.getItem(this.sessionStorageKeys.authErrorCd);\r\n const errorMessage = sessionStorage.getItem(this.sessionStorageKeys.authErrorDescription);\r\n const canceled = errorCd && errorCd !== '' && errorMessage && errorMessage.indexOf('AADB2C90091') > -1;\r\n return canceled;\r\n }\r\n\r\n get isPasswordResetFlowComplete() {\r\n const completedPwReset = this.decodedMsalJWT && this.decodedMsalJWT.tfp === this.authPolicy.forgotPassword;\r\n return completedPwReset;\r\n }\r\n\r\n\r\n get externalLoginRedirectUri() {\r\n const uri = sessionStorage.getItem(this.sessionStorageKeys.externalLoginRedirectUrl);\r\n return uri || '';\r\n }\r\n\r\n set externalLoginRedirectUri(uri: string) {\r\n sessionStorage.removeItem(this.sessionStorageKeys.externalLoginRedirectUrl);\r\n if (uri !== \"\") {\r\n sessionStorage.setItem(this.sessionStorageKeys.externalLoginRedirectUrl, uri);\r\n }\r\n }\r\n\r\n private parseJwtToken(token: string) {\r\n return JSON.parse(atob(token.split('.')[1]));\r\n }\r\n\r\n get decodedJWT() {\r\n const decodedJWT: I_JWT = this.jwt ? this.parseJwtToken(this.jwt) : {};\r\n return decodedJWT;\r\n }\r\n\r\n\r\n get decodedMsalJWT() {\r\n const decodedJWT: I_JWT = this.msalJwt ? this.parseJwtToken(this.msalJwt) : {};\r\n return decodedJWT;\r\n }\r\n\r\n get redirectURL() {\r\n const url = sessionStorage.getItem(this.sessionStorageKeys.redirectUrl);\r\n return url || '';\r\n }\r\n\r\n set redirectURL(url: string) {\r\n if (url)\r\n sessionStorage.setItem(this.sessionStorageKeys.redirectUrl, url);\r\n else\r\n sessionStorage.removeItem(this.sessionStorageKeys.redirectUrl);\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n if (!this.decodedJWT)\r\n return false;\r\n const jwtDate = moment.unix(this.decodedJWT.exp);\r\n const currentDate = moment.utc();\r\n const isLoggedIn = jwtDate.isAfter(currentDate) && this.decodedJWT.enrollment_id !== undefined;\r\n return isLoggedIn;\r\n }\r\n\r\n isMsalLoggedIn(): boolean {\r\n if (!this.decodedMsalJWT)\r\n return false;\r\n const jwtDate = moment.unix(this.decodedMsalJWT.exp);\r\n const currentDate = moment.utc();\r\n const isLoggedIn = jwtDate.isAfter(currentDate);\r\n return isLoggedIn;\r\n }\r\n\r\n getEnrollmentId(): string {\r\n if (!this.decodedJWT)\r\n return \"\";\r\n return this.decodedJWT.enrollment_id;\r\n }\r\n\r\n getUserName() {\r\n if (!this.decodedJWT)\r\n return \"\";\r\n return this.decodedJWT.unique_name;\r\n }\r\n\r\n isFirstTimeLogin() {\r\n if (!this.decodedJWT)\r\n return false;\r\n return this.decodedJWT.newUser === true;\r\n }\r\n\r\n\r\n getDisplayName() {\r\n if (!this.decodedJWT)\r\n return \"\";\r\n return this.decodedJWT.displayName;\r\n }\r\n\r\n private hasRole(roleId: string) {\r\n if (!this.decodedJWT)\r\n return false;\r\n return this.decodedJWT.enrollment_user_type === roleId;\r\n }\r\n\r\n clearSessionStorage() {\r\n sessionStorage.clear();\r\n }\r\n\r\n\r\n isUserEmployee() {\r\n return this.hasRole(enrollmentUserType.EnrollmentUser);\r\n }\r\n\r\n isUserEmployer() {\r\n return this.hasRole(enrollmentUserType.EnrollmentManager);\r\n }\r\n\r\n isUserEnrollmentManager() {\r\n return this.hasRole(enrollmentUserType.EnrollmentAdmin);\r\n }\r\n\r\n _isSuperAdmin = memoizeOne(() => {\r\n return this.hasRole(enrollmentUserType.EnrollmentSuperAdmin);\r\n });\r\n\r\n isUserEnrollmentSuperAdmin() {\r\n return this._isSuperAdmin()\r\n }\r\n\r\n hasPermission(permissions: string[], blocks: string[], routeParams: RouteProps) {\r\n var isValid = false;\r\n if (routeParams && routeParams['computedMatch']) {\r\n const computedParams = routeParams['computedMatch'].params;\r\n // If even one policy matches return true.\r\n permissions.forEach((policy) => {\r\n if (authPolicyValidator.assertPolicy(policy, this.decodedJWT)) {\r\n isValid = true;\r\n }\r\n })\r\n\r\n // if any block exist\r\n if (blocks) {\r\n blocks.forEach((block) => {\r\n if (authPolicyValidator.assertBlocks(block, this.decodedJWT)) {\r\n isValid = false;\r\n }\r\n })\r\n }\r\n\r\n // If enrollment id is valid\r\n isValid = isValid && authPolicyValidator.assertEnrollmentId(computedParams.enrollment_id, this.decodedJWT);\r\n\r\n // If the user is an employee\r\n if (isValid && this.isUserEmployee()) {\r\n isValid = authPolicyValidator.assertEmployeeId(computedParams.employee_id, this.decodedJWT);\r\n }\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n private getQueryParamForSignUp(signUpToken: string) {\r\n var client_assertion_type = encodeURIComponent(\"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\");\r\n var jwtQueryParams = \"client_assertion_type=\" +\r\n client_assertion_type +\r\n \"&client_assertion=\" +\r\n signUpToken +\r\n \"&allowSignUp=true\";\r\n return jwtQueryParams;\r\n }\r\n\r\n signUpEmployee(signUpToken: string) {\r\n this.config.policy = this.authPolicy.employeeSignInSignUp;\r\n var ms = new MsalService(this.config);\r\n var jwtQueryParams = this.getQueryParamForSignUp(signUpToken);\r\n\r\n return ms.idpRedirect(jwtQueryParams);\r\n }\r\n\r\n\r\n signUpEmployer(signUpToken: string) {\r\n this.currentAuthPolicy = this.authPolicy.employerSignInSignUp;\r\n var ms = new MsalService(this.config);\r\n var jwtQueryParams = this.getQueryParamForSignUp(signUpToken);\r\n return ms.idpRedirect(jwtQueryParams);\r\n }\r\n\r\n forgotPassword() {\r\n sessionStorage.setItem(this.sessionStorageKeys.originalAuthPolicy,\r\n sessionStorage.getItem(this.sessionStorageKeys.authPolicy) || '');\r\n this.currentAuthPolicy = this.authPolicy.forgotPassword as string;\r\n var ms = new MsalService(this.config);\r\n return ms.idpRedirect();\r\n }\r\n\r\n loginUser(policyName: string) {\r\n if (policyName === this.authPolicy.employerSignInSignUp) {\r\n return this.loginEmployer();\r\n }\r\n else {\r\n return this.loginEmployee();\r\n }\r\n }\r\n\r\n\r\n loginEmployee() {\r\n this.currentAuthPolicy = this.authPolicy.employeeSignInSignUp;\r\n var ms = new MsalService(this.config);\r\n return ms.idpRedirect();\r\n }\r\n\r\n loginEmployer() {\r\n this.currentAuthPolicy = this.authPolicy.employerSignInSignUp;\r\n var ms = new MsalService(this.config);\r\n return ms.idpRedirect();\r\n\r\n }\r\n\r\n loginEmployeeOverride() {\r\n this.currentAuthPolicy = this.authPolicy.employeeSignInSignUp;\r\n this.config.redirectUrl = routes.overridePersona.path;\r\n var ms = new MsalService(this.config);\r\n return ms.idpRedirect();\r\n }\r\n\r\n loginOverride() {\r\n this.currentAuthPolicy = this.authPolicy.azureAdLogin;\r\n this.config.redirectUrl = routes.overridePersona.path;\r\n var ms = new MsalService(this.config);\r\n return ms.idpRedirect();\r\n }\r\n\r\n loginExternal(signUpToken: string, policy: string) {\r\n this.config.redirectUrl = routes.externalLoginComplete.path;\r\n this.currentAuthPolicy = policy;\r\n var ms = new MsalService(this.config);\r\n var jwtQueryParams = this.getQueryParamForSignUp(signUpToken);\r\n return ms.idpRedirect(jwtQueryParams);\r\n }\r\n\r\n initiateExternalLogin(externalToken: string, returnUri: string): Promise {\r\n if (externalToken === null || returnUri === null) {\r\n return Promise.reject(new Error('Missing External Token or Return URI'));\r\n }\r\n this.clearSessionStorage();\r\n this.externalLoginRedirectUri = returnUri;\r\n var parsedToken = this.parseJwtToken(externalToken);\r\n if (parsedToken.enrollment_user_type_id === enrollmentUserType.EnrollmentSuperAdmin) {\r\n return this.loginExternal(externalToken, this.authPolicy.bmallSignIn);\r\n } else {\r\n return this.loginExternal(externalToken, this.authPolicy.brokerSignIn);\r\n }\r\n }\r\n\r\n\r\n refreshToken(): any {\r\n this.config.redirectUrl = routes.renewToken.path;\r\n this.config.navigateToLoginRequestUrl = false;\r\n var ms = new MsalService(this.config);\r\n return ms.getToken().then(() => {\r\n if (auth.overridePersona === '') {\r\n transformToken().then((data: any) => {\r\n auth.jwt = data.token;\r\n logger.log(\"jwt token renewed\", data.token);\r\n });\r\n } else {\r\n const method = this.currentAuthPolicy === this.authPolicy.azureAdLogin ? \"override\" : \"override-using-b2c\";\r\n const overrideRequest = JSON.parse(auth.overridePersona);\r\n overrideToken(overrideRequest, method).then((data: any) => {\r\n auth.jwt = data.token;\r\n logger.log(\"override jwt token renewed\", data.token);\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleIdpResponse() {\r\n var ms = new MsalService(this.config);\r\n return ms;\r\n }\r\n\r\n logOut(): any {\r\n this.config.policy = this.authPolicy.employerSignInSignUp;\r\n this.config.postLogoutRedirectUri = routes.logoutComplete.path;\r\n var ms = new MsalService(this.config);\r\n ms.logout();\r\n }\r\n}\r\n\r\nconst auth = new Auth();\r\n\r\nexport default auth;","import auth from \"./auth\";\r\nimport { isIE } from \"./browser_utils\";\r\nimport sessionUtility from \"./session_utility\";\r\nimport { telemetryService } from \"./telemetry\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { displaySnackbarWithErrors } from \"redux/actions\";\r\nexport interface HttpOptions {\r\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\r\n headers?: { [key: string]: string };\r\n mode?: 'navigate' | 'same-origin' | 'no-cors' | 'cors' | undefined;\r\n cache?: | 'default' | 'no-store' | 'reload' | 'no-cache' | 'force-cache'\r\n body?: string | FormData;\r\n}\r\nexport interface ValidationError {\r\n target?: string;\r\n message: string;\r\n level: number;\r\n}\r\nexport interface HttpResponse {\r\n statusCode: number;\r\n responseMessage: string;\r\n data: any;\r\n validationErrors?: ValidationError[]\r\n}\r\n\r\nexport default async function http(endpoint: string, options?: HttpOptions, token?: string) {\r\n const callChainId = uuidv4();\r\n sessionUtility.setLastActivityTime();\r\n const jwt = token ? token : auth.jwt;\r\n const fetchOptions: HttpOptions = options || { method: 'GET' };\r\n const fetchHeaders = {\r\n ...fetchOptions.headers,\r\n Authorization: `Bearer ${jwt}`,\r\n Accept: 'application/json'\r\n };\r\n //IE no cache headers\r\n if (isIE()) {\r\n fetchHeaders['Cache-Control'] = 'no-cache';\r\n fetchHeaders['Pragma'] = 'no-cache';\r\n }\r\n //------\r\n if (options && typeof options.body === 'string') {\r\n fetchHeaders['Content-Type'] = 'application/json';\r\n }\r\n\r\n fetchOptions.headers = fetchHeaders;\r\n const fullURL = process.env.REACT_APP_API_ENDPOINT + endpoint;\r\n\r\n const response = await fetch(fullURL, fetchOptions);\r\n const json = await response.json() as HttpResponse;\r\n\r\n if (json.statusCode >= 400) {\r\n // console.error(json)\r\n throw json;\r\n } else {\r\n //To overcome apiMilddleware bypass for employees load in dashboard\r\n if(json.data)\r\n return json.data;\r\n else\r\n return json;\r\n }\r\n}","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport http from '../../utility/http';\r\nimport { CarrierList, Lookup, RawLookup } from '../reducers';\r\nimport { displaySnackbarWithErrors } from './app_actions';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\n//Store Lookup Values Action Creator\r\nexport const storeLookups = acFactory('STORE_LOOKUPS');\r\n\r\n//Fetch Lookups Thunk\r\nexport function fetchLookups() {\r\n return async (dispatch: any) => {\r\n let rawLookups: RawLookup[] = [];\r\n const cachedLookups = sessionStorage.getItem('lookups');\r\n\r\n if (!cachedLookups) {\r\n rawLookups = await http(`values`) as RawLookup[];\r\n sessionStorage.setItem('lookups', JSON.stringify(rawLookups));\r\n } else {\r\n rawLookups = JSON.parse(cachedLookups);\r\n }\r\n\r\n const lookups: Lookup = {};\r\n rawLookups.forEach(item => {\r\n const { id, ...val } = item;\r\n val.secondValue = parseSecondValue(item);\r\n lookups[Number(id)] = val;\r\n });\r\n\r\n dispatch(storeLookups(lookups));\r\n };\r\n}\r\n\r\nconst parseSecondValue = (item: RawLookup) => {\r\n return item.additionalDataJson ? JSON.parse(item.additionalDataJson)[\"SecondValue\"] : undefined;\r\n};\r\n\r\nexport const storeCarriers = acFactory('STORE_CARRIERS');\r\n\r\nexport function getCarriers(stateId: number, stateName: string, lineOfCoverageId: number) {\r\n return async (dispatch: any) => {\r\n try {\r\n const carriers: CarrierList[] = await http(`values/carriers?stateId=${stateId}&stateName=${stateName}&lineOfCoverageId=${lineOfCoverageId}`);\r\n dispatch(storeCarriers(carriers));\r\n } catch (ex) {\r\n dispatch(displaySnackbarWithErrors(ex, 'Could not load carriers'));\r\n }\r\n }\r\n}","import actionCreatorFactory from 'redux-typescript-actions';\r\nimport http from '../../utility/http';\r\nimport { RawSetting, Setting } from '../reducers';\r\n\r\nconst acFactory = actionCreatorFactory();\r\n\r\n//Store Lookup Values Action Creator\r\nexport const storeSettings = acFactory('STORE_SETTINGS');\r\n\r\n//Fetch Lookups Thunk\r\nexport function fetchSettings() {\r\n return async (dispatch: any) => {\r\n let rawSettings: RawSetting[] = [];\r\n const cachedSettings = sessionStorage.getItem('settings');\r\n\r\n if (!cachedSettings) {\r\n rawSettings = await http(`settings`) as RawSetting[];\r\n sessionStorage.setItem('settings', JSON.stringify(rawSettings));\r\n } else {\r\n rawSettings = JSON.parse(cachedSettings);\r\n }\r\n\r\n const settings: Setting = {};\r\n rawSettings.forEach(item => {\r\n const { id, ...val } = item;\r\n settings[Number(id)] = val;\r\n });\r\n\r\n dispatch(storeSettings(settings));\r\n };\r\n}","import { applyMiddleware, combineReducers, createStore, compose } from 'redux';\r\nimport { reducer as formReducer } from 'redux-form';\r\nimport thunk from 'redux-thunk';\r\nimport { fetchLookups, fetchSettings } from './actions';\r\nimport { appReducer, AppReducerState, censusImportReducer, CensusImportReducerState, employeeReducer, EmployeeReducerState, enrollmentReducer, EnrollmentReducerState, groupSubmissionReducer, GroupSubmissionReducerState, lookupReducer, LookupReducerState, planReducer, PlanReducerState, settingsReducer, SettingsReducerState } from './reducers';\r\nimport { costCalculationReducer, CostCalculationReducerState } from './reducers/cost_calculation_reducer';\r\nimport { zipCodeReducer, ZipCodeReducerState } from './reducers/zipcode_reducer';\r\nimport { EnrollmentNotificationState, enrollmentNotificationReducer } from './reducers/enrollment_notification_reducer';\r\n\r\nexport interface ReduxState {\r\n form: any,\r\n app: AppReducerState,\r\n employee: EmployeeReducerState,\r\n enrollment: EnrollmentReducerState,\r\n groupSubmission: GroupSubmissionReducerState,\r\n plan: PlanReducerState,\r\n settings: SettingsReducerState,\r\n lookup: LookupReducerState,\r\n costCalculation: CostCalculationReducerState,\r\n censusImport: CensusImportReducerState,\r\n counties: ZipCodeReducerState,\r\n enrollmentNotifications: EnrollmentNotificationState,\r\n}\r\n\r\nconst combinedReducers = combineReducers({\r\n form: formReducer,\r\n app: appReducer,\r\n employee: employeeReducer,\r\n enrollment: enrollmentReducer,\r\n groupSubmission: groupSubmissionReducer,\r\n plan: planReducer,\r\n settings: settingsReducer,\r\n lookup: lookupReducer,\r\n costCalculation: costCalculationReducer,\r\n censusImport: censusImportReducer,\r\n counties: zipCodeReducer,\r\n enrollmentNotifications: enrollmentNotificationReducer\r\n});\r\n\r\nconst composeEnhancers = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\nconst store = createStore(combinedReducers, composeEnhancers(applyMiddleware(thunk)));\r\n\r\nstore.dispatch(fetchLookups() as any);\r\nstore.dispatch(fetchSettings() as any);\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (window as any).reduxStore = store;\r\n}\r\n\r\nexport default store;","import React, { ReactNode, ReactElement } from 'react';\r\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\r\nimport scrollUtility from 'utility/scroll_utility';\r\nimport ReactGA from 'react-ga'\r\nimport { withTelemetry, WithTelemetry } from 'utility/telemetry';\r\n\r\ninterface ComponentProps {\r\n children: ReactElement\r\n}\r\n\r\ntype Props = RouteComponentProps & WithTelemetry & ComponentProps\r\n\r\nconst ScrollToTop = (props: Props) => {\r\n React.useEffect(() => {\r\n scrollUtility.scrollToTop();\r\n props.telemetryService.trackPageView(props.location.pathname);\r\n ReactGA.set({ page: props.location.pathname });\r\n ReactGA.pageview(props.location.pathname)\r\n }, [ props.location.pathname ])\r\n\r\n return props.children;\r\n}\r\n\r\nexport default withTelemetry(withRouter(ScrollToTop));","import Button, { ButtonProps } from '@material-ui/core/Button';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport { Redirect, withRouter, RouteComponentProps } from 'react-router';\r\nimport BasePage from '../../components/common/base_page';\r\nimport { withTelemetry, WithTelemetry } from 'utility/telemetry';\r\n\r\ninterface ComponentProps {\r\n data: {\r\n header: string,\r\n message: string,\r\n route: string,\r\n buttonText: string\r\n },\r\n status: number\r\n}\r\ntype Props = ComponentProps & ButtonProps & RouteComponentProps & WithTelemetry;\r\n\r\ninterface State {\r\n redirectUrl: string\r\n}\r\n\r\nclass UnauthorizedScreen extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n redirectUrl: ''\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.telemetryService.trackEvent({\r\n name: '401',\r\n properties: {\r\n pathname: this.props.history.location.pathname\r\n }\r\n })\r\n }\r\n\r\n componentDidUpdate(prevProps: Props, prevState: State) {\r\n\r\n }\r\n\r\n setBackUrl() {\r\n this.setState({ redirectUrl: this.props.data.route });\r\n }\r\n\r\n render() {\r\n if (this.state.redirectUrl !== \"\") {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n
    \r\n
    {this.props.status}
    \r\n
    Stop right there!
    \r\n
    \r\n
    {this.props.data.header}
    \r\n
    {this.props.data.message}
    \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\nconst styles: { [key: string]: CSSProperties } = {\r\n root: {\r\n textAlign: 'center'\r\n },\r\n _401: {\r\n height: '112px',\r\n color: '#007BC3',\r\n fontFamily: 'Roboto',\r\n fontSize: '96px',\r\n fontWeight: 'bold',\r\n letterSpacing: '-1.5',\r\n lineHeight: '112px',\r\n textAlign: 'center',\r\n marginTop: '80px'\r\n },\r\n stop_right_there: {\r\n height: '71px',\r\n color: '#007BC3',\r\n fontFamily: 'Roboto',\r\n fontSize: '60px',\r\n fontWeight: 300,\r\n letterSpacing: '-0.5px',\r\n lineHeight: '71px',\r\n textAlign: 'center'\r\n },\r\n you_re_not_authorize: {\r\n height: '28px',\r\n color: 'rgba(0,0,0,0.87)',\r\n fontFamily: 'Roboto',\r\n fontSize: '24px',\r\n lineHeight: '28px',\r\n textAlign: 'center',\r\n marginTop: '64px'\r\n },\r\n button: {\r\n marginTop: '80px',\r\n },\r\n button_text: {\r\n height: '16px',\r\n width: '273px',\r\n color: '#FFFFFF',\r\n fontFamily: 'Roboto',\r\n fontSize: '14px',\r\n fontWeight: 500,\r\n letterSpacing: '1px',\r\n lineHeight: '16px',\r\n textAlign: 'center'\r\n }\r\n}\r\nexport default withRouter(withTelemetry(UnauthorizedScreen));","import Button from '@material-ui/core/Button';\r\nimport React from 'react';\r\nimport { RouteComponentProps, withRouter } from 'react-router';\r\nimport BasePage from 'components/common/base_page';\r\nimport palette from 'utility/palette';\r\n\r\nconst ErrorScreen = React.memo((props: RouteComponentProps) => {\r\n return (\r\n \r\n
    \r\n
    Something went wrong
    \r\n
    \r\n Whoops! Something unexpected has happened.\r\n
    \r\n
    \r\n If this problem continues, please contact BenefitMall or your broker.\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n});\r\n\r\nconst styles: { [key: string]: React.CSSProperties } = {\r\n root: {\r\n textAlign: 'center',\r\n fontFamily: 'Roboto'\r\n },\r\n error: {\r\n color: palette.blue.primary,\r\n fontSize: 60,\r\n fontWeight: 'bold',\r\n textAlign: 'center',\r\n marginTop: 80\r\n },\r\n explanation: {\r\n margin: '20px 0',\r\n color: palette.grey.midText,\r\n fontSize: 16\r\n },\r\n button: {\r\n width: 400,\r\n marginTop: 30\r\n }\r\n};\r\n\r\nexport default withRouter(ErrorScreen);","import { Button, DialogActions, DialogContent } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Redirect, Route, RouteProps } from 'react-router';\r\nimport BaseDialog from 'components/common/base_dialog';\r\nimport UnauthorizedScreen from 'containers/common/unauthorized_screen';\r\nimport routes from 'router/routes';\r\nimport auth from 'utility/auth';\r\nimport ErrorScreen from '../common/error_screen';\r\nimport sessionUtility from 'utility/session_utility';\r\nimport { withTelemetry, WithTelemetry } from 'utility/telemetry';\r\n\r\ninterface ComponentProps {\r\n permissions: string[];\r\n blocks: string[];\r\n}\r\n\r\ntype Props = ComponentProps & RouteProps & WithTelemetry;\r\n\r\ninterface State {\r\n hasError: boolean;\r\n sessionExpirationDialogOpen: boolean;\r\n forceLogin: boolean;\r\n}\r\n\r\nclass AuthRoute extends React.PureComponent{\r\n timoutRef: any;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n hasError: false,\r\n sessionExpirationDialogOpen: false,\r\n forceLogin: false,\r\n }\r\n }\r\n\r\n componentDidCatch(error: any, info: any) {\r\n this.props.telemetryService.trackError(error);\r\n //This will turn AuthRoute into an Error Boundary Component\r\n this.setState({ hasError: true });\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n if (auth.isLoggedIn()) {\r\n this.setAuth()\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (auth.isLoggedIn()) {\r\n sessionUtility.slideSession(this.onSessionExpire, this.onSessionExpireWarning);\r\n this.setAuth()\r\n }\r\n }\r\n\r\n setAuth() {\r\n const { permissions, blocks, ...routeProps } = this.props;\r\n const authorized = auth.hasPermission(permissions, blocks, routeProps);\r\n if (authorized) {\r\n var userName = auth.getUserName();\r\n this.props.telemetryService.setAuthenticatedUserContext(userName);\r\n }\r\n }\r\n\r\n private onSessionExpireWarning = () => {\r\n this.setState({ sessionExpirationDialogOpen: true });\r\n }\r\n\r\n\r\n private onSessionExpire = () => {\r\n auth.logOut();\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.timoutRef)\r\n clearTimeout(this.timoutRef);\r\n }\r\n\r\n refreshToken = () => {\r\n auth.refreshToken().then(() => {\r\n sessionUtility.slideSession(this.onSessionExpire, this.onSessionExpireWarning);\r\n });\r\n this.setState({ sessionExpirationDialogOpen: false });\r\n };\r\n\r\n logout = () => {\r\n auth.logOut();\r\n };\r\n\r\n unauthorizedMessage = (): { header: string, message: string, buttonText: string, route: string } => {\r\n if (auth.isUserEmployee()) {\r\n return {\r\n header: `This page contains information you’re not authorized to see.`,\r\n message: `Please contact your employer with any questions.`,\r\n route: routes.loginComplete.path,\r\n buttonText: 'Back to Home'\r\n }\r\n } else if (auth.isUserEmployer()) {\r\n return {\r\n header: `This page contains information you’re not authorized to see.`,\r\n message: 'Please contact your broker or BenefitMall with any questions.',\r\n route: routes.loginComplete.path,\r\n buttonText: 'Back to the Dashboard'\r\n }\r\n } else if (auth.isUserEnrollmentManager()) {\r\n return {\r\n header: 'This page contains information you’re not authorized to see.',\r\n message: 'Please contact BenefitMall with any questions.',\r\n route: routes.loginComplete.path,\r\n buttonText: 'Back to the Dashboard'\r\n }\r\n } else if (auth.isUserEnrollmentSuperAdmin()) {\r\n return {\r\n header: 'This page contains information you’re not authorized to see.',\r\n message: '',\r\n route: routes.loginComplete.path,\r\n buttonText: 'Back to Home'\r\n }\r\n } else {\r\n return {\r\n header: 'This page contains information you’re not authorized to see.',\r\n message: '',\r\n route: routes.loginComplete.path,\r\n buttonText: 'Back to Home'\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { permissions, blocks, ...routeProps } = this.props;\r\n const authorized = auth.hasPermission(permissions, blocks, routeProps);\r\n const { hasError, sessionExpirationDialogOpen, forceLogin } = this.state;\r\n\r\n if (routeProps.location!.pathname !== routes.home.path && (!auth.isLoggedIn() || forceLogin)) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n else if (auth.redirectURL) {\r\n //We intend to redirect someplace\r\n const redirectURL = auth.redirectURL;\r\n auth.redirectURL = '';\r\n return (\r\n \r\n );\r\n }\r\n\r\n else if (hasError) {\r\n //React crashed\r\n return (\r\n \r\n );\r\n }\r\n\r\n else if (authorized) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n Your Session is about to expire, would you like to stay logged in?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n else {\r\n //Unauthorized\r\n return (\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default withTelemetry(AuthRoute);","import React from 'react';\r\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\r\n\r\nconst PriorityCircle = (props: SvgIconProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PriorityCircle;","import Snackbar, { SnackbarOrigin } from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { SnackbarState, SnackbarStatePropType, SnackbarVariant } from 'redux/reducers';\r\nimport { ReduxState } from 'redux/store';\r\nimport canvasUtil from 'utility/canvas_util';\r\nimport palette from 'utility/palette';\r\nimport PriorityCircle from './icons/icon_circle_priority';\r\nimport { Button, IconButton } from '@material-ui/core';\r\nimport * as qs from 'utility/query_string_util';\r\nimport routes from 'router/routes';\r\nimport SaveButton from './save_button';\r\nimport { updateSystemErrors } from 'redux/actions';\r\n\r\ninterface ComponentProps { }\r\n\r\ninterface StateProps {\r\n snackbarState: SnackbarState;\r\n}\r\n\r\ninterface DispatchProps {\r\n updateSystemErrors: (errors: string[]) => Promise;\r\n}\r\n\r\ntype Props = StateProps & DispatchProps & ComponentProps\r\n\r\nconst GlobalSnackbar = React.memo((props: Props) => {\r\n let config = props.snackbarState;\r\n const anchor: SnackbarOrigin = canvasUtil.isCanvas() ? { vertical: 'top', horizontal: 'right' } : ((config.variant && config.variant === \"error\") ? { vertical: 'top', horizontal: 'left' } : { vertical: 'bottom', horizontal: 'left' } );\r\n \r\n\r\n function updateErrors(){\r\n config.open = false;\r\n props.updateSystemErrors(config.errors || [])\r\n }\r\n\r\n return (\r\n \r\n \r\n {config.variant && config.variant !== \"error\" ? : }\r\n\r\n {config.message}\r\n\r\n {config.variant && config.variant === \"error\" && config.errors && config.errors.length > 0 ?\r\n <>\r\n \r\n View Errors\r\n \r\n \r\n :undefined\r\n }\r\n
    \r\n }\r\n style={config.variant && styles[config.variant]}\r\n />\r\n \r\n );\r\n});\r\n\r\nconst styles: { [key in SnackbarVariant]: React.CSSProperties } = {\r\n info: {\r\n backgroundColor: palette.blue.primary\r\n },\r\n success: {\r\n backgroundColor: palette.green.notification\r\n },\r\n error: {\r\n backgroundColor: palette.red.primary\r\n },\r\n warning: {\r\n backgroundColor: palette.orange.primary\r\n },\r\n deletion: {\r\n backgroundColor: palette.grey.snackbar\r\n }\r\n};\r\n\r\nconst myStyles: { [key: string]: React.CSSProperties } = {\r\n checkmark: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: \"20px\"\r\n },\r\n flex: {\r\n display: \"flex\",\r\n alignItems: 'center',\r\n }\r\n}\r\n\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n (GlobalSnackbar as any).propTypes = {\r\n snackbarState: SnackbarStatePropType\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ReduxState): StateProps {\r\n return {\r\n snackbarState: state.app.snackbar\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: any): DispatchProps {\r\n return {\r\n updateSystemErrors: (errors: string[]) => dispatch(updateSystemErrors(errors))\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(GlobalSnackbar);","import MomentUtils from '@date-io/moment';\r\nimport { createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport React from 'react';\r\nimport 'react-placeholder/lib/reactPlaceholder.css';\r\nimport { Provider, connect } from 'react-redux';\r\nimport { Route, Switch } from 'react-router';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport store, { ReduxState } from 'redux/store';\r\nimport routes from 'router/routes';\r\nimport canvasUtil from 'utility/canvas_util';\r\nimport palette from 'utility/palette';\r\nimport ScrollToTop from '../../components/common/scroll_to_top';\r\nimport AuthRoute from '../auth/auth_route';\r\nimport NotFound from '../common/not_found';\r\nimport GlobalSnackbar from 'components/common/global_snackbar';\r\nimport sessionUtility from 'utility/session_utility';\r\nimport { TelemetryProvider, TelemetryService, telemetryService } from 'utility/telemetry';\r\n\r\nexport const theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: palette.blue.primary,\r\n light: palette.blue[500],\r\n dark: palette.blue[900],\r\n contrastText: '#fff'\r\n },\r\n secondary: {\r\n main: palette.green.primary,\r\n contrastText: '#fff'\r\n },\r\n error: {\r\n main: palette.red.primary,\r\n contrastText: '#fff'\r\n }\r\n },\r\n overrides: {\r\n MuiOutlinedInput: {\r\n inputMarginDense: {\r\n paddingTop: 7,\r\n paddingBottom: 7\r\n }\r\n },\r\n MuiTooltip: {\r\n tooltip: {\r\n backgroundColor: `${palette.grey.light}`,\r\n borderRadius: '1px',\r\n border: `1px solid ${palette.grey.border}`,\r\n maxWidth: '300px',\r\n padding: \"10px 10px 8px 10px\",\r\n wordWrap: \"break-word\",\r\n color: palette.grey.darkText,\r\n fontSize: 14\r\n },\r\n popper: {\r\n opacity: 1\r\n }\r\n },\r\n MuiStepIcon: {\r\n completed: {\r\n color: `${palette.green.primary} !important`\r\n }\r\n },\r\n MuiInputBase: {\r\n inputMultiline: {\r\n color: palette.grey.darkText\r\n }\r\n },\r\n MuiStepLabel: {\r\n completed: {\r\n color: `${palette.grey.text} !important`\r\n }\r\n },\r\n MuiFormControl: {\r\n root: {\r\n display: `flex !important`\r\n }\r\n }\r\n }\r\n});\r\n\r\nconst LoaderComponent = ({ loaded, children }: { loaded: boolean, children: React.ReactNode }) => <>\r\n {loaded && children}\r\n {!loaded && Loading....}\r\n\r\nconst Loader = connect((state: ReduxState) => ({ loaded: state.lookup.loaded && state.settings.loaded }))(LoaderComponent);\r\n\r\n\r\nconst App = () => {\r\n canvasUtil.autoAdjustHeight();\r\n sessionUtility.refreshCanvasTokenPeriodically();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Object.keys(routes).map(routeKey => {\r\n if (!routes[routeKey].permissions)\r\n return ();\r\n else\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 App;\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './containers/app/app';\r\nimport './index.css';\r\nimport TagManager from 'react-gtm-module';\r\n// import registerServiceWorker from './register_service_worker';\r\nimport ReactGA from 'react-ga';\r\n\r\nconst tagManagerArgs = {\r\n gtmId: process.env.REACT_APP_GOOGLE_TAG_MANAGER_ID\r\n}\r\n\r\nTagManager.initialize(tagManagerArgs);\r\n\r\nReactDOM.render(\r\n ,\r\n document.getElementById('root') as HTMLElement\r\n);\r\n//Removing service worker for now as it is causing problems with MVC routing.\r\n// registerServiceWorker();","module.exports = __webpack_public_path__ + \"static/media/sign_app_RGB_2017.9c47a823.svg\";","module.exports = __webpack_public_path__ + \"static/media/be_logo.f8d0337b.png\";","module.exports = __webpack_public_path__ + \"static/media/progress_bar.db5207f8.png\";"],"sourceRoot":""}