{"version":3,"file":"js/application-83d1bafc4b6f13e531aa.js","mappings":"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AAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MACjf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MACxf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI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","sources":["webpack://daocloud/./app/javascript/components/payments/SquarePaymentsForm.jsx","webpack://daocloud/./app/javascript/components/payments/PaymentProviderCardForm.jsx","webpack://daocloud/./app/javascript/hooks/useStripeHook.jsx","webpack://daocloud/./app/javascript/components/payments/PaymentProviderWrapper.jsx","webpack://daocloud/./app/javascript/@core/HoneyBadgerErrorBoundary.jsx","webpack://daocloud/./app/javascript/components/shared/Photo.jsx","webpack://daocloud/./app/javascript/components/client_bookings/BookingCard.jsx","webpack://daocloud/./app/javascript/components/client_bookings/TransactionCard.jsx","webpack://daocloud/./app/javascript/components/client_bookings/ClientBookings.jsx","webpack://daocloud/./app/javascript/support/amplitude-react.js","webpack://daocloud/./app/javascript/components/shared/ClientUpload.jsx","webpack://daocloud/./app/javascript/components/shared/Vector.jsx","webpack://daocloud/./app/javascript/components/header/BrowseTherapiesCTA.jsx","webpack://daocloud/./app/javascript/hooks/useOutsideAlerter.jsx","webpack://daocloud/./app/javascript/components/header/LocationSearch.jsx","webpack://daocloud/./app/javascript/components/header/SearchCategory.jsx","webpack://daocloud/./app/javascript/components/header/SearchBar.jsx","webpack://daocloud/./app/javascript/components/shared/RoundedButton.jsx","webpack://daocloud/./app/javascript/components/invite_clients/CsvReader.jsx","webpack://daocloud/./app/javascript/components/invite_clients/ChooseMethod.jsx","webpack://daocloud/./app/javascript/components/invite_clients/Row.jsx","webpack://daocloud/./app/javascript/components/invite_clients/Confirmation.jsx","webpack://daocloud/./app/javascript/components/invite_clients/CopyPaste.jsx","webpack://daocloud/./app/javascript/components/invite_clients/Review.jsx","webpack://daocloud/./app/javascript/components/shared/ProgressBar.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewLayout.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewBookNext.jsx","webpack://daocloud/./app/javascript/providers/ReviewProvider.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewClientInfo.jsx","webpack://daocloud/./app/javascript/components/shared/RatingStarRow.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewConfirm.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewEndorsements.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewIntro.jsx","webpack://daocloud/./app/javascript/components/RatingStar.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewRating.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewTextReview.jsx","webpack://daocloud/./app/javascript/contexts/PracticeContext.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AddOrRetryModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AddOrRetryButton.jsx","webpack://daocloud/./app/javascript/components/shared/NotificationsFlyout.jsx","webpack://daocloud/./app/javascript/components/pro_portal/ProInbox.jsx","webpack://daocloud/./app/javascript/contexts/FeatureFlagContext.jsx","webpack://daocloud/./app/javascript/utils/sideNavigationUtils.jsx","webpack://daocloud/./app/javascript/components/PortalHeader.jsx","webpack://daocloud/./app/javascript/contexts/CalendarFlyoutContext.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/appointment_graphql.jsx","webpack://daocloud/./app/javascript/contexts/ManualBookingContext.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/mutations.js","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventsContext.jsx","webpack://daocloud/./app/javascript/utils/calendarUtils.jsx","webpack://daocloud/./app/javascript/contexts/ProCalendarContext.jsx","webpack://daocloud/./app/javascript/components/shared/ConfirmRescheduleModal.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/mutations.js","webpack://daocloud/./app/javascript/pages/BookableEventTypes/BookableEventTypesContext.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/queries.js","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventForm.jsx","webpack://daocloud/./app/javascript/components/shared/DeleteClientModal.jsx","webpack://daocloud/./app/javascript/components/shared/EditClientModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/ClientSelector.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/queries.js","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventPaymentModal.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/ClientDetailsFlyout.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventRegistrants.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/CalendarEvent.jsx","webpack://daocloud/./app/javascript/@core/appointment/appointment.model.js","webpack://daocloud/./app/javascript/components/shared/AdjustmentModal.jsx","webpack://daocloud/./app/javascript/components/shared/AppointmentAdjustments.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/AppointmentActions.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/EditAppointmentDateTime.jsx","webpack://daocloud/./app/javascript/components/shared/CurrencyInput.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/RecurrenceSelect.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/EditAppointmentService.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/LocationSelect.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/AppointmentDetails.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/AppointmentReview.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/AppointmentStatus.jsx","webpack://daocloud/./app/javascript/components/shared/ClientNotes.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/ClientInfo.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/ConfirmPackageModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/ConfirmModals.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/ErrorBanner.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/ManualPaymentInvoiceSection.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/ClientEventForm.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/PersonalEventForm.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AppointmentFlyout.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/ProCalendar.jsx","webpack://daocloud/./app/javascript/pages/IntakeForms/SendIntakeFormButton.jsx","webpack://daocloud/./app/javascript/pages/IntakeForms/IntakeFormSection.jsx","webpack://daocloud/./app/javascript/pages/ManagePaymentMethods/AddCreditCardModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AppointmentSummaryRow.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AppointmentHistory.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/UpcomingAppointments.jsx","webpack://daocloud/./app/javascript/components/shared/ClientFlyout.jsx","webpack://daocloud/./app/javascript/components/shared/CreateClientModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/clients/ClientDirectory.jsx","webpack://daocloud/./app/javascript/components/pro_portal/dashboard/DownloadMobileApp.jsx","webpack://daocloud/./app/javascript/utils/fetchAppointment.js","webpack://daocloud/./app/javascript/components/pro_portal/payments/PaymentSettingsFlyout.jsx","webpack://daocloud/./app/javascript/components/pro_portal/payments/PaymentDirectory.jsx","webpack://daocloud/./app/javascript/components/ProfilePhoneNumber.jsx","webpack://daocloud/./app/javascript/components/shared/InputField.jsx","webpack://daocloud/./app/javascript/components/shared/EnterPhone.jsx","webpack://daocloud/./app/javascript/components/SideNavigation.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventCard.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventsFlyout.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents.jsx","webpack://daocloud/./app/javascript/components/shared/Breadcrumbs.jsx","webpack://daocloud/./app/javascript/components/shared/ListBox.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientPageView.jsx","webpack://daocloud/./app/javascript/pages/ManagePaymentMethods/ManagePaymentMethods.jsx","webpack://daocloud/./app/javascript/pages/Client/ManageCreditCard.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientBillingPage.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientIntakeForm.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientNotes.jsx","webpack://daocloud/./app/javascript/components/shared/AppointmentNotes.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientChronology.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientOverview.jsx","webpack://daocloud/./app/javascript/pages/IntakeForm.jsx","webpack://daocloud/./app/javascript/pages/IntakeFormsPage.jsx","webpack://daocloud/./app/javascript/components/shared/InfoParagraph.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/PaypalPaymentButton.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/AddPaymentModal.jsx","webpack://daocloud/./app/javascript/hooks/useBrowserInfo.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/mutations.js","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/AddPaymentButton.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/CancelAppointmentButton.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/OfflinePaymentMethods.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/PaymentStatusBox.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer.jsx","webpack://daocloud/./app/javascript/pages/ManageEventRegistration.jsx","webpack://daocloud/./app/javascript/contexts/ProfileStatusContext.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ProfileEditProvider.jsx","webpack://daocloud/./app/javascript/pages/PersonalSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalGiftCardTemplates/GiftCardForm.jsx","webpack://daocloud/./app/javascript/pages/PortalGiftCardTemplates/PortalGiftCardTemplatesPage.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/DisplayAvailableTimes.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/AvailableTimes.jsx","webpack://daocloud/./app/javascript/components/shared/PlacesAutocomplete.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/LocationPlacesSelect.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/HomeLocationFields.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/OfficeLocationFields.jsx","webpack://daocloud/./app/javascript/utils/timeZoneUtils.js","webpack://daocloud/./app/javascript/pages/ProfileEdit/VirtualLocationFields.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/LocationFlyout.jsx","webpack://daocloud/./app/javascript/pages/PortalServices/PortalServicesLocations.jsx","webpack://daocloud/./app/javascript/components/shared/DropdownButton.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/LocationInput.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/PhotoUpload.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/BookableEventTypeForm.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/BookableEventTypeFlyout.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/BookableEventTypesTable.jsx","webpack://daocloud/./app/javascript/pages/DiscountCodes/ServiceSelector.jsx","webpack://daocloud/./app/javascript/pages/DiscountCodes/DiscountCodeFlyout.jsx","webpack://daocloud/./app/javascript/pages/DiscountCodes/DiscountCodesTable.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ServiceFlyout.jsx","webpack://daocloud/./app/javascript/pages/PortalServices/ServiceCard.jsx","webpack://daocloud/./app/javascript/pages/PortalServices/PortalServicesPage.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Communications/ProCommunicationSettingsProvider.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Communications/ProCommunicationSettingsView.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Communications/ProCommunicationSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Communications/ProCommunicationTemplates.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ConferencingSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Payments/PaypalSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Payments/SquarePaymentsSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Payments/StripePaymentsSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProBookingSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProCalendarSettings/CalIcon.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProCalendarSettings/ReadCalendarSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProCalendarSettings/WriteCalendarSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProCalendarSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProMainSettings.jsx","webpack://daocloud/./app/javascript/components/pro_portal/payments/PaymentIntegrations.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProPaymentSettings.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/PersonalInformationPractice.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/PersonalInformationUser.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/CredentialsModal.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ProfileEditCredentialsV2.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ProfileChecklist.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ProfileEditView.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditAudience.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditCredentials.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditDetails.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/EndorsementsFlyout.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditEndorsements.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditLocations.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditPhotos.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditServices.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProImportReviews.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewRequestsTable.jsx","webpack://daocloud/./app/javascript/utils/setupFilters.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ReviewFlyout.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsTable.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ReviewRequestForm.jsx","webpack://daocloud/./app/javascript/pages/ProReviews.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsCompletedPage.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsEndorsementsPage.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsImportPage.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsPendingPage.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsRequestPage.jsx","webpack://daocloud/./app/javascript/pages/ReferralProgramPage.jsx","webpack://daocloud/./app/javascript/pages/WebsiteDash.jsx","webpack://daocloud/./app/javascript/graphql/mutations/generateImageAltText.js","webpack://daocloud/./app/javascript/graphql/mutations/generateSiteMetadata.js","webpack://daocloud/./app/javascript/graphql/mutations/upsertWebsiteMetadata.js","webpack://daocloud/./app/javascript/pages/WebsiteSettings/SeoSettings.jsx","webpack://daocloud/./app/javascript/utils/customDomainUtils.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/CustomDomainSection.jsx","webpack://daocloud/./app/javascript/pages/WebsiteSettings/WebsiteDomain.jsx","webpack://daocloud/./app/javascript/pages/WebsiteSettings/WebsiteSettings.jsx","webpack://daocloud/./app/javascript/packs/application.js","webpack://daocloud/./app/javascript/components/invite_clients/InviteClients.jsx","webpack://daocloud/./app/javascript/components/ListPracticeCTA.jsx","webpack://daocloud/./app/javascript/components/ClientUploadButton.jsx","webpack://daocloud/./app/javascript/pages/WebsiteBuilder/WebsiteContentPage.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/PersonalInformationPage.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/PracticeInformationPage.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/CombinedInformationPage.jsx","webpack://daocloud/./app/javascript/pages/HomePage/CTALink.jsx","webpack://daocloud/./app/javascript/pages/HomePage/BottomCTA.jsx","webpack://daocloud/./app/javascript/pages/HomePage/HeroSection.jsx","webpack://daocloud/./app/javascript/pages/HomePage/PractitionerJoinCTA.jsx","webpack://daocloud/./app/javascript/pages/HomePage/ReviewsSection.jsx","webpack://daocloud/./app/javascript/pages/HomePage/TherapyCategoriesSection.jsx","webpack://daocloud/./app/javascript/pages/HomePage.jsx","webpack://daocloud/./app/javascript/src/application/amplitude.js","webpack://daocloud/./app/javascript/src/application/forms.js","webpack://daocloud/./app/javascript/src/application/intlTelInput.js","webpack://daocloud/./app/javascript/src/application/misc.js","webpack://daocloud/./app/javascript/src/application/quiz.js","webpack://daocloud/./app/javascript/src/application/setup.js","webpack://daocloud/./app/javascript/src/application/tabs.js","webpack://daocloud/./app/javascript/src/application/utils.js","webpack://daocloud/./app/javascript/utils/mutations.js"],"sourcesContent":["import React, { useContext, useEffect, useRef } from \"react\"\n\nimport { PaymentProviderContext } from \"./PaymentProviderWrapper\"\n\nexport default function SquarePaymentForm() {\n  const cardRef = useRef()\n\n  const { squarePayments, squareCard, setSquareCard } = useContext(PaymentProviderContext)\n\n  useEffect(() => {\n    const initializePayment = async () => {\n      const card = await squarePayments.card()\n      await card.attach(cardRef.current)\n      setSquareCard(card)\n    }\n    if (squarePayments) {\n      initializePayment()\n    }\n  }, [squarePayments])\n\n  return (\n    <>\n      {!squareCard && <div>Loading...</div>}\n      <div id=\"card-container\" ref={cardRef}></div>\n    </>\n  )\n}\n","import { PaymentElement } from \"@stripe/react-stripe-js\"\nimport React from \"react\"\n\nimport SquarePaymentForm from \"./SquarePaymentsForm\"\n\nexport default function PaymentProviderCardForm({ practice, options }) {\n  switch (practice.paymentProvider) {\n    case \"stripe\":\n      return <PaymentElement options={options} />\n    case \"square\":\n      return <SquarePaymentForm />\n  }\n}\n","import { useMutation } from \"urql\"\n\nexport const SETUP_INTENT_MUTATION = `\n  mutation SetupIntent($appointmentId: ID, $practiceId: ID!, $userId: ID, $clientId: ID) {\n    setupIntent(appointmentId: $appointmentId, practiceId: $practiceId, userId: $userId, clientId: $clientId) {\n      result\n      setupIntentSecret\n    }\n  }\n`\n\nexport default function useStripeHook() {\n  const [{ data }, setupIntent] = useMutation(SETUP_INTENT_MUTATION)\n\n  // Set elementsOptions based on what data we have\n  const elementsOptions = data?.setupIntent?.setupIntentSecret\n    ? { clientSecret: data.setupIntent.setupIntentSecret }\n    : { mode: \"setup\", currency: \"usd\" }\n\n  return { stripeData: data, setupIntent, elementsOptions }\n}\n","import Honeybadger from \"@honeybadger-io/js\"\nimport { payments } from \"@square/web-sdk\"\nimport { Elements, useElements, useStripe } from \"@stripe/react-stripe-js\"\nimport { loadStripe } from \"@stripe/stripe-js\"\nimport React, { createContext, useCallback, useContext, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport useStripeHook from \"../../hooks/useStripeHook\"\nimport { SQUARE_ADD_CARD_TO_CUSTOMER_MUTATION } from \"../../utils/mutations\"\n\nexport default function PaymentProviderWrapper({ practice, appointment, user, client, children, mode = \"default\" }) {\n  return (\n    <>\n      {practice.paymentProvider === \"stripe\" && (\n        <StripeWrapper practice={practice} appointment={appointment} user={user} client={client} mode={mode}>\n          {children}\n        </StripeWrapper>\n      )}\n      {practice.paymentProvider === \"square\" && (\n        <SquareWrapper practice={practice} appointment={appointment} user={user} client={client} mode={mode}>\n          {children}\n        </SquareWrapper>\n      )}\n    </>\n  )\n}\n\nfunction StripeWrapper({ children, practice, user, client, appointment, mode }) {\n  const { stripeData, setupIntent, elementsOptions } = useStripeHook()\n\n  const promise = loadStripe(`${window.App.stripe_key}`, {\n    stripeAccount: practice.stripeAccountId || window.App.practice_stripe_account\n  })\n\n  useEffect(() => {\n    // Only call setupIntent directly if not in setup mode\n    // For setup mode, we'll handle it in handleCardSavedOnProvider\n    if (mode !== \"setup\") {\n      setupIntent({\n        practiceId: practice.id,\n        appointmentId: appointment?.id,\n        userId: user?.id,\n        clientId: client?.id\n      }).then((res) => {\n        if (res.data?.setupIntent?.result === \"success\") {\n          // nothing\n        } else {\n          Honeybadger.notify(res.error)\n          console.error(res.error) // eslint-disable-line no-console\n        }\n      })\n    }\n  }, [mode, practice.id, appointment?.id, user?.id, client?.id, setupIntent])\n\n  return (\n    (stripeData || mode === \"setup\") &&\n    promise && (\n      <Elements stripe={promise} options={elementsOptions}>\n        <PaymentProviderContextProvider\n          practice={practice}\n          appointment={appointment}\n          user={user}\n          client={client}\n          provider=\"stripe\"\n          mode={mode}>\n          {children}\n        </PaymentProviderContextProvider>\n      </Elements>\n    )\n  )\n}\n\nfunction SquareWrapper({ practice, appointment, user, client, children, mode }) {\n  return (\n    <PaymentProviderContextProvider\n      provider=\"square\"\n      appointment={appointment}\n      practice={practice}\n      user={user}\n      client={client}\n      mode={mode}>\n      {children}\n    </PaymentProviderContextProvider>\n  )\n}\n\nexport const PaymentProviderContext = createContext()\n\nexport const PaymentProviderContextProvider = ({\n  provider,\n  practice,\n  appointment,\n  user,\n  client,\n  children,\n  mode = \"default\"\n}) => {\n  const [squareCard, setSquareCard] = React.useState(null)\n  const [, squareAddCardToCustomer] = useMutation(SQUARE_ADD_CARD_TO_CUSTOMER_MUTATION)\n\n  const stripe = provider === \"stripe\" ? useStripe() : null\n  const elements = provider === \"stripe\" ? useElements() : null\n\n  const { setupIntent } = provider === \"stripe\" ? useStripeHook() : { setupIntent: null }\n\n  const [squarePayments, setSquarePayments] = React.useState(null)\n  useEffect(() => {\n    const initializePayment = async () => {\n      let sp = await payments(window.App.square_application_id, \"\")\n      setSquarePayments(sp)\n    }\n    initializePayment()\n  }, [])\n\n  const handleCardSavedOnProvider = useCallback(async () => {\n    if (provider === \"stripe\") {\n      if (!stripe || !elements) return\n\n      // Use the mode prop instead of trying to detect it from elements\n      const isSetupMode = mode === \"setup\"\n      let clientSecret = null\n\n      // Setup mode is to show the Stripe payment form without setup intent (logged out user)\n      // This flow is not currently used, we only show the form, but we're not saving it\n      // Test this before using.\n      // If we're in setup mode, create a setupIntent\n      if (isSetupMode) {\n        const setupIntentResult = await setupIntent({\n          practiceId: practice.id,\n          appointmentId: appointment?.id,\n          userId: user?.id,\n          clientId: client?.id\n        })\n\n        if (setupIntentResult.data?.setupIntent?.result === \"success\") {\n          clientSecret = setupIntentResult.data.setupIntent.setupIntentSecret\n        } else {\n          Honeybadger.notify(setupIntentResult.error)\n          return { error: setupIntentResult.error?.message || \"Failed to create setup intent\" }\n        }\n      }\n\n      // Now confirm the setup with the appropriate clientSecret\n      const confirmParams = {\n        elements,\n        redirect: \"if_required\",\n        confirmParams: {\n          return_url: `${window.location.origin}${window.location.pathname}`\n        }\n      }\n\n      // Add clientSecret if we're in setup mode and generated one\n      if (isSetupMode && clientSecret) {\n        confirmParams.clientSecret = clientSecret\n      }\n\n      const result = await stripe.confirmSetup(confirmParams)\n\n      if (result.error) {\n        return { error: result.error.message || \"An error occurred\" }\n      }\n      return { token: null }\n    } else if (provider === \"square\") {\n      try {\n        const tokenizeResult = await squareCard.tokenize()\n        if (tokenizeResult.status === \"OK\") {\n          const addCardResult = await squareAddCardToCustomer({\n            clientId: client?.id || appointment?.client?.id,\n            practiceId: practice.id,\n            sourceId: tokenizeResult.token,\n            userId: user?.id || appointment?.user?.id\n          })\n\n          if (addCardResult.data?.squareAddCardToCustomer?.result === \"success\") {\n            return { token: tokenizeResult.token }\n          }\n          return { error: addCardResult.data?.squareAddCardToCustomer?.errors.join(\", \") || \"An error occurred\" }\n        } else {\n          return { error: JSON.stringify(tokenizeResult.errors) }\n        }\n      } catch (error) {\n        return { error: error.message || \"An error occurred\" }\n      }\n    }\n  }, [provider, squareCard, stripe, elements, setupIntent, practice, appointment, user, client, mode])\n\n  return (\n    <PaymentProviderContext.Provider\n      value={{\n        handleCardSavedOnProvider,\n        stripe,\n        elements,\n        squarePayments,\n        squareCard,\n        setSquareCard,\n        setupIntent,\n        mode\n      }}>\n      {children}\n    </PaymentProviderContext.Provider>\n  )\n}\n\nexport const usePaymentProvider = () => useContext(PaymentProviderContext)\n","import { Honeybadger, HoneybadgerErrorBoundary } from \"@honeybadger-io/react\"\nimport React from \"react\"\n\nconst honeybadger = Honeybadger.configure({\n  apiKey: \"hbp_6m6vaWJX6KdTdPYxfqptlzIhk7PiF103F3K5\",\n  environment: window.App.environment,\n  projectRoot: \"webpack:///./app/javascript\",\n  revision: window.App.heroku_slug_commit,\n  enableUncaught: true\n})\n\nexport const wrapWithErrorBoundary = (WrappedComponent) =>\n  function WithErrorBoundary(props) {\n    return (\n      <HoneybadgerErrorBoundary honeybadger={honeybadger}>\n        <WrappedComponent {...props} />\n      </HoneybadgerErrorBoundary>\n    )\n  }\n","import React from \"react\"\n\nconst Photo = ({ filestack, imgSrc, onClick, className, imgClassName }) => (\n  <div className={`photo ${className}`} onClick={onClick}>\n    <picture>\n      {filestack?.x_large?.webp && (\n        <source type=\"image/webp\" srcSet={`https://cdn.filestackcontent.com/${filestack.x_large.webp} 2x`} />\n      )}\n      {filestack?.x_large?.jpeg && (\n        <source type=\"image/jpeg\" srcSet={`https://cdn.filestackcontent.com/${filestack.x_large.jpeg} 2x`} />\n      )}\n      {filestack?.large?.webp && (\n        <source type=\"image/webp\" srcSet={`https://cdn.filestackcontent.com/${filestack.large.webp}`} />\n      )}\n      {filestack?.large?.jpeg && (\n        <source type=\"image/jpeg\" srcSet={`https://cdn.filestackcontent.com/${filestack.large.jpeg}`} />\n      )}\n      {filestack?.square?.jpeg && (\n        <source type=\"image/jpeg\" srcSet={`https://cdn.filestackcontent.com/${filestack.square.jpeg}`} />\n      )}\n      {filestack?.medium?.jpeg && (\n        <source type=\"image/jpeg\" srcSet={`https://cdn.filestackcontent.com/${filestack.medium.jpeg}`} />\n      )}\n      <img className={imgClassName} type=\"image/jpeg\" src={imgSrc} />\n    </picture>\n  </div>\n)\n\nexport default Photo\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport styled from \"styled-components\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport DesktopH5 from \"../shared/DesktopH5\"\nimport DesktopTitle3 from \"../shared/DesktopTitle3\"\nimport HealMeSquareButton from \"../shared/HealMeSquareButton\"\nimport LoadingSpinner from \"../shared/LoadingSpinner\"\nimport Modal from \"../shared/Modal\"\nimport Photo from \"../shared/Photo\"\n\nimport { CardTitle } from \"./ClientBookings\"\n\nconst QUERY = `\n  query BookingCard($id: ID!) {\n    userAppointment(id: $id) {\n      id\n      practice {\n        user {\n          id\n          commsName\n          name\n          profilePhotos {\n            xLarge {\n              jpeg\n              webp\n            }\n            large {\n              jpeg\n              webp\n            }\n            medium {\n              jpeg\n              webp\n            }\n            small {\n              jpeg\n              webp\n            }\n            original {\n              jpeg\n              webp\n            }\n          }\n        }\n      }\n      services {\n        id\n        name\n        description\n        timeLength\n        amountCents\n        photoUrl\n        state\n        addOn\n      }\n      location {\n        id\n        name\n        address\n        cityState\n        zip\n        kind\n        timeZone\n        formattedTimeZone\n        timeZoneAbbr\n        hideAddress\n        country\n        virtualLink\n        virtualInstructions\n      }\n    }\n  }\n  `\n\nconst CANCEL_APPOINTMENT_MUTATION = `\n  mutation CancelAppointmentNoUser($appointmentId: ID!) {\n    cancelAppointmentNoUser(appointmentId: $appointmentId) {\n      result\n      errors\n    }\n  }\n`\n\nconst Card = styled.a`\n  display: flex;\n  gap: 10px;\n  background: #fff;\n  padding: 15px 15px 15px 15px;\n  border: 1px solid #dcdfe6;\n  box-shadow: 0 0.5em 1em -0.125em rgba(11, 57, 84, 0.1), 0 0px 0 1px rgba(11, 57, 84, 0.02);\n  color: #0b3954;\n  font-size: 14px;\n  margin-top: -15px;\n\n  .booking-photo {\n    height: 64px;\n    min-height: 64px;\n    width: 64px;\n    min-width: 64px;\n  }\n\n  .booking-pro-name {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    font-weight: 500;\n    font-size: 16px;\n    width: 100%;\n    position: relative;\n\n    @media (max-width: 769px) {\n      margin-bottom: 10px;\n    }\n  }\n\n  .booking-state {\n    ${(props) =>\n      props.status === \"CONFIRMED\" &&\n      `\n      background-color: #48c774;\n    `}\n\n    ${(props) =>\n      props.status === \"PENDING\" &&\n      `\n      background-color: #ffbe57;\n    `}\n\n    ${(props) =>\n      props.status === \"UNAVAILABLE\" &&\n      `\n      background-color: #f75959;\n    `}\n    font-size: 10px;\n    font-weight: 600;\n    border-radius: 0;\n    padding: 6px 6px 6px 6px;\n    color: #fff;\n    position: absolute;\n    left: 87.5%;\n\n    @media (max-width: 769px) {\n      left: 72.5%;\n    }\n  }\n  .booking-info {\n    width: 100%;\n    a {\n      word-wrap: break-word;\n    }\n    @media (max-width: 769px) {\n      max-width: 75%;\n    }\n  }\n  .booking-time {\n    font-size: 12px;\n    color: #55778a;\n  }\n\n  .booking-time-price {\n    display: flex;\n    align-items: center;\n    gap: 30px;\n    margin-top: 4px;\n    margin-bottom: 4px;\n  }\n\n  .booking-align-center {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n  }\n`\n\nconst CancelContainer = styled.div`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: 65px;\n  background: #fff;\n  border-width: 0 1px 1px 1px;\n  border-color: #dcdfe6;\n  border-style: solid;\n  box-shadow: 0 0.5em 1em -0.125em rgba(11, 57, 84, 0.1), 0 0px 0 1px rgba(11, 57, 84, 0.02);\n  margin-top: -24px;\n  font-weight: 700;\n\n  i {\n    font-size: 18px;\n    margin-right: 20px;\n    font-weight: 700;\n  }\n\n  &:hover {\n    cursor: pointer;\n  }\n`\nconst getStatus = (state) => {\n  switch (state) {\n    case \"approved\":\n      return \"CONFIRMED\"\n    case \"pending\":\n      return \"PENDING\"\n    case \"unavailable\":\n      return \"UNAVAILABLE\"\n  }\n}\n\nconst BookingCard = ({ booking }) => {\n  const [showConfirmCancel, setShowConfirmCancel] = useState(false)\n\n  const [{ data, fetching, error }] = useQuery({\n    query: QUERY,\n    variables: { id: booking.id },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  const [{ fetching: cancelAppointmentFetching }, cancelAppointmentNoUser] = useMutation(CANCEL_APPOINTMENT_MUTATION)\n\n  if (fetching) return <LoadingSpinner />\n  if (error || !data) return <div>Error: {error.message}</div>\n\n  const location = data.userAppointment.location\n  const user = data.userAppointment.practice.user\n  const services = data.userAppointment.services\n\n  const processingFees = (booking.feeCents + booking.platformFeeCents) / 100\n  const status = getStatus(booking.state)\n  let timeZoneDisplay = new Date().toLocaleTimeString(\"en-us\", { timeZoneName: \"short\" }).split(\" \")[2]\n\n  return (\n    <>\n      <CardTitle>{dayjs(booking.startsAt).format(\"dddd, MMM Do, YYYY\")}</CardTitle>\n      <Card status={status} href={`/m/c/${booking.instantActionToken}`}>\n        <Photo filestack={user.profilePhotos} className=\"booking-photo\" />\n\n        <div className=\"booking-info\">\n          <div className=\"booking-pro-name\">\n            <div>{user.name}</div>\n            <div className=\"booking-state\">{status}</div>\n          </div>\n\n          <div className=\"mb-2\">\n            {services.map((service) => (\n              <div key={service.id}>\n                {service.name}\n                {service.addOn ? \" (Add-on)\" : \"\"}\n              </div>\n            ))}\n          </div>\n\n          <div className=\"booking-time\">\n            {dayjs(booking.startsAt).format(\"MMMM DD YYYY, h:mm A\")} - {dayjs(booking.endsAt).format(\"h:mm A\")}{\" \"}\n            {location.kind === \"virtual\" ? timeZoneDisplay : location.timeZoneAbbr}\n          </div>\n\n          <div className=\"booking-time-price\">\n            <div className=\"booking-align-center\">\n              <i className=\"icon-price\" />{\" \"}\n              {booking.amountCents > 0\n                ? `${(booking.amountCents / 100 + processingFees).toLocaleString(\"en-US\", {\n                    style: \"currency\",\n                    currency: \"USD\"\n                  })}`\n                : \"Free\"}\n            </div>\n\n            <div className=\"booking-align-center\">\n              <i className=\"icon-clock\" />\n              {booking.appointmentTimeLength} minutes\n            </div>\n          </div>\n\n          <div className=\"booking-align-center\">\n            <i className=\"icon-location\" />\n            {location.kind === \"virtual\"\n              ? \"Virtual\"\n              : `${location.address}, ${location.cityState} ${location.zip}, ${location.country}`}\n          </div>\n\n          {location.kind === \"virtual\" && (\n            <>\n              {location.virtualLink && (\n                <div>\n                  Virtual link: <a href={location.virtualLink}>{location.virtualLink}</a>\n                </div>\n              )}\n              {location.virtualInstructions && <div>Join instructions: {location.virtualInstructions}</div>}\n            </>\n          )}\n        </div>\n      </Card>\n\n      {(status === \"PENDING\" || status === \"UNAVAILABLE\") && (\n        <>\n          <CancelContainer onClick={() => setShowConfirmCancel(true)}>\n            <i className=\"icon-close\" /> Cancel\n          </CancelContainer>\n          <Modal\n            open={showConfirmCancel}\n            closeModal={() => setShowConfirmCancel(false)}\n            size=\"small\"\n            header={\n              <div>\n                <DesktopH5 content=\"Cancel booking\" />\n              </div>\n            }\n            footer={\n              <>\n                <HealMeSquareButton type=\"tertiary\" onClick={() => setShowConfirmCancel(false)} label=\"Close\" />\n                <HealMeSquareButton\n                  type=\"warning\"\n                  label=\"Cancel booking\"\n                  loading={cancelAppointmentFetching}\n                  onClick={() =>\n                    cancelAppointmentNoUser({ appointmentId: booking.id }).then(() => {\n                      setShowConfirmCancel(false)\n                      location.reload()\n                    })\n                  }\n                />\n              </>\n            }>\n            <DesktopTitle3 content={`Are you sure you want to cancel this booking?`} />\n          </Modal>\n        </>\n      )}\n    </>\n  )\n}\n\nexport default BookingCard\n","import dayjs from \"dayjs\"\nimport React, { useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { useQuery } from \"urql\"\n\nimport { CardTitle } from \"./ClientBookings\"\n\nconst QUERY = `\n  query TransactionCard($practiceId: ID!, $serviceId: ID!) {\n    practice(id: $practiceId) {\n      id\n      user {\n        id\n        commsName\n        name\n      }\n    }\n    service(id: $serviceId) {\n      id\n      name\n      amountCents\n    }\n  }\n  `\n\nconst Card = styled.div`\n  display: flex;\n  flex-flow: column;\n  gap: 10px;\n  background: #fff;\n  padding: 15px 15px 15px 15px;\n  border: 1px solid #dcdfe6;\n  box-shadow: 0 0.5em 1em -0.125em rgba(11, 57, 84, 0.1), 0 0px 0 1px rgba(11, 57, 84, 0.02);\n  color: #0b3954;\n  font-size: 14px;\n\n  .transaction-type-row {\n    color: #0b3954;\n    font-size: 18px;\n    font-weight: 300;\n  }\n\n  .transaction-state {\n    background-color: #f75959;\n    ${(props) =>\n      props.status === \"PROCESSED\" &&\n      `\n      background-color: #48c774;\n    `}\n    ${(props) =>\n      props.status === \"PENDING\" &&\n      `\n      background-color: #ffbe57;\n    `}\n\n    font-size: 10px;\n    font-weight: 600;\n    border-radius: 0;\n    padding: 6px 8px 6px 8px;\n    color: #fff;\n    position: absolute;\n    left: 585px;\n  }\n\n  .transaction-info {\n    display: flex;\n    align-items: center;\n    gap: 30px;\n    margin-top: 15px;\n\n    div {\n      display: flex;\n      align-items: center;\n      gap: 4px;\n\n      i {\n        font-size: 16px;\n      }\n    }\n  }\n\n  .transaction-amount {\n    position: absolute;\n    left: 585px;\n  }\n`\nconst getStatus = (type, state) => {\n  if (type === \"Hold\" && state === 1) {\n    return \"PENDING\"\n  } else if (state === 0) {\n    return \"PENDING\"\n  } else if (state === 1) {\n    return \"PROCESSED\"\n  } else if (state === 2) {\n    return \"FAILURE\"\n  } else {\n    return \"CANCELLED\"\n  }\n}\n\nconst TransactionCard = ({ booking }) => {\n  if (!booking.transaction) return null\n  const [transaction] = useState(booking.transaction)\n  const [practice, setPractice] = useState()\n  const [service, setService] = useState()\n  const processingFees = (booking.feeCents + booking.platformFeeCents) / 100\n  const status = getStatus(transaction.type, transaction.state)\n\n  const [{ data }] = useQuery({\n    query: QUERY,\n    variables: {\n      practiceId: booking.practiceId,\n      serviceId: booking.serviceId\n    },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  useEffect(() => {\n    if (data) {\n      setPractice(data.practice)\n      setService(data.service)\n    }\n  }, [data])\n\n  return (\n    <>\n      <CardTitle>{dayjs(booking.startsAt).format(\"dddd, MMM Do, YYYY\")}</CardTitle>\n      <Card status={status}>\n        <div className=\"transaction-type-row\">\n          {transaction.type === \"Charge\" && <span>Payment</span>}\n          {transaction.type === \"Hold\" && <span>Your card will be charged the day of the appointment</span>}\n          {transaction.type !== \"Charge\" && transaction.type !== \"Hold\" && <span>{transaction.type}</span>}\n        </div>\n        <div className=\"transaction-state\">{status}</div>\n        <div className=\"transaction-info\">\n          <div>\n            <i className=\"icon-practitioner-search\" />\n            {practice?.user.name}\n          </div>\n          <div>\n            <i className=\"icon-match\" />\n            {service?.name}\n          </div>\n          <div className=\"transaction-amount\">\n            {`${(service?.amountCents / 100 + processingFees).toLocaleString(\"en-US\", {\n              style: \"currency\",\n              currency: \"USD\"\n            })}`}\n          </div>\n        </div>\n      </Card>\n    </>\n  )\n}\n\nexport default TransactionCard\n","import React, { useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { useQuery } from \"urql\"\n\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport BookingCard from \"./BookingCard\"\nimport TransactionCard from \"./TransactionCard\"\n\nconst APPOINTMENT_FIELDS = `\n  id\n  state\n  startsAt\n  endsAt\n  amountCents\n  feeCents\n  platformFeeCents\n  instantActionToken\n  appointmentTimeLength\n`\n\nconst QUERY = `\n  query ClientBookings {\n    upcomingAppointments {\n      ${APPOINTMENT_FIELDS}\n      transaction {\n        id\n        amountCents\n        state\n        type\n      }\n    }\n    pastAppointments {\n      ${APPOINTMENT_FIELDS}\n      transaction {\n        id\n        amountCents\n        state\n        type\n      }\n    }\n    expiredAppointments {\n      ${APPOINTMENT_FIELDS}\n    }\n  }\n  `\n\nconst Container = styled.div`\n  display: flex;\n  flex-flow: column;\n  color: #0b3954;\n`\nconst Title = styled.div`\n  font-family: \"Manrope\", serif;\n  font-size: 48px;\n  font-weight: 700;\n  color: #0b3954;\n`\nconst SubTitle = styled.div`\n  color: #0b3954;\n  font-size: 18px;\n`\nconst TabsContainer = styled.div`\n  display: flex;\n  gap: 18px;\n  margin-top: 24px;\n  overflow-x: scroll;\n`\nconst Tab = styled.div`\n  color: #7a7a7a;\n  font-size: 18px;\n  padding-bottom: 8px;\n  white-space: nowrap;\n\n  ${(props) =>\n    props.active &&\n    `\n    color: #0B3954;\n    border-bottom: solid 2px #0b3954;\n  `}\n  &:hover {\n    cursor: pointer;\n    ${(props) =>\n      !props.active &&\n      `\n      color: #0d9da4;\n      border-bottom: solid 2px #0d9da4;\n    `}\n  }\n`\n\nconst BookingsContainer = styled.div`\n  display: flex;\n  flex-flow: column;\n  gap: 24px;\n  margin-top: 24px;\n  width: 50%;\n\n  @media (max-width: 769px) {\n    width: 100%;\n  }\n`\nexport const CardTitle = styled.div`\n  color: #0b3954;\n  font-size: 16px;\n  font-weight: 500;\n  margin-top: 18px;\n`\nconst UPCOMING = \"upcoming\"\nconst PAST = \"past\"\nconst TRANSACTIONS = \"transactions\"\nconst EXPIRED = \"expired\"\n\nconst Bookings = () => {\n  const [activeTab, setActiveTab] = useState(UPCOMING)\n  const [upcoming, setUpcoming] = useState()\n  const [past, setPast] = useState()\n  const [expired, setExpired] = useState()\n\n  const [{ data }] = useQuery({\n    query: QUERY,\n    requestPolicy: \"cache-and-network\"\n  })\n\n  useEffect(() => {\n    if (data) {\n      setUpcoming(data.upcomingAppointments)\n      setPast(data.pastAppointments)\n      setExpired(data.expiredAppointments)\n    }\n  }, [data])\n\n  return (\n    <Container>\n      <Title>Your Bookings</Title>\n      <SubTitle>All of your upcoming and past bookings.</SubTitle>\n      <TabsContainer>\n        <Tab active={activeTab === UPCOMING} onClick={() => setActiveTab(UPCOMING)}>\n          Upcoming Bookings\n        </Tab>\n        <Tab active={activeTab === PAST} onClick={() => setActiveTab(PAST)}>\n          Past Bookings\n        </Tab>\n        <Tab active={activeTab === TRANSACTIONS} onClick={() => setActiveTab(TRANSACTIONS)}>\n          Transactions\n        </Tab>\n        <Tab active={activeTab === EXPIRED} onClick={() => setActiveTab(EXPIRED)}>\n          Expired Requests\n        </Tab>\n      </TabsContainer>\n      <BookingsContainer>\n        {activeTab === UPCOMING &&\n          upcoming &&\n          upcoming.map((booking) => <BookingCard booking={booking} key={`upcoming-${booking.id}`} />)}\n        {activeTab === UPCOMING && (!upcoming || upcoming?.length === 0) && (\n          <div>You do not have any upcoming booking requests.</div>\n        )}\n\n        {activeTab === PAST &&\n          past &&\n          past.map((booking) => <BookingCard booking={booking} key={`past-${booking.id}`} />)}\n        {activeTab === PAST && (!past || past?.length === 0) && <div>You do not have any past booking requests.</div>}\n\n        {activeTab === TRANSACTIONS &&\n          upcoming &&\n          upcoming.map((booking) => <TransactionCard booking={booking} key={`transaction-${booking.id}`} />)}\n        {activeTab === TRANSACTIONS && (!upcoming || upcoming?.length === 0) && (\n          <div>Your transactions will appear here after you book your first sessions.</div>\n        )}\n\n        {activeTab === EXPIRED &&\n          expired &&\n          expired.map((booking) => <BookingCard booking={booking} key={`expired-${booking.id}`} />)}\n        {activeTab === EXPIRED && (!expired || expired?.length === 0) && (\n          <div>You do not have any expired booking requests.</div>\n        )}\n      </BookingsContainer>\n    </Container>\n  )\n}\n\nexport default function ClientBookings() {\n  return (\n    <DefaultProvider>\n      <Bookings />\n    </DefaultProvider>\n  )\n}\n","import amplitude from \"amplitude-js\"\n\nexport const sendAmplitudeData = (eventType, eventProperties) => {\n  amplitude.getInstance().logEvent(eventType, eventProperties)\n}\n","import { CSVBoxButton } from \"@csvbox/react\"\nimport React, { useState } from \"react\"\nimport styled from \"styled-components\"\nimport { useMutation } from \"urql\"\n\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\nimport { Button } from \"../shared/Buttons\"\n\nimport DesktopH5 from \"./DesktopH5\"\nimport Modal from \"./Modal\"\nimport Toast from \"./Toast\"\n\nconst InviteClientsMutation = `\n  mutation InviteClients($clients: [ClientInput!]!) {\n    inviteClients (clients: $clients) {\n      erroredClients {\n        email\n      }\n    }\n  }\n`\n\nconst InviteBox = styled.div`\n  border: 1px solid #c8d6df;\n  padding: 24px;\n  margin-bottom: 16px;\n\n  i {\n    margin-right: 9px;\n    font-size: 18px;\n  }\n\n  .content-row {\n    display: flex;\n    align-items: center;\n    margin-bottom: 12px;\n  }\n\n  h4 {\n    font-family: \"Manrope\";\n    font-style: normal;\n    font-weight: 700;\n    font-size: 21px;\n    line-height: 32px;\n    letter-spacing: -0.02em;\n    color: #0b3954;\n  }\n\n  @media only screen and (max-width: 768px) {\n    display: none;\n  }\n`\n\nexport default function ClientUpload({ practice, checkImport, className }) {\n  const [, inviteClients] = useMutation(InviteClientsMutation)\n  const [showAlert, setShowAlert] = useState(false)\n  const [alertContent, setAlertContent] = useState(\"\")\n  const [showModal, setShowModal] = useState(false)\n  const [launchImport, setLaunchImport] = useState(false)\n  const [importSuccess, setImportSuccess] = useState(false)\n\n  const handleClientImport = (result, data) => {\n    const clientsForUpload = data.rows.map((uploadedClient) => ({\n      email: uploadedClient[\"email\"],\n      firstName: uploadedClient[\"first_name\"],\n      lastName: uploadedClient[\"last_name\"],\n      phone: uploadedClient[\"phone\"],\n      notes: uploadedClient[\"notes\"],\n      clientType: \"invited\",\n      invitedFrom: \"csv_import\"\n    }))\n\n    if (result) {\n      inviteClients({ clients: clientsForUpload }).then((res) => {\n        const inviteErrors = res.data.inviteClients.erroredClients.length\n\n        if (res.error) {\n          setShowAlert(true)\n          setAlertContent(`Error importing clients: ${res.error} Please check your data and try again.`)\n          setShowModal(false)\n        } else {\n          sendAmplitudeData(\"import clients submitted\", {\n            \"Total Rows\": data.rows.length,\n            \"Errored Invites\": inviteErrors\n          })\n          setShowAlert(true)\n          setImportSuccess(true)\n          setShowModal(false)\n          setAlertContent(\n            `${data.row_success - inviteErrors} clients invited successfully\n            ${inviteErrors > 0 ? `\\n Could not invite ${inviteErrors} clients` : \"\"}.`\n          )\n        }\n      })\n    } else {\n      console.log(\"Upload fail\")\n    }\n  }\n\n  return (\n    <div className={className}>\n      {checkImport ? (\n        <>\n          <Button type=\"primary\" size=\"small\" onClick={() => setShowModal(true)}>\n            Get started\n          </Button>\n          {launchImport ? (\n            <CSVBoxButton\n              licenseKey=\"XSwq17w1MiVmHnvStM7RmbA4JQvcTp\"\n              user={{\n                user_id: practice.id\n              }}\n              onImport={handleClientImport}\n              render={(launch) => {\n                setShowModal(false)\n                launch()\n              }}>\n              Import\n            </CSVBoxButton>\n          ) : (\n            <>\n              <Modal\n                open={showModal}\n                closeModal={() => {\n                  setShowModal(false)\n                }}\n                header={<DesktopH5 content=\"Invite your clients\" />}\n                footer={<></>}\n                size=\"small\">\n                <a onClick={() => setLaunchImport(true)}>\n                  <InviteBox>\n                    <div className=\"content-row\">\n                      <i className=\"icon-invite-clients\" />\n                      <h4>Invite clients</h4>\n                    </div>\n                    Got a client list? You can upload it before booking your first appointment.\n                  </InviteBox>\n                </a>\n                <a onClick={() => (window.location.href = \"/portal/calendar#create-appointment\")}>\n                  <InviteBox>\n                    <h4>No thanks, I&apos;m ready to book.</h4>\n                  </InviteBox>\n                </a>\n              </Modal>\n            </>\n          )}\n        </>\n      ) : (\n        <CSVBoxButton\n          licenseKey=\"XSwq17w1MiVmHnvStM7RmbA4JQvcTp\"\n          user={{\n            user_id: practice.id\n          }}\n          onImport={handleClientImport}\n          render={(launch) => (\n            <Button type=\"tertiary\" size=\"small\" onClick={launch}>\n              Invite clients\n            </Button>\n          )}>\n          Import\n        </CSVBoxButton>\n      )}\n      <Toast visible={showAlert} setVisible={setShowAlert}>\n        {alertContent} {importSuccess && <a onClick={() => (window.location.href = \"/portal/clients\")}>View</a>}\n      </Toast>\n    </div>\n  )\n}\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nconst VectorImg = styled.div`\n  background-image: url(\"/images/Vector.svg\");\n  background-position: center;\n  background-repeat: no-repeat;\n  background-size: cover;\n  height: 8px;\n  width: 14px;\n`\n\nconst Vector = ({ className }) => <VectorImg className={className} />\n\nexport default Vector\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\nimport Vector from \"../shared/Vector\"\n\nconst TherapyCategoriesContainer = styled.div`\n  position: absolute;\n  top: 100%;\n  left: 0;\n  width: 100%;\n  display: none;\n  flex-flow: column wrap;\n  background-color: #ffffff;\n  max-height: 450px;\n  justify-content: space-evenly;\n  align-items: flex-start;\n  padding-top: 20px;\n  padding-left: 30px;\n  padding-bottom: 30px;\n  flex-grow: 1;\n  overflow-x: auto;\n`\nconst TherapyCategory = styled.a`\n  margin: 5px;\n  color: #0b3954;\n  font-size: 14px;\n  &:hover {\n    color: #0d9da4;\n  }\n`\nconst BrowseTherapiesContainer = styled.div`\n  padding-top: 13px;\n  margin-left: 15px;\n  height: 75px;\n\n  @media (max-width: 1299px) {\n    margin-left: 0;\n  }\n\n  & > a > .browse-therapies-toggle {\n    margin-left: 10px;\n    margin-top: 2px;\n  }\n\n  &:hover {\n    ${TherapyCategoriesContainer} {\n      display: flex;\n    }\n    & > a {\n      background-color: transparent;\n      cursor: pointer;\n      color: #0d9da4 !important;\n\n      & > .browse-therapies-toggle {\n        transition: transform linear 0.1s;\n        transform: rotate(180deg);\n      }\n    }\n  }\n`\nconst TherapyCategories = ({ categories }) => (\n  <TherapyCategoriesContainer id=\"therapy-categories-container\">\n    {categories.map((c, index) => (\n      <TherapyCategory\n        onClick={() => sendAmplitudeData(\"browse therapy link clicked\", { Therapy: c })}\n        href={`/practitioner-search?query=${encodeURIComponent(c)}`}\n        key={`${c}-${index}`}>\n        {c}\n      </TherapyCategory>\n    ))}\n  </TherapyCategoriesContainer>\n)\n\nconst BrowseCategoriesCTA = ({ categories, classname, styling }) => (\n  <BrowseTherapiesContainer className=\"browse-category-link\">\n    <a className={classname} style={styling}>\n      Browse Services <Vector className=\"browse-therapies-toggle\" />\n    </a>\n    <TherapyCategories categories={categories} />\n  </BrowseTherapiesContainer>\n)\n\nexport default BrowseCategoriesCTA\n","import { useEffect } from \"react\"\n\nconst useMenuOutsideAlerter = (ref, setShow) => {\n  useEffect(() => {\n    function handleClickOutside(event) {\n      if (ref.current && !ref.current.contains(event.target)) {\n        setShow(false)\n      }\n    }\n    document.addEventListener(\"mousedown\", handleClickOutside)\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside)\n    }\n  }, [ref])\n}\n\nexport default useMenuOutsideAlerter\n","import React, { useEffect, useState, useRef } from \"react\"\nimport Geocode from \"react-geocode\"\nimport Turbolinks from \"turbolinks\"\n\nimport useMenuOutsideAlerter from \"../../hooks/useOutsideAlerter\"\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\n\nconst LocationSearchBox = ({ query, onClick, setShow }) => {\n  const locationSearchboxRef = useRef()\n  useMenuOutsideAlerter(locationSearchboxRef, setShow)\n  return (\n    <div className=\"location-search-box\" ref={locationSearchboxRef}>\n      <a\n        href=\"\"\n        onClick={(e) => {\n          e.preventDefault()\n          onClick()\n        }}>\n        <div className=\"location-search-row\" onClick={onClick}>\n          <div className=\"location-search-icon\">\n            <i className=\"icon-current-location\" />\n          </div>\n          <div className=\"location-search-text\">Use my current location</div>\n        </div>\n      </a>\n      <a href={`/practitioner-search?query=${query}&virtual=true`}>\n        <div className=\"location-search-row\">\n          <div className=\"location-search-icon\">\n            <i className=\"icon-virtual-filled\" />\n          </div>\n          <div className=\"location-search-text\">Browse virtual services</div>\n        </div>\n      </a>\n    </div>\n  )\n}\n\nconst LocationSearch = ({\n  setSearchLocation,\n  searchLocation,\n  setLatlng,\n  setIsVirtual,\n  query,\n  isVirtual,\n  onLocationFocus,\n  shouldRedirect\n}) => {\n  const [value, setValue] = useState(isVirtual ? \"\" : searchLocation)\n  const [show, setShow] = useState(false)\n  const autoCompleteRef = useRef()\n  const inputRef = useRef()\n  const options = {\n    types: [\"locality\", \"sublocality\", \"neighborhood\"]\n  }\n\n  const setValuesFromPlace = (place) => {\n    if (!place?.geometry) return null\n\n    const location = place.geometry.location\n    const lat = typeof location.lat === \"function\" ? location.lat() : location.lat\n    const lng = typeof location.lng === \"function\" ? location.lng() : location.lng\n\n    setLatlng([`${lat}`, `${lng}`])\n    setSearchLocation(place.formatted_address)\n    setValue(place.formatted_address)\n    sessionStorage.setItem(\"latlng\", [`${lat}`, `${lng}`])\n    sessionStorage.setItem(\"cityState\", place.formatted_address)\n    setIsVirtual(false)\n    if (shouldRedirect) {\n      sendAmplitudeData(\"location search submitted\", { location: place.formatted_address })\n      Turbolinks.visit(\n        `/practitioner-search?query=${encodeURIComponent(\n          $(\".react-autosuggest__input\").val()\n        )}&searched_location=${encodeURIComponent(\n          place.formatted_address\n        )}&aroundLatLng[lat]=${lat}&aroundLatLng[lng]=${lng}`\n      )\n    }\n  }\n\n  const submit = (e, clicked) => {\n    if (e.key === \"Enter\" || e.keyCode === 13 || clicked) {\n      Geocode.fromAddress(value)\n        .then((response) => {\n          const place = response.results[0]\n          setValuesFromPlace(place)\n        })\n        .catch((e) => {\n          console.error(`Error geocoding address ${value}: ${e.message}`) // eslint-disable-line\n        })\n    }\n  }\n\n  const findMyLocation = () => {\n    const geoLocation = window.navigator && window.navigator.geolocation\n    if (geoLocation) {\n      geoLocation.getCurrentPosition((position) => {\n        setLatlng([`${position.coords.latitude}`, `${position.coords.longitude}`])\n        sessionStorage.setItem(\"latlng\", [`${position.coords.latitude}`, `${position.coords.longitude}`])\n        Geocode.fromLatLng(position.coords.latitude, position.coords.longitude).then((response) => {\n          const formattedAddressArray = response.results[0].formatted_address.split(\", \")\n          const lat = response.results[0].geometry.location.lat\n          const lng = response.results[0].geometry.location.lng\n          const city = formattedAddressArray[1]\n          let state = formattedAddressArray[2]\n          state = state.split(\" \")[0]\n          const cityState = `${city}, ${state}`\n          setSearchLocation(cityState)\n          setValue(cityState)\n          sessionStorage.setItem(\"cityState\", cityState)\n          Turbolinks.visit(\n            `/practitioner-search?query=${encodeURIComponent(query)}&searched_location=${encodeURIComponent(\n              cityState\n            )}&aroundLatLng[lat]=${lat}&aroundLatLng[lng]=${lng}`\n          )\n        })\n      })\n    }\n  }\n\n  useEffect(() => {\n    const addPlaceChangedListener = async () => {\n      while (!window.google) await new Promise((resolve) => setTimeout(resolve, 1000))\n\n      autoCompleteRef.current = new window.google.maps.places.Autocomplete(inputRef.current, options)\n\n      autoCompleteRef.current.addListener(\"place_changed\", async function () {\n        try {\n          const place = await autoCompleteRef.current.getPlace()\n          setValuesFromPlace(place)\n        } catch (e) {\n          console.error(`Error updating place from Google autocomplete: ${e}`) // eslint-disable-line\n        }\n      })\n    }\n    addPlaceChangedListener()\n  }, [])\n\n  useEffect(() => {\n    setValue(searchLocation)\n  }, [searchLocation])\n\n  useEffect(() => {\n    if (sessionStorage.getItem(\"latlng\")) {\n      setLatlng(sessionStorage.getItem(\"latlng\").split(\",\"))\n      if (sessionStorage.getItem(\"cityState\")) {\n        setSearchLocation(sessionStorage.getItem(\"cityState\"))\n        setValue(sessionStorage.getItem(\"cityState\"))\n      }\n    } else {\n      findMyLocation()\n    }\n  }, [])\n\n  return (\n    <div className=\"location-search-container\">\n      <input\n        ref={inputRef}\n        className=\"location-search-input\"\n        type=\"search\"\n        placeholder={\"Location\"}\n        value={value}\n        onChange={(e) => {\n          setValue(e.target.value)\n        }}\n        onFocus={() => {\n          setShow(true)\n          if (onLocationFocus) {\n            onLocationFocus()\n          }\n        }}\n        onKeyUp={(e) => submit(e)}\n      />\n      <i className=\"icon-map-pin2\" />\n      <button className=\"button button-tertiary\" onClick={(e) => submit(e, true)}>\n        Search\n      </button>\n      {show && <LocationSearchBox query={query} onClick={findMyLocation} setShow={setShow} />}\n    </div>\n  )\n}\n\nexport default LocationSearch\n","import React, { useEffect, useState } from \"react\"\nimport Autosuggest from \"react-autosuggest\"\nimport { Highlight, connectAutoComplete } from \"react-instantsearch-dom\"\n\nimport { practitionerWebsiteUrl } from \"../../@core/practitioner/practitioner.utils\"\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\n\nimport LocationSearch from \"./LocationSearch\"\n\nconst ProRow = ({ hit }) => (\n  <div className=\"pro-row-suggestion\">\n    <div className=\"pro-row-suggestion-img\">\n      <img src={hit.user.photo} />\n    </div>\n    <div>\n      <div className=\"pro-row-suggestion-name\">{hit.user.name}</div>\n      <div className=\"pro-row-suggestion-info\">\n        <i className=\"icon-star-filled\" />\n        <span className=\"pro-row-suggestion-rating\">{hit.reviews_average}</span>\n        <span className=\"pro-row-suggestion-reviews\">&nbsp;({hit.reviews_count})</span>\n      </div>\n    </div>\n  </div>\n)\n\nconst SearchCategory = ({\n  currentRefinement,\n  hits,\n  refine,\n  setQuery,\n  setSearchLocation,\n  setLatlng,\n  setIsVirtual,\n  query,\n  searchLocation,\n  latlng,\n  isVirtual,\n  shouldRedirect,\n  onSearchFocus,\n  onLocationFocus,\n  activeFilter\n}) => {\n  const [value, setValue] = useState(currentRefinement || query)\n\n  useEffect(() => {\n    setValue(query)\n  }, [query])\n\n  const submit = (e) => {\n    if (e.key === \"Enter\" || e.keyCode === 13) {\n      setQuery(value)\n      sendAmplitudeData(\"top search submitted\", { search: value })\n      Turbolinks.visit(\n        `/practitioner-search?query=${encodeURIComponent(\n          value\n        )}&searched_location=${searchLocation}&aroundLatLng[lat]=${latlng[0]}&aroundLatLng[lng]=${latlng[1]}${\n          isVirtual && \"&virtual=true\"\n        }${activeFilter && \"&activeFilter=\" + activeFilter}`\n      )\n    }\n  }\n\n  const onSuggestionSelected = (e, result) => {\n    if (result.suggestion.user) {\n      setQuery(\"\")\n      setValue(result.suggestion.user.name)\n      sendAmplitudeData(\"pro selected from top search\", { pro: result.suggestion.user.slug })\n      window.location.href = practitionerWebsiteUrl(result.suggestion.user, null)\n    } else {\n      setQuery(result.suggestion.name)\n      setValue(result.suggestion.name)\n      if (shouldRedirect) {\n        sendAmplitudeData(\"category selected from top search\", { therapy: result.suggestion.name })\n        Turbolinks.visit(\n          `/practitioner-search?query=${encodeURIComponent(\n            result.suggestion.name\n          )}&searched_location=${searchLocation}&aroundLatLng[lat]=${latlng[0]}&aroundLatLng[lng]=${latlng[1]}${\n            isVirtual && \"&virtual=true\"\n          }`\n        )\n      } else if (onLocationFocus) {\n        onLocationFocus()\n      }\n    }\n  }\n\n  useEffect(() => {\n    setQuery(query)\n    setValue(query)\n  }, [query])\n\n  const onSuggestionCleared = () => {\n    setQuery(\"\")\n  }\n\n  const onChange = (e) => {\n    setQuery(e.target.value)\n    setValue(e.target.value)\n  }\n\n  const onSuggestionsFetchRequested = ({ value }) => {\n    refine(value)\n  }\n\n  const onSuggestionsClearRequested = () => {\n    refine()\n  }\n\n  const getSuggestionValue = (hit) => hit.name\n\n  const renderSuggestion = (hit) => {\n    if (hit.user) {\n      return <ProRow hit={hit} />\n    } else {\n      return <Highlight attribute=\"name\" hit={hit} tagName=\"mark\" />\n    }\n  }\n\n  const renderSectionTitle = (section) => (section.index == \"Specialty\" ? \"Therapies\" : \"Practitioners\")\n\n  const getSectionSuggestions = (section) => section.hits\n\n  const inputProps = {\n    placeholder: 'Try \"Massage\" or \"Back Pain\"',\n    onChange: onChange,\n    value,\n    name: \"search\",\n    onFocus: onSearchFocus,\n    onKeyUp: submit\n  }\n\n  return (\n    <div className=\"flex\" id=\"category-pro-search-form\">\n      <Autosuggest\n        suggestions={hits}\n        multiSection={true}\n        onSuggestionsFetchRequested={onSuggestionsFetchRequested}\n        onSuggestionsClearRequested={onSuggestionsClearRequested}\n        onSuggestionSelected={onSuggestionSelected}\n        getSuggestionValue={getSuggestionValue}\n        renderSuggestion={renderSuggestion}\n        inputProps={inputProps}\n        renderSectionTitle={renderSectionTitle}\n        getSectionSuggestions={getSectionSuggestions}\n        focusInputOnSuggestionClick={false}\n      />\n      <i className=\"icon-search\" />\n      {value !== \"\" && (\n        <i\n          className=\"icon-close autosuggest-clear\"\n          onClick={() => {\n            if (onLocationFocus) {\n              onLocationFocus()\n            }\n            onSuggestionCleared()\n            setValue(\"\")\n          }}\n        />\n      )}\n      <LocationSearch\n        setSearchLocation={setSearchLocation}\n        searchLocation={searchLocation}\n        setLatlng={setLatlng}\n        setIsVirtual={setIsVirtual}\n        query={query}\n        isVirtual={isVirtual}\n        onLocationFocus={onLocationFocus}\n        shouldRedirect={shouldRedirect}\n      />\n    </div>\n  )\n}\n\nexport default connectAutoComplete(SearchCategory)\n","import algoliasearch from \"algoliasearch\"\nimport React from \"react\"\nimport { InstantSearch, Configure, Index } from \"react-instantsearch-dom\"\n\nimport SearchCategory from \"./SearchCategory\"\n\nconst SearchBar = ({\n  envVars,\n  query,\n  setQuery,\n  searchLocation,\n  setSearchLocation,\n  latlng,\n  setLatlng,\n  isVirtual,\n  setIsVirtual,\n  shouldRedirect,\n  onSearchFocus,\n  onLocationFocus,\n  activeFilter\n}) => {\n  const searchClient = algoliasearch(envVars.algoliaAppId, envVars.algoliaApiKey)\n\n  return (\n    <div className=\"searchbar-container\">\n      <InstantSearch searchClient={searchClient} indexName=\"Specialty\">\n        <Configure hitsPerPage={10} />\n        <SearchCategory\n          setQuery={setQuery}\n          setSearchLocation={setSearchLocation}\n          setLatlng={setLatlng}\n          setIsVirtual={setIsVirtual}\n          query={query}\n          latlng={latlng}\n          searchLocation={searchLocation}\n          isVirtual={isVirtual}\n          shouldRedirect={shouldRedirect}\n          onSearchFocus={onSearchFocus}\n          onLocationFocus={onLocationFocus}\n          activeFilter={activeFilter}\n        />\n        <Index indexName=\"Specialty\" />\n        <Index indexName={`Practice_${process.env.NODE_ENV}`} />\n      </InstantSearch>\n    </div>\n  )\n}\n\nexport default SearchBar\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nconst Button = styled.button`\n  border: none;\n  padding: 24px 48px;\n  background: linear-gradient(215.91deg, #f4b965 12.73%, #f58c72 85.52%);\n  border-radius: 100px;\n  color: #fff;\n  font-size: 17px;\n  font-weight: 700;\n  text-align: center;\n  letter-spacing: 0.03em;\n  height: fit-content;\n  margin-top: 10px;\n\n  &:hover {\n    cursor: pointer;\n  }\n\n  &:disabled {\n    background: #c8d6df;\n\n    &:hover {\n      cursor: not-allowed;\n    }\n  }\n  ${({ fullWidth }) => fullWidth && `width: 100%;`}\n\n  ${({ size }) => size === \"slim\" && `padding-top: 19px; padding-bottom: 19px;`}\n\n  ${({ type }) =>\n    type === \"primary\" && `&:hover { background: linear-gradient(215.91deg, #EDB364 12.73%, #E96D74 85.52%) }`}\n`\nconst customStyling = {\n  secondary: {},\n  tertiary: {\n    background: \"transparent\",\n    color: \"#0B3954\",\n    border: \"1px solid #C8D6DF\"\n  },\n  link: {\n    color: \"#0D9DA4\",\n    background: \"transparent\",\n    border: \"1px solid #C8D6DF\"\n  },\n  quaternary: {\n    background: \"#fff\",\n    color: \"#0B3954\",\n    border: \"1px solid #C8D6DF\",\n    padding: \"8px 24px\",\n    fontSize: \"14px\",\n    fontWeight: \"400\",\n    lineHeight: \"16px\"\n  },\n  warning: {\n    background: \"#EB5757\",\n    color: \"#FFF\",\n    padding: \"24px 48px\",\n    fontSize: \"14px\",\n    fontWeight: \"700\",\n    fontSize: \"17px\",\n    letterSpacing: \"3%\",\n    lineHeight: \"16px\",\n    border: \"1px solid #EB5757\"\n  },\n  square: {\n    borderRadius: \"4px\"\n  },\n  text: {\n    marginTop: \"12px\",\n    border: \"none\"\n  }\n}\n\nexport default function RoundedButton({ type, label, disabled, onClick, fullWidth, size = \"full\", loading }) {\n  if (disabled) {\n    onClick = undefined\n  }\n\n  return (\n    <Button\n      style={customStyling[type]}\n      onClick={onClick}\n      disabled={disabled ? true : false}\n      fullWidth={fullWidth}\n      size={size}\n      type={type}>\n      {loading ? <img src=\"/images/button-spinner.gif\" width=\"20px\" /> : <>{label}</>}\n    </Button>\n  )\n}\n","import React, { useEffect, useRef } from \"react\"\n\nexport default function CsvReader({ handleFileUpload, reviewInput, upload }) {\n  const uploadFile = useRef(null)\n\n  useEffect(() => {\n    if (upload) {\n      uploadFile.current.click()\n    }\n  }, [upload])\n\n  const submit = (uploadedFile) => {\n    const file = uploadedFile\n    const reader = new FileReader()\n\n    reader.onload = function (e) {\n      const text = e.target.result\n      const invitationType = \"csv_import\"\n      reviewInput(text, invitationType)\n      handleFileUpload()\n    }\n\n    reader.readAsText(file)\n  }\n\n  return (\n    <div>\n      <div className=\"file has-name is-fullwidth\">\n        <label className=\"file-label\">\n          <input\n            className=\"button btn-primary\"\n            type=\"file\"\n            accept=\".csv\"\n            onChange={(e) => {\n              submit(e.target.files[0])\n            }}\n            style={{ display: \"none\" }}\n            ref={uploadFile}\n          />\n        </label>\n      </div>\n    </div>\n  )\n}\n","import React, { useState } from \"react\"\nimport styled from \"styled-components\"\n\nimport RoundedButton from \"../shared/RoundedButton\"\n\nimport CsvReader from \"./CsvReader\"\n\nconst lightbulb = require(\"../../../assets/images/lightbulb.png\")\nconst uploadClientListImage = require(\"../../../assets/images/upload-clientlist.png\")\n\nconst UploadContainer = styled.div`\n  border: 1px dashed #889fad;\n  height: 240px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-direction: column;\n  margin: auto;\n  max-width: 50%;\n  margin-bottom: 24px;\n\n  i {\n    margin-bottom: 24px;\n    &:before {\n      font-size: 33px;\n    }\n  }\n\n  span {\n    color: #55778a;\n  }\n`\n\nconst Divider = styled.div`\n  width: 50%;\n  margin: auto;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: center;\n  margin-bottom: 24px;\n`\n\nconst HR = styled.div`\n  border-bottom: 1px solid back;\n`\n\nconst Helper = styled.div`\n  font-size: 16px;\n  line-height: 21px;\n  font-weight: 500;\n  margin-bottom: 4px;\n\n  span {\n    color: #55778a;\n  }\n`\n\nconst InlineFlex = styled.div`\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n`\n\nconst LinkComponent = styled.div`\n  color: #0d9da4;\n  text-decoration: underline;\n  margin-left: 4px;\n\n  &:hover {\n    cursor: pointer;\n  }\n`\n\nconst InviteLater = styled.div`\n  color: #55778a;\n  font-size: 16px;\n  font-weight: 700;\n  line-height: 16px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding-top: 16px;\n\n  &:hover {\n    cursor: pointer;\n  }\n`\n\nconst ButtonWrapper = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n`\n\nconst HintContainer = styled.div`\n  background: #f3f8fb;\n  position: absolute;\n  top: 116px;\n  left: 76%;\n  width: 268px;\n  text-align: left;\n  padding: 32px 16px 16px 16px;\n  h3 {\n    font-weight: 700;\n    font-size: 18px;\n    line-height: 28px;\n    margin-bottom: 24px;\n  }\n\n  h4 {\n    font-weight: 500;\n    font-size: 16px;\n    line-height: 28px;\n  }\n`\n\nconst UploadWrapper = styled.div`\n  position: relative;\n  width: 100vw;\n  padding: auto 200px;\n  justify-content: center;\n  text-align: center;\n\n  h2 {\n    font-size: 24px;\n    line-height: 120%;\n    font-weight: 700;\n    margin-bottom: 16px;\n  }\n\n  p {\n    font-size: 16px;\n    font-weight: 500;\n    line-height: 28px;\n    margin-bottom: 32px;\n  }\n`\n\nconst Lightbulb = styled.div`\n  position: absolute;\n  top: -27px;\n  left: 100px;\n  width: 54px;\n  height: 54px;\n`\n\nexport default function ChooseMethod({ handleChoice, active, handleFileUpload, reviewInput }) {\n  const [uploadClick, setUploadClick] = useState(false)\n\n  return (\n    <div className=\"columns is-centered is-multiline\">\n      <UploadWrapper>\n        <h2>Step 1: Invite your clients to book with you.</h2>\n        <p>Got a client list? Upload it here.</p>\n        <UploadContainer>\n          <i className=\"icon-upload-2\" />\n          {/* TODO: add back when implementing step2 */}\n          {/* <Helper>Drag and drop your file here</Helper> */}\n          <InlineFlex>\n            {/* TODO: add back when implementing step2 */}\n            {/* <span>or</span> */}\n            <LinkComponent\n              onClick={() => {\n                setUploadClick(true)\n              }}>\n              Select file from your computer\n            </LinkComponent>\n          </InlineFlex>\n        </UploadContainer>\n        <div className=\"methods-form\">\n          <div>\n            {active === \"file\" && (\n              <div>\n                <CsvReader handleFileUpload={handleFileUpload} reviewInput={reviewInput} upload={uploadClick} />\n              </div>\n            )}\n          </div>\n        </div>\n        {/* Remove app references\n          <HintContainer>\n            <Lightbulb>\n              <img src={lightbulb} />\n            </Lightbulb>\n            <h3>{`Don't have a client list?`}</h3>\n            <h4>{`Don't worry, you'll be able to invite clients directly from your phone contacts after you download the app.`}</h4>\n          </HintContainer>\n        */}\n        <Divider>\n          <HR />\n          <span>or</span>\n          <HR />\n        </Divider>\n      </UploadWrapper>\n      <ButtonWrapper>\n        <RoundedButton\n          type=\"link\"\n          label=\"Add clients manually\"\n          onClick={() => {\n            handleChoice(\"copy-paste\")\n          }}\n        />\n        <a href=\"/portal/clients\">\n          <InviteLater>{`I'll do this later`}</InviteLater>\n        </a>\n      </ButtonWrapper>\n      <div className=\"column is-full has-text-centered\">\n        <img src={uploadClientListImage} />\n      </div>\n    </div>\n  )\n}\n","import React from \"react\"\n\nexport default function Row({ index, email, firstName, lastName, phone }) {\n  return (\n    <tr>\n      <td>{index}</td>\n      <td>{email}</td>\n      <td>{firstName}</td>\n      <td>{lastName}</td>\n      <td>{phone}</td>\n    </tr>\n  )\n}\n","import React from \"react\"\n\nimport Row from \"./Row\"\n\nexport default function Confirmation({ clients, existingClients }) {\n  return (\n    <div className=\"columns is-centered\">\n      <div\n        className={`column is-half ${\n          existingClients.length === clients.length || existingClients.length === 0 ? \"box\" : \"\"\n        }`}>\n        {existingClients.length === clients.length ? (\n          <div className=\"copy-paste-headline\">Uh oh!</div>\n        ) : (\n          <div className=\"copy-paste-headline\" style={{ marginBottom: \"4px\" }}>\n            Import was completed!\n          </div>\n        )}\n        <div>\n          {existingClients.length ? (\n            <div>\n              {existingClients.length === clients.length ? (\n                <div className=\"method-helper\" style={{ marginBottom: \"0\" }}>\n                  Looks like all of the clients you tried to add already exist in your directory.\n                </div>\n              ) : (\n                <div className=\"method-helper\">\n                  An invitation was sent to {clients.length - existingClients.length}{\" \"}\n                  {clients.length - existingClients.length > 1 ? \"people\" : \"person\"}.\n                  <br />\n                  <br />\n                  <div style={{ fontWeight: \"500\", color: \"#0B3954\" }}>\n                    These clients already exist in your directory\n                  </div>\n                  <div className=\"scrollable-area\">\n                    <table className=\"client-list table\">\n                      <thead>\n                        <tr>\n                          <th></th>\n                          <th>Email</th>\n                          <th>First Name</th>\n                          <th>Last Name</th>\n                          <th>Phone Number</th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {existingClients.map((row, index) => (\n                          <Row\n                            index={index + 1}\n                            email={row.email}\n                            first_name={row.first_name}\n                            last_name={row.last_name}\n                            phone={row.phone}\n                            key={index}\n                          />\n                        ))}\n                      </tbody>\n                    </table>\n                  </div>\n                </div>\n              )}\n            </div>\n          ) : (\n            <div className=\"method-helper\" style={{ marginBottom: \"0\", marginTop: \"28px\" }}>\n              An invitation email was sent to {clients.length} {clients.length > 1 ? \"people\" : \"person\"}!\n            </div>\n          )}\n        </div>\n        <a href=\"/portal/clients\" className=\"button btn-primary\" style={{ marginTop: \"32px\", width: \"100%\" }}>\n          See Clients\n        </a>\n      </div>\n    </div>\n  )\n}\n","import React, { useState } from \"react\"\n\nexport default function CopyPaste({ field, reviewInput, errorMessage }) {\n  const [localField, setLocalField] = useState(field)\n  const invitationType = \"copy_paste\"\n\n  const handleChange = (e) => {\n    setLocalField(e.target.value)\n  }\n\n  return (\n    <div className=\"columns is-centered\">\n      <div className=\"column is-four-fifths\">\n        <div className=\"copy-paste-headline\">Copy and paste contact information</div>\n        <div>\n          {localField.length ? (\n            <div className=\"copy-paste-placeholder\">\n              Email &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;First Name&emsp;Last Name&emsp;Phone\n              Number&#10;\n            </div>\n          ) : (\n            <div className=\"copy-paste-placeholder\">\n              Paste the contact information into this field (comma separated)\n            </div>\n          )}\n        </div>\n        <div>\n          <textarea\n            type=\"textarea\"\n            rows=\"10\"\n            className=\"textarea\"\n            value={localField}\n            onChange={(e) => handleChange(e)}\n            placeholder=\"Email &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;First Name&emsp;Last Name&emsp;Phone Number&#10;email@example.com&emsp;&emsp;John&emsp;&emsp;&emsp;&emsp;Doe&emsp;&emsp;&emsp;&emsp;1234567890&#10;bloggs_j@email.com&emsp;&emsp;Jane&emsp;&emsp;&emsp;&emsp;Bloggs&emsp;&emsp;&emsp;0987654321\"></textarea>\n        </div>\n        <button\n          className=\"button btn-primary\"\n          style={\n            localField.length\n              ? { marginTop: \"32px\", width: \"100%\" }\n              : { pointerEvents: \"none\", opacity: \"0.5\", marginTop: \"32px\", width: \"100%\" }\n          }\n          onClick={() => reviewInput(localField, invitationType)}>\n          Continue\n        </button>\n        <div className=\"has-text-centered\" style={{ color: \"red\", marginTop: \"12px\" }}>\n          {errorMessage}\n        </div>\n      </div>\n    </div>\n  )\n}\n","import React from \"react\"\n\nimport Row from \"./Row\"\n\nexport default function Review({ clients, submitContacts, editContacts }) {\n  return (\n    <div className=\"columns is-centered\">\n      <div className=\"column is-four-fifths\">\n        <div className=\"copy-paste-headline\">\n          Review & Finalize\n          <i className=\"icon-edit edit-contacts\" onClick={() => editContacts()}></i>\n        </div>\n        <div className=\"scrollable-area\">\n          <table className=\"client-list table\">\n            <thead>\n              <tr>\n                <th></th>\n                <th>Email</th>\n                <th>First Name</th>\n                <th>Last Name</th>\n                <th>Phone Number</th>\n              </tr>\n            </thead>\n            <tbody>\n              {clients.map((row, index) => (\n                <Row\n                  index={index + 1}\n                  email={row.email}\n                  firstName={row.firstName}\n                  lastName={row.lastName}\n                  phone={row.phone}\n                  key={index}\n                />\n              ))}\n            </tbody>\n          </table>\n        </div>\n        <button\n          className=\"button btn-primary\"\n          style={{ marginTop: \"32px\", width: \"100%\" }}\n          onClick={() => submitContacts()}>\n          Finalize import\n        </button>\n      </div>\n    </div>\n  )\n}\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nconst ProgressBar = ({ className, percentComplete }) => (\n  <div className={twMerge(\"h-1 w-full rounded-full bg-gray-light\", className)}>\n    <div className=\"h-[6px] rounded-full bg-teal\" style={{ width: percentComplete }}></div>\n  </div>\n)\n\nexport default ProgressBar\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport Photo from \"../../components/shared/Photo\"\nimport ProgressBar from \"../../components/shared/ProgressBar\"\n\nconst logo = require(\"../../../assets/images/healme_logo.svg\")\n\nexport const ReviewLayout = ({\n  children,\n  percentDone,\n  showProgressBar = true,\n  proPic,\n  onContinue,\n  continueDisabled,\n  hideContinue = false,\n  finalStep = false,\n  skipStep,\n  mobileOverflow = false,\n  showBackButton = true,\n  ...rest\n}) => (\n  <div\n    {...rest}\n    className=\"fixed left-0 top-0 z-9998 flex h-screen w-screen  justify-center overflow-y-scroll bg-gray-ultralight\">\n    <div className=\"mt-4 flex w-[560px] flex-col items-center sm:w-full\">\n      <img src={logo} width=\"20\" />\n      <ProgressBar\n        className={twMerge(\"mt-4 block h-[6px] w-[200px] rounded sm:w-[300px]\", !showProgressBar && \"opacity-0\")}\n        percentComplete={percentDone}\n      />\n      <div\n        className={twMerge(\n          \"my-4 mb-24 flex h-fit w-full flex-col rounded-xl border border-gray-light bg-white sm:my-0 sm:rounded-none\",\n          mobileOverflow ? \"sm:h-auto\" : \"sm:h-screen\"\n        )}>\n        <div className=\"p-12 sm:p-[25px] sm:pb-32\">\n          {proPic && (\n            <Photo\n              imgClassName=\"rounded-full mb-8 mx-auto sm:ml-0 sm:mb-6 block h-[80px] w-[80px]\"\n              filestack={proPic}\n            />\n          )}\n          {children}\n        </div>\n        {!hideContinue && (\n          <div className=\"flex w-full items-center justify-end border-t border-gray-light bg-white px-12 py-8 sm:fixed sm:bottom-0 sm:px-8\">\n            {skipStep && (\n              <Button type=\"tertiary\" className=\"mr-auto\" onClick={skipStep}>\n                Skip <span className=\"sm:hidden\">step</span>\n              </Button>\n            )}\n            {showBackButton && (\n              <Button type=\"tertiary\" className=\"float-right mr-4\" onClick={() => window.history.back()}>\n                Back\n              </Button>\n            )}\n            <Button type=\"primary\" className=\"float-right\" onClick={onContinue} disabled={continueDisabled}>\n              {finalStep ? \"Share review\" : \"Continue\"}\n            </Button>\n          </div>\n        )}\n      </div>\n    </div>\n  </div>\n)\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { practitionerWebsiteUrl } from \"../../@core/practitioner/practitioner.utils\"\nimport { CheckBox } from \"../../components/shared/Inputs\"\nimport { ButtonLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst TOGGLE_REVIEW_ANON_MUTATION = `\n  mutation ToggleReviewAnon($reviewId: ID!, $isAnon: Boolean!) {\n    toggleReviewAnon(reviewId: $reviewId, isAnon: $isAnon) {\n      result\n      errors\n    }\n  }\n`\n\nconst BookNext = ({ review }) => {\n  const { showToast } = useToast()\n  const [isAnon, setIsAnon] = useState(review.isAnonymous)\n  const [, toggleAnonReview] = useMutation(TOGGLE_REVIEW_ANON_MUTATION)\n\n  const websiteUrl = practitionerWebsiteUrl(review.practitioner, review.practice)\n\n  return (\n    <ReviewLayout percentDone=\"100%\" hideContinue={true} review={review}>\n      <div className=\"mx-auto my-12 w-4/5 text-center\">\n        <Typography variant=\"h1\">😁</Typography>\n        <Typography variant=\"h3\">Thank you for that {review?.client?.firstName}!</Typography>\n        <Typography className=\"text-center\" variant=\"subtitle\">\n          Your rating and review are now live on {review.practitioner.firstName} profile. Check them out!\n        </Typography>\n        <ButtonLink type=\"primary\" size=\"large\" className=\"mx-auto mt-6 py-3\" href={websiteUrl}>\n          Let&apos;s see it\n        </ButtonLink>\n      </div>\n      <div className=\"mt-6 text-center\">\n        <CheckBox\n          label=\"Leave review anonymously?\"\n          id=\"anonymous-reviews\"\n          onChange={() => {\n            setIsAnon(!isAnon)\n            toggleAnonReview({ reviewId: review.id, isAnon: !isAnon }).then((res) => {\n              if (res.data.toggleReviewAnon.result === \"success\") {\n                showToast(\"Review updated\")\n              } else {\n                showToast({\n                  content: `Error updating review: ${res.data.toggleReviewAnon.errors.join(\" \")}`,\n                  type: \"error\"\n                })\n              }\n            })\n          }}\n          checked={isAnon}\n        />\n\n        <Typography variant=\"micro\" as=\"p\">\n          Otherwise, will show as your first name and last initial.\n        </Typography>\n      </div>\n    </ReviewLayout>\n  )\n}\n\nexport default function ReviewBookNext(props) {\n  return (\n    <ToastProvider>\n      <GraphQLProvider>\n        <BookNext {...props} />\n      </GraphQLProvider>\n    </ToastProvider>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React from \"react\"\n\nimport { ToastProvider } from \"../contexts/ToastContext\"\n\nimport GraphQLProvider from \"./GraphQLProvider\"\n\nconst ReviewProvider = ({ children }) => (\n  <NiceModal.Provider>\n    <ToastProvider>\n      <GraphQLProvider>{children}</GraphQLProvider>\n    </ToastProvider>\n  </NiceModal.Provider>\n)\n\nexport default ReviewProvider\n","import React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { InputWithLabel } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst CREATE_CLIENT_MUTATION = `\n  mutation ReviewCreateClient($practiceId: ID!, $phone: String!, $firstName: String!) {\n    reviewCreateClient(practiceId: $practiceId, phone: $phone, firstName: $firstName) {\n      result\n      clientId\n      errors\n    }\n  }\n`\n\nconst ClientInfo = ({ review }) => {\n  const { showToast } = useToast()\n  const [firstName, setFirstName] = useState(\"\")\n  const [phone, setPhone] = useState(\"\")\n  const [, createClient] = useMutation(CREATE_CLIENT_MUTATION)\n  const [createdClientInfo, setCreatedClientInfo] = useState({})\n\n  useEffect(() => {\n    const createdClientInfo = localStorage.getItem(\"createdClientInfo\")\n    if (createdClientInfo) {\n      setCreatedClientInfo(JSON.parse(localStorage.getItem(\"createdClientInfo\")))\n    }\n  }, [])\n\n  const isFormValid = createdClientInfo || (firstName.trim().length > 2 !== \"\" && phone.trim().length > 12)\n\n  const handleCreateClient = () => {\n    if (createdClientInfo?.id) {\n      window.location.href = `/i/r/rating?referral_code=${review.referralCode}&client_id=${createdClientInfo.id}`\n    } else {\n      createClient({ practiceId: review.practiceId, phone, firstName }).then((res) => {\n        localStorage.setItem(\n          \"createdClientInfo\",\n          JSON.stringify({\n            firstName: firstName,\n            phone: phone,\n            id: res.data.reviewCreateClient.clientId\n          })\n        )\n        if (res.data.reviewCreateClient.result === \"success\") {\n          window.location.href = `/i/r/rating?referral_code=${review.referralCode}&client_id=${res.data.reviewCreateClient.clientId}`\n        } else {\n          showToast({\n            content: `Error creating client: Please enter a valid phone number to continue and leave a review.`,\n            type: \"error\"\n          })\n        }\n      })\n    }\n  }\n\n  return (\n    <ReviewLayout percentDone=\"30%\" onContinue={handleCreateClient} continueDisabled={!isFormValid}>\n      <Typography variant=\"h3\">Oh great, thank you for that!</Typography>\n      <Typography variant=\"body\">Before we continue, can you tell us who you are:</Typography>\n      <div className=\"mt-4 grid grid-cols-2 gap-4 sm:grid-cols-1\">\n        <InputWithLabel\n          label=\"First name\"\n          disabled={!!createdClientInfo?.id}\n          value={createdClientInfo?.id ? createdClientInfo.firstName : firstName}\n          onChange={(e) => setFirstName(e.target.value)}\n        />\n        <InputWithLabel\n          label=\"Phone\"\n          disabled={!!createdClientInfo?.id}\n          value={createdClientInfo?.id ? createdClientInfo.phone : phone}\n          type=\"phone\"\n          onChange={(e) => setPhone(e.target.value)}\n        />\n      </div>\n    </ReviewLayout>\n  )\n}\n\nexport default function ReviewClientInfo(props) {\n  return (\n    <ReviewProvider>\n      <ClientInfo {...props} />\n    </ReviewProvider>\n  )\n}\n","import { StarIcon } from \"@heroicons/react/24/solid\"\nimport React from \"react\"\n\nconst Star = ({ filled }) => {\n  const colorClass = filled ? \"text-orange\" : \"text-gray\"\n  return <StarIcon className={`${colorClass} h-5 w-5`} />\n}\n\nconst RatingStarRow = ({ total }) => {\n  let stars = []\n\n  for (let i = 0; i < 5; i++) {\n    stars.push(<Star key={i} filled={i < total} />)\n  }\n\n  return <div className=\"flex\">{stars}</div>\n}\n\nexport default RatingStarRow\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport RatingStarRow from \"../../components/shared/RatingStarRow\"\nimport Typography from \"../../components/shared/Typography\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\nimport { formatShortDate } from \"../../utils/utils\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst CONFIRM_REVIEW_MUTATION = `\n  mutation ConfirmReview($reviewId: ID!) {\n    confirmReview(reviewId: $reviewId) {\n      result\n      errors\n    }\n  }\n`\n\nconst Confirm = ({ review }) => {\n  const [showWarning, setShowWarning] = useState(false)\n  const [{ fetching }, confirmReview] = useMutation(CONFIRM_REVIEW_MUTATION)\n\n  const handleConfirm = () => {\n    confirmReview({\n      reviewId: review.id\n    }).then((res) => {\n      if (res.data.confirmReview.result === \"success\") {\n        window.location.href = `/i/r/text_review/${review.token}`\n      } else {\n        console.error(res)\n      }\n    })\n  }\n\n  return (\n    <ReviewLayout\n      percentDone=\"40%\"\n      showProgressBar={!showWarning}\n      hideContinue={true}\n      proPic={showWarning ? \"\" : review.practitioner.filestackPhoto}>\n      {showWarning ? (\n        <>\n          <Typography variant=\"h3\">Thank you for that.</Typography>\n          <Typography variant=\"body\">\n            Please email us at <UnderlinedLink href=\"mailto:support@heal.me\">support@heal.me</UnderlinedLink> with the\n            issue and we can coordinate with {review.practitioner.firstName}.\n          </Typography>\n        </>\n      ) : (\n        <>\n          <Typography variant=\"h3\">\n            {review.practitioner.name} wants to import your review. Does this look correct?\n          </Typography>\n          <Typography variant=\"body\" className=\"mt-1 text-gray-dark\">\n            {review.practitioner.firstName} is using Heal.me for bookings, and requested you confirm this review is\n            correct before we import it.\n          </Typography>\n          <div className=\"mt-6 rounded-xl border border-gray-light p-6 shadow\">\n            <Typography variant=\"body\" as=\"p\">\n              &ldquo;{review.review}&rdquo;\n            </Typography>\n            <div className=\"mt-2 flex flex-row items-center sm:flex-col\">\n              <span className=\"mr-2 text-gray-dark sm:mb-2\">\n                {\" \"}\n                {review.client.firstName} • {formatShortDate(review.createdAt)}\n              </span>\n              <RatingStarRow total={review.rating} />\n            </div>\n          </div>\n          <div className=\"mt-8 flex w-full items-center justify-end border-t border-gray-light bg-white p-0 sm:fixed sm:bottom-0 sm:left-0 sm:px-8 sm:py-4\">\n            <Button type=\"tertiary\" className=\"float-right mr-4 mt-8 sm:mt-0\" onClick={() => setShowWarning(true)}>\n              <span className=\"hidden sm:block\">No, it&apos;s not</span>\n              <span className=\"block sm:hidden\">No, this is wrong</span>\n            </Button>\n            <Button type=\"primary\" className=\"float-right mt-8 sm:mt-0\" onClick={handleConfirm} disabled={fetching}>\n              <span className=\"hidden sm:block\">Yes, this is</span>\n              <span className=\"block sm:hidden\">Yes, this is correct</span>\n            </Button>\n          </div>\n        </>\n      )}\n    </ReviewLayout>\n  )\n}\n\nexport default function ReviewConfirm(props) {\n  return (\n    <ReviewProvider>\n      <Confirm {...props} />\n    </ReviewProvider>\n  )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { EndorsementPill } from \"../../components/shared/Pill\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst REVIEW_ENDORSEMENTS_MUTATION = `\n  mutation ReviewAddEndorsements($reviewId: ID!, $endorsements: [String!]) {\n    reviewAddEndorsements(reviewId: $reviewId, endorsements: $endorsements) {\n      result\n      errors\n    }\n  }\n`\n\nconst EndorsementButton = ({ specialty, active, onClick, onCloseButtonClick }) => (\n  <EndorsementPill\n    value={specialty.id.toString()}\n    active={active}\n    className=\"mb-0 block\"\n    onClick={onClick}\n    onCloseButtonClick={onCloseButtonClick}>\n    {specialty.name}\n  </EndorsementPill>\n)\n\nconst Endorsements = ({ review }) => {\n  const { showToast } = useToast()\n  const [endorsements, setEndorsements] = useState([])\n  const [, addEndorsements] = useMutation(REVIEW_ENDORSEMENTS_MUTATION)\n\n  const isFormValid = endorsements.length > 0\n\n  const handleAddEndorsements = () => {\n    addEndorsements({ reviewId: review.id, endorsements: Array.from(endorsements) }).then((res) => {\n      if (res.data.reviewAddEndorsements.result === \"success\") {\n        window.location.href = `/i/r/text_review/${review.id}`\n      } else {\n        showToast({\n          content: `Error creating client: ${res.data.reviewAddEndorsements.errors.join(\" \")}`,\n          type: \"error\"\n        })\n      }\n    })\n  }\n\n  const onSpecialtyClick = (e) => {\n    setEndorsements((endorsements) => {\n      const newEndorsements = [...endorsements]\n      const specialtyId = e.target.value\n\n      if (newEndorsements.includes(specialtyId)) {\n        const index = newEndorsements.indexOf(specialtyId)\n        newEndorsements.splice(index, 1)\n      } else {\n        newEndorsements.push(specialtyId)\n      }\n      return newEndorsements\n    })\n  }\n\n  return (\n    <ReviewLayout\n      percentDone=\"70%\"\n      onContinue={handleAddEndorsements}\n      continueDisabled={!isFormValid}\n      proPic={review.practitioner.filestackPhoto}\n      skipStep={() => (window.location.href = `/i/r/text_review/${review.id}?skip_step=true`)}\n      mobileOverflow={true}>\n      <Typography variant=\"h3\">\n        Thank you for that great rating! What is {review.practitioner.firstName} good at helping with?\n      </Typography>\n      <Typography variant=\"subtitle\" className=\"mb-6\">\n        This is optional, but it lets us know how to match {review.practitioner.firstName} with ideal clients.\n      </Typography>\n      <div className=\"-mb-10 flex max-h-[300px] flex-wrap gap-2 overflow-y-scroll sm:mb-20 sm:h-auto sm:max-h-none\">\n        {review.skills.map((specialty) => (\n          <EndorsementButton\n            specialty={specialty}\n            key={specialty.id}\n            active={endorsements.includes(specialty.id.toString())}\n            onClick={onSpecialtyClick}\n          />\n        ))}\n      </div>\n    </ReviewLayout>\n  )\n}\n\nexport default function ReviewEndorsements(props) {\n  return (\n    <ReviewProvider>\n      <Endorsements {...props} />\n    </ReviewProvider>\n  )\n}\n","import React, { useState } from \"react\"\n\nimport { practitionerWebsiteUrl } from \"../../@core/practitioner/practitioner.utils\"\nimport { UnderlinedLink, ButtonLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst ReviewIntro = ({ review }) => {\n  const [showWarning, setShowWarning] = useState(false)\n\n  const websiteUrl = practitionerWebsiteUrl(review.practitioner, review.practice)\n\n  return (\n    <ReviewLayout\n      percentDone=\"20%\"\n      showProgressBar={!showWarning}\n      hideContinue={true}\n      proPic={showWarning ? \"\" : review.practitioner.filestackPhoto}>\n      {showWarning ? (\n        <>\n          <Typography variant=\"h3\">\n            Thank you for that. Unfortunately we can&apos;t accept a review from you.\n          </Typography>\n          <Typography variant=\"body\">\n            {review.practitioner.firstName} is using Heal.me for bookings, and we only show reviews from clients who’ve\n            worked with {review.practitioner.firstName}.\n          </Typography>\n          <ButtonLink\n            className=\"mt-4 w-full border border-gray bg-white text-center text-black active:bg-gray-light\"\n            href={websiteUrl}>\n            View {review.practitioner.firstName}&apos;s profile\n          </ButtonLink>\n          <UnderlinedLink\n            onClick={() => setShowWarning(false)}\n            className=\"mx-auto mt-4 block w-full text-center text-gray-dark\">\n            Oops, I made a mistake\n          </UnderlinedLink>\n        </>\n      ) : (\n        <>\n          <Typography variant=\"h3\">\n            Hi {review.client ? review.client.firstName : \"there\"}! Have you worked with {review.practitioner.name}{\" \"}\n            before?\n          </Typography>\n          <Typography variant=\"body\" className=\"mt-1 text-gray-dark\">\n            {review.practitioner.firstName} is using Heal.me for bookings, and requested a review from you based on your\n            previous experience.\n          </Typography>\n          <ButtonLink\n            className=\"mb-0 mt-6 w-full border border-gray bg-white text-center text-black\"\n            href={\n              review.client\n                ? `/i/r/rating?referral_code=${review.referralCode}&client_id=${review.clientId}`\n                : `/i/r/client_info/${review.referralCode}`\n            }\n            onClick={(e) => {\n              if (review.client) {\n                e.preventDefault()\n                window.location.href = `/i/r/rating?referral_code=${review.referralCode}&client_id=${review.clientId}`\n              }\n            }}>\n            Yes, I have!\n          </ButtonLink>\n\n          <ButtonLink\n            onClick={() => setShowWarning(true)}\n            className=\"mt-4 w-full border border-gray bg-white text-center text-black\">\n            No, I haven&apos;t\n          </ButtonLink>\n        </>\n      )}\n    </ReviewLayout>\n  )\n}\n\nexport default ReviewIntro\n","import React, { useState } from \"react\"\n\nexport default function RatingStar({ rating, setRating }) {\n  const [hover, setHover] = useState(null)\n  const keywords = [\"1\", \"2\", \"3\", \"4\", \"5\"]\n\n  return (\n    <div className=\"flex flex-row justify-evenly\">\n      {[...Array(5)].map((star, i) => {\n        const ratingValue = i + 1\n\n        return (\n          <div className=\"star-radiobutton\" key={ratingValue}>\n            <label className=\"mb-0\">\n              <input type=\"radio\" name=\"rating\" value={ratingValue} onClick={() => setRating(ratingValue)} />\n              <i\n                className={`icon-star-filled star h-[44px] w-[44px] ${\n                  ratingValue <= (hover || rating) ? \"star-filled\" : \"star\"\n                }`}\n                onMouseEnter={() => setHover(ratingValue)}\n                onMouseLeave={() => setHover(null)}\n              />\n            </label>\n            <span className=\"text-[20px] font-bold\">{keywords[i]}</span>\n          </div>\n        )\n      })}\n    </div>\n  )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\nimport RatingStar from \"../RatingStar\"\nimport LoadingSpinner from \"../shared/LoadingSpinner\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst REVIEW_RATING_MUTATION = `\n  mutation ReviewAddRating($practiceId: ID!, $clientId: ID, $rating: Int!, $appointmentId: ID ) {\n    reviewAddRating(practiceId: $practiceId, clientId: $clientId, rating: $rating, appointmentId: $appointmentId) {\n      result\n      token\n      errors\n    }\n  }\n`\n\nconst Rating = ({ review }) => {\n  const { showToast } = useToast()\n  const [rating, setRating] = useState(review?.rating)\n  const [, addRating] = useMutation(REVIEW_RATING_MUTATION)\n\n  const isFormValid = rating > 0\n\n  const handleAddRating = () => {\n    addRating({\n      practiceId: review.practiceId,\n      clientId: review.clientId,\n      rating,\n      appointmentId: review.appointmentId\n    }).then((res) => {\n      if (res.data.reviewAddRating.result === \"success\") {\n        window.location.href = `/i/r/text_review/${res.data.reviewAddRating.token}`\n      } else {\n        showToast({ content: `Error creating client: ${res.data.reviewAddRating.errors.join(\" \")}`, type: \"error\" })\n      }\n    })\n  }\n\n  useEffect(() => {\n    const urlParams = new URLSearchParams(window.location.search)\n    if (review.rating) {\n      handleAddRating()\n    } else if (urlParams.get(\"stars\")) {\n      setRating(Number(urlParams.get(\"stars\")))\n    }\n  }, [])\n\n  return (\n    <>\n      {!review.rating ? (\n        <ReviewLayout\n          percentDone=\"50%\"\n          onContinue={handleAddRating}\n          continueDisabled={!isFormValid}\n          proPic={review.practitioner.filestackPhoto}\n          showBackButton={false}>\n          <Typography variant=\"h3\">\n            Out of 5 stars, how would you rate your most recent visit with {review.practitioner.firstName}?\n          </Typography>\n          <div className=\"mt-4 text-center\">\n            <RatingStar rating={rating} setRating={setRating} />\n          </div>\n        </ReviewLayout>\n      ) : (\n        <LoadingSpinner />\n      )}\n    </>\n  )\n}\n\nexport default function ReviewRating(props) {\n  return (\n    <ReviewProvider>\n      <Rating {...props} />\n    </ReviewProvider>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { TextArea } from \"../../components/shared/Inputs\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst REVIEW_TEXT_REVIEW_MUTATION = `\n  mutation ReviewAddTextReview($reviewId: ID!, $text: String!) {\n    reviewAddTextReview(reviewId: $reviewId, text: $text) {\n      result\n      errors\n    }\n  }\n`\n\nconst FEATURE_REQUEST_MUTATION = `\n  mutation FeatureRequest($name: String!, $userId: ID, $clientId: ID) {\n    featureRequest(name: $name, userId: $userId, clientId: $clientId) {\n      result\n      errors\n    }\n  }\n`\n\nconst TextReview = ({ review }) => {\n  const { showToast } = useToast()\n  const [textReview, setTextReview] = useState(review?.review || \"\")\n  const [showVideo, setShowVideo] = useState(true)\n  const [, addTextReview] = useMutation(REVIEW_TEXT_REVIEW_MUTATION)\n  const [, featureRequest] = useMutation(FEATURE_REQUEST_MUTATION)\n\n  const handleAddTextReview = () => {\n    addTextReview({ reviewId: review.token, text: textReview }).then((res) => {\n      if (res.data.reviewAddTextReview.result === \"success\") {\n        window.location.href = `/i/r/book_next/${review.token}`\n      } else {\n        showToast({ content: `Error creating client: ${res.data.reviewAddTextReview.errors.join(\" \")}`, type: \"error\" })\n      }\n    })\n  }\n\n  const isFormValid = textReview?.length > 2\n\n  return (\n    <ReviewLayout\n      percentDone=\"90%\"\n      proPic={review.practitioner.filestackPhoto}\n      onContinue={handleAddTextReview}\n      continueDisabled={!isFormValid}\n      finalStep={true}>\n      <Typography variant=\"h3\">\n        {review.rating > 3 && \"Wonderful!\"} Do you want to leave a text or video review now?\n      </Typography>\n      <Typography variant=\"subtitle\">Share a few words about working with {review.practitioner.firstName}.</Typography>\n      <TextArea\n        placeholder=\"Enter your review\"\n        rows=\"3\"\n        className=\"mt-6\"\n        onChange={(e) => setTextReview(e.target.value)}\n        value={textReview ? textReview : \"\"}\n      />\n\n      {showVideo && (\n        <Button\n          className=\"mt-6 w-full\"\n          type=\"tertiary\"\n          onClick={() => {\n            NiceModal.show(\"videoReviewModal\")\n            featureRequest({ name: \"VideoReviews\", clientId: review.clientId }).then((res) => {\n              if (res.data.featureRequest.result === \"success\") {\n                console.log(\"Feature requested successfully\")\n              } else {\n                console.error(`Could not save feature request: ${res.data.featureRequest.errors.join(\" \")}`)\n              }\n            })\n          }}>\n          I&apos;d rather leave a video review\n        </Button>\n      )}\n      <NewModal\n        id=\"videoReviewModal\"\n        header=\"\"\n        showFooter={false}\n        hideModal={() => {\n          setShowVideo(false)\n          NiceModal.hide(\"videoReviewModal\")\n        }}>\n        <div className=\"p-6 text-center\">\n          <Typography variant=\"h2\" as=\"p\">\n            🚀\n          </Typography>\n          <Typography variant=\"h3\" className=\"mt-2\">\n            Thank you for your interest!\n          </Typography>\n          <Typography variant=\"subtitle\" className=\"mx-auto mt-2 max-w-xs\">\n            We’re not quite ready yet for video reviews, but we’re excited for it.\n          </Typography>\n          <Button\n            type=\"primary\"\n            size=\"large\"\n            className=\"mt-4\"\n            onClick={() => {\n              setShowVideo(false)\n              NiceModal.hide(\"videoReviewModal\")\n            }}>\n            Got it, hide this\n          </Button>\n        </div>\n      </NewModal>\n    </ReviewLayout>\n  )\n}\n\nexport default function ReviewTextReview(props) {\n  return (\n    <ReviewProvider>\n      <TextReview {...props} />\n    </ReviewProvider>\n  )\n}\n","import React, { createContext, useContext, useEffect, useState } from \"react\"\n\nimport { formatPhone, urqlClient } from \"../utils/utils\"\n\nconst PRACTICE_QUERY = `\n  query CurrentPracticeContext {\n    currentPractice {\n      id\n      recurringBookingsEnabled\n      packagesEnabled\n      clientNotesEnabled\n      bookableEventsEnabled\n      user { phone email }\n      hasPaymentProvider\n      paymentProvider\n      url\n      conferencingServices {\n        provider\n        active\n      }\n      locations {\n        id\n        singleLine\n      }\n    }\n  }\n`\n\nexport const PracticeContext = createContext()\n\nexport const PracticeProvider = ({ children }) => {\n  const [practice, setPractice] = useState({})\n  const [practiceServices, setPracticeServices] = useState(null)\n\n  const fetchPractice = () => {\n    urqlClient\n      .query(PRACTICE_QUERY)\n      .toPromise()\n      .then((res) => {\n        if (res.data?.currentPractice) {\n          setPractice(res.data.currentPractice)\n        } else {\n          console.error(\"Error fetching practice data\", res) // eslint-disable-line no-console\n        }\n      })\n  }\n\n  useEffect(() => {\n    fetchPractice()\n  }, [])\n\n  const practiceEmail = practice.user?.email\n  const practicePhone = formatPhone(practice.user?.phone)\n\n  return (\n    <PracticeContext.Provider\n      value={{\n        practice,\n        setPractice,\n        practiceEmail,\n        practicePhone,\n        fetchPractice,\n        practiceServices,\n        setPracticeServices\n      }}>\n      {children}\n    </PracticeContext.Provider>\n  )\n}\n\nexport const usePractice = () => useContext(PracticeContext)\n","import React, { useEffect, useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../../utils/mutations\"\nimport { capitalize } from \"../../../utils/utils\"\nimport PaymentProviderCardForm from \"../../payments/PaymentProviderCardForm\"\nimport { usePaymentProvider } from \"../../payments/PaymentProviderWrapper\"\nimport LoadingSpinner from \"../../shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../shared/Modal\"\nimport { RadioWithLabel } from \"../../shared/RadioButtons\"\nimport Typography from \"../../shared/Typography\"\n\nconst AddOrRetryModal = ({ headerLabel, open, closeModal, onSave, appointment, practice, client }) => {\n  const { showToast } = useToast()\n\n  const [loading, setLoading] = useState(false)\n  const [defaultPaymentMethod, setDefaultPaymentMethod] = useState(\n    client?.defaultPaymentMethod || appointment?.client?.defaultPaymentMethod\n  )\n  const [paymentMethod, setPaymentMethod] = useState(!defaultPaymentMethod ? \"new\" : \"default\")\n\n  const [{ data, fetching, error }] = useQuery({\n    query: DEFAULT_PAYMENT_METHOD_QUERY,\n    variables: {\n      clientId: appointment?.client?.id,\n      userId: appointment?.user?.id,\n      practiceId: practice.id\n    },\n    pause: !!defaultPaymentMethod,\n    requestPolicy: \"cache-and-network\"\n  })\n\n  useEffect(() => {\n    if (!defaultPaymentMethod && data?.defaultPaymentMethodPractice) {\n      setPaymentMethod(\"default\")\n      setDefaultPaymentMethod(data.defaultPaymentMethodPractice)\n    }\n  }, [data])\n\n  const { handleCardSavedOnProvider } = usePaymentProvider()\n\n  const handleCardSaved = async () => {\n    const showErrorAndClose = (message) => {\n      showToast({ content: `There was an error: ${message}`, type: \"error\" })\n      setLoading(false)\n      closeModal()\n    }\n\n    setLoading(true)\n\n    if (paymentMethod === \"new\") {\n      const paymentProviderResult = await handleCardSavedOnProvider()\n      if (paymentProviderResult.error) {\n        showErrorAndClose(paymentProviderResult.error || \"An error occurred\")\n        return\n      }\n    }\n\n    setLoading(false)\n    onSave()\n    closeModal()\n  }\n\n  const getDefaultPaymentMethodText = (paymentMethod) => {\n    if (!paymentMethod) return \"No payment method selected\"\n    return `${capitalize(paymentMethod.brand)} ending in ${paymentMethod.last4} • Expires ${paymentMethod.expMonth}/${\n      paymentMethod.expYear\n    }`\n  }\n\n  return (\n    <AnimatedModal\n      visible={open}\n      hideModal={closeModal}\n      header={headerLabel}\n      showFooter={true}\n      onSave={handleCardSaved}\n      saveDisabled={loading}\n      actionButtonCopy=\"Charge card\">\n      <div className=\"mt-4\">\n        <Typography variant=\"h5\" className=\"mb-4\">\n          Payment method\n        </Typography>\n\n        {fetching ? (\n          <LoadingSpinner />\n        ) : error ? (\n          <Typography variant=\"body\" className=\"text-red\">\n            An error occurred while fetching payment methods\n          </Typography>\n        ) : (\n          <div className=\"flex flex-col gap-2\">\n            {defaultPaymentMethod && (\n              <RadioWithLabel\n                value=\"default\"\n                name=\"payment-method\"\n                label={getDefaultPaymentMethodText(defaultPaymentMethod)}\n                checked={paymentMethod === \"default\"}\n                onChange={() => {\n                  setPaymentMethod(\"default\")\n                }}\n              />\n            )}\n            <RadioWithLabel\n              value=\"new\"\n              name=\"payment-method\"\n              label=\"New Credit card\"\n              checked={paymentMethod === \"new\"}\n              onChange={() => {\n                setPaymentMethod(\"new\")\n              }}\n            />\n            {paymentMethod === \"new\" && <PaymentProviderCardForm practice={practice} />}\n          </div>\n        )}\n      </div>\n    </AnimatedModal>\n  )\n}\n\nexport default AddOrRetryModal\n","import React, { useState } from \"react\"\n\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport PaymentProviderWrapper from \"../../payments/PaymentProviderWrapper\"\nimport { Button } from \"../../shared/Buttons\"\n\nimport AddOrRetryModal from \"./AddOrRetryModal\"\n\nconst AddOrRetryButton = ({ appointment, client, user, headerLabel, label, onSave, type = \"button\" }) => {\n  const [paymentModalOpen, setPaymentModalOpen] = useState(false)\n  const { practice } = usePractice()\n\n  const onClick = () => {\n    setPaymentModalOpen(true)\n  }\n\n  return (\n    <>\n      {type === \"button\" && <Button onClick={onClick}>{label || \"Add credit card\"}</Button>}\n      {type === \"link\" && (\n        <span className=\"cursor-pointer font-bold text-teal underline\" onClick={onClick}>\n          {label || \"Add credit card\"}\n        </span>\n      )}\n\n      {paymentModalOpen && (\n        <PaymentProviderWrapper practice={practice} appointment={appointment} client={client} user={user}>\n          <AddOrRetryModal\n            headerLabel={headerLabel || \"Add credit card\"}\n            open={paymentModalOpen}\n            closeModal={() => setPaymentModalOpen(false)}\n            onSave={onSave}\n            appointment={appointment}\n            practice={practice}\n            client={client}\n          />\n        </PaymentProviderWrapper>\n      )}\n    </>\n  )\n}\n\nexport default AddOrRetryButton\n","import React, { useEffect, useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useToast } from \"../../contexts/ToastContext\"\nimport AddOrRetryButton from \"../pro_portal/calendar/AddOrRetryButton\"\n\nimport Badge from \"./Badge\"\nimport { Box, Flyout } from \"./Layout\"\nimport { Link, UnderlinedLink } from \"./Links\"\nimport LoadingSpinner from \"./LoadingSpinner\"\nimport Typography from \"./Typography\"\n\nconst ACCEPT_APPOINTMENT_MUTATION = `\n  mutation AcceptAppointment($appointmentId: ID!) {\n    acceptAppointment(appointmentId: $appointmentId) {\n      result\n      errors\n    }\n  }\n`\n\nconst RETRY_PAYMENT_MUTATION = `\n  mutation RetryPayment($appointmentId: ID!) {\n    retryPayment(appointmentId: $appointmentId) {\n      result\n      errors\n    }\n  }\n`\n\nconst NotificationsFlyout = ({ visible, closeFlyout, fetching, notificationAppointments, reexecuteQuery }) => {\n  const [appointments, setAppointments] = useState([])\n\n  useEffect(() => {\n    setAppointments(notificationAppointments)\n  }, [notificationAppointments])\n\n  const [{ fetching: acceptAppointmentFetching }, acceptAppointment] = useMutation(ACCEPT_APPOINTMENT_MUTATION)\n  const [{ fetching: retryPaymentFetching }, retryPayment] = useMutation(RETRY_PAYMENT_MUTATION)\n  const mutationFetching = acceptAppointmentFetching || retryPaymentFetching\n  const { showToast } = useToast()\n\n  // TODO: refactor this to open the notification flyout on any page\n  const handleViewDetailsClick = (event, url) => {\n    event.preventDefault()\n    window.location.href = url\n    if (window.location.href.includes(\"/portal/calendar\")) {\n      window.location.reload()\n    }\n  }\n\n  const handleRetryPayment = (appointmentId) => {\n    retryPayment({ appointmentId }).then((res) => {\n      if (res.data?.retryPayment?.result === \"success\") {\n        showToast(\"Success! Payment processed.\")\n        setAppointments((prev) => prev.filter((appointment) => appointment.id !== appointmentId))\n      } else {\n        showToast({\n          type: \"error\",\n          content: `Payment failed: ${res.data?.retryPayment?.errors[0] || \"Internal server error\"}`\n        })\n      }\n    })\n  }\n\n  return (\n    <Flyout header=\"Notifications\" visible={visible} closeFlyout={closeFlyout}>\n      {fetching ? (\n        <LoadingSpinner />\n      ) : appointments.length > 0 ? (\n        <div className=\"flex flex-col gap-4\">\n          {appointments.map((appointment) => {\n            const upcoming = new Date(appointment.startsAt) > Date.now()\n            const pending = appointment.state === \"pending\"\n            const failed = appointment.paymentError\n            const overdue = !appointment.paymentError && !appointment.hasTransaction && !upcoming\n            const unprocessed = !appointment.paymentError && appointment.hasTransaction && !upcoming\n            const client = appointment.user || appointment.client\n            const buttonText = failed || unprocessed ? \"Retry\" : \"Add card\"\n            const badgeType = pending ? \"success\" : \"error\"\n            const badgeText = pending\n              ? \"New client\"\n              : failed\n              ? \"Payment failed\"\n              : overdue\n              ? \"Payment past due\"\n              : unprocessed\n              ? \"Payment unprocessed\"\n              : \"\"\n\n            const url = `/portal/calendar#${appointment.instantActionToken}`\n\n            return (\n              <Box\n                key={appointment.id}\n                className={mutationFetching ? \"pointer-events-none opacity-25\" : \"\"}\n                keepBorderInMobile={true}>\n                <div>\n                  <div className=\"flex justify-between\">\n                    <div className=\"font-bold\">{client.name}</div>\n                    <Badge type={badgeType}>{badgeText}</Badge>\n                  </div>\n                  <Typography variant=\"subtitle\">{appointment.formattedStartsAt}</Typography>\n                  <div className=\"mt-4 flex justify-between\">\n                    <Link href={url} onClick={(event) => handleViewDetailsClick(event, url)}>\n                      View details\n                    </Link>\n                    {pending ? (\n                      <button\n                        disabled={acceptAppointmentFetching}\n                        className=\"underline\"\n                        onClick={() => {\n                          acceptAppointment({ appointmentId: appointment.id }).then((res) => {\n                            if (res.data.acceptAppointment.result === \"success\") {\n                              showToast(\n                                <>\n                                  🎉 Appointment confirmed. <UnderlinedLink href={url}>Show</UnderlinedLink>\n                                </>\n                              )\n                            } else {\n                              showToast({ type: \"error\", content: \"There was an error confirming your appointment.\" })\n                            }\n                            reexecuteQuery()\n                          })\n                        }}>\n                        Confirm\n                      </button>\n                    ) : overdue || failed || unprocessed ? (\n                      <>\n                        <AddOrRetryButton\n                          appointment={appointment}\n                          headerLabel={\"Choose your payment method\"}\n                          label={buttonText}\n                          onSave={() => handleRetryPayment(appointment.id)}\n                          type={\"link\"}\n                        />\n                      </>\n                    ) : null}\n                  </div>\n                </div>\n              </Box>\n            )\n          })}\n        </div>\n      ) : (\n        <div className=\"text-center\">You&apos;re all caught up 🎉</div>\n      )}\n    </Flyout>\n  )\n}\n\nexport default NotificationsFlyout\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { BellIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\nimport { CounterBadge } from \"../shared/Badge\"\nimport NotificationsFlyout from \"../shared/NotificationsFlyout\"\n\nconst USER_CLIENT_FIELDS = \"id name firstName lastName\"\nconst APPOINTMENT_FIELDS = `\n  id startsAt endsAt state instantActionToken hasTransaction formattedStartsAt\n  client { ${USER_CLIENT_FIELDS} }\n`\n\nconst INBOX_QUERY = `\n  query ProInbox {\n    proInbox {\n      failedPayments {\n        paymentError\n        ${APPOINTMENT_FIELDS}\n      }\n      missingPayments { ${APPOINTMENT_FIELDS} }\n      pendingAppointments { ${APPOINTMENT_FIELDS} }\n    }\n  }\n`\n\nconst Inbox = () => {\n  const [showFlyout, setShowFlyout] = useState(false)\n\n  const [{ data, fetching }, reexecuteQuery] = useQuery({\n    query: INBOX_QUERY,\n    requestPolicy: \"cache-and-network\"\n  })\n\n  let notificationAppointments = []\n  if (data && data.proInbox) {\n    let allNotifications = [\n      ...(data.proInbox.failedPayments || []),\n      ...(data.proInbox.missingPayments || []),\n      ...(data.proInbox.pendingAppointments || [])\n    ]\n    notificationAppointments = allNotifications.sort((a, b) => {\n      if (!a || !b) return 0\n      if (a.state === \"pending\" && b.state !== \"pending\") {\n        return -1 // \"pending\" items come first\n      } else if (a.state !== \"pending\" && b.state === \"pending\") {\n        return 1 // \"pending\" items come first\n      } else {\n        // If both items have the same state or non-pending states, sort by date\n        const dateA = new Date(a.startsAt)\n        const dateB = new Date(b.startsAt)\n        return dateA - dateB\n      }\n    })\n  }\n\n  const badgeStyles =\n    notificationAppointments.length > 9 ? \"font-bold p-[3px] min-w-[16px] w-auto right-[12px]\" : \"right-4\"\n\n  return (\n    <>\n      <a className=\"relative\" onClick={() => setShowFlyout(true)}>\n        <BellIcon className=\"mr-4 h-8 w-8 text-gray-dark\" />\n        {notificationAppointments.length > 0 && (\n          <CounterBadge className={`absolute ${badgeStyles} top-0 border-2 border-white bg-orange text-[10px]`}>\n            {notificationAppointments.length}\n          </CounterBadge>\n        )}\n      </a>\n      <NotificationsFlyout\n        visible={showFlyout}\n        closeFlyout={() => setShowFlyout(false)}\n        fetching={fetching}\n        reexecuteQuery={reexecuteQuery}\n        notificationAppointments={notificationAppointments}\n      />\n    </>\n  )\n}\n\nexport default function ProInbox() {\n  return (\n    <NiceModal.Provider>\n      <ToastProvider>\n        <GraphQLProvider>\n          <PracticeProvider>\n            <Inbox />\n          </PracticeProvider>\n        </GraphQLProvider>\n      </ToastProvider>\n    </NiceModal.Provider>\n  )\n}\n","import React, { createContext, useContext } from \"react\"\n\nconst FeatureFlagContext = createContext({})\n\nexport const FeatureFlagProvider = ({ children, flags }) => (\n  <FeatureFlagContext.Provider value={flags}>{children}</FeatureFlagContext.Provider>\n)\n\nexport const useFeatureFlags = () => useContext(FeatureFlagContext)\n","import {\n  CalendarIcon as CalendarIconOutline,\n  UserIcon as UserIconOutline,\n  BanknotesIcon as BanknotesIconOutline,\n  Cog8ToothIcon as Cog8ToothIconOutline,\n  ChatBubbleLeftIcon as ChatBubbleLeftIconOutline,\n  NewspaperIcon as NewspaperIconOutline,\n  GlobeAltIcon as GlobeAltIconOutline,\n  CurrencyDollarIcon as CurrencyDollarIconOutline,\n  QuestionMarkCircleIcon as QuestionMarkCircleIconOutline\n} from \"@heroicons/react/24/outline\"\nimport {\n  CalendarIcon as CalendarIconSolid,\n  UserIcon as UserIconSolid,\n  BanknotesIcon as BanknotesIconSolid,\n  Cog8ToothIcon as Cog8ToothIconSolid,\n  ChatBubbleLeftIcon as ChatBubbleLeftIconSolid,\n  NewspaperIcon as NewspaperIconSolid,\n  GlobeAltIcon as GlobeAltIconSolid,\n  CurrencyDollarIcon as CurrencyDollarIconSolid,\n  QuestionMarkCircleIcon as QuestionMarkCircleIconSolid\n} from \"@heroicons/react/24/solid\"\nimport React from \"react\"\n\nimport { useFeatureFlags } from \"../contexts/FeatureFlagContext\"\n\nconst navItems = [\n  {\n    name: \"Calendar\",\n    href: \"/portal/calendar\",\n    solidIcon: <CalendarIconSolid className=\" h-6 w-6 text-black\" />,\n    outlineIcon: <CalendarIconOutline className=\" h-6 w-6 text-gray-dark\" />\n  },\n  {\n    name: \"Clients\",\n    href: \"/portal/clients\",\n    solidIcon: <UserIconSolid className=\" h-6 w-6 text-black\" />,\n    outlineIcon: <UserIconOutline className=\" h-6 w-6 text-gray-dark\" />\n  },\n  {\n    name: \"Payments\",\n    href: \"/portal/payments\",\n    solidIcon: <BanknotesIconSolid className=\" h-6 w-6 text-black\" />,\n    outlineIcon: <BanknotesIconOutline className=\" h-6 w-6 text-gray-dark\" />\n  },\n  {\n    name: \"My Practice\",\n    href: \"/portal/services\",\n    solidIcon: <NewspaperIconSolid className=\" h-6 w-6 text-black\" />,\n    outlineIcon: <NewspaperIconOutline className=\" h-6 w-6 text-gray-dark\" />,\n    children: [\n      {\n        name: \"Services\",\n        href: \"/portal/services\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Locations & Hours\",\n        href: \"/portal/services/locations\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Details\",\n        href: \"/portal/profile/combined\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Credentials\",\n        href: \"/portal/profile/credential\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Intake Form\",\n        href: \"/portal/settings/intake_forms\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Keywords\",\n        href: \"/portal/reviews/keywords\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Gift Cards\",\n        href: \"/portal/gift_card_templates\",\n        solidIcon: null,\n        outlineIcon: null\n      }\n    ]\n  },\n  {\n    name: \"My Website\",\n    href: \"/portal/website/settings\",\n    solidIcon: <GlobeAltIconSolid className=\" h-6 w-6 text-black\" />,\n    outlineIcon: <GlobeAltIconOutline className=\" h-6 w-6 text-gray-dark\" />,\n    children: [\n      {\n        name: \"Content\",\n        href: \"/portal/website/builder\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Settings\",\n        href: \"/portal/website/settings\",\n        solidIcon: null,\n        outlineIcon: null\n      }\n    ]\n  },\n  {\n    name: \"Reviews\",\n    href: \"/portal/reviews/request\",\n    solidIcon: <ChatBubbleLeftIconSolid className=\" h-6 w-6 text-black\" />,\n    outlineIcon: <ChatBubbleLeftIconOutline className=\" h-6 w-6 text-gray-dark\" />,\n    children: [\n      {\n        name: \"Request\",\n        href: \"/portal/reviews/request\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Import\",\n        href: \"/portal/reviews/import\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Completed\",\n        href: \"/portal/reviews/completed\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Pending\",\n        href: \"/portal/reviews/pending\",\n        solidIcon: null,\n        outlineIcon: null\n      }\n    ]\n  },\n  {\n    name: \"Settings\",\n    href: \"/portal/settings\",\n    solidIcon: <Cog8ToothIconSolid className=\" h-6 w-6 text-black\" />,\n    outlineIcon: <Cog8ToothIconOutline className=\" h-6 w-6 text-gray-dark\" />,\n    children: [\n      {\n        name: \"Account\",\n        href: \"/portal/settings/personal\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Calendar\",\n        href: \"/portal/settings/calendar\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Video Conferencing\",\n        href: \"/portal/settings/conferencing\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Payments\",\n        href: \"/portal/settings/banking\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Communication\",\n        href: \"/portal/settings/communication\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Booking\",\n        href: \"/portal/settings/booking\",\n        solidIcon: null,\n        outlineIcon: null\n      },\n      {\n        name: \"Subscription\",\n        href: \"/portal/subscriptions\",\n        solidIcon: null,\n        outlineIcon: null\n      }\n    ]\n  },\n  {\n    name: \"Earn $50\",\n    href: \"/portal/referral_program\",\n    solidIcon: <CurrencyDollarIconSolid className=\" h-6 w-6 text-black\" />,\n    outlineIcon: <CurrencyDollarIconOutline className=\" h-6 w-6 text-gray-dark\" />\n  },\n  {\n    name: \"Help\",\n    href: \"#\",\n    solidIcon: <QuestionMarkCircleIconSolid className=\"h-6 w-6 text-black\" />,\n    outlineIcon: <QuestionMarkCircleIconOutline className=\"h-6 w-6 text-gray-dark\" />,\n    id: \"Intercom\"\n  }\n]\n\nexport function getSideNavigationItems({ websitePlan }) {\n  const { giftCardsEnabled, conferencingEnabled } = useFeatureFlags()\n\n  let navigationItems = [...navItems]\n\n  navigationItems = !websitePlan ? navigationItems : navigationItems.filter((item) => item.name !== \"My Website\")\n\n  // Filter both top level and sub nav items for gift cards and video conferencing\n  navigationItems = navigationItems.map((item) => {\n    if (item.children) {\n      return {\n        ...item,\n        children: item.children.filter((child) => {\n          if (!giftCardsEnabled && child.name === \"Gift Cards\") return false\n          if (!conferencingEnabled && child.name === \"Video Conferencing\") return false\n          return true\n        })\n      }\n    }\n    return item\n  })\n\n  return navigationItems\n}\n","import { Menu, MenuButton, MenuItem, MenuItems, Transition } from \"@headlessui/react\"\nimport { Bars3Icon, ChevronUpIcon, ChevronDownIcon } from \"@heroicons/react/24/solid\"\nimport React, { Fragment, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport ProInbox from \"../components/pro_portal/ProInbox\"\nimport { getSideNavigationItems } from \"../utils/sideNavigationUtils\"\n\nimport { Button } from \"./shared/Buttons\"\nimport { Divider, Flyout } from \"./shared/Layout\"\n\nconst PortalHeader = ({\n  proUrl,\n  proName,\n  proEmail,\n  photoUrl,\n  eventsEnabled,\n  intakeFormsEnabled,\n  customDomainEnabled\n}) => {\n  const mobileMenuProps = {\n    proName,\n    proEmail,\n    proUrl,\n    photoUrl,\n    eventsEnabled,\n    intakeFormsEnabled,\n    customDomainEnabled\n  }\n\n  return (\n    <div className=\"fixed right-0 top-0 z-20 w-full border-b border-gray-light bg-white text-black\">\n      <div className=\"flex items-center justify-between\">\n        <a className=\"p-4 min_md:invisible\" href=\"/\">\n          <img src=\"/images/healme_logo.svg\" alt=\"Logo\" />\n        </a>\n        <div className=\"flex items-center justify-end p-4 sm:py-2\">\n          <div className=\"flex items-center\">\n            <a href={proUrl} className=\"mr-4 sm:hidden\" target=\"_blank\" rel=\"noreferrer\">\n              <Button type=\"tertiary\">Preview website</Button>\n            </a>\n            <ProInbox />\n            <div className=\"md:hidden\">\n              <UserDropdown photoUrl={photoUrl} proName={proName} proEmail={proEmail} proUrl={proUrl} />\n            </div>\n            <div className=\"pl-4 min_md:hidden\">\n              <MobileMenuHambuger mobileMenuProps={mobileMenuProps} />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nconst HealMenuItem = ({ className, children, ...rest }) => (\n  <MenuItem className={twMerge(\"mb-0 block px-6 py-2\", className)} {...rest}>\n    {children}\n  </MenuItem>\n)\n\nconst UserDropdown = ({ photoUrl, proName, proEmail, proUrl }) => (\n  <Menu as=\"div\" className=\"relative inline-block text-left\">\n    {({ open }) => (\n      <>\n        <div>\n          <MenuButton className=\"inline w-full justify-center rounded-full\">\n            <img className=\"inline h-10 w-10 rounded-full\" src={photoUrl} />\n          </MenuButton>\n        </div>\n\n        <Transition\n          show={open}\n          as={Fragment}\n          enter=\"transition ease-out duration-100\"\n          enterFrom=\"transform opacity-0 scale-95\"\n          enterTo=\"transform opacity-100 scale-100\"\n          leave=\"transition ease-in duration-75\"\n          leaveFrom=\"transform opacity-100 scale-100\"\n          leaveTo=\"transform opacity-0 scale-95\">\n          <MenuItems\n            static\n            className=\"absolute right-0 mt-2 w-[180px] origin-top-right rounded-xl border border-gray-light bg-white py-2 shadow-lg\">\n            <HealMenuItem onClick={(e) => e.preventDefault()}>\n              <span className=\"truncate font-bold\">{proName}</span>\n            </HealMenuItem>\n            <HealMenuItem className=\"pt-0\" onClick={(e) => e.preventDefault()}>\n              <span className=\"truncate text-sm text-gray-dark\">{proEmail}</span>\n            </HealMenuItem>\n            <Divider className=\"my-2\" />\n            <HealMenuItem className=\"min_md:hidden\" as=\"div\">\n              <a\n                className=\"block w-full rounded border border-gray bg-white py-1.5 text-center font-bold focus:outline-none focus:ring-2 focus:ring-blue active:bg-gray-light\"\n                target=\"_blank\"\n                href={proUrl}\n                rel=\"noreferrer\">\n                Preview website\n              </a>\n            </HealMenuItem>\n            <HealMenuItem className=\"hover:bg-gray-ultralight\">\n              <a href=\"/portal/settings/personal\">My Account</a>\n            </HealMenuItem>\n            <HealMenuItem className=\"hover:bg-gray-ultralight md:hidden\">\n              <a href=\"/portal/clients\">Invite Clients</a>\n            </HealMenuItem>\n            <Divider className=\"my-2\" />\n            <HealMenuItem className=\"hover:bg-gray-ultralight\">\n              <a href=\"/logout\" className=\"block text-gray-dark\">\n                Log out\n              </a>\n            </HealMenuItem>\n          </MenuItems>\n        </Transition>\n      </>\n    )}\n  </Menu>\n)\n\nconst MobileMenuHambuger = ({ mobileMenuProps }) => {\n  const [showFlyout, setShowFlyout] = useState(false)\n\n  return (\n    <>\n      <a className=\"relative\" onClick={() => setShowFlyout(true)}>\n        <Bars3Icon className=\"h-8 w-8 text-gray-dark\" />\n      </a>\n      <MobileMenuFlyout\n        visible={showFlyout}\n        closeFlyout={() => setShowFlyout(false)}\n        mobileMenuProps={mobileMenuProps}\n      />\n    </>\n  )\n}\n\nconst MobileMenuFlyout = ({ visible, closeFlyout, mobileMenuProps }) => {\n  const {\n    proName,\n    proEmail,\n    proUrl,\n    photoUrl,\n    eventsEnabled,\n    intakeFormsEnabled,\n    customDomainEnabled,\n    websitePlan,\n    websiteBuilderEnabled\n  } = mobileMenuProps\n\n  const [openItems, setOpenItems] = useState({})\n\n  const toggleItem = (itemName) => {\n    setOpenItems((prev) => ({\n      ...prev,\n      [itemName]: !prev[itemName]\n    }))\n  }\n\n  const navigationItems = getSideNavigationItems({\n    eventsEnabled,\n    intakeFormsEnabled,\n    customDomainEnabled,\n    websitePlan,\n    websiteBuilderEnabled\n  })\n\n  return (\n    <Flyout header=\"Menu\" visible={visible} closeFlyout={closeFlyout}>\n      <div className=\"mb-4 flex items-center\">\n        <img className=\"h-10 w-10 rounded-full\" src={photoUrl} />\n        <div className=\"ml-4\">\n          <div className=\"font-bold\">{proName}</div>\n          <div className=\"text-sm text-gray-dark\">{proEmail}</div>\n        </div>\n      </div>\n      <a\n        className=\"block w-full rounded border border-gray bg-white py-1.5 text-center font-bold focus:outline-none focus:ring-2 focus:ring-blue active:bg-gray-light\"\n        target=\"_blank\"\n        href={proUrl}\n        rel=\"noreferrer\">\n        Preview website\n      </a>\n      <Divider className=\"my-2\" />\n      {navigationItems.map((item) => (\n        <div key={item.name} className=\"my-4\">\n          <div\n            className=\"flex cursor-pointer items-center justify-between\"\n            onClick={() => item.children && toggleItem(item.name)}>\n            <a href={item.children ? \"#\" : item.href} className=\"font-bold\" {...(item.id ? { id: item.id } : {})}>\n              {item.name}\n            </a>\n            {item.children && (\n              <span>\n                {openItems[item.name] ? <ChevronUpIcon className=\"h-5 w-5\" /> : <ChevronDownIcon className=\"h-5 w-5\" />}\n              </span>\n            )}\n          </div>\n\n          {item.children && openItems[item.name] && (\n            <div className=\"ml-4 mt-2\">\n              {item.children.map((child) => (\n                <a key={child.name} href={child.href} className=\"flex px-4 py-2 text-gray-dark\">\n                  {child.name}\n                </a>\n              ))}\n            </div>\n          )}\n        </div>\n      ))}\n      <Divider className=\"my-4\" />\n      <div>\n        <a href=\"/logout\" className=\"flex text-gray-dark\">\n          Log out\n        </a>\n      </div>\n    </Flyout>\n  )\n}\n\nexport default PortalHeader\n","import React, { createContext, useContext, useState } from \"react\"\n\nexport const CalendarFlyoutContext = createContext()\n\n// Used on ProCalendar, PaymentDirectory, BookableEvents\nexport const CalendarFlyoutProvider = ({ children }) => {\n  const [showFlyout, setShowFlyout] = useState(false)\n  const [eventType, setEventType] = useState(\"client\")\n\n  const value = {\n    showFlyout,\n    setShowFlyout,\n    eventType,\n    setEventType\n  }\n\n  return <CalendarFlyoutContext.Provider value={value}>{children}</CalendarFlyoutContext.Provider>\n}\n\nexport const useCalendarFlyout = () => useContext(CalendarFlyoutContext)\n","export const APPOINTMENT_FIELDS_FOR_CALENDAR = `\n  id\n  isVirtual\n  virtualMeetingLinkWithFallback\n  startsAt\n  endsAt\n  amountCents\n  tipAmountCents\n  fullTotal\n  paymentIntentId\n  timeZone\n  state\n  pendingOrApproved\n  recurrenceFrequency\n  recurrenceCount\n  recurrenceUntil\n  instantActionToken\n  bookedBy\n  createdAt\n  newClient\n  markPaid\n  paymentStatus\n  paymentError\n  paymentMethod\n  packageSessionNumber\n  package { id numberOfSessions name createdAt }\n  adjustments { id adjustedAt amountCents note }\n  reviewLink\n  appointmentServices {\n    amountCents\n    service {\n      id\n      serviceId\n      name\n      amountCents\n      timeLength\n      package\n    }\n  }\n  location {\n    id\n    name\n  }\n  client {\n    id\n    firstName\n    lastName\n    email\n    phone\n    deletedAt\n    customPrices { id amountCents serviceId }\n  }\n  discountCodeRedemptions { code amountCents }\n`\n\nexport const BOOKABLE_EVENT_FIELDS_FOR_CALENDAR = `\n  id\n  allDay\n  bookableEventTypeId\n  startsAt\n  endsAt\n  timeZone\n  capacity\n`\n\nexport const PRACTICE_QUERY = `\n  query CurrentPractice($includePrivate: Boolean, $includeAddOns: Boolean) {\n    currentPractice {\n      id\n      recurringBookingsEnabled\n      isStripeApproved\n      services(includePrivate: $includePrivate, includeAddOns: $includeAddOns) {\n        id\n        name\n        description\n        photoUrl\n        package\n        numberOfSessions\n        addOn\n        locations {\n          id\n          name\n          latitude\n          longitude\n          singleLine\n          cityState\n          kind\n        }\n        variations {\n          id\n          timeLength\n          amountCents\n        }\n      }\n      locations {\n        id\n        name\n        latitude\n        longitude\n        singleLine\n        cityState\n        virtualLink\n        virtualInstructions\n        kind\n        services {\n          id\n          name\n          description\n          photoUrl\n          variations {\n            id\n            timeLength\n            amountCents\n          }\n        }\n      }\n      bookingAvailability {\n        timeZone\n        availableSlots {\n          date\n          datetimes\n        }\n      }\n    }\n  }\n`\n\nexport const APPOINTMENT_QUERY = `\n  query TokenAppointment($instantActionToken: String!) {\n    tokenAppointment(instantActionToken: $instantActionToken) {\n      id\n      startsAt\n      endsAt\n      hasTextReview\n      hasVideoReview\n      hasEndorsements\n      state\n      timeZone\n      isVirtual\n      createdAt\n      amountCents\n      tipAmountCents\n      fullTotal\n      pendingOrApproved\n      paymentIntentId\n      paymentMethod\n      hasPaymentMethod\n      paymentError\n      markPaid\n      instantActionToken\n      bookedBy\n      createdAt\n      newClient\n      paymentStatus\n      packageSessionNumber\n      reviewLink\n      adjustments { id adjustedAt amountCents note }\n      package { id numberOfSessions name createdAt }\n      defaultPaymentMethod {\n        label\n        brand\n        expiry\n      }\n      practice {\n        id\n        isStripeApproved\n        user {\n          id\n          name\n          profilePhotos {\n            medium {\n              jpeg\n              webp\n            }\n            small {\n              jpeg\n              webp\n            }\n            original {\n              jpeg\n              webp\n            }\n          }\n        }\n      }\n      service {\n        id\n        name\n        description\n        photoUrl\n        timeLength\n        parent {\n          id\n          name\n          description\n          photoUrl\n          timeLength\n        }\n      }\n      appointmentServices {\n        amountCents\n        service {\n          id\n          serviceId\n          name\n          amountCents\n          timeLength\n          package\n        }\n      }\n      location {\n        id\n        name\n        latitude\n        longitude\n        singleLine\n        cityState\n        virtualLink\n        virtualInstructions\n      }\n      client {\n        id\n        firstName\n        lastName\n        userId\n        email\n        phone\n        deletedAt\n      }\n      discountCodeRedemptions { code amountCents }\n    }\n  }\n`\n\nexport const APPOINTMENT_QUERY_FOR_CALENDAR = `\n  query AppointmentForCalendar($instantActionToken: String!) {\n    tokenAppointment(instantActionToken: $instantActionToken) { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n  }\n`\n\nexport const PRO_CALENDAR_USER_QUERY = `\n  query ProCalendarUser {\n    currentUser {\n      commsName email phone\n      practice {\n        id\n        hasImportedClients\n        showTermsModal\n        allHours {\n          weekDay\n          hours {\n            startsAt\n            endsAt\n          }\n        }\n      }\n    }\n    currentPractice { id }\n  }\n`\n\nexport const PRO_CALENDAR_QUERY = `\n  query ProCalendar($from: String, $to: String) {\n    practiceAppointments(from: $from, to: $to) { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n    practiceBookableEvents(from: $from, to: $to) { ${BOOKABLE_EVENT_FIELDS_FOR_CALENDAR} }\n    personalEvents(from: $from, to: $to) { id name startsAt endsAt allDay }\n  }\n`\n\nexport const PRO_CALENDAR_EVENTS_QUERY = `\n  query ProCalendarEvents($from: String, $to: String) {\n    calendarEvents(from: $from, to: $to) {\n      id title start end allDay backgroundColor borderColor textColor classNames editable\n      extendedProps { personalEventId description token duration about calendarName location timeZone }\n    }\n  }\n`\n\nexport const CREATE_APPOINTMENT_MUTATION = `\n  mutation ProCreateAppointment(\n    $appointmentServices: [AppointmentServiceInput!]!,\n    $locationId: ID!,\n    $startsAt: String!,\n    $endsAt: String,\n    $clientId: ID,\n    $client: ClientInput,\n  ) {\n    proCreateAppointment(\n      appointmentServices: $appointmentServices,\n      locationId: $locationId,\n      startsAt: $startsAt,\n      endsAt: $endsAt,\n      clientId: $clientId,\n      client: $client,\n    ) {\n      appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n      result\n      errors\n    }\n  }\n`\n\nexport const CREATE_APPOINTMENTS_MUTATION = `\n  mutation CreateAppointments(\n    $appointmentServices: [AppointmentServiceInput!]!,\n    $locationId: ID!,\n    $clientId: ID,\n    $client: ClientInput,\n    $bookedFrom: String,\n    $bookedBy: String,\n    $recurringStartTimes: [String!]!,\n    $recurrencePattern: String!,\n    $duration: Int\n  ) {\n    createAppointments(\n      appointmentServices: $appointmentServices,\n      locationId: $locationId,\n      clientId: $clientId,\n      client: $client,\n      bookedFrom: $bookedFrom,\n      bookedBy: $bookedBy,\n      recurringStartTimes: $recurringStartTimes,\n      recurrencePattern: $recurrencePattern,\n      duration: $duration\n    ) {\n      appointments { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n      result\n      errors\n    }\n  }\n`\n\nexport const UPDATE_APPOINTMENT_MUTATION = `\n  mutation UpdateAppointment(\n    $appointmentId: ID!,\n    $state: String,\n    $appointmentServices: [AppointmentServiceInput!]!,\n    $locationId: ID,\n    $clientType: String,\n    $startsAt: String,\n    $endsAt: String,\n    $practitionerNote: String,\n  ) {\n    updateAppointment(\n      appointmentId: $appointmentId,\n      state: $state,\n      appointmentServices: $appointmentServices,\n      locationId: $locationId,\n      clientType: $clientType,\n      startsAt: $startsAt,\n      endsAt: $endsAt,\n      practitionerNote: $practitionerNote\n    ) {\n      result\n      errors\n      appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n    }\n  }\n`\n\nexport const UPDATE_APPOINTMENT_V2_MUTATION = `\n  mutation UpdateAppointmentV2(\n    $appointmentId: ID!,\n    $appointmentServices: [AppointmentServiceInput!],\n    $locationId: ID,\n    $practitionerNote: String,\n    $startsAt: String,\n    $endsAt: String,\n  ) {\n    updateAppointmentV2(\n      appointmentId: $appointmentId,\n      appointmentServices: $appointmentServices,\n      locationId: $locationId,\n      practitionerNote: $practitionerNote,\n      startsAt: $startsAt,\n      endsAt: $endsAt,\n    ) {\n      result\n      errors\n      appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n    }\n  }\n`\n\nexport const CANCEL_APPOINTMENT_MUTATION = `\n  mutation CancelAppointment($appointmentId: ID!, $practitionerNote: String, $cancelRecurringSeries: Boolean) {\n    cancelAppointment(appointmentId: $appointmentId, practitionerNote: $practitionerNote, cancelRecurringSeries: $cancelRecurringSeries) {\n      result\n      errors\n      cancelledAppointmentIds\n    }\n  }\n`\n\nexport const ACCEPT_APPOINTMENT_MUTATION = `\n  mutation AcceptAppointment($appointmentId: ID!) {\n    acceptAppointment(appointmentId: $appointmentId) {\n      result\n      errors\n      appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n    }\n  }\n`\n\nexport const DECLINE_APPOINTMENT_MUTATION = `\n  mutation DeclineAppointment($appointmentId: ID!) {\n    declineAppointment(appointmentId: $appointmentId) {\n      result\n      errors\n      appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n    }\n  }\n`\n\nexport const RETRY_PAYMENT_MUTATION = `\n  mutation RetryPayment($appointmentId: ID!) {\n    retryPayment(appointmentId: $appointmentId) {\n      result\n      errors\n    }\n  }\n`\n\nexport const RESEND_REVIEW_REQUEST = `\n  mutation ResendReviewRequest($appointmentId: ID!) {\n    resendReviewRequest(appointmentId: $appointmentId) {\n      result\n      errors\n    }\n  }\n`\n\nexport const MARK_AS_PAID = `\n  mutation MarkPaid($appointmentId: ID!, $paidBy: String){\n    markPaid(appointmentId: $appointmentId, paidBy: $paidBy){\n      result\n      errors\n    }\n  }\n`\n\nexport const UNDO_MARK_PAID = `\n  mutation UndoMarkPaid($appointmentId: ID!){\n    undoMarkPaid(appointmentId: $appointmentId){\n      result\n      errors\n    }\n  }\n`\n","import dayjs from \"dayjs\"\nimport React, { createContext, useContext, useEffect, useReducer } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { CREATE_APPOINTMENTS_MUTATION } from \"../components/pro_portal/calendar/appointment_graphql\"\n\nimport { useToast } from \"./ToastContext\"\n\nconst initialState = {\n  services: [{}],\n  locationId: null,\n  startsAt: null,\n  endsAt: null,\n  customerId: null,\n  clientId: null,\n  client: null,\n  bookedFrom: \"web\",\n  bookedBy: \"pro\",\n  recurringStartTimes: null,\n  recurrencePattern: null,\n  recurringAppointmentError: null,\n  appointment: null,\n  rescheduledStartsAt: null,\n  rescheduledEndsAt: null,\n  rescheduleRecurringSeries: false,\n  appointmentErrors: false,\n  initialAppointmentValues: null // Used to check if the appointment has changed during edit\n}\n\nconst reducer = (state, action) => {\n  switch (action.type) {\n    case \"SET_SERVICES\":\n      return { ...state, services: action.payload }\n    case \"SET_LOCATION_ID\":\n      return { ...state, locationId: action.payload }\n    case \"SET_STARTS_AT\":\n      return { ...state, startsAt: action.payload }\n    case \"SET_ENDS_AT\":\n      return { ...state, endsAt: action.payload }\n    case \"SET_CUSTOMER_ID\":\n      return { ...state, customerId: action.payload }\n    case \"SET_CLIENT_ID\":\n      return { ...state, clientId: action.payload }\n    case \"SET_CLIENT\":\n      return { ...state, client: action.payload }\n    case \"SET_BOOKED_FROM\":\n      return { ...state, bookedFrom: action.payload }\n    case \"SET_BOOKED_BY\":\n      return { ...state, bookedBy: action.payload }\n    case \"SET_RECURRING_START_TIMES\":\n      return { ...state, recurringStartTimes: action.payload }\n    case \"SET_RECURRENCE_PATTERN\":\n      return { ...state, recurrencePattern: action.payload }\n    case \"SET_RECURRING_APPOINTMENT_ERROR\":\n      return { ...state, recurringAppointmentError: action.payload }\n    case \"SET_APPOINTMENT\":\n      return { ...state, appointment: action.payload }\n    case \"SET_RESCHEDULED_STARTS_AT\":\n      return { ...state, rescheduledStartsAt: action.payload }\n    case \"SET_RESCHEDULED_ENDS_AT\":\n      return { ...state, rescheduledEndsAt: action.payload }\n    case \"SET_RESCHEDULE_RECURRING_SERIES\":\n      return { ...state, rescheduleRecurringSeries: action.payload }\n    case \"SET_APPOINTMENT_ERRORS\":\n      return { ...state, appointmentErrors: action.payload }\n    case \"RESET\":\n      return initialState\n    case \"SET_INITIAL_APPOINTMENT_VALUES\":\n      return { ...state, initialAppointmentValues: action.payload }\n    default:\n      throw new Error(`Invalid action type: ${action.type}`)\n  }\n}\n\nexport const ManualBookingContext = createContext()\n\nexport const ManualBookingProvider = ({ children }) => {\n  const [state, dispatch] = useReducer(reducer, initialState)\n  const [{ fetching: createRecurringAppointmentsFetching }, createAppointments] =\n    useMutation(CREATE_APPOINTMENTS_MUTATION)\n  const { showToast } = useToast()\n\n  const createRecurringAppointments = (onSuccess) => {\n    let clientId = null\n    let newClient = null\n\n    if (state.client.id) {\n      clientId = state.client.id\n    } else {\n      newClient = state.client\n    }\n\n    const variables = {\n      appointmentServices: state.services\n        .filter((service) => service.service?.id)\n        .map((service) => ({\n          amountCents: service.amountCents,\n          serviceId: service.service.id,\n          saveCustomPrice: service.saveCustomPrice\n        })),\n      locationId: state.locationId,\n      clientId,\n      client: newClient,\n      bookedFrom: state.bookedFrom,\n      bookedBy: state.bookedBy,\n      recurringStartTimes: state.recurringStartTimes,\n      recurrencePattern: state.recurrencePattern,\n      duration: dayjs(state.endsAt).diff(state.startsAt, \"minutes\")\n    }\n    createAppointments(variables).then((result) => {\n      if (result.error) {\n        console.error(result.error)\n        showToast({ type: \"error\", content: `Error creating appointments: ${result.error}` })\n      } else if (result.data.createAppointments?.result === \"success\") {\n        showToast(\"Your recurring series was created successfully.\")\n        onSuccess(result.data.createAppointments.appointments)\n      } else {\n        console.error(result)\n        showToast({\n          type: \"error\",\n          content: `Error creating appointments: ${result.data.createAppointments.errors.join(\" \")}`\n        })\n      }\n    })\n  }\n\n  useEffect(() => {\n    if (state.appointment) {\n      // Add priceChanged and saveCustomPrice to services for the edit form\n      const updatedServices = state.appointment.appointmentServices.map((service) => {\n        const customPrice = state.appointment.client.customPrices?.find((cp) => cp.serviceId === service.service.id)\n        return {\n          ...service,\n          priceChanged: service.amountCents !== service.service.amountCents,\n          saveCustomPrice: customPrice?.amountCents === service.amountCents\n        }\n      })\n\n      const initialValues = {\n        client: state.appointment.client || state.appointment.user,\n        services: updatedServices,\n        locationId: state.appointment.location.id,\n        startsAt: state.appointment.startsAt,\n        endsAt: state.appointment.endsAt\n      }\n\n      dispatch({ type: \"SET_INITIAL_APPOINTMENT_VALUES\", payload: initialValues })\n      dispatch({ type: \"SET_CLIENT\", payload: initialValues.client })\n      dispatch({ type: \"SET_SERVICES\", payload: initialValues.services })\n      dispatch({ type: \"SET_LOCATION_ID\", payload: initialValues.locationId })\n      dispatch({ type: \"SET_STARTS_AT\", payload: initialValues.startsAt })\n      dispatch({ type: \"SET_ENDS_AT\", payload: initialValues.endsAt })\n    }\n  }, [state.appointment])\n\n  const updateEndsAtWithServicesDuration = (servicesObj) => {\n    const totalTimeLength = servicesObj\n      .filter((service) => service.service?.timeLength)\n      .reduce((sum, service) => sum + service.service.timeLength, 0)\n    dispatch({\n      type: \"SET_ENDS_AT\",\n      payload: dayjs(state.startsAt).add(totalTimeLength, \"minutes\").toISOString()\n    })\n  }\n\n  const value = {\n    setServices: (services) => dispatch({ type: \"SET_SERVICES\", payload: services }),\n    setLocationId: (locationId) => dispatch({ type: \"SET_LOCATION_ID\", payload: locationId }),\n    setStartsAt: (startsAt) => dispatch({ type: \"SET_STARTS_AT\", payload: startsAt }),\n    setEndsAt: (endsAt) => dispatch({ type: \"SET_ENDS_AT\", payload: endsAt }),\n    setCustomerId: (customerId) => dispatch({ type: \"SET_CUSTOMER_ID\", payload: customerId }),\n    setClientId: (clientId) => dispatch({ type: \"SET_CLIENT_ID\", payload: clientId }),\n    setClient: (client) => dispatch({ type: \"SET_CLIENT\", payload: client }),\n    setRecurringStartTimes: (recurringStartTimes) =>\n      dispatch({ type: \"SET_RECURRING_START_TIMES\", payload: recurringStartTimes }),\n    setRecurrencePattern: (recurrencePattern) =>\n      dispatch({ type: \"SET_RECURRENCE_PATTERN\", payload: recurrencePattern }),\n    setRecurringAppointmentError: (recurringAppointmentError) =>\n      dispatch({ type: \"SET_RECURRING_APPOINTMENT_ERROR\", payload: recurringAppointmentError }),\n    resetBookingState: () => dispatch({ type: \"RESET\" }),\n    setAppointment: (appointment) => dispatch({ type: \"SET_APPOINTMENT\", payload: appointment }),\n    setRescheduledStartsAt: (startsAt) => dispatch({ type: \"SET_RESCHEDULED_STARTS_AT\", payload: startsAt }),\n    setRescheduledEndsAt: (endsAt) => dispatch({ type: \"SET_RESCHEDULED_ENDS_AT\", payload: endsAt }),\n    setRescheduleRecurringSeries: (rescheduleRecurringSeries) =>\n      dispatch({ type: \"SET_RESCHEDULE_RECURRING_SERIES\", payload: rescheduleRecurringSeries }),\n    setAppointmentErrors: (appointmentErrors) =>\n      dispatch({ type: \"SET_APPOINTMENT_ERRORS\", payload: appointmentErrors }),\n    createRecurringAppointments,\n    createRecurringAppointmentsFetching,\n    updateEndsAtWithServicesDuration,\n    ...state\n  }\n\n  return <ManualBookingContext.Provider value={value}>{children}</ManualBookingContext.Provider>\n}\n\nexport const useManualBooking = () => useContext(ManualBookingContext)\n","export const UPSERT_BOOKABLE_EVENT_MUTATION = `\n  mutation UpsertBookableEvent(\n    $id: ID,\n    $startsAt: String!,\n    $endsAt: String!,\n    $allDay: Boolean,\n    $timeZone: String!,\n    $bookableEventTypeId: ID!\n  ) {\n    upsertBookableEvent(\n      id: $id,\n      startsAt: $startsAt,\n      endsAt: $endsAt,\n      allDay: $allDay,\n      timeZone: $timeZone,\n      bookableEventTypeId: $bookableEventTypeId\n    ) {\n      result\n      errors\n      bookableEvent {\n        id startsAt endsAt allDay timeZone bookableEventTypeId name description instructions capacity amountCents amountCurrency location kind\n      }\n    }\n  }\n`\n\nexport const UPDATE_BOOKABLE_EVENT_PHOTO_MUTATION = `\n  mutation UpdateBookableEventPhoto($handle: String!, $id: ID!) {\n    updateBookableEventPhoto(handle: $handle, id: $id) { result errors photoUrl }\n  }\n`\n\nexport const REMOVE_BOOKABLE_EVENT_PHOTO_MUTATION = `\n  mutation RemoveBookableEventPhoto($id: ID!) {\n    removeBookableEventPhoto(id: $id) { result errors }\n  }\n`\n\nexport const DELETE_BOOKABLE_EVENT_MUTATION = `\n  mutation DeleteBookableEvent($id: ID!) {\n    deleteBookableEvent(id: $id) { result errors }\n  }\n`\n\nexport const ADD_CLIENT_TO_BOOKABLE_EVENT_MUTATION = `\n  mutation AddClientToBookableEvent($bookableEventId: ID!, $clientId: ID, $clientParams: ClientInput) {\n    addClientToBookableEvent(bookableEventId: $bookableEventId, clientId: $clientId, clientParams: $clientParams) {\n      result\n      errors\n      registrationsCount\n    }\n  }\n`\n\nexport const REMOVE_CLIENT_FROM_BOOKABLE_EVENT_MUTATION = `\n  mutation RemoveClientFromBookableEvent($bookableEventId: ID!, $clientId: ID!) {\n    removeClientFromBookableEvent(bookableEventId: $bookableEventId, clientId: $clientId) {\n      result\n      errors\n      registrationsCount\n    }\n  }\n`\n\nexport const PROCESS_REGISTRATION_PAYMENT_MUTATION = `\n  mutation ProcessRegistrationPayment($registrationId: ID!) {\n    processRegistrationPayment(registrationId: $registrationId) {\n      result\n      errors\n    }\n  }\n`\n","import dayjs from \"dayjs\"\nimport React, { createContext, useContext, useEffect, useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport {\n  DELETE_BOOKABLE_EVENT_MUTATION,\n  REMOVE_BOOKABLE_EVENT_PHOTO_MUTATION,\n  UPDATE_BOOKABLE_EVENT_PHOTO_MUTATION,\n  UPSERT_BOOKABLE_EVENT_MUTATION\n} from \"./mutations\"\n\nexport const defaultNewEvent = {\n  startsAt: dayjs()\n    .set(\"hour\", dayjs().get(\"hour\") + 1)\n    .set(\"minute\", 0)\n    .set(\"second\", 0)\n    .set(\"millisecond\", 0)\n    .toISOString(),\n  endsAt: dayjs()\n    .set(\"hour\", dayjs().get(\"hour\") + 2)\n    .set(\"minute\", 0)\n    .set(\"second\", 0)\n    .set(\"millisecond\", 0)\n    .toISOString(),\n  allDay: false,\n  timeZone: null,\n  bookableEventTypeId: null\n}\n\nexport const BookableEventsContext = createContext()\n\nexport const BookableEventsProvider = ({ children, bookableEvents: bookableEventsProp, previousLocations }) => {\n  const [showFlyout, setShowFlyout] = useState(false)\n  const [bookableEvents, setBookableEvents] = useState(bookableEventsProp)\n  const [googlePlacesLoaded, setGooglePlacesLoaded] = useState(false)\n  const [bookableEvent, setBookableEvent] = useState(defaultNewEvent)\n  const [deleteModalVisible, setDeleteModalVisible] = useState(false)\n  const [rescheduleModalVisible, setRescheduleModalVisible] = useState(false)\n  const [bookableEventTab, setBookableEventTab] = useState(\"details\") // details or registrants\n\n  const [{ fetching: upsertMutationFetching }, upsertBookableEvent] = useMutation(UPSERT_BOOKABLE_EVENT_MUTATION)\n  const [{ fetching: photoMutationFetching }, updatePhoto] = useMutation(UPDATE_BOOKABLE_EVENT_PHOTO_MUTATION)\n  const [{ fetching: deleteMutationFetching }, deleteBookableEvent] = useMutation(DELETE_BOOKABLE_EVENT_MUTATION)\n  const [{ fetching: removePhotoMutationFetching }, removePhoto] = useMutation(REMOVE_BOOKABLE_EVENT_PHOTO_MUTATION)\n\n  const fetching =\n    upsertMutationFetching || photoMutationFetching || deleteMutationFetching || removePhotoMutationFetching\n\n  const getDefaultNewEvent = () => ({\n    ...defaultNewEvent,\n    timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone\n  })\n\n  useEffect(() => {\n    // do this in an effect to avoid SSR rehydration issues\n    setBookableEvent(getDefaultNewEvent())\n\n    async function initPlaces() {\n      await window.google.maps.importLibrary(\"places\")\n      setGooglePlacesLoaded(true)\n    }\n\n    initPlaces()\n  }, [])\n\n  // TODO: consider removing this, as it's only used in BookableEventsPage\n  const updateBookableEvents = (newEvent) => {\n    if (!bookableEvents) return\n\n    setBookableEvents((prevEvents) => {\n      const newEvents = [...prevEvents]\n      const index = newEvents.findIndex((s) => s.id === newEvent.id)\n      if (index !== -1) {\n        newEvents[index] = newEvent\n      } else {\n        newEvents.push(newEvent)\n      }\n\n      return newEvents\n    })\n  }\n\n  const resetBookableEventState = () => {\n    setBookableEvent(getDefaultNewEvent())\n    setBookableEventTab(\"details\")\n  }\n\n  const value = {\n    bookableEvents,\n    setBookableEvents,\n    showFlyout,\n    setShowFlyout,\n    bookableEvent,\n    setBookableEvent,\n    getDefaultNewEvent,\n    previousLocations,\n    googlePlacesLoaded,\n    fetching,\n    upsertBookableEvent,\n    updatePhoto,\n    deleteBookableEvent,\n    removePhoto,\n    updateBookableEvents,\n    deleteModalVisible,\n    setDeleteModalVisible,\n    rescheduleModalVisible,\n    setRescheduleModalVisible,\n    bookableEventTab,\n    setBookableEventTab,\n    resetBookableEventState\n  }\n\n  return <BookableEventsContext.Provider value={value}>{children}</BookableEventsContext.Provider>\n}\n\nexport const useBookableEvents = () => useContext(BookableEventsContext)\n","import daysjs from \"dayjs\"\nimport React from \"react\"\n\nexport const formatEventTitle = (appt) => {\n  const timeLength = daysjs(appt.endsAt).diff(daysjs(appt.startsAt), \"minutes\")\n  const service = appt.appointmentServices[0].service\n  let result\n  if (appt.user) {\n    result = timeLength < 30 ? `${appt.user.name} - ${service.name}` : `${appt.user.name}`\n  } else if (appt.client) {\n    let name = appt.client.firstName\n    if (appt.client.lastName) name += ` ${appt.client.lastName}`\n    result = timeLength < 30 ? `${name} - ${service.name}` : `${name}`\n  } else {\n    result = service.name\n  }\n  return appt.state === \"pending\" ? `Request: ${result}` : result\n}\n\nexport const handleDayHeaderContent = (args) => {\n  const dayString = args.date.toDateString()\n  const dayName = dayString.split(\" \")[0]\n  const dayNumber = dayString.split(\" \")[2]\n\n  return (\n    <>\n      <span className=\"day-name\">{dayName}</span> {dayNumber}\n    </>\n  )\n}\n\nexport const renderEventContent = (eventInfo) => (\n  <>\n    <span className=\"event-title\">\n      {eventInfo.event.extendedProps.duration < \"30\" && eventInfo.timeText} {eventInfo.event.title}\n    </span>\n    {eventInfo.event.extendedProps.duration >= \"30\" && (\n      <>\n        <span className=\"event-time\">{eventInfo.timeText}</span>\n        <span className=\"event-description\">{eventInfo.event.extendedProps.description}</span>\n      </>\n    )}\n  </>\n)\n","import dayjs from \"dayjs\"\nimport React, { createContext, useContext, useState, useEffect } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { useMutation } from \"urql\"\n\nimport { getFirstAvailableTimeSlot } from \"../@core/practice/practice.utils\"\nimport {\n  APPOINTMENT_QUERY_FOR_CALENDAR,\n  PRO_CALENDAR_EVENTS_QUERY,\n  PRO_CALENDAR_QUERY,\n  PRO_CALENDAR_USER_QUERY\n} from \"../components/pro_portal/calendar/appointment_graphql\"\nimport { useBookableEvents } from \"../pages/BookableEvents/BookableEventsContext\"\nimport { formatEventTitle } from \"../utils/calendarUtils\"\nimport { UPSERT_PERSONAL_EVENT } from \"../utils/mutations\"\nimport { urqlClient } from \"../utils/utils\"\n\nimport { useCalendarFlyout } from \"./CalendarFlyoutContext\"\nimport { useManualBooking } from \"./ManualBookingContext\"\nimport { usePractice } from \"./PracticeContext\"\nimport { useToast } from \"./ToastContext\"\n\nconst ProCalendarContext = createContext()\n\nconst TIME_GRID_TYPE_MAP = {\n  timeGridDay: \"day\",\n  timeGridWeek: \"week\",\n  dayGridMonth: \"month\"\n}\n\nexport const ProCalendarProvider = ({ children }) => {\n  const [calendarData, setCalendarData] = useState(null)\n  const [isLoading, setIsLoading] = useState(true)\n  const [calendarEvents, setCalendarEvents] = useState([])\n  const [isFlyoutVisible, setIsFlyoutVisible] = useState(false)\n  const [selectedDateTime, setSelectedDateTime] = useState()\n  const [selectedPersonalEvent, setSelectedPersonalEvent] = useState(null)\n  const [selectedExternalEvent, setSelectedExternalEvent] = useState(null)\n  const [currentViewDate, setCurrentViewDate] = useState(null)\n  const [showRescheduleConfirm, setShowRescheduleConfirm] = useState(false)\n  const [draggedEvent, setDraggedEvent] = useState(null)\n\n  const { showToast } = useToast()\n  const navigate = useNavigate()\n\n  const {\n    setAppointment: setSelectedAppointment,\n    setRescheduledStartsAt,\n    setRescheduledEndsAt,\n    resetBookingState,\n    setStartsAt,\n    setEndsAt\n  } = useManualBooking()\n\n  const { setBookableEvent, updateBookableEvents, getDefaultNewEvent, resetBookableEventState } = useBookableEvents()\n\n  const { setEventType } = useCalendarFlyout()\n\n  const { practice } = usePractice()\n\n  const [, upsertPersonalEvent] = useMutation(UPSERT_PERSONAL_EVENT)\n\n  useEffect(() => {\n    if (window.location.hash) {\n      const param = window.location.hash.substring(1)\n      if (param === \"create-appointment\") {\n        handleCreateAppointmentButtonClick()\n      } else {\n        urqlClient\n          .query(APPOINTMENT_QUERY_FOR_CALENDAR, { instantActionToken: param })\n          .toPromise()\n          .then((result) => {\n            if (result.data?.tokenAppointment) {\n              const appointment = result.data.tokenAppointment\n              setSelectedAppointment(appointment)\n              setIsFlyoutVisible(true)\n            } else {\n              showToast({ type: \"error\", content: \"Appointment not found\" })\n            }\n          })\n      }\n    }\n  }, [])\n\n  const fetchCalendarUser = () => {\n    urqlClient\n      .query(PRO_CALENDAR_USER_QUERY)\n      .toPromise()\n      .then((result) => {\n        if (result.data) {\n          setCalendarData((prevData) => ({\n            ...prevData,\n            currentUser: result.data.currentUser,\n            currentPractice: result.data.currentPractice\n          }))\n        }\n      })\n  }\n\n  const mergeUniqueById = (existingItems = [], newItems = []) =>\n    [...existingItems, ...newItems].filter((item, index, self) => index === self.findIndex((i) => i.id === item.id))\n\n  const fetchCalendarData = ({ from, to }) => {\n    urqlClient\n      .query(PRO_CALENDAR_QUERY, { from, to })\n      .toPromise()\n      .then((result) => {\n        if (result.data) {\n          setCalendarData((prevData) => ({\n            ...prevData,\n            practiceAppointments: mergeUniqueById(prevData?.practiceAppointments, result.data.practiceAppointments),\n            practiceBookableEvents: mergeUniqueById(\n              prevData?.practiceBookableEvents,\n              result.data.practiceBookableEvents\n            ),\n            personalEvents: mergeUniqueById(prevData?.personalEvents, result.data.personalEvents)\n          }))\n          setIsLoading(false)\n        }\n      })\n  }\n\n  const fetchCalendarEvents = (startDate, endDate) => {\n    urqlClient\n      .query(PRO_CALENDAR_EVENTS_QUERY, { from: startDate, to: endDate })\n      .toPromise()\n      .then((result) => {\n        if (result.data?.calendarEvents) {\n          const processedEvents = processCalendarEvents(result.data.calendarEvents)\n          setCalendarEvents((prevEvents) => mergeUniqueById(prevEvents, processedEvents))\n        }\n      })\n  }\n\n  const processCalendarEvents = (events) => {\n    const currentTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\n    return events.map((event) => {\n      if (event.id.startsWith(\"personal-event\")) {\n        return processPersonalEvent(event, currentTimeZone)\n      } else if (event.allDay) {\n        return processAllDayEvent(event)\n      }\n      return event\n    })\n  }\n\n  const processPersonalEvent = (event, currentTimeZone) => ({\n    ...event,\n    allDay: event.extendedProps.timeZone && event.extendedProps.timeZone !== currentTimeZone ? false : event.allDay\n  })\n\n  const processAllDayEvent = (event) => ({\n    ...event,\n    start: event.start.split(\"T\")[0],\n    end: event.end.split(\"T\")[0],\n    allDay: true\n  })\n\n  useEffect(() => {\n    const currentWeekStart = dayjs().startOf(\"week\").subtract(1, \"week\").format(\"YYYY-MM-DD\")\n    const currentWeekEnd = dayjs().endOf(\"week\").add(1, \"week\").format(\"YYYY-MM-DD\")\n    fetchCalendarUser()\n    fetchCalendarData({ from: currentWeekStart, to: currentWeekEnd })\n    fetchCalendarEvents(currentWeekStart, currentWeekEnd)\n  }, [])\n\n  const handleEventClick = (eventInfo) => {\n    if (isLoading) return\n\n    if (eventInfo.event.extendedProps.token) {\n      const appointment = findAppointment(eventInfo.event.extendedProps.token)\n      setSelectedAppointment(appointment)\n      setIsFlyoutVisible(true)\n      setEventType(\"client\")\n      navigate(`${window.location.pathname}#${eventInfo.event.extendedProps.token}`)\n    } else if (eventInfo.event.extendedProps.personalEventId) {\n      const personalEvent = findPersonalEvent(eventInfo.event.id)\n      setSelectedPersonalEvent(personalEvent)\n      setIsFlyoutVisible(true)\n      setEventType(\"personal\")\n    } else if (eventInfo.event.id.includes(\"bookable-event\")) {\n      const foundBookableEvent = findBookableEvent(eventInfo.event.id.replace(\"bookable-event-\", \"\"))\n      setBookableEvent(foundBookableEvent)\n      setIsFlyoutVisible(true)\n      setEventType(\"bookable\")\n    } else {\n      setSelectedExternalEvent(eventInfo.event)\n      setIsFlyoutVisible(true)\n      setEventType(\"calendar\")\n    }\n  }\n\n  const handleDateClick = (dateInfo) => {\n    const clickedDate = dayjs(dateInfo.date).format(\"YYYY-MM-DDTHH:mm:ssZ\")\n    setSelectedDateTime(clickedDate)\n    setStartsAt(clickedDate)\n    setEndsAt(dayjs(clickedDate).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    setIsFlyoutVisible(true)\n    setSelectedAppointment(null)\n    setSelectedPersonalEvent(null)\n    setBookableEvent({\n      ...getDefaultNewEvent(),\n      startsAt: clickedDate,\n      endsAt: dayjs(clickedDate).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\")\n    })\n    addTemporaryEvent(clickedDate)\n  }\n\n  const addTemporaryEvent = (startDate) => {\n    setCalendarEvents((prevEvents) => [\n      ...prevEvents.filter((event) => event.id !== \"temp-1\"),\n      {\n        id: \"temp-1\",\n        start: startDate,\n        end: dayjs(startDate).add(1, \"hours\").format(\"YYYY-MM-DDTHH:mm:ssZ\"),\n        title: \"Draft Appointment\",\n        backgroundColor: \"#55778A\",\n        borderColor: \"#55778A\"\n      }\n    ])\n  }\n\n  const handleDragReschedule = (eventDropInfo) => {\n    const { event } = eventDropInfo\n    setDraggedEvent(eventDropInfo)\n\n    if (event.extendedProps.personalEventId) {\n      handlePersonalEventReschedule(event)\n    } else if (event.extendedProps.token) {\n      handleAppointmentReschedule(event)\n    }\n  }\n\n  const handlePersonalEventReschedule = (event) => {\n    upsertPersonalEvent({\n      id: event.extendedProps.personalEventId,\n      startsAt: event.start,\n      endsAt: event.end\n    }).then((response) => {\n      if (response.data.upsertPersonalEvent.result === \"success\") {\n        closeFlyout()\n        showToast(\"Personal event updated successfully.\")\n      } else {\n        console.error(response)\n      }\n    })\n  }\n\n  const handleAppointmentReschedule = (event) => {\n    const appointment = findAppointment(event.extendedProps.token)\n    setSelectedAppointment(appointment)\n    // Need these other states instead of startsAt and endsAt, because setting the appointment above also changes startsAt and endsAt\n    setRescheduledStartsAt(dayjs(event.start).format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    setRescheduledEndsAt(dayjs(event.end).format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    setShowRescheduleConfirm(true)\n  }\n\n  const hideRescheduleConfirm = () => {\n    setShowRescheduleConfirm(false)\n    if (draggedEvent) {\n      draggedEvent.revert() // Revert the dragged event to its original position\n      setDraggedEvent(null)\n    }\n  }\n\n  const findPersonalEvent = (id) => calendarEvents.find((event) => event.id === id)\n  const findAppointment = (token) =>\n    calendarData.practiceAppointments.find((event) => event.instantActionToken === token)\n  const findBookableEvent = (id) => calendarData.practiceBookableEvents.find((event) => event.id === id)\n\n  const closeFlyout = () => {\n    setIsFlyoutVisible(false)\n    setSelectedAppointment(null)\n    setSelectedPersonalEvent(null)\n    setSelectedExternalEvent(null)\n    setEventType(\"client\")\n    setSelectedDateTime(null)\n    setCalendarEvents((prevEvents) => prevEvents.filter((event) => event.id !== \"temp-1\"))\n    resetBookingState()\n    resetBookableEventState()\n    const currentPath = window.location.pathname + window.location.search\n    navigate(currentPath, { replace: true })\n  }\n\n  const handleCreatePersonalEvent = (personalEvent) => {\n    const newEvent = {\n      id: `personal-event-${personalEvent.id}`,\n      start: personalEvent.startsAt,\n      end: personalEvent.endsAt,\n      title: personalEvent.name || \"Personal Event\",\n      borderColor: \"#C8D6DF\",\n      backgroundColor: \"#C8D6DF\",\n      classNames: [\"personal-event\"],\n      allDay: personalEvent.allDay,\n      extendedProps: {\n        personalEventId: personalEvent.id,\n        duration: (new Date(personalEvent.endsAt) - new Date(personalEvent.startsAt)) / 1000 / 60\n      }\n    }\n    setCalendarEvents((prevEvents) => [\n      ...prevEvents.filter((event) => event.id !== `personal-event-${personalEvent.id}`),\n      newEvent\n    ])\n    showToast(`Personal event ${selectedPersonalEvent ? \"updated\" : \"created\"} successfully.`)\n    closeFlyout()\n  }\n\n  const handleDeletePersonalEvent = (personalEventId) => {\n    setCalendarEvents((prevEvents) => prevEvents.filter((event) => event.id !== `personal-event-${personalEventId}`))\n    showToast({ type: \"info\", content: \"Your personal event has been cancelled\" })\n    closeFlyout()\n  }\n\n  const handleAppointmentChange = (appointment) => {\n    const newAppointment = {\n      id: `appointment-${appointment.id}`,\n      start: appointment.startsAt,\n      end: appointment.endsAt,\n      title: formatEventTitle(appointment),\n      borderColor: \"#55778A\",\n      backgroundColor: \"#55778A\",\n      classNames: [\"primary-event\"],\n      extendedProps: {\n        token: appointment.instantActionToken,\n        duration: (new Date(appointment.endsAt) - new Date(appointment.startsAt)) / 1000 / 60,\n        description: appointment.appointmentServices[0].service.name\n      }\n    }\n    setCalendarEvents((prevEvents) => [\n      ...prevEvents.filter((event) => event.id !== `appointment-${appointment.id}`),\n      newAppointment\n    ])\n    setCalendarData((prevData) => ({\n      ...prevData,\n      practiceAppointments: [\n        ...(prevData.practiceAppointments ?? []).filter((appt) => appt.id !== appointment.id),\n        appointment\n      ]\n    }))\n    closeFlyout()\n  }\n\n  const handleRecurringAppointmentsChange = (appointments) => {\n    const newAppointments = appointments.map((appointment) => ({\n      id: `appointment-${appointment.id}`,\n      start: appointment.startsAt,\n      end: appointment.endsAt,\n      title: formatEventTitle(appointment),\n      borderColor: \"#55778A\",\n      backgroundColor: \"#55778A\",\n      classNames: [\"primary-event\"],\n      extendedProps: {\n        token: appointment.instantActionToken,\n        duration: (new Date(appointment.endsAt) - new Date(appointment.startsAt)) / 1000 / 60,\n        description: appointment.appointmentServices[0].service.name\n      }\n    }))\n    setCalendarEvents((prevEvents) => [\n      ...prevEvents.filter((event) => !newAppointments.map((appt) => `appointment-${appt.id}`).includes(event.id)),\n      ...newAppointments\n    ])\n    setCalendarData((prevData) => ({\n      ...prevData,\n      practiceAppointments: [\n        ...prevData.practiceAppointments.filter(\n          (appointment) => !appointments.map((appt) => appt.id).includes(appointment.id)\n        ),\n        ...appointments\n      ]\n    }))\n    closeFlyout()\n  }\n\n  const handleAppointmentCancellation = (appointmentIds) => {\n    setCalendarEvents((prevEvents) =>\n      prevEvents.filter((event) => !appointmentIds.map((id) => `appointment-${id}`).includes(event.id))\n    )\n    setCalendarData((prevData) => ({\n      ...prevData,\n      practiceAppointments: prevData.practiceAppointments.filter(\n        (appointment) => !appointmentIds.includes(appointment.id)\n      )\n    }))\n    closeFlyout()\n  }\n\n  const handleRescheduleSuccess = (oldAppointmentId, updatedAppointment) => {\n    const newCalendarEvent = {\n      id: `appointment-${updatedAppointment.id}`,\n      start: updatedAppointment.startsAt,\n      end: updatedAppointment.endsAt,\n      title: formatEventTitle(updatedAppointment),\n      borderColor: \"#55778A\",\n      backgroundColor: \"#55778A\",\n      classNames: [\"primary-event\"],\n      extendedProps: {\n        token: updatedAppointment.instantActionToken,\n        duration: (new Date(updatedAppointment.endsAt) - new Date(updatedAppointment.startsAt)) / 1000 / 60,\n        description: updatedAppointment.appointmentServices[0].service.name\n      }\n    }\n    setCalendarEvents((prevEvents) => [\n      ...prevEvents.filter((appointment) => appointment.id !== `appointment-${oldAppointmentId}`),\n      newCalendarEvent\n    ])\n    setCalendarData((prevData) => ({\n      ...prevData,\n      practiceAppointments: [\n        ...prevData.practiceAppointments.filter((appointment) => appointment.id !== oldAppointmentId),\n        updatedAppointment\n      ]\n    }))\n    closeFlyout()\n  }\n\n  // This is called when the \"Create appointment\" button is clicked\n  const handleCreateAppointmentButtonClick = () => {\n    setIsFlyoutVisible(true)\n    if (currentViewDate) {\n      // When the calendar is set to \"Day\" view\n      setStartsAt(dayjs(currentViewDate).format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n      setEndsAt(dayjs(currentViewDate).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    } else if (practice?.bookingAvailability?.availableSlots) {\n      const firstAvailableTimeSlot = getFirstAvailableTimeSlot(practice.bookingAvailability.availableSlots)\n      setStartsAt(dayjs(firstAvailableTimeSlot).format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n      setEndsAt(dayjs(firstAvailableTimeSlot).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    } else {\n      // Fallback to today's date\n      const nextHour = dayjs().add(1, \"hour\").startOf(\"hour\")\n      setStartsAt(nextHour.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n      setEndsAt(nextHour.add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    }\n  }\n\n  const handleBookableEventChange = (bookableEvent) => {\n    const newEvent = {\n      id: `bookable-event-${bookableEvent.id}`,\n      start: bookableEvent.startsAt,\n      end: bookableEvent.endsAt,\n      title: bookableEvent.name,\n      borderColor: \"#F4B965\",\n      backgroundColor: \"#F4B965\",\n      textColor: \"#0B3954\",\n      editable: false, // prevent dragging until implemented\n      extendedProps: {\n        duration: (new Date(bookableEvent.endsAt) - new Date(bookableEvent.startsAt)) / 1000 / 60,\n        description: bookableEvent.description\n      }\n    }\n    setCalendarEvents((prevEvents) => [\n      ...prevEvents.filter((event) => event.id !== `bookable-event-${bookableEvent.id}`),\n      newEvent\n    ])\n    setCalendarData((prevData) => ({\n      ...prevData,\n      practiceBookableEvents: [\n        ...(prevData.practiceBookableEvents ?? []).filter((event) => event.id !== bookableEvent.id),\n        bookableEvent\n      ]\n    }))\n    updateBookableEvents(bookableEvent)\n    closeFlyout()\n  }\n\n  const handleDeleteBookableEvent = (bookableEvent) => {\n    setCalendarEvents((prevEvents) => prevEvents.filter((event) => event.id !== `bookable-event-${bookableEvent.id}`))\n    setCalendarData((prevData) => ({\n      ...prevData,\n      practiceBookableEvents: prevData.practiceBookableEvents.filter((event) => event.id !== bookableEvent.id)\n    }))\n    closeFlyout()\n  }\n\n  // This is called when the date range is changed\n  const handleDatesSet = (dateInfo) => {\n    const timeGridType = TIME_GRID_TYPE_MAP[dateInfo.view.type] || \"week\"\n    const from = dayjs(dateInfo.startStr).subtract(1, timeGridType).format(\"YYYY-MM-DD\")\n    const to = dayjs(dateInfo.endStr).add(1, timeGridType).format(\"YYYY-MM-DD\")\n    fetchCalendarData({ from, to })\n    fetchCalendarEvents(from, to)\n    if (dateInfo.view.type === \"timeGridDay\") {\n      const clickedTime = dayjs(dateInfo.start).format(\"YYYY-MM-DDTHH:mm:ssZ\")\n      setCurrentViewDate(dayjs(dateInfo.start).format(\"YYYY-MM-DD\"))\n      setStartsAt(clickedTime)\n      setEndsAt(dayjs(clickedTime).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    } else {\n      setCurrentViewDate(null)\n    }\n  }\n\n  const value = {\n    calendarData,\n    isLoading,\n    calendarEvents,\n    isFlyoutVisible,\n    selectedDateTime,\n    selectedPersonalEvent,\n    selectedExternalEvent,\n    currentViewDate,\n    showRescheduleConfirm,\n    setCurrentViewDate,\n    handleEventClick,\n    handleDateClick,\n    handleDragReschedule,\n    closeFlyout,\n    setIsFlyoutVisible,\n    setCalendarEvents,\n    setCalendarData,\n    handleCreatePersonalEvent,\n    handleDeletePersonalEvent,\n    handleAppointmentChange,\n    handleRecurringAppointmentsChange,\n    handleAppointmentCancellation,\n    handleRescheduleSuccess,\n    hideRescheduleConfirm,\n    handleCreateAppointmentButtonClick,\n    handleDatesSet,\n    draggedEvent,\n    setDraggedEvent,\n    handleBookableEventChange,\n    handleDeleteBookableEvent\n  }\n\n  return <ProCalendarContext.Provider value={value}>{children}</ProCalendarContext.Provider>\n}\n\nexport const useProCalendar = () => useContext(ProCalendarContext)\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useManualBooking } from \"../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatShortDateTime } from \"../../utils/utils\"\nimport { UPDATE_APPOINTMENT_V2_MUTATION } from \"../pro_portal/calendar/appointment_graphql\"\n\nimport { TextArea } from \"./Inputs\"\nimport { AnimatedModal } from \"./Modal\"\n\nexport default function ConfirmRescheduleModal({ showReschedule, hideModal, onRescheduleSuccess }) {\n  const [practitionerNote, setPractitionerNote] = useState()\n  const [loading, setLoading] = useState(false)\n  const { appointment, rescheduledStartsAt, rescheduledEndsAt, locationId } = useManualBooking()\n  const [, updateAppointmentV2] = useMutation(UPDATE_APPOINTMENT_V2_MUTATION)\n  const { showToast } = useToast()\n\n  if (!appointment) {\n    return null\n  }\n\n  const clientName = appointment.client?.firstName || appointment.user?.firstName || \"your client\"\n\n  return (\n    <AnimatedModal\n      visible={showReschedule}\n      hideModal={hideModal}\n      header=\"Reschedule session now\"\n      actionButtonCopy={loading ? \"Rescheduling...\" : \"Reschedule\"}\n      saveDisabled={loading}\n      showFooter={true}\n      onSave={() => {\n        setLoading(true)\n        updateAppointmentV2({\n          appointmentId: appointment.id,\n          locationId,\n          startsAt: rescheduledStartsAt,\n          endsAt: rescheduledEndsAt,\n          practitionerNote\n        }).then((result) => {\n          setLoading(false)\n          if (result.data?.updateAppointmentV2?.result === \"success\") {\n            showToast(\"Appointment rescheduled successfully. \")\n            if (result.data.updateAppointmentV2.appointment) {\n              onRescheduleSuccess(appointment.id, result.data.updateAppointmentV2.appointment)\n            }\n          } else {\n            console.error(result)\n            const errorMessage = result?.data?.updateAppointmentV2?.errors?.join() ?? \"unknown error\"\n            showToast({\n              content: `We weren't able to reschedule this appointment: ${errorMessage}`,\n              type: \"error\"\n            })\n          }\n          hideModal()\n        })\n      }}>\n      <p className=\"mb-4\">\n        This will reschedule {clientName}&apos;s session from:\n        <br />\n        {formatShortDateTime(appointment.startsAt)} - {formatShortDateTime(appointment.endsAt)}\n        <br />\n        to:\n        <br />\n        {formatShortDateTime(rescheduledStartsAt)} - {formatShortDateTime(rescheduledEndsAt)}.\n        <br />\n        <br />\n        Add a message below if you want to send an email to {clientName}:\n      </p>\n      <TextArea\n        placeholder=\"Type in your message here...\"\n        rows=\"4\"\n        onChange={(e) => setPractitionerNote(e.target.value)}\n        value={practitionerNote}\n      />\n    </AnimatedModal>\n  )\n}\n","export const UPSERT_BOOKABLE_EVENT_TYPE_MUTATION = `\n  mutation UpsertBookableEventType(\n    $id: ID,\n    $name: String!,\n    $description: String,\n    $instructions: String,\n    $capacity: Int,\n    $amountCents: Int,\n    $location: String!,\n    $kind: String!,\n    $slug: String!\n  ) {\n    upsertBookableEventType(\n      id: $id,\n      name: $name,\n      description: $description,\n      instructions: $instructions,\n      capacity: $capacity,\n      amountCents: $amountCents,\n      location: $location,\n      kind: $kind,\n      slug: $slug\n    ) {\n      result\n      errors\n      bookableEventType {\n        id name description instructions capacity amountCents location kind slug photoUrl url\n      }\n    }\n  }\n`\n\nexport const UPDATE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION = `\n  mutation UpdateBookableEventTypePhoto($handle: String!, $id: ID!) {\n    updateBookableEventTypePhoto(handle: $handle, id: $id) { result errors photoUrl }\n  }\n`\n\nexport const REMOVE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION = `\n  mutation RemoveBookableEventTypePhoto($id: ID!) {\n    removeBookableEventTypePhoto(id: $id) { result errors }\n  }\n`\n\nexport const DELETE_BOOKABLE_EVENT_TYPE_MUTATION = `\n  mutation DeleteBookableEventType($id: ID!) {\n    deleteBookableEventType(id: $id) { result errors }\n  }\n`\n","import React, { createContext, useCallback, useContext, useEffect, useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport {\n  DELETE_BOOKABLE_EVENT_TYPE_MUTATION,\n  REMOVE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION,\n  UPDATE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION,\n  UPSERT_BOOKABLE_EVENT_TYPE_MUTATION\n} from \"./mutations\"\nimport { GET_BOOKABLE_EVENT_TYPES_QUERY } from \"./queries\"\n\nconst initialEventType = {\n  name: \"\",\n  description: \"\",\n  instructions: \"\",\n  amount: { cents: 0, currency: \"USD\" },\n  capacity: null,\n  kind: \"in_person\",\n  location: \"\",\n  slug: \"\"\n}\n\nexport const BookableEventTypesContext = createContext()\n\nexport const BookableEventTypesProvider = ({ children, bookableEventTypes: bookableEventTypesProp }) => {\n  const [showFlyout, setShowFlyout] = useState(false)\n  const [bookableEventType, setBookableEventType] = useState({ ...initialEventType })\n  const [bookableEventTypes, setBookableEventTypes] = useState(bookableEventTypesProp || [])\n  const [googlePlacesLoaded, setGooglePlacesLoaded] = useState(false)\n  const [deleteModalVisible, setDeleteModalVisible] = useState(false)\n\n  // Only fetch event types if they are not provided - useful in the AppointmentFlyout\n  const [{ data: fetchedEventTypesData, fetching: fetchingEventTypes }] = useQuery({\n    query: GET_BOOKABLE_EVENT_TYPES_QUERY,\n    pause: !!bookableEventTypesProp\n  })\n\n  const [{ fetching: upsertMutationFetching }, upsertBookableEventType] = useMutation(\n    UPSERT_BOOKABLE_EVENT_TYPE_MUTATION\n  )\n  const [{ fetching: photoMutationFetching }, updatePhoto] = useMutation(UPDATE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION)\n  const [{ fetching: deleteMutationFetching }, deleteBookableEventType] = useMutation(\n    DELETE_BOOKABLE_EVENT_TYPE_MUTATION\n  )\n  const [{ fetching: removePhotoMutationFetching }, removePhoto] = useMutation(\n    REMOVE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION\n  )\n\n  const fetching =\n    upsertMutationFetching ||\n    photoMutationFetching ||\n    deleteMutationFetching ||\n    removePhotoMutationFetching ||\n    fetchingEventTypes\n\n  // Set the bookableEventTypes state if it was fetched\n  useEffect(() => {\n    if (fetchedEventTypesData?.bookableEventTypes && !bookableEventTypesProp) {\n      setBookableEventTypes(fetchedEventTypesData.bookableEventTypes)\n    }\n  }, [fetchedEventTypesData, bookableEventTypesProp])\n\n  // Initialize the Google Places API for the location field\n  useEffect(() => {\n    async function initPlaces() {\n      await window.google.maps.importLibrary(\"places\")\n      setGooglePlacesLoaded(true)\n    }\n\n    initPlaces()\n  }, [])\n\n  const updateBookableEventTypes = (newEventType) => {\n    if (!bookableEventTypes) return\n\n    setBookableEventTypes((prevEventTypes) => {\n      const newEventTypes = [...prevEventTypes]\n      const index = newEventTypes.findIndex((s) => s.id.toString() === newEventType.id.toString())\n\n      if (index !== -1) {\n        newEventTypes[index] = newEventType\n      } else {\n        newEventTypes.push(newEventType)\n      }\n\n      return newEventTypes\n    })\n  }\n\n  const removeBookableEventTypeFromList = (id) => {\n    setBookableEventTypes((prevEventTypes) => prevEventTypes.filter((eventType) => eventType.id !== id))\n  }\n\n  const resetEventType = useCallback(() => {\n    setBookableEventType({ ...initialEventType })\n  }, [])\n\n  const editEventType = useCallback((eventType) => {\n    setBookableEventType({ ...eventType })\n    setShowFlyout(true)\n  }, [])\n\n  const addEventType = useCallback(() => {\n    resetEventType()\n    setShowFlyout(true)\n  }, [resetEventType])\n\n  const saveEventType = useCallback(async () => {\n    const result = await upsertBookableEventType({ ...bookableEventType })\n\n    // If success, update the bookableEventTypes state\n    if (result?.data?.upsertBookableEventType?.result === \"success\") {\n      updateBookableEventTypes(result.data.upsertBookableEventType.bookableEventType)\n    }\n\n    return result\n  }, [upsertBookableEventType, bookableEventType])\n\n  const value = {\n    bookableEventTypes,\n    setBookableEventTypes,\n    showFlyout,\n    setShowFlyout,\n    bookableEventType,\n    setBookableEventType,\n    editEventType,\n    addEventType,\n    saveEventType,\n    googlePlacesLoaded,\n    fetching,\n    upsertBookableEventType,\n    updatePhoto,\n    deleteBookableEventType,\n    removePhoto,\n    updateBookableEventTypes,\n    deleteModalVisible,\n    setDeleteModalVisible,\n    removeBookableEventTypeFromList\n  }\n\n  return <BookableEventTypesContext.Provider value={value}>{children}</BookableEventTypesContext.Provider>\n}\n\nexport const useBookableEventTypes = () => useContext(BookableEventTypesContext)\n","export const GET_BOOKABLE_EVENT_TYPES_QUERY = `\n  query GetBookableEventTypes {\n    bookableEventTypes {\n      id\n      name\n      description\n      instructions\n      capacity\n      amountCents\n      amountCurrency\n      location\n      kind\n      photoUrl\n      slug\n      url\n    }\n  }\n`\n","import { ArrowTopRightOnSquareIcon } from \"@heroicons/react/24/solid\"\nimport dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport DatePicker from \"../../components/shared/DatePicker\"\nimport { CheckBox, Label, Select, TimePicker } from \"../../components/shared/Inputs\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useCalendarFlyout } from \"../../contexts/CalendarFlyoutContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { useBookableEventTypes } from \"../BookableEventTypes/BookableEventTypesContext\"\n\nimport { useBookableEvents } from \"./BookableEventsContext\"\n\nconst BookableEventForm = ({ onBookableEventChanged, onDeleteBookableEvent }) => {\n  const {\n    bookableEvent,\n    setBookableEvent,\n    getDefaultNewEvent,\n    fetching,\n    deleteBookableEvent,\n    deleteModalVisible,\n    setDeleteModalVisible,\n    upsertBookableEvent\n  } = useBookableEvents()\n  const { bookableEventTypes, fetching: fetchingEventTypes } = useBookableEventTypes()\n  const { showToast } = useToast()\n  const { setShowFlyout } = useCalendarFlyout()\n\n  const onSave = () => {\n    upsertBookableEvent({ ...bookableEvent }).then((result) => {\n      if (result?.data?.upsertBookableEvent?.result === \"success\") {\n        const newEvent = result.data.upsertBookableEvent.bookableEvent\n        onBookableEventChanged(newEvent)\n        setBookableEvent(newEvent)\n        setShowFlyout(false)\n        showToast(`Your event was saved successfully`)\n      } else {\n        console.error(result)\n        let errorMessage = \"There was an error saving your event\"\n        if (result.data?.upsertBookableEvent?.errors) errorMessage += `: ${result.data.upsertBookableEvent.errors}`\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    })\n  }\n\n  const handleEventTypeChange = (eventTypeId) => {\n    if (eventTypeId) {\n      setBookableEvent((prev) => ({\n        ...prev,\n        bookableEventTypeId: eventTypeId\n      }))\n    } else {\n      setBookableEvent((prev) => ({ ...prev, bookableEventTypeId: null }))\n    }\n  }\n\n  const editingExistingEvent = !!bookableEvent.id\n  const selectedEventType = bookableEventTypes?.find(\n    (et) => et.id.toString() === bookableEvent.bookableEventTypeId?.toString()\n  )\n  const saveEnabled = !fetching && bookableEvent.bookableEventTypeId\n  const isLoading = fetching || fetchingEventTypes\n\n  console.log(\"selectedEventType\", selectedEventType)\n\n  if (isLoading) {\n    return <LoadingSpinner className=\"py-12\" spinnerClassName=\"text-teal h-12 w-12\" />\n  }\n\n  return (\n    <>\n      <div className=\"mb-4 flex flex-col\">\n        {bookableEventTypes && bookableEventTypes.length > 0 ? (\n          <div className=\"mb-4\">\n            <Label htmlFor=\"bookable-event-type\">Event Type</Label>\n            <Select\n              id=\"bookable-event-type\"\n              disabled={!!bookableEvent.id}\n              value={bookableEvent.bookableEventTypeId || \"\"}\n              onChange={(e) => handleEventTypeChange(e.target.value)}>\n              <option value=\"\">Select an event type</option>\n              {bookableEventTypes.map((eventType) => (\n                <option key={eventType.id} value={eventType.id}>\n                  {eventType.name}\n                </option>\n              ))}\n            </Select>\n          </div>\n        ) : (\n          <Typography variant=\"body\">\n            No event types available. Please{\" \"}\n            <a href=\"/portal/services#events\" className=\"text-teal hover:underline\">\n              create an event type in the Services Page\n            </a>\n            .\n          </Typography>\n        )}\n\n        {selectedEventType && (\n          <>\n            <div className=\"mt-4\">\n              <Typography variant=\"body\" className=\"font-medium\">\n                Event Details\n              </Typography>\n              <div className=\"mt-2 rounded bg-gray-light p-3\">\n                <Typography variant=\"body\">\n                  <span className=\"font-medium\">Name:</span> {selectedEventType.name}\n                </Typography>\n                {selectedEventType.description && (\n                  <Typography variant=\"body\" className=\"mt-1\">\n                    <span className=\"font-medium\">Description:</span> {selectedEventType.description}\n                  </Typography>\n                )}\n                <Typography variant=\"body\" className=\"mt-1\">\n                  <span className=\"font-medium\">Location:</span> {selectedEventType.location || \"Virtual\"}\n                </Typography>\n                {selectedEventType.amountCents > 0 && (\n                  <Typography variant=\"body\" className=\"mt-1\">\n                    <span className=\"font-medium\">Price:</span> ${(selectedEventType.amountCents / 100).toFixed(2)}\n                  </Typography>\n                )}\n                {selectedEventType.capacity && (\n                  <Typography variant=\"body\" className=\"mt-1\">\n                    <span className=\"font-medium\">Capacity:</span> {selectedEventType.capacity}\n                  </Typography>\n                )}\n                {selectedEventType.url && (\n                  <Typography variant=\"body\" className=\"mt-1\">\n                    <div className=\"flex items-center gap-2\">\n                      <span className=\"font-medium\">Link to book:</span>{\" \"}\n                      <a href={selectedEventType.url} target=\"_blank\" rel=\"noopener noreferrer\">\n                        <ArrowTopRightOnSquareIcon className=\"h-5 w-5\" />\n                      </a>\n                    </div>\n                  </Typography>\n                )}\n              </div>\n            </div>\n\n            <div className=\"mt-2\">\n              <CheckBox\n                id=\"all-day-checkbox\"\n                label=\"All-Day\"\n                name=\"All-Day\"\n                checked={bookableEvent.allDay}\n                onChange={() => {\n                  if (!bookableEvent.allDay) {\n                    const startsAt = dayjs(bookableEvent.startsAt)\n                      .tz(bookableEvent.timeZone)\n                      .startOf(\"day\")\n                      .toISOString()\n                    const endsAt = dayjs(bookableEvent.endsAt).tz(bookableEvent.timeZone).endOf(\"day\").toISOString()\n                    setBookableEvent((event) => ({ ...event, allDay: !event.allDay, startsAt, endsAt }))\n                  } else {\n                    setBookableEvent((event) => ({\n                      ...event,\n                      allDay: !event.allDay,\n                      startsAt: getDefaultNewEvent().startsAt,\n                      endsAt: getDefaultNewEvent().endsAt\n                    }))\n                  }\n                }}\n              />\n            </div>\n          </>\n        )}\n      </div>\n\n      {selectedEventType && bookableEvent.timeZone && (\n        <>\n          <div className=\"flex flex-row justify-between gap-4\">\n            <div className=\"mb-4 flex w-1/2 flex-col\">\n              <Label>Start date</Label>\n              <DatePicker\n                className=\"w-full\"\n                selected={new Date(dayjs(bookableEvent.startsAt).tz(bookableEvent.timeZone))}\n                onChange={(date) =>\n                  setBookableEvent((event) => {\n                    const day = dayjs(date)\n                    const endsAt = day.add(1, \"hour\").toISOString()\n                    return { ...event, startsAt: date, endsAt }\n                  })\n                }\n              />\n            </div>\n            <div className=\"flex w-1/2 flex-col\">\n              <Label>End date</Label>\n              <DatePicker\n                className=\"w-full\"\n                selected={new Date(dayjs(bookableEvent.endsAt).tz(bookableEvent.timeZone))}\n                onChange={(date) => setBookableEvent((event) => ({ ...event, endsAt: date }))}\n              />\n            </div>\n          </div>\n          {!bookableEvent.allDay && (\n            <div className=\"flex flex-row justify-between gap-4\">\n              <div className=\"w-1/2\">\n                <Label htmlFor=\"bookable-event-start-time\">Start time</Label>\n                <TimePicker\n                  id=\"bookable-event-start-time\"\n                  value={dayjs(bookableEvent.startsAt).tz(bookableEvent.timeZone).format(\"HH:mm\")}\n                  valueFormat=\"HH:mm\"\n                  showFifteenIncrements={true}\n                  onChange={(e) => {\n                    const [hour, minute] = e.target.value.split(\":\")\n                    const duration = dayjs(bookableEvent.endsAt).diff(dayjs(bookableEvent.startsAt), \"minute\")\n                    setBookableEvent((event) => ({\n                      ...event,\n                      startsAt: dayjs(event.startsAt).set(\"hour\", hour).set(\"minute\", minute).toDate(),\n                      endsAt: dayjs(event.startsAt)\n                        .set(\"hour\", hour)\n                        .set(\"minute\", minute)\n                        .add(duration, \"minute\")\n                        .toDate()\n                    }))\n                  }}\n                />\n              </div>\n              <div className=\"w-1/2\">\n                <Label htmlFor=\"bookable-event-end-time\">End time</Label>\n                <TimePicker\n                  id=\"bookable-event-end-time\"\n                  value={dayjs(bookableEvent.endsAt).tz(bookableEvent.timeZone).format(\"HH:mm\")}\n                  valueFormat=\"HH:mm\"\n                  showFifteenIncrements={true}\n                  onChange={(e) => {\n                    const [hour, minute] = e.target.value.split(\":\")\n                    setBookableEvent((event) => ({\n                      ...event,\n                      endsAt: dayjs(event.endsAt).set(\"hour\", hour).set(\"minute\", minute).toDate()\n                    }))\n                  }}\n                />\n              </div>\n            </div>\n          )}\n          <div className=\"mt-4\">\n            <Label htmlFor=\"time-zone\">Time zone</Label>\n            <Select\n              value={bookableEvent.timeZone}\n              onChange={(e) =>\n                setBookableEvent((event) => {\n                  const startsAt = dayjs(event.startsAt)\n                    .tz(e.target.value)\n                    .set(\"hour\", dayjs(event.startsAt).tz(event.timeZone).get(\"hour\"))\n                    .set(\"minute\", dayjs(event.startsAt).tz(event.timeZone).get(\"minute\"))\n                    .toISOString()\n                  const endsAt = dayjs(event.endsAt)\n                    .tz(e.target.value)\n                    .set(\"hour\", dayjs(event.endsAt).tz(event.timeZone).get(\"hour\"))\n                    .set(\"minute\", dayjs(event.endsAt).tz(event.timeZone).get(\"minute\"))\n                    .toISOString()\n                  return {\n                    ...event,\n                    timeZone: e.target.value,\n                    startsAt,\n                    endsAt\n                  }\n                })\n              }\n              id=\"time-zone\">\n              {Intl.supportedValuesOf(\"timeZone\").map((tz) => (\n                <option key={tz} value={tz}>\n                  {tz}\n                </option>\n              ))}\n            </Select>\n          </div>\n        </>\n      )}\n\n      <div className=\"mt-8 flex justify-between\">\n        {editingExistingEvent && (\n          <Button onClick={() => setDeleteModalVisible(true)} type=\"warning\" size=\"small\">\n            Delete\n          </Button>\n        )}\n        <Button disabled={!saveEnabled} onClick={onSave} type=\"primary\" size=\"small\">\n          Save\n        </Button>\n      </div>\n\n      {/* Delete Modal */}\n      <AnimatedModal\n        header=\"Delete event\"\n        visible={deleteModalVisible}\n        hideModal={() => setDeleteModalVisible(false)}\n        actionButtonCopy=\"Yes, delete\"\n        actionButtonType=\"destructive\"\n        saveDisabled={fetching}\n        onSave={() => {\n          deleteBookableEvent({ id: bookableEvent.id }).then((result) => {\n            if (result?.data?.deleteBookableEvent?.result === \"success\") {\n              if (onDeleteBookableEvent) onDeleteBookableEvent(bookableEvent)\n\n              setDeleteModalVisible(false)\n              setShowFlyout(false)\n              showToast(`Your event was deleted successfully`)\n            } else {\n              console.error(result)\n              let errorMessage = \"There was an error deleting your event\"\n              if (result.data?.deleteBookableEvent?.errors)\n                errorMessage += `: ${result.data.deleteBookableEvent.errors}`\n              showToast({ type: \"error\", content: errorMessage })\n            }\n          })\n        }}\n        showFooter={true}>\n        <p>Are you sure you want to delete this event?</p>\n      </AnimatedModal>\n    </>\n  )\n}\n\nexport default BookableEventForm\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport { Button } from \"./Buttons\"\nimport { NewModal } from \"./Modal\"\nimport Typography from \"./Typography\"\n\nconst DELETE_CLIENT_MUTATION = `\n  mutation DeleteClient($clientId: ID!) {\n    deleteClient(clientId: $clientId) {\n      result\n      errors\n    }\n  }\n`\n\nexport default function DeleteClientModal({ client, deleteModalId, onSuccess }) {\n  const { showToast } = useToast()\n  const [, deleteClient] = useMutation(DELETE_CLIENT_MUTATION)\n\n  const [loading, setLoading] = useState(false)\n\n  return (\n    <NewModal id={deleteModalId} header=\"Delete client now\" showFooter={false}>\n      <div className=\"pb-24\">\n        <Typography variant=\"body\" as=\"p\">\n          This will remove the client{\" \"}\n          <span className=\"font-semibold\">\n            {client?.firstName} {client?.lastName}\n          </span>{\" \"}\n          from your account now. This action can&apos;t be undone.\n        </Typography>\n        <div className=\"absolute inset-x-0 bottom-0 flex justify-end border-t border-gray-light bg-white p-8 sm:bottom-12\">\n          <Button\n            type=\"tertiary\"\n            className=\"mr-4\"\n            onClick={() => {\n              NiceModal.remove(deleteModalId)\n            }}>\n            No, don&apos;t delete\n          </Button>\n          <Button\n            type=\"destructive\"\n            loading={loading}\n            onClick={() => {\n              setLoading(true)\n              deleteClient({ clientId: client.id }).then((result) => {\n                if (result.error || result.data.deleteClient.errors) {\n                  showToast({\n                    content: `Payment could not be processed: ${result.error || result.data.editClient.errors}`,\n                    type: \"error\"\n                  })\n                  setLoading(false)\n                } else {\n                  setLoading(false)\n                  NiceModal.remove(deleteModalId)\n                  showToast(\"Client deleted successfully. \")\n                  onSuccess()\n                }\n              })\n            }}>\n            Yes, delete\n          </Button>\n        </div>\n      </div>\n    </NewModal>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatPhone, isClientValid } from \"../../utils/utils\"\n\nimport { Button } from \"./Buttons\"\nimport DeleteClientModal from \"./DeleteClientModal\"\nimport { Input, Label, InputWithLabel } from \"./Inputs\"\nimport { NewModal } from \"./Modal\"\n\nconst EDIT_CLIENT_MUTATION = `\n  mutation EditClient($clientId: ID!, $fields: ClientInput!) {\n    editClient(clientId: $clientId, fields: $fields) {\n      result\n      errors\n    }\n  }\n`\n\nexport default function EditClientModal({ client, modalId, deleteModalId, onSuccess }) {\n  const { showToast } = useToast()\n  const [, editClient] = useMutation(EDIT_CLIENT_MUTATION)\n  const [error, setError] = useState(null)\n  const [loading, setLoading] = useState(false)\n  const [clientInput, setClientInput] = useState({\n    email: client?.email,\n    phone: client?.phone,\n    firstName: client?.firstName,\n    lastName: client?.lastName,\n    address: client?.address,\n    addressTwo: client?.addressTwo,\n    city: client?.city,\n    state: client?.state,\n    postalCode: client?.postalCode,\n    country: client?.country\n  })\n\n  useEffect(() => {\n    if (client) {\n      setClientInput({\n        email: client?.email,\n        phone: client?.phone,\n        firstName: client?.firstName,\n        lastName: client?.lastName,\n        address: client?.address,\n        addressTwo: client?.addressTwo,\n        city: client?.city,\n        state: client?.state,\n        postalCode: client?.postalCode,\n        country: client?.country\n      })\n    }\n  }, [client])\n\n  return (\n    <>\n      <NewModal id={modalId} fullHeightInMobile={true} header=\"Edit client\">\n        <div className=\"pb-24\">\n          {error && <p className=\"text-red\">{error}</p>}\n          <Label className=\"mt-4\">Full name</Label>\n          <div className=\"flex flex-row\">\n            <Input\n              placeholder=\"First\"\n              id=\"client-first-name-edit\"\n              defaultValue={clientInput.firstName}\n              onChange={(input) => setClientInput({ ...clientInput, firstName: input.target.value })}\n              className=\"relative -mr-1 mb-4 rounded-none rounded-l-lg hover:z-20 focus:z-20\"\n            />\n            <Input\n              placeholder=\"Last\"\n              id=\"client-last-name-edit\"\n              defaultValue={clientInput.lastName}\n              onChange={(input) => setClientInput({ ...clientInput, lastName: input.target.value })}\n              className=\"relative mb-4 rounded-none rounded-r-lg hover:z-20 focus:z-20\"\n            />\n          </div>\n\n          <InputWithLabel\n            label=\"Email\"\n            id=\"client-email-edit\"\n            placeholder=\"Email\"\n            onChange={(input) => {\n              setClientInput({ ...clientInput, email: input.target.value })\n            }}\n            value={clientInput?.email ? clientInput.email : \"\"}\n            className=\"mb-4\"\n            labelClassName=\"mb-2\"\n          />\n\n          <InputWithLabel\n            label=\"Phone\"\n            id=\"client-phone-edit\"\n            placeholder=\"Phone\"\n            onChange={(input) => {\n              setClientInput({ ...clientInput, phone: input.target.value })\n            }}\n            value={clientInput?.phone ? formatPhone(clientInput.phone) : \"\"}\n            className=\"mb-4 w-1/2\"\n            labelClassName=\"mb-2\"\n          />\n\n          <InputWithLabel\n            label=\"Address\"\n            id=\"client-address-edit\"\n            placeholder=\"Address\"\n            onChange={(input) => {\n              setClientInput({ ...clientInput, address: input.target.value })\n            }}\n            value={clientInput?.address || \"\"}\n            className=\"mb-4\"\n            labelClassName=\"mb-2\"\n          />\n\n          <InputWithLabel\n            label=\"Address Line 2\"\n            id=\"client-address-two-edit\"\n            placeholder=\"Apartment, suite, etc.\"\n            onChange={(input) => {\n              setClientInput({ ...clientInput, addressTwo: input.target.value })\n            }}\n            value={clientInput?.addressTwo || \"\"}\n            className=\"mb-4\"\n            labelClassName=\"mb-2\"\n          />\n\n          <div className=\"mb-4 flex flex-row gap-4\">\n            <InputWithLabel\n              label=\"City\"\n              id=\"client-city-edit\"\n              placeholder=\"City\"\n              onChange={(input) => {\n                setClientInput({ ...clientInput, city: input.target.value })\n              }}\n              value={clientInput?.city || \"\"}\n              className=\"flex-1\"\n              labelClassName=\"mb-2\"\n            />\n\n            <InputWithLabel\n              label=\"State/Province\"\n              id=\"client-state-edit\"\n              placeholder=\"State\"\n              onChange={(input) => {\n                setClientInput({ ...clientInput, state: input.target.value })\n              }}\n              value={clientInput?.state || \"\"}\n              className=\"flex-1\"\n              labelClassName=\"mb-2\"\n            />\n          </div>\n\n          <div className=\"mb-4 flex flex-row gap-4\">\n            <InputWithLabel\n              label=\"Postal Code\"\n              id=\"client-postal-code-edit\"\n              placeholder=\"Postal Code\"\n              onChange={(input) => {\n                setClientInput({ ...clientInput, postalCode: input.target.value })\n              }}\n              value={clientInput?.postalCode || \"\"}\n              className=\"flex-1\"\n              labelClassName=\"mb-2\"\n            />\n\n            <InputWithLabel\n              label=\"Country\"\n              id=\"client-country-edit\"\n              placeholder=\"Country\"\n              onChange={(input) => {\n                setClientInput({ ...clientInput, country: input.target.value })\n              }}\n              value={clientInput?.country || \"\"}\n              className=\"flex-1\"\n              labelClassName=\"mb-2\"\n            />\n          </div>\n\n          <div className=\"absolute inset-x-0 bottom-0 flex justify-between border-t border-gray-light bg-white p-8 sm:bottom-12\">\n            <Button\n              type=\"warning\"\n              onClick={() => {\n                NiceModal.show(deleteModalId)\n              }}>\n              Delete\n            </Button>\n            <div className=\"flex w-full items-center justify-end gap-4\">\n              <Button\n                type=\"tertiary\"\n                onClick={() => {\n                  NiceModal.remove(modalId)\n                }}>\n                Cancel\n              </Button>\n              <Button\n                type=\"primary\"\n                loading={loading}\n                disabled={!isClientValid}\n                onClick={() => {\n                  setLoading(true)\n                  editClient({ clientId: client.id, fields: clientInput }).then((result) => {\n                    if (result.error || result.data.editClient.errors) {\n                      setError(`Error updating client: ${result.error || result.data.editClient.errors}`)\n                    } else {\n                      setError(null)\n                      showToast(\"Client edited successfully. \")\n                      NiceModal.remove(modalId)\n                      onSuccess(clientInput)\n                    }\n                    setLoading(false)\n                  })\n                }}>\n                Save\n              </Button>\n            </div>\n          </div>\n        </div>\n      </NewModal>\n      <DeleteClientModal client={client} onSuccess={onSuccess} deleteModalId={deleteModalId} />\n    </>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState, useEffect, useRef } from \"react\"\nimport { components } from \"react-select\"\nimport Creatable from \"react-select/creatable\"\nimport { useQuery } from \"urql\"\n\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport { selectStyling, formatPhone, urqlClient } from \"../../../utils/utils\"\nimport EditClientModal from \"../../shared/EditClientModal\"\nimport { InputWithLabel } from \"../../shared/Inputs\"\nimport { Banner } from \"../../shared/Layout\"\nimport { Link } from \"../../shared/Links\"\nimport LoadingSpinner from \"../../shared/LoadingSpinner\"\n\nconst CLIENTS_QUERY = `\n  query clientsQuery {\n    clients {\n      id\n      practiceId\n      userId\n      email\n      phone\n      firstName\n      lastName\n      clientType\n      invitedFrom\n    }\n  }\n`\n\nconst CLIENT_DETAILS_QUERY = `\n  query clientDetailsQuery($clientId: ID!) {\n    client(clientId: $clientId) {\n      id\n      openPackages { \n        id \n        createdAt \n        name \n        sessionsRemaining \n        serviceId \n      }\n      lastBookedService { \n        id \n      }\n      customPrices { \n        id \n        amountCents \n        serviceId \n      }\n    }\n  }\n`\n\nconst CustomOption = ({ data, setClientToEdit, ...restProps }) => {\n  const { name, label, value, contactInfo, preventBooking, __isNew__ } = data\n\n  return (\n    <components.Option {...restProps}>\n      <div>\n        {__isNew__ ? <>{label}</> : <>{name}</>}\n\n        <span className=\"block text-sm text-gray-dark\">\n          {preventBooking ? (\n            <span>\n              No email or phone on file{\" \"}\n              <Link\n                className=\"font-semibold\"\n                onClick={() => {\n                  const [firstName, lastName] = name.split(\" \")\n\n                  setClientToEdit({\n                    id: value,\n                    firstName: firstName,\n                    lastName: lastName\n                  })\n                  NiceModal.show(\"edit-client-appointment\")\n                }}>\n                Add either to book a session\n              </Link>\n            </span>\n          ) : (\n            contactInfo\n          )}\n        </span>\n      </div>\n    </components.Option>\n  )\n}\n\nexport default function ClientSelector({ defaultClient, onSelect }) {\n  const [{ data, error }, reexecuteQuery] = useQuery({\n    query: CLIENTS_QUERY,\n    requestPolicy: \"cache-and-network\"\n  })\n\n  const [clientList, setClientList] = useState([])\n  const [newClient, setNewClient] = useState(false)\n  const [selectedClient, setSelectedClient] = useState(defaultClient)\n  const [listValue, setListValue] = useState()\n  const [clientToEdit, setClientToEdit] = useState()\n  const [isLoadingDetails, setIsLoadingDetails] = useState(false)\n\n  const { practicePhone, practiceEmail } = usePractice()\n\n  let clientPhone = formatPhone(selectedClient?.phone)\n  if (clientPhone) {\n    clientPhone = clientPhone.startsWith(\"+1\") || clientPhone.startsWith(\"1\") ? clientPhone : \"+1 \" + clientPhone\n  }\n\n  const DropdownIndicator = (props) => (\n    <components.DropdownIndicator {...props}>\n      <ChevronDownIcon className=\"h-5 w-5 text-gray-dark\" aria-hidden=\"true\" />\n    </components.DropdownIndicator>\n  )\n\n  const WrappedCustomOption = (props) => <CustomOption {...props} setClientToEdit={setClientToEdit} />\n\n  useEffect(() => {\n    if (data && data.clients) {\n      setClientList(data.clients)\n\n      if (defaultClient) {\n        setListValue({\n          value: defaultClient.id,\n          name: `${defaultClient.firstName} ${defaultClient.lastName}`,\n          label: `${defaultClient.firstName} ${defaultClient.lastName}\n          <span class='block text-sm text-gray-dark'>${\n            formatPhone(defaultClient.phone) ? formatPhone(defaultClient.phone) : defaultClient.email\n          } </span>`\n        })\n      }\n    }\n  }, [data])\n\n  useEffect(() => {\n    if (clientList.length > 0) {\n      const params = new URLSearchParams(window.location.search)\n      const clientId = params.get(\"clientId\")\n      if (clientId) {\n        onSelect(clientList.find((client) => client.id === clientId))\n        window.history.replaceState({}, \"\", window.location.pathname)\n      }\n    }\n  }, [clientList])\n\n  if (error) {\n    console.log(error)\n  }\n\n  const ref = useRef(null)\n\n  const enrichClientWithDetails = (client) => {\n    if (!client) return\n\n    setIsLoadingDetails(true)\n    urqlClient\n      .query(CLIENT_DETAILS_QUERY, { clientId: client.id })\n      .toPromise()\n      .then((result) => {\n        const clientDetailsData = result.data\n        if (clientDetailsData?.client) {\n          const enrichedClient = {\n            ...client,\n            ...clientDetailsData.client\n          }\n          onSelect(enrichedClient)\n        }\n      })\n      .finally(() => {\n        setIsLoadingDetails(false)\n      })\n  }\n\n  return (\n    <div className=\"mb-4\">\n      {newClient ? (\n        <div className=\"grid grid-cols-2 gap-2\">\n          <InputWithLabel\n            label=\"First name\"\n            value={selectedClient.firstName}\n            onChange={(e) => setSelectedClient({ ...selectedClient, firstName: e.target.value })}\n            required\n          />\n          <InputWithLabel\n            label=\"Last name\"\n            value={selectedClient.lastName}\n            onChange={(e) => setSelectedClient({ ...selectedClient, lastName: e.target.value })}\n            required\n          />\n          <InputWithLabel\n            label=\"Email\"\n            value={selectedClient?.email ? selectedClient.email : \"\"}\n            className=\"mt-2\"\n            onChange={(e) => {\n              setSelectedClient({ ...selectedClient, email: e.target.value })\n              onSelect({ ...selectedClient, email: e.target.value })\n            }}\n          />\n          <InputWithLabel\n            label=\"Phone\"\n            className=\"mt-2\"\n            onChange={(e) => {\n              setSelectedClient({ ...selectedClient, phone: e.target.value })\n              onSelect({ ...selectedClient, phone: e.target.value })\n            }}\n            value={selectedClient?.phone ? formatPhone(selectedClient.phone) : \"\"}\n            disabled={!newClient}\n            required\n          />\n        </div>\n      ) : (\n        <div className=\"relative\">\n          <Creatable\n            id=\"client-select\"\n            placeholder=\"Type to select or create client\"\n            formatCreateLabel={(inputValue) => `Create new client \"${inputValue}\"`}\n            components={{ DropdownIndicator, Option: WrappedCustomOption }}\n            options={clientList.map((client) => {\n              let name = client.firstName\n              if (client.lastName) name += ` ${client.lastName}`\n              const preventBooking = !client.phone && !client.email\n              const contactInfo = formatPhone(client.phone) ? formatPhone(client.phone) : client.email\n\n              return {\n                value: client.id,\n                name: name,\n                label: name,\n                contactInfo,\n                preventBooking,\n                isDisabled: preventBooking\n              }\n            })}\n            onChange={(clientFromSelect) => {\n              const fullClient = clientList.find((client) => client.id === clientFromSelect.value)\n              setSelectedClient(fullClient)\n              setListValue(clientFromSelect)\n              enrichClientWithDetails(fullClient)\n            }}\n            value={listValue}\n            menuPortalTarget={document.body}\n            formatOptionLabel={(option, { context }) => (\n              <div className=\"flex items-center justify-between\">\n                {context === \"menu\" ? (\n                  <span className=\"block font-manrope text-base\" dangerouslySetInnerHTML={{ __html: option.label }} />\n                ) : (\n                  <>\n                    <span className=\"font-manrope text-base\" dangerouslySetInnerHTML={{ __html: option.name }} />\n                    {isLoadingDetails && <LoadingSpinner className=\"p-0\" spinnerClassName=\"h-4 w-4\" />}\n                  </>\n                )}\n              </div>\n            )}\n            styles={selectStyling()}\n            onCreateOption={(e) => {\n              const client = {\n                firstName: e.split(\" \")[0],\n                lastName: e.split(\" \")[1],\n                email: \"\",\n                phone: \"\",\n                clientType: \"invited\",\n                invitedFrom: \"web_appointment_invite\"\n              }\n              setNewClient(true)\n              setSelectedClient(client)\n              onSelect(client)\n            }}\n            ref={ref}\n          />\n        </div>\n      )}\n\n      {clientPhone === practicePhone && !!practicePhone && (\n        <Banner type=\"error\">\n          Cannot use your phone number for a client.\n          {newClient ? (\n            <> Please leave blank and add email if client phone is unknown.</>\n          ) : (\n            <>\n              {\" \"}\n              Please edit this client in the{\" \"}\n              <a className=\"cursor-pointer underline hover:text-gray\" href=\"/portal/clients\">\n                client directory\n              </a>{\" \"}\n              before booking.\n            </>\n          )}\n        </Banner>\n      )}\n      {selectedClient?.email?.trim() === practiceEmail && (\n        <Banner type=\"error\">\n          Cannot use your email for a client.\n          {newClient ? (\n            <> Please add phone for client or use a placeholder email.</>\n          ) : (\n            <>\n              {\" \"}\n              Please edit this client in the{\" \"}\n              <a className=\"underline hover:text-gray\" href=\"/portal/clients\">\n                client directory\n              </a>{\" \"}\n              before booking.\n            </>\n          )}\n        </Banner>\n      )}\n      <EditClientModal\n        client={clientToEdit}\n        onSuccess={reexecuteQuery}\n        key={clientToEdit?.id}\n        modalId=\"edit-client-appointment\"\n        deleteModalId=\"delete-client-appointment\"\n      />\n    </div>\n  )\n}\n","export const BOOKABLE_EVENT_REGISTRANTS_QUERY = `\n  query BookableEvent($id: ID!) {\n    bookableEvent(id: $id) {\n      clients {\n        id\n        firstName\n        lastName\n        email\n        phone\n      }\n    }\n  }\n`\n\nexport const BOOKABLE_EVENT_REGISTRATION_QUERY = `\n  query BookableEventRegistration($bookableEventId: ID!, $clientId: ID!) {\n    bookableEventRegistration(bookableEventId: $bookableEventId, clientId: $clientId) {\n      id\n      amountCents\n      createdAt\n      paymentStatus\n      discount {\n        code\n        amountCents\n      }\n    }\n  }\n`\n\nexport const DEFAULT_PAYMENT_METHOD_QUERY = `\n  query DefaultPaymentMethod($clientId: ID!, $practiceId: ID!) {\n    defaultPaymentMethodPractice(clientId: $clientId, practiceId: $practiceId) {\n      brand\n      last4\n      expMonth\n      expYear\n    }\n  }\n`\n","import React, { useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport PaymentProviderCardForm from \"../../components/payments/PaymentProviderCardForm\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport Typography from \"../../components/shared/Typography\"\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport { PROCESS_REGISTRATION_PAYMENT_MUTATION } from \"./mutations\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"./queries\"\n\nexport default function BookableEventPaymentModal({ visible, hideModal, client, registration, onPaymentSuccess }) {\n  const [paymentMethod, setPaymentMethod] = useState(\"saved_card\")\n  const [processingPayment, setProcessingPayment] = useState(false)\n  const [paymentError, setPaymentError] = useState(null)\n  const { practice } = usePractice()\n  const { showToast } = useToast()\n\n  const [{ data: paymentMethodData, fetching: fetchingPaymentMethod }] = useQuery({\n    query: DEFAULT_PAYMENT_METHOD_QUERY,\n    variables: {\n      clientId: client?.id,\n      practiceId: practice.id\n    }\n  })\n\n  const [, processPayment] = useMutation(PROCESS_REGISTRATION_PAYMENT_MUTATION)\n\n  const defaultPaymentMethod = paymentMethodData?.defaultPaymentMethodPractice\n  const hasSavedCard = !!defaultPaymentMethod\n\n  const handlePaymentMethodChange = (e) => {\n    setPaymentMethod(e.target.value)\n  }\n\n  const handleProcessPayment = async () => {\n    setProcessingPayment(true)\n    setPaymentError(null)\n\n    try {\n      const result = await processPayment({\n        registrationId: registration.id\n      })\n\n      if (result.data?.processRegistrationPayment?.result === \"success\") {\n        showToast(\"Payment processed successfully\")\n        hideModal()\n        onPaymentSuccess()\n      } else {\n        const errorMessage = result.data?.processRegistrationPayment?.errors?.[0] || \"Payment processing failed\"\n        setPaymentError(errorMessage)\n      }\n    } catch (err) {\n      setPaymentError(err.message || \"An unexpected error occurred\")\n    } finally {\n      setProcessingPayment(false)\n    }\n  }\n\n  const formatCurrency = (amountCents) => `$${(amountCents / 100).toFixed(2)}`\n\n  if (!registration || fetchingPaymentMethod) {\n    return (\n      <AnimatedModal visible={visible} hideModal={hideModal} header=\"Process Payment\">\n        <div className=\"py-4\">\n          <LoadingSpinner />\n        </div>\n      </AnimatedModal>\n    )\n  }\n\n  return (\n    <AnimatedModal\n      visible={visible}\n      hideModal={hideModal}\n      header=\"Process Payment\"\n      showFooter={true}\n      cancelButtonCopy=\"Cancel\"\n      cancelButtonType=\"tertiary\"\n      actionButtonCopy={processingPayment ? \"Processing...\" : \"Process Payment\"}\n      actionButtonType=\"primary\"\n      saveDisabled={processingPayment || (paymentMethod === \"saved_card\" && !hasSavedCard)}\n      onSave={handleProcessPayment}>\n      <div className=\"py-4\">\n        <div className=\"mb-6\">\n          <Typography variant=\"body\">\n            Process payment for{\" \"}\n            <strong>\n              {client?.firstName} {client?.lastName}\n            </strong>\n          </Typography>\n          <Typography variant=\"body\" className=\"mt-2\">\n            Amount: <strong>{formatCurrency(registration.amountCents)}</strong>\n          </Typography>\n        </div>\n\n        <div className=\"mb-6\">\n          <Typography variant=\"body\" className=\"mb-3 font-semibold\">\n            Select Payment Method\n          </Typography>\n\n          <RadioWithLabel\n            id=\"saved_card\"\n            name=\"payment_method\"\n            label={\n              hasSavedCard\n                ? `Use saved card (${defaultPaymentMethod.brand} ending in ${defaultPaymentMethod.last4})`\n                : \"No saved card available\"\n            }\n            checked={paymentMethod === \"saved_card\"}\n            onChange={handlePaymentMethodChange}\n            value=\"saved_card\"\n            disabled={!hasSavedCard}\n            className=\"mb-3\"\n          />\n\n          <RadioWithLabel\n            id=\"new_card\"\n            name=\"payment_method\"\n            label=\"Add a new card\"\n            checked={paymentMethod === \"new_card\"}\n            onChange={handlePaymentMethodChange}\n            value=\"new_card\"\n            className=\"mb-3\"\n          />\n\n          {paymentMethod === \"new_card\" && <PaymentProviderCardForm practice={practice} />}\n        </div>\n\n        {paymentError && (\n          <Banner type=\"error\" className=\"mb-4\">\n            {paymentError}\n          </Banner>\n        )}\n      </div>\n    </AnimatedModal>\n  )\n}\n","import { ArrowTopRightOnSquareIcon, CreditCardIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport PaymentProviderWrapper from \"../../components/payments/PaymentProviderWrapper\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Flyout } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { usePractice } from \"../../contexts/PracticeContext\"\n\nimport BookableEventPaymentModal from \"./BookableEventPaymentModal\"\nimport { REMOVE_CLIENT_FROM_BOOKABLE_EVENT_MUTATION } from \"./mutations\"\nimport { BOOKABLE_EVENT_REGISTRATION_QUERY } from \"./queries\"\n\nexport default function ClientDetailsFlyout({ visible, closeFlyout, client, bookableEventId, onClientRemoved }) {\n  const [removeError, setRemoveError] = useState(null)\n  const [{ fetching: removeFetching }, removeClientFromEvent] = useMutation(REMOVE_CLIENT_FROM_BOOKABLE_EVENT_MUTATION)\n  const [showRemoveConfirmation, setShowRemoveConfirmation] = useState(false)\n  const [showPaymentModal, setShowPaymentModal] = useState(false)\n  const { practice } = usePractice()\n\n  const [{ data: registrationData, fetching: registrationFetching, error: registrationError }, reexecuteQuery] =\n    useQuery({\n      query: BOOKABLE_EVENT_REGISTRATION_QUERY,\n      variables: {\n        bookableEventId,\n        clientId: client?.id\n      },\n      pause: !visible || !client?.id\n    })\n\n  const registration = registrationData?.bookableEventRegistration\n\n  const formatCurrency = (amountCents) => `$${(amountCents / 100).toFixed(2)}`\n\n  const getPaymentStatusDisplay = () => {\n    if (!registration) return { label: \"Unknown\", color: \"gray-dark\" }\n\n    switch (registration.paymentStatus) {\n      case \"free\":\n        return { label: \"Free Event\", color: \"green\" }\n      case \"paid\":\n        return { label: \"Paid\", color: \"green\" }\n      case \"upcoming\":\n        return { label: \"Upcoming\", color: \"orange\" }\n      case \"unpaid\":\n        return { label: \"Payment Pending\", color: \"orange\" }\n      case \"failed\":\n        return { label: \"Payment Failed\", color: \"red\" }\n      default:\n        return { label: \"No Payment Required\", color: \"gray-dark\" }\n    }\n  }\n\n  const canProcessPayment = () => {\n    if (!registration) return false\n    if (registration.amountCents === 0) return false // Free event\n    if (registration.paymentStatus === \"paid\") return false // Already paid\n\n    // Can process if payment is pending, failed, or none\n    return [\"unpaid\", \"failed\", \"none\"].includes(registration.paymentStatus)\n  }\n\n  const paymentStatus = getPaymentStatusDisplay()\n\n  const handleShowRemoveConfirmation = () => {\n    setShowRemoveConfirmation(true)\n  }\n\n  const handleCancelRemove = () => {\n    setShowRemoveConfirmation(false)\n    setRemoveError(null)\n  }\n\n  const handleRemoveClient = async () => {\n    if (!client) return\n\n    setRemoveError(null)\n\n    try {\n      const result = await removeClientFromEvent({\n        bookableEventId: bookableEventId,\n        clientId: client.id\n      })\n\n      if (result.data?.removeClientFromBookableEvent?.result === \"success\") {\n        setShowRemoveConfirmation(false)\n        onClientRemoved()\n        closeFlyout()\n      } else {\n        const errorMessage =\n          result.data?.removeClientFromBookableEvent?.errors?.[0] || \"Failed to remove client from event\"\n        setRemoveError(errorMessage)\n      }\n    } catch (err) {\n      console.error(\"Error removing client:\", err)\n      setRemoveError(err.message || \"An unexpected error occurred\")\n    }\n  }\n\n  const handleShowPaymentModal = () => {\n    setShowPaymentModal(true)\n  }\n\n  const handlePaymentSuccess = () => {\n    reexecuteQuery({ requestPolicy: \"network-only\" })\n  }\n\n  return (\n    <>\n      <Flyout header=\"Client Details\" visible={visible} closeFlyout={closeFlyout}>\n        <div className=\"space-y-6\">\n          <div>\n            <h3 className=\"mb-2 font-semibold\">Client Information</h3>\n            <div className=\"rounded-lg border border-gray-light p-4\">\n              <div className=\"mb-2 flex items-center\">\n                <span className=\"font-medium\">Name:</span>\n                <span className=\"mx-1\">\n                  {client?.firstName} {client?.lastName}\n                </span>\n                <a\n                  href={`/portal/clients/${client?.id}`}\n                  className=\"ml-1 inline-flex items-center text-teal hover:text-teal-dark\"\n                  title=\"View client profile\"\n                  target=\"_blank\"\n                  rel=\"noopener noreferrer\">\n                  <ArrowTopRightOnSquareIcon className=\"h-5 w-5\" />\n                </a>\n              </div>\n              <div className=\"mb-2\">\n                <span className=\"font-medium\">Email:</span> {client?.email || \"N/A\"}\n              </div>\n              <div>\n                <span className=\"font-medium\">Phone:</span> {client?.phone || \"N/A\"}\n              </div>\n            </div>\n          </div>\n\n          <div>\n            <h3 className=\"mb-2 font-semibold\">Payment Status</h3>\n            {registrationFetching ? (\n              <div className=\"flex justify-center py-4\">\n                <LoadingSpinner />\n              </div>\n            ) : registrationError ? (\n              <div className=\"rounded-lg border border-red p-4 text-red\">Error loading payment information</div>\n            ) : (\n              <div className=\"rounded-lg border border-gray-light p-4\">\n                {!registration ? (\n                  <div className=\"text-center italic text-gray-dark\">Registration information not found</div>\n                ) : (\n                  <>\n                    <div className=\"mb-2\">\n                      <span className=\"font-medium\">Status:</span>\n                      <span\n                        className={`ml-2 inline-block rounded-full px-2 py-0.5`}\n                        style={{ color: paymentStatus.color }}>\n                        {paymentStatus.label}\n                      </span>\n                    </div>\n                    <div className=\"mb-2\">\n                      <span className=\"font-medium\">Registration Date:</span>{\" \"}\n                      {registration.createdAt ? new Date(registration.createdAt).toLocaleDateString() : \"N/A\"}\n                    </div>\n                    {registration.amountCents > 0 && (\n                      <div className=\"mb-2\">\n                        <span className=\"font-medium\">Amount:</span> {formatCurrency(registration.amountCents)}\n                      </div>\n                    )}\n                    {registration.discount && (\n                      <>\n                        <div className=\"mb-2\">\n                          <span className=\"font-medium\">Discount Code:</span> {registration.discount.code}\n                        </div>\n                        <div className=\"mb-2\">\n                          <span className=\"font-medium\">Discount Amount:</span>{\" \"}\n                          {formatCurrency(registration.discount.amountCents)}\n                        </div>\n                      </>\n                    )}\n\n                    {canProcessPayment() && practice.hasPaymentProvider && (\n                      <div className=\"mt-4\">\n                        <Button\n                          type=\"secondary\"\n                          className=\"flex w-full items-center justify-center\"\n                          onClick={handleShowPaymentModal}>\n                          <CreditCardIcon className=\"mr-2 h-5 w-5\" />\n                          Process Payment\n                        </Button>\n                      </div>\n                    )}\n\n                    {canProcessPayment() && !practice.hasPaymentProvider && (\n                      <div className=\"mt-4 rounded bg-gray-ultralight p-3\">\n                        <p className=\"text-sm text-gray-dark\">\n                          To process payments, you need to connect a payment provider.{\" \"}\n                          <a href=\"/portal/settings/banking\" className=\"text-teal underline\">\n                            Connect payment provider\n                          </a>\n                        </p>\n                      </div>\n                    )}\n                  </>\n                )}\n              </div>\n            )}\n          </div>\n\n          <div className=\"pt-4\">\n            <Button type=\"destructive\" onClick={handleShowRemoveConfirmation} className=\"w-full\">\n              Remove Client from Event\n            </Button>\n          </div>\n        </div>\n      </Flyout>\n\n      {/* Confirmation Modal */}\n      <AnimatedModal\n        visible={showRemoveConfirmation}\n        hideModal={handleCancelRemove}\n        header=\"Remove Client from Event\"\n        showFooter={true}\n        cancelButtonCopy=\"Cancel\"\n        cancelButtonType=\"tertiary\"\n        actionButtonCopy={removeFetching ? \"Removing...\" : \"Yes, Remove Client\"}\n        actionButtonType=\"destructive\"\n        saveDisabled={removeFetching}\n        onSave={handleRemoveClient}>\n        <div className=\"py-4\">\n          <p className=\"mb-4\">\n            Are you sure you want to remove{\" \"}\n            <strong>\n              {client?.firstName} {client?.lastName}\n            </strong>{\" \"}\n            from this event?\n          </p>\n          <p className=\"mb-4\">This action cannot be undone.</p>\n          {removeError && <div className=\"mt-4 rounded border border-red p-3 text-red\">{removeError}</div>}\n        </div>\n      </AnimatedModal>\n\n      {/* Payment Modal */}\n      {client && registration && (\n        <PaymentProviderWrapper practice={practice} client={client}>\n          <BookableEventPaymentModal\n            visible={showPaymentModal}\n            hideModal={() => setShowPaymentModal(false)}\n            client={client}\n            registration={registration}\n            onPaymentSuccess={handlePaymentSuccess}\n          />\n        </PaymentProviderWrapper>\n      )}\n    </>\n  )\n}\n","import { PencilIcon } from \"@heroicons/react/24/outline\"\nimport React, { useMemo, useState } from \"react\"\nimport { useQuery, useMutation } from \"urql\"\n\nimport ClientSelector from \"../../components/pro_portal/calendar/ClientSelector\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { IconButton } from \"../../components/shared/Buttons\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\n\nimport { useBookableEvents } from \"./BookableEventsContext\"\nimport ClientDetailsFlyout from \"./ClientDetailsFlyout\"\nimport { ADD_CLIENT_TO_BOOKABLE_EVENT_MUTATION } from \"./mutations\"\nimport { BOOKABLE_EVENT_REGISTRANTS_QUERY } from \"./queries\"\n\nexport default function BookableEventRegistrants() {\n  const { bookableEvent } = useBookableEvents()\n  const [showAddClientModal, setShowAddClientModal] = useState(false)\n  const [selectedClient, setSelectedClient] = useState(null)\n  const [clientDetailsFlyoutVisible, setClientDetailsFlyoutVisible] = useState(false)\n\n  const [{ data, fetching, error }, reexecuteQuery] = useQuery({\n    query: BOOKABLE_EVENT_REGISTRANTS_QUERY,\n    variables: { id: bookableEvent.id }\n  })\n\n  const atCapacity = useMemo(\n    () => bookableEvent.capacity && data?.bookableEvent?.clients?.length >= bookableEvent.capacity,\n    [bookableEvent.capacity, data?.bookableEvent?.clients?.length]\n  )\n\n  const handleAddClient = () => {\n    setShowAddClientModal(true)\n  }\n\n  const handleAddClientSuccess = () => {\n    // Explicitly refetch the registrants data\n    reexecuteQuery({ requestPolicy: \"network-only\" })\n    setShowAddClientModal(false)\n  }\n\n  const handleEditClient = (client) => {\n    setSelectedClient(client)\n    setClientDetailsFlyoutVisible(true)\n  }\n\n  const handleClientRemoved = () => {\n    reexecuteQuery({ requestPolicy: \"network-only\" })\n  }\n\n  return (\n    <div>\n      {fetching ? (\n        <LoadingSpinner />\n      ) : error ? (\n        <p>Error loading registrants</p>\n      ) : (\n        <>\n          <div className=\"mb-4 flex items-center justify-between\">\n            <h3 className=\"text-lg font-semibold\">Event Registrants</h3>\n            <Button type=\"primary\" onClick={handleAddClient}>\n              Add Client\n            </Button>\n          </div>\n          {/* Show the capacity */}\n          <div className=\"mb-4 text-sm text-gray-dark\">\n            Capacity: {data?.bookableEvent?.clients?.length} taken / {bookableEvent?.capacity} max\n          </div>\n          <div className=\"border-t border-gray-light\">\n            {data?.bookableEvent?.clients?.length > 0 ? (\n              data.bookableEvent.clients.map((client) => (\n                <div key={client.id} className=\"flex justify-between border-b border-gray-light py-2\">\n                  <div>\n                    {client.firstName} {client.lastName}\n                  </div>\n                  <div className=\"flex items-center\">\n                    <div className=\"mr-4 text-right\">\n                      <div>{client.email}</div>\n                      <div>{client.phone}</div>\n                    </div>\n                    <IconButton\n                      Icon={PencilIcon}\n                      onClick={() => handleEditClient(client)}\n                      tooltip=\"Edit registration\"\n                    />\n                  </div>\n                </div>\n              ))\n            ) : (\n              <div className=\"py-4 text-center text-gray-dark\">No registrants yet for this event.</div>\n            )}\n          </div>\n\n          {/* Add client modal */}\n          <AnimatedModal\n            visible={showAddClientModal}\n            hideModal={() => setShowAddClientModal(false)}\n            header=\"Add Client to Event\">\n            <AddClientToEvent\n              bookableEventId={bookableEvent.id}\n              onSuccess={handleAddClientSuccess}\n              onCancel={() => setShowAddClientModal(false)}\n              reexecuteQuery={reexecuteQuery}\n              atCapacity={atCapacity}\n            />\n          </AnimatedModal>\n\n          {/* Client Details Flyout */}\n          {selectedClient && (\n            <ClientDetailsFlyout\n              visible={clientDetailsFlyoutVisible}\n              closeFlyout={() => setClientDetailsFlyoutVisible(false)}\n              client={selectedClient}\n              bookableEventId={bookableEvent.id}\n              onClientRemoved={handleClientRemoved}\n            />\n          )}\n        </>\n      )}\n    </div>\n  )\n}\n\n// This component will handle adding a client to the event\nconst AddClientToEvent = ({ bookableEventId, onSuccess, onCancel, reexecuteQuery, atCapacity }) => {\n  const [selectedClient, setSelectedClient] = useState(null)\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState(null)\n  const [{ fetching }, addClientToEvent] = useMutation(ADD_CLIENT_TO_BOOKABLE_EVENT_MUTATION)\n\n  const handleClientSelect = (client) => {\n    setSelectedClient(client)\n  }\n\n  const handleAddClient = async () => {\n    if (!selectedClient) {\n      setError(\"Please select a client first\")\n      return\n    }\n\n    setLoading(true)\n    setError(null)\n\n    try {\n      // Determine if this is an existing client or a new one\n      const variables = { bookableEventId }\n\n      if (selectedClient.id) {\n        // Existing client case\n        variables.clientId = selectedClient.id\n      } else {\n        // New client case - we need to prepare the client params\n        variables.clientParams = {\n          firstName: selectedClient.firstName,\n          lastName: selectedClient.lastName,\n          email: selectedClient.email,\n          phone: selectedClient.phone\n        }\n      }\n\n      const result = await addClientToEvent(variables)\n\n      if (result.data?.addClientToBookableEvent?.result === \"success\") {\n        // First, explicitly refetch the registrants query to ensure fresh data\n        if (reexecuteQuery) {\n          reexecuteQuery({ requestPolicy: \"network-only\" })\n        }\n        onSuccess()\n      } else {\n        const errorMessage = result.data?.addClientToBookableEvent?.errors?.[0] || \"Failed to add client to event\"\n        setError(errorMessage)\n      }\n    } catch (err) {\n      setError(err.message || \"Failed to add client to event\")\n    } finally {\n      setLoading(false)\n    }\n  }\n\n  return (\n    <div className=\"py-4\">\n      {/* Ensure dropdown appears above modal content with a higher z-index */}\n      <div style={{ position: \"relative\", zIndex: 20000 }}>\n        <ClientSelector defaultClient={null} onSelect={handleClientSelect} />\n      </div>\n\n      {atCapacity && (\n        <Banner type=\"warning\">\n          Just a reminder: this event is at capacity, but you can add more clients if you want.\n        </Banner>\n      )}\n\n      {error && <div className=\"mt-2 text-red\">{error}</div>}\n\n      <div className=\"mt-4 flex justify-end space-x-2\">\n        <Button type=\"tertiary\" onClick={onCancel}>\n          Cancel\n        </Button>\n        <Button type=\"primary\" onClick={handleAddClient} disabled={loading || !selectedClient || fetching}>\n          {loading || fetching ? \"Adding...\" : \"Add Client\"}\n        </Button>\n      </div>\n    </div>\n  )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\n\nconst CalendarEvent = ({ calendarEvent }) => (\n  <div className=\"grid grid-cols-[auto,1fr] gap-4\">\n    <div className=\"font-bold\">When</div>\n    <div>\n      {dayjs(calendarEvent.start).format(\"dddd, MMM Do, YYYY [at] h:mm A\")} -{\" \"}\n      {dayjs(calendarEvent.end).format(\"h:mm A z\")}\n    </div>\n    {calendarEvent.extendedProps.location && (\n      <>\n        <div className=\"font-bold\">Where</div>\n        <div>{calendarEvent.extendedProps.location}</div>\n      </>\n    )}\n    <div className=\"font-bold\">Calendar</div>\n    <div>{calendarEvent.extendedProps.calendarName}</div>\n    {calendarEvent.extendedProps.about && (\n      <>\n        <div className=\"font-bold\">About</div>\n        <div>{calendarEvent.extendedProps.about}</div>\n      </>\n    )}\n  </div>\n)\n\nexport default CalendarEvent\n","export const PAYMENT_STATUS_OPTIONS = {\n  FREE: \"Free\",\n  PAID: \"Paid\",\n  PAST_DUE: \"Past due\",\n  FAILED: \"Failed\",\n  CARD_NEEDED: \"Card needed\",\n  CARD_NEEDED_PAST_DUE: \"Card needed past due\",\n  PENDING: \"Pending\",\n  CANCELLED: \"Cancelled\",\n  UNPAID: \"Unpaid\"\n}\n\nexport const paymentProviderName = (appointment) => {\n  switch (appointment?.paymentMethod) {\n    case \"stripe\":\n      return \"Stripe\"\n    case \"square\":\n      return \"Square\"\n    case \"paypal\":\n      return \"PayPal\"\n    case \"venmo\":\n      return \"Venmo\"\n    default:\n      return null\n  }\n}\n\nexport const isPaidOnProvider = (appointment) => appointment?.paymentIntentId !== null\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { isPaidOnProvider, paymentProviderName } from \"../../@core/appointment/appointment.model\"\nimport { useManualBooking } from \"../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatPrice } from \"../../utils/utils\"\n\nimport DatePicker from \"./DatePicker\"\nimport { Label, CurrencyInput, TextArea } from \"./Inputs\"\nimport { Banner } from \"./Layout\"\nimport { AnimatedModal } from \"./Modal\"\n\nconst CREATE_ADJUSTMENT = `\n  mutation CreateAdjustment($appointmentId: ID, $adjustedAt: String!, $amountCents: Int, $note: String, ) {\n    createAdjustment(appointmentId: $appointmentId, adjustedAt: $adjustedAt, amountCents: $amountCents, note: $note ) {\n      result\n      errors\n      adjustment {\n        id\n        adjustedAt\n        amountCents\n        note\n      }\n    }\n  }\n`\n\nexport default function AdjustmentModal({ showAdjustmentModal, hideModal }) {\n  const { appointment, setAppointment } = useManualBooking()\n  const [note, setNote] = useState()\n  const [adjustmentDate, setAdjustmentDate] = useState(new Date())\n  const [adjustmentAmount, setAdjustmentAmount] = useState(appointment?.fullTotal)\n  const [loading, setLoading] = useState(false)\n\n  const [, addAdjustment] = useMutation(CREATE_ADJUSTMENT)\n  const { showToast } = useToast()\n\n  const handleAmountChange = (amountCents) => {\n    if (amountCents <= appointment.fullTotal) {\n      setAdjustmentAmount(amountCents)\n    } else {\n      showToast({\n        content: `Adjustment amount cannot exceed the refundable amount (${formatPrice(appointment.fullTotal)})`,\n        type: \"error\"\n      })\n    }\n  }\n\n  return (\n    <AnimatedModal\n      visible={showAdjustmentModal}\n      className=\"overflow-visible\"\n      hideModal={hideModal}\n      header=\"Add refund or adjustment\"\n      actionButtonCopy={loading ? \"Adding...\" : \"Add\"}\n      saveDisabled={loading}\n      showFooter={true}\n      overflowVisible={true}\n      onSave={() => {\n        setLoading(true)\n        addAdjustment({\n          appointmentId: appointment.id,\n          adjustedAt: dayjs(adjustmentDate).format(\"YYYY-MM-DDTHH:mm:ssZ\"),\n          amountCents: adjustmentAmount,\n          note\n        }).then((result) => {\n          setLoading(false)\n          if (result.data?.createAdjustment?.result === \"success\") {\n            const newAdjustment = result.data.createAdjustment.adjustment\n            const updatedAdjustments = [...(appointment.adjustments || []), newAdjustment].filter(\n              (adj) => adj !== undefined\n            )\n            setAppointment({ ...appointment, adjustments: updatedAdjustments })\n            showToast(\"Adjustment added \")\n          } else {\n            showToast({\n              content: `We weren't able to add this adjustment: ${result.data.createAdjustment.errors.join()}`,\n              type: \"error\"\n            })\n          }\n          hideModal()\n        })\n      }}>\n      <p className=\"mb-4\">You can note any refunds or adjustments to this payment here for your records.</p>\n      {isPaidOnProvider(appointment) && (\n        <Banner type=\"warning\" className=\"mb-4\">\n          This payment was made via {paymentProviderName(appointment)}. This will issue a true refund.\n        </Banner>\n      )}\n      <div className=\"mb-4 grid grid-cols-2 gap-4\">\n        <div className=\"flex flex-col\">\n          <Label>Refund amount</Label>\n          <CurrencyInput\n            placeholder=\"Amount\"\n            id=\"adjustment-input\"\n            value={adjustmentAmount}\n            onChange={(amountCents) => handleAmountChange(amountCents)}\n          />\n        </div>\n        <div className=\"flex flex-col\">\n          <Label>Adjustment date</Label>\n          <DatePicker className=\"w-full\" selected={adjustmentDate} onChange={(date) => setAdjustmentDate(date)} />\n        </div>\n      </div>\n      <TextArea placeholder=\"Add a note here\" rows=\"2\" onChange={(e) => setNote(e.target.value)} value={note} />\n    </AnimatedModal>\n  )\n}\n","import { XMarkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useManualBooking } from \"../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatDate, formatPrice } from \"../../utils/utils\"\n\nimport AdjustmentModal from \"./AdjustmentModal\"\nimport { Label } from \"./Inputs\"\nimport { UnderlinedLink } from \"./Links\"\nimport { AnimatedModal } from \"./Modal\"\nimport Typography from \"./Typography\"\n\nconst REMOVE_ADJUSTMENT = `\n  mutation RemoveAdjustment($adjustmentId: ID!) {\n    removeAdjustment(adjustmentId: $adjustmentId) {\n      result\n      errors\n    }\n  }\n`\n\nexport default function AppointmentAdjustments() {\n  const [showAdjustmentModal, setShowAdjustmentModal] = useState(false)\n  const [showRemoveAdjustmentModal, setShowRemoveAdjustmentModal] = useState(false)\n  const [adjustment, setAdjustment] = useState()\n  const [loading, setLoading] = useState(false)\n  const { showToast } = useToast()\n\n  const { appointment, setAppointment } = useManualBooking()\n\n  const isStripePayment = appointment?.paymentIntentId !== null\n\n  const [, removeAdjustment] = useMutation(REMOVE_ADJUSTMENT)\n\n  return (\n    <>\n      <div className=\"my-8 w-full border-t border-gray-light\" />\n      <Label>Refunds / Adjustment</Label>\n      <Typography className=\"my-2 block\" variant=\"small\">\n        Record any refunds or adjustments to this payment.\n      </Typography>\n      {appointment?.adjustments?.length > 0 && (\n        <ul className=\"list-disc \">\n          {appointment.adjustments.map((adjustment) => (\n            <li className=\"relative mb-4 ml-4\" key={adjustment.id}>\n              <Typography variant=\"body\" as=\"p\" className=\"mb-0 text-sm\">\n                {adjustment.amountCents >= 0 ? \"Refunded \" : \"Adjusted \"} {formatPrice(adjustment.amountCents)} on{\" \"}\n                {formatDate(adjustment.adjustedAt)}{\" \"}\n              </Typography>\n              <Typography variant=\"body\" as=\"p\" className=\"text-sm text-gray-dark\">\n                Note: {adjustment.note || \"No note provided\"}\n              </Typography>\n              {!isStripePayment && (\n                <XMarkIcon\n                  onClick={() => {\n                    setAdjustment(adjustment)\n                    setShowRemoveAdjustmentModal(true)\n                  }}\n                  className=\"absolute right-1 top-2 h-6 w-6 cursor-pointer p-1 font-bold text-black\"\n                />\n              )}\n            </li>\n          ))}\n        </ul>\n      )}\n      <UnderlinedLink onClick={() => setShowAdjustmentModal(true)} className=\"text-sm\">\n        Add refund/adjustment\n      </UnderlinedLink>\n      {showAdjustmentModal && (\n        <AdjustmentModal showAdjustmentModal={showAdjustmentModal} hideModal={() => setShowAdjustmentModal(false)} />\n      )}\n      {showRemoveAdjustmentModal && (\n        <AnimatedModal\n          visible={showRemoveAdjustmentModal}\n          hideModal={() => setShowRemoveAdjustmentModal(false)}\n          header=\"Remove adjustment?\"\n          actionButtonCopy=\"Remove\"\n          actionButtonType=\"warning\"\n          saveDisabled={loading}\n          showFooter={true}\n          onSave={() => {\n            setLoading(true)\n            removeAdjustment({\n              adjustmentId: adjustment.id\n            }).then((result) => {\n              setLoading(false)\n              if (result.data?.removeAdjustment?.result === \"success\") {\n                const updatedAdjustments = appointment.adjustments.filter((adj) => adj.id !== adjustment.id)\n                setAppointment({ ...appointment, adjustments: updatedAdjustments })\n                showToast(\"Adjustment removed \")\n              } else {\n                showToast({\n                  content: `We weren't able to remove this adjustment: ${result.data.removeAdjustment.errors.join()}`,\n                  type: \"error\"\n                })\n              }\n              setShowRemoveAdjustmentModal(false)\n            })\n          }}>\n          <div>\n            <Typography variant=\"body\" as=\"p\" className=\"mb-0 text-sm\">\n              {adjustment.amountCents >= 0 ? \"Refunded \" : \"Adjusted \"} {formatPrice(adjustment.amountCents)} on{\" \"}\n              {formatDate(adjustment.adjustedAt)}{\" \"}\n            </Typography>\n            <Typography variant=\"body\" as=\"p\" className=\"text-sm text-gray-dark\">\n              Note: {adjustment.note || \"No note provided\"}\n            </Typography>\n          </div>\n        </AnimatedModal>\n      )}\n    </>\n  )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { formatClientPhonePlusOne, isClientValid } from \"../../../../utils/utils\"\nimport { Button } from \"../../../shared/Buttons\"\n\nconst AppointmentActions = ({\n  fetching,\n  onDecline,\n  removeAppointmentFromCalendar,\n  onAccept,\n  onAppointmentChanged,\n  onCancel,\n  createManualAppointment,\n  editManualAppointment,\n  onRecurringAppointmentsChanged,\n  resetBookingState,\n  setShowPackageConfirmModal,\n  setShowPastAppointmentModal,\n  setPendingAction\n}) => {\n  const { showToast } = useToast()\n\n  const {\n    appointment,\n    services,\n    client,\n    locationId,\n    startsAt,\n    endsAt,\n    recurringStartTimes,\n    recurrencePattern,\n    createRecurringAppointments,\n    recurringAppointmentError,\n    setAppointmentErrors,\n    initialAppointmentValues\n  } = useManualBooking()\n\n  const { practicePhone, practiceEmail } = usePractice()\n\n  const pending = appointment?.state === \"pending\"\n  const packageData =\n    client?.openPackages?.find((p) => p.serviceId === services?.[0]?.service?.id) || appointment?.package\n  const clientPhone = formatClientPhonePlusOne(client?.phone)\n\n  const hasChangesInAppointment = () => {\n    if (!appointment || !initialAppointmentValues) return true\n\n    return (\n      initialAppointmentValues.locationId !== locationId ||\n      initialAppointmentValues.startsAt !== startsAt ||\n      initialAppointmentValues.endsAt !== endsAt ||\n      JSON.stringify(initialAppointmentValues.services) !== JSON.stringify(services) ||\n      JSON.stringify(initialAppointmentValues.client) !== JSON.stringify(client)\n    )\n  }\n\n  const isDisabled =\n    (recurrencePattern && recurringStartTimes?.length === 0) ||\n    !!recurringAppointmentError ||\n    fetching ||\n    !services?.[0]?.service ||\n    !locationId ||\n    !client ||\n    !isClientValid(client, clientPhone, practicePhone, practiceEmail) ||\n    (appointment && !hasChangesInAppointment())\n\n  const isCreatingNewPackage = services?.[0]?.service?.package && !packageData\n\n  const isPastAppointment = () => dayjs(startsAt).isBefore(dayjs())\n\n  const handleSave = () => {\n    // Remove the possible empty object from services\n    const validServices = services?.filter((service) => service.service)\n\n    if (validServices?.length > 0 && validServices?.every((service) => service.service?.addOn)) {\n      setAppointmentErrors(\"You can't create an appointment with only add-on services\")\n      return\n    }\n\n    if (isPastAppointment() && !appointment) {\n      setShowPastAppointmentModal(true)\n      setPendingAction(() => executeSave)\n      return\n    }\n\n    executeSave()\n  }\n\n  const executeSave = () => {\n    if (appointment) {\n      editManualAppointment()\n    } else {\n      if (recurringStartTimes && recurrencePattern) {\n        if (services?.[0]?.service?.package && !packageData) {\n          setShowPackageConfirmModal(true)\n        } else {\n          createRecurringAppointments((appointments) => {\n            resetBookingState()\n            onRecurringAppointmentsChanged(appointments)\n            setShowPackageConfirmModal(false)\n          })\n        }\n      } else {\n        if (isCreatingNewPackage) {\n          setShowPackageConfirmModal(true)\n        } else {\n          createManualAppointment()\n          setShowPackageConfirmModal(false)\n        }\n      }\n    }\n  }\n\n  return (\n    <div className=\"mt-8 flex w-full justify-between border-t border-gray-light py-4\">\n      {pending ? (\n        <>\n          <Button\n            type=\"warning\"\n            className=\"sm:w-full\"\n            onClick={() => {\n              onDecline().then((result) => {\n                if (result.data?.declineAppointment?.result === \"success\") {\n                  removeAppointmentFromCalendar([appointment.id])\n                  showToast(\"Appointment declined\")\n                } else {\n                  showToast({\n                    type: \"error\",\n                    content: \"Unexpected error declining appointment. Please contact support if this persists.\"\n                  })\n                }\n              })\n            }}>\n            Decline\n          </Button>\n          <Button\n            className=\"sm:w-full\"\n            type=\"primary\"\n            onClick={() => {\n              onAccept().then((result) => {\n                if (result.data.acceptAppointment?.result === \"success\") {\n                  onAppointmentChanged(result.data.acceptAppointment.appointment)\n                  showToast(\"Appointment accepted\")\n                } else {\n                  showToast({\n                    type: \"error\",\n                    content: \"Unexpected error accepting appointment. Please contact support if this persists.\"\n                  })\n                }\n              })\n            }}>\n            Accept\n          </Button>\n        </>\n      ) : (\n        <>\n          {appointment && (\n            <Button type=\"warning\" className=\"mr-4 sm:w-full\" onClick={onCancel}>\n              Cancel appt.\n            </Button>\n          )}\n          <Button type=\"primary\" className=\"sm:w-full\" onClick={handleSave} disabled={isDisabled}>\n            Save\n          </Button>\n        </>\n      )}\n    </div>\n  )\n}\n\nexport default AppointmentActions\n","import dayjs from \"dayjs\"\nimport React, { useMemo, useEffect } from \"react\"\n\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport DatePicker from \"../../shared/DatePicker\"\nimport { Label, TimePicker } from \"../../shared/Inputs\"\n\nconst getTimeFromDateAndTime = (date, time) =>\n  dayjs(date)\n    .hour(parseInt(time.split(\":\")[0]))\n    .minute(parseInt(time.split(\":\")[1]))\n\nexport default function EditAppointmentDateTime() {\n  const { startsAt, setStartsAt, endsAt, setEndsAt } = useManualBooking()\n\n  const startDate = useMemo(() => (startsAt ? dayjs(startsAt).toDate() : dayjs().toDate()), [startsAt])\n  const startTime = useMemo(() => {\n    if (startsAt) {\n      return dayjs(startsAt).format(\"HH:mm\")\n    } else {\n      const nextHour = dayjs().add(1, \"hour\").startOf(\"hour\")\n      return nextHour.format(\"HH:mm\")\n    }\n  }, [startsAt])\n  const endTime = useMemo(() => {\n    if (endsAt) {\n      return dayjs(endsAt).format(\"HH:mm\")\n    } else {\n      const nextHour = dayjs().add(1, \"hour\").startOf(\"hour\")\n      return nextHour.add(60, \"minutes\").format(\"HH:mm\")\n    }\n  }, [endsAt])\n\n  useEffect(() => {\n    // Sometimes startsAt or endsAt is not valid at the first render, so set them to the startDate and times\n    if (!dayjs(startsAt).isValid()) {\n      const startDateTime = getTimeFromDateAndTime(startDate, startTime)\n      setStartsAt(startDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    }\n    if (!dayjs(endsAt).isValid()) {\n      const endDateTime = getTimeFromDateAndTime(startDate, endTime)\n      setEndsAt(endDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n    }\n  }, [startsAt, endsAt, startDate, startTime, endTime, setStartsAt, setEndsAt])\n\n  const handleStartDateChange = (date) => {\n    const startDateTime = getTimeFromDateAndTime(date, startTime)\n    setStartsAt(startDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n\n    const endDateTime = getTimeFromDateAndTime(date, endTime)\n    setEndsAt(endDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n  }\n\n  const handleStartTimeChange = (e) => {\n    const startDateTime = getTimeFromDateAndTime(startDate, e.target.value)\n    setStartsAt(startDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n\n    // Maintain the same duration by adding it to the new start time\n    const newEndDateTime = startDateTime.add(duration, \"minutes\")\n    setEndsAt(newEndDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n  }\n\n  const handleEndTimeChange = (e) => {\n    const endDateTime = getTimeFromDateAndTime(startDate, e.target.value)\n    setEndsAt(endDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n  }\n\n  const duration = useMemo(() => {\n    const start = dayjs(`2000-01-01 ${startTime}`)\n    const end = dayjs(`2000-01-01 ${endTime}`)\n    return end.diff(start, \"minute\")\n  }, [startTime, endTime])\n\n  return (\n    <div className=\"flex flex-col gap-2\">\n      <div className=\"w-2/5\">\n        <Label htmlFor=\"date-picker\">Date</Label>\n        <DatePicker id=\"date-picker\" selected={startDate} onChange={handleStartDateChange} />\n      </div>\n      <div className=\"flex w-full flex-row items-end gap-2\">\n        <div className=\"w-2/5\">\n          <Label htmlFor=\"start-time-picker\">Start Time</Label>\n          <TimePicker\n            id=\"start-time-picker\"\n            showFifteenIncrements={true}\n            value={startTime}\n            onChange={handleStartTimeChange}\n          />\n        </div>\n        <div className=\"w-2/5\">\n          <Label htmlFor=\"end-time-picker\">End Time</Label>\n          <TimePicker\n            id=\"end-time-picker\"\n            showFifteenIncrements={true}\n            value={endTime}\n            startAt={startTime}\n            onChange={handleEndTimeChange}\n          />\n        </div>\n        <div className=\"w-1/5 pb-2 text-right\">\n          <span>{duration} mins</span>\n        </div>\n      </div>\n    </div>\n  )\n}\n","import React from \"react\"\nimport MaskedInput from \"react-text-mask\"\nimport styled from \"styled-components\"\nimport createNumberMask from \"text-mask-addons/dist/createNumberMask\"\n\nimport { BASE_INPUT_CLASSNAMES } from \"./Inputs\"\n\nconst InputWrapper = styled.div`\n  input {\n    border: 1px solid rgb(var(--color-gray));\n    background: white;\n    padding: 6px 12px;\n    width: 100%;\n    margin: 0;\n    outline: 0;\n    box-shadow: none;\n    border-radius: 0.5rem;\n  }\n\n  input:disabled {\n    background-color: rgb(var(--color-ultra-light-gray));\n    color: rgb(var(--color-dark-gray));\n    cursor: not-allowed;\n  }\n\n  input:focus {\n    border-color: rgb(var(--color-black));\n    box-shadow: 0 0 0 4px rgb(var(--color-blue));\n  }\n\n  input::placeholder {\n    color: rgb(var(--color-dark-gray));\n  }\n`\n\nconst defaultMaskOptions = {\n  prefix: \"$\",\n  suffix: \"\",\n  includeThousandsSeparator: true,\n  thousandsSeparatorSymbol: \",\",\n  allowDecimal: true,\n  decimalSymbol: \".\",\n  decimalLimit: 2, // how many digits allowed after the decimal\n  integerLimit: 7, // limit length of integer numbers\n  allowNegative: false,\n  allowLeadingZeroes: false\n}\n\nconst CurrencyInput = ({ ...inputProps }) => {\n  const currencyMask = createNumberMask({\n    ...defaultMaskOptions\n  })\n\n  return (\n    <InputWrapper>\n      <MaskedInput className={BASE_INPUT_CLASSNAMES} mask={currencyMask} {...inputProps} />\n    </InputWrapper>\n  )\n}\n\nexport default CurrencyInput\n","import { InformationCircleIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport React, { useEffect, useMemo, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport { networkOnlyUrqlClient } from \"../../../utils/utils\"\nimport DatePicker from \"../../shared/DatePicker\"\nimport HealMeTooltip from \"../../shared/HealMeTooltip\"\nimport { BASE_INPUT_CLASSNAMES, CheckBox, Label, Select } from \"../../shared/Inputs\"\nimport { Banner } from \"../../shared/Layout\"\n\nconst RECURRING_TIMES_QUERY = `\n  query RecurringTimes($practiceId: ID!, $startsAt: String!, $recurrencePattern: String!, $duration: Int!) {\n    recurringTimes(practiceId: $practiceId, startsAt: $startsAt, recurrencePattern: $recurrencePattern, duration: $duration) {\n      startsAt\n      displayTime\n      conflicts { id name type timeRange }\n    }\n  }\n`\n\nconst seriesEndOptions = [\n  { value: \"after\", label: \"Series ends after\" },\n  { value: \"on\", label: \"Series ends on\" }\n]\n\nconst getDateInNMonths = (n) => {\n  const now = new Date()\n  let year = now.getFullYear()\n  let month = now.getMonth() + n\n  const day = now.getDate()\n\n  if (month > 11) {\n    month = month % 12\n    year++\n  }\n\n  let oneMonthLater = new Date(year, month, day, 23, 59, 59)\n\n  // Checking if the month has wrapped, which indicates that the day was invalid for the next month\n  // For example, if the current date is January 31st, then one month later will be February 28th/29th\n  if (oneMonthLater.getMonth() !== month) {\n    oneMonthLater = new Date(year, month, 0, 23, 59, 59) // The 0th day of a month will be the last day of the previous month\n  }\n\n  return oneMonthLater\n}\n\nconst ordinals = {\n  1: \"first\",\n  2: \"second\",\n  3: \"third\",\n  4: \"fourth\",\n  5: \"last\"\n}\n\nconst getDayOfWeekAndDayInMonth = (dateObj) => {\n  const dayOfWeek = dateObj.toLocaleDateString(\"en-US\", { weekday: \"short\" }).toUpperCase().substring(0, 2)\n  const dayInMonth = dateObj.getDate()\n  let weekOfMonth = Math.ceil(dayInMonth / 7)\n  weekOfMonth = weekOfMonth === 5 ? -1 : weekOfMonth\n\n  return `${weekOfMonth}${dayOfWeek}`\n}\n\nconst getDayOfWeekAndDayInMonthOrdinal = (dateObj) => {\n  const dayOfWeek = dateObj.toLocaleDateString(\"en-US\", { weekday: \"long\" })\n  const dayInMonth = dateObj.getDate()\n  const weekOfMonth = Math.ceil(dayInMonth / 7)\n\n  return `${ordinals[weekOfMonth]} ${dayOfWeek}`\n}\n\nconst RecurrenceSelect = ({ className, disabled }) => {\n  const {\n    startsAt,\n    endsAt,\n    setRecurringStartTimes,\n    setRecurrencePattern,\n    services,\n    recurringAppointmentError,\n    setRecurringAppointmentError,\n    appointment,\n    client\n  } = useManualBooking()\n  const { practice } = usePractice()\n\n  const dayOfWeek = new Date(startsAt).toLocaleString(\"default\", { weekday: \"long\" })\n  const dayOfWeekWithOrdinal = getDayOfWeekAndDayInMonthOrdinal(new Date(startsAt))\n\n  const options = [\n    { value: \"\", label: \"Does not repeat\" },\n    { value: \"FREQ=DAILY\", label: \"Daily\" },\n    { value: \"FREQ=WEEKLY\", label: `Weekly on ${dayOfWeek}` },\n    { value: \"FREQ=WEEKLY;INTERVAL=2\", label: `Every 2 weeks on ${dayOfWeek}` },\n    {\n      value: `FREQ=MONTHLY;BYMONTHDAY=${new Date(startsAt).getDate()}`,\n      label: `Monthly on the ${new Date(startsAt).getDate()}th`\n    },\n    {\n      value: `FREQ=MONTHLY;BYDAY=${getDayOfWeekAndDayInMonth(new Date(startsAt)).replace(\"4\", \"-1\")}`,\n      label: dayOfWeekWithOrdinal.startsWith(\"fourth\")\n        ? `Monthly on the last ${dayOfWeek}`\n        : `Monthly on the ${dayOfWeekWithOrdinal}`\n    },\n    { value: \"custom\", label: \"Custom...\" }\n  ]\n\n  const currentServiceOpenPackage = client?.openPackages?.find((p) => p.serviceId === services?.[0]?.service.id)\n  const openPackage = !!currentServiceOpenPackage\n  const isNewPackage = services?.[0]?.service?.package && !appointment && !openPackage\n  let defaultFrequency = appointment ? appointment.recurrenceFrequency : isNewPackage ? \"FREQ=WEEKLY\" : \"\"\n  // if not one of the \"options\" var, set to custom\n  if (options.map((option) => option.value).indexOf(defaultFrequency) === -1) {\n    defaultFrequency = \"custom\"\n  }\n\n  const packageData = currentServiceOpenPackage || appointment?.package\n  const maxOccurrences = isNewPackage\n    ? services?.[0]?.service?.numberOfSessions\n    : packageData?.sessionsRemaining\n    ? Math.min(25, packageData.sessionsRemaining)\n    : 25\n  const numberOfOccurrenceOptions = Array(maxOccurrences ? maxOccurrences - 1 : 0)\n    .fill(0)\n    .map((_, i) => ({ value: i + 2, label: (i + 2).toString() }))\n\n  const getNumberOfSessions = (appointment, isNewPackage, service, openPackage, packageData) => {\n    if (appointment) {\n      return appointment.recurrenceCount\n    } else if (isNewPackage) {\n      return service.service.numberOfSessions\n    } else if (openPackage) {\n      return packageData?.sessionsRemaining || 10\n    } else {\n      return 10\n    }\n  }\n\n  const removedRecurringTimes = useMemo(() => [], [])\n\n  const [frequency, setFrequency] = useState(defaultFrequency)\n  const [seriesEnd, setSeriesEnd] = useState(appointment?.recurrenceUntil ? \"on\" : \"after\")\n  const [numberOfOccurrences, setNumberOfOccurrences] = useState(\n    getNumberOfSessions(appointment, isNewPackage, services?.[0], openPackage, packageData)\n  )\n  const [endsOnDate, setEndsOnDate] = useState(\n    appointment?.recurrenceUntil ? new Date(appointment.recurrenceUntil) : getDateInNMonths(1)\n  )\n  const [recurringTimes, setRecurringTimes] = useState([])\n\n  const [customRecurrence, setCustomRecurrence] = useState({\n    repeatEveryValue: 1,\n    repeatEveryUnit: \"weekly\",\n    repeatOn: {\n      SU: dayOfWeek === \"Sunday\",\n      MO: dayOfWeek === \"Monday\",\n      TU: dayOfWeek === \"Tuesday\",\n      WE: dayOfWeek === \"Wednesday\",\n      TH: dayOfWeek === \"Thursday\",\n      FR: dayOfWeek === \"Friday\",\n      SA: dayOfWeek === \"Saturday\"\n    }\n  })\n\n  const handleCustomDayChange = (day) => {\n    setCustomRecurrence((prevState) => {\n      const newRepeatOn = {\n        ...prevState.repeatOn,\n        [day]: !prevState.repeatOn[day]\n      }\n      const newCustomRecurrence = { ...prevState, repeatOn: newRepeatOn }\n      return newCustomRecurrence\n    })\n  }\n\n  const handleCustomRecurrenceChange = (key, value) => {\n    setCustomRecurrence((prevState) => {\n      let newCustomRecurrence = { ...prevState, [key]: value }\n      return newCustomRecurrence\n    })\n  }\n\n  const getPattern = (frequency, seriesEnd, numberOfOccurrences, endsOnDate) => {\n    if (frequency === \"custom\") {\n      if (!customRecurrence.repeatEveryValue || !customRecurrence.repeatEveryUnit) {\n        return null\n      }\n      let customPattern = `FREQ=${customRecurrence.repeatEveryUnit.toUpperCase()};INTERVAL=${\n        customRecurrence.repeatEveryValue\n      }`\n      if (customRecurrence.repeatEveryUnit === \"weekly\") {\n        const daysActive = Object.entries(customRecurrence.repeatOn)\n          .filter(([, isChecked]) => isChecked)\n          .map(([day]) => day)\n          .join(\",\")\n        if (daysActive) {\n          customPattern += `;BYDAY=${daysActive}`\n        }\n      }\n      customPattern += seriesEnd === \"after\" ? `;COUNT=${numberOfOccurrences};` : `;UNTIL=${endsOnDate.toISOString()};`\n      return customPattern\n    }\n    return frequency\n      ? [frequency, seriesEnd === \"after\" ? `COUNT=${numberOfOccurrences}` : `UNTIL=${endsOnDate.toISOString()}`].join(\n          \";\"\n        )\n      : null\n  }\n\n  useEffect(() => {\n    onChange(frequency, seriesEnd, numberOfOccurrences, endsOnDate)\n  }, [startsAt, customRecurrence])\n  useEffect(() => {\n    const newNumberOfSessions = getNumberOfSessions(appointment, isNewPackage, services?.[0], openPackage, packageData)\n    setNumberOfOccurrences(newNumberOfSessions)\n    onChange(frequency, seriesEnd, newNumberOfSessions, endsOnDate)\n  }, [services])\n\n  const conflictsCount = recurringTimes.filter((recurringTime) => recurringTime.conflicts.length > 0).length\n\n  const onChange = (frequency, seriesEnd, numberOfOccurrences, endsOnDate) => {\n    const pattern = getPattern(frequency, seriesEnd, numberOfOccurrences, endsOnDate)\n    fetchRecurringTimes(pattern)\n    setRecurrencePattern(pattern)\n  }\n\n  const fetchRecurringTimes = (recurrencePattern) => {\n    if (!recurrencePattern) {\n      setRecurringStartTimes(null)\n      setRecurringTimes([])\n      return\n    }\n\n    const duration = dayjs(endsAt).diff(dayjs(startsAt), \"minutes\")\n\n    if (!duration || !recurrencePattern || appointment) return\n\n    networkOnlyUrqlClient\n      .query(RECURRING_TIMES_QUERY, {\n        practiceId: practice.id,\n        startsAt: startsAt,\n        recurrencePattern,\n        duration\n      })\n      .toPromise()\n      .then((res) => {\n        if (res.data?.recurringTimes) {\n          const recurringTimes = res.data.recurringTimes.map((recurringTime) => ({\n            ...recurringTime,\n            shouldBook: recurringTime.conflicts.length === 0\n          }))\n          updateState(recurringTimes)\n          const lastRecurringTime = recurringTimes[recurringTimes.length - 1]\n          const nonConflictingLength = recurringTimes.filter((time) => time.conflicts.length === 0).length\n\n          let error =\n            nonConflictingLength > maxOccurrences\n              ? `You can create at most ${maxOccurrences} appointments at once. You are currently attempting to create ${nonConflictingLength} appointments.`\n              : lastRecurringTime && new Date(lastRecurringTime.startsAt) > getDateInNMonths(12)\n              ? \"You can create appointments at most one year into the future.\"\n              : null\n          if (error) {\n            error += \" Please select a different frequency or end date.\"\n            setRecurringAppointmentError(error)\n          } else {\n            setRecurringAppointmentError(null)\n          }\n        } else {\n          console.error(\"Error fetching recurring times\", res)\n        }\n      })\n  }\n\n  const updateState = (newRecurringTimes) => {\n    setRecurringTimes(newRecurringTimes)\n    setRecurringStartTimes(newRecurringTimes.filter((time) => time.shouldBook).map((time) => time.startsAt))\n  }\n\n  return (\n    <div className={twMerge(\"flex flex-col gap-4\", disabled ? \"pointer-events-none\" : \"\", className)}>\n      <div>\n        <Label htmlFor=\"recurring-select\">Recurring</Label>\n        <Select\n          disabled={disabled || maxOccurrences < 2}\n          id=\"recurring-select\"\n          options={options}\n          value={frequency}\n          onChange={(e) => {\n            setFrequency(e.target.value)\n            onChange(e.target.value, seriesEnd, numberOfOccurrences, endsOnDate)\n          }}\n        />\n      </div>\n      {frequency === \"custom\" && !disabled && (\n        <div className=\"flex flex-col\">\n          <div>\n            <Label>Repeat every</Label>\n            <div className=\"flex flex-row gap-2\">\n              <input\n                className={twMerge(\"w-1/2\", BASE_INPUT_CLASSNAMES)}\n                type=\"number\"\n                min=\"1\"\n                value={customRecurrence.repeatEveryValue}\n                onChange={(e) => handleCustomRecurrenceChange(\"repeatEveryValue\", parseInt(e.target.value))}\n              />\n              <Select\n                className=\"w-1/2\"\n                options={[\n                  { value: \"daily\", label: \"day(s)\" },\n                  { value: \"weekly\", label: \"week(s)\" }\n                ]}\n                value={customRecurrence.repeatEveryUnit}\n                onChange={(e) => handleCustomRecurrenceChange(\"repeatEveryUnit\", e.target.value)}\n              />\n            </div>\n          </div>\n          {customRecurrence.repeatEveryUnit === \"weekly\" && (\n            <div className=\"mt-4 flex justify-between\">\n              {[\"SU\", \"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\"].map((day) => (\n                <CheckBox\n                  key={day}\n                  label={day}\n                  className={\"gap-1.5\"}\n                  checked={customRecurrence.repeatOn[day]}\n                  onChange={() => handleCustomDayChange(day)}\n                />\n              ))}\n            </div>\n          )}\n        </div>\n      )}\n\n      {frequency && (\n        <div className=\"flex items-center gap-2\">\n          <Select\n            disabled={disabled || maxOccurrences < 2}\n            name=\"series-end\"\n            className=\"w-1/2\"\n            options={seriesEndOptions}\n            value={seriesEnd}\n            onChange={(e) => {\n              setSeriesEnd(e.target.value)\n              onChange(frequency, e.target.value, numberOfOccurrences, endsOnDate)\n            }}\n          />\n          {seriesEnd === \"after\" ? (\n            <>\n              <Select\n                disabled={disabled || maxOccurrences < 2}\n                name=\"number-of-occurrences\"\n                options={numberOfOccurrenceOptions}\n                value={numberOfOccurrences}\n                onChange={(e) => {\n                  setNumberOfOccurrences(e.target.value)\n                  onChange(frequency, seriesEnd, e.target.value, endsOnDate)\n                }}\n              />\n              <span>sessions</span>\n            </>\n          ) : (\n            <DatePicker\n              disabled={disabled}\n              selected={endsOnDate}\n              onChange={(date) => {\n                date.setHours(23, 59, 59)\n                setEndsOnDate(date)\n                onChange(frequency, seriesEnd, numberOfOccurrences, date)\n              }}\n            />\n          )}\n        </div>\n      )}\n\n      {recurringTimes.length > 0 && frequency && (\n        <>\n          {recurringAppointmentError ? (\n            <Banner type=\"error\">{recurringAppointmentError}</Banner>\n          ) : (\n            <Banner type={conflictsCount > 0 ? \"warning\" : \"info\"}>\n              {conflictsCount > 0 ? (\n                <>\n                  <div className=\"font-bold\">\n                    We found <span className=\"underline\">{conflictsCount} times</span> that are already booked/filled.\n                  </div>\n                  <div>We skipped these, but you can include them.</div>\n                </>\n              ) : (\n                <div className=\"font-bold\">Here are the dates and times included in this recurring series:</div>\n              )}\n              <ul className=\"mt-4 flex flex-col gap-2\">\n                {recurringTimes.map((recurringTime) => {\n                  const hasConflicts = recurringTime.conflicts.length > 0\n\n                  return (\n                    <li key={recurringTime.startsAt} className=\"flex items-center justify-between\">\n                      <div className=\"flex items-center gap-2\">\n                        <div\n                          className={[\n                            hasConflicts && \"text-red\",\n                            !recurringTime.shouldBook && \"font-bold line-through\"\n                          ].join(\" \")}>\n                          {dayjs(recurringTime.startsAt).format(\"MM/DD/YYYY [@] h:mma\")}\n                        </div>\n                        {hasConflicts && (\n                          <>\n                            <InformationCircleIcon className=\"h-5 w-5\" data-tooltip-id={recurringTime.startsAt} />\n                            <HealMeTooltip\n                              id={recurringTime.startsAt}\n                              render={() => (\n                                <div className=\"flex flex-col gap-4\">\n                                  {recurringTime.conflicts.map((conflict) => (\n                                    <div key={`${recurringTime.startsAt}-${conflict.id}`}>\n                                      <div className=\"font-bold\">{conflict.name}</div>\n                                      <div>{conflict.timeRange}</div>\n                                    </div>\n                                  ))}\n                                </div>\n                              )}\n                            />\n                          </>\n                        )}\n                      </div>\n                      {hasConflicts && (\n                        <button\n                          className=\"underline\"\n                          onClick={() => {\n                            const newRecurringTimes = [...recurringTimes]\n                            const time = newRecurringTimes.find((time) => time.startsAt === recurringTime.startsAt)\n                            if (!time.shouldBook) {\n                              const finalTime = newRecurringTimes.pop()\n                              removedRecurringTimes.push(finalTime)\n                            } else {\n                              const nextTime = removedRecurringTimes.pop()\n                              newRecurringTimes.push(nextTime)\n                            }\n                            time.shouldBook = !time.shouldBook\n                            updateState(newRecurringTimes)\n                          }}>\n                          {recurringTime.shouldBook ? \"Remove\" : \"Include\"}\n                        </button>\n                      )}\n                    </li>\n                  )\n                })}\n              </ul>\n            </Banner>\n          )}\n        </>\n      )}\n    </div>\n  )\n}\n\nexport default RecurrenceSelect\n","import { InformationCircleIcon } from \"@heroicons/react/24/outline\"\nimport { TrashIcon } from \"@heroicons/react/24/solid\"\nimport React, { useMemo } from \"react\"\nimport ReactSelect, { components } from \"react-select\"\n\nimport { PAYMENT_STATUS_OPTIONS } from \"../../../@core/appointment/appointment.model\"\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport { formatPrice, selectStyling, unformatPrice } from \"../../../utils/utils\"\nimport { Button } from \"../../shared/Buttons\"\nimport CurrencyInput from \"../../shared/CurrencyInput\"\nimport HealMeTooltip from \"../../shared/HealMeTooltip\"\nimport { CheckBox, Label } from \"../../shared/Inputs\"\nimport Typography from \"../../shared/Typography\"\n\nimport RecurrenceSelect from \"./RecurrenceSelect\"\n\nconst getServiceLabel = (service, variation) => {\n  if (service.package) {\n    return `${service.name} (${service.numberOfSessions} sessions${\n      variation.timeLength ? `, ${variation.timeLength} mins` : \"\"\n    })`\n  }\n  if (service.addOn) {\n    return `${service.name}`\n  }\n  return `${service.name}${variation.timeLength ? ` (${variation.timeLength} mins)` : \"\"}`\n}\n\nexport default function EditAppointmentService() {\n  const { appointment, client, services, setServices, updateEndsAtWithServicesDuration } = useManualBooking()\n  const { practice, practiceServices } = usePractice()\n\n  const upcoming = new Date(appointment?.startsAt) >= new Date()\n  const isServicesEditable = appointment?.paymentStatus !== PAYMENT_STATUS_OPTIONS.PAID\n\n  const handleServiceSelect = (serviceId, variationId, index) => {\n    const fullService = practiceServices.find((service) => service.id === serviceId)\n    if (!fullService) return\n\n    const selectedVariation = fullService.variations.find((variation) => variation.id === variationId)\n    if (!selectedVariation) return\n\n    const updatedServices = [...services]\n    updatedServices[index] = {\n      amountCents: selectedVariation.amountCents,\n      service: {\n        ...fullService,\n        id: variationId,\n        serviceId: serviceId,\n        timeLength: selectedVariation.timeLength\n      }\n    }\n\n    setServices(updatedServices)\n    updateEndsAtWithServicesDuration(updatedServices)\n\n    // If client is set, query for the custom price and update the service price\n    if (client) {\n      const originalPrice = selectedVariation.amountCents\n      const customPrice = client.customPrices?.find((cp) => cp.serviceId === variationId)\n      if (customPrice) {\n        const updatedServicesAfterPriceChange = [...updatedServices]\n        updatedServicesAfterPriceChange[index].amountCents = customPrice.amountCents\n        updatedServicesAfterPriceChange[index].priceChanged = originalPrice !== customPrice.amountCents\n        updatedServicesAfterPriceChange[index].saveCustomPrice = originalPrice !== customPrice.amountCents\n        setServices(updatedServicesAfterPriceChange)\n      }\n    }\n  }\n\n  const handlePriceChange = (index, newDisplayPrice) => {\n    const newAmountCents = unformatPrice(newDisplayPrice)\n    const updatedServices = [...services]\n    const currentService = updatedServices[index]\n\n    const clientCustomPrice = client?.customPrices?.find((cp) => cp.serviceId === currentService.service.serviceId)\n\n    updatedServices[index] = {\n      ...currentService,\n      amountCents: newAmountCents,\n      priceChanged: clientCustomPrice?.amountCents !== newAmountCents,\n      saveCustomPrice: false // Reset when price changes\n    }\n    setServices(updatedServices)\n  }\n\n  // Add new handler for checkbox\n  const handleSaveCustomPriceChange = (index) => {\n    const updatedServices = [...services]\n    updatedServices[index] = {\n      ...updatedServices[index],\n      saveCustomPrice: !updatedServices[index].saveCustomPrice\n    }\n    setServices(updatedServices)\n  }\n\n  // Flatten services and variations for the select options\n  const serviceOptions = useMemo(() => {\n    if (!practiceServices) return []\n    return practiceServices.flatMap((service) =>\n      service.variations.map((variation) => ({\n        value: `${service.id}-${variation.id}`,\n        label: getServiceLabel(service, variation),\n        package: service.package,\n        addOn: service.addOn\n      }))\n    )\n  }, [practiceServices])\n\n  const serviceOptionsWithoutPackages = useMemo(\n    () => serviceOptions?.filter((service) => !service.package),\n    [serviceOptions]\n  )\n\n  const serviceOptionsToUse = useMemo(\n    () => (services.length > 1 ? serviceOptionsWithoutPackages : serviceOptions),\n    [services, serviceOptions, serviceOptionsWithoutPackages]\n  )\n\n  // Build the options for ReactSelect\n  const regularServiceOptions = useMemo(\n    () => serviceOptionsToUse?.filter((service) => !service.addOn),\n    [serviceOptionsToUse]\n  )\n  const addOnServiceOptions = useMemo(\n    () => serviceOptionsToUse?.filter((service) => service.addOn),\n    [serviceOptionsToUse]\n  )\n  const groupedOptions = useMemo(\n    () =>\n      services.length > 1\n        ? [\n            {\n              label: \"Add-ons\",\n              options: addOnServiceOptions\n            },\n            {\n              label: \"Services\",\n              options: regularServiceOptions\n            }\n          ]\n        : [\n            {\n              label: \"Services\",\n              options: regularServiceOptions\n            },\n            {\n              label: \"Add-ons\",\n              options: addOnServiceOptions\n            }\n          ],\n    [services, addOnServiceOptions, regularServiceOptions]\n  )\n  const formatGroupLabel = (data) => (\n    <div className=\"flex justify-between\">\n      <span>{data.label}</span>\n      <span>{data.options.length}</span>\n    </div>\n  )\n  const CustomOptionComponent = (props) => (\n    <components.Option {...props} innerProps={{ ...props.innerProps, \"data-test-id\": `option-${props.data.value}` }}>\n      {props.children}\n    </components.Option>\n  )\n\n  const totalPrice = useMemo(() => services.reduce((sum, service) => sum + (service.amountCents || 0), 0), [services])\n\n  // last service is empty OR\n  // first service is a package\n  const addServiceDisabled =\n    (services.length > 0 && !services[services.length - 1].service) ||\n    (services.length > 0 && services[0].service && services[0].service.package)\n\n  // First service is a package, and is in client's open packages\n  const isBookingOpenPackage =\n    services.length > 0 &&\n    services[0].service &&\n    services[0].service.package &&\n    client?.openPackages?.find((pkg) => pkg.serviceId === services[0].service.serviceId)\n\n  const getAddOnsTooltip = () => {\n    if (services.length > 0 && !services[services.length - 1].service) {\n      return \"Please select a service before adding another\"\n    }\n    if (services.length > 0 && services[0].service?.package) {\n      return \"Cannot add other services to a package appointment during booking\"\n    }\n    return \"\"\n  }\n\n  return (\n    <div className=\"mt-4\">\n      {practiceServices && (\n        <>\n          <Label>Add services</Label>\n\n          {services.map((service, index) => (\n            <div key={index} className=\"mb-4\">\n              <div className=\"flex items-center gap-2\">\n                <div className=\"flex-1\">\n                  <ReactSelect\n                    id={`service-select-${index}`}\n                    isDisabled={!isServicesEditable}\n                    options={groupedOptions}\n                    formatGroupLabel={formatGroupLabel}\n                    placeholder={services.length > 1 ? \"-- select an add-on --\" : \"-- select a service --\"}\n                    onChange={(option) => {\n                      const [serviceId, variationId] = option.value.split(\"-\")\n                      handleServiceSelect(serviceId, variationId, index)\n                    }}\n                    styles={selectStyling()}\n                    value={\n                      service.service\n                        ? serviceOptionsToUse.find(\n                            (option) => option.value === `${service.service.serviceId}-${service.service.id}`\n                          )\n                        : null\n                    }\n                    components={{ Option: CustomOptionComponent }}\n                  />\n                </div>\n\n                {service.service && (\n                  <div className=\"w-1/4\">\n                    <CurrencyInput\n                      disabled={isBookingOpenPackage || !isServicesEditable}\n                      placeholder=\"Price\"\n                      id={`price-input-${index}`}\n                      value={formatPrice(service.amountCents) || \"\"}\n                      onChange={(e) => handlePriceChange(index, e.target.value)}\n                      style={service.priceChanged ? { color: \"#0D9DA4\" } : { color: \"#0B3954\" }}\n                    />\n                  </div>\n                )}\n\n                {services.length > 1 && isServicesEditable && (\n                  <div className=\"flex h-full items-center\">\n                    <TrashIcon\n                      className=\"h-6 w-6 cursor-pointer\"\n                      onClick={() => {\n                        const updatedServices = services.filter((_, i) => i !== index)\n                        setServices(updatedServices)\n                        updateEndsAtWithServicesDuration(updatedServices)\n                      }}\n                    />\n                  </div>\n                )}\n              </div>\n\n              {/* Only show the checkbox if the price has changed and the client is set */}\n              {client && service.priceChanged && isServicesEditable && (\n                <div className=\"mt-2 flex items-center gap-2\">\n                  <CheckBox\n                    id={`save-price-${index}`}\n                    checked={service.saveCustomPrice}\n                    onChange={() => handleSaveCustomPriceChange(index)}\n                  />\n                  <label htmlFor={`save-price-${index}`} className=\"text-sm\">\n                    Remember this price for this client\n                  </label>\n                </div>\n              )}\n            </div>\n          ))}\n\n          {isServicesEditable && (\n            <div className=\"relative mt-2 flex items-center gap-2\">\n              <Button type=\"secondary\" onClick={() => setServices([...services, {}])} disabled={addServiceDisabled}>\n                + Add-ons\n              </Button>\n              {addServiceDisabled && (\n                <>\n                  <InformationCircleIcon className=\"h-5 w-5\" data-tooltip-id=\"add-ons-tooltip\" />\n                  <HealMeTooltip id=\"add-ons-tooltip\" render={() => <div>{getAddOnsTooltip()}</div>} />\n                </>\n              )}\n            </div>\n          )}\n\n          {services.some((s) => s.service) && (\n            <div className=\"my-4 space-y-2\">\n              {(appointment?.tipAmountCents > 0 || appointment?.discountCodeRedemptions?.length > 0) && (\n                <div className=\"flex justify-between\">\n                  <span>Subtotal:</span>\n                  <span>{formatPrice(totalPrice)}</span>\n                </div>\n              )}\n\n              {appointment?.discountCodeRedemptions?.map((discount, index) => (\n                <div key={index} className=\"flex justify-between\">\n                  <span>Discount ({discount.code}):</span>\n                  <span>-{formatPrice(discount.amountCents)}</span>\n                </div>\n              ))}\n\n              {appointment?.tipAmountCents > 0 && (\n                <div className=\"flex justify-between\">\n                  <span>Tip:</span>\n                  <span>{formatPrice(appointment.tipAmountCents)}</span>\n                </div>\n              )}\n\n              <Typography variant=\"h5\" className=\"flex justify-between\">\n                <span>Total:</span>\n                <span>\n                  {formatPrice(\n                    totalPrice +\n                      (appointment?.tipAmountCents || 0) -\n                      (appointment?.discountCodeRedemptions?.reduce((sum, discount) => sum + discount.amountCents, 0) ||\n                        0)\n                  )}\n                </span>\n              </Typography>\n            </div>\n          )}\n\n          {!appointment && services.length > 0 && practice.recurringBookingsEnabled && totalPrice > 0 && (\n            <RecurrenceSelect className=\"mt-4\" />\n          )}\n\n          {appointment?.recurrenceFrequency && !appointment?.package && (\n            <RecurrenceSelect disabled={true} className={upcoming ? \"mb-4\" : \"\"} />\n          )}\n        </>\n      )}\n    </div>\n  )\n}\n","import { VideoCameraIcon } from \"@heroicons/react/24/outline\"\nimport React, { useEffect } from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { Label, Select } from \"../../../shared/Inputs\"\n\nconst LocationSelect = () => {\n  const { practice } = usePractice()\n  const { appointment, locationId, setLocationId } = useManualBooking()\n\n  // Set default location to first location if no location is selected\n  useEffect(() => {\n    if (!locationId && practice?.locations?.length > 0) {\n      setLocationId(practice.locations[0].id)\n    }\n  }, [locationId, practice])\n\n  const virtualLink = appointment?.virtualMeetingLinkWithFallback\n\n  return (\n    <div className=\"mt-4\">\n      <Label htmlFor=\"location-select\">Location</Label>\n      <Select\n        id=\"location-select\"\n        options={practice?.locations?.map((location) => ({ label: location.singleLine, value: location.id }))}\n        onChange={(e) => setLocationId(e.target.value)}\n        value={locationId || undefined}\n      />\n      {appointment && virtualLink && (\n        <div className=\"mt-2 text-sm\">\n          <VideoCameraIcon className=\"mr-2 inline h-4 w-4\" />\n          <a href={virtualLink} target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-teal\">\n            Join virtual meeting\n          </a>\n        </div>\n      )}\n    </div>\n  )\n}\n\nexport default LocationSelect\n","import React from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { Button } from \"../../../shared/Buttons\"\nimport EditAppointmentDateTime from \"../EditAppointmentDateTime\"\nimport EditAppointmentService from \"../EditAppointmentService\"\n\nimport LocationSelect from \"./LocationSelect\"\n\nconst RESEND_PRO_APPOINTMENT_CONFIRMATION = `\n  mutation ResendProAppointmentConfirmation($appointmentId: ID!, $sendTo: String!) {\n    resendProAppointmentConfirmation(appointmentId: $appointmentId, sendTo: $sendTo) {\n      result\n      errors\n    }\n  }\n`\n\nconst AppointmentDetails = () => {\n  const { appointment } = useManualBooking()\n  const { showToast } = useToast()\n\n  const [, resendProAppointmentConfirmation] = useMutation(RESEND_PRO_APPOINTMENT_CONFIRMATION)\n  const resendProAppointmentConfirmationHandler = ({ appointmentId, sendTo }) => {\n    resendProAppointmentConfirmation({ appointmentId, sendTo }).then((result) => {\n      if (result.data.resendProAppointmentConfirmation.result === \"success\") {\n        showToast(\"Confirmation resent!\")\n      } else {\n        showToast({\n          content: `Error resending confirmation: ${result.data.resendProAppointmentConfirmation.errors.join()}`,\n          type: \"error\"\n        })\n      }\n    })\n  }\n  const upcoming = new Date(appointment?.startsAt) >= new Date()\n\n  return (\n    <>\n      <EditAppointmentDateTime />\n\n      <LocationSelect />\n\n      <EditAppointmentService />\n\n      {appointment && upcoming && (\n        <>\n          <div className=\"mt-8 flex gap-2\">\n            <Button\n              type=\"secondary\"\n              className=\"w-full\"\n              onClick={() =>\n                resendProAppointmentConfirmationHandler({\n                  appointmentId: appointment.id,\n                  sendTo: \"email\"\n                })\n              }>\n              Resend Email\n            </Button>\n            <Button\n              type=\"secondary\"\n              className=\"w-full\"\n              onClick={() =>\n                resendProAppointmentConfirmationHandler({\n                  appointmentId: appointment.id,\n                  sendTo: \"sms\"\n                })\n              }>\n              Resend Text\n            </Button>\n          </div>\n        </>\n      )}\n    </>\n  )\n}\n\nexport default AppointmentDetails\n","import React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { copyToClipboard } from \"../../../../utils/utils\"\nimport { CopyLinkButton } from \"../../../shared/Buttons\"\nimport { Label } from \"../../../shared/Inputs\"\nimport Typography from \"../../../shared/Typography\"\n\nconst AppointmentReview = () => {\n  const { appointment, client } = useManualBooking()\n  const { showToast } = useToast()\n\n  if (!appointment || new Date(appointment.startsAt) >= new Date()) return null\n\n  const handleCopy = async () => {\n    await copyToClipboard(appointment.reviewLink, showToast)\n  }\n\n  return (\n    <>\n      <div className=\"my-8 w-full border-t border-gray-light\" />\n      <Label>Review</Label>\n      <CopyLinkButton value={appointment.reviewLink} className=\"w-[325px]\" onClick={handleCopy} />\n      <Typography className=\"mt-2 block\" variant=\"small\">\n        You can send this link to {client?.firstName} to complete a review.\n      </Typography>\n    </>\n  )\n}\n\nexport default AppointmentReview\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useEffect, useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { PAYMENT_STATUS_OPTIONS } from \"../../../../@core/appointment/appointment.model\"\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../../../utils/mutations\"\nimport { formatShortDate } from \"../../../../utils/utils\"\nimport Badge from \"../../../shared/Badge\"\nimport { Button } from \"../../../shared/Buttons\"\nimport { InputWithLabel } from \"../../../shared/Inputs\"\nimport LoadingSpinner from \"../../../shared/LoadingSpinner\"\nimport { NewModal } from \"../../../shared/Modal\"\nimport { RadioWithLabel } from \"../../../shared/RadioButtons\"\nimport Typography from \"../../../shared/Typography\"\nimport AddOrRetryButton from \"../AddOrRetryButton\"\nimport { MARK_AS_PAID, UNDO_MARK_PAID, RETRY_PAYMENT_MUTATION } from \"../appointment_graphql\"\n\nexport default function AppointmentStatus() {\n  const { appointment } = useManualBooking()\n\n  const [, markPaid] = useMutation(MARK_AS_PAID)\n  const [, undoMarkPaid] = useMutation(UNDO_MARK_PAID)\n  const [, retryPayment] = useMutation(RETRY_PAYMENT_MUTATION)\n\n  const [selectedPaymentOption, setSelectedPaymentOption] = useState(\"cash\")\n  const [otherPaymentOption, setOtherPaymentOption] = useState(\"\")\n\n  const options = [\n    { label: \"Cash\", value: \"cash\" },\n    { label: \"Venmo\", value: \"venmo\" },\n    { label: \"PayPal\", value: \"paypal\" },\n    { label: \"Other\", value: \"other\" }\n  ]\n\n  const handleChange = (event) => {\n    setSelectedPaymentOption(event.target.value)\n  }\n\n  const [appointmentCopy, setAppointmentCopy] = useState(appointment)\n  const [retryingPayment, setRetryingPayment] = useState(false)\n  const { showToast } = useToast()\n  const { practice } = usePractice()\n\n  const markAsPaid = (id) => {\n    markPaid({\n      appointmentId: id,\n      paidBy: selectedPaymentOption === \"other\" ? otherPaymentOption : selectedPaymentOption\n    }).then((res) => {\n      NiceModal.hide(\"markPaidModal\")\n      if (res.data.markPaid.result === \"success\") {\n        setAppointmentCopy({ ...appointment, markPaid: true })\n      }\n    })\n  }\n\n  const undoMarkAsPaid = (id) => {\n    undoMarkPaid({ appointmentId: id }).then((res) => {\n      if (res.data.undoMarkPaid.result === \"success\") {\n        setAppointmentCopy({ ...appointment, markPaid: false, paymentStatus: \"Unpaid\" })\n      }\n    })\n  }\n\n  const handleRetryPayment = () => {\n    setRetryingPayment(true)\n    retryPayment({ appointmentId: appointment?.id }).then((res) => {\n      if (res.data?.retryPayment?.result === \"success\") {\n        showToast(\"Success! Payment processed.\")\n        setAppointmentCopy({ ...appointment, paymentError: false, hasPaymentMethod: true, paymentStatus: \"Paid\" })\n      } else {\n        showToast({\n          content: `Payment failed: ${res.data?.retryPayment?.errors[0] || \"Internal server error\"}`,\n          type: \"error\"\n        })\n        setAppointmentCopy({ ...appointment, paymentError: res.data?.retryPayment?.errors[0] })\n      }\n      setRetryingPayment(false)\n    })\n  }\n\n  const [{ data, fetching, error }] = useQuery({\n    query: DEFAULT_PAYMENT_METHOD_QUERY,\n    variables: {\n      clientId: appointment?.client?.id,\n      userId: appointment?.user?.id,\n      practiceId: practice.id\n    },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  useEffect(() => {\n    if (!appointmentCopy.hasPaymentMethod && data?.defaultPaymentMethodPractice) {\n      setAppointmentCopy({\n        ...appointmentCopy,\n        hasPaymentMethod: true,\n        client: { ...appointmentCopy.client, defaultPaymentMethod: data.defaultPaymentMethodPractice }\n      })\n    }\n  }, [data, appointmentCopy.hasPaymentMethod])\n\n  const upcoming = new Date(appointment.startsAt) >= new Date()\n  const canShowWarning =\n    !appointmentCopy.markPaid && appointmentCopy.amountCents > 0 && appointmentCopy.paymentStatus !== \"Paid\"\n  const missingPaymentMethod = !appointmentCopy.paymentError && !appointmentCopy.hasPaymentMethod\n  const overduePayment = canShowWarning && missingPaymentMethod && !upcoming\n  const unprocessedPayment =\n    canShowWarning &&\n    !upcoming &&\n    appointmentCopy.hasPaymentMethod &&\n    appointmentCopy.paymentStatus === PAYMENT_STATUS_OPTIONS.UNPAID\n  const failedPayment = canShowWarning && appointmentCopy.paymentError\n  const client = appointmentCopy.user || appointmentCopy.client\n  const isPackage = !!appointmentCopy.packageSessionNumber\n\n  if (fetching) return <LoadingSpinner />\n  if (error)\n    return (\n      <Typography variant=\"body\" className=\"mb-4 text-red\">\n        Error fetching payment method, please try again later.\n      </Typography>\n    )\n\n  return (\n    <div className=\"relative flex flex-col\">\n      <div className=\"mb-2 flex items-center justify-between\">\n        {!upcoming && (overduePayment || failedPayment || unprocessedPayment) ? (\n          <Badge type=\"error\">Unpaid</Badge>\n        ) : (\n          (appointmentCopy.paymentStatus === \"Paid\" || appointmentCopy.markPaid) && <Badge>Paid</Badge>\n        )}\n        {appointmentCopy.amountCents > 0 && (appointmentCopy.paymentStatus !== \"Paid\" || appointmentCopy.markPaid) && (\n          <>\n            {appointmentCopy.markPaid ? (\n              <div>\n                <span className=\"text-sm text-teal\">Marked as Paid</span>\n                <Button\n                  type=\"link\"\n                  className=\"ml-2 text-sm text-gray-dark\"\n                  onClick={() => {\n                    undoMarkAsPaid(appointment.id)\n                  }}>\n                  Undo\n                </Button>\n              </div>\n            ) : (\n              <Button\n                type=\"link\"\n                onClick={() => {\n                  NiceModal.show(\"markPaidModal\")\n                }}>\n                Mark as Paid\n              </Button>\n            )}\n          </>\n        )}\n      </div>\n      <Typography variant=\"small\" className=\"mb-4 text-gray-dark\">\n        Booked by {appointment.bookedBy === \"client\" ? client.firstName : \"me\"} on{\" \"}\n        {formatShortDate(appointment.createdAt)}\n      </Typography>\n      {(overduePayment || failedPayment || unprocessedPayment) && (\n        <>\n          <div className=\"mb-4 rounded-xl border border-orange bg-orange-light p-4\">\n            {retryingPayment && (\n              <Typography variant=\"body\" className=\"mb-0\">\n                Processing payment. Please wait...\n              </Typography>\n            )}\n\n            {!overduePayment && !retryingPayment && (failedPayment || unprocessedPayment) && (\n              <Typography variant=\"body\">\n                <div className=\"font-bold\">Payment not processed</div>\n                {practice.hasPaymentProvider ? (\n                  <>\n                    Try adding a new card or retry this payment method.{\" \"}\n                    <AddOrRetryButton\n                      appointment={appointmentCopy}\n                      headerLabel={\"Choose your payment method\"}\n                      label=\"Add or retry\"\n                      onSave={handleRetryPayment}\n                      type={\"link\"}\n                    />\n                  </>\n                ) : (\n                  <>\n                    <div>Payment provider not connected</div>\n                    <a className=\"font-bold text-teal hover:underline\" href=\"/portal/settings/banking\">\n                      Click here to connect to a payment provider\n                    </a>\n                  </>\n                )}\n              </Typography>\n            )}\n\n            {!retryingPayment && overduePayment && (\n              <Typography variant=\"body\">\n                <div className=\"font-bold\">Payment is overdue for this {isPackage ? \"package\" : \"appointment\"}</div>\n                {practice.hasPaymentProvider ? (\n                  <>\n                    Please add a payment method for this client.{\" \"}\n                    <AddOrRetryButton\n                      appointment={appointmentCopy}\n                      headerLabel={\"Choose your payment method\"}\n                      label=\"Add or retry\"\n                      onSave={handleRetryPayment}\n                      type={\"link\"}\n                    />\n                  </>\n                ) : (\n                  <>\n                    <div>Payment provider not connected</div>\n                    <a className=\"font-bold text-teal hover:underline\" href=\"/portal/settings/banking\">\n                      Click here to connect to a payment provider\n                    </a>\n                  </>\n                )}\n              </Typography>\n            )}\n          </div>\n        </>\n      )}\n      <NewModal\n        id=\"markPaidModal\"\n        header=\"Mark as paid\"\n        showFooter={true}\n        fullHeightInMobile={true}\n        hideModal={() => {\n          NiceModal.hide(\"markPaidModal\")\n        }}\n        onSave={() => markAsPaid(appointment.id)}>\n        <div className=\"sm:pb-12\">\n          <Typography variant=\"body\" className=\"mb-6 text-gray-dark\">\n            You can note how an offline payment was made:\n          </Typography>\n          {options.map((option) => (\n            <RadioWithLabel\n              key={option.value}\n              id={option.value}\n              label={option.label}\n              checked={selectedPaymentOption === option.value}\n              onChange={handleChange}\n              value={option.value}\n              name=\"paymentMethod\"\n              className=\"mb-4\"\n            />\n          ))}\n          {selectedPaymentOption === \"other\" && (\n            <InputWithLabel\n              label=\"Note how the client paid:\"\n              value={otherPaymentOption}\n              onChange={(e) => setOtherPaymentOption(e.target.value)}\n            />\n          )}\n        </div>\n      </NewModal>\n    </div>\n  )\n}\n","import React, { useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { EditableValue, TextArea } from \"./Inputs\"\n\nconst CLIENT_NOTES_QUERY = `\n  query ClientNotes($clientId: ID!) {\n    client(clientId: $clientId) {\n      id\n      clientNote { text time }\n    }\n  }\n`\n\nconst ADD_NOTE_MUTATION = `\n  mutation($text: String!, $clientId: ID!) {\n    addNote(text: $text, clientId: $clientId) {\n      result\n      errors\n    }\n  }\n`\n\nconst ClientNotes = ({ client, className }) => {\n  const [text, setText] = useState(\"\")\n  const [{ data, fetching }, refetchQuery] = useQuery({\n    query: CLIENT_NOTES_QUERY,\n    variables: { clientId: client.id },\n    requestPolicy: \"network-only\"\n  })\n\n  const [{ fetching: addNoteFetching }, addNote] = useMutation(ADD_NOTE_MUTATION)\n\n  const onSave = () => {\n    addNote({ text, clientId: client.id }).then((result) => {\n      if (result.data?.addNote?.result === \"success\") {\n        refetchQuery()\n      } else {\n        console.error(result)\n      }\n    })\n  }\n\n  const value = data?.client?.clientNote?.text || \"\"\n\n  return (\n    <EditableValue\n      className={className}\n      name=\"Client notes\"\n      value={value.replaceAll(\"\\n\", \"<br />\")}\n      saveDisabled={fetching || addNoteFetching || text.length < 1}\n      disabled={fetching || addNoteFetching}\n      titleClassName=\"text-sm\"\n      truncateLength={null}\n      onSave={onSave}\n      onOpened={() => setText(value)}\n      onCancel={() => setText(value)}>\n      <TextArea value={text} onChange={(e) => setText(e.target.value)} />\n    </EditableValue>\n  )\n}\n\nexport default ClientNotes\n","import { ChevronRightIcon, XMarkIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { formatPhone } from \"../../../../utils/utils\"\nimport ClientNotes from \"../../../shared/ClientNotes\"\nimport Typography from \"../../../shared/Typography\"\nimport ClientSelector from \"../ClientSelector\"\n\nconst ClientInfo = () => {\n  const { client, setClient, appointment, services, setServices, updateEndsAtWithServicesDuration } = useManualBooking()\n  const { practice, practiceServices } = usePractice()\n\n  const packageData =\n    client?.openPackages?.find((p) => p.serviceId === services?.[0]?.service?.serviceId) || appointment?.package\n\n  const handleClientSelect = (selectedClient) => {\n    setClient(selectedClient)\n    if (selectedClient.openPackages && selectedClient.openPackages.length > 0) {\n      const selectedService = practiceServices.find(\n        (service) => service.id === selectedClient.openPackages[0].serviceId\n      )\n      updateStateOnClientSelect(selectedService, selectedClient)\n    } else if (selectedClient.lastBookedService) {\n      const selectedService = practiceServices.find((service) => service.id === selectedClient.lastBookedService.id)\n      updateStateOnClientSelect(selectedService, selectedClient)\n    }\n  }\n\n  const updateStateOnClientSelect = (selectedService, selectedClient) => {\n    if (selectedService) {\n      const serviceObj = buildServiceObj(selectedService, selectedClient)\n      setServices([serviceObj])\n      updateEndsAtWithServicesDuration([serviceObj])\n    }\n  }\n\n  const buildServiceObj = (selectedService, selectedClient) => {\n    const selectedVariation = selectedService.variations[0]\n\n    const serviceObj = {\n      amountCents: selectedVariation.amountCents,\n      service: {\n        ...selectedService,\n        id: selectedVariation.id,\n        serviceId: selectedService.id,\n        timeLength: selectedVariation.timeLength\n      }\n    }\n\n    const customPrice = selectedClient.customPrices?.find((cp) => cp.serviceId === selectedVariation.id)\n    if (customPrice) {\n      const originalPrice = selectedVariation.amountCents\n      return {\n        ...serviceObj,\n        amountCents: customPrice.amountCents,\n        priceChanged: originalPrice !== customPrice.amountCents,\n        saveCustomPrice: originalPrice !== customPrice.amountCents\n      }\n    }\n\n    return serviceObj\n  }\n\n  return (\n    <div className=\"mb-6\">\n      {client && client.id ? (\n        <div className=\"relative rounded-xl border border-gray-light px-4 py-2\">\n          <a href={`/portal/clients/${client.id}`}>\n            <Typography variant=\"h5\">\n              {client.firstName} {client.lastName}\n            </Typography>\n            <Typography variant=\"small\">\n              {client.email && `${client.email}`} {formatPhone(client.phone) && `${formatPhone(client.phone)}`}{\" \"}\n            </Typography>\n            {appointment && (\n              <button className=\"absolute right-4 top-4\">\n                <ChevronRightIcon className=\"h-5 w-5\" />\n              </button>\n            )}\n          </a>\n\n          {packageData && (\n            <div className=\"-mx-4 -mb-2 mt-2 box-content bg-gray-ultralight px-4 py-2\">\n              <Typography variant=\"small\">\n                <span className=\"font-bold\">\n                  {appointment?.packageSessionNumber\n                    ? `Session ${appointment.packageSessionNumber} of ${packageData.numberOfSessions}`\n                    : `${packageData.sessionsRemaining} sessions left`}\n                </span>\n                : They purchased the &apos;{packageData.name}&apos; on{\" \"}\n                {dayjs(packageData.createdAt).format(\"MM/DD/YYYY\")}.\n              </Typography>\n            </div>\n          )}\n          {practice.clientNotesEnabled && (\n            <div className=\"-mx-4 -mb-2 mt-2 box-content rounded-b-xl px-4 py-2\">\n              <ClientNotes client={client} />\n            </div>\n          )}\n          {!appointment && (\n            <button className=\"absolute right-4 top-4\" onClick={() => setClient(null)}>\n              <XMarkIcon className=\"h-5 w-5\" />\n            </button>\n          )}\n        </div>\n      ) : practiceServices ? (\n        <ClientSelector defaultClient={client} onSelect={handleClientSelect} />\n      ) : null}\n    </div>\n  )\n}\n\nexport default ClientInfo\n","import React from \"react\"\nimport { useQuery } from \"urql\"\n\nimport LoadingSpinner from \"../../shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../shared/Modal\"\n\nconst DEFAULT_PAYMENT_METHOD_QUERY = `\n  query($clientId: ID, $userId: ID, $practiceId: ID!) {\n    defaultPaymentMethodPractice(clientId: $clientId, userId: $userId, practiceId: $practiceId) {\n      brand\n      last4\n      expMonth\n      expYear\n    }\n  }\n`\n\nconst ConfirmPackageModal = ({ showPackageConfirmModal, hideModal, onSave, client, amount, disabled, practice }) => {\n  const clientId = client?.__typename === \"Client\" ? client?.id : null\n  const userId = client?.__typename === \"User\" ? client?.id : null\n\n  const [{ data, fetching, error }] = useQuery({\n    query: DEFAULT_PAYMENT_METHOD_QUERY,\n    variables: { clientId, userId, practiceId: practice?.id },\n    pause: !client?.id\n  })\n\n  if (error) console.error(error)\n\n  const cardOnFile = data?.defaultPaymentMethodPractice\n  const clientName = client?.firstName || \"This client\"\n\n  return (\n    <AnimatedModal\n      visible={showPackageConfirmModal}\n      hideModal={hideModal}\n      header={cardOnFile ? \"Charge card on file now\" : \"No card on file\"}\n      showFooter={true}\n      actionButtonCopy={cardOnFile ? `Charge ${amount} now` : \"Continue & book\"}\n      saveDisabled={disabled}\n      onSave={onSave}>\n      {fetching ? (\n        <LoadingSpinner />\n      ) : cardOnFile ? (\n        <p>\n          Booking this package will charge {clientName}&apos;s card on file now ({cardOnFile.brand} ending in{\" \"}\n          {cardOnFile.last4}) for {amount}. Click cancel to go back.\n        </p>\n      ) : (\n        <p>{clientName} doesn&apos;t have a card on file, but you can still book this package and add a card later.</p>\n      )}\n    </AnimatedModal>\n  )\n}\n\nexport default ConfirmPackageModal\n","import React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { formatPrice } from \"../../../../utils/utils\"\nimport ConfirmRescheduleModal from \"../../../shared/ConfirmRescheduleModal\"\nimport { Label, TextArea } from \"../../../shared/Inputs\"\nimport { AnimatedModal } from \"../../../shared/Modal\"\nimport { RadioWithLabel } from \"../../../shared/RadioButtons\"\nimport Typography from \"../../../shared/Typography\"\nimport ConfirmPackageModal from \"../ConfirmPackageModal\"\n\nconst ConfirmModals = ({\n  showReschedule,\n  showCancelModal,\n  showPackageConfirmModal,\n  showPastAppointmentModal,\n  onRescheduleSuccess,\n  onCancelSuccess,\n  hideRescheduleModal,\n  hideCancelModal,\n  hidePackageConfirmModal,\n  hidePastAppointmentModal,\n  onPackageConfirm,\n  onPastAppointmentConfirm,\n  practitionerNote,\n  setPractitionerNote,\n  cancelRecurringSeries,\n  setCancelRecurringSeries\n}) => {\n  const { appointment, client, services } = useManualBooking()\n  const { practice } = usePractice()\n\n  const serviceAmount = formatPrice(services?.[0]?.amountCents)\n\n  return (\n    <>\n      {showReschedule && (\n        <ConfirmRescheduleModal\n          showReschedule={showReschedule}\n          onRescheduleSuccess={onRescheduleSuccess}\n          hideModal={hideRescheduleModal}\n        />\n      )}\n      {showCancelModal && (\n        <AnimatedModal\n          visible={showCancelModal}\n          hideModal={hideCancelModal}\n          header=\"Cancel session now\"\n          showFooter={true}\n          cancelButtonCopy=\"No, don't cancel\"\n          actionButtonCopy=\"Yes, cancel\"\n          actionButtonType=\"destructive\"\n          onSave={onCancelSuccess}>\n          <Typography variant=\"subtitle\">You can add an optional message to the cancellation email.</Typography>\n          <TextArea\n            placeholder=\"Message to client (optional)\"\n            onChange={(e) => setPractitionerNote(e.target.value)}\n            value={practitionerNote}\n          />\n          {appointment.recurrenceFrequency && (\n            <div className=\"mt-4\">\n              <Label>Cancel recurring session</Label>\n              <RadioWithLabel\n                value={!cancelRecurringSeries}\n                label=\"This session only\"\n                checked={!cancelRecurringSeries}\n                onChange={() => setCancelRecurringSeries(!cancelRecurringSeries)}\n              />\n              <RadioWithLabel\n                className=\"mt-1.5\"\n                value={cancelRecurringSeries}\n                label=\"This and all following sessions\"\n                checked={cancelRecurringSeries}\n                onChange={() => setCancelRecurringSeries(!cancelRecurringSeries)}\n              />\n            </div>\n          )}{\" \"}\n        </AnimatedModal>\n      )}\n      <ConfirmPackageModal\n        showPackageConfirmModal={showPackageConfirmModal}\n        client={client}\n        hideModal={hidePackageConfirmModal}\n        practice={practice}\n        onSave={onPackageConfirm}\n        amount={serviceAmount}\n      />\n      {showPastAppointmentModal && (\n        <AnimatedModal\n          visible={showPastAppointmentModal}\n          hideModal={hidePastAppointmentModal}\n          header=\"Create Past Appointment\"\n          showFooter={true}\n          cancelButtonCopy=\"No, cancel\"\n          actionButtonCopy=\"Yes, continue\"\n          onSave={onPastAppointmentConfirm}>\n          <p>\n            It looks like you&apos;re creating an appointment in the past, are you sure this is what you want to do?\n          </p>\n          <br />\n          {practice.hasPaymentProvider && <p>If the client has a card on file, it will be charged right away.</p>}\n        </AnimatedModal>\n      )}\n    </>\n  )\n}\n\nexport default ConfirmModals\n","import React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { formatClientPhonePlusOne } from \"../../../../utils/utils\"\nimport { Banner } from \"../../../shared/Layout\"\n\nconst ErrorBanner = ({ appointmentErrors }) => {\n  const { client } = useManualBooking()\n  const { practicePhone, practiceEmail } = usePractice()\n  const clientPhone = formatClientPhonePlusOne(client?.phone)\n  const clientEmail = client?.email\n\n  return (\n    <>\n      {appointmentErrors && (\n        <Banner type=\"error\" className=\"mt-6\">\n          {appointmentErrors}\n        </Banner>\n      )}\n\n      {clientPhone === practicePhone && !!practicePhone && (\n        <Banner className=\"mt-4\" type=\"error\">\n          Cannot use your phone number for a client.\n        </Banner>\n      )}\n      {clientEmail?.trim() === practiceEmail && (\n        <Banner className=\"mt-4\" type=\"error\">\n          Cannot use your email for a client.\n        </Banner>\n      )}\n    </>\n  )\n}\n\nexport default ErrorBanner\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { Button } from \"../../../shared/Buttons\"\nimport { AnimatedModal } from \"../../../shared/Modal\"\nimport { RadioWithLabel } from \"../../../shared/RadioButtons\"\nimport Typography from \"../../../shared/Typography\"\n\nconst SEND_INVOICE = `\n  mutation SendClientInvoiceMutation($appointmentId: ID!, $sendTo: String!) {\n    sendClientInvoiceMutation(appointmentId: $appointmentId, sendTo: $sendTo) {\n      result\n      errors\n    }\n  }\n`\n\nexport default function ManualPaymentInvoiceSection() {\n  const { appointment } = useManualBooking()\n\n  const [showInvoiceModal, setShowInvoiceModal] = useState(false)\n  const [sendTo, setSendTo] = useState(\"email\")\n\n  const [, sendInvoice] = useMutation(SEND_INVOICE)\n  const { showToast } = useToast()\n\n  const sendInvoiceHandler = ({ appointmentId, sendTo }) => {\n    sendInvoice({\n      appointmentId,\n      sendTo\n    }).then((res) => {\n      if (res?.data?.sendClientInvoiceMutation?.result === \"success\") {\n        showToast(\"Invoice sent successfully\")\n      } else {\n        if (res?.data?.sendClientInvoiceMutation?.errors?.length > 0) {\n          showToast({ content: res.data.sendClientInvoiceMutation.errors.join(\", \"), type: \"error\" })\n          return\n        }\n        showToast({ content: \"Failed to send invoice\", type: \"error\" })\n      }\n    })\n  }\n\n  return (\n    <div className=\"mb-4 flex justify-between\">\n      <Button type=\"secondary\" onClick={() => window.open(\"/m/c/\" + appointment.instantActionToken, \"_blank\")}>\n        In Person Payment\n      </Button>\n      <Button type=\"secondary\" onClick={() => setShowInvoiceModal(true)}>\n        Send invoice\n      </Button>\n\n      <AnimatedModal\n        visible={showInvoiceModal}\n        hideModal={() => setShowInvoiceModal(false)}\n        header={\"Send invoice notification\"}\n        showFooter={true}\n        actionButtonCopy=\"Send now\"\n        onSave={() => {\n          sendInvoiceHandler({\n            appointmentId: appointment.id,\n            sendTo\n          })\n          setShowInvoiceModal(false)\n        }}>\n        <Typography variant=\"subtitle\">Where do you want to send?</Typography>\n        <div className=\"mt-4 flex flex-col gap-2\">\n          <RadioWithLabel\n            label=\"Email\"\n            name=\"sendTo\"\n            value=\"email\"\n            checked={sendTo === \"email\"}\n            onChange={() => setSendTo(\"email\")}\n          />\n          <RadioWithLabel\n            label=\"SMS\"\n            name=\"sendTo\"\n            value=\"sms\"\n            checked={sendTo === \"sms\"}\n            onChange={() => setSendTo(\"sms\")}\n          />\n          <RadioWithLabel\n            label=\"Both\"\n            name=\"sendTo\"\n            value=\"both\"\n            checked={sendTo === \"both\"}\n            onChange={() => setSendTo(\"both\")}\n          />\n        </div>\n      </AnimatedModal>\n    </div>\n  )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { PAYMENT_STATUS_OPTIONS } from \"../../../@core/appointment/appointment.model\"\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { formatPhone } from \"../../../utils/utils\"\nimport AppointmentAdjustments from \"../../shared/AppointmentAdjustments\"\nimport { Link } from \"../../shared/Links\"\n\nimport {\n  PRACTICE_QUERY,\n  CREATE_APPOINTMENT_MUTATION,\n  CANCEL_APPOINTMENT_MUTATION,\n  ACCEPT_APPOINTMENT_MUTATION,\n  DECLINE_APPOINTMENT_MUTATION,\n  UPDATE_APPOINTMENT_V2_MUTATION\n} from \"./appointment_graphql\"\nimport AppointmentActions from \"./client_event_form/AppointmentActions\"\nimport AppointmentDetails from \"./client_event_form/AppointmentDetails\"\nimport AppointmentReview from \"./client_event_form/AppointmentReview\"\nimport AppointmentStatus from \"./client_event_form/AppointmentStatus\"\nimport ClientInfo from \"./client_event_form/ClientInfo\"\nimport ConfirmModals from \"./client_event_form/ConfirmModals\"\nimport ErrorBanner from \"./client_event_form/ErrorBanner\"\nimport ManualPaymentInvoiceSection from \"./client_event_form/ManualPaymentInvoiceSection\"\n\nconst ClientEventForm = ({\n  onAppointmentChanged,\n  onRescheduleSuccess,\n  onAppointmentCancelled,\n  onRecurringAppointmentsChanged\n}) => {\n  const [showReschedule, setShowReschedule] = useState(null)\n  const [practitionerNote, setPractitionerNote] = useState(\"\")\n  const [showCancelModal, setShowCancelModal] = useState(false)\n  const [showPackageConfirmModal, setShowPackageConfirmModal] = useState(false)\n  const [showPastAppointmentModal, setShowPastAppointmentModal] = useState(false)\n  const [pendingAction, setPendingAction] = useState(null)\n  const [cancelRecurringSeries, setCancelRecurringSeries] = useState(false)\n\n  const {\n    appointment,\n    services,\n    locationId,\n    client,\n    startsAt,\n    endsAt,\n    recurringStartTimes,\n    recurrencePattern,\n    createRecurringAppointments,\n    createRecurringAppointmentsFetching,\n    resetBookingState,\n    appointmentErrors,\n    setAppointmentErrors\n  } = useManualBooking()\n\n  const [{ fetching: createFetching }, createAppointment] = useMutation(CREATE_APPOINTMENT_MUTATION)\n  const [{ fetching: updateV2Fetching }, updateAppointmentV2] = useMutation(UPDATE_APPOINTMENT_V2_MUTATION)\n  const [{ fetching: cancelFetching }, cancelAppointment] = useMutation(CANCEL_APPOINTMENT_MUTATION)\n  const [{ fetching: acceptFetching }, acceptAppointment] = useMutation(ACCEPT_APPOINTMENT_MUTATION)\n  const [{ fetching: declineFetching }, declineAppointment] = useMutation(DECLINE_APPOINTMENT_MUTATION)\n\n  const fetching =\n    createFetching ||\n    updateV2Fetching ||\n    cancelFetching ||\n    createRecurringAppointmentsFetching ||\n    acceptFetching ||\n    declineFetching\n\n  const { showToast } = useToast()\n  const { practice, setPracticeServices, setPractice } = usePractice()\n\n  const [{ data: practiceData }] = useQuery({\n    query: PRACTICE_QUERY,\n    variables: { includePrivate: true, includeAddOns: true },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  useEffect(() => {\n    if (practiceData?.currentPractice?.services) {\n      setPracticeServices(practiceData.currentPractice.services)\n    }\n    if (practiceData && practiceData.currentPractice.bookingAvailability.availableSlots && !appointment) {\n      resetDefaultValues()\n      setPractice((prev) => ({ ...prev, bookingAvailability: practiceData.currentPractice.bookingAvailability }))\n    }\n  }, [practiceData, appointment])\n\n  const resetDefaultValues = () => {\n    resetBookingState()\n  }\n\n  const handleErrors = (data, successCallback) => {\n    if (data?.result === \"success\") {\n      successCallback(data)\n    } else {\n      setAppointmentErrors(data?.errors?.join() || \"Unexpected error. Please contact support if this persists.\")\n    }\n  }\n\n  const createManualAppointment = () => {\n    let clientId = null\n    let newClient = null\n\n    if (client.id) {\n      clientId = client.id\n    } else {\n      newClient = client\n    }\n\n    createAppointment({\n      appointmentServices: services\n        .filter((service) => service.service?.id)\n        .map((service) => ({\n          amountCents: service.amountCents,\n          serviceId: service.service.id,\n          saveCustomPrice: service.saveCustomPrice\n        })),\n      locationId: locationId,\n      startsAt,\n      endsAt,\n      clientId: clientId,\n      client: newClient\n    }).then((result) => {\n      handleErrors(result.data.proCreateAppointment, () => {\n        resetDefaultValues()\n        setShowPackageConfirmModal(false)\n        showToast(\"Appointment created successfully.\")\n        onAppointmentChanged(result.data.proCreateAppointment.appointment)\n      })\n    })\n  }\n\n  const editManualAppointment = () => {\n    updateAppointmentV2({\n      appointmentId: appointment.id,\n      appointmentServices: services\n        .filter((service) => service.service?.id)\n        .map((service) => ({\n          amountCents: service.amountCents,\n          serviceId: service.service.id,\n          saveCustomPrice: service.saveCustomPrice\n        })),\n      locationId,\n      startsAt,\n      endsAt,\n      practitionerNote\n    }).then((result) => {\n      handleErrors(result.data?.updateAppointmentV2, () => {\n        showToast(\"Appointment updated successfully.\")\n        onAppointmentChanged(result.data?.updateAppointmentV2?.appointment)\n      })\n    })\n  }\n\n  const handleCancelSuccess = () => {\n    cancelAppointment({ appointmentId: appointment.id, practitionerNote, cancelRecurringSeries }).then((result) => {\n      if (result.data.cancelAppointment.result === \"success\") {\n        setShowCancelModal(false)\n        showToast({\n          type: \"info\",\n          content: cancelRecurringSeries ? \"Your recurring series was cancelled\" : \"Your appointment was cancelled\"\n        })\n        onAppointmentCancelled(result.data.cancelAppointment.cancelledAppointmentIds)\n      } else {\n        setShowCancelModal(false)\n        setAppointmentErrors(result.data.cancelAppointment.errors.join())\n      }\n    })\n  }\n\n  const handlePackageConfirm = () => {\n    if (recurringStartTimes && recurrencePattern) {\n      createRecurringAppointments((appointments) => {\n        resetDefaultValues()\n        onRecurringAppointmentsChanged(appointments)\n        setShowPackageConfirmModal(false)\n      })\n    } else {\n      createManualAppointment()\n    }\n  }\n\n  const handlePastAppointmentConfirm = () => {\n    if (pendingAction) {\n      pendingAction()\n    }\n    setShowPastAppointmentModal(false)\n    setPendingAction(null)\n  }\n\n  const showManualPaymentButton =\n    appointment?.paymentStatus !== PAYMENT_STATUS_OPTIONS.PAID && appointment?.amountCents > 0\n\n  let clientPhone = formatPhone(client?.phone)\n  if (clientPhone) {\n    clientPhone = clientPhone.startsWith(\"+1\") || clientPhone.startsWith(\"1\") ? clientPhone : \"+1 \" + clientPhone\n  }\n\n  return (\n    <div className={fetching ? \"pointer-events-none opacity-25\" : \"\"}>\n      {appointment && <AppointmentStatus />}\n\n      {showManualPaymentButton && <ManualPaymentInvoiceSection />}\n\n      <ClientInfo />\n\n      {practice.clientNotesEnabled && client && appointment && (\n        <div className=\"mb-6 flex w-full justify-end\">\n          <Link href={`/portal/clients/${client?.id}#${appointment.instantActionToken}`}>+ Add appointment notes</Link>\n        </div>\n      )}\n\n      <AppointmentDetails />\n\n      <AppointmentReview />\n\n      {appointment && appointment.paymentStatus === \"Paid\" && <AppointmentAdjustments />}\n\n      <ErrorBanner appointmentErrors={appointmentErrors} />\n\n      <AppointmentActions\n        fetching={fetching}\n        onDecline={() => declineAppointment({ appointmentId: appointment.id })}\n        removeAppointmentFromCalendar={onAppointmentCancelled}\n        onAccept={() => acceptAppointment({ appointmentId: appointment.id })}\n        onAppointmentChanged={onAppointmentChanged}\n        onCancel={() => setShowCancelModal(true)}\n        createManualAppointment={createManualAppointment}\n        editManualAppointment={editManualAppointment}\n        onRecurringAppointmentsChanged={onRecurringAppointmentsChanged}\n        resetBookingState={resetBookingState}\n        setShowPackageConfirmModal={setShowPackageConfirmModal}\n        setShowPastAppointmentModal={setShowPastAppointmentModal}\n        setPendingAction={setPendingAction}\n      />\n\n      <ConfirmModals\n        showReschedule={showReschedule}\n        showCancelModal={showCancelModal}\n        showPackageConfirmModal={showPackageConfirmModal}\n        showPastAppointmentModal={showPastAppointmentModal}\n        onRescheduleSuccess={onRescheduleSuccess}\n        onCancelSuccess={handleCancelSuccess}\n        hideRescheduleModal={() => setShowReschedule(false)}\n        hideCancelModal={() => setShowCancelModal(false)}\n        hidePackageConfirmModal={() => setShowPackageConfirmModal(false)}\n        hidePastAppointmentModal={() => {\n          setShowPastAppointmentModal(false)\n          setPendingAction(null)\n        }}\n        onPackageConfirm={handlePackageConfirm}\n        onPastAppointmentConfirm={handlePastAppointmentConfirm}\n        practitionerNote={practitionerNote}\n        setPractitionerNote={setPractitionerNote}\n        cancelRecurringSeries={cancelRecurringSeries}\n        setCancelRecurringSeries={setCancelRecurringSeries}\n      />\n    </div>\n  )\n}\n\nexport default ClientEventForm\n","import dayjs from \"dayjs\"\nimport React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { UPSERT_PERSONAL_EVENT } from \"../../../utils/mutations\"\nimport { Button } from \"../../shared/Buttons\"\nimport DatePicker from \"../../shared/DatePicker\"\nimport { CheckBox, Input, Label, TimePicker } from \"../../shared/Inputs\"\nimport { AnimatedModal } from \"../../shared/Modal\"\n\nconst DELETE_PERSONAL_EVENT = `\n  mutation DeletePersonalEvent ($id: ID!) {\n    deletePersonalEvent (id: $id) {\n      result\n      errors\n    }\n  }\n`\n\nconst combineDateAndTime = (date, time) => {\n  const tempDate = new Date(date)\n  tempDate.setHours(parseInt(time.split(\":\")[0]), parseInt(time.split(\":\")[1]), 0)\n  return dayjs(tempDate).format(\"YYYY-MM-DDTHH:mm:ssZ\")\n}\n\nexport default function PersonalEventForm({ onCreate, onDelete, personalEvent, clickedTime }) {\n  const [name, setName] = useState(personalEvent?.title || \"\")\n  const [startDate, setStartDate] = useState(new Date())\n  const [endDate, setEndDate] = useState(new Date())\n  const [startTime, setStartTime] = useState(\"10:00\")\n  const [endTime, setEndTime] = useState(\"11:00\")\n  const [allDay, setAllDay] = useState(personalEvent?.allDay || false)\n  const [showCancelModal, setShowCancelModal] = useState(false)\n  const [errors, setErrors] = useState([])\n  const [, upsertPersonalEvent] = useMutation(UPSERT_PERSONAL_EVENT)\n  const [, deletePersonalEvent] = useMutation(DELETE_PERSONAL_EVENT)\n\n  useEffect(() => {\n    let newStartDate, newEndDate\n\n    if (personalEvent) {\n      newStartDate = new Date(personalEvent.start)\n      newEndDate = new Date(personalEvent.allDay ? dayjs(personalEvent.end).subtract(1, \"day\") : personalEvent.end)\n    } else if (clickedTime) {\n      newStartDate = new Date(clickedTime)\n      newEndDate = new Date(clickedTime)\n      newEndDate.setHours(newEndDate.getHours() + 1)\n    } else {\n      newStartDate = new Date()\n      newEndDate = new Date()\n      newEndDate.setHours(newEndDate.getHours() + 1)\n    }\n\n    setStartDate(newStartDate)\n    setEndDate(newEndDate)\n    setStartTime(dayjs(newStartDate).format(\"HH:mm\"))\n    setEndTime(dayjs(newEndDate).format(\"HH:mm\"))\n    setName(personalEvent?.title || \"\")\n    setAllDay(personalEvent?.allDay || false)\n  }, [personalEvent, clickedTime])\n\n  const personalEventId = personalEvent ? Number(personalEvent.id.split(\"-\").slice(-1)[0]) : undefined\n\n  return (\n    <div className=\"relative\">\n      <div className=\"mb-4 flex flex-col\">\n        <Input\n          id=\"event-name\"\n          value={name}\n          placeholder=\"Event name (optional)\"\n          onChange={(event) => {\n            setName(event.target.value)\n          }}\n        />\n        <div className=\"mt-2\">\n          <CheckBox\n            id=\"all-day-checkbox\"\n            label=\"All-Day\"\n            name=\"All-Day\"\n            checked={allDay}\n            onChange={() => {\n              setAllDay(!allDay)\n            }}\n          />\n        </div>\n      </div>\n      <div className=\"flex flex-row justify-between gap-4\">\n        <div className=\"mb-4 flex w-1/2 flex-col\">\n          <Label>Start date</Label>\n          <DatePicker className=\"w-full\" selected={startDate} onChange={(date) => setStartDate(date)} />\n        </div>\n        <div className=\"flex  w-1/2 flex-col\">\n          <Label>End date</Label>\n          <DatePicker className=\"w-full\" selected={endDate} onChange={(date) => setEndDate(date)} minDate={startDate} />\n        </div>\n      </div>\n      {!allDay && (\n        <div className=\"flex flex-row justify-between gap-4\">\n          <div className=\"w-1/2\">\n            <Label htmlFor=\"personal-event-start-time\">Start time</Label>\n            <TimePicker\n              id=\"personal-event-start-time\"\n              value={startTime}\n              valueFormat=\"H:mm\"\n              showFifteenIncrements={true}\n              onChange={(e) => setStartTime(e.target.value)}\n            />\n          </div>\n          <div className=\"w-1/2\">\n            <Label htmlFor=\"personal-event-end-time\">End time</Label>\n            <TimePicker\n              id=\"personal-event-end-time\"\n              value={endTime}\n              valueFormat=\"H:mm\"\n              showFifteenIncrements={true}\n              onChange={(e) => setEndTime(e.target.value)}\n            />\n          </div>\n        </div>\n      )}\n\n      {errors.length > 0 && (\n        <div className=\"mb-4 rounded p-3 text-red\">\n          <ul className=\"list-disc pl-5\">\n            {errors.map((error, index) => (\n              <li key={index}>{error}</li>\n            ))}\n          </ul>\n        </div>\n      )}\n\n      <div className=\"mt-10 flex w-full items-end justify-end gap-4 border-t border-gray-light py-4\">\n        {personalEvent && (\n          <Button className=\"sm:w-full\" type=\"warning\" onClick={() => setShowCancelModal(true)}>\n            Cancel Event\n          </Button>\n        )}\n        <Button\n          type=\"primary\"\n          className=\"sm:w-full\"\n          onClick={() => {\n            const variables = {\n              name,\n              allDay,\n              startsAt: combineDateAndTime(startDate, startTime),\n              endsAt: combineDateAndTime(endDate, endTime),\n              timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone\n            }\n            if (personalEvent) {\n              variables.id = personalEventId\n            }\n            setErrors([])\n            upsertPersonalEvent(variables).then((result) => {\n              if (result.error) {\n                console.error(result.error)\n                setErrors([\"An unexpected error occurred. Please try again.\"])\n              } else if (result.data.upsertPersonalEvent.errors?.length > 0) {\n                setErrors(result.data.upsertPersonalEvent.errors)\n              } else {\n                onCreate(result.data.upsertPersonalEvent.personalEvent)\n              }\n            })\n          }}>\n          Save\n        </Button>\n      </div>\n      <AnimatedModal\n        visible={showCancelModal}\n        hideModal={() => setShowCancelModal(false)}\n        header=\"Cancel Event\"\n        showFooter={true}\n        cancelButtonCopy=\"Go back\"\n        actionButtonCopy=\"Cancel\"\n        actionButtonType=\"destructive\"\n        onSave={() => {\n          deletePersonalEvent({ id: personalEventId }).then((response) => {\n            if (response.data.deletePersonalEvent?.result === \"success\") {\n              setShowCancelModal(false)\n              onDelete(personalEventId)\n            } else {\n              console.error(response)\n            }\n          })\n        }}>\n        <p>Are you sure you want to cancel this personal event?</p>\n      </AnimatedModal>\n    </div>\n  )\n}\n","import React from \"react\"\n\nimport { useCalendarFlyout } from \"../../../contexts/CalendarFlyoutContext\"\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport BookableEventForm from \"../../../pages/BookableEvents/BookableEventForm\"\nimport BookableEventRegistrants from \"../../../pages/BookableEvents/BookableEventRegistrants\"\nimport { useBookableEvents } from \"../../../pages/BookableEvents/BookableEventsContext\"\nimport { BookableEventTypesProvider } from \"../../../pages/BookableEventTypes/BookableEventTypesContext\"\nimport { ToggleButtonGroup } from \"../../shared/Inputs\"\nimport { Flyout } from \"../../shared/Layout\"\nimport { RadioWithLabel } from \"../../shared/RadioButtons\"\n\nimport CalendarEvent from \"./CalendarEvent\"\nimport ClientEventForm from \"./ClientEventForm\"\nimport PersonalEventForm from \"./PersonalEventForm\"\n\nexport default function AppointmentFlyout({\n  personalEvent: selectedPersonalEvent,\n  calendarEvent: selectedCalendarEvent,\n  clickedTime,\n  onAppointmentChanged,\n  onCreatePersonal,\n  onDeletePersonal,\n  onRescheduleSuccess,\n  onAppointmentCancelled,\n  onRecurringAppointmentsChanged,\n  onBookableEventChanged,\n  onDeleteBookableEvent,\n  visible,\n  closeFlyout\n}) {\n  const { appointment } = useManualBooking()\n  const { eventType, setEventType } = useCalendarFlyout()\n  const { bookableEvent, bookableEventTab, setBookableEventTab } = useBookableEvents()\n  const { practice } = usePractice()\n\n  const sidebarHeader = () => {\n    if (selectedCalendarEvent) return selectedCalendarEvent.title\n\n    if (eventType === \"personal\") {\n      return selectedPersonalEvent ? \"Edit personal event\" : \"Create personal event\"\n    }\n\n    if (eventType === \"bookable\") {\n      return bookableEvent?.id ? \"Edit class/event\" : \"Create class/event\"\n    }\n\n    if (!appointment) return \"Create appointment\"\n\n    let upcoming = false\n    let pending = false\n\n    if (appointment) {\n      upcoming = new Date(appointment.startsAt) >= new Date()\n      pending = appointment.state === \"pending\"\n    } else if (selectedPersonalEvent) {\n      upcoming = new Date(selectedPersonalEvent.startDate) >= new Date()\n    }\n\n    if (pending && upcoming) return \"New appointment request\"\n    if (upcoming) return \"Upcoming appointment\"\n    return \"Past appointment\"\n  }\n\n  const handlePersonalEventCreate = (personalEvent) => {\n    setEventType(\"appointment\")\n    onCreatePersonal(personalEvent)\n  }\n\n  const handleCloseFlyout = () => {\n    closeFlyout()\n  }\n  const showRadioButtons = !appointment && !selectedPersonalEvent && !selectedCalendarEvent && !bookableEvent?.id\n\n  return (\n    <Flyout header={sidebarHeader()} visible={visible} closeFlyout={handleCloseFlyout}>\n      <div className=\"relative\">\n        {showRadioButtons && (\n          <>\n            <div className=\"mb-4 flex flex-row gap-4\">\n              <RadioWithLabel\n                value=\"client\"\n                name=\"event-type\"\n                label=\"Client\"\n                checked={eventType === \"client\"}\n                onChange={(e) => setEventType(e.target.value)}\n              />\n              <RadioWithLabel\n                value=\"personal\"\n                name=\"event-type\"\n                label=\"Personal\"\n                checked={eventType === \"personal\"}\n                onChange={(e) => setEventType(e.target.value)}\n              />\n              {practice?.bookableEventsEnabled && (\n                <RadioWithLabel\n                  value=\"bookable\"\n                  name=\"event-type\"\n                  label=\"Class/Event\"\n                  checked={eventType === \"bookable\"}\n                  onChange={(e) => setEventType(e.target.value)}\n                />\n              )}\n            </div>\n          </>\n        )}\n\n        {eventType === \"personal\" ? (\n          <PersonalEventForm\n            onCreate={handlePersonalEventCreate}\n            onDelete={onDeletePersonal}\n            personalEvent={selectedPersonalEvent}\n            clickedTime={clickedTime}\n          />\n        ) : eventType === \"client\" ? (\n          <ClientEventForm\n            onAppointmentChanged={onAppointmentChanged}\n            onRescheduleSuccess={onRescheduleSuccess}\n            onAppointmentCancelled={onAppointmentCancelled}\n            onRecurringAppointmentsChanged={onRecurringAppointmentsChanged}\n          />\n        ) : eventType === \"bookable\" ? (\n          <BookableEventTypesProvider>\n            {bookableEvent?.id && (\n              <>\n                <ToggleButtonGroup\n                  className=\"mb-4\"\n                  value={bookableEventTab}\n                  onChange={(value) => setBookableEventTab(value)}\n                  options={[\n                    { label: \"Details\", value: \"details\" },\n                    { label: \"Registrants\", value: \"registrants\" }\n                  ]}\n                />\n              </>\n            )}\n            {bookableEventTab === \"details\" ? (\n              <BookableEventForm\n                onBookableEventChanged={onBookableEventChanged}\n                onDeleteBookableEvent={onDeleteBookableEvent}\n              />\n            ) : bookableEventTab === \"registrants\" ? (\n              <BookableEventRegistrants />\n            ) : null}\n          </BookableEventTypesProvider>\n        ) : eventType === \"calendar\" ? (\n          <CalendarEvent calendarEvent={selectedCalendarEvent} />\n        ) : null}\n      </div>\n    </Flyout>\n  )\n}\n","import dayGridPlugin from \"@fullcalendar/daygrid\"\nimport interactionPlugin from \"@fullcalendar/interaction\"\nimport FullCalendar from \"@fullcalendar/react\"\nimport timeGridPlugin from \"@fullcalendar/timegrid\"\nimport dayjs from \"dayjs\"\nimport React, { useRef, useEffect, useState } from \"react\"\nimport LoadingBar from \"react-top-loading-bar\"\n\nimport { CalendarFlyoutProvider } from \"../../../contexts/CalendarFlyoutContext\"\nimport { FeatureFlagProvider } from \"../../../contexts/FeatureFlagContext\"\nimport { ManualBookingProvider } from \"../../../contexts/ManualBookingContext\"\nimport { PracticeProvider } from \"../../../contexts/PracticeContext\"\nimport { ProCalendarProvider, useProCalendar } from \"../../../contexts/ProCalendarContext\"\nimport { BookableEventsProvider } from \"../../../pages/BookableEvents/BookableEventsContext\"\nimport DefaultProvider from \"../../../providers/DefaultProvider\"\nimport { handleDayHeaderContent, renderEventContent } from \"../../../utils/calendarUtils\"\nimport AcceptTermsModal from \"../../shared/AcceptTermsModal\"\nimport ConfirmRescheduleModal from \"../../shared/ConfirmRescheduleModal\"\n\nimport AppointmentFlyout from \"./AppointmentFlyout\"\n\nconst initialIsMobile = () => window.innerWidth < 768\n\nconst CalendarComponent = () => {\n  const {\n    calendarEvents,\n    isLoading,\n    handleEventClick,\n    handleDateClick,\n    handleDragReschedule,\n    isFlyoutVisible,\n    selectedPersonalEvent,\n    selectedExternalEvent,\n    closeFlyout,\n    calendarData,\n    selectedDateTime,\n    handleCreatePersonalEvent,\n    handleDeletePersonalEvent,\n    handleAppointmentChange,\n    handleRecurringAppointmentsChange,\n    handleAppointmentCancellation,\n    handleRescheduleSuccess,\n    showRescheduleConfirm,\n    hideRescheduleConfirm,\n    handleCreateAppointmentButtonClick,\n    handleDatesSet,\n    handleBookableEventChange,\n    handleDeleteBookableEvent\n  } = useProCalendar()\n\n  const [isMobile, setIsMobile] = useState(initialIsMobile())\n  const loadingBarRef = useRef(null)\n\n  useEffect(() => {\n    const handleResize = () => setIsMobile(window.innerWidth < 768)\n    window.addEventListener(\"resize\", handleResize)\n    return () => window.removeEventListener(\"resize\", handleResize)\n  }, [])\n\n  useEffect(() => {\n    if (isLoading) {\n      loadingBarRef.current.continuousStart()\n    } else {\n      loadingBarRef.current.complete()\n    }\n  }, [isLoading])\n\n  return (\n    <>\n      <LoadingBar color={\"rgb(var(--color-teal))\"} height={3} ref={loadingBarRef} />\n      <FullCalendar\n        plugins={[timeGridPlugin, dayGridPlugin, interactionPlugin]}\n        initialView={isMobile ? \"timeGridDay\" : \"timeGridWeek\"}\n        headerToolbar={{\n          left: isMobile ? \"prev,title,next\" : \"today prev,next,title timeGridDay,timeGridWeek,dayGridMonth\",\n          center: \"\",\n          right: \"createAppointment\"\n        }}\n        customButtons={{\n          createAppointment: {\n            text: \"Create appointment\",\n            click: handleCreateAppointmentButtonClick\n          }\n        }}\n        datesSet={handleDatesSet}\n        editable={true}\n        events={calendarEvents}\n        eventContent={renderEventContent}\n        eventClick={handleEventClick}\n        dateClick={handleDateClick}\n        eventDrop={handleDragReschedule}\n        eventResize={handleDragReschedule}\n        views={{\n          timeGridWeek: {\n            titleFormat: { year: \"numeric\", month: \"long\" },\n            dayHeaderContent: handleDayHeaderContent\n          },\n          timeGridDay: {\n            dayHeaderContent: handleDayHeaderContent\n          }\n        }}\n        slotDuration=\"00:15\"\n        slotLabelInterval=\"01:00\"\n        nowIndicator={true}\n        contentHeight={isMobile ? 200 : 1600}\n        expandRows={!isMobile}\n        slotMinTime={\"00:00:00\"}\n        scrollTime={dayjs().format(\"HH:mm:ss\") || \"07:00:00\"}\n      />\n\n      <AppointmentFlyout\n        personalEvent={selectedPersonalEvent}\n        calendarEvent={selectedExternalEvent}\n        clickedTime={selectedDateTime}\n        onAppointmentChanged={handleAppointmentChange}\n        onCreatePersonal={handleCreatePersonalEvent}\n        onDeletePersonal={handleDeletePersonalEvent}\n        onRescheduleSuccess={handleRescheduleSuccess}\n        onAppointmentCancelled={handleAppointmentCancellation}\n        onRecurringAppointmentsChanged={handleRecurringAppointmentsChange}\n        visible={isFlyoutVisible}\n        closeFlyout={closeFlyout}\n        onBookableEventChanged={handleBookableEventChange}\n        onDeleteBookableEvent={handleDeleteBookableEvent}\n      />\n\n      {showRescheduleConfirm && (\n        <ConfirmRescheduleModal\n          showReschedule={showRescheduleConfirm}\n          onRescheduleSuccess={handleRescheduleSuccess}\n          hideModal={hideRescheduleConfirm}\n        />\n      )}\n\n      {calendarData?.currentUser?.practice && (\n        <AcceptTermsModal showModal={calendarData.currentUser.practice.showTermsModal} />\n      )}\n    </>\n  )\n}\n\nconst ProCalendar = ({ featureFlags }) => (\n  <DefaultProvider>\n    <FeatureFlagProvider flags={featureFlags}>\n      <PracticeProvider>\n        <ManualBookingProvider>\n          <BookableEventsProvider>\n            <CalendarFlyoutProvider>\n              <ProCalendarProvider>\n                <CalendarComponent />\n              </ProCalendarProvider>\n            </CalendarFlyoutProvider>\n          </BookableEventsProvider>\n        </ManualBookingProvider>\n      </PracticeProvider>\n    </FeatureFlagProvider>\n  </DefaultProvider>\n)\n\nexport default ProCalendar\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst SEND_INTAKE_FORM_MUTATION = `\n  mutation SendIntakeForm($clientId: ID!) {\n    sendIntakeForm(clientId: $clientId) {\n      result\n      errors\n    }\n  }\n`\n\nconst SendIntakeFormButton = ({ clientId, intakeLastSentAt }) => {\n  const [{ fetching }, sendIntakeForm] = useMutation(SEND_INTAKE_FORM_MUTATION)\n  const [sentForm, setSentForm] = useState(false)\n\n  const { showToast } = useToast()\n\n  return (\n    <div className=\"flex flex-col gap-1\">\n      <Button\n        className=\"w-fit\"\n        disabled={fetching}\n        onClick={() => {\n          sendIntakeForm({ clientId }).then((result) => {\n            if (result.error) {\n              console.error(result.error) // eslint-disable-line no-console\n              showToast({ content: \"Error sending intake form\", type: \"error\" })\n            } else if (result.data.sendIntakeForm.result === \"error\") {\n              showToast({ content: result.data.sendIntakeForm.errors.join(\", \"), type: \"error\" })\n            } else if (result.data.sendIntakeForm.result === \"success\") {\n              showToast(\"Intake form sent 🎉\")\n              setSentForm(true)\n            }\n          })\n        }}>\n        Send intake form\n      </Button>\n      {(intakeLastSentAt || sentForm) && (\n        <Typography variant=\"micro\">Last sent {dayjs(sentForm ? new Date() : intakeLastSentAt).fromNow()}</Typography>\n      )}\n    </div>\n  )\n}\n\nexport default SendIntakeFormButton\n","import React from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { Link } from \"../../components/shared/Links\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\n\nimport SendIntakeFormButton from \"./SendIntakeFormButton\"\n\nconst CLIENT_HAS_INTAKE_FORM_QUERY = `\n  query IntakeForm($clientId: ID!) {\n    client(clientId: $clientId) {\n      id\n      intakeFormSubmitted\n      intakeLastSentAt\n    }\n  }\n`\n\nconst IntakeFormSection = ({ clientId }) => {\n  const [{ data, fetching }] = useQuery({\n    query: CLIENT_HAS_INTAKE_FORM_QUERY,\n    variables: { clientId },\n    requestPolicy: \"network-only\"\n  })\n\n  if (fetching) return <LoadingSpinner />\n\n  const hasIntakeForm = data?.client?.intakeFormSubmitted\n\n  return (\n    <div>\n      {hasIntakeForm ? (\n        <Link href={`/portal/clients/${clientId}/intake_form`}>View intake form</Link>\n      ) : (\n        <SendIntakeFormButton clientId={clientId} intakeLastSentAt={data?.client?.intakeLastSentAt} />\n      )}\n    </div>\n  )\n}\n\nexport default IntakeFormSection\n","import React, { useState } from \"react\"\n\nimport PaymentProviderCardForm from \"../../components/payments/PaymentProviderCardForm\"\nimport { usePaymentProvider } from \"../../components/payments/PaymentProviderWrapper\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst AddCreditCardModal = ({ headerLabel, open, closeModal, practice, onSave }) => {\n  const [loading, setLoading] = useState(false)\n  const { showToast } = useToast()\n\n  const { handleCardSavedOnProvider } = usePaymentProvider()\n\n  const handleCardSaved = async () => {\n    const showErrorAndClose = (message) => {\n      showToast({ content: `There was an error: ${message}`, type: \"error\" })\n      setLoading(false)\n      closeModal()\n    }\n\n    setLoading(true)\n\n    const paymentProviderResult = await handleCardSavedOnProvider()\n    if (paymentProviderResult.error) {\n      showErrorAndClose(paymentProviderResult.error || \"An error occurred\")\n      return\n    }\n\n    setLoading(false)\n    showToast({ content: \"Card saved successfully\", type: \"success\" })\n    closeModal()\n    onSave()\n  }\n\n  return (\n    <AnimatedModal\n      visible={open}\n      hideModal={closeModal}\n      header={headerLabel}\n      showFooter={true}\n      onSave={handleCardSaved}\n      saveDisabled={loading}>\n      <div className=\"mt-4\">\n        <Typography variant=\"h5\" className=\"mb-4\">\n          New Credit card\n        </Typography>\n        <PaymentProviderCardForm practice={practice} />\n      </div>\n    </AnimatedModal>\n  )\n}\n\nexport default AddCreditCardModal\n","import React from \"react\"\n\nimport { Divider } from \"../../shared/Layout\"\nimport Typography from \"../../shared/Typography\"\n\nexport default function AppointmentSummaryRow({ appointment, hideDivider }) {\n  const startsAtDate = new Date(appointment.startsAt)\n  const endsAtDate = new Date(appointment.endsAt)\n  const duration = (endsAtDate - startsAtDate) / 60000\n\n  return (\n    <div className=\"py-1\">\n      <div className=\"flex flex-row sm:flex-col\">\n        <div className=\"flex w-full flex-col\">\n          <Typography variant=\"small\" className=\"mb-1 text-gray-dark\">\n            {appointment.service.name}\n          </Typography>\n          <Typography variant=\"small\" className=\"mb-1 text-gray-dark\">\n            <span>{duration} minutes</span> <span>·</span> <span>{appointment.location.shortSingleLine}</span>\n          </Typography>\n          {!hideDivider && <Divider className=\"mt-6\" />}\n        </div>\n      </div>\n    </div>\n  )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { Label } from \"../../shared/Inputs\"\nimport { Link } from \"../../shared/Links\"\nimport Typography from \"../../shared/Typography\"\n\nimport AppointmentSummaryRow from \"./AppointmentSummaryRow\"\n\nconst PAST_APPOINTMENTS_QUERY = `\n  query PastAppointments($clientId: ID, $userId: ID){\n    pastAppointments(clientId: $clientId, userId: $userId) {\n      id\n      isVirtual\n      startsAt\n      endsAt\n      amountCents\n      timeZone\n      instantActionToken\n      isReviewed\n      state\n      hasEndorsements\n      hasTextReview\n      fullTotal\n      user {\n        id\n        name\n        phone\n        email\n      }\n      client {\n        id\n        firstName\n        userId\n        email\n        phone\n      }\n      practice {\n        id\n        isStripeApproved\n        user {\n          id\n          name\n          profilePhotos {\n            xLarge {\n              jpeg\n              webp\n            }\n            large {\n              jpeg\n              webp\n            }\n            medium {\n              jpeg\n              webp\n            }\n            small {\n              jpeg\n              webp\n            }\n            original {\n              jpeg\n              webp\n            }\n          }\n        }\n      }\n      service {\n        id\n        name\n        timeLength\n        description\n        photoUrl\n        parent {\n          id\n          name\n          description\n          photoUrl\n          timeLength\n        }\n        variations {\n          id\n          timeLength\n          amountCents\n        }\n      }\n      location {\n        id\n        name\n        latitude\n        longitude\n        singleLine\n        shortSingleLine\n        virtualLink\n        virtualInstructions\n      }\n      review {\n        id\n        review\n        rating\n        endorsedSkillIds\n        videoUrl\n        skillsForEndorsement {\n          id\n          name\n        }\n      }\n    }\n  }\n`\n\nexport default function AppointmentHistory({ client, appointment, limit }) {\n  const [{ data, fetching }] = useQuery({\n    query: PAST_APPOINTMENTS_QUERY,\n    variables: { clientId: client?.id },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  let pastAppointments = data?.pastAppointments\n  if (pastAppointments && limit) {\n    pastAppointments = pastAppointments.slice(0, limit)\n  }\n\n  return (\n    <div>\n      <Label>Past appointments</Label>\n      {fetching ? (\n        <img className=\"loading\" src=\"/loading-spinner.png\" width=\"40px\" />\n      ) : (\n        <div>\n          {pastAppointments && pastAppointments.length > 0 ? (\n            <div>\n              {pastAppointments.map((pastAppointment, index) => {\n                const isLastItem = index === pastAppointments.length - 1\n                if (!appointment || pastAppointment.id !== appointment?.id) {\n                  return (\n                    <div key={index} className=\"pt-0\">\n                      <p>{dayjs(pastAppointment.startsAt).format(\"dddd, MMMM DD, h:mm a\")}</p>\n                      <AppointmentSummaryRow appointment={pastAppointment} hideDivider={isLastItem} />\n                    </div>\n                  )\n                }\n                return null\n              })}\n              {limit && data.pastAppointments.length > limit && (\n                <div className=\"mt-2 flex justify-end\">\n                  <Link href={`/portal/clients/${client.id}`}>\n                    View all {data.pastAppointments.length} past appointments\n                  </Link>\n                </div>\n              )}\n            </div>\n          ) : (\n            <Typography variant=\"body\">None</Typography>\n          )}\n        </div>\n      )}\n    </div>\n  )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { Label } from \"../../shared/Inputs\"\nimport { Link } from \"../../shared/Links\"\nimport Typography from \"../../shared/Typography\"\n\nimport AppointmentSummaryRow from \"./AppointmentSummaryRow\"\n\nconst UPCOMING_APPOINTMENTS_QUERY = `\n  query UpcomingAppointments($clientId: ID, $userId: ID){\n    upcomingAppointments(clientId: $clientId, userId: $userId) {\n      id\n      isVirtual\n      startsAt\n      endsAt\n      amountCents\n      timeZone\n      instantActionToken\n      isReviewed\n      state\n      hasEndorsements\n      hasTextReview\n      user {\n        id\n        name\n        phone\n        email\n      }\n      client {\n        id\n        firstName\n        userId\n        email\n        phone\n      }\n      practice {\n        id\n        isStripeApproved\n        user {\n          id\n          name\n          profilePhotos {\n            xLarge {\n              jpeg\n              webp\n            }\n            large {\n              jpeg\n              webp\n            }\n            medium {\n              jpeg\n              webp\n            }\n            small {\n              jpeg\n              webp\n            }\n            original {\n              jpeg\n              webp\n            }\n          }\n        }\n      }\n      service {\n        id\n        name\n        timeLength\n        description\n        photoUrl\n        parent {\n          id\n          name\n          description\n          photoUrl\n          timeLength\n        }\n        variations {\n          id\n          timeLength\n          amountCents\n        }\n      }\n      location {\n        id\n        name\n        latitude\n        longitude\n        singleLine\n        virtualLink\n        virtualInstructions\n        shortSingleLine\n      }\n      review {\n        id\n        review\n        rating\n        endorsedSkillIds\n        videoUrl\n        skillsForEndorsement {\n          id\n          name\n        }\n      }\n    }\n  }\n`\n\nexport default function UpcomingAppointments({ client }) {\n  const [{ data, fetching, error }] = useQuery({\n    query: UPCOMING_APPOINTMENTS_QUERY,\n    variables: { clientId: client.id },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  const upcomingAppointments = data?.upcomingAppointments\n\n  return (\n    <div>\n      <Label>Upcoming appointments</Label>\n      {error ? (\n        <div>Error fetching upcoming appointments</div>\n      ) : fetching ? (\n        <img className=\"loading\" src=\"/loading-spinner.png\" width=\"40px\" />\n      ) : (\n        <div>\n          {upcomingAppointments.length > 0 ? (\n            <div>\n              {upcomingAppointments.map((upcomingAppointment, index) => (\n                <div key={index}>\n                  <p>{dayjs(upcomingAppointment.startsAt).format(\"dddd, MMMM DD, h:mm a\")}</p>\n                  <AppointmentSummaryRow\n                    appointment={upcomingAppointment}\n                    hideDivider={index === upcomingAppointments.length - 1}\n                  />\n                </div>\n              ))}\n            </div>\n          ) : (\n            <div className=\"flex flex-row items-center justify-between\">\n              <Typography variant=\"body\">None</Typography>\n              <Link href={`/portal/calendar?clientId=${client.id}#create-appointment`}>+ New appointment</Link>\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  )\n}\n","import React, { useEffect, useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport IntakeFormSection from \"../../pages/IntakeForms/IntakeFormSection\"\nimport AddCreditCardModal from \"../../pages/ManagePaymentMethods/AddCreditCardModal\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../utils/mutations\"\nimport { capitalize, formatPhone } from \"../../utils/utils\"\nimport PaymentProviderWrapper from \"../payments/PaymentProviderWrapper\"\nimport AppointmentHistory from \"../pro_portal/calendar/AppointmentHistory\"\nimport UpcomingAppointments from \"../pro_portal/calendar/UpcomingAppointments\"\n\nimport { Button } from \"./Buttons\"\nimport ClientNotes from \"./ClientNotes\"\nimport { Label } from \"./Inputs\"\nimport { Flyout, Divider } from \"./Layout\"\nimport { ButtonLink } from \"./Links\"\nimport Typography from \"./Typography\"\n\nexport default function ClientFlyout({ client, closeFlyout, visible }) {\n  const [paymentMethod, setPaymentMethod] = useState(client?.defaultPaymentMethod)\n\n  const [creditCardModalOpen, setCreditCardModalOpen] = React.useState(false)\n\n  const { practice } = usePractice()\n\n  const [{ data, fetching }, reexecuteQuery] = useQuery({\n    query: DEFAULT_PAYMENT_METHOD_QUERY,\n    variables: {\n      clientId: client?.id,\n      practiceId: practice.id\n    },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  useEffect(() => {\n    if (client) {\n      setPaymentMethod(null)\n    }\n  }, [client])\n\n  useEffect(() => {\n    if (data?.defaultPaymentMethodPractice) {\n      setPaymentMethod(data.defaultPaymentMethodPractice)\n    }\n  }, [data])\n\n  return (\n    <Flyout\n      header=\"Client Details\"\n      visible={visible}\n      closeFlyout={closeFlyout}\n      footer={\n        <div className=\"flex items-center justify-end gap-4\">\n          <Button type=\"tertiary\" onClick={closeFlyout}>\n            Close\n          </Button>\n          <ButtonLink href={`/portal/clients/${client?.id}`}>View</ButtonLink>\n        </div>\n      }>\n      {client && (\n        <div>\n          <div className=\"flex items-center justify-between\">\n            <div>\n              <Label className=\"mb-1\">Full name</Label>\n              <div>{client.name ? client.name : client.firstName}</div>\n            </div>\n            {practice.clientNotesEnabled && <IntakeFormSection clientId={client.id} showData={false} />}\n          </div>\n\n          {formatPhone(client.phone) && (\n            <>\n              <Divider />\n              <Label className=\"mb-1 mt-6\">Phone</Label>\n              <Typography className=\"mb-6\" variant=\"body\">\n                {formatPhone(client.phone) ? formatPhone(client.phone) : \"\"}\n              </Typography>\n            </>\n          )}\n          {client.email && (\n            <>\n              <Divider />\n              <Label className=\"mb-1 mt-6\">Email</Label>\n              <Typography className=\"mb-6\" variant=\"body\">\n                {client.email}\n              </Typography>\n            </>\n          )}\n\n          <Divider className=\"mb-4\" />\n          {practice.clientNotesEnabled && (\n            <>\n              <ClientNotes client={client} />\n              <Divider className=\"mb-4\" />\n            </>\n          )}\n\n          <Label className=\"mb-1 mt-6\">Card on file</Label>\n\n          {!practice.hasPaymentProvider ? (\n            <a className=\"font-bold text-teal hover:underline\" href={`/portal/settings/banking`}>\n              Click here to connect to a payment provider\n            </a>\n          ) : fetching ? (\n            <img className=\"loading\" src=\"/loading-spinner.png\" width=\"40px\" />\n          ) : paymentMethod ? (\n            <div className=\"flex items-center justify-between\">\n              <Typography variant=\"body\">\n                {capitalize(paymentMethod.brand)} ending in {paymentMethod.last4} • Expires {paymentMethod.expMonth}/\n                {paymentMethod.expYear}\n              </Typography>\n              <button\n                className=\"font-bold text-teal hover:underline\"\n                onClick={() => {\n                  setCreditCardModalOpen(true)\n                }}>\n                Change\n              </button>\n            </div>\n          ) : (\n            <div className=\"flex items-center justify-between\">\n              <Typography variant=\"body\">None</Typography>\n              <button\n                className=\"font-bold text-teal hover:underline\"\n                onClick={() => {\n                  setCreditCardModalOpen(true)\n                }}>\n                Add\n              </button>\n            </div>\n          )}\n\n          {practice.hasPaymentProvider && creditCardModalOpen && (\n            <PaymentProviderWrapper practice={practice} client={client}>\n              <AddCreditCardModal\n                headerLabel={\"Add a credit card\"}\n                open={creditCardModalOpen}\n                closeModal={() => setCreditCardModalOpen(false)}\n                practice={practice}\n                onSave={() => reexecuteQuery()}\n              />\n            </PaymentProviderWrapper>\n          )}\n\n          <Divider className=\"mb-6 mt-4\" />\n          <UpcomingAppointments client={client} />\n          <Divider />\n          <AppointmentHistory client={client} limit={2} />\n        </div>\n      )}\n    </Flyout>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport { formatPhone, isClientValid, validEmail } from \"../../utils/utils\"\n\nimport { Input, Label, InputWithLabel, TextArea } from \"./Inputs\"\nimport { Banner } from \"./Layout\"\nimport { NewModal } from \"./Modal\"\nimport Typography from \"./Typography\"\n\nconst CREATE_CLIENT_MUTATION = `\n  mutation CreateClient($client: ClientInput!) {\n    createClient(client: $client) {\n      result\n      errors\n    }\n  }\n`\n\nexport const modalId = \"create-client-modal\"\n\nconst initialClientInput = {\n  firstName: \"\",\n  lastName: \"\",\n  email: \"\",\n  phone: \"\",\n  notes: \"\"\n}\n\nexport default function CreateClientModal({ close }) {\n  const [errorMessage, setErrorMessage] = useState(\"\")\n\n  const [createClientResult, createClient] = useMutation(CREATE_CLIENT_MUTATION)\n  const [clientInput, setClientInput] = useState(initialClientInput)\n\n  const { practicePhone, practiceEmail } = usePractice()\n\n  let clientPhone = formatPhone(clientInput?.phone?.trim())\n  if (clientPhone) {\n    clientPhone = clientPhone?.startsWith(\"+1\") || clientPhone?.startsWith(\"1\") ? clientPhone : \"+1 \" + clientPhone\n  }\n\n  const handleSave = () => {\n    if (clientInput.email && !validEmail(clientInput.email)) {\n      setErrorMessage(\"Invalid email\")\n      return\n    }\n\n    const invitedClient = {\n      ...clientInput,\n      clientType: \"invited\",\n      invitedFrom: \"web_single_invite\"\n    }\n\n    createClient({ client: invitedClient }).then((result) => {\n      if (result.error || result.data.createClient.errors) {\n        setErrorMessage(`Error creating client: ${result.error || result.data.createClient.errors.join(\", \")}`)\n      } else {\n        setClientInput(initialClientInput)\n        setErrorMessage(\"\")\n        close(true)\n      }\n    })\n  }\n\n  return (\n    <NewModal\n      id={modalId}\n      showFooter={true}\n      fullHeightInMobile={true}\n      header=\"Create client\"\n      saveDisabled={\n        !isClientValid(clientInput, clientPhone, practicePhone, practiceEmail) || createClientResult.fetching\n      }\n      onSave={handleSave}\n      hideModal={() => {\n        setClientInput(initialClientInput)\n        setErrorMessage(\"\")\n        NiceModal.hide(modalId)\n      }}>\n      <div className=\"sm:pb-12\">\n        <Typography variant=\"subtitle\" className=\"mb-2\">\n          Phone is required to create a client.\n        </Typography>\n        <Label className=\"mt-4\">\n          Full name <span className=\"text-red\">*</span>\n        </Label>\n        <div className=\"flex flex-row\">\n          <Input\n            placeholder=\"First\"\n            onChange={(input) => setClientInput({ ...clientInput, firstName: input.target.value })}\n            className=\"relative -mr-1 mb-4 rounded-none rounded-l-lg hover:z-20 focus:z-20\"\n          />\n\n          <Input\n            placeholder=\"Last\"\n            onChange={(input) => setClientInput({ ...clientInput, lastName: input.target.value })}\n            className=\"relative mb-4 rounded-none rounded-r-lg hover:z-20 focus:z-20\"\n          />\n        </div>\n\n        <InputWithLabel\n          label=\"Email\"\n          onChange={(input) => {\n            setClientInput({ ...clientInput, email: input.target.value })\n            if (errorMessage) setErrorMessage(\"\")\n          }}\n          className=\"mb-4\"\n        />\n\n        {clientInput?.email?.trim() === practiceEmail && (\n          <Banner type=\"error\">\n            Cannot use your email for a client. Please add phone for client or use a placeholder email.\n          </Banner>\n        )}\n\n        <InputWithLabel\n          label={\"Phone\"}\n          required\n          onChange={(input) => {\n            setClientInput({ ...clientInput, phone: input.target.value })\n          }}\n          value={clientInput?.phone ? formatPhone(clientInput.phone) : \"\"}\n          className=\"mb-4 w-1/2\"\n        />\n\n        {clientPhone === practicePhone && !!practicePhone && (\n          <Banner type=\"error\">\n            Cannot use your phone number for a client. Please leave blank and add email if client phone is unknown.\n          </Banner>\n        )}\n\n        {errorMessage && <Banner type=\"error\">{errorMessage}</Banner>}\n\n        <div className=\"mt-4\">\n          <Label>Notes</Label>\n          <TextArea\n            onChange={(input) => {\n              setClientInput({ ...clientInput, notes: input.target.value })\n            }}\n          />\n        </div>\n      </div>\n    </NewModal>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { ExportToCsv } from \"export-to-csv\"\nimport React, { useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { PracticeProvider } from \"../../../contexts/PracticeContext\"\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport DefaultProvider from \"../../../providers/DefaultProvider\"\nimport { formatShortDate, formatPhone } from \"../../../utils/utils\"\nimport { Button } from \"../../shared/Buttons\"\nimport ClientFlyout from \"../../shared/ClientFlyout\"\nimport ClientUpload from \"../../shared/ClientUpload\"\nimport CreateClientModal, { modalId } from \"../../shared/CreateClientModal\"\nimport HealMeTable from \"../../shared/HealMeTable\"\nimport { Link } from \"../../shared/Links\"\nimport Typography from \"../../shared/Typography\"\n\nconst CLIENTS_QUERY = `\n  query clientsQuery{\n    clients {\n      id\n      practiceId\n      userId\n      email\n      phone\n      firstName\n      lastName\n      name\n      clientType\n      invitedFrom\n      lastAppointmentDate\n    }\n  }\n`\n\nconst ClientsTable = ({ practice }) => {\n  const [showClientDetail, setShowClientDetail] = useState(false)\n  const [clientToDetail, setClientToDetail] = useState()\n  const [editClient, setEditClient] = useState()\n\n  const [{ data, fetching }, reexecuteQuery] = useQuery({\n    query: CLIENTS_QUERY,\n    requestPolicy: \"network-only\"\n  })\n\n  const showHideClient = (client) => {\n    setShowClientDetail(true)\n    setClientToDetail(client)\n  }\n\n  const { showToast } = useToast()\n\n  const columns = [\n    {\n      accessor: \"name\",\n      Header: \"Full Name\",\n      Cell: (props) => {\n        const preventBooking = !props.cell.row.original.phone && !props.cell.row.original.email\n        return (\n          <div className={preventBooking ? \"pb-6\" : \"\"}>\n            <span>{props.cell.value}</span>\n            {preventBooking && (\n              <Typography variant=\"small\" className=\"absolute mt-2 block text-gray-dark\">\n                You cannot book any sessions for this client until you add an email or phone number.{\" \"}\n                <Link\n                  className=\"font-semibold\"\n                  onClick={() => {\n                    NiceModal.show(\"edit-client-directory\")\n                  }}>\n                  Add now\n                </Link>\n              </Typography>\n            )}\n          </div>\n        )\n      }\n    },\n    {\n      accessor: \"email\",\n      Header: \"Email\"\n    },\n    {\n      accessor: \"phone\",\n      Header: \"Phone\",\n      Cell: (props) => (formatPhone(props.cell.value) ? `${formatPhone(props.cell.value)}` : \"\")\n    },\n    {\n      accessor: \"lastAppointmentDate\",\n      Header: \"Last appt.\"\n    }\n  ]\n\n  const options = {\n    fieldSeparator: \",\",\n    quoteStrings: '\"',\n    decimalSeparator: \".\",\n    showLabels: true,\n    useTextFile: false,\n    useBom: true,\n    filename: \"Heal.me Clients\",\n    headers: [\"First Name\", \"Last Name\", \"Email\", \"Phone\", \"Last Appointment\"]\n  }\n\n  const exportToCSV = () => {\n    const csvExporter = new ExportToCsv(options)\n    const exportable = data.clients.map((client) => ({\n      \"First Name\": client.firstName,\n      \"Last Name\": client.lastName,\n      Email: client.email || \"\",\n      Phone: formatPhone(client.phone) ? formatPhone(client.phone) : \"\",\n      \"Last Appointment\": client.lastAppointmentDate ? formatShortDate(client.lastAppointmentDate) : \"\"\n    }))\n    csvExporter.generateCsv(exportable)\n  }\n\n  const refreshScreen = () => {\n    setShowClientDetail(false)\n    setClientToDetail(null)\n    setEditClient(false)\n    reexecuteQuery()\n  }\n\n  return (\n    <>\n      <div className=\"mb-8 flex justify-between align-bottom sm:mb-4\">\n        <div className=\"flex flex-col\">\n          <Typography as=\"h1\" variant=\"h3\">\n            Clients\n          </Typography>\n          <Typography variant=\"subtitle\">{data?.clients?.length} clients</Typography>\n        </div>\n        <div className=\"flex\">\n          {data?.clients.length > 1 && (\n            <Button type=\"tertiary\" className=\"mr-4 sm:hidden\" size=\"small\" onClick={exportToCSV}>\n              Export\n            </Button>\n          )}\n          <ClientUpload practice={practice} buttonStyle=\"white\" buttonSize=\"small\" className=\"mr-4 sm:hidden\" />\n          <Button\n            type=\"primary\"\n            size=\"small\"\n            floatingInMobile={true}\n            onClick={() => {\n              NiceModal.show(modalId)\n            }}>\n            <span>Create client</span>\n          </Button>\n        </div>\n      </div>\n      {data?.clients && !fetching && (\n        <HealMeTable data={data?.clients} columns={columns} searchType=\"clients\" rowClick={showHideClient} />\n      )}\n\n      <ClientFlyout\n        closeFlyout={() => {\n          setShowClientDetail(false)\n        }}\n        visible={showClientDetail}\n        client={clientToDetail}\n        openToEdit={editClient}\n        refreshClient={refreshScreen}\n        clientDeleted={refreshScreen}\n      />\n\n      <CreateClientModal\n        close={(clientAdded) => {\n          NiceModal.remove(modalId)\n          if (clientAdded) {\n            reexecuteQuery()\n            showToast(\"Client added successfully\")\n          }\n        }}\n      />\n    </>\n  )\n}\n\nexport default function ClientDirectory(props) {\n  return (\n    <DefaultProvider>\n      <PracticeProvider>\n        <ClientsTable {...props} />\n      </PracticeProvider>\n    </DefaultProvider>\n  )\n}\n","import React, { useState, useEffect } from \"react\"\nimport styled from \"styled-components\"\nimport { useMutation } from \"urql\"\n\nconst appStore = require(\"../../../../../public/apple-store.png\")\nconst googlePlaystore = require(\"../../../../../public/google-playstore.png\")\nconst iphone13 = require(\"../../../../../public/iPhone-13.png\")\nconst mobileAppStore = require(\"../../../../assets/images/app-store-badge.png\")\nconst mobileConsumerIphone = require(\"../../../../assets/images/consumer-iphone-mobile.png\")\nconst consumerIphone = require(\"../../../../assets/images/consumer-iphone.png\")\nconst mobileIphone13 = require(\"../../../../assets/images/iphone-screenshot.png\")\nconst mobileGooglePlaystore = require(\"../../../../assets/images/playstore.png\")\n\nconst SEND_TEXT = `\n  mutation DownloadMobileApp($type: String!) {\n    sendText (type: $type) {\n      result\n      errors\n    }\n  }\n`\n\nconst Wrapper = styled.div`\n  height: auto;\n  display: flex;\n  flex-direction: column;\n  margin-top: 32px;\n\n  @media only screen and (min-width: 768px) {\n    flex-direction: row;\n    margin-top: 0;\n    height: 90vh;\n  }\n\n  p {\n    font-size: 16px;\n    font-weight: 400;\n  }\n`\nconst TextWrapper = styled.div`\n  padding-right: 10%;\n  padding-left: 10%;\n  display: block;\n  margin: auto;\n\n  @media only screen and (max-width: 768px) {\n    margin: 0;\n  }\n`\n\nconst Title = styled.div`\n  font-weight: 700;\n  font-size: 36px;\n  color: #0b3954;\n  margin-bottom: 24px;\n\n  @media only screen and (max-width: 768px) {\n    font-weight: 700;\n    font-size: 24px;\n    margin-bottom: 16px;\n  }\n`\n\nconst Subtitle = styled.div`\n  font-weight: 500;\n  font-size: 21px;\n  color: #0b3954;\n  margin-bottom: 16px;\n\n  @media only screen and (max-width: 768px) {\n    font-weight: 700;\n    font-size: 21px;\n    margin-bottom: 24px;\n  }\n`\n\nconst SubHeader = styled.div`\n  font-weight: 700;\n  font-size: 17px;\n  color: #55778a;\n  margin-bottom: 16px;\n  text-transform: uppercase;\n\n  @media only screen and (max-width: 768px) {\n    font-weight: 700;\n    font-size: 15px;\n    margin-bottom: 24px;\n  }\n`\n\nconst Helper = styled.div`\n  font-weight: 400;\n  font-size: 18px;\n  color: #55778a;\n  margin-top: 8px;\n  margin-bottom: 24px;\n\n  @media only screen and (max-width: 768px) {\n    font-weight: 600;\n    font-size: 14px;\n    margin-bottom: 12px;\n  }\n`\n\nconst HelperLink = styled.div`\n  font-weight: 400;\n  font-size: 18px;\n  color: #55778a;\n  margin-top: 8px;\n  margin-bottom: 24px;\n  text-decoration: underline;\n  color: #0d9da4;\n\n  &:hover {\n    cursor: pointer;\n  }\n`\n\nconst IconWrapper = styled.div`\n  display: flex;\n\n  a {\n    height: 100%;\n  }\n`\n\nconst Logo = styled.div`\n  max-width: 48px;\n  max-height: 52px;\n  margin-right: 16px;\n\n  @media only screen and (max-width: 768px) {\n    max-width: 142px;\n    max-height: 40px;\n  }\n`\n\nconst ImageWrapper = styled.div`\n  display: block;\n  margin: auto;\n\n  @media only screen and (max-width: 768px) {\n    margin: 0;\n    margin-top: 50px;\n  }\n`\n\nexport default function DownloadMobileApp({ isPro = true, contextHeader }) {\n  const [, sendText] = useMutation(SEND_TEXT)\n  const [loading, setLoading] = useState(false)\n  const [dimension, updateDimention] = useState({ width: 0, height: 0 })\n\n  const sendTextMessage = () => {\n    setLoading(true)\n    sendText({ type: \"download_mobile_app\" }).then((res) => {\n      if (res.data.sendText.result === \"success\") {\n        setLoading(false)\n      }\n    })\n  }\n\n  useEffect(() => {\n    updateDimention({\n      ...dimension,\n      width: window.innerWidth,\n      height: window.innerHeight\n    })\n  }, [window.innerWidth])\n\n  return (\n    <>\n      {dimension?.width < 768 ? (\n        <Wrapper>\n          <TextWrapper>\n            {contextHeader && <Subtitle>{contextHeader}</Subtitle>}\n            {isPro ? (\n              <div>\n                <Subtitle>Your profile is live!</Subtitle>\n                <Helper>What's next?</Helper>\n                <Subtitle>Get it now and discover over 3000+ trusted wellness practitioners.</Subtitle>\n                <p>Install the practitioner app so you can manage your bookings.</p>\n              </div>\n            ) : (\n              <div>\n                <SubHeader>Next Step</SubHeader>\n                <Subtitle>Download the Heal.me App</Subtitle>\n                <p>Get it now and discover over 3000+ trusted wellness practitioners.</p>\n              </div>\n            )}\n\n            <Helper>Available on iPhone and Android.</Helper>\n            <IconWrapper>\n              <Logo>\n                <a href=\"https://apps.apple.com/app/id1599744549\">\n                  <img src={mobileAppStore} />\n                </a>\n              </Logo>\n              <Logo>\n                <a href=\"https://play.google.com/store/apps/details?id=me.heal.mobile\">\n                  <img src={mobileGooglePlaystore} />\n                </a>\n              </Logo>\n            </IconWrapper>\n          </TextWrapper>\n          <ImageWrapper>{isPro ? <img src={mobileIphone13} /> : <img src={mobileConsumerIphone} />}</ImageWrapper>\n        </Wrapper>\n      ) : (\n        <Wrapper>\n          <TextWrapper>\n            {contextHeader && <Subtitle>{contextHeader}</Subtitle>}\n            <SubHeader>Next Step</SubHeader>\n            <Title>Check your phone.</Title>\n            <Subtitle>We've sent you a text message with a link to download the mobile app.</Subtitle>\n            {isPro ? (\n              <Subtitle>Get it now and start managing your bookings.</Subtitle>\n            ) : (\n              <Subtitle>Get it now and discover over 3000+ trusted wellness practitioners.</Subtitle>\n            )}\n\n            <Helper>Available on iPhone and Android.</Helper>\n            <IconWrapper>\n              <Logo>\n                <img src={appStore} />\n              </Logo>\n              <Logo>\n                <img src={googlePlaystore} />\n              </Logo>\n            </IconWrapper>\n            {isPro ? (\n              <HelperLink onClick={() => sendTextMessage()}>\n                {loading ? \"Sending...\" : \"Didn't get it? Send again.\"}\n              </HelperLink>\n            ) : (\n              <a href=\"/practitioner-search\">Or continue with the web version</a>\n            )}\n          </TextWrapper>\n          <ImageWrapper>{isPro ? <img src={iphone13} /> : <img src={consumerIphone} />}</ImageWrapper>\n        </Wrapper>\n      )}\n    </>\n  )\n}\n","import { APPOINTMENT_QUERY } from \"../components/pro_portal/calendar/appointment_graphql\"\n\nimport { createUrqlClient } from \"./utils\"\n\nconst urqlClient = createUrqlClient({ requestPolicy: \"network-only\" })\n\nexport const fetchAppointment = async (instantActionToken) => {\n  const result = await urqlClient.query(APPOINTMENT_QUERY, { instantActionToken }).toPromise()\n  if (result.data?.tokenAppointment) {\n    result.data.tokenAppointment\n    return result.data.tokenAppointment\n  } else {\n    console.error(\"Error fetching profile status data\")\n    return null\n  }\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { commIntervals } from \"../../../utils/utils\"\nimport { Button } from \"../../shared/Buttons\"\nimport { Select, CheckBox } from \"../../shared/Inputs\"\nimport { Flyout } from \"../../shared/Layout\"\nimport { Divider } from \"../../shared/Layout\"\nimport { UnderlinedLink } from \"../../shared/Links\"\nimport { RadioWithLabel } from \"../../shared/RadioButtons\"\nimport Typography from \"../../shared/Typography\"\n\nconst UPDATE_PAYMENT_SETTINGS = `\n  mutation UpdatePaymentSettings(\n    $requireClientCcToBook: Boolean,\n    $chargeClientCcAtBooking: Boolean,\n    $paymentPastDueEmailEnabled: Boolean,\n    $paymentPastDueTextEnabled: Boolean,\n    $paymentPastDueEmailMinutes: Int,\n    $paymentPastDueTextMinutes: Int,\n  ) {\n    updatePaymentSettings(\n      requireClientCcToBook: $requireClientCcToBook,\n      chargeClientCcAtBooking: $chargeClientCcAtBooking,\n      paymentPastDueEmailEnabled: $paymentPastDueEmailEnabled,\n      paymentPastDueTextEnabled: $paymentPastDueTextEnabled,\n      paymentPastDueEmailMinutes: $paymentPastDueEmailMinutes,\n      paymentPastDueTextMinutes: $paymentPastDueTextMinutes,\n    ) {\n      result\n      error\n    }\n  }\n`\n\nexport default function PaymentSettingsFlyout({\n  hasPaymentProvider,\n  hasOffline,\n  communicationSettings,\n  visible,\n  closeFlyout\n}) {\n  const [{ fetching }, updatePaymentSettings] = useMutation(UPDATE_PAYMENT_SETTINGS)\n\n  const [settings, setSettings] = useState(communicationSettings)\n  const [originalSettings, setOriginalSettings] = useState(communicationSettings)\n\n  const { showToast } = useToast()\n\n  const handleUpdate = (key) => (newValue) => {\n    let update = newValue\n    if (newValue.value) {\n      update = newValue.value\n    }\n    setSettings((prevSettings) => ({ ...prevSettings, [key]: update }))\n  }\n\n  const settingsChanged = JSON.stringify(settings) !== JSON.stringify(originalSettings)\n\n  const handleSettingsUpdate = () => {\n    updatePaymentSettings(settings)\n      .then((result) => {\n        if (result.data?.updatePaymentSettings?.result) {\n          showToast({ content: \"Settings updated successfully.\", timeout: 3000 })\n          setOriginalSettings(settings)\n          closeFlyout()\n        } else {\n          const error =\n            result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n            result.data?.updatePaymentSettings?.error ||\n            \"Please try again later.\"\n\n          showToast({ type: \"error\", content: error })\n        }\n      })\n      .catch((error) => {\n        showToast({ type: \"error\", content: error.message })\n      })\n  }\n\n  return (\n    <Flyout\n      header=\"Payment Settings\"\n      visible={visible}\n      closeFlyout={closeFlyout}\n      footer={\n        <div className=\"flex w-full items-center justify-end\">\n          <div className=\"flex gap-4\">\n            <Button type=\"tertiary\" onClick={closeFlyout}>\n              Close\n            </Button>\n\n            <Button type=\"primary\" onClick={handleSettingsUpdate} disabled={fetching || !settingsChanged}>\n              Save\n            </Button>\n          </div>\n        </div>\n      }>\n      <div className=\"relative\">\n        <Typography variant=\"h5\" className=\"mb-2\">\n          Require credit card when a client books:\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"mb-4\">\n          Booking free services will not require a credit card.\n        </Typography>\n        {hasPaymentProvider ? (\n          <>\n            <div className=\"mb-4 flex flex-row gap-4\">\n              <RadioWithLabel\n                id=\"require-cc-yes\"\n                value={true}\n                name=\"require-cc\"\n                label=\"Yes\"\n                checked={settings.requireClientCcToBook}\n                onChange={() => {\n                  handleUpdate(\"requireClientCcToBook\")(true)\n                  handleUpdate(\"chargeClientCcAtBooking\")(false)\n                }}\n              />\n              <RadioWithLabel\n                value={false}\n                id=\"require-cc-no\"\n                name=\"require-cc\"\n                label=\"No (recommended)\"\n                checked={!settings.requireClientCcToBook}\n                onChange={() => {\n                  handleUpdate(\"requireClientCcToBook\")(false)\n                  handleUpdate(\"chargeClientCcAtBooking\")(false)\n                }}\n              />\n            </div>\n            {hasOffline && (\n              <Typography variant=\"subtitle\" className=\"mb-4\">\n                Your clients will not have the option to pay with another method.\n              </Typography>\n            )}\n          </>\n        ) : (\n          <Typography variant=\"subtitle\" className=\"mb-4 text-red\">\n            Requires a connected Payment Provider account.{\" \"}\n            <UnderlinedLink className=\"ml-2\" href=\"/portal/settings/banking\">\n              Connect Now\n            </UnderlinedLink>\n          </Typography>\n        )}\n\n        <Divider />\n        {settings.requireClientCcToBook && (\n          <>\n            <Typography variant=\"h5\" className=\"mb-4\">\n              Charge credit card when client books:\n            </Typography>\n            <div className=\"mb-4 flex flex-row gap-4\">\n              <RadioWithLabel\n                id=\"charge-cc-yes\"\n                value={true}\n                name=\"charge-cc\"\n                label=\"Yes\"\n                checked={settings.chargeClientCcAtBooking}\n                onChange={() => handleUpdate(\"chargeClientCcAtBooking\")(true)}\n              />\n              <RadioWithLabel\n                id=\"charge-cc-no\"\n                value={false}\n                name=\"charge-cc\"\n                label=\"No (recommended)\"\n                checked={!settings.chargeClientCcAtBooking}\n                onChange={() => handleUpdate(\"chargeClientCcAtBooking\")(false)}\n              />\n            </div>\n            <Divider />\n          </>\n        )}\n\n        <Typography variant=\"h5\" as=\"h3\">\n          Send payment reminders:\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"mb-4 mt-1\">\n          Heal.me will remind your clients if they haven’t paid for an appointment.\n        </Typography>\n        <div className=\"mb-2 flex flex-row flex-wrap items-center\">\n          <CheckBox\n            label=\"Email\"\n            className=\"flex-none font-manrope text-[16px] font-normal leading-6 text-gray-dark\"\n            id=\"payment-email-reminder\"\n            onChange={() => handleUpdate(\"paymentPastDueEmailEnabled\")(!settings.paymentPastDueEmailEnabled)}\n            checked={settings.paymentPastDueEmailEnabled}\n          />\n          <div className=\"mb-2 ml-2 flex-none bg-white\">\n            <Select\n              options={commIntervals}\n              value={settings.paymentPastDueEmailMinutes}\n              onChange={(e) => setSettings({ ...settings, paymentPastDueEmailMinutes: Number(e.target.value) })}\n              name=\"emailInterval\"\n            />\n          </div>\n          <p className=\"mb-2 ml-2 flex-none text-gray-dark\">after</p>\n        </div>\n        <div className=\"flex flex-row flex-wrap items-center\">\n          <CheckBox\n            label=\"Text or app notification\"\n            className=\"flex-none font-manrope text-[16px] font-normal leading-6 text-gray-dark\"\n            id=\"payment-text-reminder\"\n            onChange={() => handleUpdate(\"paymentPastDueTextEnabled\")(!settings.paymentPastDueTextEnabled)}\n            checked={settings.paymentPastDueTextEnabled}\n          />\n          <div className=\"mb-2 ml-2 flex-none bg-white\">\n            <Select\n              options={commIntervals}\n              value={settings.paymentPastDueTextMinutes}\n              onChange={(e) => setSettings({ ...settings, paymentPastDueTextMinutes: Number(e.target.value) })}\n              name=\"textInterval\"\n            />\n          </div>\n          <p className=\"mb-2 ml-2 flex-none text-gray-dark\">after</p>\n        </div>\n      </div>\n    </Flyout>\n  )\n}\n","import { ExportToCsv } from \"export-to-csv\"\nimport React, { useState, useEffect } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { CalendarFlyoutProvider } from \"../../../contexts/CalendarFlyoutContext\"\nimport { ManualBookingProvider, useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { PracticeProvider } from \"../../../contexts/PracticeContext\"\nimport { BookableEventsProvider } from \"../../../pages/BookableEvents/BookableEventsContext\"\nimport DefaultProvider from \"../../../providers/DefaultProvider\"\nimport { fetchAppointment } from \"../../../utils/fetchAppointment\"\nimport { formatShortDate, formatPrice } from \"../../../utils/utils\"\nimport Badge from \"../../shared/Badge\"\nimport { Button } from \"../../shared/Buttons\"\nimport HealMeTable from \"../../shared/HealMeTable\"\nimport { Select } from \"../../shared/Inputs\"\nimport Typography from \"../../shared/Typography\"\nimport AppointmentFlyout from \"../calendar/AppointmentFlyout\"\n\nimport PaymentSettingsFlyout from \"./PaymentSettingsFlyout\"\n\nconst APPOINTMENTS_QUERY = `\n  query PaymentDirectory($limit: Int, $offset: Int, $dateFilter: String, $stateFilter: String, $searchTerm: String, $clientId: ID) {\n    currentPractice {\n      isStripeApproved\n      hasPaymentProvider\n      requireCcEnabled\n      offlinePaymentMethod\n      pastAppointments(limit: $limit, offset: $offset, dateFilter: $dateFilter, stateFilter: $stateFilter, searchTerm: $searchTerm, clientId: $clientId) {\n        id\n        startsAt\n        endsAt\n        amountCents\n        tipAmountCents\n        fullTotal\n        timeZone\n        state\n        instantActionToken\n        clientName\n        paymentStatus\n        markPaid\n        paidBy\n        paymentMethod\n        createdAt\n        service { id name timeLength }\n        appointmentServices {\n          amountCents\n          service {\n            id\n            serviceId\n            name\n            amountCents\n            timeLength\n            package\n          }\n        }\n        location { id name }\n        user { id firstName lastName }\n        client { id firstName lastName }\n        package { id numberOfSessions }\n        discountCodeRedemptions { code amountCents }\n      }\n      pastAppointmentsCount(dateFilter: $dateFilter, stateFilter: $stateFilter, searchTerm: $searchTerm, clientId: $clientId)\n      totalCollected(clientId: $clientId)\n      totalOutstanding(clientId: $clientId)\n    }\n  }\n`\n\nconst dateRangeOptions = [\n  { value: \"alltime\", label: \"All time\" },\n  { value: \"thisweek\", label: \"This week\" },\n  { value: \"lastweek\", label: \"Last week\" },\n  { value: \"thismonth\", label: \"This month\" },\n  { value: \"lastmonth\", label: \"Last month\" },\n  { value: \"thisyear\", label: \"This year\" },\n  { value: \"lastyear\", label: \"Last year\" }\n]\n\nconst stateOptions = [\n  { value: \"allpayments\", label: \"All payments\" },\n  { value: \"paid\", label: \"Paid\" },\n  { value: \"upcoming\", label: \"Upcoming\" },\n  { value: \"unpaid\", label: \"Unpaid\" },\n  { value: \"free\", label: \"Free\" }\n]\n\nconst limitOptions = [\n  { value: 20, label: \"20\" },\n  { value: 50, label: \"50\" },\n  { value: null, label: \"All\" }\n]\n\nconst consolidatePackages = (appointments) => {\n  const seenPackages = new Set()\n  const filteredAppointments = []\n  for (const item of appointments) {\n    const packageId = item.package?.id\n\n    if (packageId) {\n      // This is a hack so the \"createdAt\" accessor for the \"Date\" header in the table can work both packages and appointments.\n      // For packages the date should be the date the package was purchased, not the date of the first appointment.\n      item.startsAt = item.package.createdAt\n    }\n    if (!packageId || !seenPackages.has(packageId)) {\n      filteredAppointments.push(item)\n      if (packageId) seenPackages.add(packageId)\n    }\n  }\n  return filteredAppointments\n}\n\nconst TableHeader = ({ dateFilter, stateFilter, limit, handleFilter, totalCount, showPagination, showSearch }) => (\n  <div className={`flex w-full justify-start gap-2 lg:flex-col sm:ml-0 sm:mt-4 ${showSearch ? \"ml-4\" : \"\"}`}>\n    <div className=\"flex flex-row gap-2 sm:justify-between\">\n      <Select\n        options={dateRangeOptions}\n        value={dateFilter}\n        onChange={(e) => handleFilter(e.target.value, stateFilter, limit)}\n        className=\"sm:w-1/2\"\n      />\n      <Select\n        options={stateOptions}\n        value={stateFilter}\n        onChange={(e) => handleFilter(dateFilter, e.target.value, limit)}\n        className=\"sm:w-1/2\"\n      />\n    </div>\n    {showPagination && (\n      <div className=\"ml-auto flex flex-row items-center gap-2\">\n        <span>Showing</span>\n        <Select\n          options={limitOptions}\n          value={limit}\n          onChange={(e) => handleFilter(dateFilter, stateFilter, e.target.value)}\n        />\n        <span>of {totalCount}</span>\n      </div>\n    )}\n  </div>\n)\n\nconst PaymentsTable = ({ communicationSettings, clientId }) => {\n  const { setAppointment } = useManualBooking()\n\n  const [appointmentFlyoutVisible, setAppointmentFlyoutVisible] = useState(false)\n  const [showSettings, setShowSettings] = useState(false)\n  const [filteredPayments, setFilteredPayments] = useState([])\n  const [dateFilter, setDateFilter] = useState(dateRangeOptions[0].value)\n  const [stateFilter, setStateFilter] = useState(stateOptions[0].value)\n  const [limit, setLimit] = useState(limitOptions[0].value)\n  const [page, setPage] = useState(0)\n  const [searchTerm, setSearchTerm] = useState(\"\")\n\n  const [{ data, fetching, error }, reexecuteQuery] = useQuery({\n    query: APPOINTMENTS_QUERY,\n    variables: {\n      limit: parseInt(limit) || undefined,\n      offset: limit ? page * parseInt(limit) : undefined,\n      dateFilter,\n      stateFilter,\n      searchTerm,\n      clientId\n    },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  if (error) console.error(error)\n\n  useEffect(() => {\n    if (data && data.currentPractice) {\n      setFilteredPayments(consolidatePackages(data.currentPractice.pastAppointments))\n    }\n  }, [data])\n\n  const handleFilter = (dateSelection, stateSelection, limitSelection) => {\n    setDateFilter(dateSelection || dateFilter)\n    setStateFilter(stateSelection || stateFilter)\n    setLimit(limitSelection || limit)\n    setPage(0)\n    reexecuteQuery({ requestPolicy: \"cache-and-network\" })\n  }\n\n  const columns = [\n    {\n      accessor: \"startsAt\",\n      Header: \"Date\",\n      Cell: (props) => formatShortDate(props.cell.value)\n    },\n    {\n      accessor: \"clientName\",\n      Header: \"Client\"\n    },\n    {\n      accessor: \"service.name\",\n      Header: \"Service\"\n    },\n    {\n      accessor: \"fullTotal\",\n      Header: \"Amount\",\n      Cell: (props) => {\n        const paymentStatus = props.cell.row.original.paymentStatus\n        let textColorClass = \"\"\n\n        if (paymentStatus === \"Unpaid\") {\n          textColorClass = \"text-red\"\n        } else if (paymentStatus === \"Paid\") {\n          textColorClass = \"text-teal\"\n        } else {\n          textColorClass = \"text-gray-dark\"\n        }\n\n        return <span className={`sm:${textColorClass}`}>{formatPrice(props.cell.value || 0)}</span>\n      }\n    },\n    {\n      accessor: \"paymentStatus\",\n      Header: \"Status\",\n      className: \"status\",\n      Cell: (props) => {\n        const status = props.cell.value\n\n        let badgeType\n        switch (status) {\n          case \"Unpaid\":\n            badgeType = \"error\"\n            break\n          case \"Free\":\n            badgeType = \"info\"\n            break\n          case \"Paid\":\n            badgeType = \"success\"\n            break\n          case \"Upcoming\":\n            badgeType = \"warning\"\n            break\n          default:\n            badgeType = \"success\"\n        }\n\n        let paidBy\n        if (badgeType === \"success\") {\n          if (props.cell.row.original.markPaid) {\n            if (!props.cell.row.original.paidBy) {\n              paidBy = \"offline\"\n            } else {\n              paidBy = props.cell.row.original.paidBy\n            }\n          } else {\n            paidBy = props.cell.row.original.paymentMethod\n          }\n        }\n\n        return (\n          <>\n            <Badge type={badgeType}>{props.cell.value}</Badge>\n            <span className=\"ml-2 text-[12px] font-extrabold uppercase tracking-[0.045rem]\">{paidBy}</span>\n          </>\n        )\n      }\n    },\n    {\n      accessor: \"instantActionToken\",\n      Header: \"Action\",\n      className: \"row-action\",\n      Cell: (props) => (\n        <>\n          {props.cell.row.original.paymentStatus !== \"Free\" && (\n            <a className=\"font-bold text-teal\" onClick={() => showAppointment(props.cell.value)}>\n              Manage\n            </a>\n          )}\n        </>\n      )\n    }\n  ]\n\n  if (clientId) {\n    const index = columns.findIndex((obj) => obj.accessor === \"clientName\")\n    if (index !== -1) columns.splice(index, 1)\n  }\n\n  const showAppointment = async (instantActionToken) => {\n    const selectedAppointment = await fetchAppointment(instantActionToken)\n    setAppointmentFlyoutVisible(true)\n    setAppointment(selectedAppointment)\n  }\n\n  const options = {\n    fieldSeparator: \",\",\n    quoteStrings: '\"',\n    decimalSeparator: \".\",\n    showLabels: true,\n    useTextFile: false,\n    useBom: true,\n    filename: \"Heal.me Payments\",\n    headers: [\"Appointment Date\", \"Client Name\", \"Service\", \"Location\", \"Amount\", \"Status\", \"Paid By\"]\n  }\n\n  const exportToCSV = () => {\n    const csvExporter = new ExportToCsv(options)\n    const exportable = filteredPayments.map((appt) => ({\n      \"Appointment Date\": formatShortDate(appt.startsAt),\n      \"Client Name\": appt.clientName,\n      Service: appt.service.name,\n      Location: appt.location.name ? appt.location.name : \"\",\n      Amount: formatPrice(appt.fullTotal),\n      Status: appt.paymentStatus,\n      \"Paid By\": appt.markPaid ? (appt.paidBy ? appt.paidBy : \"offline\") : appt.paymentMethod\n    }))\n    csvExporter.generateCsv(exportable)\n  }\n\n  const genericCallback = () => {\n    setAppointmentFlyoutVisible(false)\n    setAppointment(null)\n    reexecuteQuery()\n  }\n\n  if (fetching) {\n    return (\n      <div className=\"flex h-screen items-center justify-center\">\n        <img src=\"/loading-spinner.png\" width=\"120px\" />\n      </div>\n    )\n  }\n\n  return (\n    <>\n      {!fetching && (\n        <>\n          {filteredPayments && (filteredPayments.length > 0 || data.currentPractice.isStripeApproved) ? (\n            <>\n              <div className=\"mb-8 flex items-end justify-between sm:mb-4\">\n                <div className=\"flex flex-col\">\n                  <Typography as=\"h1\" variant=\"h3\">\n                    Payments\n                  </Typography>\n                  <Typography variant=\"subtitle\" className=\"sm:hidden\">\n                    ${data.currentPractice.totalCollected} collected {\"\\u2022\"} ${data.currentPractice.totalOutstanding}{\" \"}\n                    outstanding\n                  </Typography>\n                </div>\n                <div className=\"block\">\n                  <Button type=\"tertiary\" size=\"small\" onClick={exportToCSV}>\n                    Export\n                  </Button>\n                  {data.currentPractice.requireCcEnabled && (\n                    <Button type=\"tertiary\" size=\"small\" className=\"ml-4\" onClick={() => setShowSettings(true)}>\n                      Settings\n                    </Button>\n                  )}\n                </div>\n              </div>\n              <HealMeTable\n                data={filteredPayments}\n                columns={columns}\n                searchType=\"payments\"\n                hasPagination={false}\n                header={() => (\n                  <TableHeader\n                    dateFilter={dateFilter}\n                    stateFilter={stateFilter}\n                    limit={limit}\n                    handleFilter={handleFilter}\n                    totalCount={data.currentPractice.pastAppointmentsCount}\n                    showPagination={data.currentPractice.pastAppointmentsCount > limit}\n                    showSearch={!clientId}\n                  />\n                )}\n                rowClick={(rowData) => showAppointment(rowData.instantActionToken)}\n                searchTerm={searchTerm}\n                setSearchTerm={setSearchTerm}\n                searchPlaceholder=\"Search by name or email\"\n                showSearch={!clientId}\n              />\n              {data.currentPractice.pastAppointmentsCount > limit && (\n                <div className=\"mt-2 flex justify-center gap-4\">\n                  <Button disabled={page === 0} className=\"w-36\" onClick={() => setPage(page - 1)}>\n                    Previous\n                  </Button>\n                  <Button\n                    disabled={\n                      data.currentPractice.pastAppointments.length < limit ||\n                      filteredPayments.length === 0 ||\n                      limit === \"All\"\n                    }\n                    className=\"w-36\"\n                    onClick={() => setPage(page + 1)}>\n                    Next\n                  </Button>\n                </div>\n              )}\n            </>\n          ) : (\n            <div className=\"flex h-screen flex-col items-center justify-center rounded-xl bg-gray-ultralight\">\n              <Typography as=\"h1\" variant=\"h3\">\n                Start accepting payments today\n              </Typography>\n              <Typography variant=\"subtitle\" className=\"mb-3\">\n                Accept online payments and get paid on time, every time.\n              </Typography>\n              <Button type=\"primary\" size=\"large\" onClick={() => (window.location.href = \"/portal/settings/banking\")}>\n                Power-up my practice\n              </Button>\n            </div>\n          )}\n        </>\n      )}\n      <AppointmentFlyout\n        visible={appointmentFlyoutVisible}\n        closeFlyout={genericCallback}\n        onAppointmentChanged={genericCallback}\n        onAppointmentCancelled={genericCallback}\n        onRescheduleSuccess={genericCallback}\n      />\n      <PaymentSettingsFlyout\n        hasPaymentProvider={data.currentPractice.hasPaymentProvider}\n        hasOffline={data.currentPractice.offlinePaymentMethod}\n        communicationSettings={communicationSettings}\n        closeFlyout={() => {\n          setShowSettings(false)\n        }}\n        visible={showSettings}\n      />\n    </>\n  )\n}\n\nexport default function PaymentDirectory(props) {\n  return (\n    <DefaultProvider>\n      <PracticeProvider>\n        <ManualBookingProvider>\n          <CalendarFlyoutProvider>\n            <BookableEventsProvider>\n              <PaymentsTable {...props} />\n            </BookableEventsProvider>\n          </CalendarFlyoutProvider>\n        </ManualBookingProvider>\n      </PracticeProvider>\n    </DefaultProvider>\n  )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { sendAmplitudeData } from \"../support/amplitude-react\"\n\nconst ViewPhone = `\n  mutation ViewPhone($id: ID!) {\n    viewPhone (id: $id) {\n      formattedPhoneNumber\n      phoneNumber\n    }\n  }\n`\n\nconst ProfilePhoneNumber = ({ practitionerId, className }) => {\n  const [phoneNumberHref, setPhoneNumberHref] = useState()\n  const [formattedPhoneNumber, setFormattedPhoneNumber] = useState()\n  const [isDisabled, setIsDisabled] = useState()\n  const [, viewPhone] = useMutation(ViewPhone)\n\n  const onClick = () => {\n    if (!formattedPhoneNumber) {\n      setIsDisabled(true)\n      viewPhone({ id: practitionerId }).then((result) => {\n        if (result.error) {\n          console.error(result.error)\n        } else {\n          setFormattedPhoneNumber(result.data.viewPhone.formattedPhoneNumber)\n          setPhoneNumberHref(`tel:${result.data.viewPhone.phoneNumber}`)\n          useEffect(() => {\n            window.dataLayer = window.dataLayer || []\n            window.dataLayer.push({\n              event: \"view_phone\",\n              event_category: \"Client Booking Flow\",\n              event_label: \"Client View Pro Phone\"\n            })\n          }, [onClick])\n          setIsDisabled(false)\n          sendAmplitudeData(\"phone number clicked\")\n        }\n      })\n    }\n  }\n\n  return (\n    <div className={className} style={isDisabled ? { pointerEvents: \"none\" } : {}}>\n      <span className=\"details button btn-tertiary small\" data-icon=\"phone\" onClick={onClick}>\n        {!formattedPhoneNumber ? \"Show phone number\" : <a href={phoneNumberHref}>{formattedPhoneNumber}</a>}\n      </span>\n    </div>\n  )\n}\n\nexport default ProfilePhoneNumber\n","import clsx from \"clsx\"\nimport PropTypes from \"prop-types\"\nimport React, { forwardRef } from \"react\"\n\nconst InputField = (\n  {\n    kind = \"form\",\n    label,\n    id,\n    type,\n    placeholder,\n    value,\n    defaultValue,\n    onChange,\n    onKeyUp,\n    autoComplete,\n    style,\n    disabled\n  },\n  ref\n) => (\n  <>\n    {label && <label htmlFor={id}>{label}</label>}\n    <input\n      ref={ref}\n      id={id}\n      type={type}\n      placeholder={placeholder}\n      value={value}\n      defaultValue={defaultValue}\n      onChange={onChange}\n      onKeyUp={onKeyUp}\n      autoComplete={autoComplete}\n      className={clsx(\n        \"m-0 w-full rounded border border-gray bg-white shadow-none outline-0 focus:border-teal active:border-teal\",\n        { \"border-none px-0 py-0\": disabled },\n        { \"px-4 py-3.5\": kind === \"form\" && !disabled },\n        { \"px-8 py-4\": kind === \"search\" && !disabled }\n      )}\n      style={style}\n      disabled={disabled}\n    />\n  </>\n)\n\nInputField.propTypes = {\n  kind: PropTypes.oneOf([\"form\", \"search\"]),\n  label: PropTypes.string,\n  id: PropTypes.string,\n  type: PropTypes.string,\n  placeholder: PropTypes.string,\n  value: PropTypes.string,\n  defaultValue: PropTypes.string,\n  onChange: PropTypes.func,\n  onKeyUp: PropTypes.func,\n  autoComplete: PropTypes.string,\n  style: PropTypes.object\n}\n\nexport default forwardRef(InputField)\n","import React, { useState } from \"react\"\nimport IntlTelInput from \"react-intl-tel-input\"\nimport styled from \"styled-components\"\n\nimport HealMeSquareButton from \"../shared/HealMeSquareButton\"\nimport InputField from \"../shared/InputField\"\n\nconst EnterPhoneWrapper = styled.div`\n  .input-row {\n    margin-bottom: 16px;\n  }\n`\n\nexport default function EnterPhone({ client, nextStep }) {\n  const [name, setName] = useState(client.firstName ? client.firstName : \"\")\n\n  return (\n    <div className=\"column is-full has-text-left\">\n      <EnterPhoneWrapper>\n        <p className=\"header has-text-left mb-5\">Add your name to post your review</p>\n        <div className=\"create-form\">\n          <div className=\"input-row\">\n            <label>Name (publicly available)</label>\n            <InputField placeholder=\"Name\" value={name} onChange={(e) => setName(e.target.value)} />\n          </div>\n          <HealMeSquareButton\n            type=\"primary\"\n            label=\"Continue\"\n            fullWidth={true}\n            onClick={() => {\n              nextStep(name)\n            }}\n            disabled={!name}\n          />\n        </div>\n      </EnterPhoneWrapper>\n    </div>\n  )\n}\n","import { ChevronDownIcon, ChevronUpIcon, XMarkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useEffect, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { FeatureFlagProvider } from \"../contexts/FeatureFlagContext\"\nimport { getSideNavigationItems } from \"../utils/sideNavigationUtils\"\n\nimport { CounterBadge } from \"./shared/Badge\"\nimport { Link } from \"./shared/Links\"\nimport { AnimatedModal } from \"./shared/Modal\"\nimport Typography from \"./shared/Typography\"\n\nconst NavigationItem = ({ item, activeHref, badgeCount }) => {\n  const hasChildren = item.children && item.children.length > 0\n  const hasChildrenActive = hasChildren && item.children.some((child) => activeHref.startsWith(child.href))\n\n  const [isOpen, setIsOpen] = useState(hasChildrenActive)\n\n  let isActive = (activeHref.startsWith(item.href) && !activeHref.includes(\"personal\")) || hasChildrenActive\n\n  // remove this after fully enabling flag \"side_navigation_v2\"\n  if (item.name === \"Settings\" && activeHref.includes(\"intake_forms\")) {\n    isActive = false\n  }\n\n  const icon = isActive ? item.solidIcon : item.outlineIcon\n\n  const handleClick = (e) => {\n    if (hasChildren) {\n      e.preventDefault()\n      setIsOpen(!isOpen)\n    }\n  }\n\n  return (\n    <>\n      <div className={twMerge(\"mx-3 rounded-lg\", isOpen ? \"bg-gray/10\" : \"\")}>\n        <a\n          href={item.href}\n          style={{ textDecoration: \"none\" }}\n          onClick={handleClick}\n          {...(item.id ? { id: item.id } : {})}>\n          <div\n            className={twMerge(\n              \"my-3 flex cursor-pointer items-center justify-start rounded-lg py-1 pl-4 pr-2 hover:text-teal\",\n              isActive ? \"font-bold\" : \"\",\n              isActive && !hasChildren ? \"bg-gray\" : \"\",\n              hasChildren && isOpen ? \"mb-0 rounded-b-none font-bold\" : \"\"\n            )}>\n            {icon}\n            <span className=\"ml-3\">{item.name}</span>\n            {badgeCount > 0 && <CounterBadge className=\"ml-8\">{badgeCount}</CounterBadge>}\n            {hasChildren && (\n              <span className=\"ml-auto\">\n                {isOpen ? (\n                  <ChevronUpIcon className=\"h-5 w-5 text-gray-dark\" />\n                ) : (\n                  <ChevronDownIcon className=\"h-5 w-5 text-gray-dark\" />\n                )}\n              </span>\n            )}\n          </div>\n        </a>\n        {isOpen && hasChildren && (\n          <div className=\"mt-2 flex flex-col gap-2\">\n            {item.children.map((child, index) => (\n              <NavigationItemChild\n                key={child.name}\n                item={child}\n                activeHref={activeHref}\n                isLast={index === item.children.length - 1}\n              />\n            ))}\n          </div>\n        )}\n      </div>\n    </>\n  )\n}\n\nconst NavigationItemChild = ({ item, activeHref, isLast }) => {\n  const isActive = activeHref === item.href\n\n  return (\n    <a\n      href={item.href}\n      className={twMerge(\n        \"flex cursor-pointer items-center justify-start py-1 pl-[52px] pr-2 hover:text-teal\",\n        isActive ? \"bg-gray/25 font-bold\" : \"\",\n        isLast ? \"rounded-b-lg\" : \"\"\n      )}>\n      {item.icon}\n      <span>{item.name}</span>\n    </a>\n  )\n}\n\nconst SideNavigationComponent = ({\n  activeHref,\n  completionCount,\n  verificationCount,\n  googleConnected,\n  cronofyConnected,\n  websitePlan\n}) => {\n  const [showNotice, setShowNotice] = useState(false)\n  const [cronofyModalVisible, setCronofyModalVisible] = useState(false)\n\n  const profileBadgeCount = completionCount > 0 ? completionCount : verificationCount\n  const syncCalendarCopy = \"Sync Heal.me with your calendar\"\n\n  const items = getSideNavigationItems({ websitePlan })\n\n  useEffect(() => {\n    setShowNotice(!cronofyConnected && localStorage.getItem(\"sideNavNoticeDismissed\") !== \"true\")\n\n    const cronofyModalShown = localStorage.getItem(\"cronofyModalShownV2\")\n    if (!cronofyModalShown) {\n      setCronofyModalVisible(true)\n      localStorage.setItem(\"cronofyModalShownV2\", \"true\")\n    }\n  }, [])\n\n  const handleDismiss = () => {\n    localStorage.setItem(\"sideNavNoticeDismissed\", \"true\")\n    setShowNotice(false)\n  }\n\n  return (\n    <>\n      <div className=\"fixed z-30 h-screen min-h-100 w-[200px] overflow-y-auto border-r border-gray-light bg-gray-ultralight pb-125 scrollbar-none\">\n        <div className=\"w-full bg-gray-ultralight pb-3 pl-8 pt-6\">\n          <a href=\"/\" className=\"\">\n            <img src=\"/images/healme_logo.svg\" alt=\"Logo\" />\n          </a>\n        </div>\n        <div className=\"mt-6\">\n          {items.map((item) => (\n            <NavigationItem\n              key={item.name}\n              item={item}\n              activeHref={activeHref}\n              badgeCount={item.name === \"Profile\" ? profileBadgeCount : 0}\n            />\n          ))}\n\n          {showNotice && (\n            <div className=\"relative mx-4 my-6 ml-6 rounded-lg border border-gray bg-white p-4\">\n              <div className=\"flex flex-col\">\n                <Typography variant=\"micro\">{syncCalendarCopy}</Typography>\n                <Link href=\"/portal/settings/calendar\" className=\"mt-1 text-sm font-semibold\">\n                  Connect now\n                </Link>\n              </div>\n              <XMarkIcon\n                onClick={handleDismiss}\n                className=\"absolute right-1 top-2 h-7 w-7 cursor-pointer p-1 font-semibold text-black\"\n              />\n            </div>\n          )}\n\n          {!cronofyConnected && googleConnected && (\n            <AnimatedModal\n              visible={cronofyModalVisible}\n              hideModal={() => (window.location = \"/portal/settings/calendar\")}\n              showFooter={true}\n              actionButtonCopy=\"Connect calendar\"\n              hideCancelButton={true}\n              onSave={() => (window.location = \"/portal/settings/calendar\")}\n              header=\"Reconnect your calendar\">\n              <p>We&apos;ve made big improvements to our calendar integration!</p>\n              <br />\n              <p>To continue syncing with your Google Calendar, please reconnect your calendar now.</p>\n              <br />\n              <p>We apologize for any inconvenience and appreciate your understanding.</p>\n            </AnimatedModal>\n          )}\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport default function SideNavigation(props) {\n  return (\n    <FeatureFlagProvider flags={props.featureFlags}>\n      <SideNavigationComponent {...props} />\n    </FeatureFlagProvider>\n  )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport Typography from \"../../components/shared/Typography\"\n\nconst BookableEventCard = ({ event, onClick }) => (\n  <a\n    className=\"group relative max-w-64 rounded-xl border border-gray-light text-center\"\n    href=\"#\"\n    onClick={(e) => {\n      e.preventDefault()\n      onClick()\n    }}>\n    {event.photoUrl ? (\n      <img src={event.photoUrl} alt={event.name} className=\"box-content max-h-48 w-full rounded-t-xl object-cover\" />\n    ) : (\n      <div className=\"aspect-square w-full rounded-t-xl bg-gray-light\" />\n    )}\n    <div className=\"absolute left-0 top-0 rounded-tl-xl bg-black p-2 text-center text-white\">\n      <div className=\"text-sm uppercase\">{dayjs(event.startsAt).format(\"MMM\")}</div>\n      <div className=\"text-4xl\">{dayjs(event.startsAt).format(\"D\")}</div>\n    </div>\n    <div className=\"flex flex-col gap-4 p-8\">\n      <Typography variant=\"h3\" className=\"group-hover:underline\">\n        {event.name}\n      </Typography>\n      <div>\n        {dayjs(event.startsAt).format(\"h:mm A\")} - {dayjs(event.endsAt).format(\"h:mm A z\")}\n      </div>\n      <div className=\"truncate\">{event.description}</div>\n      <Button>Edit event</Button>\n    </div>\n  </a>\n)\n\nexport default BookableEventCard\n","import React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Flyout } from \"../../components/shared/Layout\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport BookableEventForm from \"./BookableEventForm\"\nimport { useBookableEvents } from \"./BookableEventsContext\"\n\nconst BookableEventsFlyout = () => {\n  const {\n    showFlyout,\n    setShowFlyout,\n    bookableEvent,\n    fetching,\n    upsertBookableEvent,\n    updateBookableEvents,\n    setDeleteModalVisible\n  } = useBookableEvents()\n  const { showToast } = useToast()\n\n  const editingExistingEvent = !!bookableEvent.id\n  const saveEnabled = !fetching && bookableEvent.name?.length > 0 && bookableEvent.location?.length > 0\n\n  const onSave = () => {\n    upsertBookableEvent({ ...bookableEvent }).then((result) => {\n      if (result?.data?.upsertBookableEvent?.result === \"success\") {\n        const newEvent = result.data.upsertBookableEvent.bookableEvent\n        newEvent.id = Number(newEvent.id)\n        updateBookableEvents(newEvent)\n        setShowFlyout(false)\n        showToast(`Your event '${newEvent.name}' was saved successfully`)\n      } else {\n        console.error(result)\n        let errorMessage = \"There was an error saving your event\"\n        if (result.data?.upsertBookableEvent?.errors) errorMessage += `: ${result.data.upsertBookableEvent.errors}`\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    })\n  }\n\n  return (\n    <>\n      <Flyout\n        header={editingExistingEvent ? \"Edit event\" : \"Create event\"}\n        visible={showFlyout}\n        closeFlyout={() => setShowFlyout(false)}\n        onSave={onSave}\n        footer={\n          <div className={`flex w-full items-center ${editingExistingEvent ? \"justify-between\" : \"justify-end\"}`}>\n            {editingExistingEvent && (\n              <Button type=\"destructive\" onClick={() => setDeleteModalVisible(true)} disabled={fetching}>\n                Delete\n              </Button>\n            )}\n            <div className=\"flex gap-4\">\n              <Button type=\"tertiary\" onClick={() => setShowFlyout(false)} disabled={fetching}>\n                Cancel\n              </Button>\n              <Button type=\"primary\" onClick={onSave} disabled={fetching || !saveEnabled}>\n                Save\n              </Button>\n            </div>\n          </div>\n        }>\n        <BookableEventForm />\n      </Flyout>\n    </>\n  )\n}\n\nexport default BookableEventsFlyout\n","import React from \"react\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport Typography from \"../components/shared/Typography\"\nimport { CalendarFlyoutProvider } from \"../contexts/CalendarFlyoutContext\"\nimport { ToastProvider } from \"../contexts/ToastContext\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\n\nimport BookableEventCard from \"./BookableEvents/BookableEventCard\"\nimport { BookableEventsProvider, useBookableEvents } from \"./BookableEvents/BookableEventsContext\"\nimport BookableEventsFlyout from \"./BookableEvents/BookableEventsFlyout\"\n\nconst BookableEventsPage = () => {\n  const { setShowFlyout, bookableEvents, setBookableEvent, defaultNewEvent, defaultTimeZone } = useBookableEvents()\n\n  return (\n    <>\n      <div className=\"mb-8 flex justify-between align-bottom sm:mb-4\">\n        <div className=\"flex flex-col\">\n          <Typography as=\"h1\" variant=\"h3\">\n            Events\n          </Typography>\n          <Typography variant=\"subtitle\">Schedule events that multiple people can sign up for</Typography>\n        </div>\n        <div className=\"flex\">\n          <Button\n            type=\"primary\"\n            size=\"small\"\n            floatingInMobile={true}\n            onClick={() => {\n              setShowFlyout(true)\n              setBookableEvent({ ...defaultNewEvent, timeZone: defaultTimeZone })\n            }}>\n            Create event\n          </Button>\n        </div>\n      </div>\n      <div className=\"grid grid-cols-4 gap-4\">\n        {bookableEvents.map((event) => (\n          <BookableEventCard\n            event={event}\n            key={event.id}\n            onClick={() => {\n              setShowFlyout(true)\n              setBookableEvent(event)\n            }}\n          />\n        ))}\n      </div>\n      <BookableEventsFlyout />\n    </>\n  )\n}\n\n// TODO: CalendarFlyoutProvider should not be here, but BookableEventForm is using it now\nexport default function BookableEvents(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <CalendarFlyoutProvider>\n          <BookableEventsProvider {...props}>\n            <BookableEventsPage />\n          </BookableEventsProvider>\n        </CalendarFlyoutProvider>\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import { ChevronRightIcon } from \"@heroicons/react/24/outline\"\nimport PropTypes from \"prop-types\"\nimport React from \"react\"\n\nimport { Link } from \"./Links\"\nimport Typography from \"./Typography\"\n\nconst Breadcrumbs = ({ links, activePage }) => (\n  <div className=\"mb-8 flex flex-row items-center sm:mb-4\">\n    {links.map((link, index) => (\n      <React.Fragment key={link.href}>\n        <Link href={link.href} className=\"text-sm font-bold\">\n          {link.text}\n        </Link>\n        {index < links.length - 1 && <ChevronRightIcon className=\"mx-2 h-5 w-5 text-gray\" />}\n      </React.Fragment>\n    ))}\n\n    {activePage && (\n      <>\n        <ChevronRightIcon className=\"ml-2 h-5 w-5 text-gray\" />\n        <Typography variant=\"small\" className=\"ml-2 text-gray-dark\">\n          {activePage}\n        </Typography>\n      </>\n    )}\n  </div>\n)\n\nBreadcrumbs.propTypes = {\n  links: PropTypes.arrayOf(\n    PropTypes.shape({\n      href: PropTypes.string.isRequired,\n      text: PropTypes.string.isRequired\n    })\n  ).isRequired,\n  activePage: PropTypes.string.isRequired\n}\n\nexport default Breadcrumbs\n","import { Listbox, Transition } from \"@headlessui/react\"\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\"\nimport React, { Fragment } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { BASE_INPUT_CLASSNAMES, BASE_LABEL_CLASSNAMES, DROPDOWN_CLASSNAMES, DROPDOWN_OPTION_CLASSNAMES } from \"./Inputs\"\n\nconst ListBox = ({\n  label,\n  labelClassNames,\n  className,\n  options,\n  value,\n  onChange,\n  disabled,\n  buttonHint = null,\n  placeholder = \"Select an option\"\n}) => {\n  if (typeof value === \"string\") value = options.find((option) => option.value === value)\n\n  return (\n    <Listbox value={value} onChange={onChange}>\n      {({ open }) => (\n        <>\n          {label && <Listbox.Label className={twMerge(BASE_LABEL_CLASSNAMES, labelClassNames)}>{label}</Listbox.Label>}\n          <div className=\"relative\">\n            <Listbox.Button\n              className={twMerge(\n                BASE_INPUT_CLASSNAMES,\n                disabled ? \"pointer-events-none opacity-50\" : \"relative cursor-pointer\",\n                className\n              )}>\n              <div className=\"flex items-center justify-between gap-2\">\n                {value ? (\n                  <div>{buttonHint ? `${value.label} ${buttonHint}` : value.label}</div>\n                ) : (\n                  <div className=\"text-gray-dark\">{placeholder}</div>\n                )}\n                <div>\n                  <ChevronDownIcon className=\"h-5 w-5 text-gray-dark\" aria-hidden=\"true\" />\n                </div>\n              </div>\n            </Listbox.Button>\n\n            <Transition\n              show={open}\n              as={Fragment}\n              leave=\"transition ease-in duration-100\"\n              leaveFrom=\"opacity-100\"\n              leaveTo=\"opacity-0\">\n              <Listbox.Options className={\"absolute \" + DROPDOWN_CLASSNAMES}>\n                {options.map((option) => (\n                  <Listbox.Option key={option.value} className={DROPDOWN_OPTION_CLASSNAMES} value={option}>\n                    <div className=\"flex items-center\">\n                      <span className=\"block\">{option.label}</span>\n                    </div>\n                  </Listbox.Option>\n                ))}\n              </Listbox.Options>\n            </Transition>\n          </div>\n        </>\n      )}\n    </Listbox>\n  )\n}\n\nexport default ListBox\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\n\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport EditClientModal from \"../../components/shared/EditClientModal\"\nimport { Label } from \"../../components/shared/Inputs\"\nimport { Link, TabNavLink } from \"../../components/shared/Links\"\nimport ListBox from \"../../components/shared/ListBox\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport { clientName, formatPhone } from \"../../utils/utils\"\n\nconst ClientPageView = ({ path, client: clientProp, upcomingAppointments, children, clientNotesEnabled }) => {\n  const [client, setClient] = useState(clientProp)\n  const navItems = [\n    { title: \"Overview\", path: `/portal/clients/${client.id}` },\n    { title: \"Billing\", path: `/portal/clients/${client.id}/billing` }\n  ]\n\n  if (clientNotesEnabled) {\n    navItems.push({ title: \"Intake form\", path: `/portal/clients/${client.id}/intake_form` })\n  }\n\n  const selectItems = navItems.map((item) => ({ value: item.path, label: `${item.title}` }))\n  const name = clientName(client)\n\n  return (\n    <ToastProvider>\n      <NiceModal.Provider>\n        <div className=\"w-full\">\n          <div className=\"mx-auto max-w-[1140px]\">\n            <Breadcrumbs\n              links={[{ href: \"/portal/clients\", text: \"Client directory\" }]}\n              activePage={`${name}'s profile`}\n            />\n            <div className=\"flex w-full items-start gap-8\">\n              <div className=\"flex-1\">\n                <Typography variant=\"h3\" as=\"h1\">\n                  {name}\n                </Typography>\n                <div className=\"mt-4 flex gap-8 border-b border-gray-light sm:hidden\">\n                  {navItems.map((item) => (\n                    <TabNavLink key={item.title} href={item.path} active={path === item.path}>\n                      {item.title}\n                    </TabNavLink>\n                  ))}\n                </div>\n                <div className=\"mt-2 hidden sm:block\">\n                  <ListBox\n                    value={selectItems.find((item) => item.value === path)}\n                    onChange={(item) => {\n                      if (typeof window !== \"undefined\") window.location = item.value\n                    }}\n                    options={selectItems}\n                    buttonHint=\"(tap to navigate)\"\n                  />\n                </div>\n                <div className=\"mt-4 w-full sm:mt-2\">{children}</div>\n              </div>\n              <div className=\"flex w-[278px] flex-col gap-4\">\n                <div className=\"rounded-xl border border-gray p-8\" data-test-id=\"client-details\">\n                  <div className=\"mb-2 flex items-center justify-between\">\n                    <div className=\"font-bold\">Client details</div>\n                    <Button type=\"link\" onClick={() => NiceModal.show(\"edit-client-flyout\")}>\n                      Edit\n                    </Button>\n                  </div>\n                  <div className=\"flex flex-col gap-4\">\n                    {formatPhone(client.phone) && (\n                      <div>\n                        <Label>Phone</Label>\n                        <Typography variant=\"micro\" className=\"truncate\" as=\"div\">\n                          {formatPhone(client.phone)}\n                        </Typography>\n                      </div>\n                    )}\n                    {client.email && (\n                      <div>\n                        <Label>Email</Label>\n                        <Typography variant=\"micro\" className=\"truncate\" as=\"div\">\n                          {client.email}\n                        </Typography>\n                      </div>\n                    )}\n                    {client.fullAddress && (\n                      <div>\n                        <Label>Address</Label>\n                        <Typography variant=\"micro\" className=\"whitespace-pre-wrap\" as=\"div\">\n                          {client.fullAddress}\n                        </Typography>\n                      </div>\n                    )}\n                  </div>\n                </div>\n                <div className=\"rounded-xl border border-gray p-8\">\n                  <div className=\"mb-2 font-bold\">Upcoming appointments</div>\n                  {upcomingAppointments.length === 0 && <div className=\"text-sm\">No upcoming appointments</div>}\n                  {upcomingAppointments.map((appointment, index) => (\n                    <div key={index}>\n                      <Link className=\"text-sm\" href={`/portal/calendar#${appointment.instantActionToken}`}>\n                        {dayjs(appointment.startsAt).format(\"MMM D, YYYY\")}\n                      </Link>{\" \"}\n                      <span className=\"text-sm text-gray-dark\">{dayjs(appointment.startsAt).format(\"h:mm A\")}</span>\n                    </div>\n                  ))}\n                  <Link href={`/portal/calendar?clientId=${client.id}#create-appointment`}>+ New appointment</Link>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <EditClientModal\n          client={client}\n          modalId=\"edit-client-flyout\"\n          deleteModalId=\"delete-client-flyout\"\n          onSuccess={(newClient) => {\n            newClient.fullAddress = [\n              newClient.address,\n              newClient.addressTwo,\n              newClient.city,\n              newClient.state,\n              newClient.postalCode,\n              newClient.country\n            ]\n              .filter(Boolean)\n              .join(\", \")\n            setClient((prevClient) => ({ ...prevClient, ...newClient }))\n          }}\n          key={client.id}\n        />\n      </NiceModal.Provider>\n    </ToastProvider>\n  )\n}\n\nexport default ClientPageView\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport PaymentProviderWrapper from \"../../components/payments/PaymentProviderWrapper\"\nimport { Banner, EmptyStateBox } from \"../../components/shared/Layout\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../utils/mutations\"\n\nimport AddCreditCardModal from \"./AddCreditCardModal\"\n\nexport const DETACH_PAYMENT_METHOD_PRACTICE_MUTATION = `\n  mutation DetachPaymentMethodPractice($clientId: ID!) {\n    detachPaymentMethodPractice(clientId: $clientId) {\n      result\n      errors\n    }\n  }\n`\n\nconst ClientPaymentMethod = ({ client, setCreditCardModalOpen, setSelectedClient, setShowDeleteModal }) => {\n  const [{ data, fetching, error }] = useQuery({\n    query: DEFAULT_PAYMENT_METHOD_QUERY,\n    variables: {\n      clientId: client.id,\n      userId: client.userId,\n      practiceId: client.practiceId\n    },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  const paymentMethod = data?.defaultPaymentMethodPractice\n\n  return (\n    <Banner className=\"w-full\">\n      <Typography variant=\"h5\" as=\"div\">\n        {client.practice?.user?.firstName + \" \" + client.practice?.user?.lastName}\n      </Typography>\n      <div className=\"flex items-center justify-between gap-2\">\n        {fetching ? (\n          <div>Loading...</div>\n        ) : error ? (\n          <div>Error fetching payment method</div>\n        ) : (\n          <>\n            <div>\n              {paymentMethod\n                ? `${capitalize(paymentMethod.brand)} ending in ${paymentMethod.last4} • Expires ${\n                    paymentMethod.expMonth\n                  }/${paymentMethod.expYear}`\n                : \"No default payment method\"}\n            </div>\n\n            <div className=\"flex gap-4\">\n              {paymentMethod && (\n                <button\n                  className=\"font-bold text-red hover:underline\"\n                  onClick={() => {\n                    setShowDeleteModal(true)\n                    setSelectedClient(client)\n                  }}>\n                  Delete\n                </button>\n              )}\n\n              <button\n                className=\"font-bold text-teal hover:underline\"\n                onClick={() => {\n                  setCreditCardModalOpen(true)\n                  setSelectedClient(client)\n                }}>\n                {paymentMethod ? \"Change\" : \"Add\"}\n              </button>\n            </div>\n          </>\n        )}\n      </div>\n    </Banner>\n  )\n}\n\nconst PaymentMethods = ({ clients }) => {\n  const [showDeleteModal, setShowDeleteModal] = useState(false)\n  const [creditCardModalOpen, setCreditCardModalOpen] = useState(false)\n  const [selectedClient, setSelectedClient] = useState(null)\n  const [, detachPaymentMethodPractice] = useMutation(DETACH_PAYMENT_METHOD_PRACTICE_MUTATION)\n\n  const { showToast } = useToast()\n\n  const getFilteredClients = (clients) => {\n    const latestClients = {}\n\n    clients.forEach((client) => {\n      const { practiceId, id } = client\n      const hasPaymentProvider = client.practice.hasPaymentProvider\n      if ((!latestClients[practiceId] || latestClients[practiceId].id < id) && hasPaymentProvider) {\n        latestClients[practiceId] = client\n      }\n    })\n\n    return Object.values(latestClients)\n  }\n\n  const filteredClients = getFilteredClients(clients)\n\n  return (\n    <div>\n      <Typography variant=\"h3\" as=\"h1\">\n        Payment methods\n      </Typography>\n      <Typography variant=\"subtitle\" className=\"mb-4\">\n        Payment methods are saved related to a practitioner.\n      </Typography>\n\n      {filteredClients.length === 0 && (\n        <EmptyStateBox>\n          <div className=\"font-bold\">No payment methods saved</div>\n        </EmptyStateBox>\n      )}\n\n      <div className=\"flex flex-col gap-4\">\n        {filteredClients.map((client) => (\n          <ClientPaymentMethod\n            key={client.id}\n            client={client}\n            setCreditCardModalOpen={setCreditCardModalOpen}\n            setSelectedClient={setSelectedClient}\n            setShowDeleteModal={setShowDeleteModal}\n          />\n        ))}\n      </div>\n\n      {creditCardModalOpen && selectedClient && (\n        <PaymentProviderWrapper practice={selectedClient.practice} client={selectedClient}>\n          <AddCreditCardModal\n            headerLabel={\"Add a credit card\"}\n            open={creditCardModalOpen}\n            closeModal={() => setCreditCardModalOpen(false)}\n            practice={selectedClient.practice}\n            onSave={() => window.location.reload()}\n          />\n        </PaymentProviderWrapper>\n      )}\n\n      {showDeleteModal && selectedClient && (\n        <AnimatedModal\n          visible={showDeleteModal}\n          header=\"Delete payment method\"\n          hideModal={() => setShowDeleteModal(false)}\n          actionButtonCopy=\"Yes, delete\"\n          actionButtonType=\"destructive\"\n          showFooter={true}\n          onSave={() => {\n            detachPaymentMethodPractice({\n              clientId: selectedClient.id\n            }).then((res) => {\n              if (res.data?.detachPaymentMethodPractice?.result === \"success\") {\n                showToast({ content: \"Payment method deleted successfully\", type: \"success\" })\n                window.location.reload()\n              } else {\n                showToast({ content: \"There was an error deleting the payment method\", type: \"error\" })\n                console.error(res) // eslint-disable-line no-console\n              }\n              setShowDeleteModal(false)\n            })\n          }}>\n          <p>Are you sure you want to delete this payment method?</p>\n        </AnimatedModal>\n      )}\n    </div>\n  )\n}\n\nexport default function ManagePaymentMethods(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <PaymentMethods {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\nimport { useQuery, useMutation } from \"urql\"\n\nimport PaymentProviderWrapper from \"../../components/payments/PaymentProviderWrapper\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../utils/mutations\"\nimport AddCreditCardModal from \"../ManagePaymentMethods/AddCreditCardModal\"\nimport { DETACH_PAYMENT_METHOD_PRACTICE_MUTATION } from \"../ManagePaymentMethods/ManagePaymentMethods\"\n\nconst ManageCreditCard = ({ client, practice }) => {\n  const [creditCardModalOpen, setCreditCardModalOpen] = useState(false)\n  const [showDeleteModal, setShowDeleteModal] = useState(false)\n  const [{ data, fetching, error }, reexecuteQuery] = useQuery({\n    query: DEFAULT_PAYMENT_METHOD_QUERY,\n    variables: {\n      clientId: client.id,\n      userId: client.userId,\n      practiceId: practice.id\n    },\n    requestPolicy: \"cache-and-network\"\n  })\n  const [{ fetching: detachingPaymentMethod }, detachPaymentMethodPractice] = useMutation(\n    DETACH_PAYMENT_METHOD_PRACTICE_MUTATION\n  )\n  const { showToast } = useToast()\n\n  const paymentMethod = data?.defaultPaymentMethodPractice\n\n  return (\n    <div className=\"w-full\">\n      {!practice.hasPaymentProvider ? (\n        <a className=\"font-bold text-teal hover:underline\" href={`/portal/settings/banking`}>\n          Click here to connect to a payment provider\n        </a>\n      ) : fetching ? (\n        <img className=\"loading\" src=\"/loading-spinner.png\" width=\"40px\" />\n      ) : error ? (\n        <div>Error fetching payment method</div>\n      ) : (\n        <div className=\"flex w-full items-start justify-between gap-2\">\n          <div className=\"pb-5 text-sm text-gray-dark\">\n            {paymentMethod\n              ? `${capitalize(paymentMethod.brand)} ending in ${paymentMethod.last4} • Expires ${\n                  paymentMethod.expMonth\n                }/${paymentMethod.expYear}`\n              : \"No payment method on file\"}\n          </div>\n\n          <div className=\"flex gap-4\">\n            {paymentMethod && (\n              <button className=\"font-bold text-red hover:underline\" onClick={() => setShowDeleteModal(true)}>\n                Delete\n              </button>\n            )}\n            <button className=\"font-bold text-teal hover:underline\" onClick={() => setCreditCardModalOpen(true)}>\n              {paymentMethod ? \"Change\" : \"Add\"}\n            </button>\n          </div>\n        </div>\n      )}\n      {creditCardModalOpen && client && practice.hasPaymentProvider && (\n        <PaymentProviderWrapper practice={practice} client={client}>\n          <AddCreditCardModal\n            headerLabel=\"Add credit card\"\n            open={creditCardModalOpen}\n            closeModal={() => setCreditCardModalOpen(false)}\n            practice={practice}\n            onSave={reexecuteQuery}\n          />\n        </PaymentProviderWrapper>\n      )}\n      {showDeleteModal && (\n        <AnimatedModal\n          visible={showDeleteModal}\n          header=\"Delete payment method\"\n          hideModal={() => setShowDeleteModal(false)}\n          actionButtonCopy=\"Yes, delete\"\n          actionButtonType=\"destructive\"\n          showFooter={true}\n          saveDisabled={detachingPaymentMethod}\n          onSave={() => {\n            detachPaymentMethodPractice({\n              clientId: client.id\n            }).then((res) => {\n              if (res.data?.detachPaymentMethodPractice?.result === \"success\") {\n                showToast({ content: \"Payment method deleted successfully\", type: \"success\" })\n                reexecuteQuery()\n              } else {\n                showToast({ content: \"There was an error deleting the payment method\", type: \"error\" })\n                console.error(res) // eslint-disable-line no-console\n              }\n              setShowDeleteModal(false)\n            })\n          }}>\n          <p>Are you sure you want to delete this payment method?</p>\n        </AnimatedModal>\n      )}\n    </div>\n  )\n}\n\nexport default ManageCreditCard\n","import React, { useState } from \"react\"\n\nimport PaymentDirectory from \"../../components/pro_portal/payments/PaymentDirectory\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport ClientPageView from \"./ClientPageView\"\nimport ManageCreditCard from \"./ManageCreditCard\"\n\nconst Billing = ({ client: clientProp, upcomingAppointments, communicationSettings, practice, clientNotesEnabled }) => {\n  const [client] = useState(clientProp)\n\n  return (\n    <ClientPageView\n      client={client}\n      practice={practice}\n      upcomingAppointments={upcomingAppointments}\n      clientNotesEnabled={clientNotesEnabled}\n      path={`/portal/clients/${client.id}/billing`}>\n      <div className=\"mb-6 w-full rounded-xl border border-gray p-8\">\n        <div className=\"mb-2 font-bold\">Payment Method</div>\n        <ManageCreditCard client={client} practice={practice} />\n      </div>\n      <PaymentDirectory communicationSettings={communicationSettings} clientId={client.id} />\n    </ClientPageView>\n  )\n}\n\nexport default function ClientBillingPage(props) {\n  return (\n    <GraphQLProvider>\n      <Billing {...props} />\n    </GraphQLProvider>\n  )\n}\n","import React, { useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\nimport SendIntakeFormButton from \"../IntakeForms/SendIntakeFormButton\"\n\nimport ClientPageView from \"./ClientPageView\"\n\nconst CLIENT_INTAKE_FORM_QUERY = `\n  query IntakeForm($clientId: ID!) {\n    client(clientId: $clientId) {\n      id\n      intakeForm { text time }\n      intakeLastSentAt\n    }\n  }\n`\n\nconst IntakeForm = ({ client: clientProp, upcomingAppointments, clientNotesEnabled }) => {\n  const [client] = useState(clientProp)\n  const [{ data, fetching }] = useQuery({\n    query: CLIENT_INTAKE_FORM_QUERY,\n    variables: { clientId: client.id },\n    requestPolicy: \"network-only\"\n  })\n\n  const rawJson = data?.client?.intakeForm?.text\n  const parsedJson = rawJson && JSON.parse(rawJson)\n\n  return (\n    <ClientPageView\n      client={client}\n      upcomingAppointments={upcomingAppointments}\n      clientNotesEnabled={clientNotesEnabled}\n      path={`/portal/clients/${client.id}/intake_form`}>\n      {fetching ? (\n        <LoadingSpinner />\n      ) : parsedJson ? (\n        <div className=\"mb-6\">\n          {Object.entries(parsedJson).map((row) => (\n            <div key={row[0]} className=\"mb-2 flex flex-col\">\n              <span className=\"font-bold\">{row[0].replace(\"-Comment\", \" (Comment)\")}</span>\n              {Array.isArray(row[1]) ? (\n                <ul className=\"list-inside list-disc\">\n                  {row[1].map((item, index) => (\n                    <>\n                      {typeof item === \"object\" ? (\n                        <li key={index}>\n                          Row {index + 1}:\n                          <ul className=\"ml-4 list-inside list-disc\">\n                            {Object.entries(item).map(([subKey, subValue]) => (\n                              <li key={subKey}>\n                                {subKey}: {subValue}\n                              </li>\n                            ))}\n                          </ul>\n                        </li>\n                      ) : (\n                        <li key={index}>{item}</li>\n                      )}\n                    </>\n                  ))}\n                </ul>\n              ) : typeof row[1] === \"object\" ? (\n                <div>\n                  {Object.entries(row[1]).map(([key, value]) => (\n                    <li key={key}>\n                      {key}:{\" \"}\n                      {typeof value === \"object\" ? (\n                        <ul className=\"ml-4 list-inside list-disc\">\n                          {Object.entries(value).map(([subKey, subValue]) => (\n                            <li key={subKey}>\n                              {subKey}: {subValue}\n                            </li>\n                          ))}\n                        </ul>\n                      ) : (\n                        value\n                      )}\n                    </li>\n                  ))}\n                </div>\n              ) : typeof row[1] === \"string\" && row[1].startsWith(\"data:image\") ? (\n                <img src={row[1]} alt=\"intake form image\" className=\"max-h-[200px] max-w-[200px]\" />\n              ) : (\n                <span>{row[1] === true ? \"Yes\" : row[1] === false ? \"No\" : row[1]}</span>\n              )}\n            </div>\n          ))}\n        </div>\n      ) : (\n        <div>\n          <p className=\"mb-4\">\n            {data?.client?.intakeLastSentAt\n              ? \"This client has not submitted their intake form.\"\n              : \"This client has not been sent an intake form.\"}\n          </p>\n          <SendIntakeFormButton clientId={client.id} intakeLastSentAt={data?.client?.intakeLastSentAt} />\n        </div>\n      )}\n    </ClientPageView>\n  )\n}\n\nexport default function ClientIntakeForm(props) {\n  return (\n    <GraphQLProvider>\n      <IntakeForm {...props} />\n    </GraphQLProvider>\n  )\n}\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Label, TextArea } from \"../../components/shared/Inputs\"\nimport { Divider } from \"../../components/shared/Layout\"\n\nimport ClientPageView from \"./ClientPageView\"\n\nconst ADD_NOTE_MUTATION = `\n  mutation($text: String!, $clientId: ID!) {\n    addNote(text: $text, clientId: $clientId) {\n      result\n      errors\n    }\n  }\n`\n\nconst ClientNotes = ({ client: clientProp }) => {\n  const [client, setClient] = useState(clientProp)\n  const [text, setText] = useState(\"\")\n  const [{ fetching }, addNote] = useMutation(ADD_NOTE_MUTATION)\n\n  const addNoteToClient = () => {\n    addNote({ text, clientId: client.id }).then((result) => {\n      if (result.data?.addNote?.result === \"success\") {\n        setText(\"\")\n        setClient((prev) => ({\n          ...prev,\n          notes: [\n            ...prev.notes,\n            {\n              text,\n              time: new Date().toISOString()\n            }\n          ]\n        }))\n        console.log(\"Note added successfully\")\n      } else {\n        console.error(result)\n      }\n    })\n  }\n\n  return (\n    <ClientPageView client={client}>\n      <Label>Client notes</Label>\n      <div className=\"mb-4 rounded-lg border border-gray p-4\">\n        {client.notes.map((note, i) => (\n          <>\n            <div key={note.time} className=\"flex gap-4\">\n              <div className=\"flex-none font-bold\">{dayjs(note.time).format(\"MMM Do, YYYY, h:mm A\")}</div>\n              <div>{note.text}</div>\n            </div>\n            {i < client.notes.length - 1 && <Divider className=\"my-4\" />}\n          </>\n        ))}\n      </div>\n      <Label htmlFor=\"note-textarea\">Add a new note</Label>\n      <TextArea id=\"note-textarea\" onChange={(e) => setText(e.target.value)} value={text} />\n      <Button onClick={addNoteToClient} disabled={fetching}>\n        Submit\n      </Button>\n    </ClientPageView>\n  )\n}\n\nexport default ClientNotes\n","import React, { useEffect, useRef, useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { sanitize } from \"../../utils/utils\"\n\nimport { Button } from \"./Buttons\"\nimport { TextArea } from \"./Inputs\"\n\nconst APPOINTMENT_NOTES_QUERY = `\n  query AppointmentNote($id: ID!) {\n    appointment(id: $id) {\n      id\n      appointmentNote { text time }\n    }\n  }\n`\n\nconst ADD_NOTE_MUTATION = `\n  mutation($text: String!, $clientId: ID!, $noteType: String, $appointmentId: ID) {\n    addNote(text: $text, clientId: $clientId, noteType: $noteType, appointmentId: $appointmentId) {\n      result\n      errors\n    }\n  }\n`\n\nconst AppointmentNotes = ({ appointment, openAppointmentToken }) => {\n  const [text, setText] = useState(\"\")\n  const [editing, setEditing] = useState(false)\n  const [{ data, fetching }, refetchQuery] = useQuery({\n    query: APPOINTMENT_NOTES_QUERY,\n    variables: { id: appointment.id },\n    requestPolicy: \"network-only\"\n  })\n\n  const [{ fetching: addNoteFetching }, addNote] = useMutation(ADD_NOTE_MUTATION)\n  const ref = useRef(null)\n\n  useEffect(() => {\n    if (openAppointmentToken === appointment.instantActionToken) {\n      setEditing(true)\n    }\n  }, [openAppointmentToken])\n\n  useEffect(() => {\n    if (editing && ref.current) ref.current.focus()\n  }, [editing])\n\n  const onSave = () => {\n    addNote({ text, appointmentId: appointment.id, noteType: \"appointment\", clientId: appointment.client.id }).then(\n      (result) => {\n        if (result.data?.addNote?.result === \"success\") {\n          refetchQuery()\n        } else {\n          console.error(result) // eslint-disable-line no-console\n        }\n      }\n    )\n  }\n\n  const appointmentNoteText = data?.appointment?.appointmentNote?.text || \"\"\n  const saveDisabled = fetching || addNoteFetching || text.length < 1\n  const disabled = fetching || addNoteFetching\n\n  return (\n    <>\n      <div className={disabled ? \"opacity-50\" : \"\"}>\n        {editing ? (\n          <div>\n            <div className=\"mb-2\">\n              <div className=\"mb-1 font-bold\">Appointment notes</div>\n            </div>\n            <TextArea value={text} onChange={(e) => setText(e.target.value)} ref={ref} />\n            <div className=\"mt-4 flex justify-end gap-4\">\n              <Button\n                type=\"tertiary\"\n                size=\"small\"\n                onClick={() => {\n                  setEditing(false)\n                  setText(appointmentNoteText)\n                }}>\n                Cancel\n              </Button>\n              <Button\n                disabled={saveDisabled}\n                size=\"small\"\n                onClick={() => {\n                  if (saveDisabled) return\n                  setEditing(false)\n                  onSave()\n                }}>\n                Save\n              </Button>\n            </div>\n          </div>\n        ) : appointmentNoteText ? (\n          <div>\n            <div className=\"text-sm font-bold\">Notes</div>\n            <div dangerouslySetInnerHTML={{ __html: sanitize(appointmentNoteText.replaceAll(\"\\n\", \"<br />\")) }} />\n            <Button\n              type=\"link\"\n              className=\"no-underline\"\n              onClick={() => {\n                if (disabled) return\n                setEditing(true)\n                setText(appointmentNoteText)\n              }}>\n              Edit note\n            </Button>\n          </div>\n        ) : (\n          <div>\n            <Button\n              type=\"link\"\n              className=\"no-underline\"\n              onClick={() => {\n                if (disabled) return\n                setEditing(true)\n                setText(appointmentNoteText)\n              }}>\n              + Add note\n            </Button>\n          </div>\n        )}\n      </div>\n    </>\n  )\n}\n\nexport default AppointmentNotes\n","import dayjs from \"dayjs\"\nimport React, { useEffect, useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport AppointmentNotes from \"../../components/shared/AppointmentNotes\"\nimport Badge from \"../../components/shared/Badge\"\nimport ClientNotes from \"../../components/shared/ClientNotes\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\n\nconst PAST_APPOINTMENTS_QUERY = `\n  query PastAppointments($clientId: ID) {\n    pastAppointments(clientId: $clientId) {\n      id\n      startsAt\n      endsAt\n      amountCents\n      timeZone\n      instantActionToken\n      state\n      fullTotal\n      client { id }\n      service { id name }\n      location { id name }\n    }\n  }\n`\n\nexport default function ClientChronology({ client, clientNotesEnabled }) {\n  const [openAppointmentToken, setOpenAppointmentToken] = useState(null)\n  const [{ data, fetching }] = useQuery({\n    query: PAST_APPOINTMENTS_QUERY,\n    variables: { clientId: client.id },\n    requestPolicy: \"cache-and-network\"\n  })\n\n  useEffect(() => {\n    if (data && location.hash) setOpenAppointmentToken(location.hash.substring(1))\n  }, [data])\n\n  const pastAppointments = data?.pastAppointments\n\n  return (\n    <div>\n      {fetching ? (\n        <LoadingSpinner />\n      ) : (\n        <div>\n          {clientNotesEnabled && (\n            <div className=\"mb-6 rounded-xl bg-orange-light p-6\">\n              <ClientNotes client={client} className=\"bg-orange-light\" />\n            </div>\n          )}\n          {pastAppointments && pastAppointments.length > 0 ? (\n            <div>\n              {pastAppointments.map((appointment) => (\n                <div key={appointment.instantActionToken} className=\"mb-4 flex w-full items-start gap-4\">\n                  <Badge type=\"info\" className=\"w-20 shrink-0 text-center\">\n                    {dayjs(appointment.startsAt).format(\"MMM D\")}\n                  </Badge>\n                  <div className=\"flex w-full justify-between gap-8 border-b border-gray-light\">\n                    <div className=\"flex w-full flex-col gap-2 pb-4\">\n                      <div className=\"font-bold\">{appointment.service.name}</div>\n                      <div className=\"text-sm\">{appointment.location.name}</div>\n                      {clientNotesEnabled && (\n                        <AppointmentNotes appointment={appointment} openAppointmentToken={openAppointmentToken} />\n                      )}\n                    </div>\n                    <div className=\"flex-none text-sm text-gray-dark\">\n                      {dayjs(appointment.startsAt).format(\"h:mm\")} - {dayjs(appointment.endsAt).format(\"h:mm A\")}\n                    </div>\n                  </div>\n                </div>\n              ))}\n            </div>\n          ) : (\n            <div className=\"text-sm\">No past appointments</div>\n          )}\n        </div>\n      )}\n    </div>\n  )\n}\n","import React, { useState } from \"react\"\n\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport ClientChronology from \"./ClientChronology\"\nimport ClientPageView from \"./ClientPageView\"\n\nconst Overview = ({ client: clientProp, upcomingAppointments, clientNotesEnabled }) => {\n  const [client] = useState(clientProp)\n\n  return (\n    <ClientPageView\n      client={client}\n      upcomingAppointments={upcomingAppointments}\n      path={`/portal/clients/${client.id}`}\n      clientNotesEnabled={clientNotesEnabled}>\n      <ClientChronology client={client} clientNotesEnabled={clientNotesEnabled} />\n    </ClientPageView>\n  )\n}\n\nexport default function ClientOverview(props) {\n  return (\n    <GraphQLProvider>\n      <Overview {...props} />\n    </GraphQLProvider>\n  )\n}\n","import React, { useCallback, useEffect, useState } from \"react\"\nimport { Model } from \"survey-core\"\nimport { Survey } from \"survey-react-ui\"\nimport { useMutation } from \"urql\"\n\nimport \"survey-core/defaultV2.min.css\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\n\nconst SAVE_INTAKE_FORM_RESPONSE_MUTATION = `\n  mutation($uniqueId: ID!, $formData: String!) {\n    saveIntakeFormResponse(uniqueId: $uniqueId, formData: $formData) {\n      result\n      errors\n    }\n  }\n`\n\nconst IntakeFormPage = ({ data, uniqueId, theme, alreadyCompleted, redirectUrl }) => {\n  const [countdown, setCountdown] = useState(null)\n  const [, saveIntakeFormResponse] = useMutation(SAVE_INTAKE_FORM_RESPONSE_MUTATION)\n\n  useEffect(() => {\n    if (countdown > 0) {\n      const timer = setTimeout(() => {\n        setCountdown(countdown - 1)\n      }, 1000)\n      return () => clearTimeout(timer)\n    } else if (countdown === 0) {\n      window.location.href = redirectUrl\n    }\n  }, [countdown])\n\n  useEffect(() => {\n    if (alreadyCompleted) {\n      setCountdown(5)\n    }\n  }, [alreadyCompleted])\n\n  const survey = new Model(data)\n  survey.applyTheme(theme)\n  const surveyComplete = useCallback((survey) => {\n    saveIntakeFormResponse({ uniqueId, formData: JSON.stringify(survey.data) }).then((result) => {\n      if (result.error) {\n        console.error(result.error)\n      } else if (result.data.saveIntakeFormResponse.result === \"success\") {\n        setCountdown(5)\n        console.log(\"success\")\n      } else {\n        console.error(result)\n      }\n    })\n  }, [])\n\n  survey.onComplete.add(surveyComplete)\n\n  return (\n    <div className=\"h-screen\">\n      {countdown || alreadyCompleted ? (\n        <div className=\"flex h-full items-center justify-center\">\n          <div className=\"text-center\">\n            <h1 className=\"text-2xl\">\n              {alreadyCompleted\n                ? \"This form has already been completed.\"\n                : \"Thank you for completing the intake form. Your response has been saved.\"}\n            </h1>\n            <p>You will be redirected to your practitioner&apos;s website in {countdown} seconds</p>\n          </div>\n        </div>\n      ) : (\n        <Survey model={survey} />\n      )}\n    </div>\n  )\n}\n\nexport default function IntakeForm(props) {\n  return (\n    <GraphQLProvider>\n      <IntakeFormPage {...props} />\n    </GraphQLProvider>\n  )\n}\n","import React from \"react\"\nimport * as SurveyCreatorCore from \"survey-creator-core\"\nimport { SurveyCreator, SurveyCreatorComponent } from \"survey-creator-react\"\nimport \"survey-core/survey.i18n.js\"\nimport \"survey-creator-core/survey-creator-core.i18n.js\"\nimport \"survey-core/defaultV2.css\"\nimport \"survey-creator-core/survey-creator-core.css\"\nimport \"./IntakeFormsPage.sass\"\n\nimport Breadcrumbs from \"../components/shared/Breadcrumbs\"\nimport Typography from \"../components/shared/Typography\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\nimport { urqlClient } from \"../utils/utils\"\n\nconst questionTypes = [\n  \"boolean\",\n  \"checkbox\",\n  \"comment\",\n  \"dropdown\",\n  \"tagbox\",\n  // \"expression\",\n  // \"file\",\n  // \"html\",\n  \"image\",\n  // \"imagepicker\",\n  \"matrix\",\n  \"matrixdropdown\",\n  \"matrixdynamic\",\n  \"multipletext\",\n  \"panel\",\n  \"paneldynamic\",\n  \"radiogroup\",\n  \"rating\",\n  \"ranking\",\n  \"signaturepad\",\n  \"text\"\n]\n\nconst UPSERT_INTAKE_FORM_MUTATION = `\n  mutation($data: String!, $saveNo: Int!) {\n    upsertIntakeForm(data: $data, saveNo: $saveNo) {\n      result\n    }\n  }\n`\n\nconst UPSERT_INTAKE_FORM_THEME_MUTATION = `\n  mutation($data: String!) {\n    upsertIntakeFormTheme(data: $data) {\n      result\n    }\n  }\n`\n\nconst enLocale = SurveyCreatorCore.localization.getLocale(\"en\")\nenLocale.ed.surveyTypeName = \"Outline\"\n\nfunction IntakeForms({ formJson, theme }) {\n  const options = {\n    showLogicTab: false,\n    showJSONEditorTab: false,\n    showThemeTab: true,\n    questionTypes\n  }\n  const creator = new SurveyCreator(options)\n\n  const whiteList = [\n    \"title\",\n    \"description\",\n    \"isRequired\",\n    \"showCommentArea\",\n    \"commentText\",\n    \"commentPlaceholder\",\n    \"labelTrue\",\n    \"labelFalse\",\n    \"swapOrder\",\n    \"choices\",\n    \"choicesFromQuestion\",\n    \"choicesFromQuestionMode\",\n    \"choiceValuesFromQuestion\",\n    \"choiceTextsFromQuestion\",\n    \"choicesOrder\"\n  ]\n\n  creator.onShowingProperty.add(function (_, options) {\n    if (options.obj.constructor.name !== \"ThemeModel\" && options.obj.constructor.name !== \"HeaderModel\") {\n      options.canShow = whiteList.indexOf(options.property.name) > -1\n    }\n  })\n\n  creator.isAutoSave = true\n  creator.showState = true\n  creator.JSON = JSON.parse(formJson)\n  creator.theme = JSON.parse(theme)\n  creator.toolbox.forceCompact = false\n  creator.saveSurveyFunc = (saveNo, callback) => {\n    urqlClient\n      .mutation(UPSERT_INTAKE_FORM_MUTATION, { data: JSON.stringify(creator.JSON), saveNo })\n      .toPromise()\n      .then((result) => {\n        if (result.error) {\n          console.error(result)\n          callback(saveNo, false)\n        } else {\n          callback(saveNo, true)\n        }\n      })\n  }\n\n  creator.saveThemeFunc = (saveNo, callback) => {\n    urqlClient\n      .mutation(UPSERT_INTAKE_FORM_THEME_MUTATION, { data: JSON.stringify(creator.theme), saveNo })\n      .toPromise()\n      .then((result) => {\n        if (result.error) {\n          console.error(result)\n          callback(saveNo, false)\n        } else {\n          callback(saveNo, true)\n        }\n      })\n  }\n\n  return (\n    <div className=\"h-[calc(100vh-156px)]\">\n      <div className=\"flex flex-col\">\n        <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Intake Form\" />\n        <Typography as=\"h1\" variant=\"h3\">\n          Intake Form\n        </Typography>\n        <Typography variant=\"subtitle\">Customize the intake form that you can send to your clients</Typography>\n      </div>\n      <SurveyCreatorComponent creator={creator} />\n    </div>\n  )\n}\n\nexport default function IntakeFormsPage(props) {\n  return (\n    <GraphQLProvider>\n      <IntakeForms {...props} />\n    </GraphQLProvider>\n  )\n}\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport default function InfoParagraph({ children, className }) {\n  className = twMerge(\"text-sm text-gray-dark\", className)\n  return <p className={className}>{children}</p>\n}\n","import { PayPalButtons } from \"@paypal/react-paypal-js\"\nimport React, { useState, useCallback } from \"react\"\nimport { useMutation } from \"urql\"\n\nconst CREATE_PAYPAL_ORDER_MUTATION = `\n  mutation($appointmentId: ID!, $tipAmountCents: Int!, $tipOnly: Boolean!) {\n    createPaypalOrder(appointmentId: $appointmentId, tipAmountCents: $tipAmountCents, tipOnly: $tipOnly) {\n      result\n      orderId\n      errors\n    }\n  }\n`\n\nconst CAPTURE_PAYPAL_PAYMENT_MUTATION = `\n  mutation($appointmentId: ID!, $orderId: String!) {\n    capturePaypalPayment(appointmentId: $appointmentId, orderId: $orderId) {\n      result\n      errors\n      appointment {\n        id\n        clientPaymentStatus\n        tipAmountCents\n      }\n    }\n  }\n`\n\nconst PaypalPaymentButton = ({\n  appointment,\n  tipAmountCents = 0,\n  tipOnly = false,\n  fundingSource = \"paypal\",\n  onSuccess,\n  onError\n}) => {\n  const [loading, setLoading] = useState(false)\n  const [, createOrder] = useMutation(CREATE_PAYPAL_ORDER_MUTATION)\n  const [, capturePayment] = useMutation(CAPTURE_PAYPAL_PAYMENT_MUTATION)\n\n  const createOrderCallback = useCallback(async () => {\n    setLoading(true)\n    const response = await createOrder({\n      appointmentId: appointment.id,\n      tipAmountCents,\n      tipOnly\n    })\n    setLoading(false)\n\n    if (response.error || response.data?.createPaypalOrder?.result === \"failure\") {\n      onError(response.error?.message || response.data?.createPaypalOrder?.errors?.[0])\n      return null\n    }\n\n    return response.data?.createPaypalOrder?.orderId\n  }, [appointment.id, tipAmountCents, createOrder, onError])\n\n  return (\n    <PayPalButtons\n      forceReRender={[tipAmountCents]}\n      fundingSource={fundingSource}\n      disabled={loading}\n      createOrder={createOrderCallback}\n      onApprove={async (data) => {\n        setLoading(true)\n        const response = await capturePayment({\n          appointmentId: appointment.id,\n          orderId: data.orderID\n        })\n        setLoading(false)\n\n        if (response.error || response.data?.capturePaypalPayment?.result === \"failure\") {\n          onError(response.error?.message || response.data?.capturePaypalPayment?.errors?.[0])\n          return\n        }\n\n        onSuccess(response.data?.capturePaypalPayment?.appointment)\n      }}\n      onError={() => {\n        setLoading(false)\n      }}\n      style={{\n        layout: \"horizontal\",\n        color: fundingSource === \"venmo\" ? \"blue\" : \"gold\",\n        shape: \"rect\",\n        label: \"pay\"\n      }}\n    />\n  )\n}\n\nexport default PaypalPaymentButton\n","import React, { useState, useRef, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport PaymentProviderCardForm from \"../../components/payments/PaymentProviderCardForm\"\nimport { usePaymentProvider } from \"../../components/payments/PaymentProviderWrapper\"\nimport CurrencyInput from \"../../components/shared/CurrencyInput\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useAppointment } from \"../../contexts/AppointmentContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport useBrowserInfo from \"../../hooks/useBrowserInfo\"\nimport { capitalize, stringPriceToInteger } from \"../../utils/utils\"\n\nimport { ADD_TIP_TO_APPOINTMENT_MUTATION, CHARGE_TIP_ONLY_MUTATION } from \"./mutations\"\nimport PaypalPaymentButton from \"./PaypalPaymentButton\"\n\nconst PAYMENT_METHODS = {\n  SAVED_CARD: \"saved_card\",\n  NEW_CARD: \"new_card\",\n  PAYPAL: \"paypal\",\n  VENMO: \"venmo\"\n}\n\nconst PAYMENT_METHOD_DESCRIPTIONS = {\n  [PAYMENT_METHODS.PAYPAL]:\n    'After clicking \"Pay with PayPal\", you will be redirected to PayPal to complete your purchase securely.',\n  [PAYMENT_METHODS.VENMO]:\n    'After clicking \"Pay with Venmo\", you will be redirected to Venmo to complete your purchase securely.'\n}\n\nconst isFundingEnabled = (fundingSource) => {\n  if (!window.paypal) return false\n  return window.paypal.isFundingEligible(fundingSource)\n}\n\nconst AddPaymentModal = ({\n  headerLabel,\n  open,\n  closeModal,\n  onSave,\n  tipOnly = false,\n  actionButtonCopy,\n  onPaypalSuccess\n}) => {\n  const [loading, setLoading] = useState(false)\n  const [tipOption, setTipOption] = useState(\"\")\n  const [tipValue, setTipValue] = useState(0)\n  const { appointment } = useAppointment()\n  const { showToast } = useToast()\n  const browserInfo = useBrowserInfo()\n  const customTipInputRef = useRef(null)\n\n  const acceptsTips = appointment?.practice?.acceptsTips\n  const showPaypal = appointment.practice.hasPaypalPaymentsEnabled\n  const showVenmo = appointment.practice.hasVenmoPaymentsEnabled && isFundingEnabled(\"venmo\")\n  const isVenmoIncompatible = browserInfo?.isMobile && !browserInfo?.isCompatibleBrowser\n\n  const [, addTipToAppointment] = useMutation(ADD_TIP_TO_APPOINTMENT_MUTATION)\n  const [, chargeTipOnly] = useMutation(CHARGE_TIP_ONLY_MUTATION)\n\n  const { handleCardSavedOnProvider } = usePaymentProvider()\n\n  const handleCardSaved = async () => {\n    if (acceptsTips && tipOption === \"\") {\n      showToast({ content: \"Please select a tip option.\", type: \"error\", timeout: 4000 })\n      return\n    }\n\n    const showErrorAndClose = (message) => {\n      showToast({ content: `There was an error: ${message}`, type: \"error\" })\n      setLoading(false)\n      closeModal()\n    }\n\n    setLoading(true)\n\n    if (paymentMethod === PAYMENT_METHODS.NEW_CARD) {\n      const paymentProviderResult = await handleCardSavedOnProvider()\n      if (paymentProviderResult.error) {\n        showErrorAndClose(paymentProviderResult.error || \"An error occurred\")\n        return\n      }\n    }\n\n    if (!tipOnly && acceptsTips && tipValue !== appointment.tipAmountCents) {\n      const res = await addTipToAppointment({ appointmentId: appointment.id, tipAmount: tipValue })\n      if (res.data?.addTipToAppointment?.errors) {\n        showErrorAndClose(res.data.addTipToAppointment.errors.join(\", \") || \"An error occurred\")\n        return\n      }\n    }\n\n    if (tipOnly) {\n      const res = await chargeTipOnly({ appointmentId: appointment.id, tipAmount: tipValue })\n      if (res.data?.chargeTipOnly?.errors) {\n        showErrorAndClose(res.data.chargeTipOnly.errors.join(\", \") || \"An error occurred\")\n        return\n      }\n    }\n\n    setLoading(false)\n    onSave(tipValue)\n    closeModal()\n  }\n\n  const defaultPaymentMethod = appointment?.user?.defaultPaymentMethod || appointment?.client?.defaultPaymentMethod\n  const [paymentMethod, setPaymentMethod] = useState(\n    defaultPaymentMethod ? PAYMENT_METHODS.SAVED_CARD : PAYMENT_METHODS.NEW_CARD\n  )\n\n  const getDefaultPaymentMethodText = (paymentMethod) => {\n    if (!paymentMethod) return \"No payment method selected\"\n    return `${capitalize(paymentMethod.brand)} ending in ${paymentMethod.last4} • Expires ${paymentMethod.expMonth}/${\n      paymentMethod.expYear\n    }`\n  }\n\n  const TIPPING_OPTIONS = [\n    ...(!tipOnly ? [{ value: \"not-now\", label: \"Not now\" }] : []),\n    { value: \"10%\", label: `10% • $${((0.1 * appointment.amountCents) / 100).toFixed(2)}` },\n    { value: \"15%\", label: `15% • $${((0.15 * appointment.amountCents) / 100).toFixed(2)}` },\n    { value: \"20%\", label: `20% • $${((0.2 * appointment.amountCents) / 100).toFixed(2)}` },\n    { value: \"custom-tip\", label: \"Custom Tip\" }\n  ]\n\n  useEffect(() => {\n    if (tipOption === \"custom-tip\" && customTipInputRef.current) {\n      customTipInputRef.current.scrollIntoView({ behavior: \"smooth\", block: \"center\" })\n    }\n  }, [tipOption])\n\n  return (\n    <AnimatedModal\n      visible={open}\n      hideModal={closeModal}\n      header={headerLabel}\n      showFooter={paymentMethod !== PAYMENT_METHODS.PAYPAL && paymentMethod !== PAYMENT_METHODS.VENMO}\n      onSave={handleCardSaved}\n      actionButtonCopy={actionButtonCopy}\n      saveDisabled={loading}>\n      <div className=\"mt-4\">\n        <Typography variant=\"h5\" className=\"mb-4\">\n          Payment method\n        </Typography>\n        <div className=\"flex flex-col gap-2\">\n          {/* Credit card buttons */}\n          {defaultPaymentMethod && (\n            <RadioWithLabel\n              value={PAYMENT_METHODS.SAVED_CARD}\n              name=\"payment-method\"\n              label={getDefaultPaymentMethodText(defaultPaymentMethod)}\n              checked={paymentMethod === PAYMENT_METHODS.SAVED_CARD}\n              onChange={() => setPaymentMethod(PAYMENT_METHODS.SAVED_CARD)}\n            />\n          )}\n          <RadioWithLabel\n            value={PAYMENT_METHODS.NEW_CARD}\n            name=\"payment-method\"\n            label=\"New Credit card\"\n            checked={paymentMethod === PAYMENT_METHODS.NEW_CARD}\n            onChange={() => setPaymentMethod(PAYMENT_METHODS.NEW_CARD)}\n          />\n          {paymentMethod === PAYMENT_METHODS.NEW_CARD && <PaymentProviderCardForm practice={appointment.practice} />}\n\n          {/* PayPal / Venmo buttons */}\n          {showPaypal && (\n            <>\n              <RadioWithLabel\n                value={PAYMENT_METHODS.PAYPAL}\n                name=\"payment-method\"\n                label=\"PayPal\"\n                checked={paymentMethod === PAYMENT_METHODS.PAYPAL}\n                onChange={() => setPaymentMethod(PAYMENT_METHODS.PAYPAL)}\n              />\n              {paymentMethod === PAYMENT_METHODS.PAYPAL && (\n                <div className=\"ml-6 text-sm\">{PAYMENT_METHOD_DESCRIPTIONS[PAYMENT_METHODS.PAYPAL]}</div>\n              )}\n            </>\n          )}\n          {showVenmo && (\n            <>\n              <RadioWithLabel\n                value={PAYMENT_METHODS.VENMO}\n                name=\"payment-method\"\n                label=\"Venmo\"\n                checked={paymentMethod === PAYMENT_METHODS.VENMO}\n                onChange={() => setPaymentMethod(PAYMENT_METHODS.VENMO)}\n                disabled={isVenmoIncompatible}\n              />\n              {paymentMethod === PAYMENT_METHODS.VENMO && (\n                <div className=\"ml-6 text-sm\">{PAYMENT_METHOD_DESCRIPTIONS[PAYMENT_METHODS.VENMO]}</div>\n              )}\n              {isVenmoIncompatible && (\n                <Banner type=\"warning\" className=\"text-sm\">\n                  {browserInfo?.isIOS && \"Please use Safari browser on iOS to pay with Venmo.\"}\n                  {browserInfo?.isAndroid && \"Please use Chrome browser on Android to pay with Venmo.\"}\n                </Banner>\n              )}\n            </>\n          )}\n        </div>\n      </div>\n      {acceptsTips && (\n        <div className=\"mt-4\">\n          <Typography variant=\"h5\" className=\"mb-4\">\n            Add a tip\n          </Typography>\n          <div className=\"flex flex-col gap-2\">\n            {TIPPING_OPTIONS.map((option) => (\n              <RadioWithLabel\n                key={option.value}\n                value={option.value}\n                name=\"tip\"\n                label={option.label}\n                checked={tipOption === option.value}\n                onChange={() => {\n                  setTipOption(option.value)\n                  if (option.value === \"not-now\") {\n                    setTipValue(0)\n                    return\n                  }\n                  if (option.value === \"custom-tip\") {\n                    setTipValue(parseInt(appointment.amountCents) * 0.1)\n                    return\n                  }\n                  setTipValue((parseInt(appointment.amountCents) * parseInt(option.value)) / 100)\n                }}\n              />\n            ))}\n          </div>\n          {tipOption === \"custom-tip\" && (\n            <div ref={customTipInputRef}>\n              <CurrencyInput\n                label=\"Custom tip\"\n                value={tipValue / 100}\n                onChange={(e) => {\n                  if (e.target.value === \"\") {\n                    setTipValue(0)\n                    return\n                  }\n                  setTipValue(stringPriceToInteger(e.target.value))\n                }}\n                className=\"mt-4\"\n                autoFocus\n              />\n            </div>\n          )}\n        </div>\n      )}\n      {(paymentMethod === PAYMENT_METHODS.PAYPAL || paymentMethod === PAYMENT_METHODS.VENMO) && (\n        <div className=\"mt-4\">\n          <PaypalPaymentButton\n            appointment={appointment}\n            tipAmountCents={tipValue}\n            tipOnly={tipOnly}\n            fundingSource={paymentMethod === PAYMENT_METHODS.VENMO ? \"venmo\" : \"paypal\"}\n            onSuccess={(appointmentResponse) => {\n              onPaypalSuccess(appointmentResponse)\n              closeModal()\n            }}\n            onError={(error) => {\n              showToast({ content: `Payment failed: ${error}`, type: \"error\" })\n            }}\n          />\n        </div>\n      )}\n    </AnimatedModal>\n  )\n}\n\nexport default AddPaymentModal\n","import { useState, useEffect } from \"react\"\n\nexport default function useBrowserInfo() {\n  const [browserInfo, setBrowserInfo] = useState(null)\n\n  useEffect(() => {\n    const userAgent = navigator.userAgent\n\n    const browserData = {\n      isChrome: /Chrome/.test(userAgent) && !/Chromium|Edge/.test(userAgent),\n      isSafari: /Safari/.test(userAgent) && !/Chrome/.test(userAgent),\n      isMobile: /Mobile|Android|iPhone|iPad|iPod/i.test(userAgent),\n      isAndroid: /Android/i.test(userAgent),\n      isIOS: /iPhone|iPad|iPod/i.test(userAgent)\n    }\n\n    browserData.isCompatibleBrowser =\n      (browserData.isIOS && browserData.isSafari) || (browserData.isAndroid && browserData.isChrome)\n\n    setBrowserInfo(browserData)\n  }, [])\n\n  return browserInfo\n}\n","export const ADD_TIP_TO_APPOINTMENT_MUTATION = `\nmutation AddTipToAppointment($appointmentId: ID!, $tipAmount: Int!) {\n  addTipToAppointment(appointmentId: $appointmentId, tipAmount: $tipAmount) {\n    result\n    errors\n  }\n}\n`\nexport const CHARGE_TIP_ONLY_MUTATION = `\nmutation ChargeTipOnly($appointmentId: ID!, $tipAmount: Int!) {\n  chargeTipOnly(appointmentId: $appointmentId, tipAmount: $tipAmount) {\n    result\n    errors\n  }\n}\n`\n","import { PayPalScriptProvider } from \"@paypal/react-paypal-js\"\nimport React, { useState } from \"react\"\n\nimport PaymentProviderWrapper from \"../../components/payments/PaymentProviderWrapper\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { useAppointment } from \"../../contexts/AppointmentContext\"\n\nimport AddPaymentModal from \"./AddPaymentModal\"\n\nconst AddPaymentButton = ({\n  label,\n  modalHeaderLabel,\n  onSave,\n  loading,\n  tipOnly = false,\n  modalActionButtonCopy,\n  onPaypalSuccess\n}) => {\n  const [paymentModalOpen, setPaymentModalOpen] = useState(false)\n  const { appointment } = useAppointment()\n\n  const onClick = () => {\n    setPaymentModalOpen(true)\n  }\n\n  const renderModalContent = () => {\n    if (appointment.practice.hasPaypalAccount) {\n      return (\n        <PayPalScriptProvider\n          options={{\n            clientId: window.App.paypal_client_id,\n            merchantId: window.App.paypal_merchant_id,\n            dataPartnerAttributionId: window.App.paypal_partner_attribution_id,\n            currency: appointment.amountCurrency,\n            intent: \"capture\",\n            enableFunding: \"venmo\",\n            components: \"buttons,marks,funding-eligibility\"\n            // buyerCountry: \"US\" // Add this in development to test Venmo\n          }}>\n          <AddPaymentModal\n            headerLabel={modalHeaderLabel}\n            open={paymentModalOpen}\n            closeModal={() => setPaymentModalOpen(false)}\n            onSave={onSave}\n            tipOnly={tipOnly}\n            actionButtonCopy={modalActionButtonCopy}\n            onPaypalSuccess={onPaypalSuccess}\n          />\n        </PayPalScriptProvider>\n      )\n    }\n\n    return (\n      <AddPaymentModal\n        headerLabel={modalHeaderLabel}\n        open={paymentModalOpen}\n        closeModal={() => setPaymentModalOpen(false)}\n        onSave={onSave}\n        tipOnly={tipOnly}\n        actionButtonCopy={modalActionButtonCopy}\n        onPaypalSuccess={onPaypalSuccess}\n      />\n    )\n  }\n\n  return (\n    <>\n      <Button disabled={loading} onClick={onClick}>\n        {label || \"Add credit card\"}\n      </Button>\n\n      {paymentModalOpen && (\n        <PaymentProviderWrapper practice={appointment.practice} appointment={appointment}>\n          {renderModalContent()}\n        </PaymentProviderWrapper>\n      )}\n    </>\n  )\n}\n\nexport default AddPaymentButton\n","import { useModal } from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { ConfirmCancelModal } from \"../../components/shared/Modal\"\n\nconst CLIENT_CANCEL_MUTATION = `\n  mutation($appointmentId: ID!) {\n    clientCancel(appointmentId: $appointmentId) {\n      result\n    }\n  }\n`\n\nconst CancelAppointmentButton = ({ appointmentId, onCancel, onError }) => {\n  const [cancelButtonLoading, setCancelButtonLoading] = useState(false)\n\n  const [, cancelAppointment] = useMutation(CLIENT_CANCEL_MUTATION)\n\n  const confirmCancelModal = useModal(ConfirmCancelModal)\n\n  return (\n    <button\n      className=\"hover:text-gray-dark\"\n      onClick={() => {\n        confirmCancelModal.show({ loading: cancelButtonLoading }).then(() => {\n          setCancelButtonLoading(true)\n          cancelAppointment({ appointmentId }).then((res) => {\n            res.error ? onError(res.error) : onCancel()\n            setCancelButtonLoading(false)\n            confirmCancelModal.hide()\n          })\n        })\n      }}>\n      Cancel appointment\n    </button>\n  )\n}\n\nexport default CancelAppointmentButton\n","import React from \"react\"\n\nexport default function OfflinePaymentMethods({ appointment }) {\n  if (!appointment) return null\n  if (!appointment.practice) return null\n  return (\n    <div className=\"mt-4 flex flex-col\">\n      <h3 className=\"mb-2 pb-2 text-center font-semibold tracking-wide\">\n        You can {appointment.practice.isStripeApproved && \"also\"} pay with:\n      </h3>\n      <div className=\"flex flex-row flex-wrap items-center justify-evenly\">\n        {appointment.practice.acceptsCash && (\n          <div className=\"mb-4 mr-4 flex flex-row items-center\">\n            <img src=\"/images/payments-icon-cash.png\" className=\"mr-2\" width=\"32px\" height=\"32px\" />\n            <p className=\"font-semibold\">Cash</p>\n          </div>\n        )}\n        {appointment.practice.acceptsOfflineCreditCard && (\n          <div className=\"mb-4 mr-4 flex flex-row items-center\">\n            <img src=\"/images/payments-icon-credit-card.png\" className=\"mr-2\" width=\"32px\" height=\"32px\" />\n            <p className=\"font-semibold\">Credit Card</p>\n          </div>\n        )}\n        {appointment.practice.acceptsPaypal && (\n          <div className=\"mb-4 mr-4 flex flex-row items-center\">\n            <img src=\"/images/payments-icon-paypal.png\" className=\"mr-2\" width=\"24px\" height=\"24px\" />\n            <p className=\"font-semibold\">PayPal</p>\n          </div>\n        )}\n        {appointment.practice.acceptsVenmo && (\n          <div className=\"mb-4 mr-4 flex flex-row items-center\">\n            <img src=\"/images/payments-icon-venmo.png\" className=\"mr-2\" width=\"24px\" height=\"24px\" />\n            <p className=\"font-semibold\">Venmo</p>\n          </div>\n        )}\n        {appointment.practice.acceptsZelle && (\n          <div className=\"mb-4 mr-4 flex flex-row items-center\">\n            <img src=\"/images/payments-icon-zelle.png\" className=\"mr-2\" width=\"24px\" height=\"24px\" />\n            <p className=\"font-semibold\">Zelle</p>\n          </div>\n        )}\n      </div>\n    </div>\n  )\n}\n","import React from \"react\"\n\nconst PaymentStatusBox = ({ appointment }) => {\n  const { clientPaymentStatus: status, defaultPaymentMethodData: paymentMethod } = appointment\n  if (status === \"Free\") return <></>\n\n  let statusMessage = {\n    Paid: \"Your payment has been processed successfully.\",\n    Failed: \"Your payment has failed. Please retry or add a new payment method.\",\n    Pending: \"Your payment method will be charged after your appointment.\",\n    \"Card needed\": \"Please add a payment method before your appointment.\",\n    \"Card needed past due\": \"Your payment is past due. Please add a credit card to pay for your appointment.\",\n    \"Past due\": \"Your payment is past due. Please add a credit card or retry the card on file\"\n  }[status]\n\n  if ((status === \"Past due\" || status === \"Pending\") && paymentMethod) {\n    statusMessage += ` (${paymentMethod.brand} ending in ${paymentMethod.last4})`\n  }\n\n  return (\n    <div className={`my-4 rounded p-4 ${status !== \"Paid\" && status !== \"Pending\" ? \"bg-red-light\" : \"bg-offwhite\"}`}>\n      {status !== \"Paid\" && status !== \"Pending\" && <i className=\"icon-warning-icon mr-1\" />}\n      {statusMessage}\n    </div>\n  )\n}\n\nexport default PaymentStatusBox\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport dayjs from \"dayjs\"\nimport React, { useEffect, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { PAYMENT_STATUS_OPTIONS } from \"../@core/appointment/appointment.model\"\nimport InfoParagraph from \"../components/shared/InfoParagraph\"\nimport { Divider } from \"../components/shared/Layout\"\nimport Toast from \"../components/shared/Toast\"\nimport { AppointmentProvider, useAppointment } from \"../contexts/AppointmentContext\"\nimport { ToastProvider, useToast } from \"../contexts/ToastContext\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\nimport { CHARGE_CARD_MUTATION } from \"../utils/mutations\"\nimport { formatPhone } from \"../utils/utils\"\n\nimport AddPaymentButton from \"./ManageAppointmentsConsumer/AddPaymentButton\"\nimport CancelAppointmentButton from \"./ManageAppointmentsConsumer/CancelAppointmentButton\"\nimport OfflinePaymentMethods from \"./ManageAppointmentsConsumer/OfflinePaymentMethods\"\nimport PaymentStatusBox from \"./ManageAppointmentsConsumer/PaymentStatusBox\"\n\n// import RescheduleAppointmentButton from \"./ManageAppointmentsConsumer/RescheduleAppointmentButton\"\n\nconst PriceRow = ({ label, value, className }) => (\n  <div className={twMerge(\"flex items-center justify-between\", className)}>\n    <span className=\"text-left\">{label}</span>\n    <span className=\"ml-2 font-bold\">{value}</span>\n  </div>\n)\n\nconst PageContent = ({ appointmentData }) => {\n  const { showToast } = useToast()\n\n  const { setAppointment: setContextAppointment } = useAppointment()\n  useEffect(() => {\n    setContextAppointment(appointmentData)\n  }, [appointmentData])\n\n  const [appointment, setAppointment] = useState(appointmentData)\n  const [alertContent, setAlertContent] = useState(\"\")\n  const [alertVisible, setAlertVisible] = useState(false)\n  const [alertWarning, setAlertWarning] = useState(false)\n  const [buttonLoading, setButtonLoading] = useState(false)\n\n  const timeZone =\n    !appointment.ianaTimeZone || appointment.location.kind === \"virtual\" ? dayjs.tz.guess() : appointment.ianaTimeZone\n  const startsAt = dayjs(appointment.startsAt).tz(timeZone)\n  const endsAt = dayjs(appointment.endsAt).tz(timeZone)\n  const appointmentIsPast = appointment.past\n  const status = appointment.clientPaymentStatus\n  const shouldPayNow =\n    status === PAYMENT_STATUS_OPTIONS.CARD_NEEDED_PAST_DUE ||\n    status === PAYMENT_STATUS_OPTIONS.PAST_DUE ||\n    status === PAYMENT_STATUS_OPTIONS.FAILED\n  const showAddCardButton = [\n    PAYMENT_STATUS_OPTIONS.PAST_DUE,\n    PAYMENT_STATUS_OPTIONS.FAILED,\n    PAYMENT_STATUS_OPTIONS.CARD_NEEDED,\n    PAYMENT_STATUS_OPTIONS.CARD_NEEDED_PAST_DUE\n  ].some((s) => s === status)\n  const showAddTipButton =\n    status === PAYMENT_STATUS_OPTIONS.PAID &&\n    appointmentIsPast &&\n    appointment.practice.acceptsTips &&\n    appointment.tipAmountCents === 0\n  const titleStatus = appointmentIsPast ? \"passed\" : appointment.state === \"pending\" ? \"pending\" : \"accepted!\"\n  const subTitle =\n    appointment.state === \"cancelled\"\n      ? \"This appointment has been cancelled.\"\n      : appointment.state === \"pending\"\n      ? \"This appointment is pending confirmation from your practitioner.\"\n      : appointmentIsPast\n      ? \"This appointment has already ended.\"\n      : `We're looking forward to seeing you on ${startsAt.format(\"MMMM D\")} at ${startsAt.format(\"h:mm a\")}.`\n  const amount = `$${(appointment.amountCents / 100).toFixed(2)}`\n  const formattedTip = `$${(appointment.tipAmountCents / 100).toFixed(2)}`\n  const formattedTotal = `$${((appointment.amountCents + appointment.tipAmountCents) / 100).toFixed(2)}`\n  const formattedPhone = formatPhone(appointment.practice.user.phone)\n  const isVirtual = appointment.location.kind === \"virtual\"\n  const virtualLink = appointment.virtualMeetingLinkWithFallback\n  const isPhoneCall = appointment.location.virtualType === \"phone\"\n\n  const [, chargeCard] = useMutation(CHARGE_CARD_MUTATION)\n\n  const showAlert = (message, type) => {\n    setAlertVisible(true)\n    setAlertWarning(type === \"error\")\n    setAlertContent(message)\n  }\n\n  const chargeAndAlert = (tip) => {\n    chargeCard({ appointmentId: appointment.id }).then((res) => {\n      setButtonLoading(false)\n      if (res.data?.chargeCard?.result === \"success\") {\n        showAlert(\"Your payment has been processed successfully.\")\n        setAppointment({\n          ...appointment,\n          ...{\n            clientPaymentStatus: res.data.chargeCard.appointment.clientPaymentStatus,\n            tipAmountCents: tip || appointment.tipAmountCents\n          }\n        })\n      } else {\n        if (res.error) console.error(res.error) // eslint-disable-line no-console\n        showToast({\n          content: `There was an error processing your payment: ${\n            res.data?.chargeCard?.errors || \"Internal server error\"\n          }`,\n          type: \"error\"\n        })\n      }\n    })\n  }\n\n  const onPaypalSuccess = (appointmentResponse) => {\n    setAppointment({\n      ...appointment,\n      ...{\n        clientPaymentStatus: appointmentResponse.clientPaymentStatus,\n        tipAmountCents: appointmentResponse.tipAmountCents\n      }\n    })\n    showAlert(\"Your payment has been processed successfully.\")\n  }\n\n  const onCreditCardSave = (tip) => {\n    if (shouldPayNow) {\n      setButtonLoading(true)\n      chargeAndAlert(tip)\n    } else {\n      setAppointment({ ...appointment, ...{ clientPaymentStatus: PAYMENT_STATUS_OPTIONS.PENDING } })\n      showAlert(\"Your payment method has been saved.\")\n    }\n  }\n\n  const onTipSave = (tip) => {\n    setAppointment({ ...appointment, ...{ tipAmountCents: tip } })\n    showToast({ content: `Tip added successfully. Thank you!`, type: \"success\" })\n  }\n\n  return (\n    <div className=\"m-auto w-full py-4 text-center\">\n      {appointment.state !== \"cancelled\" && <div className=\"mb-4 text-2xl font-bold\">Appointment {titleStatus}</div>}\n      <p className=\"mb-4 text-gray-dark\">{subTitle}</p>\n      <div className=\"m-auto max-w-lg border border-gray p-4 sm:border-none\">\n        <div className=\"mb-4 flex items-center justify-center\">\n          <img src={appointment.practice.user.defaultPhotoUrl} className=\"h-16 w-16 rounded-full\" />\n          <div className=\"inline-flex flex-col\">\n            <div className=\"ml-4 text-lg font-bold\">{appointment.practice.user.name}</div>\n            <a href={`tel:${formattedPhone}`} className=\"ml-4 text-sm font-bold text-teal\">\n              {formattedPhone}\n            </a>\n          </div>\n        </div>\n\n        <div className=\"mb-4 font-bold\">\n          <div>{startsAt.format(\"dddd, MMMM D, YYYY\")}</div>\n          <div>\n            {startsAt.format(\"h:mm a\")} - {endsAt.format(\"h:mm a z\")}\n          </div>\n          <div className={twMerge(\"my-4\", isVirtual && \"mb-0\")}>\n            <span>{appointment.locationName}</span>\n            {isVirtual && isPhoneCall && <span> (Phone Call)</span>}\n            {isVirtual && !isPhoneCall && <span> (Video)</span>}\n          </div>\n          {isVirtual && appointment.location.virtualInstructions && (\n            <div className=\"font-normal\">{appointment.location.virtualInstructions}</div>\n          )}\n          {isVirtual && !isPhoneCall && virtualLink && (\n            <a href={virtualLink} className=\"text-sm text-teal\">\n              Link to Join\n            </a>\n          )}\n        </div>\n\n        {appointment.amountCents === 0 && (\n          <div>\n            {appointment.appointmentServices.map((as) => (\n              <div key={as.id}>{as.service.name}</div>\n            ))}\n          </div>\n        )}\n\n        {appointment.amountCents > 0 && (\n          <div className=\"m-auto w-full\">\n            <div className=\"my-4 border-y border-gray py-4\">\n              {appointment.appointmentServices.map((as) => (\n                <PriceRow key={as.id} label={as.service.name} value={`$${(as.amountCents / 100).toFixed(2)}`} />\n              ))}\n\n              <Divider className=\"my-2\" />\n              <PriceRow label=\"Subtotal\" value={amount} className=\"font-semibold\" />\n\n              <PriceRow\n                label=\"Tip\"\n                value={formattedTip}\n                className={appointment.tipAmountCents === 0 ? \"text-gray\" : \"\"}\n              />\n\n              <Divider className=\"my-2\" />\n              <PriceRow label=\"Total\" value={formattedTotal} className=\"text-lg font-bold\" />\n            </div>\n          </div>\n        )}\n\n        {appointment.state === \"approved\" && appointment.practice.hasPaymentProvider && (\n          <>\n            <PaymentStatusBox appointment={appointment} />\n            {appointmentIsPast && showAddCardButton && (\n              <AddPaymentButton\n                label=\"Pay now\"\n                modalHeaderLabel=\"Pay for your session\"\n                loading={buttonLoading}\n                onSave={onCreditCardSave}\n                onPaypalSuccess={onPaypalSuccess}\n                modalActionButtonCopy={shouldPayNow ? \"Pay now\" : \"Save credit card\"}\n              />\n            )}\n            {!appointmentIsPast && showAddCardButton && (\n              <AddPaymentButton\n                label=\"Add credit card\"\n                modalHeaderLabel=\"Add debit or credit card\"\n                loading={buttonLoading}\n                onPaypalSuccess={onPaypalSuccess}\n                onSave={onCreditCardSave}\n              />\n            )}\n            {showAddTipButton && (\n              <AddPaymentButton\n                label=\"Add a tip\"\n                modalHeaderLabel=\"Add a tip to your session\"\n                loading={buttonLoading}\n                onSave={onTipSave}\n                onPaypalSuccess={onPaypalSuccess}\n                tipOnly={true}\n              />\n            )}\n          </>\n        )}\n\n        {appointment.practice.offlinePaymentMethod && <OfflinePaymentMethods appointment={appointment} />}\n        {appointment.state === \"approved\" && appointmentIsPast && (\n          <div className=\"mt-4\">\n            <InfoParagraph>\n              The appointment start time has past so this appointment can&apos;t be cancelled or rescheduled.\n            </InfoParagraph>\n          </div>\n        )}\n        <div className=\"mt-4 font-bold text-teal [&>*]:m-auto [&>*]:mt-2 [&>*]:block\">\n          {!appointmentIsPast && appointment.state !== \"cancelled\" && (\n            <>\n              {/* <RescheduleAppointmentButton appointmentId={appointment.id} showAlert={showAlert} /> */}\n              <CancelAppointmentButton\n                appointmentId={appointment.id}\n                onCancel={() => {\n                  setAppointment({ ...appointment, ...{ state: \"cancelled\" } })\n                  showAlert(\"Your appointment has been cancelled.\")\n                }}\n                onError={(error) => {\n                  console.error(error) // eslint-disable-line no-console\n                  showToast({ content: \"There was an error cancelling your appointment.\", type: \"error\" })\n                }}\n                showAlert={showAlert}\n              />\n            </>\n          )}\n          <div>\n            <a href={appointment.practice.url}>Book another appointment</a>\n          </div>\n        </div>\n      </div>\n      <Toast visible={alertVisible} setVisible={setAlertVisible} warning={alertWarning}>\n        {alertContent}\n      </Toast>\n    </div>\n  )\n}\n\nexport default function ManageAppointmentsConsumer(props) {\n  return (\n    <NiceModal.Provider>\n      <ToastProvider>\n        <GraphQLProvider>\n          <AppointmentProvider>\n            <PageContent {...props} />\n          </AppointmentProvider>\n        </GraphQLProvider>\n      </ToastProvider>\n    </NiceModal.Provider>\n  )\n}\n","import dayjs from \"dayjs\"\nimport timezone from \"dayjs/plugin/timezone\"\nimport utc from \"dayjs/plugin/utc\"\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { Divider } from \"../components/shared/Layout\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\nimport { formatPhone } from \"../utils/utils\"\n\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nconst PriceRow = ({ label, value, className }) => (\n  <div className={twMerge(\"flex items-center justify-between\", className)}>\n    <span className=\"text-left\">{label}</span>\n    <span className=\"ml-2 font-bold\">{value}</span>\n  </div>\n)\n\nconst PageContent = ({ eventRegistration }) => {\n  const { event, practice, discount, finalAmountCents } = eventRegistration\n\n  // Format dates\n  const timeZone = event.timeZone || dayjs.tz.guess()\n  const startsAt = dayjs(event.startsAt).tz(timeZone)\n  const endsAt = dayjs(event.endsAt).tz(timeZone)\n\n  // Check if the event is in the past\n  const eventIsPast = dayjs().isAfter(endsAt)\n\n  // Format location\n  const isVirtual = event.kind === \"virtual\"\n  const locationDisplay = isVirtual ? \"Virtual\" : event.location\n\n  // Format price\n  const eventAmount = `$${((event.amountCents || 0) / 100).toFixed(2)}`\n  const discountAmount = discount ? `$${(discount.amountCents / 100).toFixed(2)}` : \"$0.00\"\n  const finalAmount = `$${(finalAmountCents / 100).toFixed(2)}`\n\n  // Format phone\n  const formattedPhone = formatPhone(practice.user.phone)\n\n  // Status message\n  const statusMessage = eventIsPast\n    ? \"This event has already ended.\"\n    : `We're looking forward to seeing you on ${startsAt.format(\"MMMM D\")} at ${startsAt.format(\"h:mm a\")}.`\n\n  return (\n    <div className=\"m-auto w-full py-4 text-center\">\n      <div className=\"mb-4 text-2xl font-bold\">Event Registration</div>\n      <p className=\"mb-4 text-gray-dark\">{statusMessage}</p>\n\n      <div className=\"m-auto max-w-lg border border-gray p-4 sm:border-none\">\n        {/* Practitioner Info */}\n        <div className=\"mb-4 flex items-center justify-center\">\n          <img src={practice.user.defaultPhotoUrl} className=\"h-16 w-16 rounded-full\" />\n          <div className=\"inline-flex flex-col\">\n            <div className=\"ml-4 text-lg font-bold\">{practice.user.name}</div>\n            <a href={`tel:${formattedPhone}`} className=\"ml-4 text-sm font-bold text-teal\">\n              {formattedPhone}\n            </a>\n          </div>\n        </div>\n\n        {/* Event Info */}\n        <div className=\"mb-6\">\n          <div className=\"text-xl font-bold\">{event.name}</div>\n          <div className=\"mb-2 font-bold\">\n            <div>{startsAt.format(\"dddd, MMMM D, YYYY\")}</div>\n            <div>\n              {startsAt.format(\"h:mm a\")} - {endsAt.format(\"h:mm a z\")}\n            </div>\n            <div className=\"my-4\">\n              <span>{locationDisplay}</span>\n              {isVirtual && <span> (Virtual)</span>}\n            </div>\n          </div>\n\n          {/* Event Description */}\n          {event.description && (\n            <div className=\"mb-4 text-left\">\n              <div className=\"mb-2 font-bold\">Description:</div>\n              <p className=\"text-sm\">{event.description}</p>\n            </div>\n          )}\n\n          {/* Event Instructions */}\n          {event.instructions && (\n            <div className=\"mb-4 text-left\">\n              <div className=\"mb-2 font-bold\">Instructions:</div>\n              <p className=\"text-sm\">{event.instructions}</p>\n            </div>\n          )}\n        </div>\n\n        {/* Price Info */}\n        {event.amountCents > 0 && (\n          <div className=\"m-auto w-full\">\n            <div className=\"my-4 border-y border-gray py-4\">\n              <PriceRow label=\"Event Fee\" value={eventAmount} />\n\n              {discount && (\n                <>\n                  <PriceRow label={`Discount (${discount.code})`} value={`-${discountAmount}`} className=\"text-teal\" />\n                  <Divider className=\"my-2\" />\n                </>\n              )}\n\n              <PriceRow label=\"Total\" value={finalAmount} className=\"text-lg font-bold\" />\n            </div>\n          </div>\n        )}\n\n        {/* Footer links */}\n        <div className=\"mt-6 font-bold text-teal [&>*]:m-auto [&>*]:mt-2 [&>*]:block\">\n          <div>\n            <a href={practice.url}>Book another appointment</a>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default function ManageEventRegistration(props) {\n  return (\n    <GraphQLProvider>\n      <PageContent {...props} />\n    </GraphQLProvider>\n  )\n}\n","import React, { createContext, useContext, useState } from \"react\"\n\nimport { createUrqlClient } from \"../utils/utils\"\n\nimport { useToast } from \"./ToastContext\"\n\nconst urqlClient = createUrqlClient({ requestPolicy: \"network-only\" })\n\nconst PROFILE_STATUS_QUERY = `\n  query ProfileStatusData {\n    profileStatusData {\n      status\n      completionSteps { name completed link }\n      verificationSteps { name completed }\n      practitionerFirstName\n      profileUrl\n      showCompletedModal\n      showTermsModal\n    }\n  }\n`\n\nexport const ProfileStatusContext = createContext()\n\nexport const ProfileStatusProvider = ({ children, data }) => {\n  const [profileStatusData, setProfileStatusData] = useState(data)\n  const { showToast } = useToast()\n\n  const syncProfileStatus = () => {\n    urqlClient\n      .query(PROFILE_STATUS_QUERY)\n      .toPromise()\n      .then((res) => {\n        if (res.data?.profileStatusData) {\n          setProfileStatusData(res.data.profileStatusData)\n        } else {\n          showToast({\n            type: \"error\",\n            content: \"There was an error syncing your profile status. Please refresh the page.\"\n          })\n          console.error(\"Error fetching profile status data\")\n        }\n      })\n  }\n\n  return (\n    <ProfileStatusContext.Provider value={{ profileStatusData, setProfileStatusData, syncProfileStatus }}>\n      {children}\n    </ProfileStatusContext.Provider>\n  )\n}\n\nexport const useProfileStatus = () => useContext(ProfileStatusContext)\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React from \"react\"\n\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport { ProfileStatusProvider } from \"../../contexts/ProfileStatusContext\"\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nconst ProfileEditProvider = ({ children, profileStatusData }) => (\n  <ToastProvider>\n    <NiceModal.Provider>\n      <PracticeProvider>\n        <ProfileStatusProvider data={profileStatusData}>\n          <GraphQLProvider>{children}</GraphQLProvider>\n        </ProfileStatusProvider>\n      </PracticeProvider>\n    </NiceModal.Provider>\n  </ToastProvider>\n)\n\nexport default ProfileEditProvider\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport DatePicker from \"../components/shared/DatePicker\"\nimport { EditableValue, Input, InputWithLabel } from \"../components/shared/Inputs\"\nimport { Box, Divider } from \"../components/shared/Layout\"\nimport { RadioWithLabel } from \"../components/shared/RadioButtons\"\nimport Typography from \"../components/shared/Typography\"\nimport { useToast } from \"../contexts/ToastContext\"\n\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\n\nconst UPDATE_INFO_MUTATION = `\n  mutation UpdatePersonalSettings($name: String, $email: String, $phone: String, $gender: String, $dob: String, $customGender: String, $password: String, $passwordConfirmation: String) {\n    updatePersonalSettings(name: $name, email: $email, phone: $phone, gender: $gender, dob: $dob, customGender: $customGender, password: $password, passwordConfirmation: $passwordConfirmation) {\n      result\n      user { id name email phone gender dob customGender }\n    }\n  }\n`\n\nconst Details = ({ user }) => {\n  const [userState, setUserState] = useState(user)\n  const [lastSavedUserValue, setLastSavedUserValue] = useState(user)\n  const [openField, setOpenField] = useState(null)\n\n  const [{ fetching }, updatePersonalSettings] = useMutation(UPDATE_INFO_MUTATION)\n\n  const { showToast } = useToast()\n\n  const onSave = () => {\n    if (\n      !!userState.password &&\n      !!userState.passwordConfirmation &&\n      userState.password !== userState.passwordConfirmation\n    ) {\n      showToast({\n        type: \"error\",\n        content: \"Your password and password confirmation do not match.\"\n      })\n      return\n    }\n    updatePersonalSettings(Object.fromEntries(Object.entries(userState).filter(([, v]) => !!v))).then((result) => {\n      setOpenField(null)\n      if (result.error) {\n        console.error(result)\n        setUserState(lastSavedUserValue)\n        showToast({\n          type: \"error\",\n          content: result.error.message.replace(\"[GraphQL]\", \"\")\n        })\n      } else {\n        setLastSavedUserValue(result.data.updatePersonalSettings.user)\n        showToast(\"Your settings have been saved.\")\n      }\n    })\n  }\n\n  const onOpened = (fieldName) => {\n    setOpenField(fieldName)\n  }\n\n  return (\n    <div>\n      <Typography variant=\"h3\" as=\"h1\" className=\"mb-6\">\n        My account\n      </Typography>\n      <Box>\n        <EditableValue\n          name=\"Name\"\n          value={userState.name}\n          saveDisabled={userState.name === lastSavedUserValue.name || userState.name?.length < 2}\n          disabled={fetching || (openField && openField !== \"Name\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <Input\n            name=\"Name\"\n            value={userState.name || \"\"}\n            onChange={(e) => setUserState((values) => ({ ...values, name: e.target.value }))}\n          />\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Email\"\n          value={userState.email}\n          saveDisabled={userState.email === lastSavedUserValue.email}\n          disabled={fetching || (openField && openField !== \"Email\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <Input\n            name=\"Email\"\n            value={userState.email || \"\"}\n            onChange={(e) => setUserState((values) => ({ ...values, email: e.target.value }))}\n          />\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Phone\"\n          value={userState.phone}\n          saveDisabled={userState.phone === lastSavedUserValue.phone}\n          disabled={fetching || (openField && openField !== \"Phone\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <Input\n            name=\"Phone\"\n            value={userState.phone || \"\"}\n            onChange={(e) => setUserState((values) => ({ ...values, phone: e.target.value }))}\n          />\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Gender\"\n          value={(userState.gender === \"Custom\" ? userState.customGender : userState.gender) || \"\"}\n          saveDisabled={userState.gender === lastSavedUserValue.gender}\n          disabled={fetching || (openField && openField !== \"Gender\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <div className=\"flex gap-4\">\n            <RadioWithLabel\n              value=\"Female\"\n              name=\"gender\"\n              label=\"Female\"\n              checked={userState.gender === \"Female\"}\n              onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n            />\n            <RadioWithLabel\n              value=\"Male\"\n              name=\"gender\"\n              label=\"Male\"\n              checked={userState.gender === \"Male\"}\n              onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n            />\n            <RadioWithLabel\n              value=\"Custom\"\n              name=\"gender\"\n              label=\"Custom\"\n              checked={userState.gender === \"Custom\"}\n              onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n            />\n          </div>\n          {userState.gender === \"Custom\" && (\n            <Input\n              className=\"mt-4\"\n              name=\"Custom gender\"\n              value={userState.customGender || \"\"}\n              onChange={(e) => setUserState((values) => ({ ...values, customGender: e.target.value }))}\n            />\n          )}\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Date of birth\"\n          value={userState.dob ? new Date(userState.dob).toDateString() : null}\n          saveDisabled={userState.dob === lastSavedUserValue.dob}\n          disabled={fetching || (openField && openField !== \"Date of birth\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <DatePicker\n            selected={userState.dob ? new Date(userState.dob) : \"\"}\n            onChange={(date) => {\n              setUserState((values) => ({ ...values, dob: date }))\n            }}\n          />\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Password\"\n          value=\"Reset your password\"\n          editButtonCopy=\"Update\"\n          disabled={fetching || (openField && openField !== \"Password\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <InputWithLabel\n            className=\"mb-4\"\n            label=\"New password\"\n            type=\"password\"\n            value={userState.password || \"\"}\n            onChange={(e) => setUserState((values) => ({ ...values, password: e.target.value }))}\n          />\n          <InputWithLabel\n            label=\"Confirm password\"\n            type=\"password\"\n            value={userState.passwordConfirmation || \"\"}\n            onChange={(e) => setUserState((values) => ({ ...values, passwordConfirmation: e.target.value }))}\n          />\n        </EditableValue>\n      </Box>\n    </div>\n  )\n}\n\nexport default function PersonalSettings({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <Details {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import React, { useState } from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { CheckBox, Input } from \"../../components/shared/Inputs\"\n\nconst GiftCardForm = ({ giftCard, onSave, onCancel }) => {\n  const [formData, setFormData] = useState({\n    amountCents: giftCard?.amountCents || \"\",\n    description: giftCard?.description || \"\",\n    active: giftCard?.active ?? true,\n    public: giftCard?.public ?? true\n  })\n  const [errors, setErrors] = useState({})\n\n  const handleChange = (field, value) => {\n    setFormData((prev) => ({ ...prev, [field]: value }))\n  }\n\n  const validate = () => {\n    const newErrors = {}\n    if (!formData.amountCents) {\n      newErrors.amountCents = \"Amount is required\"\n    } else if (isNaN(parseFloat(formData.amountCents)) || parseFloat(formData.amountCents) <= 0) {\n      newErrors.amountCents = \"Amount must be a positive number\"\n    }\n    setErrors(newErrors)\n    return Object.keys(newErrors).length === 0\n  }\n\n  const handleSubmit = () => {\n    if (!validate()) return\n    onSave(formData)\n  }\n\n  return (\n    <div className=\"flex items-center gap-4 rounded-lg bg-blue/10 p-4\">\n      <div className=\"w-32\">\n        <div className=\"relative flex items-center\">\n          <span className=\"pointer-events-none absolute left-3 text-gray-dark\">$</span>\n          <Input\n            type=\"number\"\n            min=\"0\"\n            step=\"1\"\n            className=\"pl-7\"\n            value={Math.round(Number(formData.amountCents) / 100) || \"\"}\n            onChange={(e) => handleChange(\"amountCents\", parseInt(e.target.value * 100))}\n          />\n        </div>\n        {errors.amountCents && <span className=\"mt-1 text-sm text-red\">{errors.amountCents}</span>}\n      </div>\n      <Input\n        type=\"text\"\n        className=\"flex-1\"\n        placeholder=\"Description (optional)...\"\n        value={formData.description}\n        onChange={(e) => handleChange(\"description\", e.target.value)}\n      />\n      <div className=\"flex items-center gap-4\">\n        <CheckBox\n          label=\"Active\"\n          className=\"mb-0\"\n          checked={formData.active}\n          onChange={(e) => handleChange(\"active\", e.target.checked)}\n        />\n        <CheckBox\n          label=\"Online\"\n          className=\"mb-0\"\n          checked={formData.public}\n          onChange={(e) => handleChange(\"public\", e.target.checked)}\n        />\n      </div>\n      <div className=\"flex gap-2\">\n        <Button variant=\"primary\" onClick={handleSubmit}>\n          Save\n        </Button>\n        <Button variant=\"secondary\" onClick={onCancel}>\n          Cancel\n        </Button>\n      </div>\n    </div>\n  )\n}\n\nexport default GiftCardForm\n","import { PencilIcon, TrashIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { Button, IconButton } from \"../../components/shared/Buttons\"\nimport { CheckBox } from \"../../components/shared/Inputs\"\nimport { Box } from \"../../components/shared/Layout\"\nimport { TabNavLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ProfileEditProvider from \"../ProfileEdit/ProfileEditProvider\"\n\nimport GiftCardForm from \"./GiftCardForm\"\n\nconst UPSERT_GIFT_CARD_TEMPLATE_MUTATION = `\n  mutation UpsertGiftCardTemplate($id: ID, $amountCents: Int!, $description: String, $active: Boolean!, $public: Boolean!) {\n    upsertGiftCardTemplate(id: $id, amountCents: $amountCents, description: $description, active: $active, public: $public) {\n      result\n      giftCardTemplate {\n        id\n        amountCents\n        description\n        active\n        public\n      }\n      errors\n    }\n  }\n`\n\nconst GiftCardTemplates = ({ giftCardTemplates: giftCardTemplatesProp }) => {\n  const navItems = [\"Gift Cards\", \"Activity\"]\n\n  const [giftCardTemplates, setGiftCardTemplates] = useState(giftCardTemplatesProp)\n  const [view, setView] = useState(navItems[0])\n  const { showToast } = useToast()\n  const [showNewForm, setShowNewForm] = useState(giftCardTemplates.length === 0)\n  const [editingTemplate, setEditingTemplate] = useState(null)\n  const [, upsertGiftCardTemplate] = useMutation(UPSERT_GIFT_CARD_TEMPLATE_MUTATION)\n\n  const handleSave = async (formData) => {\n    try {\n      const result = await upsertGiftCardTemplate({ ...formData, id: editingTemplate?.id })\n\n      if (result.data?.upsertGiftCardTemplate?.result === \"success\") {\n        const savedTemplate = result.data.upsertGiftCardTemplate.giftCardTemplate\n        if (editingTemplate) {\n          setGiftCardTemplates((templates) => templates.map((t) => (t.id === savedTemplate.id ? savedTemplate : t)))\n        } else {\n          setGiftCardTemplates((prev) => [...prev, savedTemplate])\n        }\n        showToast({ content: \"Gift card template saved successfully\", type: \"success\" })\n        setEditingTemplate(null)\n        setShowNewForm(false)\n      } else {\n        const error = result.data?.upsertGiftCardTemplate?.errors?.[0] || \"Failed to save gift card template\"\n        showToast({ content: error, type: \"error\" })\n      }\n    } catch (error) {\n      console.error(\"Error saving gift card template:\", error)\n      showToast({ content: \"Failed to save gift card template\", type: \"error\" })\n    }\n  }\n\n  return (\n    <div>\n      <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n        <div className=\"flex flex-col\">\n          <Typography variant=\"h3\" as=\"h1\">\n            Gift Cards\n          </Typography>\n          <Typography variant=\"subtitle\">Add or edit your gift cards.</Typography>\n        </div>\n        <Button variant=\"primary\" onClick={() => setShowNewForm(true)} className=\"sm:mt-4\">\n          Create New\n        </Button>\n      </div>\n\n      <Box data-test-id=\"gift-card-templates\">\n        <div className={twMerge(\"mt-4 flex gap-8 border-b border-gray-light sm:mb-4\")}>\n          {navItems.map((item) => (\n            <TabNavLink key={item} active={view === item} onClick={() => setView(item)}>\n              {item}\n            </TabNavLink>\n          ))}\n        </div>\n        <div className=\"flex flex-row sm:hidden\" data-tooltip-id=\"disabled-tooltip\">\n          <Button floatingInMobile={true} onClick={() => {}} className=\"hidden sm:block\">\n            Add new\n          </Button>\n        </div>\n\n        {view === \"Gift Cards\" && (\n          <>\n            <div className=\"mb-4\">\n              <Typography variant=\"subtitle\">\n                Create a gift certificate for any dollar amount and with any description\n              </Typography>\n            </div>\n\n            <div className=\"flex flex-col gap-4\">\n              {showNewForm && <GiftCardForm onSave={handleSave} onCancel={() => setShowNewForm(false)} />}\n\n              {giftCardTemplates.map((template, index) => (\n                <div key={index} className=\"flex items-center gap-4 rounded-lg bg-gray-ultralight p-4\">\n                  {editingTemplate?.id === template.id ? (\n                    <GiftCardForm giftCard={template} onSave={handleSave} onCancel={() => setEditingTemplate(null)} />\n                  ) : (\n                    <>\n                      <div className=\"w-32\">${template.amountCents / 100}</div>\n                      <div className=\"flex-1\">{template.description || `$${template.amountCents / 100} Gift Card`}</div>\n                      <div className=\"flex items-center gap-4\">\n                        <CheckBox label=\"Active\" className=\"mb-0\" checked={template.active} disabled />\n                        <CheckBox label=\"Online\" className=\"mb-0\" checked={template.public} disabled />\n                      </div>\n                      <div className=\"flex gap-2\">\n                        <IconButton Icon={PencilIcon} onClick={() => setEditingTemplate(template)} />\n                        <IconButton Icon={TrashIcon} onClick={() => {}} />\n                      </div>\n                    </>\n                  )}\n                </div>\n              ))}\n            </div>\n          </>\n        )}\n      </Box>\n    </div>\n  )\n}\n\nexport default function PortalGiftCardTemplatesPage({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <GiftCardTemplates {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import React from \"react\"\n\nimport { ORDERED_DAYS } from \"../../utils/utils\"\n\nconst DisplayAvailableTimes = ({ locationOrService, className }) => (\n  <div className={className}>\n    {ORDERED_DAYS.map((day) => {\n      const availableTimesForDay = locationOrService.availableTimes[day]\n      if (!availableTimesForDay) return null\n      if (availableTimesForDay.enabled === false) return null\n      if (!availableTimesForDay.startsAt || !availableTimesForDay.endsAt) return null\n      return (\n        <div key={`location-${locationOrService.id}-${day}`} className=\"flex items-center justify-between\">\n          <span>{day}</span>\n          <span>\n            {availableTimesForDay.startsAt.replace(/ /g, \"\").toLowerCase()} -{\" \"}\n            {availableTimesForDay.endsAt.replace(/ /g, \"\").toLowerCase()}\n          </span>\n        </div>\n      )\n    })}\n  </div>\n)\n\nexport default DisplayAvailableTimes\n","import React from \"react\"\n\nimport { CheckBox, TimePicker } from \"../../components/shared/Inputs\"\nimport { ORDERED_DAYS } from \"../../utils/utils\"\n\nconst AvailableTimes = ({ availableTimes, updateState }) => {\n  const updateAvailableTimes = (day, key, value) => {\n    updateState((state) => {\n      const newState = JSON.parse(JSON.stringify(state))\n      const newTimes = { ...newState.availableTimes }\n      newTimes[day] ||= {}\n      newTimes[day][key] = value\n      return { ...newState, availableTimes: newTimes }\n    })\n  }\n\n  return (\n    <div className=\"flex flex-col gap-2\">\n      {ORDERED_DAYS.map((day) => {\n        const availableTimesForDay = availableTimes[day]\n\n        const enabled = !availableTimesForDay\n          ? false\n          : typeof availableTimesForDay.enabled === \"undefined\"\n          ? !!(availableTimesForDay.startsAt && availableTimesForDay.endsAt)\n          : availableTimesForDay.enabled\n        return (\n          <div key={day} className=\"flex items-center\">\n            <CheckBox\n              id={`${day}-checkbox`}\n              label={day}\n              checked={enabled}\n              onChange={() => {\n                updateAvailableTimes(day, \"enabled\", !enabled)\n                if (!enabled) {\n                  if (!availableTimesForDay?.startsAt) updateAvailableTimes(day, \"startsAt\", \"9:00 AM\")\n                  if (!availableTimesForDay?.endsAt) updateAvailableTimes(day, \"endsAt\", \"5:00 PM\")\n                }\n              }}\n              className=\"mb-0 w-32 pr-3\"\n            />\n            {enabled ? (\n              <>\n                <span>\n                  <TimePicker\n                    valueFormat=\"h:mm A\"\n                    disabled={!enabled}\n                    value={availableTimesForDay?.startsAt || \"9:00 AM\"}\n                    onChange={(e) => updateAvailableTimes(day, \"startsAt\", e.target.value)}\n                  />\n                </span>\n                <span className=\"px-2\"> - </span>\n                <span>\n                  <TimePicker\n                    valueFormat=\"h:mm A\"\n                    value={availableTimesForDay?.endsAt || \"5:00 PM\"}\n                    onChange={(e) => updateAvailableTimes(day, \"endsAt\", e.target.value)}\n                  />\n                </span>\n              </>\n            ) : (\n              <span className=\"my-[7px] flex-1 text-gray-dark\">Unavailable</span>\n            )}\n          </div>\n        )\n      })}\n    </div>\n  )\n}\n\nexport default AvailableTimes\n","import React from \"react\"\nimport Autocomplete from \"react-google-autocomplete\"\n\nimport \"./PlacesAutocomplete.sass\"\nimport { VALIDATION_ERROR_INPUT_CLASSNAMES, ValidationError } from \"./Inputs\"\n\nconst PlacesAutocomplete = ({ types = [], validationError, ...props }) => (\n  <div>\n    <Autocomplete\n      {...props}\n      options={{ types }}\n      className={validationError ? `w-full rounded-lg border px-3 py-1.5 ${VALIDATION_ERROR_INPUT_CLASSNAMES}` : \"\"}\n    />\n    {validationError && <ValidationError>{validationError}</ValidationError>}\n  </div>\n)\n\nexport default PlacesAutocomplete\n","import React from \"react\"\n\nimport { Label } from \"../../components/shared/Inputs\"\nimport PlacesAutocomplete from \"../../components/shared/PlacesAutocomplete\"\nimport { stripUSAFromString } from \"../../utils/utils\"\n\nconst LocationPlacesSelect = ({\n  label,\n  location,\n  setLocation,\n  placeholder = \"Start typing the street address\",\n  types = [],\n  validationError\n}) => {\n  const id = \"location-select-\" + label.toLowerCase().replace(\" \", \"-\")\n\n  const onPlaceSelected = (place) => {\n    setLocation((location) => {\n      const newLocation = {\n        ...location,\n        neighborhood: null,\n        cityGeocoded: null,\n        stateProvince: null,\n        stateAbbreviation: null,\n        country: null,\n        countryCode: null,\n        placeId: null,\n        fullStreetAddress: null\n      }\n      place.address_components.map((address) => {\n        if (address.types.includes(\"street_number\")) {\n          newLocation.address = address.long_name\n        } else if (address.types.includes(\"route\")) {\n          newLocation.address = newLocation.address + \" \" + address.long_name\n        } else if (address.types.includes(\"neighborhood\")) {\n          newLocation.neighborhood = address.long_name\n        } else if (\n          address.types.includes(\"locality\") ||\n          address.types.includes(\"sublocality\") ||\n          address.types.includes(\"postal_town\")\n        ) {\n          newLocation.cityGeocoded = address.long_name\n          newLocation.city = address.long_name\n        } else if (address.types.includes(\"administrative_area_level_1\")) {\n          newLocation.stateProvince = address.long_name\n          newLocation.stateAbbreviation = address.short_name\n        } else if (address.types.includes(\"country\")) {\n          newLocation.country = address.long_name\n          newLocation.countryCode = address.short_name\n        } else if (address.types.includes(\"postal_code\")) {\n          newLocation.zip = address.long_name\n        }\n      })\n      newLocation.latitude = place.geometry.location.lat()\n      newLocation.longitude = place.geometry.location.lng()\n      newLocation.fullStreetAddress = place.formatted_address\n      newLocation.placeId = place.place_id\n      return newLocation\n    })\n  }\n\n  return (\n    <div>\n      <Label htmlFor={id}>{label}</Label>\n      <PlacesAutocomplete\n        apiKey={process.env.GOOGLE_MAPS_API_KEY}\n        types={types}\n        id={id}\n        onPlaceSelected={onPlaceSelected}\n        defaultValue={stripUSAFromString(location?.fullStreetAddress || location?.address || \"\")}\n        placeholder={placeholder}\n        validationError={validationError}\n      />\n    </div>\n  )\n}\n\nexport default LocationPlacesSelect\n","import React from \"react\"\n\nimport { Label, Select } from \"../../components/shared/Inputs\"\n\nimport LocationPlacesSelect from \"./LocationPlacesSelect\"\n\nconst SELECT_OPTIONS = []\nfor (let i = 1; i <= 50; i++) {\n  SELECT_OPTIONS.push({ value: i.toString(), label: i === 1 ? `1 mile` : `${i} miles` })\n}\n\nconst HomeLocationFields = ({ location, setLocation, validationErrors }) => (\n  <>\n    <LocationPlacesSelect\n      setLocation={setLocation}\n      location={location}\n      label=\"Your home address\"\n      validationError={validationErrors.fullStreetAddress}\n    />\n    <div>\n      <Label htmlFor=\"travel-distance\">How far are you willing to commute to a clients’ home?</Label>\n      <Select\n        id=\"travel-distance\"\n        value={location.travelDistance || \"\"}\n        onChange={(e) => setLocation({ ...location, travelDistance: e.target.value })}\n        options={SELECT_OPTIONS}\n        defaultOption=\"Select distance\"\n        validationError={validationErrors.travelDistance}\n      />\n    </div>\n  </>\n)\n\nexport default HomeLocationFields\n","import React from \"react\"\n\nimport { CheckBox, InputWithLabel } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\n\nimport LocationPlacesSelect from \"./LocationPlacesSelect\"\n\nconst OfficeLocationFields = ({ location, setLocation, validationErrors }) => (\n  <>\n    <div>\n      <LocationPlacesSelect\n        setLocation={setLocation}\n        location={location}\n        label=\"Office address\"\n        validationError={validationErrors.fullStreetAddress}\n      />\n      {location.address && (\n        <InputWithLabel\n          validationError={validationErrors.secondaryAddress}\n          className=\"mt-3\"\n          label=\"Unit or suite number (optional)\"\n          placeholder=\"E.g. Apt. 1A\"\n          value={location.secondaryAddress || \"\"}\n          onChange={(e) => setLocation({ ...location, secondaryAddress: e.target.value })}\n        />\n      )}\n    </div>\n    <div>\n      <CheckBox\n        className=\"text-base\"\n        label=\"Keep address hidden until booking\"\n        checked={location.hideAddress}\n        onChange={() => {\n          setLocation({ ...location, hideAddress: !location.hideAddress })\n        }}\n      />\n      <Typography variant=\"micro\" as=\"div\" className=\"-mt-2 ml-8\">\n        Clients will see the area but not the street address\n      </Typography>\n    </div>\n  </>\n)\n\nexport default OfficeLocationFields\n","import dayjs from \"dayjs\"\nimport timezone from \"dayjs/plugin/timezone\"\nimport utc from \"dayjs/plugin/utc\"\n\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nexport const TIMEZONE_GROUPS = {\n  US_CANADA: \"US & Canada\",\n  CENTRAL_SOUTH_AMERICA: \"Central & South America\",\n  ATLANTIC: \"Atlantic\",\n  EUROPE_RUSSIA: \"Europe & Russia\",\n  AFRICA_MIDDLE_EAST: \"Africa & Middle East\",\n  INDIA: \"India\",\n  ASIA_AUSTRALIA: \"Asia & Australia\",\n  PACIFIC: \"Pacific\"\n}\n\nexport const TIMEZONE_OPTIONS = [\n  // US & Canada\n  {\n    group: TIMEZONE_GROUPS.US_CANADA,\n    timezones: [\n      { value: \"America/Los_Angeles\", label: \"Pacific Time (US & Canada)\" },\n      { value: \"America/Denver\", label: \"Mountain Time (US & Canada)\" },\n      { value: \"America/Chicago\", label: \"Central Time (US & Canada)\" },\n      { value: \"America/New_York\", label: \"Eastern Time (US & Canada)\" },\n      { value: \"America/Halifax\", label: \"Atlantic Time (Canada)\" },\n      { value: \"Pacific/Honolulu\", label: \"Hawaii\" },\n      { value: \"America/Anchorage\", label: \"Alaska\" },\n      { value: \"America/Phoenix\", label: \"Arizona\" },\n      { value: \"America/St_Johns\", label: \"Newfoundland\" },\n      { value: \"America/Puerto_Rico\", label: \"Puerto Rico\" }\n    ]\n  },\n  // Central & South America\n  {\n    group: TIMEZONE_GROUPS.CENTRAL_SOUTH_AMERICA,\n    timezones: [\n      { value: \"America/Mexico_City\", label: \"Mexico City\" },\n      { value: \"America/Sao_Paulo\", label: \"Brasilia\" },\n      { value: \"America/Argentina/Buenos_Aires\", label: \"Buenos Aires\" },\n      { value: \"America/Montevideo\", label: \"Montevideo\" },\n      { value: \"America/Tijuana\", label: \"Tijuana\" },\n      { value: \"America/Chihuahua\", label: \"Chihuahua\" },\n      { value: \"America/Mazatlan\", label: \"Mazatlan\" },\n      { value: \"America/Guatemala\", label: \"Central America\" },\n      { value: \"America/Monterrey\", label: \"Monterrey\" },\n      { value: \"America/Regina\", label: \"Saskatchewan\" },\n      { value: \"America/Bogota\", label: \"Bogota\" },\n      { value: \"America/Lima\", label: \"Lima\" },\n      { value: \"America/Lima\", label: \"Quito\" },\n      { value: \"America/Caracas\", label: \"Caracas\" },\n      { value: \"America/Guyana\", label: \"Georgetown\" },\n      { value: \"America/La_Paz\", label: \"La Paz\" },\n      { value: \"America/Santiago\", label: \"Santiago\" }\n    ]\n  },\n  // Atlantic\n  {\n    group: TIMEZONE_GROUPS.ATLANTIC,\n    timezones: [\n      { value: \"America/Godthab\", label: \"Greenland\" },\n      { value: \"Atlantic/South_Georgia\", label: \"Mid-Atlantic\" },\n      { value: \"Atlantic/Azores\", label: \"Azores\" },\n      { value: \"Atlantic/Cape_Verde\", label: \"Cape Verde Is.\" }\n    ]\n  },\n  // Europe & Russia\n  {\n    group: TIMEZONE_GROUPS.EUROPE_RUSSIA,\n    timezones: [\n      { value: \"Europe/Lisbon\", label: \"Edinburgh\" },\n      { value: \"Europe/Lisbon\", label: \"Lisbon\" },\n      { value: \"Europe/London\", label: \"London\" },\n      { value: \"Africa/Monrovia\", label: \"Monrovia\" },\n      { value: \"UTC\", label: \"UTC\" },\n      { value: \"Europe/Amsterdam\", label: \"Amsterdam\" },\n      { value: \"Europe/Belgrade\", label: \"Belgrade\" },\n      { value: \"Europe/Berlin\", label: \"Berlin\" },\n      { value: \"Europe/Zurich\", label: \"Bern\" },\n      { value: \"Europe/Bratislava\", label: \"Bratislava\" },\n      { value: \"Europe/Brussels\", label: \"Brussels\" },\n      { value: \"Europe/Budapest\", label: \"Budapest\" },\n      { value: \"Africa/Casablanca\", label: \"Casablanca\" },\n      { value: \"Europe/Copenhagen\", label: \"Copenhagen\" },\n      { value: \"Europe/Dublin\", label: \"Dublin\" },\n      { value: \"Europe/Ljubljana\", label: \"Ljubljana\" },\n      { value: \"Europe/Madrid\", label: \"Madrid\" },\n      { value: \"Europe/Paris\", label: \"Paris\" },\n      { value: \"Europe/Prague\", label: \"Prague\" },\n      { value: \"Europe/Rome\", label: \"Rome\" },\n      { value: \"Europe/Sarajevo\", label: \"Sarajevo\" },\n      { value: \"Europe/Skopje\", label: \"Skopje\" },\n      { value: \"Europe/Stockholm\", label: \"Stockholm\" },\n      { value: \"Europe/Vienna\", label: \"Vienna\" },\n      { value: \"Europe/Warsaw\", label: \"Warsaw\" },\n      { value: \"Europe/Zagreb\", label: \"Zagreb\" },\n      { value: \"Europe/Athens\", label: \"Athens\" },\n      { value: \"Europe/Bucharest\", label: \"Bucharest\" },\n      { value: \"Europe/Helsinki\", label: \"Helsinki\" },\n      { value: \"Europe/Kiev\", label: \"Kyiv\" },\n      { value: \"Europe/Riga\", label: \"Riga\" },\n      { value: \"Europe/Sofia\", label: \"Sofia\" },\n      { value: \"Europe/Tallinn\", label: \"Tallinn\" },\n      { value: \"Europe/Vilnius\", label: \"Vilnius\" },\n      { value: \"Europe/Minsk\", label: \"Minsk\" },\n      { value: \"Europe/Moscow\", label: \"Moscow\" },\n      { value: \"Europe/Volgograd\", label: \"Volgograd\" },\n      { value: \"Asia/Tbilisi\", label: \"Tbilisi\" },\n      { value: \"Europe/Samara\", label: \"Samara\" },\n      { value: \"Asia/Yekaterinburg\", label: \"Ekaterinburg\" },\n      { value: \"Europe/Kaliningrad\", label: \"Kaliningrad\" },\n      { value: \"Asia/Vladivostok\", label: \"Vladivostok\" },\n      { value: \"Asia/Kamchatka\", label: \"Kamchatka\" }\n    ]\n  },\n  // Africa & Middle East\n  {\n    group: TIMEZONE_GROUPS.AFRICA_MIDDLE_EAST,\n    timezones: [\n      { value: \"Africa/Lagos\", label: \"West Central Africa\" },\n      { value: \"Africa/Cairo\", label: \"Cairo\" },\n      { value: \"Africa/Harare\", label: \"Harare\" },\n      { value: \"Asia/Jerusalem\", label: \"Jerusalem\" },\n      { value: \"Africa/Johannesburg\", label: \"Pretoria\" },\n      { value: \"Asia/Baghdad\", label: \"Baghdad\" },\n      { value: \"Europe/Istanbul\", label: \"Istanbul\" },\n      { value: \"Asia/Kuwait\", label: \"Kuwait\" },\n      { value: \"Africa/Nairobi\", label: \"Nairobi\" },\n      { value: \"Asia/Riyadh\", label: \"Riyadh\" },\n      { value: \"Asia/Tehran\", label: \"Tehran\" },\n      { value: \"Asia/Dubai\", label: \"Abu Dhabi\" },\n      { value: \"Asia/Baku\", label: \"Baku\" },\n      { value: \"Asia/Muscat\", label: \"Muscat\" },\n      { value: \"Asia/Yerevan\", label: \"Yerevan\" },\n      { value: \"Asia/Kabul\", label: \"Kabul\" },\n      { value: \"Asia/Karachi\", label: \"Karachi\" },\n      { value: \"Asia/Tashkent\", label: \"Tashkent\" },\n      { value: \"Asia/Almaty\", label: \"Almaty\" },\n      { value: \"Asia/Dhaka\", label: \"Astana\" }\n    ]\n  },\n  // India\n  {\n    group: TIMEZONE_GROUPS.INDIA,\n    timezones: [\n      { value: \"Asia/Kolkata\", label: \"Chennai\" },\n      { value: \"Asia/Kolkata\", label: \"Kolkata\" },\n      { value: \"Asia/Kolkata\", label: \"Mumbai\" },\n      { value: \"Asia/Kolkata\", label: \"New Delhi\" },\n      { value: \"Asia/Colombo\", label: \"Sri Jayawardenepura\" },\n      { value: \"Asia/Kathmandu\", label: \"Kathmandu\" },\n      { value: \"Asia/Dhaka\", label: \"Dhaka\" }\n    ]\n  },\n  // Asia & Australia\n  {\n    group: TIMEZONE_GROUPS.ASIA_AUSTRALIA,\n    timezones: [\n      { value: \"Asia/Urumqi\", label: \"Urumqi\" },\n      { value: \"Asia/Rangoon\", label: \"Rangoon\" },\n      { value: \"Asia/Bangkok\", label: \"Bangkok\" },\n      { value: \"Asia/Ho_Chi_Minh\", label: \"Hanoi\" },\n      { value: \"Asia/Jakarta\", label: \"Jakarta\" },\n      { value: \"Asia/Krasnoyarsk\", label: \"Krasnoyarsk\" },\n      { value: \"Asia/Novosibirsk\", label: \"Novosibirsk\" },\n      { value: \"Asia/Shanghai\", label: \"Beijing\" },\n      { value: \"Asia/Shanghai\", label: \"Chongqing\" },\n      { value: \"Asia/Hong_Kong\", label: \"Hong Kong\" },\n      { value: \"Asia/Irkutsk\", label: \"Irkutsk\" },\n      { value: \"Asia/Kuala_Lumpur\", label: \"Kuala Lumpur\" },\n      { value: \"Australia/Perth\", label: \"Perth\" },\n      { value: \"Asia/Singapore\", label: \"Singapore\" },\n      { value: \"Asia/Taipei\", label: \"Taipei\" },\n      { value: \"Asia/Ulaanbaatar\", label: \"Ulaanbaatar\" },\n      { value: \"Asia/Tokyo\", label: \"Osaka\" },\n      { value: \"Asia/Tokyo\", label: \"Sapporo\" },\n      { value: \"Asia/Seoul\", label: \"Seoul\" },\n      { value: \"Asia/Tokyo\", label: \"Tokyo\" },\n      { value: \"Asia/Yakutsk\", label: \"Yakutsk\" },\n      { value: \"Australia/Adelaide\", label: \"Adelaide\" },\n      { value: \"Australia/Darwin\", label: \"Darwin\" },\n      { value: \"Australia/Brisbane\", label: \"Brisbane\" },\n      { value: \"Australia/Canberra\", label: \"Canberra\" },\n      { value: \"Australia/Hobart\", label: \"Hobart\" },\n      { value: \"Australia/Melbourne\", label: \"Melbourne\" },\n      { value: \"Pacific/Port_Moresby\", label: \"Port Moresby\" },\n      { value: \"Australia/Sydney\", label: \"Sydney\" },\n      { value: \"Asia/Magadan\", label: \"Magadan\" },\n      { value: \"Pacific/Noumea\", label: \"New Caledonia\" },\n      { value: \"Asia/Srednekolymsk\", label: \"Srednekolymsk\" },\n      { value: \"Pacific/Auckland\", label: \"Auckland\" },\n      { value: \"Pacific/Fiji\", label: \"Fiji\" },\n      { value: \"Pacific/Auckland\", label: \"Wellington\" }\n    ]\n  },\n  // Pacific\n  {\n    group: TIMEZONE_GROUPS.PACIFIC,\n    timezones: [\n      { value: \"Pacific/Midway\", label: \"International Date Line West\" },\n      { value: \"Pacific/Pago_Pago\", label: \"American Samoa\" },\n      { value: \"Pacific/Midway\", label: \"Midway Island\" },\n      { value: \"Pacific/Guam\", label: \"Guam\" },\n      { value: \"Pacific/Guadalcanal\", label: \"Solomon Is.\" },\n      { value: \"Pacific/Tarawa\", label: \"Marshall Is.\" },\n      { value: \"Pacific/Chatham\", label: \"Chatham Is.\" },\n      { value: \"Pacific/Tongatapu\", label: \"Nuku'alofa\" },\n      { value: \"Pacific/Apia\", label: \"Samoa\" },\n      { value: \"Pacific/Fakaofo\", label: \"Tokelau Is.\" }\n    ]\n  }\n]\n\nexport const formatTimezoneOption = (timezone) => {\n  const timeString = dayjs().tz(timezone.value).format(\"hh:mm A\")\n\n  return {\n    ...timezone,\n    label: `${timezone.label}`,\n    formattedLabel: `${timezone.label} ${timeString}`,\n    currentTime: timeString\n  }\n}\n\nexport const getGroupedTimezoneOptions = () =>\n  TIMEZONE_OPTIONS.map((group) => ({\n    label: group.group,\n    options: group.timezones.map(formatTimezoneOption)\n  }))\n","import React from \"react\"\nimport ReactSelect from \"react-select\"\n\nimport { InputWithLabel, Label, TextArea, ToggleButtonGroup } from \"../../components/shared/Inputs\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport { getGroupedTimezoneOptions } from \"../../utils/timeZoneUtils\"\nimport { selectStyling } from \"../../utils/utils\"\n\nconst VirtualLocationFields = ({ location, setLocation, validationErrors }) => {\n  const { practice } = usePractice()\n\n  const zoomActive = practice.conferencingServices.some((service) => service.provider === \"zoom\" && service.active)\n\n  // State to force update the times on timezone select\n  const [timeUpdate, setTimeUpdate] = React.useState(0)\n\n  React.useEffect(() => {\n    const interval = setInterval(() => {\n      setTimeUpdate((prev) => prev + 1)\n    }, 30000)\n\n    return () => clearInterval(interval)\n  }, [])\n\n  const timezoneOptions = React.useMemo(() => getGroupedTimezoneOptions(), [timeUpdate])\n\n  return (\n    <>\n      <ToggleButtonGroup\n        options={[\n          { label: \"Video calls\", value: \"video\" },\n          { label: \"Phone calls\", value: \"phone\" }\n        ]}\n        onChange={(value) => setLocation({ ...location, virtualType: value })}\n        value={location.virtualType || \"video\"}\n      />\n\n      <div className=\"flex flex-col gap-2\">\n        <Label>Time Zone</Label>\n        <ReactSelect\n          id=\"timezone-select\"\n          options={timezoneOptions}\n          value={\n            timezoneOptions\n              .flatMap((group) => group.options)\n              .find((tz) => tz.label === location.timeZone || tz.value === location.timeZone) || null\n          }\n          onChange={(option) => setLocation({ ...location, timeZone: option.label })}\n          styles={{\n            ...selectStyling(),\n            option: (provided, state) => ({\n              ...provided,\n              display: \"flex\",\n              justifyContent: \"space-between\",\n              \"&:after\": {\n                content: `\"${state.data.currentTime}\"`,\n                color: \"#666\"\n              }\n            }),\n            group: (provided) => ({\n              ...provided,\n              padding: \"8px\"\n            })\n          }}\n          formatGroupLabel={(group) => <div className=\"font-semibold text-gray-dark\">{group.label}</div>}\n          placeholder=\"Select a time zone...\"\n        />\n      </div>\n\n      {location.virtualType === \"video\" && (\n        <>\n          {!zoomActive ? (\n            <>\n              <div className=\"flex flex-col gap-2\">\n                <InputWithLabel\n                  label=\"Virtual link\"\n                  value={location.virtualLink || \"\"}\n                  explanatorySubtext=\"Ex: https://zoom.us/j/1234567890\"\n                  onChange={(e) => setLocation({ ...location, virtualLink: e.target.value })}\n                  validationError={validationErrors.virtualLink}\n                />\n                <Banner type=\"info\" className=\"text-sm\">\n                  You can add Zoom to generate unique links automatically.{\" \"}\n                  <UnderlinedLink href=\"/portal/settings/conferencing\">Click here to connect</UnderlinedLink>\n                </Banner>\n              </div>\n            </>\n          ) : (\n            <>\n              <div className=\"flex flex-col gap-2\">\n                <Label>Virtual link</Label>\n                <Banner type=\"info\" className=\"text-sm\">\n                  Zoom is active and unique links will be generated automatically.{\" \"}\n                  <UnderlinedLink href=\"/portal/settings/conferencing\">\n                    Click here to manage Zoom integration\n                  </UnderlinedLink>\n                </Banner>\n              </div>\n            </>\n          )}\n        </>\n      )}\n      <div>\n        <Label htmlFor=\"virtual-instructions\">Instructions on how to join</Label>\n        <TextArea\n          id=\"virtual-instructions\"\n          value={location.virtualInstructions || \"\"}\n          onChange={(e) => setLocation({ ...location, virtualInstructions: e.target.value })}\n          validationError={validationErrors.virtualInstructions}\n        />\n        <Typography variant=\"micro\" as=\"div\">\n          Add simple instructions for how your clients will join these calls\n        </Typography>\n      </div>\n    </>\n  )\n}\n\nexport default VirtualLocationFields\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Label } from \"../../components/shared/Inputs\"\nimport { Banner, Flyout } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatAvailableTimes } from \"../../utils/utils\"\n\nimport AvailableTimes from \"./AvailableTimes\"\nimport HomeLocationFields from \"./HomeLocationFields\"\nimport OfficeLocationFields from \"./OfficeLocationFields\"\nimport VirtualLocationFields from \"./VirtualLocationFields\"\n\nconst UPSERT_LOCATION = `\n  mutation UpsertLocation(\n    $id: ID,\n    $address: String,\n    $secondaryAddress: String,\n    $neighborhood: String,\n    $cityGeocoded: String,\n    $city: String,\n    $stateProvince: String,\n    $stateAbbreviation: String,\n    $country: String,\n    $countryCode: String,\n    $zip: String,\n    $latitude: Float,\n    $longitude: Float,\n    $timeZone: String,\n    $placeId: String,\n    $fullStreetAddress: String,\n    $hideAddress: Boolean,\n    $kind: String\n    $virtualType: String,\n    $virtualLink: String,\n    $virtualInstructions: String,\n    $travelDistance: String\n    $availableTimes: String\n    $countryIds: [String!]\n    $stateIds: [String!]) {\n    upsertLocation(\n      id: $id,\n      address: $address,\n      secondaryAddress: $secondaryAddress,\n      neighborhood: $neighborhood,\n      cityGeocoded: $cityGeocoded,\n      city: $city,\n      stateProvince: $stateProvince,\n      stateAbbreviation: $stateAbbreviation,\n      country: $country,\n      countryCode: $countryCode,\n      zip: $zip,\n      latitude: $latitude,\n      longitude: $longitude,\n      timeZone: $timeZone,\n      placeId: $placeId,\n      fullStreetAddress: $fullStreetAddress,\n      hideAddress: $hideAddress,\n      kind: $kind,\n      virtualType: $virtualType,\n      virtualLink: $virtualLink,\n      virtualInstructions: $virtualInstructions,\n      travelDistance: $travelDistance\n      availableTimes: $availableTimes\n      countryIds: $countryIds\n      stateIds: $stateIds) {\n      result\n      location {\n        id\n        name\n        latitude\n        longitude\n        singleLine\n        fullStreetAddress\n        cityState\n        city\n        stateAbbreviation\n        virtualType\n        virtualLink\n        virtualInstructions\n        kind\n        zip\n        address\n        secondaryAddress\n        availableTimes\n        hideAddress\n        timeZone\n        travelDistance\n        state\n        canDelete\n      }\n      errors\n    }\n  }\n`\nconst DISABLE_LOCATION = `\n  mutation DisableLocation ($id: ID!){\n    disableLocation (id: $id){\n      result\n      errors\n    }\n  }\n`\nconst ENABLE_LOCATION = `\n  mutation EnableLocation ($id: ID!){\n    enableLocation (id: $id){\n      result\n      errors\n    }\n  }\n`\nconst DELETE_LOCATION = `\n  mutation DeleteLocation ($id: ID!){\n    deleteLocation (id: $id){\n      result\n      errors\n    }\n  }\n`\n\nconst LocationFlyout = ({ location, setLocation, locations, setLocations, visible, closeFlyout }) => {\n  const { syncProfileStatus } = useProfileStatus()\n  const [formState, setFormState] = useState(JSON.parse(JSON.stringify(location)))\n  const [validationErrors, setValidationErrors] = useState({})\n\n  const [{ fetching: upsertLocationFetching }, upsertLocation] = useMutation(UPSERT_LOCATION)\n  const [{ fetching: disableLocationFetching }, disableLocation] = useMutation(DISABLE_LOCATION)\n  const [{ fetching: enableLocationFetching }, enableLocation] = useMutation(ENABLE_LOCATION)\n  const [{ fetching: deleteLocationFetching }, deleteLocation] = useMutation(DELETE_LOCATION)\n\n  const { showToast } = useToast()\n\n  const editingExistingLocation = !!formState.id\n  const lastActiveLocation = locations.filter((l) => l.state === \"active\").length <= 1\n  const fetching = upsertLocationFetching || disableLocationFetching || enableLocationFetching || deleteLocationFetching\n  const title = editingExistingLocation ? `Edit ${location.kind} location` : \"Add location\"\n\n  const handleLocationTypeChange = (e) => {\n    setFormState((state) => ({ ...state, kind: e.target.value }))\n  }\n\n  const updateLocationsState = (newLocation) => {\n    const locationsCopy = [...locations]\n    const index = locationsCopy.findIndex((location) => Number(location.id) === Number(newLocation.id))\n    if (index !== -1) {\n      locationsCopy[index] = newLocation\n    } else {\n      locationsCopy.push(newLocation)\n    }\n    setLocations(locationsCopy)\n  }\n\n  const onSave = () => {\n    const errors = {}\n\n    if (formState.kind === \"office\") {\n      if (!formState.fullStreetAddress) {\n        errors.fullStreetAddress = \"Address is required\"\n      }\n    } else if (formState.kind === \"virtual\") {\n      if (!formState.virtualLink && !formState.virtualInstructions) {\n        errors.virtualLink = \"Either a link or instructions are required\"\n        errors.virtualInstructions = \"Either a link or instructions are required\"\n      }\n    } else {\n      if (!formState.travelDistance) {\n        errors.travelDistance = \"Travel distance is required\"\n      }\n      if (!formState.fullStreetAddress) {\n        errors.fullStreetAddress = \"Address is required\"\n      }\n    }\n\n    if (Object.keys(errors).length > 0) {\n      setValidationErrors(errors)\n      return\n    } else {\n      setValidationErrors({})\n    }\n\n    upsertLocation({ ...formState, availableTimes: JSON.stringify(formState.availableTimes) }).then((result) => {\n      if (result?.data?.upsertLocation?.result === \"success\") {\n        const newLocation = result.data.upsertLocation.location\n        newLocation.availableTimes = formatAvailableTimes(newLocation.availableTimes)\n        setLocation(newLocation)\n        updateLocationsState(newLocation)\n\n        showToast(\"Location has been saved\")\n        syncProfileStatus()\n        closeFlyout()\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        let errorMessage = \"There was an error saving your location\"\n        if (result.data?.upsertLocation?.errors) errorMessage += `: ${result.data.upsertLocation.errors}`\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    })\n  }\n\n  const onDisable = () => {\n    disableLocation({ id: location.id }).then((result) => {\n      if (result?.data?.disableLocation?.result === \"success\") {\n        const newLocation = { ...location, state: \"disabled\" }\n        setLocation(newLocation)\n        updateLocationsState(newLocation)\n        showToast(\"Location has been disabled\")\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        let errorMessage = \"There was an error disabling your location\"\n        if (result.data?.disableLocation?.errors) errorMessage += `: ${result.data.disableLocation.errors}`\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    })\n  }\n\n  const onEnable = () => {\n    enableLocation({ id: location.id }).then((result) => {\n      if (result?.data?.enableLocation?.result === \"success\") {\n        const newLocation = { ...location, state: \"enabled\" }\n        setLocation(newLocation)\n        updateLocationsState(newLocation)\n        closeFlyout()\n        showToast(\"Location has been enabled\")\n      } else {\n        console.error(result)\n        let errorMessage = \"There was an error enabling your location\"\n        if (result.data?.enableLocation?.errors) errorMessage += `: ${result.data.enableLocation.errors}`\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    })\n  }\n\n  const onDelete = () => {\n    deleteLocation({ id: location.id }).then((result) => {\n      if (result?.data?.deleteLocation?.result === \"success\") {\n        setLocations(locations.filter((l) => l.id !== location.id))\n        closeFlyout()\n        showToast(\"Location has been deleted\")\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        let errorMessage = \"There was an error deleting your location\"\n        if (result.data?.deleteLocation?.errors) errorMessage += `: ${result.data.deleteLocation.errors}`\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    })\n  }\n\n  return (\n    <Flyout\n      visible={visible}\n      closeFlyout={() => {\n        closeFlyout()\n        setValidationErrors({})\n      }}\n      header={title}\n      footer={\n        <div className={`flex w-full items-center ${editingExistingLocation ? \"justify-between\" : \"justify-end\"}`}>\n          {editingExistingLocation && (\n            <>\n              {location.state === \"disabled\" ? (\n                <Button type=\"destructive\" onClick={onDelete} disabled={fetching}>\n                  Delete\n                </Button>\n              ) : (\n                <Button\n                  type=\"destructive\"\n                  onClick={onDisable}\n                  disabled={fetching || location.onlyLocationForService || lastActiveLocation}>\n                  Disable\n                </Button>\n              )}\n            </>\n          )}\n          <div className=\"flex gap-4\">\n            <Button\n              type=\"tertiary\"\n              onClick={() => {\n                closeFlyout()\n                setValidationErrors({})\n              }}\n              disabled={fetching}>\n              Cancel\n            </Button>\n            {location.state === \"disabled\" ? (\n              <Button type=\"primary\" onClick={onEnable} disabled={fetching}>\n                Enable\n              </Button>\n            ) : (\n              <Button type=\"primary\" onClick={onSave} disabled={fetching}>\n                Save\n              </Button>\n            )}\n          </div>\n        </div>\n      }>\n      <div\n        className={`flex flex-col gap-6 overflow-y-scroll ${\n          location.state === \"disabled\" ? \"pointer-events-none opacity-25\" : \"\"\n        }`}>\n        {!editingExistingLocation && (\n          <div>\n            <Label htmlFor=\"location-type\" className=\"mb-2\">\n              What type of location is this?\n            </Label>\n            <div className=\"flex gap-4\">\n              <RadioWithLabel\n                value=\"office\"\n                name=\"location-type\"\n                label=\"Office\"\n                checked={formState.kind === \"office\"}\n                onChange={handleLocationTypeChange}\n              />\n              <RadioWithLabel\n                value=\"virtual\"\n                name=\"location-type\"\n                label=\"Virtual\"\n                disabled={locations.filter((location) => location.kind === \"virtual\").length > 0}\n                disabledTooltipMessage=\"Note: You already have a virtual location set up.\"\n                checked={formState.kind === \"virtual\"}\n                onChange={handleLocationTypeChange}\n              />\n              <RadioWithLabel\n                id=\"in-home-radio\"\n                value=\"home\"\n                name=\"location-type\"\n                label=\"At client's home\"\n                disabled={locations.filter((location) => location.kind === \"home\").length > 0}\n                disabledTooltipMessage=\"Note: You already have an in-home location set up.\"\n                checked={formState.kind === \"home\"}\n                onChange={handleLocationTypeChange}\n              />\n            </div>\n          </div>\n        )}\n        {formState.kind === \"office\" ? (\n          <OfficeLocationFields location={formState} setLocation={setFormState} validationErrors={validationErrors} />\n        ) : formState.kind === \"home\" ? (\n          <HomeLocationFields location={formState} setLocation={setFormState} validationErrors={validationErrors} />\n        ) : (\n          <VirtualLocationFields location={formState} setLocation={setFormState} validationErrors={validationErrors} />\n        )}\n        <AvailableTimes availableTimes={formState.availableTimes} updateState={setFormState} />\n      </div>\n      {location.onlyLocationForService && (\n        <Banner type=\"warning\" className=\"mt-4\">\n          <b>Note:</b> This location is attached to a service(s) and cannot be disabled yet.{\" \"}\n          <UnderlinedLink\n            href=\"https://help.heal.me/en/articles/8467013-i-can-t-disable-or-delete-a-location-why-not\"\n            target=\"_blank\">\n            Learn more\n          </UnderlinedLink>\n        </Banner>\n      )}\n    </Flyout>\n  )\n}\n\nexport default LocationFlyout\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\n\nimport Badge from \"../../components/shared/Badge\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Box, ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport DisplayAvailableTimes from \"../ProfileEdit/DisplayAvailableTimes\"\nimport LocationFlyout from \"../ProfileEdit/LocationFlyout\"\nimport ProfileEditProvider from \"../ProfileEdit/ProfileEditProvider\"\n\nconst Locations = ({ locations, defaultAvailableTimes }) => {\n  const newLocationDefaults = {\n    availableTimes: defaultAvailableTimes,\n    kind: \"office\",\n    virtualType: \"video\",\n    timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone // Get user's browser timezone as default\n  }\n  const [locationsState, setLocationsState] = useState(locations)\n  const [location, setLocation] = useState(newLocationDefaults)\n  const [flyoutVisible, setFlyoutVisible] = useState(false)\n\n  const addNewLocation = () => {\n    setFlyoutVisible(true)\n    setLocation(newLocationDefaults)\n  }\n\n  return (\n    <>\n      <div className=\"w-[600px] md:w-full\">\n        <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n          <div className=\"flex flex-col\">\n            <Typography variant=\"h3\" as=\"h1\">\n              Locations & Hours\n            </Typography>\n            <Typography variant=\"subtitle\">Add or edit your locations and hours.</Typography>\n          </div>\n        </div>\n\n        {locationsState.length === 0 ? (\n          <ProfilePageEmptyStateBox title=\"Locations and hours\" onButtonClick={addNewLocation}>\n            Add any locations you offer and set your availability for each.\n          </ProfilePageEmptyStateBox>\n        ) : (\n          <Box data-test-id=\"locations\">\n            <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:hidden\">\n              <Typography variant=\"capitalHeading\">Locations</Typography>\n              <Button onClick={addNewLocation}>Add new</Button>\n            </div>\n            <Button onClick={addNewLocation} floatingInMobile={true} className=\"hidden sm:block\">\n              Add new\n            </Button>\n            <div className=\"mt-6 flex flex-col gap-4 sm:mt-0\">\n              {locationsState.map((location) => {\n                const title =\n                  location.kind === \"virtual\"\n                    ? \"Virtual office\"\n                    : location.kind === \"home\"\n                    ? \"In-home\"\n                    : location.address\n                const subTitle =\n                  location.kind === \"virtual\"\n                    ? `${capitalize(location.virtualType)} calls`\n                    : location.kind === \"home\"\n                    ? \"\"\n                    : `${location.city}, ${location.stateAbbreviation}`\n                return (\n                  <Box key={location.id}>\n                    {location.state === \"disabled\" && (\n                      <div className=\"mb-4\">\n                        <Badge type=\"error\">Disabled</Badge>\n                      </div>\n                    )}\n                    <div className=\"flex items-center justify-between\">\n                      <Typography variant=\"title\">{title}</Typography>\n                      <Button\n                        type=\"link\"\n                        onClick={() => {\n                          setLocation(location)\n                          setFlyoutVisible(true)\n                        }}>\n                        Manage\n                      </Button>\n                    </div>\n                    <div className=\"flex items-center justify-between\">\n                      <Typography variant=\"smSubtitle\">{subTitle}</Typography>\n                      {location.kind === \"virtual\" && (\n                        <Typography variant=\"smSubtitle\">Timezone: {location.timeZone}</Typography>\n                      )}\n                    </div>\n\n                    <DisplayAvailableTimes locationOrService={location} className=\"mt-4\" />\n                  </Box>\n                )\n              })}\n            </div>\n          </Box>\n        )}\n      </div>\n\n      <LocationFlyout\n        key={location.id}\n        visible={flyoutVisible}\n        closeFlyout={() => setFlyoutVisible(false)}\n        location={location}\n        setLocation={setLocation}\n        locations={locationsState}\n        setLocations={setLocationsState}\n      />\n    </>\n  )\n}\n\nexport default function PortalServicesLocations({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <Locations {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import { Menu, MenuButton, MenuItem, MenuItems, Transition } from \"@headlessui/react\"\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\"\nimport PropTypes from \"prop-types\"\nimport React from \"react\"\nimport { Fragment } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { DROPDOWN_CLASSNAMES, DROPDOWN_OPTION_CLASSNAMES } from \"./Inputs\"\n\nconst DropdownButton = ({ label, items, className }) => (\n  <Menu as=\"div\" className={twMerge(\"relative inline-block text-left\", className)}>\n    <div>\n      <MenuButton className=\"flex h-8 items-center justify-center gap-2 rounded border border-teal bg-teal px-4 font-bold text-white hover:shadow focus:outline-none focus:ring-2 focus:ring-blue active:bg-teal-dark\">\n        {label}\n        <ChevronDownIcon className=\"h-5 w-5\" aria-hidden=\"true\" />\n      </MenuButton>\n    </div>\n\n    <Transition\n      as={Fragment}\n      enter=\"transition ease-out duration-100\"\n      enterFrom=\"transform opacity-0 scale-95\"\n      enterTo=\"transform opacity-100 scale-100\"\n      leave=\"transition ease-in duration-75\"\n      leaveFrom=\"transform opacity-100 scale-100\"\n      leaveTo=\"transform opacity-0 scale-95\">\n      <MenuItems className={twMerge(\"absolute right-0 mt-2 w-56 origin-top-right\", DROPDOWN_CLASSNAMES)}>\n        <div className=\"py-1\">\n          {items.map((item, index) => (\n            <MenuItem key={index}>\n              {({ active, selected }) => (\n                <button\n                  className={twMerge(\n                    DROPDOWN_OPTION_CLASSNAMES({ active, selected }),\n                    \"mb-0 block w-full pr-3 text-left\"\n                  )}\n                  onClick={item.onClick}>\n                  {item.label}\n                </button>\n              )}\n            </MenuItem>\n          ))}\n        </div>\n      </MenuItems>\n    </Transition>\n  </Menu>\n)\n\nDropdownButton.propTypes = {\n  label: PropTypes.string.isRequired,\n  items: PropTypes.arrayOf(\n    PropTypes.shape({\n      label: PropTypes.string.isRequired,\n      href: PropTypes.string,\n      onClick: PropTypes.func\n    })\n  ).isRequired,\n  className: PropTypes.string\n}\n\nexport default DropdownButton\n","import { Combobox, ComboboxButton, ComboboxInput, ComboboxOption, ComboboxOptions } from \"@headlessui/react\"\nimport { MapPinIcon } from \"@heroicons/react/24/solid\"\nimport capitalize from \"lodash/capitalize\"\nimport React, { useState, useRef } from \"react\"\nimport usePlacesService from \"react-google-autocomplete/lib/usePlacesAutocompleteService\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { BASE_INPUT_CLASSNAMES, DROPDOWN_CLASSNAMES, DROPDOWN_OPTION_CLASSNAMES } from \"../../components/shared/Inputs\"\nimport { Divider } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { stripUSAFromString } from \"../../utils/utils\"\n\nconst LocationInput = ({ eventType, setEventType, previousLocations }) => {\n  const [inputValue, setInputValue] = useState(eventType.location || \"\")\n  const comboboxRef = useRef(null)\n\n  const { placesService, placePredictions, getPlacePredictions, isPlacePredictionsLoading } = usePlacesService({\n    debounce: 300\n  })\n\n  const onChange = (location) => {\n    setEventType((prev) => ({ ...prev, location }))\n  }\n\n  const value = eventType.location || \"\"\n\n  return (\n    <div>\n      <Combobox\n        id=\"location-input\"\n        as=\"div\"\n        className=\"relative sm:flex-1\"\n        ref={comboboxRef}\n        value={value}\n        onChange={(item) => {\n          if (typeof item === \"string\") {\n            onChange(item)\n            setInputValue(item)\n          } else if (item) {\n            placesService.getDetails({ placeId: item.place_id }, (place) => {\n              const newMapCenter = { lat: place.geometry.location.lat(), lng: place.geometry.location.lng() }\n              const event = new CustomEvent(\"newMapCenter\", { detail: newMapCenter })\n              document.dispatchEvent(event)\n              onChange(item.description)\n              setInputValue(item.description)\n            })\n          }\n        }}>\n        <div className=\"relative\">\n          <ComboboxInput\n            onChange={(evt) => {\n              const newValue = evt.target.value\n              setInputValue(newValue)\n              onChange(newValue)\n              getPlacePredictions({ input: newValue })\n            }}\n            className={BASE_INPUT_CLASSNAMES}\n            placeholder=\"Location\"\n            value={inputValue}\n          />\n          {isPlacePredictionsLoading ? (\n            <LoadingSpinner className=\"absolute right-2 top-2 py-0\" spinnerClassName=\"h-5 w-5\" />\n          ) : (\n            // Button is used to trigger the dropdown\n            <ComboboxButton className=\"absolute right-1.5 top-1.5 h-6 w-6 text-gray-dark opacity-[0.64] sm:top-[7px]\">\n              <MapPinIcon />\n            </ComboboxButton>\n          )}\n        </div>\n\n        <ComboboxOptions className={twMerge(DROPDOWN_CLASSNAMES, \"absolute z-50 w-full max-w-[430px]\")}>\n          {previousLocations?.length > 0 && <div className=\"px-3 font-bold\">My locations</div>}\n          {previousLocations?.map((location) => (\n            <ComboboxOption key={location} className={DROPDOWN_OPTION_CLASSNAMES} value={location}>\n              {location}\n            </ComboboxOption>\n          ))}\n          {previousLocations?.length > 0 && <Divider />}\n          {placePredictions?.length > 0 &&\n            !isPlacePredictionsLoading &&\n            placePredictions.map((item) => (\n              <ComboboxOption key={item.description} className={DROPDOWN_OPTION_CLASSNAMES} value={item}>\n                <div\n                  dangerouslySetInnerHTML={{\n                    __html: stripUSAFromString(item.description).replace(\n                      new RegExp(value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"i\"),\n                      (match) => `<mark style='font-weight: bold'>${capitalize(match)}</mark>`\n                    )\n                  }}\n                />\n              </ComboboxOption>\n            ))}\n        </ComboboxOptions>\n      </Combobox>\n    </div>\n  )\n}\n\nexport default LocationInput\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { FilePicker } from \"../../components/shared/FileStackWidgets\"\nimport { BASE_INPUT_CLASSNAMES, Label } from \"../../components/shared/Inputs\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport { useBookableEventTypes } from \"./BookableEventTypesContext\"\n\nconst PhotoUpload = () => {\n  const {\n    bookableEventType,\n    setBookableEventType,\n    fetching,\n    saveEventType,\n    updatePhoto,\n    removePhoto,\n    updateBookableEventTypes\n  } = useBookableEventTypes()\n\n  const { showToast } = useToast()\n\n  const onUploadDone = (res) => {\n    if (bookableEventType.id) {\n      uploadPhoto(res)\n    } else {\n      saveEventType().then((result) => {\n        if (result?.data?.upsertBookableEventType?.result === \"success\") {\n          const newEventType = result.data.upsertBookableEventType.bookableEventType\n          newEventType.photoUrl = null\n          setBookableEventType(newEventType)\n          updateBookableEventTypes(newEventType)\n          uploadPhoto(res, newEventType.id)\n        } else {\n          console.error(result)\n          let errorMessage = \"There was an error saving your event type\"\n          if (result.data?.upsertBookableEventType?.errors)\n            errorMessage += `: ${result.data.upsertBookableEventType.errors}`\n          showToast({ type: \"error\", content: errorMessage })\n        }\n      })\n    }\n  }\n\n  const onPhotoDelete = () => {\n    removePhoto({ id: bookableEventType.id }).then((result) => {\n      if (result?.data?.removeBookableEventTypePhoto?.result === \"success\") {\n        const newEventType = { ...bookableEventType, photoUrl: null }\n        setBookableEventType(newEventType)\n        updateBookableEventTypes(newEventType)\n        showToast(\"Your photo has been removed.\")\n      } else {\n        console.error(result)\n        let errorMessage =\n          \"There was an error removing your event type photo. Please try again later or contact support.\"\n        if (result.data?.removeBookableEventTypePhoto?.errors)\n          errorMessage += ` ${result.data.removeBookableEventTypePhoto.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n\n  const uploadPhoto = (res, id) => {\n    updatePhoto({\n      handle: res.filesUploaded[0].handle,\n      id: bookableEventType.id || id\n    }).then((result) => {\n      if (result?.data?.updateBookableEventTypePhoto?.result === \"success\") {\n        const newEventType = {\n          ...bookableEventType,\n          photoUrl: result.data.updateBookableEventTypePhoto.photoUrl,\n          id: bookableEventType.id || id\n        }\n        setBookableEventType((eventType) => ({\n          ...eventType,\n          photoUrl: newEventType.photoUrl\n        }))\n        updateBookableEventTypes(newEventType)\n        showToast(\"Your photo has been saved.\")\n      } else {\n        console.error(result)\n        let errorMessage = \"There was an error saving your event type photo. Please try again later or contact support.\"\n        if (result.data?.updateBookableEventTypePhoto?.errors)\n          errorMessage += ` ${result.data.updateBookableEventTypePhoto.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n\n  return (\n    <>\n      <div className=\"flex justify-between\">\n        <Label htmlFor=\"photo\">Photo</Label>\n        {!bookableEventType.photoUrl && <div className=\"text-sm text-gray-dark\">Optional</div>}\n      </div>\n      {fetching ? (\n        <LoadingSpinner className=\"py-0\" />\n      ) : bookableEventType.photoUrl ? (\n        <div className=\"flex items-center gap-4\">\n          <img src={bookableEventType.photoUrl} alt=\"Event type photo\" className=\"h-16 w-16 rounded-lg\" />\n          <div>\n            <FilePicker\n              as=\"button\"\n              className=\"font-bold text-teal\"\n              onUploadDone={onUploadDone}\n              disabled={fetching}\n              transformations={{}}>\n              Edit photo\n            </FilePicker>\n          </div>\n          <button className=\"font-bold text-red\" onClick={onPhotoDelete}>\n            Remove\n          </button>\n        </div>\n      ) : (\n        <FilePicker\n          as=\"button\"\n          onUploadDone={onUploadDone}\n          disabled={fetching}\n          transformations={{}}\n          className={twMerge(BASE_INPUT_CLASSNAMES, \"text-teal\")}>\n          + Upload photo\n        </FilePicker>\n      )}\n    </>\n  )\n}\n\nexport default PhotoUpload\n","import React from \"react\"\n\nimport CurrencyInput from \"../../components/shared/CurrencyInput\"\nimport { CheckBox, Input, Label, TextArea } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { formatPrice, unformatPrice } from \"../../utils/utils\"\n\nimport { useBookableEventTypes } from \"./BookableEventTypesContext\"\nimport LocationInput from \"./LocationInput\"\nimport PhotoUpload from \"./PhotoUpload\"\n\nconst BookableEventTypeForm = () => {\n  const { bookableEventType, setBookableEventType, googlePlacesLoaded } = useBookableEventTypes()\n\n  const handleChange = (field, value) => {\n    setBookableEventType((prev) => ({ ...prev, [field]: value }))\n  }\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <div>\n        <Label>Name</Label>\n        <Input\n          value={bookableEventType.name || \"\"}\n          onChange={(e) => handleChange(\"name\", e.target.value)}\n          placeholder=\"e.g., Yoga Class, Meditation Session, etc.\"\n          className=\"mt-1 w-full\"\n        />\n      </div>\n\n      <div>\n        <Label>URL</Label>\n        <Input\n          value={bookableEventType.slug || \"\"}\n          onChange={(e) => handleChange(\"slug\", e.target.value)}\n          placeholder=\"e.g., yoga-class, meditation-session\"\n          className=\"mt-1 w-full\"\n        />\n        <Typography variant=\"micro\" className=\"\" as=\"div\">\n          This is the final part of the link, for example: yoursite.com/yoga-class. Use lowercase letters, numbers, and\n          hyphens only.\n        </Typography>\n      </div>\n\n      <div>\n        <Label>Description</Label>\n        <TextArea\n          value={bookableEventType.description || \"\"}\n          onChange={(e) => handleChange(\"description\", e.target.value)}\n          placeholder=\"Describe your event type to help clients understand what they're booking\"\n          className=\"mt-1 w-full\"\n          rows={3}\n        />\n      </div>\n\n      <div>\n        <Label>Instructions</Label>\n        <TextArea\n          value={bookableEventType.instructions || \"\"}\n          onChange={(e) => handleChange(\"instructions\", e.target.value)}\n          placeholder=\"Provide any instructions or information clients need before attending\"\n          className=\"mt-1 w-full\"\n          rows={3}\n        />\n        <Typography variant=\"micro\" className=\"-mt-1\" as=\"div\">\n          Instructions for attendees. We&apos;ll email these to them after they book.\n        </Typography>\n      </div>\n\n      <div>\n        <div className=\"flex justify-between\">\n          <Label htmlFor=\"price-input\">Price</Label>\n          <div className=\"text-sm text-gray-dark\">Optional</div>\n        </div>\n        <CurrencyInput\n          value={bookableEventType.amountCents ? formatPrice(bookableEventType.amountCents) : \"\"}\n          onChange={(input) => {\n            const newAmount = unformatPrice(input.target.value)\n            handleChange(\"amountCents\", newAmount)\n          }}\n          className=\"mt-1 w-full\"\n          placeholder=\"$0.00 (leave blank for free)\"\n        />\n      </div>\n\n      <div>\n        <div className=\"flex justify-between\">\n          <Label>Capacity</Label>\n          <div className=\"text-sm text-gray-dark\">Optional</div>\n        </div>\n        <Input\n          type=\"number\"\n          value={bookableEventType.capacity || \"\"}\n          onChange={(e) => handleChange(\"capacity\", e.target.value === \"\" ? null : parseInt(e.target.value, 10))}\n          placeholder=\"Leave blank for unlimited capacity\"\n          className=\"mt-1 w-full\"\n          min={1}\n        />\n      </div>\n\n      <div>\n        <Label>Event Location</Label>\n        <div className=\"mt-4\">\n          <CheckBox\n            id=\"virtual-event-checkbox\"\n            label=\"Virtual Event\"\n            name=\"Virtual Event\"\n            checked={bookableEventType.kind === \"virtual\"}\n            onChange={() => {\n              const newKind = bookableEventType.kind === \"in_person\" ? \"virtual\" : \"in_person\"\n              setBookableEventType((event) => ({ ...event, kind: newKind }))\n            }}\n          />\n        </div>\n        {googlePlacesLoaded && (\n          <div className=\"mt-2\">\n            {bookableEventType.kind === \"in_person\" ? (\n              <>\n                <LocationInput eventType={bookableEventType} setEventType={setBookableEventType} />\n                <Typography variant=\"micro\">Enter an address for in-person event</Typography>\n              </>\n            ) : (\n              <>\n                {/* <Label htmlFor=\"virtual-url\">Virtual Meeting URL</Label> */}\n                <Input\n                  id=\"virtual-url\"\n                  value={bookableEventType.location || \"\"}\n                  placeholder=\"https://zoom.us/j/123456789\"\n                  onChange={(e) => setBookableEventType((event) => ({ ...event, location: e.target.value }))}\n                />\n                <Typography variant=\"micro\">Enter a URL for virtual events (Zoom, Google Meet, etc.)</Typography>\n              </>\n            )}\n          </div>\n        )}\n      </div>\n\n      {/* <div>\n        <Label>Image</Label>\n        <div className=\"mt-1\">Image upload coming soon</div>\n      </div> */}\n\n      <div className=\"mt-4\">\n        <PhotoUpload />\n      </div>\n    </div>\n  )\n}\n\nexport default BookableEventTypeForm\n","import React, { useState } from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Flyout } from \"../../components/shared/Layout\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport BookableEventTypeForm from \"./BookableEventTypeForm\"\nimport { useBookableEventTypes } from \"./BookableEventTypesContext\"\n\nconst BookableEventTypeFlyout = () => {\n  const {\n    showFlyout,\n    setShowFlyout,\n    bookableEventType,\n    saveEventType,\n    refetchEventTypes,\n    deleteBookableEventType,\n    removeBookableEventTypeFromList\n  } = useBookableEventTypes()\n\n  const [deleteModalVisible, setDeleteModalVisible] = useState(false)\n  const [fetching, setFetching] = useState(false)\n  const { showToast } = useToast()\n\n  const editingExistingEventType = !!bookableEventType.id\n\n  const saveEnabled = !fetching && bookableEventType.name?.length > 0 && bookableEventType.location?.length > 0\n\n  const handleDelete = async () => {\n    setFetching(true)\n    try {\n      const result = await deleteBookableEventType({ id: bookableEventType.id })\n\n      if (result?.data?.deleteBookableEventType?.result === \"success\") {\n        showToast(`Event type '${bookableEventType.name}' was deleted successfully`)\n        removeBookableEventTypeFromList(bookableEventType.id)\n        setDeleteModalVisible(false)\n        setShowFlyout(false)\n        if (refetchEventTypes) {\n          refetchEventTypes()\n        }\n      } else {\n        let errorMessage = \"There was an error deleting your event type\"\n        if (result?.data?.deleteBookableEventType?.errors) {\n          errorMessage += `: ${result.data.deleteBookableEventType.errors}`\n        }\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    } catch (error) {\n      console.error(\"Error deleting event type:\", error)\n      showToast({ type: \"error\", content: \"There was an error deleting your event type\" })\n    } finally {\n      setFetching(false)\n    }\n  }\n\n  const handleSave = async () => {\n    setFetching(true)\n    try {\n      const result = await saveEventType()\n      if (result?.data?.upsertBookableEventType?.result === \"success\") {\n        showToast(`Event type '${bookableEventType.name}' was saved successfully`)\n        setShowFlyout(false)\n      } else {\n        let errorMessage = \"Error\"\n        if (result?.data?.upsertBookableEventType?.errors) {\n          errorMessage += `: ${result.data.upsertBookableEventType.errors}`\n        }\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    } catch (error) {\n      console.error(\"Error saving event type:\", error)\n      showToast({ type: \"error\", content: \"There was an error saving your event type\" })\n    } finally {\n      setFetching(false)\n    }\n  }\n\n  return (\n    <>\n      <Flyout\n        header={editingExistingEventType ? \"Edit Event Type\" : \"Create Event Type\"}\n        visible={showFlyout}\n        closeFlyout={() => setShowFlyout(false)}\n        onSave={handleSave}\n        saveEnabled={saveEnabled}\n        footer={\n          <div className={`flex w-full items-center ${editingExistingEventType ? \"justify-between\" : \"justify-end\"}`}>\n            {editingExistingEventType && (\n              <Button type=\"destructive\" onClick={() => setDeleteModalVisible(true)} disabled={fetching}>\n                Delete\n              </Button>\n            )}\n            <div className=\"flex gap-4\">\n              <Button type=\"tertiary\" onClick={() => setShowFlyout(false)} disabled={fetching}>\n                Cancel\n              </Button>\n              <Button type=\"primary\" onClick={handleSave} disabled={!saveEnabled || fetching}>\n                Save\n              </Button>\n            </div>\n          </div>\n        }>\n        <BookableEventTypeForm />\n      </Flyout>\n\n      {/* Delete Modal */}\n      <AnimatedModal\n        visible={deleteModalVisible}\n        header=\"Delete Event Type\"\n        confirmLabel=\"Delete\"\n        confirmType=\"destructive\"\n        hideModal={() => setDeleteModalVisible(false)}\n        onSave={handleDelete}\n        disabled={fetching}\n        showFooter={true}\n        actionButtonCopy=\"Delete\"\n        cancelButtonCopy=\"Cancel\"\n        cancelButtonType=\"tertiary\"\n        actionButtonType=\"destructive\">\n        <p>\n          Are you sure you want to delete the event type <strong>{bookableEventType.name}</strong>? This action cannot\n          be undone.\n        </p>\n      </AnimatedModal>\n    </>\n  )\n}\n\nexport default BookableEventTypeFlyout\n","import { PencilIcon, ArrowTopRightOnSquareIcon } from \"@heroicons/react/24/outline\"\nimport React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport { formatPrice } from \"../../utils/utils\"\n\nimport { useBookableEventTypes } from \"./BookableEventTypesContext\"\n\nconst EventTypeRow = ({ eventType, onEdit }) => (\n  <tr className=\"border-b border-gray\">\n    <td className=\"px-2 py-4 align-middle\">{eventType.name}</td>\n    <td className=\"px-2 py-4 align-middle\">\n      {eventType.amountCents > 0 ? formatPrice(eventType.amountCents) : \"Free\"}\n    </td>\n    <td className=\"px-2 py-4 align-middle\">{eventType.capacity || \"Unlimited\"}</td>\n    <td className=\"px-2 py-4 align-middle\">{eventType.kind === \"in_person\" ? \"In-person\" : \"Virtual\"}</td>\n    <td className=\"px-2 py-4 text-right align-middle\">\n      <div className=\"flex justify-end gap-2\">\n        {eventType.url && (\n          <a\n            href={eventType.url}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            className=\"rounded-full bg-gray-light p-2 text-xs text-gray-dark transition hover:bg-gray\"\n            title=\"Open event page\">\n            <ArrowTopRightOnSquareIcon className=\"h-4 w-4\" />\n          </a>\n        )}\n        <button\n          className=\"rounded-full bg-gray-light p-2 text-xs text-gray-dark transition hover:bg-gray\"\n          onClick={() => onEdit(eventType)}>\n          <PencilIcon className=\"h-4 w-4\" />\n        </button>\n      </div>\n    </td>\n  </tr>\n)\n\nconst BookableEventTypesTable = () => {\n  const { bookableEventTypes, addEventType, editEventType } = useBookableEventTypes()\n\n  if (bookableEventTypes.length === 0) {\n    return (\n      <ProfilePageEmptyStateBox onButtonClick={addEventType}>\n        You don&apos;t have any event types yet.\n      </ProfilePageEmptyStateBox>\n    )\n  }\n\n  return (\n    <div className=\"mt-6 w-full sm:mt-0\">\n      <div className=\"overflow-hidden rounded-lg border bg-white\">\n        <table className=\"w-full table-auto\">\n          <thead className=\"bg-gray-light\">\n            <tr>\n              <th className=\"px-2 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-dark\">Name</th>\n              <th className=\"px-2 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-dark\">Price</th>\n              <th className=\"px-2 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-dark\">\n                Capacity\n              </th>\n              <th className=\"px-2 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-dark\">\n                Location\n              </th>\n              <th className=\"px-2 py-3 text-right text-xs font-medium uppercase tracking-wider text-gray-dark\">\n                Actions\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {bookableEventTypes.map((eventType) => (\n              <EventTypeRow key={eventType.id} eventType={eventType} onEdit={editEventType} />\n            ))}\n          </tbody>\n        </table>\n      </div>\n      <div className=\"mt-4 flex justify-end\">\n        <Button onClick={addEventType}>Add New Event Type</Button>\n      </div>\n    </div>\n  )\n}\n\nexport default BookableEventTypesTable\n","import React, { useMemo } from \"react\"\nimport ReactSelect from \"react-select\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { selectStyling } from \"../../utils/utils\"\n\nconst ServiceSelector = ({ services, selectedServiceIds, onChange, className, disabled }) => {\n  const serviceOptions = useMemo(\n    () =>\n      services.map((service) => ({\n        value: service.id,\n        label: service.name\n      })),\n    [services]\n  )\n\n  return (\n    <div className={twMerge(className, disabled && \"pointer-events-none opacity-50\")}>\n      <ReactSelect\n        isMulti\n        options={serviceOptions}\n        value={serviceOptions.filter((option) => selectedServiceIds.includes(option.value))}\n        onChange={(selected) => !disabled && onChange(selected ? selected.map((s) => s.value) : [])}\n        styles={selectStyling()}\n        placeholder=\"Select services...\"\n        disabled={disabled}\n      />\n    </div>\n  )\n}\n\nexport default ServiceSelector\n","import { InformationCircleIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport React, { useEffect, useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport DatePicker from \"../../components/shared/DatePicker\"\nimport { Input, InputWithLabel, Label, Select, CheckBox, ValidationError, Toggle } from \"../../components/shared/Inputs\"\nimport { Divider, Flyout } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport { defaultDiscountCode } from \"./DiscountCodesTable\"\nimport ServiceSelector from \"./ServiceSelector\"\n\nconst UPSERT_DISCOUNT_CODE = `\n  mutation UpsertDiscountCode($input: UpsertDiscountCodeInput!) {\n    upsertDiscountCode(input: $input) {\n      discountCode {\n        id\n        code\n        kind\n        amountCents\n        percent\n        expiresAt\n        maxRedemptions\n        redemptionCount\n        serviceIds\n        applyToSpecificServices\n        editable\n      }\n      errors\n      result\n    }\n  }\n`\n\nconst DiscountCodeFlyout = ({ services, setDiscountCodes, visible, setVisible, editingCode, setEditingCode }) => {\n  const [formData, setFormData] = useState(defaultDiscountCode)\n\n  const [errors, setErrors] = useState({})\n  const [, upsertDiscountCode] = useMutation(UPSERT_DISCOUNT_CODE)\n  const { showToast } = useToast()\n\n  useEffect(() => {\n    if (editingCode) {\n      setFormData({\n        code: editingCode.code || \"\",\n        kind: editingCode.kind || \"fixed\",\n        amountCents: editingCode.amountCents || null,\n        percent: editingCode.percent || null,\n        expiresAt: editingCode.expiresAt ? new Date(editingCode.expiresAt) : null,\n        maxRedemptions: editingCode.maxRedemptions || null,\n        combinationLimit: editingCode.combinationLimit || 1,\n        hasExpiration: !!editingCode.expiresAt,\n        hasMaxRedemptions: !!editingCode.maxRedemptions,\n        applyToSpecificServices: editingCode.applyToSpecificServices,\n        serviceIds: editingCode.serviceIds || []\n      })\n    } else {\n      setFormData(defaultDiscountCode)\n    }\n  }, [editingCode])\n\n  const handleSubmit = async (e) => {\n    e.preventDefault()\n    const newErrors = {}\n\n    if (formData.code && (formData.code.length < 8 || !/^[A-Z0-9]+$/.test(formData.code))) {\n      newErrors.code = \"Code must be at least 8 characters and contain only uppercase letters and numbers\"\n    }\n\n    if (formData.kind === \"fixed\" && !formData.amountCents) {\n      newErrors.amountCents = \"Please enter an amount for fixed discount\"\n    }\n\n    if (formData.kind === \"percentage\" && !formData.percent) {\n      newErrors.percent = \"Please enter a percentage for percentage discount\"\n    }\n\n    if (Object.keys(newErrors).length > 0) {\n      setErrors(newErrors)\n      return\n    }\n\n    // Clear errors before submitting\n    setErrors({})\n    const result = await upsertDiscountCode({\n      input: {\n        id: editingCode?.id,\n        code: formData.code,\n        kind: formData.kind,\n        amountCents: formData.amountCents ? parseInt(formData.amountCents) : null,\n        percent: formData.percent ? parseInt(formData.percent) : null,\n        expiresAt: formData.expiresAt ? dayjs(formData.expiresAt).format(\"YYYY-MM-DDTHH:mm:ssZ\") : null,\n        maxRedemptions: formData.maxRedemptions ? parseInt(formData.maxRedemptions) : null,\n        applyToSpecificServices: formData.applyToSpecificServices,\n        serviceIds: formData.serviceIds\n      }\n    })\n\n    if (result.data?.upsertDiscountCode?.result === \"success\") {\n      const newCode = result.data?.upsertDiscountCode?.discountCode\n      newCode.id = Number(newCode.id)\n      newCode.serviceIds = newCode.serviceIds.map(Number)\n      setDiscountCodes((codes) => {\n        const codeIndex = codes.findIndex((c) => c.id === newCode.id)\n        if (codeIndex >= 0) {\n          return codes.map((c) => (c.id === newCode.id ? newCode : c))\n        } else {\n          return [newCode, ...codes]\n        }\n      })\n      showToast({ content: \"Coupon saved successfully\", type: \"success\" })\n    } else {\n      showToast({\n        content: `Error: ${result.data?.upsertDiscountCode?.errors?.join(\", \") || result.error}`,\n        type: \"error\"\n      })\n      return\n    }\n\n    setEditingCode(null)\n    setVisible(false)\n  }\n\n  return (\n    <Flyout\n      visible={visible}\n      closeFlyout={() => setVisible(false)}\n      header={`${editingCode.id ? \"Edit\" : \"New\"} Coupon`}\n      footer={\n        <div className=\"flex w-full items-center justify-end\">\n          <div className=\"flex gap-4\">\n            <Button type=\"tertiary\" onClick={() => setVisible(false)}>\n              Cancel\n            </Button>\n            <Button type=\"primary\" onClick={handleSubmit}>\n              Save\n            </Button>\n          </div>\n        </div>\n      }>\n      <form className=\"flex flex-col gap-4\">\n        <div>\n          <InputWithLabel\n            label=\"Code\"\n            value={formData.code}\n            disabled={!editingCode.editable}\n            onChange={(e) =>\n              setFormData({\n                ...formData,\n                code: e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, \"\")\n              })\n            }\n            validationError={errors.code}\n          />\n          <Typography variant=\"micro\">Leave blank to generate a random code (recommended).</Typography>\n        </div>\n\n        <div className=\"flex gap-4\">\n          <div className=\"w-1/2\">\n            <Label>Type</Label>\n            <Select\n              value={formData.kind}\n              onChange={(e) => {\n                setFormData({ ...formData, kind: e.target.value, amountCents: null, percent: null })\n              }}\n              disabled={!editingCode.editable}\n              options={[\n                { label: \"Fixed Amount\", value: \"fixed\" },\n                { label: \"Percentage\", value: \"percentage\" }\n              ]}\n              required\n            />\n          </div>\n\n          {formData.kind === \"fixed\" ? (\n            <div className=\"w-1/2\">\n              <Label htmlFor=\"amountCents\">Amount</Label>\n              <div className=\"relative flex w-20 items-center\">\n                <span className=\"pointer-events-none absolute left-3 text-gray-dark\">$</span>\n                <Input\n                  id=\"amountCents\"\n                  type=\"number\"\n                  min=\"1\"\n                  step=\"1\"\n                  className=\"pl-7\"\n                  disabled={!editingCode.editable}\n                  value={Math.round(Number(formData.amountCents) / 100) || \"\"}\n                  onChange={(e) => {\n                    setFormData({ ...formData, amountCents: parseInt(e.target.value * 100) })\n                  }}\n                  validationError={!!errors.amountCents}\n                />\n              </div>\n              {errors.amountCents && <ValidationError>{errors.amountCents}</ValidationError>}\n            </div>\n          ) : (\n            <div className=\"w-1/2\">\n              <Label htmlFor=\"percent\">Percentage</Label>\n              <div className=\"relative flex w-20 items-center\">\n                <Input\n                  id=\"percent\"\n                  type=\"number\"\n                  min=\"0\"\n                  step=\"1\"\n                  max=\"100\"\n                  className=\"pr-7\"\n                  disabled={!editingCode.editable}\n                  value={Number(formData.percent) || \"\"}\n                  onChange={(e) => {\n                    setFormData({ ...formData, percent: Math.floor(Number(e.target.value)) })\n                  }}\n                  onKeyDown={(e) => {\n                    if (e.key === \".\" || e.key === \",\") {\n                      e.preventDefault()\n                    }\n                  }}\n                  validationError={!!errors.percent}\n                />\n                <span className=\"pointer-events-none absolute right-3 text-gray-dark\">%</span>\n              </div>\n              {errors.percent && <ValidationError>{errors.percent}</ValidationError>}\n            </div>\n          )}\n        </div>\n        <div>\n          <div className=\"mt-4 flex items-center gap-2\">\n            <Toggle\n              id=\"applyToSpecificServices\"\n              disabled={!editingCode.editable}\n              checked={formData.applyToSpecificServices || false}\n              onChange={() => setFormData({ ...formData, applyToSpecificServices: !formData.applyToSpecificServices })}\n            />\n            <Label htmlFor=\"applyToSpecificServices\">Apply to specific services</Label>\n          </div>\n          {formData.applyToSpecificServices && (\n            <ServiceSelector\n              disabled={!editingCode.editable}\n              className=\"mt-4\"\n              services={services}\n              selectedServiceIds={formData.serviceIds}\n              onChange={(newIds) => setFormData({ ...formData, serviceIds: newIds })}\n            />\n          )}\n        </div>\n        {!editingCode.editable && (\n          <div className=\"mt-4 flex items-center gap-2\">\n            <InformationCircleIcon className=\"h-5 w-5 text-gray-dark\" />\n            <Typography variant=\"micro\" className=\"text-gray-dark\">\n              Coupons cannot be edited once they have been redeemed.\n            </Typography>\n          </div>\n        )}\n        <Divider className=\"my-4\" />\n        <div>\n          <div>\n            <div>\n              <CheckBox\n                label=\"Add expiration date\"\n                checked={formData.hasExpiration}\n                onChange={() =>\n                  setFormData({\n                    ...formData,\n                    hasExpiration: !formData.hasExpiration,\n                    expiresAt: formData.hasExpiration ? null : formData.expiresAt\n                  })\n                }\n              />\n            </div>\n            {formData.hasExpiration && (\n              <div className=\"mb-6 ml-8\">\n                <Label>Redeem by</Label>\n                <DatePicker\n                  selected={formData.expiresAt}\n                  onChange={(date) => setFormData({ ...formData, expiresAt: date })}\n                />\n              </div>\n            )}\n          </div>\n          <div>\n            <div>\n              <CheckBox\n                label=\"Add redemption limit\"\n                checked={formData.hasMaxRedemptions}\n                onChange={() =>\n                  setFormData({\n                    ...formData,\n                    hasMaxRedemptions: !formData.hasMaxRedemptions,\n                    maxRedemptions: formData.hasMaxRedemptions ? null : formData.maxRedemptions\n                  })\n                }\n              />\n            </div>\n            {formData.hasMaxRedemptions && (\n              <div className=\"ml-8\">\n                <InputWithLabel\n                  className=\"w-32\"\n                  label=\"Max redemptions\"\n                  type=\"number\"\n                  value={formData.maxRedemptions || \"\"}\n                  onChange={(e) => setFormData({ ...formData, maxRedemptions: e.target.value })}\n                />\n                <Typography variant=\"micro\">\n                  This limit applies across customers so it won&apos;t prevent a single customer from redeeming multiple\n                  times.\n                </Typography>\n              </div>\n            )}\n          </div>\n        </div>\n      </form>\n    </Flyout>\n  )\n}\n\nexport default DiscountCodeFlyout\n","import { PencilIcon, TrashIcon, DocumentDuplicateIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { IconButton } from \"../../components/shared/Buttons\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport DiscountCodeFlyout from \"./DiscountCodeFlyout\"\n\nconst DELETE_DISCOUNT_CODE = `\n  mutation DeleteDiscountCode($id: ID!) {\n    deleteDiscountCode(id: $id) {\n      result\n    }\n  }\n`\n\nexport const defaultDiscountCode = {\n  code: \"\",\n  kind: \"fixed\",\n  amountCents: null,\n  percent: null,\n  expiresAt: null,\n  maxRedemptions: null,\n  combinationLimit: 1,\n  hasExpiration: false,\n  hasMaxRedemptions: false,\n  applyToSpecificServices: false,\n  serviceIds: []\n}\n\nconst DiscountCodesTable = ({\n  discountCodes: discountCodesProp,\n  services,\n  editingCode,\n  setEditingCode,\n  discountCodesFlyoutVisible,\n  setDiscountCodesFlyoutVisible\n}) => {\n  const [discountCodes, setDiscountCodes] = useState(discountCodesProp)\n  const [, deleteDiscountCode] = useMutation(DELETE_DISCOUNT_CODE)\n\n  const { showToast } = useToast()\n\n  const handleDelete = async (code) => {\n    if (!window.confirm(\"Are you sure you want to delete this coupon?\")) return\n\n    const result = await deleteDiscountCode({ id: code.id })\n\n    if (result.data?.deleteDiscountCode?.result === \"success\") {\n      setDiscountCodes((codes) => codes.filter((c) => c.id !== code.id))\n      showToast({ content: \"Coupon deleted successfully\", type: \"success\" })\n    } else {\n      showToast({\n        content: result.error || \"Error deleting coupon\",\n        type: \"error\"\n      })\n    }\n  }\n\n  return (\n    <div className=\"p-4\">\n      <table className=\"w-full\">\n        <thead>\n          <tr className=\"border-b border-gray-light\">\n            <th className=\"px-6 py-4 text-left font-semibold\">Code</th>\n            <th className=\"px-6 py-4 text-left font-semibold\">Type</th>\n            <th className=\"px-6 py-4 text-left font-semibold\">Amount</th>\n            <th className=\"px-6 py-4 text-left font-semibold\">Expires</th>\n            <th className=\"px-6 py-4 text-left font-semibold\">Usage</th>\n            <th className=\"px-6 py-4 text-left font-semibold\">Actions</th>\n          </tr>\n        </thead>\n        <tbody>\n          {discountCodes.map((code) => (\n            <tr key={code.id} className=\"border-b border-gray-light transition-colors hover:bg-gray-ultralight\">\n              <td className=\"flex items-center gap-1 px-6 py-3\">\n                <span>{code.code}</span>\n                <IconButton\n                  Icon={DocumentDuplicateIcon}\n                  onClick={() => navigator.clipboard.writeText(code.code)}\n                  tooltip=\"Copy code\"\n                />\n              </td>\n              <td className=\"px-6 py-4\">{code.kind}</td>\n              <td className=\"px-6 py-4\">{code.amountCents ? `$${code.amountCents / 100}` : `${code.percent}%`}</td>\n              <td className=\"px-6 py-4\">\n                {code.expiresAt ? new Date(code.expiresAt).toLocaleDateString() : \"No expiration\"}\n              </td>\n              <td className=\"px-6 py-4\">\n                {code.redemptionCount} / {code.maxRedemptions || \"∞\"}\n              </td>\n              <td className=\"px-6 py-3\">\n                <div className=\"flex gap-2\">\n                  <IconButton\n                    Icon={PencilIcon}\n                    onClick={() => {\n                      setEditingCode(code)\n                      setDiscountCodesFlyoutVisible(true)\n                    }}\n                    tooltip=\"Edit\"\n                  />\n                  <IconButton\n                    Icon={TrashIcon}\n                    onClick={() => handleDelete(code)}\n                    className=\"text-red\"\n                    tooltip=\"Delete\"\n                  />\n                </div>\n              </td>\n            </tr>\n          ))}\n        </tbody>\n      </table>\n\n      {editingCode && (\n        <DiscountCodeFlyout\n          services={services}\n          setDiscountCodes={setDiscountCodes}\n          visible={discountCodesFlyoutVisible}\n          setVisible={setDiscountCodesFlyoutVisible}\n          editingCode={editingCode}\n          setEditingCode={setEditingCode}\n        />\n      )}\n    </div>\n  )\n}\n\nexport default DiscountCodesTable\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { QuestionMarkCircleIcon } from \"@heroicons/react/24/outline\"\nimport isEmpty from \"lodash/isEmpty\"\nimport uniqBy from \"lodash/uniqBy\"\nimport React, { useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\nimport { v4 as uuidv4 } from \"uuid\"\n\nimport { Button, CloseButton } from \"../../components/shared/Buttons\"\nimport { FilePicker } from \"../../components/shared/FileStackWidgets\"\nimport HealMeTooltip from \"../../components/shared/HealMeTooltip\"\nimport {\n  CheckBox,\n  InputWithLabel,\n  Label,\n  CurrencyInput,\n  BASE_INPUT_CLASSNAMES,\n  ToggleButtonGroup,\n  ValidationError\n} from \"../../components/shared/Inputs\"\nimport { Banner, Flyout } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport QuillEditor from \"../../components/shared/QuillEditor\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatAvailableTimes, stripHTMLTags } from \"../../utils/utils\"\n\nimport AvailableTimes from \"./AvailableTimes\"\n\nconst UPSERT_SERVICE_MUTATION = `\n  mutation UpsertService(\n    $id: ID,\n    $locationIds: [ID!],\n    $name: String!,\n    $description: String!,\n    $timeLength: Int,\n    $amountCents: Int!,\n    $variationOf: ID,\n    $variationsArray: [String!],\n    $availableTimes: String,\n    $availableTimesEnabled: Boolean,\n    $package: Boolean,\n    $numberOfSessions: Int,\n    $addOn: Boolean,\n    $allowedServiceIds: [ID!],\n    $public: Boolean,\n    $handle: String\n  ) {\n    upsertService(\n      id: $id,\n      locationIds: $locationIds,\n      name: $name,\n      description: $description,\n      timeLength: $timeLength,\n      amountCents: $amountCents,\n      variationOf: $variationOf,\n      variationsArray: $variationsArray,\n      availableTimes: $availableTimes,\n      availableTimesEnabled: $availableTimesEnabled\n      package: $package,\n      numberOfSessions: $numberOfSessions,\n      addOn: $addOn,\n      allowedServiceIds: $allowedServiceIds,\n      public: $public,\n      handle: $handle\n    ) {\n      result\n      service {\n        id\n        name\n        description\n        timeLength\n        amountCents\n        locationIds\n        availableTimes\n        availableTimesEnabled\n        package\n        numberOfSessions\n        addOn\n        allowedServiceIds\n        public\n        variations { id timeLength amountCents }\n        photoUrl\n      }\n      errors\n    }\n  }\n`\n\nconst REMOVE_SERVICE_MUTATION = `\n  mutation RemoveService($serviceId: ID!) {\n    removeService(serviceId: $serviceId) {\n      result\n      errors\n    }\n  }\n`\n\nconst UPDATE_SERVICE_PHOTO_MUTATION = `\n  mutation UpdateServicePhoto($handle: String!, $serviceId: ID!) {\n    updateServicePhoto(handle: $handle, serviceId: $serviceId) { result errors photoUrl }\n  }\n`\n\nconst REMOVE_SERVICE_PHOTO_MUTATION = `\n  mutation RemoveServicePhoto($serviceId: ID!) {\n    removeServicePhoto(serviceId: $serviceId) { result errors }\n  }\n`\n\nconst hasDuplicates = (array) => array.length !== new Set(array).size\n\nconst ServiceFlyout = ({\n  service,\n  setService,\n  services,\n  setServices,\n  allServices,\n  addOns,\n  setAddOns,\n  activeLocations,\n  visible,\n  closeFlyout,\n  defaultAvailableTimes,\n  setView,\n  showToggle\n}) => {\n  const { syncProfileStatus } = useProfileStatus()\n  const [{ fetching: upsertMutationFetching }, upsertService] = useMutation(UPSERT_SERVICE_MUTATION)\n  const [{ fetching: removeMutationFetching }, removeService] = useMutation(REMOVE_SERVICE_MUTATION)\n  const [{ fetching: photoMutationFetching }, updatePhoto] = useMutation(UPDATE_SERVICE_PHOTO_MUTATION)\n  const [{ fetching: removePhotoMutationFetching }, removePhoto] = useMutation(REMOVE_SERVICE_PHOTO_MUTATION)\n  const { showToast } = useToast()\n  const [validationErrors, setValidationErrors] = useState({})\n\n  const fetching = upsertMutationFetching || removeMutationFetching\n  const editingExistingService = !!service.id\n  const lastActiveService = services.length <= 1 && !service.addOn\n  const title = editingExistingService\n    ? service.addOn\n      ? \"Edit add-on\"\n      : service.package\n      ? \"Edit package\"\n      : \"Edit service\"\n    : service.addOn\n    ? \"Create add-on\"\n    : service.package\n    ? \"Create package\"\n    : \"Create service\"\n  const deleteModalId = \"delete-service-modal\"\n  const allVariations = [\n    { id: service.id, amountCents: service.amountCents, timeLength: service.timeLength },\n    ...service.variations\n  ]\n  const hasMultipleLocationsInSameCity =\n    activeLocations && uniqBy(activeLocations, (location) => location.name).length < activeLocations.length\n\n  const updateServices = (newService) => {\n    const newServices = newService.addOn ? [...addOns] : [...services]\n    const index = newServices.findIndex((s) => s.id === newService.id)\n    if (index !== -1) {\n      newServices[index] = newService\n    } else {\n      newServices.push(newService)\n    }\n\n    if (newService.addOn) {\n      setAddOns(newServices)\n      setView(\"Add-ons\")\n    } else {\n      setServices(newServices)\n      setView(\"Services & Packages\")\n    }\n  }\n\n  const onSave = () => {\n    const errors = {}\n\n    if (service.name.length < 2) {\n      errors.name = \"Name is required\"\n    }\n    if (stripHTMLTags(service.description).length < 2) {\n      errors.description = \"Description is required\"\n    }\n    if (service.timeLength < 1 && !service.addOn) {\n      errors.timeLength = \"Session duration is required\"\n    }\n    if (service.amountCents < 1 && service.package) {\n      errors.amountCents = \"Packages must have a price\"\n    }\n    if (service.numberOfSessions < 1 && service.package) {\n      errors.numberOfSessions = \"Packages must have a number of sessions\"\n    }\n    if (\n      hasDuplicates(allVariations.map((v) => v.amountCents)) ||\n      hasDuplicates(allVariations.map((v) => v.timeLength))\n    ) {\n      errors.variations = \"Variations must be unique\"\n    }\n\n    if (Object.keys(errors).length > 0) {\n      setValidationErrors(errors)\n      return\n    } else {\n      setValidationErrors({})\n    }\n\n    upsertService({\n      ...service,\n      availableTimes: JSON.stringify(service.availableTimes),\n      variationsArray: service.variations.map((v) => JSON.stringify(v))\n    }).then((result) => {\n      if (result?.data?.upsertService?.result === \"success\") {\n        const newService = result.data.upsertService.service\n        newService.variations = newService.variations.filter((v) => v.id !== newService.id) // variations returns the parent service as well\n        newService.id = Number(newService.id)\n        newService.locationIds = newService.locationIds.map((id) => Number(id))\n        newService.allowedServiceIds = newService.allowedServiceIds.map((id) => Number(id))\n        newService.availableTimes = formatAvailableTimes(newService.availableTimes)\n        newService.smallWebpUrl = newService.photoUrl\n        updateServices(newService)\n        closeFlyout()\n        syncProfileStatus()\n        showToast(`Your ${service.package ? \"package\" : \"service\"} '${service.name}' was saved successfully`)\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        let errorMessage = \"There was an error saving your service\"\n        if (result.data?.upsertService?.errors) errorMessage += `: ${result.data.upsertService.errors}`\n        showToast({ type: \"error\", content: errorMessage })\n      }\n      setValidationErrors({})\n    })\n  }\n\n  const onDelete = () => {\n    removeService({ serviceId: service.id }).then((result) => {\n      if (result?.data?.removeService?.result === \"success\") {\n        if (service.addOn) {\n          setAddOns(addOns.filter((s) => s.id !== service.id))\n        } else {\n          setServices(services.filter((s) => s.id !== service.id))\n        }\n        closeFlyout()\n        setValidationErrors({})\n        NiceModal.remove(deleteModalId)\n        syncProfileStatus()\n        showToast(\"Service has been deleted\")\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        let errorMessage = \"There was an error deleting your service\"\n        if (result.data?.removeService?.errors) errorMessage += `: ${result.data.removeService.errors}`\n        showToast({ type: \"error\", content: errorMessage })\n      }\n    })\n  }\n\n  const onUploadDone = (res) => {\n    if (service.id) {\n      updatePhoto({\n        handle: res.filesUploaded[0].handle,\n        serviceId: service.id\n      }).then((result) => {\n        if (result?.data?.updateServicePhoto?.result === \"success\") {\n          const newService = { ...service, smallWebpUrl: result.data.updateServicePhoto.photoUrl }\n          setService(newService)\n          updateServices(newService)\n          showToast(\"Your photo has been saved.\")\n        } else {\n          console.error(result) // eslint-disable-line no-console\n          let errorMessage = \"There was an error saving your service photo. Please try again later or contact support.\"\n          if (result.data?.updateServicePhoto?.errors) errorMessage += ` ${result.data.updateServicePhoto.errors}`\n          showToast({\n            type: \"error\",\n            content: errorMessage\n          })\n        }\n      })\n    } else {\n      setService({ ...service, handle: res.filesUploaded[0].handle, smallWebpUrl: res.filesUploaded[0].url })\n    }\n  }\n\n  const onPhotoDelete = () => {\n    removePhoto({ serviceId: service.id }).then((result) => {\n      if (result?.data?.removeServicePhoto?.result === \"success\") {\n        const newService = { ...service, smallWebpUrl: null }\n        setService(newService)\n        updateServices(newService)\n        showToast(\"Your photo has been removed.\")\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        let errorMessage = \"There was an error removing your service photo. Please try again later or contact support.\"\n        if (result.data?.removeServicePhoto?.errors) errorMessage += ` ${result.data.removeServicePhoto.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n\n  return (\n    <Flyout\n      visible={visible}\n      closeFlyout={() => {\n        closeFlyout()\n        setValidationErrors({})\n      }}\n      header={title}\n      footer={\n        <div className={`flex w-full items-center ${editingExistingService ? \"justify-between\" : \"justify-end\"}`}>\n          {editingExistingService && (\n            <Button\n              type=\"destructive\"\n              onClick={() => NiceModal.show(deleteModalId)}\n              disabled={fetching || lastActiveService}>\n              Delete\n            </Button>\n          )}\n          <div className=\"flex gap-4\">\n            <Button\n              type=\"tertiary\"\n              onClick={() => {\n                closeFlyout()\n                setValidationErrors({})\n              }}\n              disabled={fetching}>\n              Cancel\n            </Button>\n            <Button type=\"primary\" onClick={onSave} disabled={fetching}>\n              Save\n            </Button>\n          </div>\n        </div>\n      }>\n      <div\n        className={`flex flex-col gap-6 overflow-y-scroll pl-1 ${\n          service.state === \"disabled\" ? \"pointer-events-none opacity-25\" : \"\"\n        }`}>\n        {showToggle && !editingExistingService && (\n          <ToggleButtonGroup\n            value={service.package ? \"package\" : service.addOn ? \"add-on\" : \"service\"}\n            onChange={(value) => {\n              setService({\n                ...service,\n                ...{\n                  package: value === \"package\",\n                  addOn: value === \"add-on\",\n                  variations: value === \"package\" ? [] : service.variations,\n                  numberOfSessions: value === \"package\" ? service?.numberOfSessions || 5 : null\n                }\n              })\n            }}\n            options={[\n              { label: \"Service\", value: \"service\" },\n              { label: \"Package\", value: \"package\" },\n              { label: \"Add-on\", value: \"add-on\" }\n            ]}\n          />\n        )}\n        <div>\n          <div className=\"flex justify-between\">\n            <Label htmlFor=\"photo\">Photo</Label>\n            {!service.smallWebpUrl && <div className=\"text-sm text-gray-dark\">Optional</div>}\n          </div>\n          {photoMutationFetching || removePhotoMutationFetching ? (\n            <LoadingSpinner className=\"py-0\" />\n          ) : service.smallWebpUrl ? (\n            <div className=\"flex items-center gap-4\">\n              <img src={service.smallWebpUrl} alt=\"Service photo\" className=\"h-16 w-16 rounded-lg\" />\n              <div>\n                <FilePicker\n                  as=\"button\"\n                  className=\"font-bold text-teal\"\n                  onUploadDone={onUploadDone}\n                  disabled={photoMutationFetching}>\n                  Edit photo\n                </FilePicker>\n              </div>\n              <button className=\"font-bold text-red\" onClick={onPhotoDelete}>\n                Remove\n              </button>\n            </div>\n          ) : (\n            <FilePicker\n              as=\"button\"\n              onUploadDone={onUploadDone}\n              disabled={photoMutationFetching}\n              className={twMerge(BASE_INPUT_CLASSNAMES, \"text-teal\")}>\n              + Upload photo\n            </FilePicker>\n          )}\n        </div>\n        <InputWithLabel\n          label=\"Name\"\n          value={service.name}\n          onChange={(e) => setService({ ...service, name: e.target.value })}\n          validationError={validationErrors.name}\n        />\n        <div>\n          <Label htmlFor=\"description-input\">Description</Label>\n          <QuillEditor\n            id=\"description-input\"\n            value={service.description}\n            onChange={(content) => setService((prevService) => ({ ...prevService, description: content }))}\n            validationError={validationErrors.description}\n          />\n        </div>\n        {!service.addOn && (\n          <>\n            <div className=\"flex w-full gap-4\">\n              <div className=\"flex-1\">\n                <Label htmlFor=\"price-input\">Price</Label>\n                <CurrencyInput\n                  id=\"price-input\"\n                  value={service.amountCents}\n                  onChange={(amountCents) => setService({ ...service, amountCents })}\n                  validationError={validationErrors.amountCents}\n                />\n              </div>\n              <InputWithLabel\n                className=\"flex-1\"\n                type=\"number\"\n                label=\"Session duration\"\n                placeholder=\"__ minutes\"\n                value={service.timeLength || \"\"}\n                onChange={(e) => setService({ ...service, timeLength: Number(e.target.value) })}\n                validationError={validationErrors.timeLength}\n              />\n              {service.variations.length > 0 && <CloseButton className=\"invisible flex-none\" />}\n            </div>\n            {service.variations.map((variation) => {\n              const otherVariations = allVariations.filter((v) => v.id !== variation.id)\n              const priceExists = otherVariations.map((v) => v.amountCents).includes(variation.amountCents)\n              const durationExists = otherVariations.map((v) => v.timeLength).includes(variation.timeLength)\n\n              return (\n                <div key={variation.id} className=\"flex w-full gap-4\" data-test-id=\"adding-variation\">\n                  <div className=\"flex-1\">\n                    <Label htmlFor={`price-input-${variation.id}`}>Price</Label>\n                    <CurrencyInput\n                      validationError={priceExists ? \"Must be different from other prices\" : null}\n                      id={`price-input-${variation.id}`}\n                      value={variation.amountCents}\n                      onChange={(amountCents) => {\n                        const newVariations = [...service.variations]\n                        const newVariation = { ...variation, amountCents }\n                        const index = newVariations.findIndex((v) => v.id === newVariation.id)\n                        if (index !== -1) {\n                          newVariations[index] = newVariation\n                        } else {\n                          newVariations.push(newVariation)\n                        }\n                        setService({ ...service, variations: newVariations })\n                        setValidationErrors((prevErrors) => ({\n                          ...prevErrors,\n                          variations: null\n                        }))\n                      }}\n                    />\n                  </div>\n                  <InputWithLabel\n                    className=\"flex-1\"\n                    label=\"Session duration\"\n                    type=\"number\"\n                    placeholder=\"__ minutes\"\n                    value={variation.timeLength || \"\"}\n                    validationError={durationExists ? \"Must be different from other durations\" : null}\n                    onChange={(e) => {\n                      const newVariations = [...service.variations]\n                      const newVariation = { ...variation, timeLength: Number(e.target.value) }\n                      const index = newVariations.findIndex((v) => v.id === newVariation.id)\n                      if (index !== -1) {\n                        newVariations[index] = newVariation\n                      } else {\n                        newVariations.push(newVariation)\n                      }\n                      setService({ ...service, variations: newVariations })\n                      setValidationErrors((prevErrors) => ({\n                        ...prevErrors,\n                        variations: null\n                      }))\n                    }}\n                  />\n                  <CloseButton\n                    className=\"mt-[26px] flex-none\"\n                    onClick={() => {\n                      const newVariations = service.variations.filter((v) => v.id !== variation.id)\n                      setService({ ...service, variations: newVariations })\n                    }}\n                  />\n                </div>\n              )\n            })}\n            {validationErrors.variations && <ValidationError>{validationErrors.variations}</ValidationError>}\n            {service.package ? (\n              <InputWithLabel\n                label=\"Number of sessions\"\n                type=\"number\"\n                value={service.numberOfSessions}\n                className=\"w-1/2\"\n                onChange={(e) => setService({ ...service, numberOfSessions: Number(e.target.value) })}\n                validationError={validationErrors.numberOfSessions}\n              />\n            ) : (\n              <Button\n                type=\"secondary\"\n                size=\"large\"\n                disabled={\n                  service.variations.filter(\n                    (variation) =>\n                      typeof variation.id === \"string\" &&\n                      (variation.amountCents === null || variation.timeLength === null)\n                  ).length > 0\n                }\n                onClick={() => {\n                  setService({\n                    ...service,\n                    variations: [...service.variations, { id: uuidv4(), amountCents: null, timeLength: null }]\n                  })\n                }}>\n                Add another price and duration\n              </Button>\n            )}\n            <div className=\"flex flex-col\">\n              <CheckBox\n                label=\"List this service publicly on my website\"\n                checked={service.public}\n                onChange={() => setService({ ...service, public: !service.public })}\n              />\n            </div>\n            <div className=\"flex flex-col\">\n              <Label>Locations where this is offered</Label>\n              {activeLocations.map((location) => {\n                var label =\n                  hasMultipleLocationsInSameCity && location.kind === \"office\" ? location.address : location.name\n\n                if (!label) {\n                  label = location.name\n                }\n                return (\n                  <CheckBox\n                    key={location.id}\n                    label={label}\n                    checked={service.locationIds.includes(location.id)}\n                    onChange={() =>\n                      service.locationIds.includes(location.id)\n                        ? setService({\n                            ...service,\n                            locationIds: service.locationIds.filter((id) => id !== location.id)\n                          })\n                        : setService({ ...service, locationIds: [...service.locationIds, location.id] })\n                    }\n                  />\n                )\n              })}\n            </div>\n            <div className=\"flex flex-col\">\n              <Label>Availability</Label>\n              <div className=\"flex gap-1\">\n                <CheckBox\n                  label=\"I only offer this on certain days/times\"\n                  checked={service.availableTimesEnabled}\n                  onChange={() =>\n                    setService((service) => ({\n                      ...service,\n                      availableTimesEnabled: !service.availableTimesEnabled,\n                      availableTimes: isEmpty(service.availableTimes) ? defaultAvailableTimes : service.availableTimes\n                    }))\n                  }\n                />\n                <QuestionMarkCircleIcon\n                  className=\"h-6 w-6 text-gray-dark\"\n                  data-tooltip-id=\"custom-availability-tooltip\"\n                />\n                <HealMeTooltip\n                  id=\"custom-availability-tooltip\"\n                  place=\"bottom\"\n                  content=\"Service availability is based on the location(s) you offer a service from, but you can customize this for each service.\"\n                />\n              </div>\n              {service.availableTimesEnabled && (\n                <div className=\"mt-4\">\n                  <AvailableTimes availableTimes={service.availableTimes} updateState={setService} />\n                </div>\n              )}\n            </div>\n          </>\n        )}\n        {service.addOn && (\n          <>\n            <div className=\"flex flex-col\">\n              <CheckBox\n                label=\"List this add-on publicly on my website\"\n                checked={service.public}\n                onChange={() => setService({ ...service, public: !service.public })}\n              />\n            </div>\n            <div className=\"flex-1\">\n              <Label htmlFor=\"price-input\">Price</Label>\n              <CurrencyInput\n                id=\"price-input\"\n                value={service.amountCents}\n                onChange={(amountCents) => setService({ ...service, amountCents })}\n              />\n            </div>\n            <div className=\"flex flex-col\">\n              <Label>Services this add-on applies to</Label>\n              {allServices\n                .filter((s) => !s.addOn && !s.package)\n                .map((s) => (\n                  <CheckBox\n                    key={s.id}\n                    label={s.name}\n                    checked={service.allowedServiceIds.includes(s.id)}\n                    onChange={() =>\n                      service.allowedServiceIds.includes(s.id)\n                        ? setService({\n                            ...service,\n                            allowedServiceIds: service.allowedServiceIds.filter((id) => id !== s.id)\n                          })\n                        : setService({\n                            ...service,\n                            allowedServiceIds: [...service.allowedServiceIds, s.id]\n                          })\n                    }\n                  />\n                ))}\n            </div>\n          </>\n        )}\n      </div>\n      {editingExistingService && lastActiveService && (\n        <Banner type=\"warning\">\n          <b>Note:</b> This service can&apos;t be deleted since it is the only service you have.\n        </Banner>\n      )}\n      <NewModal\n        id={deleteModalId}\n        header=\"Delete service now\"\n        showFooter={true}\n        onSave={onDelete}\n        cancelButtonCopy=\"No, don't delete\"\n        actionButtonType=\"destructive\"\n        actionButtonCopy=\"Yes, delete\">\n        <p>\n          This will remove the service <b>{service.name}</b> from your profile.\n        </p>\n      </NewModal>\n    </Flyout>\n  )\n}\n\nexport default ServiceFlyout\n","import { ArrowTopRightOnSquareIcon } from \"@heroicons/react/20/solid\"\nimport React from \"react\"\n\nimport Badge from \"../../components/shared/Badge\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Box } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport { formatPrice } from \"../../utils/utils\"\nimport DisplayAvailableTimes from \"../ProfileEdit/DisplayAvailableTimes\"\n\nconst ServiceCard = ({ service, onClick, servicesPagesEnabled }) => {\n  const amount = service.amountCents === 0 ? \"$0\" : formatPrice(service.amountCents)\n\n  const { practice } = usePractice()\n\n  const serviceUrl = `${practice.url}/services/${service.id}`\n\n  return (\n    <Box key={service.id} className=\"w-full\">\n      {service.package && (\n        <Badge type=\"info\" className=\"mb-2 inline-block\">\n          Package\n        </Badge>\n      )}\n      <div className=\"flex items-center justify-between\">\n        <div className=\"flex items-center gap-2\">\n          <Typography variant=\"title\">{service.name}</Typography>\n          {servicesPagesEnabled && !service.addOn && (\n            <a href={serviceUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-gray-dark\">\n              <ArrowTopRightOnSquareIcon className=\"h-5 w-5\" />\n            </a>\n          )}\n        </div>\n        <Button type=\"link\" onClick={onClick}>\n          Edit\n        </Button>\n      </div>\n      <Typography variant=\"smSubtitle\">\n        {service.addOn ? amount : `${service.timeLength} min • ${amount}`}\n        {service.package && ` (${service.numberOfSessions} sessions)`}\n      </Typography>\n      <div className=\"mt-4 flex justify-between gap-4\">\n        <div\n          className=\"wysiwyg-content text-sm\"\n          dangerouslySetInnerHTML={{\n            __html: service.description.substring(0, 190) + (service.description.length > 190 ? \"...\" : \"\")\n          }}\n        />\n        {service.smallWebpUrl && (\n          <img src={service.smallWebpUrl} alt={service.name} className=\"h-16 w-16 flex-none rounded-lg\" />\n        )}\n      </div>\n      {service.availableTimesEnabled && (\n        <DisplayAvailableTimes\n          locationOrService={service}\n          className=\"-m-8 mt-8 box-content rounded-b-xl bg-gray-ultralight p-8 text-sm\"\n        />\n      )}\n    </Box>\n  )\n}\n\nexport default ServiceCard\n","import { EllipsisVerticalIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState, useEffect } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport DropdownButton from \"../../components/shared/DropdownButton\"\nimport HealMeTooltip from \"../../components/shared/HealMeTooltip\"\nimport { Box, Divider, ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport { TabNavLink, UnderlinedLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport BookableEventTypeFlyout from \"../BookableEventTypes/BookableEventTypeFlyout\"\nimport { useBookableEventTypes } from \"../BookableEventTypes/BookableEventTypesContext\"\nimport { BookableEventTypesProvider } from \"../BookableEventTypes/BookableEventTypesContext\"\nimport BookableEventTypesTable from \"../BookableEventTypes/BookableEventTypesTable\"\nimport DiscountCodesTable from \"../DiscountCodes/DiscountCodesTable\"\nimport ProfileEditProvider from \"../ProfileEdit/ProfileEditProvider\"\nimport ServiceFlyout from \"../ProfileEdit/ServiceFlyout\"\n\nimport ServiceCard from \"./ServiceCard\"\n\nconst REORDER_SERVICES_MUTATION = `\n  mutation ReorderServices($servicesArray: [String!]!) {\n    reorderServices(servicesArray: $servicesArray) {\n      result\n      errors\n    }\n  }\n`\n\nconst maxNumberOfServices = 25\n\n// Map tab names to URL hash fragments\nconst tabToHashMap = {\n  \"Services & Packages\": \"\",\n  \"Add-ons\": \"addons\",\n  Coupons: \"coupons\",\n  \"Event Types\": \"events\"\n}\n\n// Map URL hash fragments to tab names\nconst hashToTabMap = {\n  \"\": \"Services & Packages\",\n  addons: \"Add-ons\",\n  coupons: \"Coupons\",\n  events: \"Event Types\"\n}\n\nconst Services = ({\n  services: servicesProp,\n  discountCodes,\n  activeLocations,\n  defaultAvailableTimes,\n  discountCodesEnabled,\n  servicesPagesEnabled,\n  eventsEnabled\n}) => {\n  const newServiceDefaults = {\n    locationIds: [],\n    amountCents: 0,\n    variations: [],\n    name: \"\",\n    description: \"\",\n    public: true\n  }\n  const newPackageDefaults = { ...newServiceDefaults, package: true, numberOfSessions: 5 }\n  const newAddOnDefaults = { ...newServiceDefaults, addOn: true, allowedServiceIds: [] }\n  const navItems =\n    discountCodesEnabled && eventsEnabled\n      ? [\"Services & Packages\", \"Add-ons\", \"Coupons\", \"Event Types\"]\n      : discountCodesEnabled\n      ? [\"Services & Packages\", \"Add-ons\", \"Coupons\"]\n      : [\"Services & Packages\", \"Add-ons\"]\n\n  const [services, setServices] = useState(servicesProp.filter((s) => !s.addOn))\n  const [addOns, setAddOns] = useState(servicesProp.filter((s) => s.addOn))\n  const [service, setService] = useState(newServiceDefaults)\n  const [flyoutVisible, setFlyoutVisible] = useState(false)\n  const [view, setView] = useState(navItems[0])\n  const [showToggleInFlyout, setShowToggleInFlyout] = useState(false)\n  const [discountCodesFlyoutVisible, setDiscountCodesFlyoutVisible] = useState(false)\n  const [editingDiscountCode, setEditingDiscountCode] = useState({})\n\n  const { showToast } = useToast()\n  const isMobile = window.innerWidth < 768\n\n  const [, reorderServices] = useMutation(REORDER_SERVICES_MUTATION)\n\n  const { setShowFlyout: setEventTypeFlyoutVisible } = useBookableEventTypes()\n\n  // Function to update view and URL hash\n  const updateView = (newView) => {\n    setView(newView)\n    const hash = tabToHashMap[newView]\n    window.location.hash = hash\n  }\n\n  // Initialize view based on URL hash on component mount\n  useEffect(() => {\n    const handleHashChange = () => {\n      const hash = window.location.hash.replace(\"#\", \"\")\n      const tabName = hashToTabMap[hash]\n\n      // Only update if the tab exists in our navItems\n      if (tabName && navItems.includes(tabName)) {\n        setView(tabName)\n      }\n    }\n\n    // Set initial view based on hash\n    handleHashChange()\n  }, [navItems])\n\n  const addNewService = () => {\n    setFlyoutVisible(true)\n    setService(newServiceDefaults)\n    updateView(\"Services & Packages\")\n  }\n\n  const addNewPackage = () => {\n    setFlyoutVisible(true)\n    setService(newPackageDefaults)\n    updateView(\"Services & Packages\")\n  }\n\n  const addNewAddOn = () => {\n    setFlyoutVisible(true)\n    setService(newAddOnDefaults)\n    updateView(\"Add-ons\")\n  }\n\n  const editService = (service) => {\n    setService(service)\n    setFlyoutVisible(true)\n    if (service.addOn) {\n      updateView(\"Add-ons\")\n    } else {\n      updateView(\"Services & Packages\")\n    }\n  }\n\n  const addNewDiscountCode = () => {\n    setEditingDiscountCode({ editable: true })\n    setDiscountCodesFlyoutVisible(true)\n    updateView(\"Coupons\")\n  }\n\n  const addNewEventType = () => {\n    setEventTypeFlyoutVisible(true)\n    updateView(\"Event Types\")\n  }\n\n  const unsortableServices =\n    view === \"Services & Packages\" ? services.filter((service) => service.amountCents === 0) : addOns\n  const sortableServices = view === \"Services & Packages\" ? services.filter((service) => service.amountCents > 0) : []\n\n  const dropDownItems = [\n    { label: \"Service\", onClick: addNewService },\n    { label: \"Package\", onClick: addNewPackage },\n    { label: \"Add-on\", onClick: addNewAddOn }\n  ]\n\n  if (eventsEnabled) {\n    dropDownItems.push({ label: \"Event Type\", onClick: addNewEventType })\n  }\n\n  if (discountCodesEnabled) {\n    dropDownItems.push({ label: \"Coupon\", onClick: addNewDiscountCode })\n  }\n\n  return (\n    <>\n      <div className=\"w-full\">\n        <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n          <div className=\"flex flex-col\">\n            <Typography variant=\"h3\" as=\"h1\">\n              My Services\n            </Typography>\n            <Typography variant=\"subtitle\">Add or edit your services.</Typography>\n          </div>\n        </div>\n\n        {activeLocations.length === 0 ? (\n          <ProfilePageEmptyStateBox title=\"Services\">\n            You need to <UnderlinedLink href=\"/portal/profile/locations\">add a location</UnderlinedLink> first in order\n            to add services.\n          </ProfilePageEmptyStateBox>\n        ) : services.length === 0 ? (\n          <ProfilePageEmptyStateBox\n            title=\"Services\"\n            onButtonClick={() => {\n              setShowToggleInFlyout(true)\n              addNewService()\n            }}>\n            Add a free service and any paid services you offer.\n          </ProfilePageEmptyStateBox>\n        ) : (\n          <Box data-test-id=\"services\">\n            <div className=\"flex items-center justify-between\">\n              <div className=\"mt-4 flex gap-8 border-b border-gray-light sm:mb-4\">\n                {navItems.map((item) => (\n                  <TabNavLink key={item} active={view === item} onClick={() => updateView(item)}>\n                    {item}\n                  </TabNavLink>\n                ))}\n              </div>\n              <div className=\"flex flex-row sm:hidden\" data-tooltip-id=\"disabled-tooltip\">\n                <DropdownButton label=\"Add new\" items={dropDownItems} />\n              </div>\n              {services.length >= maxNumberOfServices && (\n                <HealMeTooltip\n                  id=\"disabled-tooltip\"\n                  place=\"bottom\"\n                  content={`Note: You can add a maximum of ${maxNumberOfServices} services.`}\n                />\n              )}\n            </div>\n            {services.length < maxNumberOfServices && (\n              <Button floatingInMobile={true} onClick={addNewService} className=\"hidden sm:block\">\n                Add new\n              </Button>\n            )}\n            {view === \"Coupons\" && (\n              <DiscountCodesTable\n                discountCodes={discountCodes}\n                services={servicesProp}\n                editingCode={editingDiscountCode}\n                setEditingCode={setEditingDiscountCode}\n                discountCodesFlyoutVisible={discountCodesFlyoutVisible}\n                setDiscountCodesFlyoutVisible={setDiscountCodesFlyoutVisible}\n              />\n            )}\n            {view === \"Event Types\" && <BookableEventTypesTable />}\n            {view !== \"Coupons\" && view !== \"Event Types\" && (\n              <div className=\"mt-6 flex max-w-[600px] flex-col gap-4 sm:mt-0\">\n                {view === \"Add-ons\" && addOns.length === 0 && (\n                  <ProfilePageEmptyStateBox onButtonClick={addNewAddOn}>\n                    You don&apos;t have any add-ons yet.\n                  </ProfilePageEmptyStateBox>\n                )}\n                {unsortableServices.map((service) => (\n                  <ServiceCard\n                    key={service.id}\n                    service={service}\n                    onClick={() => editService(service)}\n                    servicesPagesEnabled={servicesPagesEnabled}\n                  />\n                ))}\n                {sortableServices.length > 0 && (\n                  <>\n                    {unsortableServices.length > 0 ? <Divider className=\"sm:my-4\" /> : null}\n                    {isMobile ? (\n                      <>\n                        {sortableServices.map((service) => (\n                          <div key={service.id} className=\"flex items-center\">\n                            <ServiceCard\n                              service={service}\n                              onClick={() => editService(service)}\n                              servicesPagesEnabled={servicesPagesEnabled}\n                            />\n                          </div>\n                        ))}\n                      </>\n                    ) : (\n                      <ReactSortable\n                        className=\"flex flex-col gap-4\"\n                        list={sortableServices}\n                        setList={(newPositions) => {\n                          const newServices = unsortableServices.concat(newPositions)\n                          if (JSON.stringify(newServices) !== JSON.stringify(services)) {\n                            const servicesArray = newServices.map((service, i) =>\n                              JSON.stringify({ id: service.id, position: i + 1 })\n                            )\n                            reorderServices({ servicesArray }).then((result) => {\n                              if (result?.data?.reorderServices?.result !== \"success\") {\n                                console.error(result) // eslint-disable-line no-console\n                                showToast({\n                                  type: \"error\",\n                                  content:\n                                    \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n                                })\n                              }\n                            })\n                            setServices(newServices)\n                          }\n                        }}>\n                        {sortableServices.map((service) => (\n                          <div key={service.id} className=\"flex cursor-grab items-center\">\n                            <EllipsisVerticalIcon className=\"mr-4 h-6 w-6 text-gray-dark\" />\n                            <ServiceCard\n                              service={service}\n                              onClick={() => editService(service)}\n                              servicesPagesEnabled={servicesPagesEnabled}\n                            />\n                          </div>\n                        ))}\n                      </ReactSortable>\n                    )}\n                  </>\n                )}\n              </div>\n            )}\n          </Box>\n        )}\n      </div>\n\n      <ServiceFlyout\n        visible={flyoutVisible}\n        closeFlyout={() => setFlyoutVisible(false)}\n        service={service}\n        setService={setService}\n        services={services}\n        allServices={services}\n        setServices={setServices}\n        addOns={addOns}\n        setAddOns={setAddOns}\n        activeLocations={activeLocations}\n        defaultAvailableTimes={defaultAvailableTimes}\n        setView={updateView}\n        showToggle={showToggleInFlyout}\n      />\n\n      <BookableEventTypeFlyout />\n    </>\n  )\n}\n\nexport default function PortalServicesPage({ profileStatusData, ...props }) {\n  return (\n    <PracticeProvider>\n      <ProfileEditProvider profileStatusData={profileStatusData}>\n        <BookableEventTypesProvider bookableEventTypes={props.bookableEventTypes}>\n          <Services {...props} />\n        </BookableEventTypesProvider>\n      </ProfileEditProvider>\n    </PracticeProvider>\n  )\n}\n","import React from \"react\"\n\nimport { ToastProvider } from \"../../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../../providers/GraphQLProvider\"\n\nconst ProfileEditProvider = ({ children }) => (\n  <ToastProvider>\n    <GraphQLProvider>{children}</GraphQLProvider>\n  </ToastProvider>\n)\n\nexport default ProfileEditProvider\n","import React from \"react\"\n\nimport Breadcrumbs from \"../../../components/shared/Breadcrumbs\"\nimport { TabNavLink } from \"../../../components/shared/Links\"\nimport ListBox from \"../../../components/shared/ListBox\"\nimport Typography from \"../../../components/shared/Typography\"\n\nconst NAV_ITEMS = [\n  { title: \"Reminders\", path: \"/portal/settings/communication\" },\n  { title: \"Custom content\", path: \"/portal/settings/communication/templates\" }\n]\n\nconst SELECT_ITEMS = NAV_ITEMS.map((item) => ({ value: item.path, label: `${item.title}` }))\n\nconst ProCommunicationSettingsView = ({ path, children }) => (\n  <div>\n    <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Communications\" />\n    <Typography variant=\"h3\" as=\"h1\">\n      Communications\n    </Typography>\n    <Typography variant=\"subtitle\" className=\"sm:hidden\">\n      Manage the timing, type, and content of your client reminders\n    </Typography>\n    <div className=\"mt-4 flex gap-8 border-b border-gray-light sm:hidden\">\n      {NAV_ITEMS.map((item) => (\n        <TabNavLink key={item.title} href={item.path} active={path === item.path}>\n          {item.title}\n        </TabNavLink>\n      ))}\n    </div>\n    <div className=\"mt-2 hidden sm:block\">\n      <ListBox\n        value={SELECT_ITEMS.find((item) => item.value === path)}\n        onChange={(item) => {\n          if (typeof window !== \"undefined\") window.location = item.value\n        }}\n        options={SELECT_ITEMS}\n        buttonHint=\"(tap to navigate)\"\n      />\n    </div>\n    <div className=\"mt-4 flex gap-4 pt-4 sm:mt-2\">{children}</div>\n  </div>\n)\n\nexport default ProCommunicationSettingsView\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { Select, CheckBox } from \"../../../components/shared/Inputs\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { commIntervals } from \"../../../utils/utils\"\n\nimport ProCommunicationSettingsProvider from \"./ProCommunicationSettingsProvider\"\nimport ProCommunicationSettingsView from \"./ProCommunicationSettingsView\"\n\nconst UPDATE_COMMUNICATION_SETTINGS = `\n  mutation UpdateCommunicationSettings(\n    $appointmentReminderEmailEnabled: Boolean,\n    $appointmentReminderTextEnabled: Boolean,\n    $appointmentEmailReminderMinutes: Int,\n    $appointmentTextReminderMinutes: Int,\n    $paymentPastDueEmailEnabled: Boolean,\n    $paymentPastDueTextEnabled: Boolean,\n    $paymentPastDueEmailMinutes: Int,\n    $paymentPastDueTextMinutes: Int,\n  ) {\n    updateCommunicationSettings(\n      appointmentReminderEmailEnabled: $appointmentReminderEmailEnabled,\n      appointmentReminderTextEnabled: $appointmentReminderTextEnabled,\n      appointmentEmailReminderMinutes: $appointmentEmailReminderMinutes,\n      appointmentTextReminderMinutes: $appointmentTextReminderMinutes,\n      paymentPastDueEmailEnabled: $paymentPastDueEmailEnabled,\n      paymentPastDueTextEnabled: $paymentPastDueTextEnabled,\n      paymentPastDueEmailMinutes: $paymentPastDueEmailMinutes,\n      paymentPastDueTextMinutes: $paymentPastDueTextMinutes,\n    ) {\n      result\n      error\n    }\n  }\n`\n\nconst CommunicationSettings = ({ communicationSettings, path }) => {\n  const [, updateCommunicationSettings] = useMutation(UPDATE_COMMUNICATION_SETTINGS)\n\n  const [settings, setSettings] = useState(communicationSettings)\n  const [originalSettings, setOriginalSettings] = useState(communicationSettings)\n  const { showToast } = useToast()\n\n  const handleUpdate = (key) => (newValue) => {\n    let update = newValue\n    if (newValue.value) {\n      update = newValue.value\n    }\n    setSettings((prevSettings) => ({ ...prevSettings, [key]: update }))\n  }\n\n  const handleSave = () => {\n    updateCommunicationSettings(settings)\n      .then((result) => {\n        if (result.data?.updateCommunicationSettings?.result) {\n          showToast({ content: \"Settings updated successfully.\", timeout: 3000 })\n          setOriginalSettings(settings)\n        } else {\n          const error =\n            result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n            result.data?.updateCommunicationSettings?.error ||\n            \"Please try again later.\"\n\n          showToast({ type: \"error\", content: error })\n        }\n      })\n      .catch((error) => {\n        showToast({ type: \"error\", content: error.message })\n      })\n  }\n\n  if (Object.keys(settings).length === 0) {\n    return null\n  }\n\n  const settingsChanged = JSON.stringify(settings) !== JSON.stringify(originalSettings)\n\n  return (\n    <ProCommunicationSettingsView path={path}>\n      <div className=\"relative grid w-full grid-cols-2 gap-8 sm:grid-cols-1 sm:pb-[80px]\">\n        <div className=\"absolute -top-28 z-10 flex w-full justify-end sm:fixed sm:bottom-[68px] sm:left-0 sm:top-[auto] sm:border-t sm:border-gray-light sm:bg-white sm:p-6\">\n          <Button\n            className=\"mr-4\"\n            label=\"Cancel\"\n            type=\"tertiary\"\n            onClick={() => {\n              setSettings(originalSettings)\n              showToast({ content: \"Your changes have been discarded.\", timeout: 3000 })\n            }}>\n            Cancel\n          </Button>\n          <Button type=\"primary\" disabled={!settingsChanged} onClick={handleSave}>\n            Save\n          </Button>\n        </div>\n        <div className=\"rounded-xl border border-gray-light\">\n          <div className=\"p-8\">\n            <Typography variant=\"h5\" as=\"h3\">\n              Appointment reminders\n            </Typography>\n            <Typography variant=\"subtitle\" className=\"mt-6\">\n              Heal.me will remind your clients before their next appointment with you.\n            </Typography>\n          </div>\n          <div className=\"rounded-b-xl bg-gray-ultralight p-8\">\n            <div className=\"mb-2 flex flex-row flex-wrap items-center\">\n              <CheckBox\n                label=\"Email\"\n                className=\"flex-none font-manrope text-[16px] font-normal leading-6\"\n                id=\"appt-email-reminder\"\n                onChange={() =>\n                  handleUpdate(\"appointmentReminderEmailEnabled\")(!settings.appointmentReminderEmailEnabled)\n                }\n                checked={settings.appointmentReminderEmailEnabled}\n              />\n              <div className=\"mb-2 ml-2 flex-none bg-white\">\n                <Select\n                  options={commIntervals}\n                  value={settings.appointmentEmailReminderMinutes}\n                  onChange={(e) =>\n                    setSettings({ ...settings, appointmentEmailReminderMinutes: Number(e.target.value) })\n                  }\n                />\n              </div>\n              <p className=\"mb-2 ml-2 flex-none\">before</p>\n            </div>\n            <div className=\"flex flex-row flex-wrap items-center\">\n              <CheckBox\n                label=\"Text\"\n                className=\"flex-none font-manrope text-[16px] font-normal leading-6\"\n                id=\"appt-text-reminder\"\n                onChange={() =>\n                  handleUpdate(\"appointmentReminderTextEnabled\")(!settings.appointmentReminderTextEnabled)\n                }\n                checked={settings.appointmentReminderTextEnabled}\n              />\n              <div className=\"mb-2 ml-2 flex-none bg-white\">\n                <Select\n                  options={commIntervals}\n                  value={settings.appointmentTextReminderMinutes}\n                  onChange={(e) => setSettings({ ...settings, appointmentTextReminderMinutes: Number(e.target.value) })}\n                />\n              </div>\n              <p className=\"mb-2 ml-2 flex-none\">before</p>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"rounded-xl border border-gray-light\">\n          <div className=\"p-8\">\n            <Typography variant=\"h5\" as=\"h3\">\n              Payment reminders\n            </Typography>\n            <Typography variant=\"subtitle\" className=\"mt-6\">\n              Heal.me will remind your clients if they haven’t paid for an appointment.\n            </Typography>\n          </div>\n          <div className=\"rounded-b-xl bg-gray-ultralight p-8\">\n            <div className=\"mb-2 flex flex-row flex-wrap items-center\">\n              <CheckBox\n                label=\"Email\"\n                className=\"flex-none font-manrope text-[16px] font-normal leading-6\"\n                id=\"payment-email-reminder\"\n                onChange={() => handleUpdate(\"paymentPastDueEmailEnabled\")(!settings.paymentPastDueEmailEnabled)}\n                checked={settings.paymentPastDueEmailEnabled}\n              />\n              <div className=\"mb-2 ml-2 flex-none bg-white\">\n                <Select\n                  options={commIntervals}\n                  value={settings.paymentPastDueEmailMinutes}\n                  onChange={(e) => setSettings({ ...settings, paymentPastDueEmailMinutes: Number(e.target.value) })}\n                />\n              </div>\n              <p className=\"mb-2 ml-2 flex-none\">after</p>\n            </div>\n            <div className=\"flex flex-row flex-wrap items-center\">\n              <CheckBox\n                label=\"Text\"\n                className=\"flex-none font-manrope text-[16px] font-normal leading-6\"\n                id=\"payment-text-reminder\"\n                onChange={() => handleUpdate(\"paymentPastDueTextEnabled\")(!settings.paymentPastDueTextEnabled)}\n                checked={settings.paymentPastDueTextEnabled}\n              />\n              <div className=\"mb-2 ml-2 flex-none bg-white\">\n                <Select\n                  options={commIntervals}\n                  value={settings.paymentPastDueTextMinutes}\n                  onChange={(e) => setSettings({ ...settings, paymentPastDueTextMinutes: Number(e.target.value) })}\n                />\n              </div>\n              <p className=\"mb-2 ml-2 flex-none\">after</p>\n            </div>\n          </div>\n        </div>\n      </div>\n    </ProCommunicationSettingsView>\n  )\n}\n\nexport default function ProCommunicationSettings(props) {\n  return (\n    <ProCommunicationSettingsProvider>\n      <CommunicationSettings {...props} />\n    </ProCommunicationSettingsProvider>\n  )\n}\n","import { DocumentDuplicateIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { TextArea } from \"../../../components/shared/Inputs\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { copyToClipboard } from \"../../../utils/utils\"\n\nimport ProCommunicationSettingsProvider from \"./ProCommunicationSettingsProvider\"\nimport ProCommunicationSettingsView from \"./ProCommunicationSettingsView\"\n\nconst UPDATE_COMMUNICATION_SETTINGS = `\n  mutation UpdateCommunicationSettings(\n    $emailTemplates: [EmailTemplateInput!]!\n  ) {\n    updateCommunicationSettings(\n      emailTemplates: $emailTemplates\n    ) {\n      result\n      error\n    }\n  }\n`\n\nconst VariableDivider = () => <div className=\"mt-2 w-full border border-gray-light\" />\n\nconst VariableRow = ({ name, exampleValue }) => {\n  const { showToast } = useToast()\n\n  const handleCopy = async (text) => {\n    await copyToClipboard(text, showToast, \"Copied\")\n  }\n\n  return (\n    <div className=\"mt-2 flex flex-row items-center justify-between\">\n      <div>\n        <p className=\"font-normal text-gray-dark\">{name}</p>\n        <p className=\"mt-1 font-bold\">{exampleValue}</p>\n      </div>\n      <DocumentDuplicateIcon\n        className=\"h-7 w-7 flex-none cursor-pointer text-gray-dark\"\n        onClick={() => handleCopy(name)}\n      />\n    </div>\n  )\n}\n\nconst CommunicationTemplates = ({ emailTemplates, defaultEmailContent, practice, path }) => {\n  const [, updateCommunicationSettings] = useMutation(UPDATE_COMMUNICATION_SETTINGS)\n  const { showToast } = useToast()\n\n  const initializeEmailTemplates = () =>\n    defaultEmailContent.map((defaultEmailTemplate) => {\n      const customEmailTemplate = emailTemplates.find((template) => template.name === defaultEmailTemplate.name)\n\n      const content = customEmailTemplate?.customContent ?? defaultEmailTemplate.defaultContent\n\n      return {\n        name: defaultEmailTemplate.name,\n        allowedVariables: defaultEmailTemplate.allowedVariables,\n        content\n      }\n    })\n\n  const originalEmailTemplates = initializeEmailTemplates()\n  const [currentEmailTemplates, setCurrentEmailTemplates] = useState(originalEmailTemplates)\n\n  const handleEmailTemplateUpdate = (emailName, content) => {\n    setCurrentEmailTemplates((prevEmailTemplates) =>\n      prevEmailTemplates.map((emailTemplate) => {\n        if (emailTemplate.name === emailName) {\n          return { ...emailTemplate, content }\n        }\n        return emailTemplate\n      })\n    )\n  }\n\n  const updatedEmailTemplates = currentEmailTemplates.filter((template) => {\n    const originalTemplate = originalEmailTemplates.find((original) => original.name === template.name)\n    return originalTemplate.content !== template.content\n  })\n\n  const emailTemplatesChanged = updatedEmailTemplates.length > 0\n\n  const handleSave = () => {\n    updateCommunicationSettings({ emailTemplates: updatedEmailTemplates })\n      .then((result) => {\n        if (result.data?.updateCommunicationSettings?.result) {\n          showToast({ content: \"Email template updated successfully.\", timeout: 3000 })\n        } else {\n          const error =\n            result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n            result.data?.updateCommunicationSettings?.error ||\n            \"Please try again later.\"\n\n          showToast({ type: \"error\", content: error })\n        }\n      })\n      .catch((error) => {\n        showToast({ type: \"error\", content: error.message })\n      })\n  }\n\n  const handleCancel = () => {\n    setCurrentEmailTemplates(originalEmailTemplates)\n    showToast({ content: \"Your changes have been discarded.\", timeout: 3000 })\n  }\n\n  const confirmationEmail = currentEmailTemplates.find((template) => template.name === \"appointment_confirmed\")\n  const reminderEmail = currentEmailTemplates.find((template) => template.name === \"appointment_reminder\")\n\n  return (\n    <ProCommunicationSettingsView path={path}>\n      <div className=\"relative sm:pb-[64px]\">\n        <div className=\"absolute -top-28 z-10 flex w-full justify-end sm:fixed sm:bottom-[68px] sm:left-0 sm:top-[auto] sm:border-t sm:border-gray-light sm:bg-white sm:p-6\">\n          <Button className=\"mr-4\" label=\"Cancel\" type=\"tertiary\" onClick={handleCancel}>\n            Cancel\n          </Button>\n          <Button type=\"primary\" disabled={!emailTemplatesChanged} onClick={handleSave}>\n            Save\n          </Button>\n        </div>\n        <div className=\"mb-5\">\n          <div className=\"grid grid-cols-2 gap-6 sm:grid-cols-1 \">\n            <div className=\"flex flex-col\">\n              <div className=\"rounded-lg border border-gray p-8\">\n                <Typography variant=\"h5\" as=\"h3\">\n                  Confirmations\n                </Typography>\n                <Typography variant=\"subtitle\" className=\"mt-4\">\n                  You can add a custom message to the emails that are sent to clients when they book appointments.\n                </Typography>\n                <TextArea\n                  className=\"mt-4 text-sm\"\n                  value={confirmationEmail.content}\n                  key={confirmationEmail.name}\n                  id=\"custom-email-content\"\n                  placeholder=\"Type in your message here...\"\n                  onChange={(event) => {\n                    handleEmailTemplateUpdate(confirmationEmail.name, event.target.value)\n                  }}\n                />\n              </div>\n              <div className=\"mt-8 rounded-lg border border-gray p-8\">\n                <Typography variant=\"h5\" as=\"h3\">\n                  Reminders\n                </Typography>\n                <Typography variant=\"subtitle\" className=\"mt-4\">\n                  You can add a custom message to the emails that are sent to clients before their appointments.\n                </Typography>\n                <TextArea\n                  className=\"mt-4 text-sm\"\n                  value={reminderEmail.content}\n                  key={reminderEmail.name}\n                  placeholder=\"Type in your message here...\"\n                  onChange={(event) => {\n                    handleEmailTemplateUpdate(reminderEmail.name, event.target.value)\n                  }}\n                />\n              </div>\n            </div>\n            <div className=\"rounded-lg bg-gray-ultralight p-8\">\n              <div className=\"grid grid-cols-2 gap-6 2xl:grid-cols-1\">\n                <div>\n                  <p className=\"font-manrope text-[12px] font-bold uppercase tracking-wider text-gray-dark\">\n                    Client Variables\n                  </p>\n                  <VariableDivider />\n                  <VariableRow exampleValue=\"Stove\" name=\"{{client.first_name}}\" />\n                  <VariableDivider />\n                  <VariableRow exampleValue=\"Doran\" name=\"{{client.last_name}}\" />\n                  <VariableDivider />\n                  <VariableRow exampleValue=\"Steve Doran\" name=\"{{client.display_name}}\" />\n                  <VariableDivider />\n                  <VariableRow exampleValue=\"the.stove_pipe@gmail.com\" name=\"{{client.email}}\" />\n                  <VariableDivider />\n                  <VariableRow exampleValue=\"(703) 123-4567\" name=\"{{client.phone}}\" />\n                  <p className=\"mt-6 font-manrope text-[12px] font-bold uppercase tracking-wider text-gray-dark\">\n                    Appt. Variables\n                  </p>\n                  <VariableDivider />\n                  <VariableRow exampleValue=\"August 10, 2023 @ 3:00pm\" name=\"{{appointment.date_and_time}}\" />\n                  <VariableDivider />\n                  <VariableRow exampleValue=\"Reiki for beginners\" name=\"{{appointment.service_name}}\" />\n                </div>\n                <div>\n                  <p className=\"font-manrope text-[12px] font-bold uppercase tracking-wider text-gray-dark\">\n                    Practice Variables\n                  </p>\n                  <VariableDivider />\n                  <VariableRow exampleValue={practice.firstName} name=\"{{practitioner.first_name}}\" />\n                  <VariableDivider />\n                  <VariableRow exampleValue={practice.lastName} name=\"{{practitioner.last_name}}\" />\n                  <VariableDivider />\n                  <VariableRow\n                    exampleValue={practice.firstName + \" \" + practice.lastName}\n                    name=\"{{practitioner.full_name}}\"\n                  />\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </ProCommunicationSettingsView>\n  )\n}\n\nexport default function ProCommunicationTemplates(props) {\n  return (\n    <ProCommunicationSettingsProvider>\n      <CommunicationTemplates {...props} />\n    </ProCommunicationSettingsProvider>\n  )\n}\n","import { ExclamationCircleIcon, VideoCameraIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport { ButtonLink } from \"../../components/shared/Links\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nconst DEACTIVATE_VIDEO_CONFERENCING = `\n  mutation DeactivateVideoConferencing($provider: String!) {\n    deactivateVideoConferencing(provider: $provider) {\n      result\n      errors\n    }\n  }\n`\n\nconst ConferencingSettings = ({ zoom }) => {\n  const [, deactivateVideoConferencing] = useMutation(DEACTIVATE_VIDEO_CONFERENCING)\n  const { showToast } = useToast()\n  const [showDeactivateModal, setShowDeactivateModal] = useState(false)\n\n  const handleDeactivate = async () => {\n    const result = await deactivateVideoConferencing({ provider: \"zoom\" })\n\n    if (result.data?.deactivateVideoConferencing?.result === \"success\") {\n      showToast(\"Successfully disconnected from Zoom\")\n      window.location.reload()\n    } else {\n      const error = result.data?.deactivateVideoConferencing?.errors?.[0] || \"Something went wrong\"\n      showToast({ type: \"error\", content: error })\n    }\n  }\n\n  return (\n    <div>\n      <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Video Conferencing\" />\n      <div className=\"mb-9 flex flex-col sm:mb-4\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Video Conferencing\n        </Typography>\n        <Typography variant=\"body\" className=\"text-gray-dark sm:hidden\">\n          Connect your video conferencing account to automatically create meeting links for virtual appointments.\n        </Typography>\n      </div>\n\n      <div className=\"w-full max-w-[750px]\">\n        <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n          <div className=\"mb-8 w-fit rounded-xl bg-gray-ultralight p-4\">\n            <VideoCameraIcon className=\"h-12 w-12\" />\n          </div>\n\n          {zoom && zoom.connected ? (\n            <>\n              <Typography variant=\"h5\" className=\"mb-2\">\n                {zoom.erroredAt ? (\n                  <div className=\"flex items-center gap-2\">\n                    <span>Disconnected from Zoom</span>\n                    <ExclamationCircleIcon className=\"h-6 w-6 text-red\" />\n                  </div>\n                ) : (\n                  <span className=\"text-green\">Connected to Zoom</span>\n                )}\n              </Typography>\n              <Typography variant=\"body\" className=\"mb-4 text-gray-dark\">\n                Account: {zoom.accountName} ({zoom.accountEmail})\n              </Typography>\n              {zoom.erroredAt && (\n                <Banner type=\"error\" className=\"mb-2\">\n                  Heal.me no longer has access to your Zoom account. Please reconnect to continue using the Zoom\n                  integration.\n                </Banner>\n              )}\n              {zoom.erroredAt ? (\n                <ButtonLink href=\"/portal/settings/conferencing/zoom/authorize\" className=\"mt-4 w-fit\">\n                  Connect Zoom\n                </ButtonLink>\n              ) : (\n                <ButtonLink onClick={() => setShowDeactivateModal(true)} variant=\"secondary\" className=\"mt-4 w-fit\">\n                  Disconnect Zoom\n                </ButtonLink>\n              )}\n            </>\n          ) : (\n            <>\n              <Typography variant=\"h5\" className=\"mb-2\">\n                Connect to Zoom\n              </Typography>\n              <Typography variant=\"body\" className=\"mb-4 text-gray-dark\">\n                Connect your Zoom account to automatically create meeting links.\n              </Typography>\n              <ButtonLink href=\"/portal/settings/conferencing/zoom/authorize\" className=\"mt-4 w-fit\">\n                Connect Zoom\n              </ButtonLink>\n            </>\n          )}\n        </div>\n      </div>\n\n      <AnimatedModal\n        visible={showDeactivateModal}\n        hideModal={() => setShowDeactivateModal(false)}\n        header=\"Disconnect Zoom\"\n        showFooter={true}\n        actionButtonCopy=\"Yes, disconnect\"\n        actionButtonType=\"destructive\"\n        onSave={handleDeactivate}>\n        <Typography variant=\"body\">\n          Are you sure you want to disconnect your Zoom account? This will remove automatic meeting creation for virtual\n          appointments.\n        </Typography>\n      </AnimatedModal>\n    </div>\n  )\n}\n\nexport default function ConferencingSettingsPage(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <ConferencingSettings {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import { gql } from \"@urql/core\"\nimport React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Breadcrumbs from \"../../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { Toggle } from \"../../../components/shared/Inputs\"\nimport LoadingSpinner from \"../../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../../components/shared/Modal\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../../providers/GraphQLProvider\"\n\nconst DISCONNECT_PAYPAL_MUTATION = gql`\n  mutation DisconnectPaypalAccount {\n    disconnectPaypalAccount {\n      result\n      errors\n    }\n  }\n`\n\nconst UPDATE_PAYPAL_SETTINGS_MUTATION = gql`\n  mutation UpdatePaypalSettings($paypalActive: Boolean!, $venmoActive: Boolean!) {\n    updatePaypalSettings(paypalActive: $paypalActive, venmoActive: $venmoActive) {\n      result\n      errors\n    }\n  }\n`\n\nconst CHECK_PAYPAL_SELLER_STATUS = gql`\n  mutation CheckPaypalSellerStatus {\n    checkPaypalSellerStatus {\n      result\n      errors\n      status {\n        isOnboardingComplete\n        paymentsReceivable\n        primaryEmailConfirmed\n      }\n    }\n  }\n`\n\nconst PaypalSettingsComponent = ({ paypalInfo }) => {\n  const { showToast } = useToast()\n\n  const [paypalConnected, setPaypalConnected] = useState(paypalInfo.paypalConnected)\n  const [showDisconnectModal, setShowDisconnectModal] = useState(false)\n  const [paypalActive, setPaypalActive] = useState(paypalInfo.paypalActive)\n  const [venmoActive, setVenmoActive] = useState(paypalInfo.venmoActive)\n  const [sellerStatus, setSellerStatus] = useState(paypalInfo.sellerStatus)\n\n  const [, disconnectPaypal] = useMutation(DISCONNECT_PAYPAL_MUTATION)\n  const [, updatePaypalSettings] = useMutation(UPDATE_PAYPAL_SETTINGS_MUTATION)\n  const [{ fetching: fetchingCheckStatus }, checkStatus] = useMutation(CHECK_PAYPAL_SELLER_STATUS)\n\n  const handleUpdateSettings = async (newPaypalActive, newVenmoActive) => {\n    const { data } = await updatePaypalSettings({\n      paypalActive: newPaypalActive,\n      venmoActive: newVenmoActive\n    })\n\n    if (data?.updatePaypalSettings?.result === \"success\") {\n      showToast(\"Settings updated successfully\", \"success\")\n      setPaypalActive(newPaypalActive)\n      setVenmoActive(newVenmoActive)\n    } else {\n      showToast(data?.updatePaypalSettings?.errors?.[0] || \"Failed to update settings\", \"error\")\n    }\n  }\n\n  const handleDisconnect = () => {\n    disconnectPaypal().then((res) => {\n      if (res.data?.disconnectPaypalAccount?.result === \"success\") {\n        showToast(\"PayPal account disconnected successfully\", \"success\")\n        setPaypalConnected(false)\n      } else {\n        showToast(res.data?.disconnectPaypalAccount?.errors[0], \"error\")\n      }\n    })\n    setShowDisconnectModal(false)\n  }\n\n  const checkSellerStatus = async () => {\n    const { data } = await checkStatus()\n\n    if (data?.checkPaypalSellerStatus?.result === \"success\") {\n      setSellerStatus(data.checkPaypalSellerStatus.status)\n    } else {\n      showToast(data?.checkPaypalSellerStatus?.errors?.[0] || \"Failed to check status\", \"error\")\n    }\n  }\n\n  useEffect(() => {\n    if (paypalConnected && !sellerStatus?.isOnboardingComplete) {\n      checkSellerStatus()\n    }\n  }, [paypalConnected])\n\n  const renderOnboardingStatus = () => {\n    if (!sellerStatus) return null\n\n    return (\n      <div className=\"mt-4 flex flex-col gap-4\">\n        {!sellerStatus.paymentsReceivable && (\n          <div className=\"rounded-lg border border-red bg-red-light p-4\">\n            <Typography variant=\"body\" className=\"text-red\">\n              Attention: You currently cannot receive payments due to restriction on your PayPal account. Please reach\n              out to PayPal Customer Support or connect to{\" \"}\n              <a target=\"_blank\" rel=\"noopener noreferrer\" className=\"underline\" href=\"https://www.paypal.com\">\n                https://www.paypal.com\n              </a>{\" \"}\n              for more information.\n            </Typography>\n          </div>\n        )}\n\n        {!sellerStatus.primaryEmailConfirmed && (\n          <div className=\"rounded-lg border border-red bg-red-light p-4\">\n            <Typography variant=\"body\" className=\"text-red\">\n              Attention: Please confirm your email address on{\" \"}\n              <a\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                className=\"underline\"\n                href=\"https://www.paypal.com/businessprofile/settings\">\n                https://www.paypal.com/businessprofile/settings\n              </a>{\" \"}\n              in order to receive payments! You currently cannot receive payments.\n            </Typography>\n          </div>\n        )}\n\n        <div className=\"flex flex-row items-center gap-2\">\n          <Button type=\"secondary\" onClick={checkSellerStatus} disabled={fetchingCheckStatus} className=\"w-fit\">\n            Check Onboarding Status\n          </Button>\n          {fetchingCheckStatus && <LoadingSpinner className=\"ml-2 inline py-0\" spinnerClassName=\"h-4 w-4\" />}\n        </div>\n      </div>\n    )\n  }\n\n  return (\n    <div>\n      <Breadcrumbs\n        links={[\n          { href: \"/portal/settings\", text: \"Settings\" },\n          { href: \"/portal/settings/banking\", text: \"Payments\" }\n        ]}\n        activePage=\"PayPal\"\n      />\n      <div className=\"mb-9 flex flex-col sm:mb-4\">\n        <Typography as=\"h1\" variant=\"h3\">\n          PayPal\n        </Typography>\n      </div>\n      <div className=\"flex w-1/2 flex-col gap-4 sm:w-full\">\n        <div className=\"flex flex-row justify-between rounded-xl border border-gray-light p-8\">\n          <div className=\"flex flex-col\">\n            <Typography variant=\"h5\">{paypalConnected ? \"PayPal Connected\" : \"Not Connected\"}</Typography>\n            <div className=\"flex flex-col gap-1\">\n              {paypalConnected ? (\n                <div className=\"flex flex-col\">\n                  <Typography variant=\"body\">Merchant ID: {paypalInfo.merchantId}</Typography>\n                  <Typography variant=\"body\">Clients will be able to pay using PayPal.</Typography>\n                </div>\n              ) : (\n                <Typography variant=\"body\">Connect your PayPal account to start accepting payments.</Typography>\n              )}\n            </div>\n          </div>\n          <div className=\"flex flex-col gap-4\">\n            <a href=\"/portal/settings/banking/paypal/link\">\n              <Button type={paypalConnected ? \"tertiary\" : \"primary\"} className=\"w-full\">\n                {paypalConnected ? \"Manage\" : \"Connect\"}\n              </Button>\n            </a>\n            {paypalConnected && (\n              <Button type=\"warning\" onClick={() => setShowDisconnectModal(true)}>\n                Disconnect\n              </Button>\n            )}\n          </div>\n        </div>\n\n        {paypalConnected && !sellerStatus?.isOnboardingComplete && renderOnboardingStatus()}\n\n        {paypalConnected && sellerStatus?.isOnboardingComplete && (\n          <>\n            <div className=\"flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n              <div className=\"flex flex-col\">\n                <Typography variant=\"h5\">Accept PayPal Payments</Typography>\n                <Typography variant=\"body\" className=\"text-gray-dark\">\n                  Allow clients to pay using PayPal\n                </Typography>\n                <Typography variant=\"body\" className=\"mt-2 text-sm italic text-gray-dark\">\n                  This option only controls if it appears as an option for your clients at Heal.me, but you need to have\n                  it enabled in your PayPal account.\n                </Typography>\n              </div>\n              <Toggle checked={paypalActive} onChange={() => handleUpdateSettings(!paypalActive, venmoActive)} />\n            </div>\n\n            <div className=\"flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n              <div className=\"flex flex-col\">\n                <Typography variant=\"h5\">Accept Venmo Payments</Typography>\n                <Typography variant=\"body\" className=\"text-gray-dark\">\n                  Allow clients to pay using Venmo\n                </Typography>\n                <Typography variant=\"body\" className=\"mt-2 text-sm italic text-gray-dark\">\n                  This option only controls if it appears as an option for your clients at Heal.me, but you need to have\n                  it enabled in your PayPal account.\n                </Typography>\n              </div>\n              <Toggle checked={venmoActive} onChange={() => handleUpdateSettings(paypalActive, !venmoActive)} />\n            </div>\n          </>\n        )}\n      </div>\n\n      <AnimatedModal\n        visible={showDisconnectModal}\n        hideModal={() => setShowDisconnectModal(false)}\n        header=\"Disconnect PayPal\"\n        showFooter\n        actionButtonCopy=\"Disconnect\"\n        actionButtonType=\"warning\"\n        onSave={handleDisconnect}>\n        <div className=\"flex flex-col gap-4\">\n          <Typography variant=\"body\">\n            Disconnecting your PayPal account will prevent you from offering PayPal services and products on your\n            website. Do you wish to continue?\n          </Typography>\n        </div>\n      </AnimatedModal>\n    </div>\n  )\n}\n\nexport default function PaypalSettings(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <PaypalSettingsComponent {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import React from \"react\"\n\nimport Breadcrumbs from \"../../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { EditableValue } from \"../../../components/shared/Inputs\"\nimport { Banner } from \"../../../components/shared/Layout\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../../providers/GraphQLProvider\"\n\nconst SquareSettings = ({ squareInfo }) => {\n  const { showToast } = useToast()\n\n  if (squareInfo.message) {\n    showToast(squareInfo.message)\n  }\n  if (squareInfo.error) {\n    showToast({\n      content: squareInfo.error,\n      type: \"error\",\n      duration: 5000\n    })\n  }\n\n  return (\n    <div>\n      <Breadcrumbs\n        links={[\n          { href: \"/portal/settings\", text: \"Settings\" },\n          { href: \"/portal/settings/banking\", text: \"Payments\" }\n        ]}\n        activePage=\"Square\"\n      />\n      <div className=\"mb-9 flex flex-col sm:mb-4\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Square\n        </Typography>\n      </div>\n      <div className=\"w-1/2 rounded-xl border border-gray-light p-8 sm:w-full\">\n        {squareInfo.erroredAt && (\n          <Banner type=\"error\" className=\"mb-6\">\n            Heal.me no longer has access to your Square account. Please reconnect to continue using the Square\n            integration.\n          </Banner>\n        )}\n        <div className=\"flex justify-between\">\n          <div className=\"flex flex-col\">\n            <EditableValue\n              value=\"Client payments will be made to this account.\"\n              editable={false}\n              name={squareInfo.displayName}\n            />\n          </div>\n          <a href=\"/portal/settings/banking/square/authorize\">\n            <Button type={squareInfo.squareConnected ? \"tertiary\" : \"primary\"} className=\"w-fit\">\n              {squareInfo.squareConnected ? \"Manage\" : \"Connect\"}\n            </Button>\n          </a>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default function SquarePaymentsSettings(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <SquareSettings {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import React from \"react\"\n\nimport Badge from \"../../../components/shared/Badge\"\nimport Breadcrumbs from \"../../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { EditableValue } from \"../../../components/shared/Inputs\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../../providers/GraphQLProvider\"\n\nconst StripeSettings = ({ stripeInfo }) => {\n  const { showToast } = useToast()\n\n  if (stripeInfo.connectionError) {\n    showToast(`Issue connecting to Stripe: ${stripeInfo.connectionError}`)\n  }\n\n  return (\n    <div>\n      <Breadcrumbs\n        links={[\n          { href: \"/portal/settings\", text: \"Settings\" },\n          { href: \"/portal/settings/banking\", text: \"Payments\" }\n        ]}\n        activePage=\"Stripe\"\n      />\n      <div className=\"mb-9 flex flex-col sm:mb-4\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Stripe\n        </Typography>\n      </div>\n      <div className=\"flex w-1/2 flex-row justify-between rounded-xl border border-gray-light p-8 sm:w-full\">\n        <div className=\"flex flex-col\">\n          <EditableValue\n            value=\"Client payments will be made to this account.\"\n            editable={false}\n            name={stripeInfo.displayName}\n          />\n          {stripeInfo.requirementsDue ||\n            (stripeInfo.requirementsPastDue && (\n              <Badge type=\"warning\" className=\"my-2\">\n                Check Stripe account for missing requirements\n              </Badge>\n            ))}\n        </div>\n        <a href=\"/portal/settings/banking/link\">\n          <Button type={stripeInfo.operational ? \"tertiary\" : \"primary\"} className=\"w-fit\">\n            {stripeInfo.operational ? \"Manage\" : \"Connect\"}\n          </Button>\n        </a>\n      </div>\n    </div>\n  )\n}\n\nexport default function StripePaymentsSettings(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <StripeSettings {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Label, Select, TextArea } from \"../../components/shared/Inputs\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast, ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nconst UPDATE_BOOKING_SETTINGS = `\n  mutation UpdateBookingSettings(\n    $appointmentBufferTime: Int,\n    $instantClientApproval: Boolean,\n    $appointmentLeadTime: Int,\n    $startTimeIncrement: Int,\n    $requireClientCcToBook: Boolean,\n    $chargeClientCcAtBooking: Boolean,\n    $cancellationPolicy: String,\n  ) {\n    updateBookingSettings(\n      appointmentBufferTime: $appointmentBufferTime,\n      instantClientApproval: $instantClientApproval,\n      appointmentLeadTime: $appointmentLeadTime,\n      startTimeIncrement: $startTimeIncrement,\n      requireClientCcToBook: $requireClientCcToBook,\n      chargeClientCcAtBooking: $chargeClientCcAtBooking,\n      cancellationPolicy: $cancellationPolicy,\n    ) {\n      result\n      error\n    }\n  }\n`\n\nconst options = [\n  { value: true, label: \"Yes (recommended)\" },\n  { value: false, label: \"No (approval required)\" }\n]\n\nconst bufferIntervals = [\n  { value: 0, label: \"None\" },\n  { value: 5, label: \"5 minutes\" },\n  { value: 10, label: \"10 minutes\" },\n  { value: 15, label: \"15 minutes (recommended)\" },\n  { value: 20, label: \"20 minutes\" },\n  { value: 30, label: \"30 minutes\" },\n  { value: 45, label: \"45 minutes\" },\n  { value: 60, label: \"1 hour\" },\n  { value: 90, label: \"1.5 hours\" },\n  { value: 120, label: \"2 hours\" },\n  { value: 150, label: \"2.5 hours\" },\n  { value: 180, label: \"3 hours\" }\n]\n\nconst leadTimes = [\n  { value: 0, label: \"No lead time\" },\n  { value: 15, label: \"15 minutes in advance\" },\n  { value: 30, label: \"30 minutes in advance\" },\n  { value: 60, label: \"1 hour in advance\" },\n  { value: 180, label: \"3 hours in advance\" },\n  { value: 480, label: \"8 hours in advance\" },\n  { value: 720, label: \"12 hours in advance\" },\n  { value: 1440, label: \"1 day in advance (recommended)\" },\n  { value: 2880, label: \"2 days in advance\" },\n  { value: 4320, label: \"3 days in advance\" },\n  { value: 10080, label: \"1 week in advance\" }\n]\n\nconst startTimeIncrements = [\n  { value: 15, label: \"15 minutes\" },\n  { value: 30, label: \"30 minutes (recommended)\" },\n  { value: 60, label: \"60 minutes\" },\n  { value: 75, label: \"75 minutes\" },\n  { value: 90, label: \"1.5 hours\" },\n  { value: 120, label: \"2 hours\" },\n  { value: 150, label: \"2.5 hours\" },\n  { value: 180, label: \"3 hours\" },\n  { value: 240, label: \"4 hours\" },\n  { value: 300, label: \"5 hours\" },\n  { value: 360, label: \"6 hours\" }\n]\n\nconst BookingSettings = ({\n  bookingSettings,\n  requireCcEnabled,\n  hasPaymentProvider,\n  hasOffline,\n  cancellationPolicyEnabled\n}) => {\n  const [, updateBookingSettings] = useMutation(UPDATE_BOOKING_SETTINGS)\n\n  const [settings, setSettings] = useState(bookingSettings)\n  const [originalSettings, setOriginalSettings] = useState(bookingSettings)\n\n  const { showToast } = useToast()\n\n  const handleSave = () => {\n    updateBookingSettings(settings)\n      .then((result) => {\n        if (result.data?.updateBookingSettings?.result) {\n          showToast({ content: \"Settings updated successfully.\", timeout: 3000 })\n          setOriginalSettings(settings)\n        } else {\n          const error =\n            result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n            result.data?.updateBookingSettings?.error ||\n            \"Please try again later.\"\n\n          showToast({ type: \"error\", content: error })\n        }\n      })\n      .catch((error) => {\n        showToast({ type: \"error\", content: error.message })\n      })\n  }\n\n  if (Object.keys(settings).length === 0) {\n    return null\n  }\n\n  const settingsChanged = JSON.stringify(settings) !== JSON.stringify(originalSettings)\n\n  return (\n    <div>\n      <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Booking\" />\n      <div className=\"mb-4 flex flex-row justify-between\">\n        <div className=\"flex flex-col\">\n          <Typography as=\"h2\" variant=\"h3\">\n            Booking\n          </Typography>\n          <Typography variant=\"subtitle\" className=\"sm:hidden\">\n            Auto-accept new bookings, edit the time between appointments, and more.\n          </Typography>\n        </div>\n\n        <div className=\"mr-2\">\n          <Button\n            className=\"mr-4\"\n            type=\"tertiary\"\n            onClick={() => {\n              setSettings(originalSettings)\n              showToast({ content: \"Your changes have been discarded.\", timeout: 3000 })\n            }}>\n            Cancel\n          </Button>\n          <Button type=\"primary\" disabled={!settingsChanged} onClick={handleSave}>\n            Save\n          </Button>\n        </div>\n      </div>\n      <Box className=\"w-1/2 sm:w-full\">\n        {requireCcEnabled && (\n          <div className=\"mb-6\">\n            <div className=\"flex flex-col\">\n              <Label htmlFor=\"require-booking\" className=\"mb-2 text-base\">\n                Require credit card when a client books:\n              </Label>\n              <Typography variant=\"subtitle\" className=\"mb-4\">\n                Booking free services will not require a credit card.\n              </Typography>\n\n              {hasPaymentProvider ? (\n                <div>\n                  <div className=\"mb-4 flex flex-row gap-4\">\n                    <RadioWithLabel\n                      id=\"require-cc-yes\"\n                      value={true}\n                      name=\"require-cc\"\n                      label=\"Yes\"\n                      checked={settings.requireClientCcToBook}\n                      onChange={() => setSettings({ ...settings, requireClientCcToBook: true })}\n                    />\n                    <RadioWithLabel\n                      value={false}\n                      id=\"require-cc-no\"\n                      name=\"require-cc\"\n                      label=\"No (recommended)\"\n                      checked={!settings.requireClientCcToBook}\n                      onChange={() =>\n                        setSettings({ ...settings, requireClientCcToBook: false, chargeClientCcAtBooking: false })\n                      }\n                    />\n                  </div>\n                  {hasOffline && (\n                    <Typography variant=\"subtitle\" className=\"mb-2\">\n                      Your clients will not have the option to pay with another method.\n                    </Typography>\n                  )}\n                </div>\n              ) : (\n                <Typography variant=\"subtitle\" className=\"mb-4 text-red\">\n                  Requires a connected Payment Provider account.{\" \"}\n                  <UnderlinedLink className=\"ml-2\" href=\"/portal/settings/banking\">\n                    Connect Now\n                  </UnderlinedLink>\n                </Typography>\n              )}\n            </div>\n          </div>\n        )}\n        <Divider />\n\n        {requireCcEnabled && settings.requireClientCcToBook && (\n          <div className=\"mb-6\">\n            <div className=\"flex flex-col\">\n              <Label htmlFor=\"charge-on-booking\" className=\"mb-2 text-base\">\n                Charge credit card when client books:\n              </Label>\n              <div className=\"flex flex-row gap-4\">\n                <RadioWithLabel\n                  id=\"charge-cc-yes\"\n                  value={true}\n                  name=\"charge-cc\"\n                  label=\"Yes\"\n                  checked={settings.chargeClientCcAtBooking}\n                  onChange={() => setSettings({ ...settings, chargeClientCcAtBooking: true })}\n                />\n                <RadioWithLabel\n                  id=\"charge-cc-no\"\n                  value={false}\n                  name=\"charge-cc\"\n                  label=\"No (recommended)\"\n                  checked={!settings.chargeClientCcAtBooking}\n                  onChange={() => setSettings({ ...settings, chargeClientCcAtBooking: false })}\n                />\n              </div>\n            </div>\n            <Divider />\n          </div>\n        )}\n        <div className=\"mb-6\">\n          <Label htmlFor=\"instant-approval\" className=\"mb-2 text-base\">\n            Auto-accept new client appointments:\n          </Label>\n          <Select\n            id=\"instant-approval\"\n            className=\"w-fit\"\n            options={options}\n            value={settings.instantClientApproval}\n            onChange={(e) => setSettings({ ...settings, instantClientApproval: e.target.value === \"true\" })}\n            defaultOption=\"Select an option\"\n          />\n        </div>\n        <Divider />\n        <div className=\"mb-6\">\n          <Label htmlFor=\"buffer-time\" className=\"mb-2 text-base\">\n            Buffer time between your appointments:\n          </Label>\n          <Select\n            id=\"buffer-time\"\n            className=\"w-fit\"\n            options={bufferIntervals}\n            value={settings.appointmentBufferTime}\n            onChange={(e) => setSettings({ ...settings, appointmentBufferTime: Number(e.target.value) })}\n            defaultOption=\"Select time interval\"\n          />\n        </div>\n        <Divider />\n        <div className=\"mb-6\">\n          <Label htmlFor=\"lead-time\" className=\"mb-2 text-base\">\n            Appointments can be scheduled:\n          </Label>\n          <Select\n            id=\"lead-time\"\n            className=\"w-fit\"\n            options={leadTimes}\n            value={settings.appointmentLeadTime}\n            onChange={(e) => setSettings({ ...settings, appointmentLeadTime: Number(e.target.value) })}\n            defaultOption=\"Select time interval\"\n          />\n        </div>\n        <Divider />\n        <div className=\"mb-6\">\n          <Label htmlFor=\"start-time\" className=\"mb-2 text-base\">\n            Start appointment slots every:\n          </Label>\n          <Select\n            id=\"start-time\"\n            className=\"w-fit\"\n            options={startTimeIncrements}\n            value={settings.startTimeIncrement}\n            onChange={(e) => setSettings({ ...settings, startTimeIncrement: Number(e.target.value) })}\n            defaultOption=\"Select time interval\"\n          />\n        </div>\n        {cancellationPolicyEnabled && (\n          <>\n            <Divider />\n            <div className=\"mb-6\">\n              <Label htmlFor=\"cancellation-policy\" className=\"mb-2 text-base\">\n                Cancellation Policy:\n              </Label>\n              <TextArea\n                id=\"cancellation-policy\"\n                className=\"w-full\"\n                rows={4}\n                maxLength={250}\n                placeholder=\"Enter your cancellation policy...\"\n                value={settings.cancellationPolicy || \"\"}\n                onChange={(e) => setSettings({ ...settings, cancellationPolicy: e.target.value })}\n              />\n            </div>\n          </>\n        )}\n      </Box>\n    </div>\n  )\n}\n\nexport default function ProBookingSettings(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <BookingSettings {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import { CalendarIcon } from \"@heroicons/react/24/solid\"\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nconst calendarImages = {\n  google: \"/images/calendar-icon-google.png\",\n  apple: \"/images/calendar-icon-icloud.png\",\n  live_connect: \"/images/calendar-icon-outlook.png\"\n}\n\nconst CalIcon = ({ className, iconClassName, provider }) => (\n  <div\n    className={twMerge(\n      \"flex h-7 w-7 flex-none items-center justify-center rounded-full border border-gray\",\n      className\n    )}>\n    {calendarImages[provider] ? (\n      <img alt={`${provider} icon`} src={calendarImages[provider]} className={twMerge(\"h-4 w-4\", iconClassName)} />\n    ) : (\n      <CalendarIcon className={twMerge(\"h-4 w-4\", iconClassName)} />\n    )}\n  </div>\n)\n\nexport default CalIcon\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { CheckBox } from \"../../../components/shared/Inputs\"\nimport { Divider } from \"../../../components/shared/Layout\"\nimport { useToast } from \"../../../contexts/ToastContext\"\n\nimport CalIcon from \"./CalIcon\"\n\nconst UPDATE_CALENDARS_MUTATION = `\n  mutation UpdateCronofyCalendars($calendars: [CronofyCalendarInput!]!) {\n    updateCronofyCalendars(calendars: $calendars) {\n      result\n    }\n  }\n`\n\nconst ReadCalendarSettings = ({ selectedProvider, onSave }) => {\n  const [newProvider, setNewProvider] = useState(selectedProvider)\n  const [, updateCalendars] = useMutation(UPDATE_CALENDARS_MUTATION)\n\n  const { showToast } = useToast()\n\n  return (\n    <div>\n      <div className=\"flex items-center gap-4\">\n        <CalIcon provider={selectedProvider.providerName} />\n        <div>{newProvider.profileName}</div>\n      </div>\n      <Divider />\n      <div className=\"mb-4 font-bold\">Check these places for conflicts</div>\n      <ul>\n        {newProvider.calendars.map((cal) => (\n          <li key={cal.id}>\n            <CheckBox\n              label={cal.calendarName}\n              checked={cal.active}\n              onChange={() => {\n                setNewProvider((prevProvider) => ({\n                  ...prevProvider,\n                  calendars: prevProvider.calendars.map((calendar) => {\n                    if (calendar.id === cal.id) {\n                      return { ...calendar, active: !calendar.active }\n                    }\n                    return calendar\n                  })\n                }))\n              }}\n            />\n          </li>\n        ))}\n      </ul>\n      <div className=\"mt-4 flex justify-end\">\n        <Button\n          onClick={() => {\n            updateCalendars({\n              calendars: newProvider.calendars.map((cal) => ({\n                id: cal.id,\n                active: cal.active\n              }))\n            }).then((result) => {\n              if (result.data?.updateCronofyCalendars?.result === \"success\") {\n                onSave(newProvider.calendars)\n                showToast(\"Calendars updated successfully\")\n              } else {\n                console.error(result)\n                showToast({ content: \"There was an error updating calendars\", type: \"error\" })\n              }\n            })\n          }}>\n          Save\n        </Button>\n      </div>\n    </div>\n  )\n}\n\nexport default ReadCalendarSettings\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { Select } from \"../../../components/shared/Inputs\"\nimport { Divider } from \"../../../components/shared/Layout\"\nimport { RadioWithLabel } from \"../../../components/shared/RadioButtons\"\nimport { useToast } from \"../../../contexts/ToastContext\"\n\nconst UPDATE_CRONOFY_CLIENT_MUTATION = `\n  mutation UpdateCronofyClient($writeCalendarId: ID!) {\n    updateCronofyClient(writeCalendarId: $writeCalendarId) {\n      result\n      errors\n    }\n  }\n`\n\nconst WriteCalendarSettings = ({ connectedCalendars, writeCalendar, setWriteCalendar, onSave }) => {\n  const [writeProvider, setWriteProvider] = useState(\n    connectedCalendars.find((cal) =>\n      cal.calendars.map((calendar) => calendar.calendarId).includes(writeCalendar?.calendarId)\n    )\n  )\n\n  const [, updateCronofyClient] = useMutation(UPDATE_CRONOFY_CLIENT_MUTATION)\n  const { showToast } = useToast()\n\n  return (\n    <div>\n      <div className=\"my-4 flex flex-col gap-2\">\n        {connectedCalendars.map((provider) => (\n          <RadioWithLabel\n            key={provider.id}\n            id={`write-provider-${provider.id}`}\n            name=\"write-provider\"\n            label={`${provider.profileName} (${capitalize(provider.providerName)})`}\n            checked={!writeProvider ? false : writeProvider.id === provider.id}\n            onChange={() => {\n              setWriteProvider(provider)\n              if (!writeProvider) setWriteCalendar(provider.calendars[0])\n            }}\n          />\n        ))}\n        <RadioWithLabel\n          name=\"write-provider\"\n          label=\"Do not add new events to a calendar\"\n          checked={!writeProvider}\n          onChange={() => {\n            setWriteProvider(null)\n            setWriteCalendar(null)\n          }}\n        />\n      </div>\n      {writeProvider && (\n        <>\n          <Divider />\n          <div className=\"mb-4 font-bold\">Add to calendar</div>\n          <Select\n            options={writeProvider.calendars.map((cal) => ({ value: cal.calendarId, label: cal.calendarName }))}\n            value={writeCalendar?.calendarId || writeProvider.calendars[0].calendarId}\n            onChange={(e) => setWriteCalendar(writeProvider.calendars.find((cal) => cal.calendarId === e.target.value))}\n          />\n        </>\n      )}\n      <div className=\"mt-4 flex justify-end\">\n        <Button\n          onClick={() => {\n            updateCronofyClient({ writeCalendarId: !writeCalendar ? \"\" : writeCalendar.calendarId }).then((result) => {\n              if (result.data?.updateCronofyClient?.result === \"success\") {\n                setWriteCalendar(\n                  writeProvider\n                    ? writeProvider.calendars.find((cal) => cal.calendarId === writeCalendar.calendarId)\n                    : null\n                )\n                showToast(\"Write calendar updated successfully\")\n                onSave()\n              } else {\n                showToast({ content: \"Failed to update write calendar\", type: \"error\" })\n              }\n            })\n          }}>\n          Save\n        </Button>\n      </div>\n    </div>\n  )\n}\n\nexport default WriteCalendarSettings\n","import { TrashIcon } from \"@heroicons/react/24/outline\"\nimport { CalendarIcon } from \"@heroicons/react/24/solid\"\nimport capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { InputWithLabel } from \"../../components/shared/Inputs\"\nimport { Box, Divider, Flyout } from \"../../components/shared/Layout\"\nimport { ButtonLink } from \"../../components/shared/Links\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport CalIcon from \"./ProCalendarSettings/CalIcon\"\nimport ReadCalendarSettings from \"./ProCalendarSettings/ReadCalendarSettings\"\nimport WriteCalendarSettings from \"./ProCalendarSettings/WriteCalendarSettings\"\n\nconst REMOVE_CRONOFY_PROFILE_MUTATION = `\n  mutation RemoveCronofyProfile($profileId: ID!) {\n    removeCronofyProfile(profileId: $profileId) {\n      result\n      errors\n    }\n  }\n`\n\nconst CREATE_CRONOFY_FEED_MUTATION = `\n  mutation CreateCronofyFeed($feedUrl: String!) {\n    createCronofyFeed(feedUrl: $feedUrl) {\n      result\n      errors\n      feed {\n        id providerName profileName profileId\n        calendars { id providerName profileName calendarName active }\n     }\n    }\n  }\n`\n\nconst CalendarContainer = ({ imgSrc, name, copy, children, className }) => (\n  <div className={twMerge(\"flex flex-col rounded-xl border border-gray-light p-8\", className)}>\n    <div className=\"mb-8 w-fit rounded-xl bg-gray-ultralight p-4\">\n      {imgSrc ? <img src={imgSrc} width=\"48px\" /> : <CalendarIcon className=\"h-12 w-12\" />}\n    </div>\n    <Typography variant=\"h5\" className=\"mb-2\">\n      {name}\n    </Typography>\n    <Typography variant=\"body\" className=\"mb-8 text-gray-dark\">\n      {copy}\n    </Typography>\n    {children}\n  </div>\n)\n\nconst ConfigurationButton = ({\n  header,\n  items,\n  onClick,\n  provider,\n  fallbackCopy = \"Do not check this calendar for conflicts\"\n}) => (\n  <button\n    className=\"flex w-full justify-between rounded-lg border border-gray p-4 text-sm hover:border-teal\"\n    onClick={onClick}>\n    <div className=\"flex gap-4\">\n      <CalIcon provider={provider} />\n      <div className=\"text-left\">\n        <div className=\"text-gray-dark\">{header}</div>\n        {items?.length > 0 ? (\n          <ul>\n            {items.map((item) => (\n              <li key={item}>&bull; {item}</li>\n            ))}\n          </ul>\n        ) : (\n          <div>{fallbackCopy}</div>\n        )}\n      </div>\n    </div>\n    <div className=\"flex-none font-bold text-teal\">Edit</div>\n  </button>\n)\n\nconst CalendarSettings = ({ authorizationUrl, connectedCalendars: calendars, writeCalendar: writeCal }) => {\n  const [connectedCalendars, setConnectedCalendars] = useState(calendars)\n  const [writeCalendar, setWriteCalendar] = useState(writeCal)\n  const [isFlyoutOpen, setIsFlyoutOpen] = useState(false)\n  const [providerId, setProviderId] = useState(null)\n  const [profileToDelete, setProfileToDelete] = useState(null)\n  const [feedModalVisible, setFeedModalVisible] = useState(false)\n  const [feedUrl, setFeedUrl] = useState(\"\")\n  const [feedSaving, setFeedSaving] = useState(false)\n\n  const [, removeCronofyProfile] = useMutation(REMOVE_CRONOFY_PROFILE_MUTATION)\n  const [, createCronofyFeed] = useMutation(CREATE_CRONOFY_FEED_MUTATION)\n  const { showToast } = useToast()\n\n  const selectedProvider =\n    providerId === \"write\"\n      ? null\n      : connectedCalendars && connectedCalendars.find((provider) => provider.id === providerId)\n\n  return (\n    <div>\n      <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Calendar Integrations\" />\n      <div className=\"mb-9 flex flex-col sm:mb-4\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Calendar Integrations\n        </Typography>\n        <Typography variant=\"body\" className=\"text-gray-dark sm:hidden\">\n          Sync your calendar across apps so wherever you work from, it happens here.\n        </Typography>\n      </div>\n      <div>\n        <>\n          {connectedCalendars.length > 0 ? (\n            <div className=\"w-full max-w-[750px]\">\n              <Box>\n                <div className=\"mb-4 flex items-center justify-between text-gray-dark\">\n                  <h2 className=\"text-lg font-bold\">My Calendar Accounts</h2>\n                  <ButtonLink href={authorizationUrl} target=\"_blank\">\n                    Connect another calendar\n                  </ButtonLink>\n                </div>\n                <Box className=\"p-4\">\n                  {connectedCalendars.map((provider, i) => (\n                    <React.Fragment key={`provider-${provider.id}`}>\n                      <div className=\"flex items-center justify-between gap-4\">\n                        <CalIcon\n                          provider={provider.providerName}\n                          className=\"h-10 w-10 flex-none border-none\"\n                          iconClassName=\"h-6 w-6\"\n                        />\n                        <div className=\"w-full\">\n                          <h3 className=\"font-bold\">{capitalize(provider.providerName)}</h3>\n                          <div className=\"text-gray-dark\">{provider.profileName}</div>\n                        </div>\n                        <button\n                          className=\"flex h-8 w-8 flex-none items-center justify-center rounded text-gray-dark hover:bg-gray-light focus:outline-none focus:ring-2 focus:ring-blue active:bg-gray\"\n                          onClick={() => setProfileToDelete(provider.id)}>\n                          <TrashIcon className=\"h-5 w-5\" />\n                        </button>\n                      </div>\n                      {i < connectedCalendars.length - 1 && <Divider className=\"-mx-4 my-4 box-content px-4\" />}\n                    </React.Fragment>\n                  ))}\n                </Box>\n                <div className=\"mt-4 flex justify-end\">\n                  <button className=\"text-sm text-gray-dark\" onClick={() => setFeedModalVisible(true)}>\n                    Connect an iCal feed\n                  </button>\n                </div>\n                <AnimatedModal\n                  visible={feedModalVisible}\n                  hideModal={() => setFeedModalVisible(false)}\n                  header=\"Connect an iCal feed\"\n                  showFooter={true}\n                  saveDisabled={feedSaving}\n                  onSave={() => {\n                    setFeedSaving(true)\n                    createCronofyFeed({ feedUrl }).then((result) => {\n                      if (result.data?.createCronofyFeed?.result === \"success\") {\n                        showToast(\"Your feed has been added successfully\")\n\n                        if (\n                          !connectedCalendars\n                            .map((cal) => cal.id)\n                            .includes(result.data.createCronofyFeed.feed.profileId)\n                        ) {\n                          setConnectedCalendars((prevCalendars) => [\n                            ...prevCalendars,\n                            result.data.createCronofyFeed.feed\n                          ])\n                        }\n                      } else {\n                        console.error(result)\n                        showToast({\n                          content:\n                            \"There was an error adding your feed. Likely the URL you used in not a valid iCal feed URL.\",\n                          type: \"error\"\n                        })\n                      }\n\n                      setFeedSaving(false)\n                      setFeedModalVisible(false)\n                    })\n                  }}>\n                  <InputWithLabel\n                    label=\"Feed URL\"\n                    value={feedUrl}\n                    onChange={(e) => setFeedUrl(e.target.value)}\n                    placeholder=\"Paste your iCal feed URL\"\n                  />\n                </AnimatedModal>\n              </Box>\n              <Box className=\"mt-8\">\n                <h2 className=\"text-lg font-bold\">Configuration</h2>\n                <Divider />\n                <div className=\"flex gap-4\">\n                  <div className=\"flex-none\">\n                    <CalendarIcon className=\"h-10 w-10\" />\n                  </div>\n                  <div className=\"w-1/3\">\n                    <div className=\"font-bold\">Check for conflicts</div>\n                    <div className=\"text-sm text-gray-dark\">\n                      Set the calendar(s) to check for conflicts to prevent double bookings\n                    </div>\n                  </div>\n                  <div className=\"flex w-2/3 flex-col gap-4\">\n                    {connectedCalendars.map((provider) => (\n                      <ConfigurationButton\n                        key={`check-button-${provider.id}`}\n                        provider={provider.providerName}\n                        className=\"w-full rounded-lg border border-gray p-4 text-sm hover:border-teal\"\n                        header={`Check ${provider.profileName}`}\n                        items={provider.calendars.filter((cal) => cal.active).map((cal) => cal.calendarName)}\n                        onClick={() => {\n                          setProviderId(provider.id)\n                          setIsFlyoutOpen(true)\n                        }}\n                      />\n                    ))}\n                  </div>\n                </div>\n                <Divider />\n                <div className=\"flex gap-4\">\n                  <div className=\"flex-none\">\n                    <CalendarIcon className=\"h-10 w-10\" />\n                  </div>\n                  <div className=\"w-1/3\">\n                    <div className=\"font-bold\">Add to calendar</div>\n                    <div className=\"text-sm text-gray-dark\">\n                      Set the calendar you would like to add new events to as they’re scheduled.\n                    </div>\n                  </div>\n                  <div className=\"flex w-2/3 flex-col gap-4\">\n                    <ConfigurationButton\n                      provider={writeCalendar?.providerName}\n                      header={writeCalendar ? `Add to ${writeCalendar.profileName}` : \"CALENDAR NOT SELECTED\"}\n                      fallbackCopy=\"Do not add new events to any calendar\"\n                      items={writeCalendar ? [writeCalendar.calendarName] : null}\n                      onClick={() => {\n                        setProviderId(\"write\")\n                        setIsFlyoutOpen(true)\n                      }}\n                    />\n                  </div>\n                </div>\n              </Box>\n              <Flyout\n                header={\n                  providerId === \"write\"\n                    ? \"Which calendar should we add new events to?\"\n                    : \"How should we check for conflicts?\"\n                }\n                visible={isFlyoutOpen}\n                closeFlyout={() => setIsFlyoutOpen(false)}>\n                {selectedProvider && (\n                  <ReadCalendarSettings\n                    selectedProvider={selectedProvider}\n                    key={selectedProvider?.id}\n                    setConnectedCalendars={setConnectedCalendars}\n                    onSave={(newCalendars) => {\n                      setConnectedCalendars((prevCalendars) =>\n                        prevCalendars.map((provider) =>\n                          provider.id === selectedProvider.id ? { ...provider, calendars: newCalendars } : provider\n                        )\n                      )\n                      setIsFlyoutOpen(false)\n                    }}\n                  />\n                )}\n                {providerId === \"write\" && (\n                  <WriteCalendarSettings\n                    connectedCalendars={connectedCalendars}\n                    writeCalendar={writeCalendar}\n                    setWriteCalendar={setWriteCalendar}\n                    onSave={() => setIsFlyoutOpen(false)}\n                  />\n                )}\n              </Flyout>\n              <AnimatedModal\n                header=\"Disconnect calendar\"\n                visible={!!profileToDelete}\n                hideModal={() => setProfileToDelete(null)}\n                actionButtonCopy=\"Yes, disconnect\"\n                actionButtonType=\"destructive\"\n                showFooter={true}\n                onSave={() => {\n                  removeCronofyProfile({ profileId: profileToDelete }).then((result) => {\n                    if (result.data?.removeCronofyProfile?.result === \"success\") {\n                      showToast(\"Your calendar has been removed successfully\")\n                      setConnectedCalendars((prevCalendars) =>\n                        prevCalendars.filter((cal) => cal.id !== profileToDelete)\n                      )\n                    } else {\n                      console.error(result) // eslint-disable-line no-console\n                      showToast({ content: \"There was an error removing your calendar\", type: \"error\" })\n                    }\n                    setProfileToDelete(null)\n                  })\n                }}>\n                <p>Are you sure you want to disconnect this calendar?</p>\n              </AnimatedModal>\n            </div>\n          ) : (\n            <CalendarContainer\n              className=\"w-fit\"\n              name=\"Sync Heal.me with your existing calendar\"\n              copy=\"Supports Google, iCloud, Outlook, Office 365, and Exchange\">\n              <ButtonLink href={authorizationUrl} target=\"_blank\">\n                Connect calendar\n              </ButtonLink>\n            </CalendarContainer>\n          )}\n        </>\n      </div>\n    </div>\n  )\n}\n\nexport default function ProCalendarSettings(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <CalendarSettings {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import {\n  ArrowPathRoundedSquareIcon,\n  CreditCardIcon,\n  ChatBubbleLeftEllipsisIcon,\n  CalendarDaysIcon,\n  NewspaperIcon\n} from \"@heroicons/react/24/outline\"\nimport React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport Typography from \"../../components/shared/Typography\"\n\nconst MainSettings = ({ calendarConnected, showSubscriptionLink }) => (\n  <div>\n    <div className=\"mb-9 flex flex-col sm:mb-4\">\n      <Typography as=\"h1\" variant=\"h3\">\n        Settings\n      </Typography>\n      <Typography variant=\"subtitle\" className=\"sm:hidden\">\n        Manage your Heal.me practice\n      </Typography>\n    </div>\n    <div className=\"grid grid-cols-3 gap-8 sm:grid-cols-1\">\n      <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n        <div className=\"mb-8 w-fit rounded-xl bg-gray-ultralight p-4\">\n          <ArrowPathRoundedSquareIcon className=\"h-10 w-10 text-gray-dark\" />\n        </div>\n        <Typography variant=\"h5\" className=\"mb-2\">\n          Calendar Integrations\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"mb-8\">\n          Sync your calendar across apps so wherever you work from, it happens here.\n        </Typography>\n        <a href=\"/portal/settings/calendar\">\n          <Button type={calendarConnected ? \"tertiary\" : \"primary\"} className=\"w-fit\">\n            {calendarConnected ? \"Manage\" : \"Connect\"}\n          </Button>\n        </a>\n      </div>\n      <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n        <div className=\"mb-8 w-fit rounded-xl bg-green-light p-4\">\n          <CreditCardIcon className=\"h-10 w-10 text-gray-dark\" />\n        </div>\n        <Typography variant=\"h5\" className=\"mb-2\">\n          Payments\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"mb-8 text-gray-dark\">\n          Accept online payments with Heal.me so you get paid on time, every time.\n        </Typography>\n        <a href=\"/portal/settings/banking\">\n          <Button type=\"tertiary\" className=\"w-fit\">\n            Manage\n          </Button>\n        </a>\n      </div>\n      {/* <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n        <div className=\"mb-8 w-fit rounded-xl bg-gray-light p-4\">\n          <CodeBracketSquareIcon className=\"h-10 w-10 text-gray-dark\" />\n        </div>\n        <Typography variant=\"h5\" className=\"mb-2\">\n          Booking Widget\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"mb-8\">\n          A few lines of code, a whole lot of bookings: Add to your website now.\n        </Typography>\n        <a href=\"/portal/settings/banking\">\n          <Button type=\"primary\" className=\"w-fit\">\n            Install\n          </Button>\n        </a>\n      </div>*/}\n      <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n        <div className=\"mb-8 w-fit rounded-xl bg-red-light p-4\">\n          <ChatBubbleLeftEllipsisIcon className=\"h-10 w-10 text-gray-dark\" />\n        </div>\n        <Typography variant=\"h5\" className=\"mb-2\">\n          Communications\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"mb-8\">\n          Automated appointment, payment, and follow-up booking reminders.\n        </Typography>\n        <a href=\"/portal/settings/communication\">\n          <Button type=\"tertiary\" className=\"w-fit\">\n            Manage\n          </Button>\n        </a>\n      </div>\n      <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n        <div className=\"mb-8 w-fit rounded-xl bg-orange-light p-4\">\n          <CalendarDaysIcon className=\"h-10 w-10 text-gray-dark\" />\n        </div>\n        <Typography variant=\"h5\" className=\"mb-2\">\n          Booking\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"mb-8\">\n          Auto-accept new bookings, edit the time between appointments, and more.\n        </Typography>\n        <a href=\"/portal/settings/booking\">\n          <Button type=\"tertiary\" className=\"w-fit\">\n            Manage\n          </Button>\n        </a>\n      </div>\n      {showSubscriptionLink && (\n        <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n          <div className=\"mb-8 w-fit rounded-xl bg-gray-light p-4\">\n            <img src=\"/images/icons/heal_me.svg\" className=\"h-10 w-10\" alt=\"Heal.me\" />\n          </div>\n          <Typography variant=\"h5\" className=\"mb-2\">\n            Subscription\n          </Typography>\n          <Typography variant=\"subtitle\" className=\"mb-8\">\n            Manage your subscription to Heal.me.\n          </Typography>\n          <a href=\"/portal/subscriptions\">\n            <Button type=\"tertiary\" className=\"w-fit\">\n              Manage\n            </Button>\n          </a>\n        </div>\n      )}\n      <div className=\"flex flex-col rounded-xl border border-green-light p-8\">\n        <div className=\"mb-8 w-fit rounded-xl bg-green-light p-4\">\n          <NewspaperIcon className=\"h-10 w-10 text-gray-dark\" />\n        </div>\n        <Typography variant=\"h5\" className=\"mb-2\">\n          Intake Form\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"mb-8\">\n          Customize the intake form that you can send to your clients.\n        </Typography>\n        <a href=\"/portal/settings/intake_forms\">\n          <Button type=\"tertiary\" className=\"w-fit\">\n            Manage\n          </Button>\n        </a>\n      </div>\n    </div>\n  </div>\n)\n\nconst ProMainSettings = (props) => <MainSettings {...props} />\n\nexport default ProMainSettings\n","import React from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { capitalize } from \"../../../utils/utils\"\nimport { Link, UnderlinedLink } from \"../../shared/Links\"\nimport { AnimatedModal } from \"../../shared/Modal\"\nimport Typography from \"../../shared/Typography\"\n\n// receive either square or stripe\nconst UPDATE_PRACTICE_PAYMENT_PROVIDER = `\n  mutation UpdatePracticePaymentProvider($provider: String!) {\n    updatePracticePaymentProvider(provider: $provider) {\n      result\n      errors\n    }\n  }\n`\n\nexport default function PaymentIntegrations({\n  stripeConnected,\n  stripeDisplayName,\n  squareConnected,\n  squareDisplayName,\n  paymentProvider,\n  paypalConnected,\n  paypalEnabled\n}) {\n  const [changePaymentProviderModalVisible, setChangePaymentProviderModalVisible] = React.useState(false)\n  const [newPaymentProvider, setNewPaymentProvider] = React.useState(\"stripe\")\n\n  const [, updatePaymentProvider] = useMutation(UPDATE_PRACTICE_PAYMENT_PROVIDER)\n\n  const handleUpdatePaymentProvider = async (p) => {\n    const { data } = await updatePaymentProvider({ provider: p })\n    if (data) {\n      window.location.reload()\n    }\n  }\n\n  const PaymentProviderCard = ({ provider, connected, displayName, imageUrl, manageUrl, connectUrl }) => {\n    const [noticeModalVisible, setNoticeModalVisible] = React.useState(false)\n\n    const hasAnyConnected = stripeConnected || squareConnected\n\n    const isCurrentProvider = provider === paymentProvider && connected\n\n    return (\n      <div className=\"flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n        <div className=\"flex flex-row justify-items-start\">\n          <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n            <img src={imageUrl} width=\"32px\" />\n          </div>\n          <div className=\"flex flex-col\">\n            <Typography variant=\"h5\" className=\"mb-2\">\n              {capitalize(provider)}\n            </Typography>\n            <Typography variant=\"body\" className=\"text-gray-dark\">\n              {connected ? `Connected to: ${displayName}` : `Sync Heal.me and ${capitalize(provider)}`}\n            </Typography>\n          </div>\n        </div>\n        <div className=\"flex flex-col items-end text-end\">\n          {isCurrentProvider && <div className=\"font-bold\">Active payment method</div>}\n          {!isCurrentProvider && (\n            <div>\n              <span>Inactive</span>\n              {connected && (\n                <span\n                  className=\"ml-1 cursor-pointer hover:underline\"\n                  onClick={() => {\n                    setNewPaymentProvider(provider)\n                    setChangePaymentProviderModalVisible(true)\n                  }}>\n                  (activate)\n                </span>\n              )}\n            </div>\n          )}\n          {connected ? (\n            <UnderlinedLink href={manageUrl}>Manage</UnderlinedLink>\n          ) : hasAnyConnected ? (\n            <>\n              <div\n                className=\"cursor-pointer font-bold text-teal underline\"\n                onClick={() => {\n                  setNoticeModalVisible(true)\n                }}>\n                Connect\n              </div>\n              <AnimatedModal\n                visible={noticeModalVisible}\n                showFooter={true}\n                hideModal={() => setNoticeModalVisible(false)}\n                actionButtonCopy={`I understand, switch to ${capitalize(provider)} Payments`}\n                onSave={() => {\n                  window.location.href = connectUrl\n                }}\n                header={\"Please Note:\"}>\n                <p>\n                  When switching from one payment provider to another, your clients will need to re-enter their payment\n                  information.\n                </p>\n              </AnimatedModal>\n            </>\n          ) : (\n            <UnderlinedLink href={connectUrl}>Connect</UnderlinedLink>\n          )}\n        </div>\n      </div>\n    )\n  }\n\n  const providers = [\n    {\n      provider: \"stripe\",\n      connected: stripeConnected,\n      displayName: stripeDisplayName,\n      imageUrl: \"/images/payments-icon-stripe.png\",\n      manageUrl: \"/portal/settings/banking/stripe\",\n      connectUrl: \"/portal/settings/banking/link\"\n    },\n    {\n      provider: \"square\",\n      connected: squareConnected,\n      displayName: squareDisplayName,\n      imageUrl: \"/images/payments-icon-square.png\",\n      manageUrl: \"/portal/settings/banking/square\",\n      connectUrl: \"/portal/settings/banking/square/authorize\"\n    }\n  ]\n\n  const sortedProviders = providers.sort((a) => (a.provider === paymentProvider ? -1 : 1))\n\n  return (\n    <>\n      <Typography as=\"h2\" variant=\"h5\" className=\"mb-2\">\n        Integrations\n      </Typography>\n      <div className=\"space-y-4\">\n        {sortedProviders.map((provider) => (\n          <PaymentProviderCard\n            key={provider.provider}\n            provider={provider.provider}\n            connected={provider.connected}\n            displayName={provider.displayName}\n            imageUrl={provider.imageUrl}\n            manageUrl={provider.manageUrl}\n            connectUrl={provider.connectUrl}\n          />\n        ))}\n        {/* PayPal section */}\n        {paypalEnabled && (\n          <div className=\"flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n            <div className=\"flex flex-row justify-items-start\">\n              <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n                <img src=\"/images/payments-icon-paypal.png\" width=\"32px\" />\n              </div>\n              <div className=\"flex flex-col\">\n                <Typography variant=\"h5\" className=\"mb-2\">\n                  PayPal / Venmo (BETA)\n                </Typography>\n                <Typography variant=\"body\" className=\"text-gray-dark\">\n                  Accept payments from clients using PayPal or Venmo.\n                </Typography>\n                <Typography variant=\"small\" className=\"text-gray-dark\">\n                  You need to have a{\" \"}\n                  <Link href=\"https://www.paypal.com/us/business\" target=\"_blank\" rel=\"noopener noreferrer\">\n                    PayPal Business account\n                  </Link>{\" \"}\n                  to use this feature.\n                </Typography>\n              </div>\n            </div>\n            <div className=\"flex flex-col items-end text-end\">\n              {paypalConnected ? (\n                <UnderlinedLink href=\"/portal/settings/banking/paypal\">Manage</UnderlinedLink>\n              ) : (\n                <UnderlinedLink href=\"/portal/settings/banking/paypal/link\">Connect</UnderlinedLink>\n              )}\n            </div>\n          </div>\n        )}\n      </div>\n      <AnimatedModal\n        visible={changePaymentProviderModalVisible}\n        showFooter={true}\n        hideModal={() => setChangePaymentProviderModalVisible(false)}\n        actionButtonCopy={`Change to ${capitalize(newPaymentProvider)}`}\n        onSave={() => handleUpdatePaymentProvider(newPaymentProvider)}\n        header={`Confirm change to ${capitalize(newPaymentProvider)}`}>\n        <p>\n          By making this change, all future payments will be processed through {capitalize(newPaymentProvider)}. Are you\n          sure you want to make this change?\n        </p>\n      </AnimatedModal>\n    </>\n  )\n}\n","import { CurrencyDollarIcon, SparklesIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport PaymentIntegrations from \"../../components/pro_portal/payments/PaymentIntegrations.jsx\"\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { Toggle, Select } from \"../../components/shared/Inputs.jsx\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast, ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nconst UPDATE_PRACTICE_OFFLINE_OPTIONS = `\n  mutation UpdatePracticeOfflineOptions($acceptsPaypal: Boolean, $acceptsVenmo: Boolean, $acceptsZelle: Boolean, $acceptsCash: Boolean, $acceptsCreditCard: Boolean) {\n    updatePracticeOfflineOptions(acceptsPaypal: $acceptsPaypal, acceptsVenmo: $acceptsVenmo, acceptsZelle: $acceptsZelle, acceptsCash: $acceptsCash, acceptsCreditCard: $acceptsCreditCard) {\n      result\n      error\n    }\n  }\n`\n\nconst UPDATE_PRACTICE_CURRENCY = `\n  mutation UpdatePracticeCurrency($currency: String!) {\n    updatePracticeCurrency(currency: $currency) {\n      result\n      error\n    }\n  }\n`\n\nconst UPDATE_TIPPING_OPTION = `\n  mutation UpdatePracticeAcceptsTipsMutation($acceptsTips: Boolean!) {\n    updatePracticeAcceptsTips(acceptsTips: $acceptsTips) {\n      result\n      error\n    }\n  }\n`\n\nconst currencyOptions = [\n  { value: \"USD\", label: \"USD\" },\n  { value: \"CAD\", label: \"CAD\" }\n]\n\nconst PaymentSettings = ({\n  stripeConnected,\n  stripeDisplayName,\n  acceptsCash,\n  acceptsPaypal,\n  acceptsZelle,\n  acceptsVenmo,\n  acceptsCreditCard,\n  currencyEnabled,\n  currency,\n  acceptsTips,\n  squareConnected,\n  squareDisplayName,\n  paymentProvider,\n  paypalConnected,\n  paypalEnabled\n}) => {\n  const [, updateOfflineOptions] = useMutation(UPDATE_PRACTICE_OFFLINE_OPTIONS)\n  const [, updateCurrency] = useMutation(UPDATE_PRACTICE_CURRENCY)\n  const [, updateTippingOption] = useMutation(UPDATE_TIPPING_OPTION)\n  const { showToast } = useToast()\n\n  const [editableCurrency, setEditableCurrency] = useState(currency)\n  const [editableAcceptsCash, setEditableAcceptsCash] = useState(acceptsCash)\n  const [editableAcceptsPaypal, setEditableAcceptsPaypal] = useState(acceptsPaypal)\n  const [editableAcceptsZelle, setEditableAcceptsZelle] = useState(acceptsZelle)\n  const [editableAcceptsVenmo, setEditableAcceptsVenmo] = useState(acceptsVenmo)\n  const [editableAcceptsCreditCard, setEditableAcceptsCreditCard] = useState(acceptsCreditCard)\n\n  const [editableAcceptsTips, setEditableAcceptsTips] = useState(acceptsTips)\n\n  const paymentMethods = [\n    {\n      name: \"Cash\",\n      state: editableAcceptsCash,\n      setState: setEditableAcceptsCash,\n      id: \"acceptsCash\",\n      icon: \"/images/payments-icon-cash.png\"\n    },\n    {\n      name: \"Credit Card\",\n      state: editableAcceptsCreditCard,\n      setState: setEditableAcceptsCreditCard,\n      id: \"acceptsCreditCard\",\n      icon: \"/images/payments-icon-credit-card.png\"\n    },\n    {\n      name: \"PayPal\",\n      state: editableAcceptsPaypal,\n      setState: setEditableAcceptsPaypal,\n      id: \"acceptsPaypal\",\n      icon: \"/images/payments-icon-paypal.png\"\n    },\n    {\n      name: \"Venmo\",\n      state: editableAcceptsVenmo,\n      setState: setEditableAcceptsVenmo,\n      id: \"acceptsVenmo\",\n      icon: \"/images/payments-icon-venmo.png\"\n    },\n    {\n      name: \"Zelle\",\n      state: editableAcceptsZelle,\n      setState: setEditableAcceptsZelle,\n      id: \"acceptsZelle\",\n      icon: \"/images/payments-icon-zelle.png\"\n    }\n  ]\n\n  const onChange = (methodId, newValue) => {\n    const variables = paymentMethods.reduce(\n      (acc, { id, state }) => ({\n        ...acc,\n        [id]: id === methodId ? newValue : state\n      }),\n      {}\n    )\n\n    updateOfflineOptions(variables)\n      .then((result) => {\n        if (result.data?.updatePracticeOfflineOptions?.result) {\n          showToast(\"Settings updated successfully.\")\n        } else {\n          const error =\n            result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n            result.data?.updatePracticeOfflineOptions?.error ||\n            \"Please try later.\"\n          showToast({ type: \"error\", content: error })\n        }\n      })\n      .catch((error) => {\n        showToast({ type: \"error\", content: error.message })\n      })\n  }\n\n  const onChangeAcceptsTips = (newValue) => {\n    updateTippingOption({ acceptsTips: newValue })\n      .then((result) => {\n        if (result.data?.updatePracticeAcceptsTips?.result) {\n          showToast(\"Settings updated successfully.\")\n          setEditableAcceptsTips(newValue)\n        } else {\n          const error =\n            result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n            result.data?.updatePracticeAcceptsTips?.error ||\n            \"Please try later.\"\n          showToast({ type: \"error\", content: error })\n          setEditableAcceptsTips(!newValue)\n        }\n      })\n      .catch((error) => {\n        showToast({ type: \"error\", content: error.message })\n        setEditableAcceptsTips(!newValue)\n      })\n  }\n\n  return (\n    <div>\n      <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Payments\" />\n      <div className=\"mb-9 flex flex-col sm:mb-4\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Payments\n        </Typography>\n        <Typography variant=\"body\" className=\"text-gray-dark sm:hidden\">\n          Accept online payments with Heal.me so you get paid on time, every time.\n        </Typography>\n      </div>\n      <div className=\"grid grid-cols-2 gap-8 sm:grid-cols-1\">\n        <div className=\"w-full\">\n          <PaymentIntegrations\n            stripeConnected={stripeConnected}\n            stripeDisplayName={stripeDisplayName}\n            squareConnected={squareConnected}\n            squareDisplayName={squareDisplayName}\n            paymentProvider={paymentProvider}\n            paypalConnected={paypalConnected}\n            paypalEnabled={paypalEnabled}\n          />\n          {currencyEnabled && (\n            <>\n              <Typography as=\"h2\" variant=\"h5\" className=\"mb-2 mt-9\">\n                Currency\n              </Typography>\n              <Typography variant=\"body\" className=\"mb-4 text-gray-dark sm:hidden\">\n                You can currently list and accept payments in USD or CAD.\n              </Typography>\n              <div className=\"mb-4 flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n                <div className=\"flex flex-row items-center\">\n                  <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n                    <CurrencyDollarIcon className=\"h-7 w-7\" />\n                  </div>\n                  <Typography variant=\"h5\">Selected Currency</Typography>\n                </div>\n                <Select\n                  options={currencyOptions}\n                  value={editableCurrency}\n                  id=\"currency-select\"\n                  onChange={(e) => {\n                    setEditableCurrency(e.target.value)\n                    updateCurrency({ currency: e.target.value })\n                      .then((result) => {\n                        if (result.data?.updatePracticeCurrency?.result) {\n                          showToast(\"Currency updated successfully.\")\n                        } else {\n                          const error =\n                            result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n                            result.data?.updateCurrency?.error ||\n                            \"Please try later.\"\n                          showToast({ type: \"error\", content: error })\n                        }\n                      })\n                      .catch((error) => {\n                        showToast({ type: \"error\", content: error.message })\n                      })\n                  }}\n                />\n              </div>\n            </>\n          )}\n          <Typography as=\"h2\" variant=\"h5\" className=\"mb-2 mt-9\">\n            Offline Options\n          </Typography>\n          {paymentMethods.map((method, index) => (\n            <div\n              key={index}\n              className=\"mb-4 flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n              <div className=\"flex flex-row items-center\">\n                <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n                  <img src={method.icon} width=\"32px\" alt={`${method.name} icon`} />\n                </div>\n                <Typography variant=\"h5\" className=\"mb-2\">\n                  {method.name}\n                </Typography>\n              </div>\n              <Toggle\n                id={`toggle-${method.id}`}\n                checked={method.state}\n                onChange={() => {\n                  const newValue = !method.state\n                  method.setState(newValue)\n                  onChange(method.id, newValue)\n                }}\n              />\n            </div>\n          ))}\n\n          <Typography as=\"h2\" variant=\"h5\" className=\"mb-2 mt-9\">\n            Tipping\n          </Typography>\n          <div className=\"mb-4 flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n            <div className=\"flex flex-row items-center\">\n              <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n                <SparklesIcon className=\"h-7 w-7\" />\n              </div>\n              <div className=\"flex flex-col\">\n                <Typography variant=\"h5\" className=\"mb-2\">\n                  Enable Tipping\n                </Typography>\n                <Typography variant=\"body\" className=\"text-gray-dark\">\n                  Customers will have the option to add a tip to their payment.\n                </Typography>\n              </div>\n            </div>\n            <Toggle\n              checked={editableAcceptsTips}\n              onChange={() => {\n                setEditableAcceptsTips(!editableAcceptsTips)\n                onChangeAcceptsTips(!editableAcceptsTips)\n              }}\n            />\n          </div>\n        </div>\n        <div className=\"w-full\">\n          <div className=\"mb-4 ml-8 mt-8 rounded-xl border border-gray-light p-8\">\n            <Typography as=\"h2\" variant=\"h5\" className=\"mb-2\">\n              How do offline options work?\n            </Typography>\n            <Typography variant=\"body\" className=\"mb-2 text-gray-dark\">\n              When you add information for PayPal, Cash, Zelle, or Venmo, you&apos;re giving the option for clients to\n              pay\n              <span className=\"font-bold\"> off of the Heal.me platform </span>\n              and pay you directly.\n            </Typography>\n            <Typography variant=\"body\" className=\"text-gray-dark\">\n              Because payments will be handled off of the Heal.me platform, you must ensure you&apos;ve collected and\n              recorded payments and transactions in your{\" \"}\n              <UnderlinedLink href=\"/portal/payments\">Payments page</UnderlinedLink>\n            </Typography>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default function ProPaymentSettings(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <PaymentSettings {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import { LinkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { CheckBox, EditableValue, Input, InputWithLabel } from \"../../components/shared/Inputs\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport PlacesAutocomplete from \"../../components/shared/PlacesAutocomplete\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { UPDATE_PRACTICE_DETAILS_MUTATION } from \"../../utils/mutations\"\nimport { stripUSAFromString } from \"../../utils/utils\"\n\nexport default function PersonalInformationPractice({\n  practice,\n  allLanguages,\n  allWorkWiths,\n  allAgeWorkWiths,\n  userIsWebsitePlan\n}) {\n  const [practiceDetails, setPracticeDetails] = useState(practice)\n  const [openField, setOpenField] = useState(null)\n  const [lastSavedDetailsValues, setLastSavedDetailsValues] = useState(practiceDetails)\n  const [{ fetching }, updatePracticeDetails] = useMutation(UPDATE_PRACTICE_DETAILS_MUTATION)\n\n  const { showToast } = useToast()\n\n  const languageIds = practiceDetails.languages.map((l) => Number(l.id))\n  const ageWorkWithIds = practiceDetails.ageWorkWiths.map((a) => Number(a.id))\n  const workWithIds = practiceDetails.workWiths.map((w) => Number(w.id))\n  const location = practiceDetails.location\n\n  const onOpened = (fieldName) => {\n    setOpenField(fieldName)\n  }\n\n  const onSave = () => {\n    const variables = {\n      locationId: practiceDetails.locationId,\n      languageIds: practiceDetails.languages?.map((l) => l.id),\n      ageWorkWithIds: practiceDetails.ageWorkWiths?.map((a) => a.id),\n      workWithIds: practiceDetails.workWiths?.map((w) => w.id),\n      website: practiceDetails.website,\n      facebook: practiceDetails.facebook,\n      instagram: practiceDetails.instagram,\n      twitter: practiceDetails.twitter,\n      linkedin: practiceDetails.linkedin,\n      tiktok: practiceDetails.tiktok,\n      youtube: practiceDetails.youtube\n    }\n    const setVariables = Object.fromEntries(Object.entries(variables).filter(([, v]) => v !== null))\n    updatePracticeDetails(setVariables).then((result) => {\n      if (result.data?.updatePracticeDetails) {\n        setPracticeDetails(result.data.updatePracticeDetails.practice)\n        setLastSavedDetailsValues(result.data.updatePracticeDetails.practice)\n        setOpenField(null)\n        showToast(\"Changes saved\")\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        showToast({ type: \"error\", content: `Error saving changes: ${result.error}` })\n      }\n    })\n  }\n\n  const socialsValue = [\n    practiceDetails.facebook,\n    practiceDetails.instagram,\n    practiceDetails.twitter,\n    practiceDetails.linkedin,\n    practiceDetails.tiktok,\n    practiceDetails.youtube\n  ]\n    .filter((link) => link)\n    .map((link) => link.replace(/(^\\w+:|^)\\/\\//, \"\"))\n    .join(\", \")\n\n  return (\n    <>\n      <div className=\"w-[600px] md:w-full\">\n        <Box className=\"rounded-t-none border-t-0\">\n          <EditableValue\n            name=\"Location\"\n            hint=\"Where is your practice located?\"\n            value={location}\n            disabled={fetching || (openField && openField !== \"Location\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setPracticeDetails(lastSavedDetailsValues)\n            }}>\n            <PlacesAutocomplete\n              apiKey={process.env.GOOGLE_MAPS_API_KEY}\n              name=\"Location\"\n              types={[\"locality\", \"administrative_area_level_3\"]}\n              onPlaceSelected={(place) => {\n                setPracticeDetails((values) => ({\n                  ...values,\n                  location: stripUSAFromString(place.formatted_address),\n                  locationId: place.place_id\n                }))\n              }}\n              defaultValue={location ? stripUSAFromString(location) : \"\"}\n            />\n          </EditableValue>\n          <Divider />\n          <EditableValue\n            name=\"Languages I speak\"\n            hint=\"Set which languages you speak.\"\n            saveDisabled={practiceDetails.languages === lastSavedDetailsValues.languages}\n            value={practiceDetails.languages.map((l) => l.name).join(\", \")}\n            disabled={fetching || (openField && openField !== \"Languages I speak\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setPracticeDetails(lastSavedDetailsValues)\n            }}>\n            <div className=\"grid grid-cols-2\">\n              {allLanguages.map((language) => (\n                <CheckBox\n                  key={language.id}\n                  label={language.name}\n                  checked={languageIds.includes(language.id)}\n                  onChange={() =>\n                    languageIds.includes(language.id)\n                      ? setPracticeDetails({\n                          ...practiceDetails,\n                          languages: practiceDetails.languages.filter((l) => Number(l.id) !== Number(language.id))\n                        })\n                      : setPracticeDetails({\n                          ...practiceDetails,\n                          languages: [...practiceDetails.languages, language]\n                        })\n                  }\n                />\n              ))}\n            </div>\n          </EditableValue>\n          <Divider />\n          <EditableValue\n            name=\"Client ages I work with\"\n            hint=\"Set which age groups you work with.\"\n            saveDisabled={practiceDetails.ageWorkWiths === lastSavedDetailsValues.ageWorkWiths}\n            value={practiceDetails.ageWorkWiths.map((a) => a.name).join(\", \")}\n            disabled={fetching || (openField && openField !== \"Client ages I work with\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setPracticeDetails(lastSavedDetailsValues)\n            }}>\n            <div className=\"flex flex-col\">\n              {allAgeWorkWiths.map((ageWorkWith) => (\n                <CheckBox\n                  key={ageWorkWith.id}\n                  label={ageWorkWith.name}\n                  checked={ageWorkWithIds.includes(ageWorkWith.id)}\n                  onChange={() =>\n                    ageWorkWithIds.includes(ageWorkWith.id)\n                      ? setPracticeDetails({\n                          ...practiceDetails,\n                          ageWorkWiths: practiceDetails.ageWorkWiths.filter(\n                            (a) => Number(a.id) !== Number(ageWorkWith.id)\n                          )\n                        })\n                      : setPracticeDetails({\n                          ...practiceDetails,\n                          ageWorkWiths: [...practiceDetails.ageWorkWiths, ageWorkWith]\n                        })\n                  }\n                />\n              ))}\n            </div>\n          </EditableValue>\n          <Divider />\n          <EditableValue\n            name=\"Client types I work with\"\n            hint=\"Set which types of clients you work with.\"\n            saveDisabled={practiceDetails.workWiths === lastSavedDetailsValues.workWiths}\n            value={practiceDetails.workWiths.map((w) => w.name).join(\", \")}\n            disabled={fetching || (openField && openField !== \"Client types I work with\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setPracticeDetails(lastSavedDetailsValues)\n            }}>\n            <div className=\"flex flex-col\">\n              {allWorkWiths.map((workWith) => (\n                <CheckBox\n                  key={workWith.id}\n                  label={workWith.name}\n                  checked={workWithIds.includes(workWith.id)}\n                  onChange={() =>\n                    workWithIds.includes(workWith.id)\n                      ? setPracticeDetails({\n                          ...practiceDetails,\n                          workWiths: practiceDetails.workWiths.filter((w) => Number(w.id) !== Number(workWith.id))\n                        })\n                      : setPracticeDetails({\n                          ...practiceDetails,\n                          workWiths: [...practiceDetails.workWiths, workWith]\n                        })\n                  }\n                />\n              ))}\n            </div>\n          </EditableValue>\n          <Divider />\n          {userIsWebsitePlan && (\n            <>\n              <EditableValue\n                name=\"Website\"\n                hint=\"Optional: Add your website for clients to learn more about you.\"\n                value={practiceDetails.website?.replace(/(^\\w+:|^)\\/\\//, \"\")}\n                saveDisabled={practiceDetails.website === lastSavedDetailsValues.website}\n                disabled={fetching || (openField && openField !== \"Website\")}\n                onOpened={onOpened}\n                onSave={onSave}\n                onCancel={() => {\n                  setOpenField(null)\n                  setPracticeDetails(lastSavedDetailsValues)\n                }}>\n                <div className=\"relative\">\n                  <Input\n                    className=\"pl-10\"\n                    name=\"Website\"\n                    explanatorySubtext=\"Copy and paste your website link\"\n                    value={practiceDetails.website || \"\"}\n                    onChange={(e) => setPracticeDetails((values) => ({ ...values, website: e.target.value }))}\n                  />\n                  <LinkIcon className=\"absolute left-2.5 top-2 h-6 w-6 text-gray-dark\" />\n                </div>\n              </EditableValue>\n              <Divider />\n            </>\n          )}\n          <EditableValue\n            name=\"Social accounts\"\n            hint=\"Optional: Add Instagram, Facebook, TikTok, LinkedIn, Youtube or Twitter/X account(s).\"\n            value={socialsValue}\n            saveDisabled={\n              practiceDetails.facebook === lastSavedDetailsValues.facebook &&\n              practiceDetails.instagram === lastSavedDetailsValues.instagram &&\n              practiceDetails.tiktok === lastSavedDetailsValues.tiktok &&\n              practiceDetails.linkedin === lastSavedDetailsValues.linkedin &&\n              practiceDetails.twitter === lastSavedDetailsValues.twitter &&\n              practiceDetails.youtube === lastSavedDetailsValues.youtube\n            }\n            disabled={fetching || (openField && openField !== \"Social accounts\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setPracticeDetails(lastSavedDetailsValues)\n            }}>\n            <div className=\"flex flex-col gap-4\">\n              <InputWithLabel\n                label=\"Instagram\"\n                name=\"Instagram\"\n                explanatorySubtext=\"Copy and paste your Instagram profile link\"\n                value={practiceDetails.instagram || \"\"}\n                onChange={(e) => setPracticeDetails((values) => ({ ...values, instagram: e.target.value }))}\n              />\n              <InputWithLabel\n                label=\"Facebook\"\n                name=\"Facebook\"\n                explanatorySubtext=\"Copy and paste your Facebook profile link\"\n                value={practiceDetails.facebook || \"\"}\n                onChange={(e) => setPracticeDetails((values) => ({ ...values, facebook: e.target.value }))}\n              />\n              <InputWithLabel\n                label=\"TiKTok\"\n                name=\"TikTok\"\n                explanatorySubtext=\"Copy and paste your TikTok profile link\"\n                value={practiceDetails.tiktok || \"\"}\n                onChange={(e) => setPracticeDetails((values) => ({ ...values, tiktok: e.target.value }))}\n              />\n              <InputWithLabel\n                label=\"LinkedIn\"\n                name=\"LinkedIn\"\n                explanatorySubtext=\"Copy and paste your LinkedIn profile link\"\n                value={practiceDetails.linkedin || \"\"}\n                onChange={(e) => setPracticeDetails((values) => ({ ...values, linkedin: e.target.value }))}\n              />\n              <InputWithLabel\n                label=\"Twitter / X\"\n                name=\"Twitter\"\n                explanatorySubtext=\"Copy and paste your Twitter profile link\"\n                value={practiceDetails.twitter || \"\"}\n                onChange={(e) => setPracticeDetails((values) => ({ ...values, twitter: e.target.value }))}\n              />\n              <InputWithLabel\n                label=\"YouTube\"\n                name=\"YouTube\"\n                explanatorySubtext=\"Copy and paste your YouTube profile link\"\n                value={practiceDetails.youtube || \"\"}\n                onChange={(e) => setPracticeDetails((values) => ({ ...values, youtube: e.target.value }))}\n              />\n            </div>\n          </EditableValue>\n        </Box>\n      </div>\n    </>\n  )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport AcceptTermsModal from \"../../components/shared/AcceptTermsModal\"\nimport DatePicker from \"../../components/shared/DatePicker\"\nimport { EditableValue, Input } from \"../../components/shared/Inputs\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst UPDATE_INFO_MUTATION = `\n  mutation UpdatePersonalSettings($name: String, $title: String, $gender: String, $dob: String, $customGender: String) {\n    updatePersonalSettings(name: $name, title: $title, gender: $gender, dob: $dob, customGender: $customGender) {\n      result\n      user { id name gender dob customGender }\n    }\n  }\n`\n\nexport default function PersonalInformationUser({ user }) {\n  const [userState, setUserState] = useState(user)\n  const [lastSavedUserValue, setLastSavedUserValue] = useState(user)\n  const [openField, setOpenField] = useState(null)\n  const { profileStatusData } = useProfileStatus()\n\n  const [{ fetching }, updatePersonalSettings] = useMutation(UPDATE_INFO_MUTATION)\n\n  const { showToast } = useToast()\n\n  const onSave = () => {\n    updatePersonalSettings(Object.fromEntries(Object.entries(userState).filter(([, v]) => !!v))).then((result) => {\n      setOpenField(null)\n      if (result.error) {\n        console.error(result) // eslint-disable-line no-console\n        setUserState(lastSavedUserValue)\n        showToast({\n          type: \"error\",\n          content: result.error.message.replace(\"[GraphQL]\", \"\")\n        })\n      } else {\n        setLastSavedUserValue(result.data.updatePersonalSettings.user)\n        showToast(\"Your settings have been saved.\")\n      }\n    })\n  }\n\n  const onOpened = (fieldName) => {\n    setOpenField(fieldName)\n  }\n\n  return (\n    <div className=\"mt-4 w-[600px] md:w-full\">\n      <Box className=\"rounded-b-none\">\n        <EditableValue\n          name=\"Name\"\n          value={userState.name}\n          saveDisabled={userState.name === lastSavedUserValue.name || userState.name?.length < 2}\n          disabled={fetching || (openField && openField !== \"Name\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <Input\n            name=\"Name\"\n            value={userState.name || \"\"}\n            onChange={(e) => setUserState((values) => ({ ...values, name: e.target.value }))}\n          />\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Title\"\n          hint=\"Set what your professional title is. Pro-tip: Keep this as short and clear as possible so it's easily understood by clients.\"\n          value={userState.title}\n          saveDisabled={userState.title === lastSavedUserValue.title || userState.title?.length < 2}\n          disabled={fetching || (openField && openField !== \"Title\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <Input\n            name=\"Title\"\n            placeholder=\"Ex: Licensed Massage Therapist\"\n            value={userState.title || \"\"}\n            onChange={(e) => setUserState((values) => ({ ...values, title: e.target.value }))}\n          />\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Gender\"\n          value={(userState.gender === \"Custom\" ? userState.customGender : userState.gender) || \"\"}\n          saveDisabled={userState.gender === lastSavedUserValue.gender}\n          disabled={fetching || (openField && openField !== \"Gender\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <div className=\"flex gap-4\">\n            <RadioWithLabel\n              value=\"Female\"\n              name=\"gender\"\n              label=\"Female\"\n              checked={userState.gender === \"Female\"}\n              onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n            />\n            <RadioWithLabel\n              value=\"Male\"\n              name=\"gender\"\n              label=\"Male\"\n              checked={userState.gender === \"Male\"}\n              onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n            />\n            <RadioWithLabel\n              value=\"Custom\"\n              name=\"gender\"\n              label=\"Custom\"\n              checked={userState.gender === \"Custom\"}\n              onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n            />\n          </div>\n          {userState.gender === \"Custom\" && (\n            <Input\n              className=\"mt-4\"\n              name=\"Custom gender\"\n              value={userState.customGender || \"\"}\n              onChange={(e) => setUserState((values) => ({ ...values, customGender: e.target.value }))}\n            />\n          )}\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Date of birth\"\n          value={userState.dob ? new Date(userState.dob).toDateString() : null}\n          saveDisabled={userState.dob === lastSavedUserValue.dob}\n          disabled={fetching || (openField && openField !== \"Date of birth\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setUserState(lastSavedUserValue)\n          }}>\n          <DatePicker\n            selected={userState.dob ? new Date(userState.dob) : \"\"}\n            onChange={(date) => {\n              setUserState((values) => ({ ...values, dob: date }))\n            }}\n          />\n        </EditableValue>\n      </Box>\n      <AcceptTermsModal showModal={profileStatusData.showTermsModal} />\n    </div>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { FilePickerDropArea } from \"../../components/shared/FileStackWidgets\"\nimport { InputWithLabel, Label, Select } from \"../../components/shared/Inputs\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport { AlgoliaSearchBox } from \"../../components/shared/SearchInputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst ADD_CREDENTIAL_MUTATION = `\n  mutation CreateProCredential($credentialId: ID, $issuerId: ID, $stateIssued: String, $licenseNumber: String, $filestackDocument: String, $filestackDocumentName: String) {\n    createProCredential(credentialId: $credentialId, issuerId: $issuerId, stateIssued: $stateIssued, licenseNumber: $licenseNumber, filestackDocument: $filestackDocument, filestackDocumentName: $filestackDocumentName) {\n      result\n      proCredential { id kind stateIssued licenseNumber filestackDocument filestackDocumentName state credential { id name } }\n      errors\n    }\n  }\n`\n\nexport const modalId = \"credentials-modal\"\n\nexport default function CredentialsModal({ setProCredentials }) {\n  const { syncProfileStatus } = useProfileStatus()\n  const [selectedCredentialType, setSelectedCredentialType] = useState(\"license\")\n  const [selectedCredential, setSelectedCredential] = useState(null)\n  const [selectedIssuer, setSelectedIssuer] = useState(null)\n  const [licenseNumber, setLicenseNumber] = useState(\"\")\n  const [issuingState, setIssuingState] = useState(\"\")\n\n  const { showToast } = useToast()\n  const [, addCredential] = useMutation(ADD_CREDENTIAL_MUTATION)\n\n  const saveEnabled = !!(selectedCredential && selectedIssuer && licenseNumber && issuingState)\n\n  const handleCredentialChange = (e) => {\n    setSelectedCredentialType(e.target.value)\n  }\n\n  const onMutationComplete = (result) => {\n    if (result?.data?.createProCredential?.result === \"success\") {\n      setProCredentials((credentials) => [...credentials, result.data.createProCredential.proCredential])\n      showToast({\n        content: (\n          <>\n            <b>Nice work!</b> We’ll email you after our review, but let’s keep going now.\n          </>\n        )\n      })\n      syncProfileStatus()\n      setSelectedCredentialType(\"license\")\n      setSelectedCredential(null)\n      setSelectedIssuer(null)\n      setLicenseNumber(\"\")\n      setIssuingState(\"\")\n      NiceModal.remove(modalId)\n    } else {\n      console.error(result)\n      let errorMessage = \"There was an error submitting your credential. Please try again later or contact support.\"\n      if (result.data?.createProCredential?.errors) errorMessage += ` ${result.data.createProCredential.errors}`\n      showToast({\n        type: \"error\",\n        content: errorMessage\n      })\n    }\n  }\n\n  return (\n    <NewModal\n      id={modalId}\n      header=\"Add credential\"\n      showFooter={true}\n      fullHeightInMobile={true}\n      saveDisabled={!saveEnabled}\n      hideSaveButton={selectedCredentialType === \"certification\"}\n      onSave={() => {\n        addCredential({\n          credentialId: selectedCredential.id,\n          issuerId: selectedIssuer?.id,\n          licenseNumber: licenseNumber,\n          stateIssued: issuingState\n        }).then(onMutationComplete)\n      }}>\n      <div className=\"flex flex-col gap-4\">\n        <Typography variant=\"subtitle\">\n          <b>Reminder:</b> You only get 5 credentials, so we suggest using the best ones that potential clients will\n          care about.{\" \"}\n          <UnderlinedLink\n            href=\"https://help.heal.me/en/articles/8440296-what-credentials-should-i-add-to-my-profile\"\n            target=\"_blank\">\n            Learn more\n          </UnderlinedLink>\n        </Typography>\n        <div className=\"flex gap-4\">\n          <RadioWithLabel\n            id=\"license-radio\"\n            value=\"license\"\n            name=\"credential\"\n            label=\"License\"\n            checked={selectedCredentialType === \"license\"}\n            onChange={handleCredentialChange}\n          />\n          <RadioWithLabel\n            id=\"certification-radio\"\n            value=\"certification\"\n            name=\"credential\"\n            label=\"Degree/Certification\"\n            checked={selectedCredentialType === \"certification\"}\n            onChange={handleCredentialChange}\n          />\n        </div>\n        <div>\n          {selectedCredentialType === \"license\" ? (\n            <>\n              <AlgoliaSearchBox\n                indexName=\"Credential\"\n                label=\"Name\"\n                filters=\"kind:license\"\n                explanatorySubtext=\"Ex: Licensed Massage Therapist\"\n                placeholder=\"Start typing credential name\"\n                onChange={(hit) => setSelectedCredential({ id: hit.objectID, name: hit.name, kind: hit.kind })}\n              />\n              {selectedCredential && (\n                <div className=\"mt-2\">\n                  <AlgoliaSearchBox\n                    indexName=\"Issuer\"\n                    label=\"Issuer\"\n                    filters=\"kind:license\"\n                    placeholder=\"Ex: Department of Regulatory Agencies\"\n                    onChange={(hit) => setSelectedIssuer({ id: hit.objectID, name: hit.name, kind: hit.kind })}\n                  />\n                  <div className=\"flex gap-4 py-4\">\n                    <InputWithLabel\n                      className=\"w-1/2\"\n                      id=\"license-number\"\n                      label=\"License number\"\n                      value={licenseNumber}\n                      onChange={(e) => setLicenseNumber(e.target.value)}\n                    />\n                    <div className=\"w-1/2\">\n                      <Label htmlFor=\"issuing-state\">Issuing state</Label>\n                      <Select\n                        defaultOption=\"Select state\"\n                        id=\"issuing-state\"\n                        value={issuingState}\n                        onChange={(e) => setIssuingState(e.target.value)}>\n                        <optgroup label=\"U.S. States\">\n                          <option value=\"alabama\">Alabama</option>\n                          <option value=\"alaska\">Alaska</option>\n                          <option value=\"arizona\">Arizona</option>\n                          <option value=\"arkansas\">Arkansas</option>\n                          <option value=\"california\">California</option>\n                          <option value=\"colorado\">Colorado</option>\n                          <option value=\"connecticut\">Connecticut</option>\n                          <option value=\"delaware\">Delaware</option>\n                          <option value=\"district_of_columbia\">District of Columbia</option>\n                          <option value=\"florida\">Florida</option>\n                          <option value=\"georgia\">Georgia</option>\n                          <option value=\"hawaii\">Hawaii</option>\n                          <option value=\"idaho\">Idaho</option>\n                          <option value=\"illinois\">Illinois</option>\n                          <option value=\"indiana\">Indiana</option>\n                          <option value=\"iowa\">Iowa</option>\n                          <option value=\"kansas\">Kansas</option>\n                          <option value=\"kentucky\">Kentucky</option>\n                          <option value=\"louisiana\">Louisiana</option>\n                          <option value=\"maine\">Maine</option>\n                          <option value=\"maryland\">Maryland</option>\n                          <option value=\"massachusetts\">Massachusetts</option>\n                          <option value=\"michigan\">Michigan</option>\n                          <option value=\"minnesota\">Minnesota</option>\n                          <option value=\"mississippi\">Mississippi</option>\n                          <option value=\"missouri\">Missouri</option>\n                          <option value=\"montana\">Montana</option>\n                          <option value=\"nebraska\">Nebraska</option>\n                          <option value=\"nevada\">Nevada</option>\n                          <option value=\"new_hampshire\">New Hampshire</option>\n                          <option value=\"new_jersey\">New Jersey</option>\n                          <option value=\"new_mexico\">New Mexico</option>\n                          <option value=\"new_york\">New York</option>\n                          <option value=\"north_carolina\">North Carolina</option>\n                          <option value=\"north_dakota\">North Dakota</option>\n                          <option value=\"ohio\">Ohio</option>\n                          <option value=\"oklahoma\">Oklahoma</option>\n                          <option value=\"oregon\">Oregon</option>\n                          <option value=\"pennsylvania\">Pennsylvania</option>\n                          <option value=\"rhode_island\">Rhode Island</option>\n                          <option value=\"south_carolina\">South Carolina</option>\n                          <option value=\"south_dakota\">South Dakota</option>\n                          <option value=\"tennessee\">Tennessee</option>\n                          <option value=\"texas\">Texas</option>\n                          <option value=\"utah\">Utah</option>\n                          <option value=\"vermont\">Vermont</option>\n                          <option value=\"virginia\">Virginia</option>\n                          <option value=\"washington\">Washington</option>\n                          <option value=\"west_virginia\">West Virginia</option>\n                          <option value=\"wisconsin\">Wisconsin</option>\n                          <option value=\"wyoming\">Wyoming</option>\n                        </optgroup>\n                        <optgroup label=\"Canadian Provinces and Territories\">\n                          <option value=\"alberta\">Alberta</option>\n                          <option value=\"british_columbia\">British Columbia</option>\n                          <option value=\"manitoba\">Manitoba</option>\n                          <option value=\"new_brunswick\">New Brunswick</option>\n                          <option value=\"newfoundland_and_labrador\">Newfoundland and Labrador</option>\n                          <option value=\"northwest_territories\">Northwest Territories</option>\n                          <option value=\"nova_scotia\">Nova Scotia</option>\n                          <option value=\"nunavut\">Nunavut</option>\n                          <option value=\"ontario\">Ontario</option>\n                          <option value=\"prince_edward_island\">Prince Edward Island</option>\n                          <option value=\"quebec\">Quebec</option>\n                          <option value=\"saskatchewan\">Saskatchewan</option>\n                          <option value=\"yukon\">Yukon</option>\n                        </optgroup>\n                      </Select>\n                    </div>\n                  </div>\n                </div>\n              )}\n            </>\n          ) : (\n            <div className=\"pb-4\">\n              <div className=\"mb-4 rounded border border-orange bg-orange-light p-4\">\n                Please upload only PDFs or images of your degrees and certifications that we can verify.\n              </div>\n              <FilePickerDropArea\n                onUploadDone={(res) => {\n                  addCredential({\n                    filestackDocument: res.filesUploaded[0].url,\n                    filestackDocumentName: res.filesUploaded[0].filename\n                  }).then(onMutationComplete)\n                }}\n              />\n            </div>\n          )}\n        </div>\n      </div>\n    </NewModal>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { DocumentTextIcon } from \"@heroicons/react/24/outline\"\nimport { EllipsisVerticalIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { Button, CloseButton } from \"../../components/shared/Buttons\"\nimport HealMeTooltip from \"../../components/shared/HealMeTooltip\"\nimport { Box, ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { capitalize } from \"../../utils/utils\"\n\nimport CredentialsModal, { modalId } from \"./CredentialsModal\"\nimport ProfileEditProvider from \"./ProfileEditProvider\"\n\nconst REMOVE_CREDENTIAL_MUTATION = `\n  mutation RemoveCredential($credentialId: ID!) {\n    removeCredential(credentialId: $credentialId) {\n      result\n      errors\n    }\n  }\n`\n\nconst REORDER_CREDENTIALS_MUTATION = `\n  mutation ReorderCredentials($credentialArray: [String!]!) {\n    reorderCredentials(credentialArray: $credentialArray) {\n      result\n      errors\n    }\n  }\n`\n\nconst CredentialRow = ({ proCredential, deleteCredential }) => {\n  const fallbackFilename = proCredential.createdAt\n    ? `file_upload_${proCredential.createdAt.split(\"T\")[0].replace(/-/g, \"_\")}`\n    : \"file_upload\"\n  const suffix =\n    proCredential.state === \"pending\" ? <span className=\"flex-none text-gray-dark\"> (Pending review)</span> : null\n\n  return (\n    <>\n      <div className=\"flex items-center justify-between font-bold\">\n        <div className=\"truncate\">\n          {proCredential.credential?.name || proCredential.filestackDocumentName || fallbackFilename}\n        </div>\n        <CloseButton className=\"flex-none\" onClick={() => deleteCredential(proCredential)} />\n      </div>\n      <Typography variant=\"small\" as=\"div\" className=\"w-11/12\">\n        {proCredential.licenseNumber ? (\n          <>\n            {proCredential.licenseNumber}\n            {proCredential.stateIssued ? ` • ${capitalize(proCredential.stateIssued)}` : \"\"}\n            {suffix}\n          </>\n        ) : (\n          <div className=\"flex items-center gap-1\">\n            <DocumentTextIcon className=\"h-4 w-4 flex-none\" />\n            <span className=\"flex-1 truncate\">{proCredential.filestackDocumentName || fallbackFilename}</span>\n            {suffix}\n          </div>\n        )}\n      </Typography>\n    </>\n  )\n}\n\nconst Credentials = ({ proCredentials: proCredentialsProp }) => {\n  const [proCredentials, setProCredentials] = useState(proCredentialsProp)\n  const [credentialToDelete, setCredentialToDelete] = useState(null)\n\n  const [, removeCredential] = useMutation(REMOVE_CREDENTIAL_MUTATION)\n  const [, reorderCredentials] = useMutation(REORDER_CREDENTIALS_MUTATION)\n\n  const { showToast } = useToast()\n\n  const approvedCredentials = proCredentials.filter((proCredential) => proCredential.state === \"approved\")\n  const pendingCredentials = proCredentials.filter((proCredential) => proCredential.state === \"pending\")\n  const deleteCredentialModalId = \"delete-credential-modal\"\n\n  const deleteCredential = (credential) => {\n    showToast({\n      type: \"info\",\n      content: \"Credential was deleted successfully.\"\n    })\n    setProCredentials((credentials) => credentials.filter((c) => c.id !== credential.id))\n    NiceModal.remove(deleteCredentialModalId)\n\n    removeCredential({ credentialId: credential.id }).then((result) => {\n      if (result?.data?.removeCredential?.result !== \"success\") {\n        console.error(result) // eslint-disable-line no-console\n        showToast({\n          type: \"error\",\n          content:\n            \"There was an error removing your credential. Please try again or contact support if the error persists.\"\n        })\n      }\n    })\n  }\n\n  const showDeleteModal = (proCredential) => {\n    setCredentialToDelete(proCredential)\n    NiceModal.show(deleteCredentialModalId)\n  }\n\n  return (\n    <>\n      <div className=\"w-[600px] md:w-full\">\n        <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n          <div className=\"flex flex-col\">\n            <Typography variant=\"h3\" as=\"h1\">\n              Credentials\n            </Typography>\n            <Typography variant=\"subtitle\">Add or edit your credentials.</Typography>\n          </div>\n        </div>\n        {proCredentials.length === 0 ? (\n          <ProfilePageEmptyStateBox title=\"Credentials\" onButtonClick={() => NiceModal.show(modalId)}>\n            Add any licenses, degrees, or certifications.{\" \"}\n            <UnderlinedLink\n              href=\"https://help.heal.me/en/articles/8440296-what-credentials-should-i-add-to-my-profile\"\n              target=\"_blank\">\n              Learn more\n            </UnderlinedLink>\n          </ProfilePageEmptyStateBox>\n        ) : (\n          <div data-test-id=\"credentials\">\n            <Box>\n              <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:border-none sm:pb-4\">\n                <Typography variant=\"capitalHeading\">Approved</Typography>\n                <div data-tooltip-id=\"disabled-tooltip\">\n                  <Button\n                    floatingInMobile={true}\n                    disabled={proCredentials.length >= 5}\n                    onClick={() => NiceModal.show(modalId)}>\n                    Add new\n                  </Button>\n                </div>\n                {proCredentials.length >= 5 && (\n                  <HealMeTooltip\n                    id=\"disabled-tooltip\"\n                    place=\"bottom\"\n                    content=\"Note: You can add a maximum of 5 credentials.\"\n                  />\n                )}\n              </div>\n              <div className=\"pt-6 sm:pt-0\">\n                {approvedCredentials.length === 0 ? (\n                  <Typography variant=\"subtitle\">No approved credentials yet.</Typography>\n                ) : (\n                  <ReactSortable\n                    list={approvedCredentials}\n                    setList={(newPositions) => {\n                      const newCredentials = newPositions.concat(pendingCredentials)\n                      if (JSON.stringify(newCredentials) !== JSON.stringify(proCredentials)) {\n                        const newOrder = newCredentials.map((proCredential, i) =>\n                          JSON.stringify({ id: proCredential.id, position: i + 1 })\n                        )\n                        reorderCredentials({ credentialArray: newOrder }).then((result) => {\n                          if (result?.data?.reorderCredentials?.result !== \"success\") {\n                            console.error(result) // eslint-disable-line no-console\n                            showToast({\n                              type: \"error\",\n                              content:\n                                \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n                            })\n                          }\n                        })\n                        setProCredentials(newCredentials)\n                      }\n                    }}>\n                    {approvedCredentials.map((proCredential, i) => (\n                      <React.Fragment key={proCredential.id}>\n                        <div className=\"flex cursor-grab items-center\">\n                          <div\n                            className={twMerge(\n                              \"py-4\",\n                              i === approvedCredentials.length - 1 ? \"pb-0\" : i === 0 ? \"pt-0\" : \"\"\n                            )}>\n                            <EllipsisVerticalIcon className=\"mr-4 h-6 w-6 text-gray-dark\" />\n                          </div>\n                          <div\n                            className={twMerge(\n                              \"w-full border-b border-gray-light py-4\",\n                              i === approvedCredentials.length - 1 ? \"border-none pb-0\" : i === 0 ? \"pt-0\" : \"\"\n                            )}>\n                            <CredentialRow proCredential={proCredential} deleteCredential={showDeleteModal} />\n                          </div>\n                        </div>\n                      </React.Fragment>\n                    ))}\n                  </ReactSortable>\n                )}\n              </div>\n            </Box>\n            {pendingCredentials.length > 0 && (\n              <Box className=\"mt-8 flex flex-col gap-4\">\n                <Typography variant=\"capitalHeading\">Pending</Typography>\n                {pendingCredentials.map((proCredential) => (\n                  <div key={proCredential.id} className=\"flex items-center\">\n                    <div className=\"w-full\">\n                      <CredentialRow proCredential={proCredential} deleteCredential={showDeleteModal} />\n                    </div>\n                  </div>\n                ))}\n              </Box>\n            )}\n          </div>\n        )}\n        <CredentialsModal setProCredentials={setProCredentials} />\n        <NewModal\n          id={deleteCredentialModalId}\n          header=\"Delete credential\"\n          showFooter={true}\n          onSave={() => {\n            deleteCredential(credentialToDelete)\n            setCredentialToDelete(null)\n          }}\n          cancelButtonCopy=\"No, don't delete\"\n          actionButtonType=\"destructive\"\n          actionButtonCopy=\"Yes, delete\">\n          <p>\n            This will remove the credential <b>{credentialToDelete?.credential?.name}</b> from your profile.\n          </p>\n        </NewModal>\n      </div>\n    </>\n  )\n}\n\nexport default function ProfileEditCredentialsV2({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <Credentials {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import { CheckIcon } from \"@heroicons/react/24/outline\"\nimport { QuestionMarkCircleIcon } from \"@heroicons/react/24/solid\"\nimport { loadStripe } from \"@stripe/stripe-js\"\nimport React, { useEffect, useState } from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport { ButtonLink, UnderlinedLink } from \"../../components/shared/Links\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport ProgressBar from \"../../components/shared/ProgressBar\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { urqlClient } from \"../../utils/utils\"\n\nconst VERIFICATION_SESSION_QUERY = `\n  query VerificationSession {\n    verificationSession\n  }\n`\n\nconst stripePromise = typeof window !== \"undefined\" ? loadStripe(`${window.App.stripe_key}`) : null\n\nconst Step = ({ step, kind, number, onClick }) => {\n  const Tag = step.link ? \"a\" : onClick ? \"button\" : \"div\"\n\n  return (\n    <li>\n      <Tag href={step.link} className=\"flex items-center gap-3\" onClick={onClick}>\n        <div\n          className={`flex h-6 w-6 flex-none items-center justify-center rounded-full ${\n            kind === \"completed\" ? \"bg-gray\" : kind === \"current\" ? \"bg-gray-dark\" : \"border border-gray-dark\"\n          }`}>\n          {kind === \"completed\" ? (\n            <CheckIcon className=\"h-4 w-4 stroke-[3px] text-gray-dark\" />\n          ) : (\n            <span className={kind === \"current\" ? \"font-bold text-white\" : \"text-gray-dark\"}>{number}</span>\n          )}\n        </div>\n        <span\n          className={\n            kind === \"completed\"\n              ? \"text-gray-dark line-through\"\n              : kind === \"current\"\n              ? \"font-bold text-black underline\"\n              : \"text-gray-dark\"\n          }>\n          {step.name}\n        </span>\n      </Tag>\n    </li>\n  )\n}\n\nconst ProfileChecklist = ({ className }) => {\n  const { profileStatusData } = useProfileStatus()\n  const [showModal, setShowModal] = useState(false)\n  const [modalShown, setModalShown] = useState(false)\n  const profilePublished = profileStatusData.status === \"Verified\"\n  const notVerified = profileStatusData.status === \"Not Published\"\n\n  useEffect(() => {\n    if (profileStatusData.showCompletedModal && !modalShown) {\n      setShowModal(true)\n      setModalShown(true)\n    }\n  })\n\n  const steps =\n    profileStatusData.status === \"Incomplete - Not Published\"\n      ? profileStatusData.completionSteps\n      : profileStatusData.verificationSteps\n  const indexOfCurrentStep = steps.findIndex((step) => !step.completed)\n  let progressPercentage =\n    profileStatusData.completionSteps.map((step) => step.completed).filter((c) => c).length /\n    profileStatusData.completionSteps.length\n  progressPercentage = `${Math.round(progressPercentage * 100)}%`\n\n  const startVerification = async () => {\n    const stripe = await stripePromise\n\n    if (!stripe) return\n\n    const result = await urqlClient.query(VERIFICATION_SESSION_QUERY).toPromise()\n    if (!result.data?.verificationSession) {\n      console.error(result.error)\n    }\n\n    const { error } = await stripe.verifyIdentity(result.data.verificationSession)\n\n    if (error) {\n      console.error(error)\n    } else {\n      console.log(\"Verification submitted!\")\n    }\n  }\n\n  return (\n    <>\n      <Box className={className}>\n        <div className=\"font-bold\">\n          Profile status:{\" \"}\n          <span className={profilePublished ? \"text-teal\" : \"text-red\"}>{profileStatusData.status}</span>\n        </div>\n        <Typography variant=\"subtitle\" className=\"mt-2\">\n          {notVerified ? (\n            <>\n              Verified profiles rank higher in search and get a profile badge.{\" \"}\n              <UnderlinedLink\n                href=\"https://help.heal.me/en/articles/8448233-what-is-profile-verification-and-why-should-i-do-it\"\n                target=\"_blank\">\n                Learn more\n              </UnderlinedLink>\n            </>\n          ) : profilePublished ? (\n            <>\n              Well done {profileStatusData.practitionerFirstName}! Now that you&apos;re verified, check out your new\n              badge.\n            </>\n          ) : (\n            <>\n              You must finish each step for your profile to be complete.{\" \"}\n              <UnderlinedLink\n                href=\"https://help.heal.me/en/articles/8545385-how-best-to-set-up-your-profile#h_3a7fc229ba\"\n                target=\"_blank\">\n                Learn more\n              </UnderlinedLink>\n            </>\n          )}\n        </Typography>\n        {profileStatusData.status === \"Incomplete - Not Published\" && (\n          <ProgressBar className=\"mt-6 sm:hidden\" percentComplete={progressPercentage} />\n        )}\n        <ul className=\"mt-6 flex flex-col gap-3\">\n          {steps.map((step, i) => (\n            <Step\n              key={step.name}\n              step={step}\n              kind={step.completed ? \"completed\" : indexOfCurrentStep === i ? \"current\" : \"incomplete\"}\n              onClick={step.name === \"Verify your identity\" ? startVerification : null}\n              number={i + 1}\n            />\n          ))}\n        </ul>\n        {profileStatusData.status === \"Not Published\" ? (\n          <div className=\"mt-6\">\n            {!profileStatusData.verificationSteps[1].completed ? (\n              <Button onClick={startVerification}>Verify identity</Button>\n            ) : (\n              <ButtonLink\n                href=\"https://help.heal.me/en/articles/8421792-how-can-i-get-reviews-from-existing-clients\"\n                target=\"_blank\">\n                Get client reviews\n              </ButtonLink>\n            )}\n          </div>\n        ) : profileStatusData.status === \"Verified\" ? (\n          <div className=\"mt-6\">\n            <ButtonLink href={profileStatusData.profileUrl} target=\"_blank\">\n              View my profile\n            </ButtonLink>\n          </div>\n        ) : null}\n        {profileStatusData.status === \"Incomplete - Not Published\" && (\n          <>\n            <Divider className=\"-mx-8 box-content px-8\" />\n            <div className=\"flex items-start gap-3\">\n              <div className=\"flex h-6 w-6 flex-none\">\n                <QuestionMarkCircleIcon className=\"text-gray-dark\" />\n              </div>\n              <div>\n                <div className=\"mb-4\">Are you curious about how best to complete your profile?</div>\n                <UnderlinedLink\n                  href=\"https://help.heal.me/en/articles/8545385-how-best-to-set-up-your-profile-to-get-clients\"\n                  target=\"_blank\">\n                  Watch a quick video\n                </UnderlinedLink>\n              </div>\n            </div>\n          </>\n        )}\n        {profileStatusData.status !== \"Incomplete - Not Published\" && notVerified && (\n          <>\n            <Divider className=\"-mx-8 box-content px-8\" />\n            <div className=\"flex items-start gap-3\">\n              <div className=\"flex h-6 w-6 flex-none\">\n                <QuestionMarkCircleIcon className=\"text-gray-dark\" />\n              </div>\n              <div>\n                <span className=\"font-bold\">Please note:</span> To get published and show in search results, your\n                profile needs to be verified.\n              </div>\n            </div>\n          </>\n        )}\n      </Box>\n      <AnimatedModal visible={showModal} hideModal={() => setShowModal(false)}>\n        <div className=\"flex flex-col items-center\">\n          <div className=\"mt-6 text-[40px]\">😁</div>\n          <Typography variant=\"h3\" as=\"h2\">\n            Great work setting up your profile!\n          </Typography>\n          <Typography variant=\"subtitle\" className=\"mt-2 max-w-xs\">\n            Give yourself a high-five! The next step is getting your profile verified.{\" \"}\n            <UnderlinedLink\n              href=\"https://help.heal.me/en/articles/8448233-what-is-profile-verification-and-why-should-i-do-it\"\n              target=\"_blank\">\n              Learn more\n            </UnderlinedLink>\n          </Typography>\n          <Button className=\"mb-4 mt-6\" size=\"large\" onClick={startVerification}>\n            Verify my identity\n          </Button>\n        </div>\n      </AnimatedModal>\n    </>\n  )\n}\n\nexport default ProfileChecklist\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React from \"react\"\n\nimport AcceptTermsModal from \"../../components/shared/AcceptTermsModal\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { TabNavLink } from \"../../components/shared/Links\"\nimport ListBox from \"../../components/shared/ListBox\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\n\nimport ProfileChecklist from \"./ProfileChecklist\"\n\nconst NAV_ITEMS = [\n  { title: \"Details\", path: \"/portal/profile\" },\n  { title: \"Credentials\", path: \"/portal/profile/credentials\" },\n  { title: \"Endorsements\", path: \"/portal/profile/endorsements\" },\n  { title: \"Photos\", path: \"/portal/profile/photos\" },\n  { title: \"Locations & Hours\", path: \"/portal/profile/locations\" },\n  { title: \"Services\", path: \"/portal/profile/services\" },\n  { title: \"Misc\", path: \"/portal/profile/audience\" }\n]\n\nconst SELECT_ITEMS = NAV_ITEMS.map((item) => ({ value: item.path, label: `${item.title}` }))\n\nconst ProfileEditView = ({ path, children }) => {\n  const { profileStatusData } = useProfileStatus()\n  const profileVerified = profileStatusData.status === \"Complete\"\n  const notVerified = profileStatusData.status === \"Not Published\"\n  const modalId = \"verification-modal\"\n\n  return (\n    <>\n      <div>\n        <Typography variant=\"h3\" as=\"h1\">\n          Profile\n        </Typography>\n        <Typography variant=\"subtitle\" className=\"sm:hidden\">\n          Edit or add to your profile here.\n        </Typography>\n        {profileVerified && (\n          <Typography variant=\"subtitle\" className={notVerified ? \"hidden text-red sm:block\" : \"hidden sm:block\"}>\n            Your profile is not {notVerified ? \"verified\" : \"published\"}.{\" \"}\n          </Typography>\n        )}\n        <Button type=\"link\" onClick={() => NiceModal.show(modalId)}>\n          Learn more\n        </Button>\n        <div className=\"mt-4 flex gap-8 border-b border-gray-light sm:hidden\">\n          {NAV_ITEMS.map((item) => (\n            <TabNavLink key={item.title} href={item.path} active={path === item.path}>\n              {item.title}\n            </TabNavLink>\n          ))}\n        </div>\n        <div className=\"mt-2 hidden sm:block\">\n          <ListBox\n            value={SELECT_ITEMS.find((item) => item.value === path)}\n            onChange={(item) => {\n              if (typeof window !== \"undefined\") window.location = item.value\n            }}\n            options={SELECT_ITEMS}\n            buttonHint=\"(tap to navigate)\"\n          />\n        </div>\n        <div className=\"mt-4 flex items-start gap-8 pt-4 sm:mt-2\">\n          <div className=\"w-[572px] sm:w-full\">{children}</div>\n          <ProfileChecklist className=\"w-[360px] sm:hidden\" />\n        </div>\n      </div>\n      <NewModal id={modalId}>\n        <ProfileChecklist className=\"border-none p-0\" />\n      </NewModal>\n      <AcceptTermsModal showModal={profileStatusData?.showTermsModal} />\n    </>\n  )\n}\n\nexport default ProfileEditView\n","import { LinkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { CheckBox, EditableValue, InputWithLabel } from \"../components/shared/Inputs\"\nimport { Input } from \"../components/shared/Inputs\"\nimport { Box, Divider } from \"../components/shared/Layout\"\nimport { useToast } from \"../contexts/ToastContext\"\nimport { UPDATE_PRACTICE_DETAILS_MUTATION } from \"../utils/mutations\"\n\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst Audience = ({ path, practice, allLanguages, allWorkWiths, allAgeWorkWiths }) => {\n  const [practiceDetails, setPracticeDetails] = useState(practice)\n  const [openField, setOpenField] = useState(null)\n  const [lastSavedDetailsValues, setLastSavedDetailsValues] = useState(practiceDetails)\n  const [{ fetching }, updatePracticeDetails] = useMutation(UPDATE_PRACTICE_DETAILS_MUTATION)\n\n  const { showToast } = useToast()\n\n  const languageIds = practiceDetails.languages.map((l) => Number(l.id))\n  const ageWorkWithIds = practiceDetails.ageWorkWiths.map((a) => Number(a.id))\n  const workWithIds = practiceDetails.workWiths.map((w) => Number(w.id))\n\n  const onOpened = (fieldName) => {\n    setOpenField(fieldName)\n  }\n\n  const onSave = () => {\n    const variables = {\n      languageIds: practiceDetails.languages?.map((l) => l.id),\n      ageWorkWithIds: practiceDetails.ageWorkWiths?.map((a) => a.id),\n      workWithIds: practiceDetails.workWiths?.map((w) => w.id),\n      website: practiceDetails.website,\n      facebook: practiceDetails.facebook,\n      instagram: practiceDetails.instagram,\n      twitter: practiceDetails.twitter,\n      linkedin: practiceDetails.linkedin,\n      tiktok: practiceDetails.tiktok,\n      youtube: practiceDetails.youtube\n    }\n    const setVariables = Object.fromEntries(Object.entries(variables).filter(([, v]) => v !== null))\n    updatePracticeDetails(setVariables).then((result) => {\n      if (result.data?.updatePracticeDetails) {\n        setPracticeDetails(result.data.updatePracticeDetails.practice)\n        setLastSavedDetailsValues(result.data.updatePracticeDetails.practice)\n        setOpenField(null)\n        showToast(\"Changes saved\")\n      } else {\n        console.error(result)\n        showToast({ type: \"error\", content: `Error saving changes: ${result.error}` })\n      }\n    })\n  }\n\n  const socialsValue = [\n    practiceDetails.facebook,\n    practiceDetails.instagram,\n    practiceDetails.twitter,\n    practiceDetails.linkedin,\n    practiceDetails.tiktok,\n    practiceDetails.youtube\n  ]\n    .filter((link) => link)\n    .map((link) => link.replace(/(^\\w+:|^)\\/\\//, \"\"))\n    .join(\", \")\n\n  return (\n    <ProfileEditView path={path}>\n      <Box>\n        <EditableValue\n          name=\"Languages I speak\"\n          hint=\"Set which languages you speak.\"\n          saveDisabled={practiceDetails.languages === lastSavedDetailsValues.languages}\n          value={practiceDetails.languages.map((l) => l.name).join(\", \")}\n          disabled={fetching || (openField && openField !== \"Languages I speak\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setPracticeDetails(lastSavedDetailsValues)\n          }}>\n          <div className=\"grid grid-cols-2\">\n            {allLanguages.map((language) => (\n              <CheckBox\n                key={language.id}\n                label={language.name}\n                checked={languageIds.includes(language.id)}\n                onChange={() =>\n                  languageIds.includes(language.id)\n                    ? setPracticeDetails({\n                        ...practiceDetails,\n                        languages: practiceDetails.languages.filter((l) => Number(l.id) !== Number(language.id))\n                      })\n                    : setPracticeDetails({\n                        ...practiceDetails,\n                        languages: [...practiceDetails.languages, language]\n                      })\n                }\n              />\n            ))}\n          </div>\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Client ages I work with\"\n          hint=\"Set which age groups you work with.\"\n          saveDisabled={practiceDetails.ageWorkWiths === lastSavedDetailsValues.ageWorkWiths}\n          value={practiceDetails.ageWorkWiths.map((a) => a.name).join(\", \")}\n          disabled={fetching || (openField && openField !== \"Client ages I work with\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setPracticeDetails(lastSavedDetailsValues)\n          }}>\n          <div className=\"flex flex-col\">\n            {allAgeWorkWiths.map((ageWorkWith) => (\n              <CheckBox\n                key={ageWorkWith.id}\n                label={ageWorkWith.name}\n                checked={ageWorkWithIds.includes(ageWorkWith.id)}\n                onChange={() =>\n                  ageWorkWithIds.includes(ageWorkWith.id)\n                    ? setPracticeDetails({\n                        ...practiceDetails,\n                        ageWorkWiths: practiceDetails.ageWorkWiths.filter(\n                          (a) => Number(a.id) !== Number(ageWorkWith.id)\n                        )\n                      })\n                    : setPracticeDetails({\n                        ...practiceDetails,\n                        ageWorkWiths: [...practiceDetails.ageWorkWiths, ageWorkWith]\n                      })\n                }\n              />\n            ))}\n          </div>\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Client types I work with\"\n          hint=\"Set which types of clients you work with.\"\n          saveDisabled={practiceDetails.workWiths === lastSavedDetailsValues.workWiths}\n          value={practiceDetails.workWiths.map((w) => w.name).join(\", \")}\n          disabled={fetching || (openField && openField !== \"Client types I work with\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setPracticeDetails(lastSavedDetailsValues)\n          }}>\n          <div className=\"flex flex-col\">\n            {allWorkWiths.map((workWith) => (\n              <CheckBox\n                key={workWith.id}\n                label={workWith.name}\n                checked={workWithIds.includes(workWith.id)}\n                onChange={() =>\n                  workWithIds.includes(workWith.id)\n                    ? setPracticeDetails({\n                        ...practiceDetails,\n                        workWiths: practiceDetails.workWiths.filter((w) => Number(w.id) !== Number(workWith.id))\n                      })\n                    : setPracticeDetails({\n                        ...practiceDetails,\n                        workWiths: [...practiceDetails.workWiths, workWith]\n                      })\n                }\n              />\n            ))}\n          </div>\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Website\"\n          hint=\"Optional: Add your website for clients to learn more about you.\"\n          value={practiceDetails.website?.replace(/(^\\w+:|^)\\/\\//, \"\")}\n          saveDisabled={practiceDetails.website === lastSavedDetailsValues.website}\n          disabled={fetching || (openField && openField !== \"Website\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setPracticeDetails(lastSavedDetailsValues)\n          }}>\n          <div className=\"relative\">\n            <Input\n              className=\"pl-10\"\n              name=\"Website\"\n              explanatorySubtext=\"Copy and paste your website link\"\n              value={practiceDetails.website || \"\"}\n              onChange={(e) => setPracticeDetails((values) => ({ ...values, website: e.target.value }))}\n            />\n            <LinkIcon className=\"absolute left-2.5 top-2 h-6 w-6 text-gray-dark\" />\n          </div>\n        </EditableValue>\n        <Divider />\n        <EditableValue\n          name=\"Social accounts\"\n          hint=\"Optional: Add Instagram, Facebook, TikTok, LinkedIn, Youtube or Twitter/X account(s).\"\n          value={socialsValue}\n          saveDisabled={\n            practiceDetails.facebook === lastSavedDetailsValues.facebook &&\n            practiceDetails.instagram === lastSavedDetailsValues.instagram &&\n            practiceDetails.tiktok === lastSavedDetailsValues.tiktok &&\n            practiceDetails.linkedin === lastSavedDetailsValues.linkedin &&\n            practiceDetails.twitter === lastSavedDetailsValues.twitter &&\n            practiceDetails.youtube === lastSavedDetailsValues.youtube\n          }\n          disabled={fetching || (openField && openField !== \"Social accounts\")}\n          onOpened={onOpened}\n          onSave={onSave}\n          onCancel={() => {\n            setOpenField(null)\n            setPracticeDetails(lastSavedDetailsValues)\n          }}>\n          <div className=\"flex flex-col gap-4\">\n            <InputWithLabel\n              label=\"Instagram\"\n              name=\"Instagram\"\n              explanatorySubtext=\"Copy and paste your Instagram profile link\"\n              value={practiceDetails.instagram || \"\"}\n              onChange={(e) => setPracticeDetails((values) => ({ ...values, instagram: e.target.value }))}\n            />\n            <InputWithLabel\n              label=\"Facebook\"\n              name=\"Facebook\"\n              explanatorySubtext=\"Copy and paste your Facebook profile link\"\n              value={practiceDetails.facebook || \"\"}\n              onChange={(e) => setPracticeDetails((values) => ({ ...values, facebook: e.target.value }))}\n            />\n            <InputWithLabel\n              label=\"TiKTok\"\n              name=\"TikTok\"\n              explanatorySubtext=\"Copy and paste your TikTok profile link\"\n              value={practiceDetails.tiktok || \"\"}\n              onChange={(e) => setPracticeDetails((values) => ({ ...values, tiktok: e.target.value }))}\n            />\n            <InputWithLabel\n              label=\"LinkedIn\"\n              name=\"LinkedIn\"\n              explanatorySubtext=\"Copy and paste your LinkedIn profile link\"\n              value={practiceDetails.linkedin || \"\"}\n              onChange={(e) => setPracticeDetails((values) => ({ ...values, linkedin: e.target.value }))}\n            />\n            <InputWithLabel\n              label=\"Twitter / X\"\n              name=\"Twitter\"\n              explanatorySubtext=\"Copy and paste your Twitter profile link\"\n              value={practiceDetails.twitter || \"\"}\n              onChange={(e) => setPracticeDetails((values) => ({ ...values, twitter: e.target.value }))}\n            />\n            <InputWithLabel\n              label=\"YouTube\"\n              name=\"YouTube\"\n              explanatorySubtext=\"Copy and paste your YouTube profile link\"\n              value={practiceDetails.youtube || \"\"}\n              onChange={(e) => setPracticeDetails((values) => ({ ...values, youtube: e.target.value }))}\n            />\n          </div>\n        </EditableValue>\n      </Box>\n    </ProfileEditView>\n  )\n}\n\nexport default function ProfileEditAudience({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <Audience {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { DocumentTextIcon } from \"@heroicons/react/24/outline\"\nimport { EllipsisVerticalIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { Button, CloseButton } from \"../components/shared/Buttons\"\nimport HealMeTooltip from \"../components/shared/HealMeTooltip\"\nimport { Box, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport { UnderlinedLink } from \"../components/shared/Links\"\nimport { NewModal } from \"../components/shared/Modal\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\nimport { capitalize } from \"../utils/utils\"\n\nimport CredentialsModal, { modalId } from \"./ProfileEdit/CredentialsModal\"\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst REMOVE_CREDENTIAL_MUTATION = `\n  mutation RemoveCredential($credentialId: ID!) {\n    removeCredential(credentialId: $credentialId) {\n      result\n      errors\n    }\n  }\n`\n\nconst REORDER_CREDENTIALS_MUTATION = `\n  mutation ReorderCredentials($credentialArray: [String!]!) {\n    reorderCredentials(credentialArray: $credentialArray) {\n      result\n      errors\n    }\n  }\n`\n\nconst CredentialRow = ({ proCredential, deleteCredential }) => {\n  const fallbackFilename = proCredential.createdAt\n    ? `file_upload_${proCredential.createdAt.split(\"T\")[0].replace(/-/g, \"_\")}`\n    : \"file_upload\"\n  const suffix =\n    proCredential.state === \"pending\" ? <span className=\"flex-none text-gray-dark\"> (Pending review)</span> : null\n\n  return (\n    <>\n      <div className=\"flex items-center justify-between font-bold\">\n        <div className=\"truncate\">\n          {proCredential.credential?.name || proCredential.filestackDocumentName || fallbackFilename}\n        </div>\n        <CloseButton className=\"flex-none\" onClick={() => deleteCredential(proCredential)} />\n      </div>\n      <Typography variant=\"small\" as=\"div\" className=\"w-11/12\">\n        {proCredential.licenseNumber ? (\n          <>\n            {proCredential.licenseNumber}\n            {proCredential.stateIssued ? ` • ${capitalize(proCredential.stateIssued)}` : \"\"}\n            {suffix}\n          </>\n        ) : (\n          <div className=\"flex items-center gap-1\">\n            <DocumentTextIcon className=\"h-4 w-4 flex-none\" />\n            <span className=\"flex-1 truncate\">{proCredential.filestackDocumentName || fallbackFilename}</span>\n            {suffix}\n          </div>\n        )}\n      </Typography>\n    </>\n  )\n}\n\nconst Credentials = ({ path, proCredentials: proCredentialsProp }) => {\n  const { profileStatusData, syncProfileStatus } = useProfileStatus()\n  const [proCredentials, setProCredentials] = useState(proCredentialsProp)\n  const [credentialToDelete, setCredentialToDelete] = useState(null)\n\n  const [, removeCredential] = useMutation(REMOVE_CREDENTIAL_MUTATION)\n  const [, reorderCredentials] = useMutation(REORDER_CREDENTIALS_MUTATION)\n\n  const { showToast } = useToast()\n\n  const approvedCredentials = proCredentials.filter((proCredential) => proCredential.state === \"approved\")\n  const pendingCredentials = proCredentials.filter((proCredential) => proCredential.state === \"pending\")\n  const deleteCredentialModalId = \"delete-credential-modal\"\n\n  const deleteCredential = (credential) => {\n    showToast({\n      type: \"info\",\n      content: \"Credential was deleted successfully.\"\n    })\n    setProCredentials((credentials) => credentials.filter((c) => c.id !== credential.id))\n    NiceModal.remove(deleteCredentialModalId)\n    syncProfileStatus()\n    removeCredential({ credentialId: credential.id }).then((result) => {\n      if (result?.data?.removeCredential?.result !== \"success\") {\n        console.error(result)\n        showToast({\n          type: \"error\",\n          content:\n            \"There was an error removing your credential. Please try again or contact support if the error persists.\"\n        })\n      }\n    })\n  }\n\n  const showDeleteModal = (proCredential) => {\n    setCredentialToDelete(proCredential)\n    NiceModal.show(deleteCredentialModalId)\n  }\n\n  return (\n    <ProfileEditView path={path} profileStatusData={profileStatusData}>\n      {proCredentials.length === 0 ? (\n        <ProfilePageEmptyStateBox title=\"Credentials\" onButtonClick={() => NiceModal.show(modalId)}>\n          Add any licenses, degrees, or certifications.{\" \"}\n          <UnderlinedLink\n            href=\"https://help.heal.me/en/articles/8440296-what-credentials-should-i-add-to-my-profile\"\n            target=\"_blank\">\n            Learn more\n          </UnderlinedLink>\n        </ProfilePageEmptyStateBox>\n      ) : (\n        <div data-test-id=\"credentials\">\n          <Box>\n            <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:border-none sm:pb-4\">\n              <Typography variant=\"capitalHeading\">Approved</Typography>\n              <div data-tooltip-id=\"disabled-tooltip\">\n                <Button\n                  floatingInMobile={true}\n                  disabled={proCredentials.length >= 5}\n                  onClick={() => NiceModal.show(modalId)}>\n                  Add new\n                </Button>\n              </div>\n              {proCredentials.length >= 5 && (\n                <HealMeTooltip\n                  id=\"disabled-tooltip\"\n                  place=\"bottom\"\n                  content=\"Note: You can add a maximum of 5 credentials.\"\n                />\n              )}\n            </div>\n            <div className=\"pt-6 sm:pt-0\">\n              {approvedCredentials.length === 0 ? (\n                <Typography variant=\"subtitle\">No approved credentials yet.</Typography>\n              ) : (\n                <ReactSortable\n                  list={approvedCredentials}\n                  setList={(newPositions) => {\n                    const newCredentials = newPositions.concat(pendingCredentials)\n                    if (JSON.stringify(newCredentials) !== JSON.stringify(proCredentials)) {\n                      const newOrder = newCredentials.map((proCredential, i) =>\n                        JSON.stringify({ id: proCredential.id, position: i + 1 })\n                      )\n                      reorderCredentials({ credentialArray: newOrder }).then((result) => {\n                        if (result?.data?.reorderCredentials?.result !== \"success\") {\n                          console.error(result)\n                          showToast({\n                            type: \"error\",\n                            content:\n                              \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n                          })\n                        }\n                      })\n                      setProCredentials(newCredentials)\n                    }\n                  }}>\n                  {approvedCredentials.map((proCredential, i) => (\n                    <React.Fragment key={proCredential.id}>\n                      <div className=\"flex cursor-grab items-center\">\n                        <div\n                          className={twMerge(\n                            \"py-4\",\n                            i === approvedCredentials.length - 1 ? \"pb-0\" : i === 0 ? \"pt-0\" : \"\"\n                          )}>\n                          <EllipsisVerticalIcon className=\"mr-4 h-6 w-6 text-gray-dark\" />\n                        </div>\n                        <div\n                          className={twMerge(\n                            \"w-full border-b border-gray-light py-4\",\n                            i === approvedCredentials.length - 1 ? \"border-none pb-0\" : i === 0 ? \"pt-0\" : \"\"\n                          )}>\n                          <CredentialRow proCredential={proCredential} deleteCredential={showDeleteModal} />\n                        </div>\n                      </div>\n                    </React.Fragment>\n                  ))}\n                </ReactSortable>\n              )}\n            </div>\n          </Box>\n          {pendingCredentials.length > 0 && (\n            <Box className=\"mt-8 flex flex-col gap-4\">\n              <Typography variant=\"capitalHeading\">Pending</Typography>\n              {pendingCredentials.map((proCredential) => (\n                <div key={proCredential.id} className=\"flex items-center\">\n                  <div className=\"w-full\">\n                    <CredentialRow proCredential={proCredential} deleteCredential={showDeleteModal} />\n                  </div>\n                </div>\n              ))}\n            </Box>\n          )}\n        </div>\n      )}\n      <CredentialsModal setProCredentials={setProCredentials} />\n      <NewModal\n        id={deleteCredentialModalId}\n        header=\"Delete credential\"\n        showFooter={true}\n        onSave={() => {\n          deleteCredential(credentialToDelete)\n          setCredentialToDelete(null)\n        }}\n        cancelButtonCopy=\"No, don't delete\"\n        actionButtonType=\"destructive\"\n        actionButtonCopy=\"Yes, delete\">\n        <p>\n          This will remove the credential <b>{credentialToDelete?.credential?.name}</b> from your profile.\n        </p>\n      </NewModal>\n    </ProfileEditView>\n  )\n}\n\nexport default function ProfileEditCredentials({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <Credentials {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import { PlusIcon } from \"@heroicons/react/24/outline\"\nimport { PencilIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { FilePicker } from \"../components/shared/FileStackWidgets\"\nimport { EditableValue, Input, ShortUrlInput, TextArea } from \"../components/shared/Inputs\"\nimport { Box, Divider } from \"../components/shared/Layout\"\nimport PlacesAutocomplete from \"../components/shared/PlacesAutocomplete\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\nimport { stripUSAFromString } from \"../utils/utils\"\n\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst UPDATE_INFO_MUTATION = `\n  mutation UpdateInfo($name: String, $location: String, $locationId: String, $title: String, $headline: String, $about: String $shortLink: String) {\n    updateInfo(name: $name, location: $location, locationId: $locationId, title: $title, headline: $headline, about: $about, shortLink: $shortLink) {\n      result\n      errors\n      profileDetails { name location title headline shortLink }\n    }\n  }\n`\n\nconst UPDATE_USER_PHOTO_MUTATION = `\n  mutation UpdateUserPhoto($handle: String!) {\n    updateUserPhoto(handle: $handle) {\n      result\n      errors\n      photoUrl\n    }\n  }\n`\n\nconst Details = ({ details, path, photoUrl, allShortLinks }) => {\n  const { profileStatusData, syncProfileStatus } = useProfileStatus()\n  const [detailsValues, setDetailsValues] = useState(details)\n  const [photoUrlValue, setPhotoUrlValue] = useState(photoUrl)\n  const [lastSavedDetailsValues, setLastSavedDetailsValues] = useState(details)\n  const [openField, setOpenField] = useState(null)\n\n  const [{ fetching: infoFetching }, updateInfo] = useMutation(UPDATE_INFO_MUTATION)\n  const [{ fetching: photoFetching }, updateUserPhoto] = useMutation(UPDATE_USER_PHOTO_MUTATION)\n\n  const fetching = infoFetching || photoFetching\n\n  const { showToast } = useToast()\n\n  const { name, location, title, headline, about, shortLink } = detailsValues\n\n  const onSave = () => {\n    updateInfo(detailsValues).then((result) => {\n      setOpenField(null)\n      if (result?.data?.updateInfo?.result === \"success\") {\n        setLastSavedDetailsValues(result.data.updateInfo.profileDetails)\n        syncProfileStatus()\n        showToast(\"Your profile details have been saved.\")\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        let errorMessage = \"There was an error saving your profile details. Please try again later or contact support.\"\n        if (result.data?.updateInfo?.errors) errorMessage += ` ${result.data.updateInfo.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n\n  const onOpened = (fieldName) => {\n    setOpenField(fieldName)\n  }\n\n  const onUploadDone = (res) => {\n    updateUserPhoto({\n      handle: res.filesUploaded[0].handle\n    }).then((result) => {\n      setOpenField(null)\n      if (result?.data?.updateUserPhoto?.result === \"success\") {\n        setPhotoUrlValue(result.data.updateUserPhoto.photoUrl)\n        syncProfileStatus()\n        showToast(\"Your profile photo has been saved.\")\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        let errorMessage = \"There was an error saving your profile photo. Please try again later or contact support.\"\n        if (result.data?.updateUserPhoto?.errors) errorMessage += ` ${result.data.updateUserPhoto.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n\n  return (\n    <ProfileEditView path={path} profileStatusData={profileStatusData}>\n      <Box>\n        <div className={twMerge(\"mb-4 flex items-center justify-center\", fetching || openField ? \"opacity-50\" : \"\")}>\n          {photoUrlValue.indexOf(\"defaults\") > -1 ? (\n            <FilePicker\n              as=\"button\"\n              className={twMerge(\n                \"flex cursor-pointer flex-col items-center justify-center gap-2\",\n                fetching || openField ? \"pointer-events-none\" : \"\"\n              )}\n              onUploadDone={onUploadDone}>\n              <div className=\"flex h-20 w-20 items-center justify-center rounded-full bg-teal/[0.12]\">\n                <PlusIcon className=\"h-6 w-6 text-teal\" />\n              </div>\n              <div className=\"font-bold text-teal\">Upload headshot</div>\n            </FilePicker>\n          ) : (\n            <div className=\"relative flex h-32 w-32 items-center justify-center\">\n              <img className=\"h-full w-full rounded-xl\" src={photoUrlValue} />\n              <FilePicker\n                className={twMerge(\n                  \"absolute -right-5 flex h-10 w-10 items-center justify-center rounded-full border border-gray bg-white\",\n                  fetching || openField ? \"pointer-events-none\" : \"\"\n                )}\n                onUploadDone={onUploadDone}>\n                <PencilIcon className=\"h-5 w-5 text-gray-dark\" />\n              </FilePicker>\n            </div>\n          )}\n        </div>\n        <div>\n          <EditableValue\n            name=\"Name\"\n            value={name}\n            saveDisabled={name === lastSavedDetailsValues.name || name?.length < 2}\n            disabled={fetching || (openField && openField !== \"Name\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setDetailsValues(lastSavedDetailsValues)\n            }}>\n            <Input\n              name=\"Name\"\n              value={name || \"\"}\n              onChange={(e) => setDetailsValues((values) => ({ ...values, name: e.target.value }))}\n            />\n          </EditableValue>\n          <Divider />\n          <EditableValue\n            name=\"Location\"\n            hint=\"Where is your practice located?\"\n            value={location}\n            disabled={fetching || (openField && openField !== \"Location\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setDetailsValues(lastSavedDetailsValues)\n            }}>\n            <PlacesAutocomplete\n              apiKey={process.env.GOOGLE_MAPS_API_KEY}\n              name=\"Location\"\n              types={[\"locality\", \"administrative_area_level_3\"]}\n              onPlaceSelected={(place) => {\n                setDetailsValues((values) => ({\n                  ...values,\n                  location: stripUSAFromString(place.formatted_address),\n                  locationId: place.place_id\n                }))\n              }}\n              defaultValue={location ? stripUSAFromString(location) : \"\"}\n            />\n          </EditableValue>\n          <Divider />\n          <EditableValue\n            name=\"Title\"\n            hint=\"Set what your professional title is. Pro-tip: Keep this as short and clear as possible so it’s easily understood by clients.\"\n            value={title}\n            saveDisabled={title === lastSavedDetailsValues.title || title?.length < 2}\n            disabled={fetching || (openField && openField !== \"Title\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setDetailsValues(lastSavedDetailsValues)\n            }}>\n            <Input\n              name=\"Title\"\n              placeholder=\"Ex: Licensed Massage Therapist\"\n              value={title || \"\"}\n              onChange={(e) => setDetailsValues((values) => ({ ...values, title: e.target.value }))}\n            />\n          </EditableValue>\n          <Divider />\n          <EditableValue\n            name=\"Headline\"\n            hint=\"Share your approach to helping your clients.\"\n            value={headline}\n            saveDisabled={headline === lastSavedDetailsValues.headline || headline?.length < 2}\n            disabled={fetching || (openField && openField !== \"Headline\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setDetailsValues(lastSavedDetailsValues)\n            }}>\n            <TextArea\n              name=\"Headline\"\n              placeholder=\"Ex: I help people to heal and find their inner wisdom, and make meaningful, lasting change in their lives.\"\n              value={headline || \"\"}\n              onChange={(e) => setDetailsValues((values) => ({ ...values, headline: e.target.value }))}\n              maxLength={200}\n            />\n          </EditableValue>\n          <Divider />\n          <EditableValue\n            name=\"About me\"\n            value={about}\n            hint=\"Add in a short description about your background and your approach to working with your clients.\"\n            saveDisabled={about === lastSavedDetailsValues.about || about?.length < 2}\n            disabled={fetching || (openField && openField !== \"About me\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setDetailsValues(lastSavedDetailsValues)\n            }}>\n            <TextArea\n              name=\"About me\"\n              value={about || \"\"}\n              onChange={(e) => setDetailsValues((values) => ({ ...values, about: e.target.value }))}\n            />\n          </EditableValue>\n          <Divider />\n          <EditableValue\n            name=\"Short link\"\n            hint=\"Set your short profile link so it’s easy to share your profile.\"\n            value={shortLink ? `https://heal.me/${shortLink}` : null}\n            saveDisabled={\n              allShortLinks.includes(shortLink) ||\n              shortLink?.length < 1 ||\n              shortLink === lastSavedDetailsValues.shortLink\n            }\n            disabled={fetching || (openField && openField !== \"Short link\")}\n            onOpened={onOpened}\n            onSave={onSave}\n            onCancel={() => {\n              setOpenField(null)\n              setDetailsValues(lastSavedDetailsValues)\n            }}>\n            <>\n              <ShortUrlInput\n                name=\"Short link\"\n                value={shortLink || \"\"}\n                onChange={(e) => {\n                  const newValue = e.target.value.toLowerCase().replace(/[^a-z0-9_-]/g, \"\")\n                  setDetailsValues((values) => ({ ...values, shortLink: newValue }))\n                }}\n              />\n              <Typography variant=\"micro\">Only lowercase letters, numbers, hyphen and underscore allowed</Typography>\n              {shortLink?.length >= 1 && shortLink !== lastSavedDetailsValues.shortLink && (\n                <>\n                  {allShortLinks.includes(shortLink) ? (\n                    <div className=\"mt-2 text-red\">This short link is already in use.</div>\n                  ) : (\n                    <div className=\"mt-2 text-green\">🎉 This short link is available.</div>\n                  )}\n                </>\n              )}\n            </>\n          </EditableValue>\n        </div>\n      </Box>\n    </ProfileEditView>\n  )\n}\n\nexport default function ProfileEditDetails({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <Details {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import React, { useState } from \"react\"\nimport { useHits, useSearchBox } from \"react-instantsearch\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Label, SearchInput } from \"../../components/shared/Inputs\"\nimport { Flyout } from \"../../components/shared/Layout\"\nimport { EndorsementPill } from \"../../components/shared/Pill\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst UPDATE_SKILLS = `\n  mutation UpdateSkills($skills: [String!]) {\n    updateSkills(skills: $skills) {\n      result\n      skills {\n        id\n        endorsementsCount\n        specialty { id name }\n      }\n      errors\n    }\n  }\n`\n\nconst EndorsementButton = ({ specialty, active, onClick, onCloseButtonClick }) => (\n  <EndorsementPill\n    value={specialty.id.toString()}\n    active={active}\n    className=\"mb-0 block\"\n    onClick={onClick}\n    onCloseButtonClick={onCloseButtonClick}>\n    {specialty.name}\n  </EndorsementPill>\n)\n\nexport const EndorsementsFlyout = ({ specialtiesByLetter, skills, setSkills, visible, closeFlyout }) => {\n  const { syncProfileStatus } = useProfileStatus()\n  const [searchValue, setSearchValue] = useState(\"\")\n  const [selectedSpecialties, setSelectedSpecialties] = useState(skills.map((skill) => skill.specialty.id.toString()))\n\n  const [{ fetching }, updateSkills] = useMutation(UPDATE_SKILLS)\n\n  const { showToast } = useToast()\n  const { refine } = useSearchBox()\n  const { hits } = useHits()\n\n  const setQuery = (newQuery) => {\n    setSearchValue(newQuery)\n    refine(newQuery)\n  }\n\n  const onSpecialtyClick = (e) => {\n    setSelectedSpecialties((specialties) => {\n      const newSpecialties = [...specialties]\n      const specialtyId = e.target.value\n\n      if (newSpecialties.includes(specialtyId)) {\n        const index = newSpecialties.indexOf(specialtyId)\n        newSpecialties.splice(index, 1)\n      } else {\n        newSpecialties.push(specialtyId)\n      }\n      return newSpecialties\n    })\n  }\n\n  const onSave = () => {\n    updateSkills({ skills: Array.from(selectedSpecialties) }).then((result) => {\n      if (result?.data?.updateSkills?.result === \"success\") {\n        setSkills(result.data.updateSkills.skills)\n        closeFlyout()\n        syncProfileStatus()\n        showToast(\"Successfully updated keywords\")\n      } else {\n        showToast({ type: \"error\", content: \"Failed to update keywords\" })\n        console.error(result)\n      }\n    })\n  }\n\n  return (\n    <Flyout\n      visible={visible}\n      closeFlyout={closeFlyout}\n      header=\"Add keywords\"\n      footer={\n        <div className=\"flex items-center justify-end gap-4\">\n          <Button type=\"tertiary\" onClick={closeFlyout} disabled={fetching}>\n            Cancel\n          </Button>\n          <Button type=\"primary\" onClick={onSave} disabled={fetching}>\n            Save\n          </Button>\n        </div>\n      }>\n      <div className=\"flex flex-col gap-4\">\n        <div>\n          <Label htmlFor=\"endorsements-search\">Search for topics</Label>\n          <SearchInput\n            id=\"endorsements-search\"\n            containerClassName=\"w-full\"\n            value={searchValue}\n            explanatorySubtext={\n              <div className=\"flex justify-between\">\n                <span>Ex: Anxiety, Back pain, etc.</span>\n                <span className=\"font-bold\">{selectedSpecialties.length}/50 selected</span>\n              </div>\n            }\n            onChange={(e) => setQuery(e.target.value)}\n          />\n        </div>\n        {searchValue === \"\" ? (\n          <>\n            {specialtiesByLetter.map(({ letter, specialties }) => (\n              <div key={letter}>\n                <div className=\"mb-2 text-sm font-bold uppercase text-gray-dark\">{letter}</div>\n                <div className=\"flex flex-wrap gap-2\">\n                  {specialties.map((specialty) => (\n                    <EndorsementButton\n                      specialty={specialty}\n                      key={specialty.id}\n                      active={selectedSpecialties.includes(specialty.id.toString())}\n                      onClick={onSpecialtyClick}\n                    />\n                  ))}\n                </div>\n              </div>\n            ))}\n          </>\n        ) : (\n          <div className=\"flex flex-wrap gap-2\">\n            {hits.map((hit) => {\n              const specialty = { id: hit.objectID, name: hit.name }\n              return (\n                <EndorsementButton\n                  key={specialty.id}\n                  specialty={specialty}\n                  active={selectedSpecialties.includes(specialty.id)}\n                  onClick={onSpecialtyClick}\n                />\n              )\n            })}\n            {hits.length === 0 && <div>No results found</div>}\n          </div>\n        )}\n      </div>\n    </Flyout>\n  )\n}\n","import React, { useState } from \"react\"\nimport { Configure } from \"react-instantsearch\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport HealMeTooltip from \"../components/shared/HealMeTooltip\"\nimport { Box, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport { UnderlinedLink } from \"../components/shared/Links\"\nimport { EndorsementPill } from \"../components/shared/Pill\"\nimport { AlgoliaSearchProvider } from \"../components/shared/SearchInputs\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\n\nimport { EndorsementsFlyout } from \"./ProfileEdit/EndorsementsFlyout\"\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst DELETE_SKILLS = `\n  mutation DeleteSkills($skillId: String!) {\n    deleteSkills(skillId: $skillId) {\n      result\n      skills {\n        id\n        endorsementsCount\n        specialty { id name }\n      }\n      errors\n    }\n  }\n`\n\nconst MOVE_SKILLS = `\n  mutation MoveSkills($skillArray: [String!]!) {\n    moveSkills(skillArray: $skillArray) {\n      result\n      skills {\n        id\n        endorsementsCount\n        specialty { id name }\n      }\n      errors\n    }\n  }\n`\n\nconst Endorsements = ({ path, skills, specialtiesByLetter }) => {\n  const { profileStatusData } = useProfileStatus()\n  const [skillsState, setSkillsState] = useState(skills)\n  const [flyoutVisible, setFlyoutVisible] = useState(false)\n\n  const [, deleteSkills] = useMutation(DELETE_SKILLS)\n  const [, moveSkills] = useMutation(MOVE_SKILLS)\n\n  const { showToast } = useToast()\n\n  const removeSkill = (skill) => {\n    deleteSkills({ skillId: skill.id.toString() }).then((result) => {\n      if (result?.data?.deleteSkills?.result === \"success\") {\n        setSkillsState(result.data.deleteSkills.skills)\n        setFlyoutVisible(false)\n        showToast(\"Successfully deleted endorsement topic\")\n      } else {\n        showToast({ type: \"error\", content: \"Failed to delete endorsement topic\" })\n        console.error(result)\n      }\n    })\n\n    const index = skillsState.indexOf(skill)\n    if (index !== -1) {\n      const copySkills = [...skillsState]\n      copySkills.splice(index, 1)\n      setSkillsState(copySkills)\n    }\n  }\n\n  return (\n    <ProfileEditView path={path} profileStatusData={profileStatusData}>\n      {skillsState.length === 0 ? (\n        <ProfilePageEmptyStateBox title=\"Endorsements\" onButtonClick={() => setFlyoutVisible(true)}>\n          Why do your clients come to see you? List these here.{\" \"}\n          <UnderlinedLink\n            href=\"https://help.heal.me/en/articles/8441399-what-are-endorsements-and-which-should-i-pick\"\n            target=\"_blank\">\n            Learn more\n          </UnderlinedLink>\n        </ProfilePageEmptyStateBox>\n      ) : (\n        <>\n          <Box data-test-id=\"endorsements\">\n            <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:border-none sm:pb-0\">\n              <Typography variant=\"capitalHeading\">Endorsements</Typography>\n              <div data-tooltip-id=\"disabled-tooltip\">\n                <Button floatingInMobile={true} disabled={skills.length >= 50} onClick={() => setFlyoutVisible(true)}>\n                  Add new\n                </Button>\n              </div>\n              {skills.length >= 50 && (\n                <HealMeTooltip\n                  id=\"disabled-tooltip\"\n                  place=\"bottom\"\n                  content=\"Note: You can add a maximum of 50 credentials.\"\n                />\n              )}\n            </div>\n            <Typography variant=\"subtitle\" className=\"mt-6 sm:mt-2\">\n              Drag to re-order each endorsement.\n            </Typography>\n            <ReactSortable\n              className=\"mt-6 flex flex-wrap gap-2 sm:mt-4\"\n              list={skillsState}\n              setList={(newSkills) => {\n                if (JSON.stringify(newSkills) !== JSON.stringify(skillsState)) {\n                  const newOrder = newSkills.map((skill, i) => JSON.stringify({ id: skill.id, position: i + 1 }))\n                  setSkillsState(newSkills)\n                  moveSkills({ skillArray: newOrder }).then((result) => {\n                    if (result?.data?.moveSkills?.result !== \"success\") {\n                      console.error(result)\n                      showToast({\n                        type: \"error\",\n                        content:\n                          \"There was error reordering your endorsement topics. Please try again later or contact support if the error persists.\"\n                      })\n                    }\n                  })\n                }\n              }}>\n              {skillsState.map((skill) => (\n                <EndorsementPill key={skill.id} draggable active onCloseButtonClick={() => removeSkill(skill)}>\n                  {skill.specialty.name}\n                </EndorsementPill>\n              ))}\n            </ReactSortable>\n          </Box>\n        </>\n      )}\n      <EndorsementsFlyout\n        specialtiesByLetter={specialtiesByLetter}\n        skills={skillsState}\n        setSkills={setSkillsState}\n        visible={flyoutVisible}\n        closeFlyout={() => setFlyoutVisible(false)}\n      />\n    </ProfileEditView>\n  )\n}\n\nexport default function ProfileEditEndorsements({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <AlgoliaSearchProvider indexName=\"Specialty\">\n        <Configure hitsPerPage={50} filters=\"NOT ordered_kind:1\" />\n        <Endorsements {...props} />\n      </AlgoliaSearchProvider>\n    </ProfileEditProvider>\n  )\n}\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\n\nimport Badge from \"../components/shared/Badge\"\nimport { Button } from \"../components/shared/Buttons\"\nimport { Box, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\n\nimport DisplayAvailableTimes from \"./ProfileEdit/DisplayAvailableTimes\"\nimport LocationFlyout from \"./ProfileEdit/LocationFlyout\"\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst Locations = ({ path, locations, defaultAvailableTimes }) => {\n  const { profileStatusData } = useProfileStatus()\n  const newLocationDefaults = { availableTimes: defaultAvailableTimes, kind: \"office\", virtualType: \"video\" }\n  const [locationsState, setLocationsState] = useState(locations)\n  const [location, setLocation] = useState(newLocationDefaults)\n  const [flyoutVisible, setFlyoutVisible] = useState(false)\n\n  const addNewLocation = () => {\n    setFlyoutVisible(true)\n    setLocation(newLocationDefaults)\n  }\n\n  return (\n    <>\n      <ProfileEditView path={path} profileStatusData={profileStatusData}>\n        {locationsState.length === 0 ? (\n          <ProfilePageEmptyStateBox title=\"Locations and hours\" onButtonClick={addNewLocation}>\n            Add any locations you offer and set your availability for each.\n          </ProfilePageEmptyStateBox>\n        ) : (\n          <Box data-test-id=\"locations\">\n            <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:hidden\">\n              <Typography variant=\"capitalHeading\">Locations</Typography>\n              <Button onClick={addNewLocation}>Add new</Button>\n            </div>\n            <Button onClick={addNewLocation} floatingInMobile={true} className=\"hidden sm:block\">\n              Add new\n            </Button>\n            <div className=\"mt-6 flex flex-col gap-4 sm:mt-0\">\n              {locationsState.map((location) => {\n                const title =\n                  location.kind === \"virtual\"\n                    ? \"Virtual office\"\n                    : location.kind === \"home\"\n                    ? \"In-home\"\n                    : location.address\n                const subTitle =\n                  location.kind === \"virtual\"\n                    ? `${capitalize(location.virtualType)} calls`\n                    : location.kind === \"home\"\n                    ? \"\"\n                    : `${location.city}, ${location.stateAbbreviation}`\n                return (\n                  <Box key={location.id}>\n                    {location.state === \"disabled\" && (\n                      <div className=\"mb-4\">\n                        <Badge type=\"error\">Disabled</Badge>\n                      </div>\n                    )}\n                    <div className=\"flex items-center justify-between\">\n                      <Typography variant=\"title\">{title}</Typography>\n                      <Button\n                        type=\"link\"\n                        onClick={() => {\n                          setLocation(location)\n                          setFlyoutVisible(true)\n                        }}>\n                        Manage\n                      </Button>\n                    </div>\n                    <Typography variant=\"smSubtitle\">{subTitle}</Typography>\n                    <DisplayAvailableTimes locationOrService={location} className=\"mt-4\" />\n                  </Box>\n                )\n              })}\n            </div>\n          </Box>\n        )}\n      </ProfileEditView>\n      <LocationFlyout\n        key={location.id}\n        visible={flyoutVisible}\n        closeFlyout={() => setFlyoutVisible(false)}\n        location={location}\n        setLocation={setLocation}\n        locations={locationsState}\n        setLocations={setLocationsState}\n      />\n    </>\n  )\n}\n\nexport default function ProfileEditLocations({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <Locations {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import { XMarkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport { FilePicker } from \"../components/shared/FileStackWidgets\"\nimport { Box, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\n\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst REMOVE_GALLERY_IMAGE_MUTATION = `\n  mutation RemoveGalleryImage($galleryId: ID!) {\n    removeGalleryImage(galleryId: $galleryId) {\n      result\n      errors\n    }\n  }\n`\n\nconst ADD_GALLERY_IMAGE_MUTATION = `\n  mutation AddGalleryImage($handles: [String!]!) {\n    addGalleryImage(handles: $handles) {\n      result\n      errors\n      galleryImages {\n        id\n        defaultPhotoUrl\n      }\n    }\n  }\n`\n\nconst REORDER_GALLERY_IMAGES_MUTATION = `\n  mutation ReorderGalleryImages($photosArray: [String!]!) {\n    reorderGalleryImages(photosArray: $photosArray) {\n      result\n    }\n  }\n`\n\nconst Photos = ({ path, galleryImages }) => {\n  const { profileStatusData, syncProfileStatus } = useProfileStatus()\n  const [photos, setPhotos] = useState(galleryImages)\n  const [{ fetching: removeImageFetching }, removeGalleryImage] = useMutation(REMOVE_GALLERY_IMAGE_MUTATION)\n  const [{ fetching: addImagesFetching }, addGalleryImage] = useMutation(ADD_GALLERY_IMAGE_MUTATION)\n  const [, reorderGalleryImages] = useMutation(REORDER_GALLERY_IMAGES_MUTATION)\n\n  const { showToast } = useToast()\n\n  const loading = removeImageFetching || addImagesFetching\n  const disabled = loading\n\n  const onUploadDone = (res) => {\n    addGalleryImage({\n      handles: res.filesUploaded.map((file) => file.handle)\n    }).then((result) => {\n      if (result?.data?.addGalleryImage?.result === \"success\") {\n        setPhotos([...photos, ...result.data.addGalleryImage.galleryImages])\n        showToast(\"Your photo has been saved.\")\n        syncProfileStatus()\n      } else {\n        console.error(result)\n        let errorMessage = \"There was an error saving your profile photo. Please try again later or contact support.\"\n        if (result.data?.addGalleryImage?.errors) errorMessage += ` ${result.data.addGalleryImage.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n\n  const removePhoto = (galleryId) => {\n    removeGalleryImage({ galleryId }).then((result) => {\n      if (result?.data?.removeGalleryImage?.result === \"success\") {\n        setPhotos(photos.filter((photo) => photo.id !== galleryId))\n        showToast(\"Successfully deleted photo\")\n        syncProfileStatus()\n      } else {\n        showToast({ type: \"error\", content: \"Failed to delete photo\" })\n        console.error(result)\n      }\n    })\n  }\n\n  return (\n    <ProfileEditView path={path} profileStatusData={profileStatusData}>\n      <div className={loading ? \"pointer-events-none opacity-25\" : \"\"}>\n        {photos.length === 0 ? (\n          <ProfilePageEmptyStateBox title=\"Photos\">\n            Add photos that help clients see what working with you is like.\n            <FilePicker maxFiles={10} onUploadDone={onUploadDone} disabled={disabled}>\n              <Button className=\"mt-4\" size=\"small\" disabled={disabled}>\n                Add now\n              </Button>\n            </FilePicker>\n          </ProfilePageEmptyStateBox>\n        ) : (\n          <Box>\n            <div className=\"flex items-center justify-between border-b border-gray-light pb-6\">\n              <Typography variant=\"capitalHeading\">Photos</Typography>\n              <div data-tooltip-id=\"disabled-tooltip\">\n                <FilePicker maxFiles={10} onUploadDone={onUploadDone} disabled={disabled}>\n                  <Button size=\"small\" disabled={disabled}>\n                    Add new\n                  </Button>\n                </FilePicker>\n              </div>\n            </div>\n            <div className=\"my-4\" />\n            <Typography className=\"my-4\" variant=\"subtitle\">\n              Drag to re-order your photos.\n            </Typography>\n            <ReactSortable\n              className=\"grid grid-cols-2 gap-6\"\n              list={photos}\n              setList={(newPositions) => {\n                if (JSON.stringify(newPositions) !== JSON.stringify(photos)) {\n                  const newOrder = newPositions.map((photo, i) => JSON.stringify({ id: photo.id, position: i + 1 }))\n                  reorderGalleryImages({ photosArray: newOrder }).then((result) => {\n                    if (result?.data?.reorderGalleryImages?.result !== \"success\") {\n                      console.error(result)\n                      showToast({\n                        type: \"error\",\n                        content:\n                          \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n                      })\n                    }\n                  })\n                  setPhotos(newPositions)\n                }\n              }}>\n              {photos.map((photo) => (\n                <div key={photo.id} className=\"relative aspect-square cursor-grab\">\n                  <button\n                    className=\"absolute right-4 top-4 flex h-10 w-10 items-center justify-center rounded-full border border-gray bg-white sm:right-2 sm:top-2 sm:h-6 sm:w-6\"\n                    onClick={() => removePhoto(photo.id)}>\n                    <XMarkIcon className=\"h-6 w-6 stroke-2 text-gray-dark sm:h-5 sm:w-5\" />\n                  </button>\n                  <img className=\"h-full w-full\" src={photo.defaultPhotoUrl} alt=\"\" />\n                </div>\n              ))}\n            </ReactSortable>\n          </Box>\n        )}\n      </div>\n    </ProfileEditView>\n  )\n}\n\nexport default function ProfileEditPhotos({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <Photos {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import { EllipsisVerticalIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport HealMeTooltip from \"../components/shared/HealMeTooltip\"\nimport { Box, Divider, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport { UnderlinedLink } from \"../components/shared/Links\"\nimport Typography from \"../components/shared/Typography\"\nimport { PracticeProvider } from \"../contexts/PracticeContext\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\n\nimport ServiceCard from \"./PortalServices/ServiceCard\"\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\nimport ServiceFlyout from \"./ProfileEdit/ServiceFlyout\"\n\nconst REORDER_SERVICES_MUTATION = `\n  mutation ReorderServices($servicesArray: [String!]!) {\n    reorderServices(servicesArray: $servicesArray) {\n      result\n      errors\n    }\n  }\n`\n\nconst maxNumberOfServices = 25\n\nconst Services = ({ path, services, activeLocations, defaultAvailableTimes }) => {\n  const { profileStatusData } = useProfileStatus()\n  const newServiceDefaults = { locationIds: [], amountCents: 0, variations: [], name: \"\", description: \"\" }\n  const newPackageDefaults = {\n    package: true,\n    numberOfSessions: 5,\n    locationIds: [],\n    amountCents: 0,\n    variations: [],\n    name: \"\",\n    description: \"\"\n  }\n  const [servicesState, setServicesState] = useState(services)\n  const [service, setService] = useState(newServiceDefaults)\n  const [flyoutVisible, setFlyoutVisible] = useState(false)\n  const { showToast } = useToast()\n\n  const [, reorderServices] = useMutation(REORDER_SERVICES_MUTATION)\n\n  const addNewService = () => {\n    setFlyoutVisible(true)\n    setService(newServiceDefaults)\n  }\n\n  const addNewPackage = () => {\n    setFlyoutVisible(true)\n    setService(newPackageDefaults)\n  }\n\n  const editService = (service) => {\n    setService(service)\n    setFlyoutVisible(true)\n  }\n\n  const freeServices = servicesState.filter((service) => service.amountCents === 0)\n  const paidServices = servicesState.filter((service) => service.amountCents > 0)\n\n  return (\n    <>\n      <ProfileEditView path={path} profileStatusData={profileStatusData}>\n        {activeLocations.length === 0 ? (\n          <ProfilePageEmptyStateBox title=\"Services\">\n            You need to <UnderlinedLink href=\"/portal/profile/locations\">add a location</UnderlinedLink> first in order\n            to add services.\n          </ProfilePageEmptyStateBox>\n        ) : servicesState.length === 0 ? (\n          <ProfilePageEmptyStateBox title=\"Services\" onButtonClick={addNewService}>\n            Add a free service and any paid services you offer.\n          </ProfilePageEmptyStateBox>\n        ) : (\n          <Box data-test-id=\"services\">\n            <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:hidden\">\n              <Typography variant=\"capitalHeading\">Services</Typography>\n              <div className=\"flex flex-row\" data-tooltip-id=\"disabled-tooltip\">\n                <Button\n                  floatingInMobile={true}\n                  disabled={services.length >= maxNumberOfServices}\n                  onClick={addNewService}\n                  className=\"mr-4\">\n                  Add service\n                </Button>\n                <Button\n                  floatingInMobile={true}\n                  disabled={services.length >= maxNumberOfServices}\n                  onClick={addNewPackage}\n                  className=\"sm:hidden\">\n                  Add package\n                </Button>\n              </div>\n              {services.length >= maxNumberOfServices && (\n                <HealMeTooltip\n                  id=\"disabled-tooltip\"\n                  place=\"bottom\"\n                  content={`Note: You can add a maximum of ${maxNumberOfServices} services.`}\n                />\n              )}\n            </div>\n            {services.length < maxNumberOfServices && (\n              <Button floatingInMobile={true} onClick={addNewService} className=\"hidden sm:block\">\n                Add new\n              </Button>\n            )}\n            <div className=\"mt-6 flex flex-col gap-4 sm:mt-0\">\n              {freeServices.map((service) => (\n                <ServiceCard key={service.id} service={service} onClick={() => editService(service)} />\n              ))}\n              {paidServices.length > 0 && (\n                <>\n                  {freeServices.length > 0 ? <Divider className=\"sm:my-4\" /> : null}\n                  <ReactSortable\n                    className=\"flex flex-col gap-4\"\n                    list={paidServices}\n                    setList={(newPositions) => {\n                      const newServices = freeServices.concat(newPositions)\n                      if (JSON.stringify(newServices) !== JSON.stringify(servicesState)) {\n                        const servicesArray = newServices.map((service, i) =>\n                          JSON.stringify({ id: service.id, position: i + 1 })\n                        )\n                        reorderServices({ servicesArray }).then((result) => {\n                          if (result?.data?.reorderServices?.result !== \"success\") {\n                            console.error(result)\n                            showToast({\n                              type: \"error\",\n                              content:\n                                \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n                            })\n                          }\n                        })\n                        setServicesState(newServices)\n                      }\n                    }}>\n                    {paidServices.map((service) => (\n                      <div key={service.id} className=\"flex cursor-grab items-center\">\n                        <EllipsisVerticalIcon className=\"mr-4 h-6 w-6 text-gray-dark\" />\n                        <ServiceCard service={service} onClick={() => editService(service)} />\n                      </div>\n                    ))}\n                  </ReactSortable>\n                </>\n              )}\n            </div>\n          </Box>\n        )}\n      </ProfileEditView>\n      <ServiceFlyout\n        visible={flyoutVisible}\n        closeFlyout={() => setFlyoutVisible(false)}\n        service={service}\n        setService={setService}\n        services={servicesState}\n        setServices={setServicesState}\n        activeLocations={activeLocations}\n        defaultAvailableTimes={defaultAvailableTimes}\n      />\n    </>\n  )\n}\n\nexport default function ProfileEditServices({ profileStatusData, ...props }) {\n  return (\n    <PracticeProvider>\n      <ProfileEditProvider profileStatusData={profileStatusData}>\n        <Services {...props} />\n      </ProfileEditProvider>\n    </PracticeProvider>\n  )\n}\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport DatePicker from \"../../components/shared/DatePicker\"\nimport { InputWithLabel, TextArea, Select, Label } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst IMPORT_REVIEW_MUTATION = `\n  mutation ProImportReview($rating: Int!, $review: String, $firstName: String!, $phone: String, $createdAt: String) {\n    proImportReview(rating: $rating, review: $review, firstName: $firstName, phone: $phone, createdAt: $createdAt) {\n      result\n      errors\n    }\n  }\n`\n\nexport default function ProImportReviews() {\n  const { showToast } = useToast()\n\n  const [{ fetching }, importReview] = useMutation(IMPORT_REVIEW_MUTATION)\n\n  const reviewDefaults = {\n    rating: 5,\n    review: \"\",\n    firstName: \"\",\n    phone: \"\",\n    createdAt: dayjs()\n  }\n\n  const [newReview, setNewReview] = useState(reviewDefaults)\n\n  const saveEnabled = !!(newReview.rating && newReview.firstName && newReview.createdAt && newReview.phone)\n\n  const onMutationComplete = (result) => {\n    setNewReview(reviewDefaults)\n\n    if (result?.data?.proImportReview?.result === \"success\") {\n      showToast(`We sent ${newReview.firstName} a request to confirm this review.`)\n    } else {\n      console.error(result)\n      let errorMessage = \"There was an error adding this review.\"\n      if (result.data?.proImportReview?.errors) errorMessage += ` ${result.data.proImportReview.errors}`\n      showToast({\n        type: \"error\",\n        content: errorMessage\n      })\n    }\n  }\n\n  const today = new Date()\n  today.setHours(0, 0, 0, 0)\n\n  return (\n    <div className=\"mt-8 flex flex-row sm:flex-col\">\n      <div className=\"min_md:mr-8 min_md:w-[572px]\">\n        <div className=\"rounded-lg border border-gray-light p-8 sm:w-full\">\n          <Label className=\"mb-2\">Review text</Label>\n          <TextArea\n            placeholder=\"\"\n            rows=\"3\"\n            onChange={(e) => setNewReview({ ...newReview, review: e.target.value })}\n            value={newReview.review}\n          />\n          <Typography variant=\"small\" className=\"text-gray-dark\">\n            Copy & paste or type in the text your client wrote for you.\n          </Typography>\n\n          <div className=\"grid grid-cols-2 gap-2 md:grid-cols-1\">\n            <div>\n              <Label className=\"mb-2 mt-4\">Date</Label>\n              <DatePicker\n                id=\"date-picker\"\n                selected={dayjs(newReview.createdAt).toDate()}\n                onChange={(date) => setNewReview({ ...newReview, createdAt: date })}\n                maxDate={today}\n              />\n            </div>\n            <div>\n              <Label className=\"mb-2 mt-4\">Rating</Label>\n              <Select\n                options={[\n                  { label: \"1\", value: 1 },\n                  { label: \"2\", value: 2 },\n                  { label: \"3\", value: 3 },\n                  { label: \"4\", value: 4 },\n                  { label: \"5\", value: 5 }\n                ]}\n                onChange={(e) => setNewReview({ ...newReview, rating: parseInt(e.target.value) })}\n                value={newReview.rating}\n              />\n            </div>\n            <InputWithLabel\n              label=\"First name\"\n              value={newReview.firstName}\n              onChange={(e) => setNewReview({ ...newReview, firstName: e.target.value })}\n              className=\"mt-2\"\n            />\n            <InputWithLabel\n              label=\"Phone\"\n              type=\"phone\"\n              value={newReview.phone}\n              onChange={(e) => setNewReview({ ...newReview, phone: e.target.value })}\n              className=\"mt-2\"\n            />\n          </div>\n\n          <div className=\"mt-8 block w-full text-right\">\n            <Button\n              type=\"primary\"\n              disabled={!saveEnabled || fetching}\n              onClick={() => {\n                importReview(newReview).then(onMutationComplete)\n              }}>\n              Send confirmation\n            </Button>\n          </div>\n        </div>\n      </div>\n      <div className=\"w-[360px] md:mt-8 sm:w-full\">\n        <div className=\"rounded-lg border border-gray-light p-8\">\n          <Typography variant=\"body\" className=\"font-semibold\">\n            Do you have already have reviews?\n          </Typography>\n          <Typography variant=\"subtitle\" className=\"mt-2\">\n            If you’ve gotten some on your website, Google, etc., fill this out and we’ll send a request for your clients\n            to confirm their previous review.\n          </Typography>\n        </div>\n      </div>\n    </div>\n  )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { XMarkIcon, DocumentDuplicateIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Badge from \"../../components/shared/Badge\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport HealMeTable from \"../../components/shared/HealMeTable\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatShortDate, formatPhone, copyToClipboard } from \"../../utils/utils\"\n\nconst RESEND_PRO_REVIEW_REQUEST = `\n  mutation ResendProReviewRequest($clientId: ID, $appointmentId: ID) {\n    resendProReviewRequest(clientId: $clientId, appointmentId: $appointmentId) {\n      result\n      errors\n    }\n  }\n`\n\nconst DISMISS_REVIEW_REQUEST = `\n  mutation DismissReviewRequest($clientId: ID, $appointmentId: ID) {\n    dismissReviewRequest(clientId: $clientId, appointmentId: $appointmentId) {\n      result\n      errors\n    }\n  }\n`\n\nexport default function ProReviewRequestsTable({ clientRequests }) {\n  const handleCopy = async (text) => {\n    await copyToClipboard(text, showToast)\n  }\n\n  const [requests, setRequests] = useState(clientRequests)\n  const [reviewToDismiss, setReviewToDismiss] = useState()\n\n  const [, dismissReviewRequest] = useMutation(DISMISS_REVIEW_REQUEST)\n  const [, resendProReviewRequest] = useMutation(RESEND_PRO_REVIEW_REQUEST)\n  const { showToast } = useToast()\n\n  const requestColumns = [\n    {\n      accessor: \"firstName\",\n      Header: \"Client\",\n      className: \"w-2/12 min-w-[200px] pr-6\",\n      Cell: (props) => (\n        <>\n          <span>{props.cell.value}</span>\n          {props.cell.row.original.reviewRequireConfirmation && (\n            <span className=\"mt-2 block\">\n              <Badge type=\"info\">Imported</Badge>\n            </span>\n          )}\n        </>\n      )\n    },\n    {\n      accessor: \"email\",\n      Header: \"Email/Phone\",\n      className: \"w-1/6 min-w-[120px] pr-6\",\n      Cell: (props) => {\n        const client = props.cell.row.original\n        if (client.phone) {\n          return <span className=\"text-gray-dark\">{formatPhone(client.phone)}</span>\n        } else {\n          return <span className=\"text-gray-dark\"> {client.email} </span>\n        }\n      }\n    },\n    {\n      accessor: \"reviewRequestedAt\",\n      Header: \"Date requested\",\n      className: \"w-2/5 max-w-[700px] min-w-[240px] pr-6\",\n      Cell: (props) => <span className=\"text-gray-dark\">{formatShortDate(props.cell.value)}</span>\n    },\n    {\n      accessor: \"id\",\n      Header: \"Action\",\n      className: \"w-3/12 min-w-[80px]\",\n      Cell: (props) => (\n        <div className=\"flex flex-row\">\n          <a\n            className=\"mr-6 flex flex-row items-center font-semibold text-gray-dark sm:mb-4 sm:mr-0 sm:flex-col\"\n            onClick={() => handleCopy(props.cell.row.original.reviewLink)}>\n            {\" \"}\n            Copy link <DocumentDuplicateIcon className=\"ml-2 h-5 w-5 sm:ml-0\" />\n          </a>\n          <a\n            className=\"mr-4 font-bold text-teal\"\n            onClick={() => {\n              resendProReviewRequest({\n                clientId: props.cell.row.original.clientId,\n                appointmentId: props.cell.row.original.appointmentId\n              }).then((result) => {\n                if (result.data.resendProReviewRequest.result === \"success\") {\n                  showToast(\"Review request resent.\")\n                } else {\n                  showToast({\n                    content: `We weren't able to resend this request: ${result.data.resendProReviewRequest.errors.join()}`,\n                    type: \"error\"\n                  })\n                }\n              })\n            }}>\n            Resend\n          </a>\n          <a\n            onClick={() => {\n              NiceModal.show(\"dismiss-review-modal\")\n              setReviewToDismiss(props.cell.row.original)\n            }}>\n            <XMarkIcon className=\"h-6 w-6\" />\n          </a>\n        </div>\n      )\n    }\n  ]\n\n  return (\n    <>\n      {clientRequests && (\n        <HealMeTable\n          data={requests?.sort((a, b) => {\n            const dateA = new Date(a.reviewRequestedAt)\n            const dateB = new Date(b.reviewRequestedAt)\n            return dateB - dateA\n          })}\n          columns={requestColumns}\n          searchType=\"review requests\"\n          header={() => <></>}\n          rowClick={() => {}}\n        />\n      )}\n      <NewModal id=\"dismiss-review-modal\" fullHeightInMobile={true} header=\"Delete review request now\">\n        <div className=\"pb-24\">\n          <Typography variant=\"body\">\n            This will delete the review request from <span className=\"font-semibold\">{reviewToDismiss?.firstName}</span>{\" \"}\n            now. This action cannot be undone.\n          </Typography>\n          <div className=\"absolute inset-x-0 bottom-0 flex justify-end border-t border-gray-light bg-white p-8 sm:bottom-12\">\n            <Button\n              type=\"tertiary\"\n              className=\"mr-4\"\n              onClick={() => {\n                NiceModal.remove(\"dismiss-review-modal\")\n              }}>\n              No, don&apos;t delete\n            </Button>\n            <Button\n              type=\"destructive\"\n              onClick={() => {\n                dismissReviewRequest({\n                  clientId: reviewToDismiss.clientId,\n                  appointmentId: reviewToDismiss.appointmentId\n                }).then((result) => {\n                  if (result.data.dismissReviewRequest.result === \"success\") {\n                    setRequests((requests) =>\n                      requests.filter(\n                        (request) =>\n                          request.clientId !== reviewToDismiss.clientId ||\n                          request.appointmentId !== reviewToDismiss.appointmentId\n                      )\n                    )\n                    NiceModal.remove(\"dismiss-review-modal\")\n                    showToast(\"Review request was deleted.\")\n                  } else {\n                    showToast({\n                      content: `We weren't able to delete this request: ${result.data.dismissReviewRequest.errors.join()}`,\n                      type: \"error\"\n                    })\n                  }\n                })\n              }}>\n              Yes, delete\n            </Button>\n          </div>\n        </div>\n      </NewModal>\n    </>\n  )\n}\n","import dayjs from \"dayjs\"\n\nconst dateFormat = \"YYYY-MM-DDTHH:mm:ssZ\"\n\nexport const filterByDate = (data, dateSelection) => {\n  if (!dateSelection || dateSelection.value === \"alltime\") {\n    return data\n  }\n\n  switch (dateSelection) {\n    case \"thisweek\":\n      return data.filter(\n        (appt) =>\n          appt.startsAt >= dayjs().startOf(\"week\").format(dateFormat) &&\n          appt.startsAt < dayjs().endOf(\"week\").format(dateFormat)\n      )\n    case \"thismonth\":\n      return data.filter(\n        (appt) =>\n          appt.startsAt >= dayjs().startOf(\"month\").format(dateFormat) &&\n          appt.startsAt < dayjs().endOf(\"month\").format(dateFormat)\n      )\n    case \"lastweek\":\n      return data.filter(\n        (appt) =>\n          appt.startsAt < dayjs().startOf(\"week\").format(dateFormat) &&\n          appt.startsAt >= dayjs().startOf(\"week\").subtract(1, \"weeks\").format(dateFormat)\n      )\n    case \"lastmonth\":\n      return data.filter(\n        (appt) =>\n          appt.startsAt < dayjs().startOf(\"month\").format(dateFormat) &&\n          appt.startsAt >= dayjs().startOf(\"month\").subtract(1, \"months\").format(dateFormat)\n      )\n    case \"thisyear\":\n      return data.filter(\n        (appt) =>\n          appt.startsAt >= dayjs().startOf(\"year\").format(dateFormat) &&\n          appt.startsAt < dayjs().endOf(\"year\").format(dateFormat)\n      )\n    case \"lastyear\":\n      return data.filter(\n        (appt) =>\n          appt.startsAt < dayjs().startOf(\"year\").format(dateFormat) &&\n          appt.startsAt >= dayjs().startOf(\"year\").subtract(1, \"years\").format(dateFormat)\n      )\n    default:\n      return data // return the original data if there's no match\n  }\n}\n\nexport const filterByState = (data, stateSelection) => {\n  if (!stateSelection || stateSelection === \"allpayments\") {\n    return filterOutFutureUnpaid(data)\n  }\n\n  switch (stateSelection) {\n    case \"paid\":\n      return data.filter((appt) => appt.paymentStatus === \"Paid\")\n    case \"unpaid\":\n      return data.filter((appt) => appt.paymentStatus === \"Unpaid\")\n    case \"free\":\n      return data.filter((appt) => appt.paymentStatus === \"Free\")\n    case \"upcoming\":\n      return data.filter((appt) => dayjs(appt.startsAt).isAfter(dayjs()))\n    default:\n      return data\n  }\n}\n\nexport const filterReviewsByDate = (data, dateSelection) => {\n  if (!dateSelection || dateSelection.value === \"alltime\") {\n    return data\n  }\n\n  switch (dateSelection) {\n    case \"thisweek\":\n      return data.filter((review) => review.createdAt >= dayjs().startOf(\"week\").format(dateFormat))\n    case \"thismonth\":\n      return data.filter((review) => review.createdAt >= dayjs().startOf(\"month\").format(dateFormat))\n    case \"lastweek\":\n      return data.filter(\n        (review) =>\n          review.createdAt < dayjs().startOf(\"week\").format(dateFormat) &&\n          review.createdAt >= dayjs().startOf(\"week\").subtract(1, \"weeks\").format(dateFormat)\n      )\n    case \"lastmonth\":\n      return data.filter(\n        (review) =>\n          review.createdAt < dayjs().startOf(\"month\").format(dateFormat) &&\n          review.createdAt >= dayjs().startOf(\"month\").subtract(1, \"months\").format(dateFormat)\n      )\n    case \"thisyear\":\n      return data.filter((review) => review.createdAt >= dayjs().startOf(\"year\").format(dateFormat))\n    case \"lastyear\":\n      return data.filter(\n        (review) =>\n          review.createdAt < dayjs().startOf(\"year\").format(dateFormat) &&\n          review.createdAt >= dayjs().startOf(\"year\").subtract(1, \"years\").format(dateFormat)\n      )\n    default:\n      return data\n  }\n}\n\nexport const filterByRating = (data, ratingSelection) => {\n  if (!ratingSelection || ratingSelection === \"all\") {\n    return data\n  }\n\n  return data.filter((review) => review.rating == ratingSelection)\n}\n\nexport const filterOutFutureUnpaid = (data) =>\n  data.filter(\n    (appt) =>\n      dayjs(appt.startsAt).isBefore(dayjs()) ||\n      (dayjs(appt.startsAt).isAfter(dayjs()) && appt.paymentStatus !== \"Unpaid\")\n  )\n","import { ChevronRightIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport ClientFlyout from \"../../components/shared/ClientFlyout\"\nimport { Label, TextArea } from \"../../components/shared/Inputs\"\nimport { Flyout, Divider } from \"../../components/shared/Layout\"\nimport { Link } from \"../../components/shared/Links\"\nimport RatingStarRow from \"../../components/shared/RatingStarRow\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatPhone } from \"../../utils/utils\"\n\nconst REVIEW_REPLY_MUTATION = `\n  mutation AddEditReviewReply($reviewId: ID!, $message: String!) {\n    addEditReviewReply(reviewId: $reviewId, message: $message) {\n      result\n      errors\n    }\n  }\n`\n\nexport default function ReviewFlyout({ review, closeFlyout, visible }) {\n  const [showClientDetail, setShowClientDetail] = useState(false)\n  const [showReplyEdit, setShowReplyEdit] = useState(false)\n\n  const [reviewReply, setReviewReply] = useState(review?.reviewReply?.message || \"\")\n\n  const client = review?.client ? review?.client : review?.user\n  const { showToast } = useToast()\n  const [, addEditReply] = useMutation(REVIEW_REPLY_MUTATION)\n\n  const handleReviewReply = () => {\n    addEditReply({ reviewId: review.id, message: reviewReply }).then((res) => {\n      closeFlyout({ replied: true })\n      if (res.data.addEditReviewReply.result === \"success\") {\n        showToast(\"Your reply has been posted\")\n      } else {\n        showToast({\n          content: `Error replying to review: ${res.data.addEditReviewReply.errors.join(\" \")}`,\n          type: \"error\"\n        })\n      }\n    })\n  }\n\n  let saveEnabled = reviewReply?.length > 5\n\n  return (\n    <>\n      <Flyout\n        visible={visible}\n        closeFlyout={closeFlyout}\n        header=\"Review details\"\n        footer={\n          <div className=\"flex w-full items-center justify-end\">\n            <div className=\"flex gap-4\">\n              <Button type=\"tertiary\" onClick={closeFlyout}>\n                Close\n              </Button>\n              {(showReplyEdit || !review?.reviewReply) && (\n                <Button type=\"primary\" onClick={handleReviewReply} disabled={!saveEnabled}>\n                  {review?.reviewReply ? \"Edit reply\" : \"Leave reply\"}\n                </Button>\n              )}\n            </div>\n          </div>\n        }>\n        {review && (\n          <>\n            <div className=\"relative rounded-xl border border-gray-light px-4 py-2\">\n              {client ? (\n                <a onClick={() => setShowClientDetail(true)}>\n                  <Typography variant=\"h5\">\n                    {client.firstName} {client.lastName}\n                  </Typography>\n                  <Typography variant=\"small\">\n                    {client.email && `${client.email}`} {formatPhone(client.phone) && `${formatPhone(client.phone)}`}{\" \"}\n                  </Typography>\n\n                  <button className=\"absolute right-4 top-4\">\n                    <ChevronRightIcon className=\"h-5 w-5\" />\n                  </button>\n                </a>\n              ) : (\n                <Typography variant=\"h5\">{review.unverifiedName}</Typography>\n              )}\n            </div>\n            <div className=\"mt-6 flex flex-row justify-items-start\">\n              <Typography variant=\"h1\" as=\"p\" className=\"font-bold\">\n                {review.rating}\n              </Typography>\n              <Typography variant=\"h1\" as=\"p\" className=\"font-normal text-gray-dark\">\n                /{review.rating}\n              </Typography>\n            </div>\n            <RatingStarRow total={review.rating} />\n            {review.endorsedSkills?.length > 0 && (\n              <>\n                <Label className=\"mt-6\">Endorsements</Label>\n                <div className=\"flex flex-row flex-wrap\">\n                  {review.endorsedSkills.map((skill, i) => (\n                    <div\n                      key={i}\n                      className=\"mb-2 mr-2 flex items-center justify-center rounded-lg bg-gray-light p-2 leading-none\">\n                      {skill}\n                    </div>\n                  ))}\n                </div>\n              </>\n            )}\n            <Divider />\n            <Label>Review</Label>\n            <Typography variant=\"body\" as=\"p\" className=\"font-normal text-black\">\n              <div className=\"flex\">\n                {review.review ? (\n                  <>\n                    &ldquo;<span className=\"pl-1\"> {review.review}&rdquo;</span>\n                  </>\n                ) : (\n                  <Typography className=\"text-gray-dark\">No text review</Typography>\n                )}\n              </div>\n            </Typography>\n            {review.review && (\n              <>\n                <Divider />\n                <Label>Your reply</Label>\n                {review.reviewReply && !showReplyEdit ? (\n                  <>\n                    <div className=\"flex\">\n                      &ldquo;<span className=\"pl-1\"> {review.reviewReply.message}&rdquo;</span>\n                    </div>\n                    <Link className=\"float-right mt-4\" onClick={() => setShowReplyEdit(true)}>\n                      Edit\n                    </Link>\n                  </>\n                ) : (\n                  <>\n                    {!review.reviewReply && (\n                      <Typography variant=\"body\" className=\"text-gray-dark\">\n                        Letting your clients know how their review makes you feel is a nice touch.\n                      </Typography>\n                    )}\n                  </>\n                )}\n                {(showReplyEdit || !review.reviewReply) && (\n                  <TextArea\n                    className=\"mt-4\"\n                    placeholder=\"Ex: Thank you for such a nice review!\"\n                    value={reviewReply}\n                    onChange={(e) => setReviewReply(e.target.value)}\n                  />\n                )}\n              </>\n            )}\n          </>\n        )}\n      </Flyout>\n      <ClientFlyout\n        closeFlyout={() => {\n          setShowClientDetail(false)\n        }}\n        visible={showClientDetail}\n        refreshClient={() => {}}\n        client={client}\n        clientEdited={() => {\n          showToast(\"Client edited successfully. \")\n        }}\n      />\n    </>\n  )\n}\n","import React, { useState } from \"react\"\n\nimport Badge from \"../../components/shared/Badge\"\nimport HealMeTable from \"../../components/shared/HealMeTable\"\nimport { Select } from \"../../components/shared/Inputs\"\nimport { filterReviewsByDate, filterByRating } from \"../../utils/setupFilters\"\nimport { formatShortDate } from \"../../utils/utils\"\nimport ReviewFlyout from \"../ProReviews/ReviewFlyout\"\n\nconst dateRangeOptions = [\n  { value: \"alltime\", label: \"All time\" },\n  { value: \"thisweek\", label: \"This week\" },\n  { value: \"lastweek\", label: \"Last week\" },\n  { value: \"thismonth\", label: \"This month\" },\n  { value: \"lastmonth\", label: \"Last month\" },\n  { value: \"thisyear\", label: \"This year\" },\n  { value: \"lastyear\", label: \"Last year\" }\n]\n\nconst ratingOptions = [\n  { value: \"all\", label: \"All ratings\" },\n  { value: 5, label: \"5\" },\n  { value: 4, label: \"4\" },\n  { value: 3, label: \"3\" },\n  { value: 2, label: \"2\" },\n  { value: 1, label: \"1\" }\n]\n\nconst TableHeader = ({ dateFilter, ratingFilter, handleFilter }) => (\n  <div className=\"ml-4 flex w-full sm:ml-0 sm:mt-4\">\n    <Select\n      className=\"mr-4\"\n      options={dateRangeOptions}\n      value={dateFilter}\n      onChange={(e) => handleFilter(e.target.value, ratingFilter)}\n    />\n    <Select options={ratingOptions} value={ratingFilter} onChange={(e) => handleFilter(dateFilter, e.target.value)} />\n  </div>\n)\n\nexport default function ProReviewsTable({ reviews }) {\n  const allReviews = reviews\n  const [flyoutKey, setFlyoutKey] = useState(0)\n  const [showReviewDetail, setShowReviewDetail] = useState(false)\n  const [selectedReview, setSelectedReview] = useState(null)\n\n  const [filteredReviews, setFilteredReviews] = useState(reviews)\n  const [dateFilter, setDateFilter] = useState(dateRangeOptions[0].value)\n  const [ratingFilter, setRatingFilter] = useState(ratingOptions[0].value)\n\n  const showReview = (review) => {\n    setTimeout(() => setFlyoutKey(review.id), 500)\n    setShowReviewDetail(true)\n    setSelectedReview(review)\n  }\n\n  const handleFilter = (dateSelection, ratingSelection) => {\n    setDateFilter(dateSelection || dateFilter)\n    setRatingFilter(ratingSelection || ratingFilter)\n\n    let combinedArray = allReviews\n\n    combinedArray = filterReviewsByDate(combinedArray, dateSelection)\n    combinedArray = filterByRating(combinedArray, ratingSelection)\n\n    setFilteredReviews(combinedArray)\n  }\n\n  const reviewColumns = [\n    {\n      accessor: \"id\",\n      Header: \"Client\",\n      className: \"w-1/5 min-w-[200px] pr-6\",\n      Cell: (props) => {\n        const review = props.cell.row.original\n        const clientOrUser = review.client || review.user\n\n        let client_name = clientOrUser?.firstName\n\n        if (clientOrUser?.lastName) {\n          client_name += \" \" + clientOrUser.lastName\n        }\n\n        if (!client_name) {\n          client_name = review.unverifiedName\n        }\n\n        return (\n          <>\n            <span className=\"mb-0 block\"> {client_name}</span>\n            {review.reviewReply && <Badge className=\"mt-2 inline-block\">REPLIED</Badge>}\n          </>\n        )\n      }\n    },\n    {\n      accessor: \"rating\",\n      Header: \"Rating\",\n      className: \"w-1/12 min-w-[80px] pr-6\",\n      Cell: (props) => (\n        <>\n          <span className=\"font-bold\">{props.cell.value}</span>\n          <span className=\"text-gray-dark\">/5</span>\n        </>\n      )\n    },\n    {\n      accessor: \"review\",\n      Header: \"Review\",\n      className: \"w-2/5 max-w-[700px] min-w-[240px] pr-6\",\n      Cell: (props) => {\n        const link = props.cell.row.original.reviewReply ? \"View reply\" : \"Leave reply\"\n\n        return (\n          <>\n            {props.cell.value ? (\n              <>\n                <span className=\"mb-0 block\">&ldquo;{props.cell.value}&rdquo;</span>\n                <span className=\"mt-2 block\">\n                  <a className=\"font-bold text-teal\">{link}</a>\n                </span>\n              </>\n            ) : (\n              <span className=\"text-gray-dark\">No text review</span>\n            )}\n          </>\n        )\n      }\n    },\n    {\n      accessor: \"createdAt\",\n      Header: \"Date\",\n      className: \"w-1/6 min-w-[120px] pr-6\",\n      Cell: (props) => <span className=\"text-gray-dark\">{formatShortDate(props.cell.value)}</span>\n    },\n    {\n      accessor: \"updatedAt\",\n      Header: \"Action\",\n      className: \"w-1/12 min-w-[80px]\",\n      Cell: () => <a className=\"font-bold text-teal\">View</a>\n    }\n  ]\n\n  return (\n    <>\n      {reviews && (\n        <HealMeTable\n          data={filteredReviews}\n          columns={reviewColumns}\n          searchType=\"reviews\"\n          rowClick={showReview}\n          header={() => <TableHeader dateFilter={dateFilter} ratingFilter={ratingFilter} handleFilter={handleFilter} />}\n        />\n      )}\n\n      <ReviewFlyout\n        key={flyoutKey}\n        review={selectedReview}\n        closeFlyout={({ replied }) => {\n          if (replied) {\n            window.location.reload()\n          } else {\n            setShowReviewDetail(false)\n            setTimeout(() => setFlyoutKey(selectedReview.id), 500)\n          }\n        }}\n        visible={showReviewDetail}\n      />\n    </>\n  )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button, CopyLinkButton } from \"../../components/shared/Buttons\"\nimport { InputWithLabel } from \"../../components/shared/Inputs\"\nimport { Divider } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { copyToClipboard } from \"../../utils/utils\"\n\nconst SEND_BULK_REVIEW_REQUESTS = `\n  mutation SendBulkReviewRequests($clients: [ClientInput!]!) {\n    sendBulkReviewRequests (clients: $clients) {\n      result\n      erroredClients {\n        email\n        errors\n      }\n    }\n  }\n`\n\nexport default function ReviewRequestForm({ existingRequests, requestReviewLink, defaultRows = 1 }) {\n  const [clients, setClients] = useState(Array(defaultRows).fill({ firstName: \"\", phone: \"\", clientType: \"invited\" }))\n  const { showToast } = useToast()\n\n  const [, sendBulkReviewRequests] = useMutation(SEND_BULK_REVIEW_REQUESTS)\n\n  const formIsValid = () => clients.some((client) => client.firstName.trim() !== \"\" && client.phone.trim().length > 12)\n\n  const handleClientChange = (index, field, value) => {\n    const updatedClients = [...clients]\n    updatedClients[index] = { ...updatedClients[index], [field]: value }\n    setClients(updatedClients)\n  }\n\n  const addClient = () => {\n    setClients([...clients, { firstName: \"\", phone: \"\", clientType: \"invited\" }])\n  }\n\n  const handleInvitesSent = () => {\n    showToast(\"Awesome stuff! We’ll email you when your clients leave reviews for you.\")\n    setTimeout(() => window.location.reload(), 1500)\n  }\n\n  const handleSubmit = async () => {\n    const validClients = clients.filter((client) => client.firstName || client.phone)\n\n    const formattedClients = validClients.map((client) => ({\n      firstName: client.firstName,\n      phone: client.phone,\n      clientType: client.clientType\n    }))\n\n    try {\n      const response = await sendBulkReviewRequests({ clients: formattedClients })\n      if (response.data.sendBulkReviewRequests.erroredClients.length > 0) {\n        showToast({\n          content: `Error requesting reviews: ${response.data.sendBulkReviewRequests.erroredClients\n            .map((client) => client.errors)\n            .join(\" \")}`,\n          type: \"error\"\n        })\n      } else {\n        handleInvitesSent()\n      }\n    } catch (error) {\n      showToast({ content: `An error occurred: ${error.message}`, type: \"error\" })\n    }\n  }\n\n  const handleCopy = async (text) => {\n    await copyToClipboard(text, showToast)\n  }\n\n  return (\n    <div className=\"mt-8 flex flex-row sm:flex-col\">\n      <div className=\"min_md:mr-8 min_md:w-[572px]\">\n        <div className=\"rounded-lg border border-gray-light p-8 sm:w-full\">\n          {clients.map((client, index) => (\n            <div key={index}>\n              <div className=\"mb-4 grid grid-cols-2 gap-6 sm:grid-cols-1\">\n                <InputWithLabel\n                  label=\"First name\"\n                  value={client.firstName}\n                  onChange={(e) => handleClientChange(index, \"firstName\", e.target.value)}\n                />\n\n                <InputWithLabel\n                  id=\"phone\"\n                  type=\"phone\"\n                  label=\"Mobile phone\"\n                  value={client.phone}\n                  onChange={(e) => handleClientChange(index, \"phone\", e.target.value)}\n                />\n              </div>\n\n              {index !== clients.length - 1 && <Divider />}\n            </div>\n          ))}\n          {existingRequests + clients.length < 10 && (\n            <Button type=\"link\" onClick={addClient}>\n              Add another client\n            </Button>\n          )}\n          <Divider />\n          <div className=\"mt-8 block w-full text-right md:mb-8\">\n            <Button type=\"primary\" size=\"large\" className=\"\" disabled={!formIsValid()} onClick={handleSubmit}>\n              Send request{clients.length > 1 ? \"s\" : \"\"}\n            </Button>\n          </div>\n        </div>\n        <div className=\"mt-8 rounded-lg border border-gray-light p-8 md:mb-8\">\n          <Typography variant=\"body\" className=\"mb-4 font-bold\">\n            Want to share your link instead?\n          </Typography>\n          <CopyLinkButton\n            value={requestReviewLink}\n            onClick={() => {\n              handleCopy(requestReviewLink)\n            }}\n          />\n        </div>\n      </div>\n      <div className=\"w-[360px] sm:w-full\">\n        <div className=\"rounded-lg border border-gray-light p-8\">\n          <Typography variant=\"body\" className=\"font-semibold\">\n            Why do reviews matter?\n          </Typography>\n          <Typography variant=\"subtitle\" className=\"mt-2\">\n            When shopping online for goods and services, clients trust reviews from other clients more than anything\n            else. We know getting 10+ reviews builds trust for potential clients.\n          </Typography>\n        </div>\n      </div>\n    </div>\n  )\n}\n","import React, { useState } from \"react\"\n\nimport { TabNavLink } from \"../components/shared/Links\"\nimport Typography from \"../components/shared/Typography\"\nimport { PracticeProvider } from \"../contexts/PracticeContext\"\nimport DefaultProvider from \"../providers/DefaultProvider\"\n\nimport ProImportReviews from \"./ProReviews/ProImportReviews\"\nimport ProReviewRequestsTable from \"./ProReviews/ProReviewRequestsTable\"\nimport ProReviewsTable from \"./ProReviews/ProReviewsTable\"\nimport ReviewRequestForm from \"./ProReviews/ReviewRequestForm\"\n\nconst Reviews = ({ requestReviewLink, clientRequests, reviews, importReviewsEnabled }) => {\n  const [activeTab, setActiveTab] = useState(reviews.length < 11 ? \"newRequests\" : \"completed\")\n\n  const handleTabClick = (tabId) => {\n    setActiveTab(tabId)\n  }\n\n  return (\n    <>\n      <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n        <div className=\"flex flex-col\">\n          <Typography as=\"h1\" variant=\"h3\">\n            Reviews\n          </Typography>\n          <Typography variant=\"subtitle\">\n            {reviews.length === 0 ? <>No reviews </> : <>{reviews?.length} completed </>}\n            {clientRequests?.length > 0 && <>• {clientRequests.length} pending</>}\n          </Typography>\n        </div>\n      </div>\n      <div className=\"mb-8 mt-4 flex gap-8 border-b border-gray-light\">\n        {reviews.length < 999999 && (\n          <>\n            <TabNavLink active={activeTab === \"newRequests\"} onClick={() => handleTabClick(\"newRequests\")}>\n              Request reviews\n            </TabNavLink>\n            {importReviewsEnabled && (\n              <TabNavLink active={activeTab === \"import\"} onClick={() => handleTabClick(\"import\")}>\n                Import reviews\n              </TabNavLink>\n            )}\n          </>\n        )}\n        <TabNavLink active={activeTab === \"completed\"} onClick={() => handleTabClick(\"completed\")}>\n          Completed\n        </TabNavLink>\n        <TabNavLink active={activeTab === \"pending\"} onClick={() => handleTabClick(\"pending\")}>\n          Pending\n        </TabNavLink>\n      </div>\n      {activeTab === \"newRequests\" && (\n        <ReviewRequestForm\n          existingRequests={clientRequests.length}\n          requestReviewLink={requestReviewLink}\n          defaultRows={1}\n        />\n      )}\n      {activeTab === \"import\" && importReviewsEnabled && <ProImportReviews />}\n\n      {activeTab === \"pending\" && <ProReviewRequestsTable clientRequests={clientRequests} />}\n\n      {activeTab === \"completed\" && <ProReviewsTable reviews={reviews} />}\n    </>\n  )\n}\n\nexport default function ProReviews(props) {\n  return (\n    <DefaultProvider>\n      <PracticeProvider>\n        <Reviews {...props} />\n      </PracticeProvider>\n    </DefaultProvider>\n  )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport ProReviewsTable from \"./ProReviewsTable\"\n\nconst Reviews = ({ reviews }) => (\n  <>\n    <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n      <div className=\"flex flex-col\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Completed Reviews\n        </Typography>\n        <Typography variant=\"subtitle\">\n          {reviews.length === 0 ? <>No reviews </> : <>{reviews?.length} completed </>}\n        </Typography>\n      </div>\n    </div>\n\n    <ProReviewsTable reviews={reviews} />\n  </>\n)\n\nexport default function ProReviewsCompletedPage(props) {\n  return (\n    <DefaultProvider>\n      <PracticeProvider>\n        <Reviews {...props} />\n      </PracticeProvider>\n    </DefaultProvider>\n  )\n}\n","import React, { useState } from \"react\"\nimport { Configure } from \"react-instantsearch\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport HealMeTooltip from \"../../components/shared/HealMeTooltip\"\nimport { Box, ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { EndorsementPill } from \"../../components/shared/Pill\"\nimport { AlgoliaSearchProvider } from \"../../components/shared/SearchInputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { EndorsementsFlyout } from \"../ProfileEdit/EndorsementsFlyout\"\nimport ProfileEditProvider from \"../ProfileEdit/ProfileEditProvider\"\n\nconst DELETE_SKILLS = `\n  mutation DeleteSkills($skillId: String!) {\n    deleteSkills(skillId: $skillId) {\n      result\n      skills {\n        id\n        endorsementsCount\n        specialty { id name }\n      }\n      errors\n    }\n  }\n`\n\nconst MOVE_SKILLS = `\n  mutation MoveSkills($skillArray: [String!]!) {\n    moveSkills(skillArray: $skillArray) {\n      result\n      skills {\n        id\n        endorsementsCount\n        specialty { id name }\n      }\n      errors\n    }\n  }\n`\n\nconst Endorsements = ({ skills, specialtiesByLetter }) => {\n  const [skillsState, setSkillsState] = useState(skills)\n  const [flyoutVisible, setFlyoutVisible] = useState(false)\n\n  const [, deleteSkills] = useMutation(DELETE_SKILLS)\n  const [, moveSkills] = useMutation(MOVE_SKILLS)\n\n  const { showToast } = useToast()\n\n  const removeSkill = (skill) => {\n    deleteSkills({ skillId: skill.id.toString() }).then((result) => {\n      if (result?.data?.deleteSkills?.result === \"success\") {\n        setSkillsState(result.data.deleteSkills.skills)\n        setFlyoutVisible(false)\n        showToast(\"Successfully deleted keyword\")\n      } else {\n        showToast({ type: \"error\", content: \"Failed to delete keyword\" })\n        console.error(result) // eslint-disable-line no-console\n      }\n    })\n\n    const index = skillsState.indexOf(skill)\n    if (index !== -1) {\n      const copySkills = [...skillsState]\n      copySkills.splice(index, 1)\n      setSkillsState(copySkills)\n    }\n  }\n\n  return (\n    <>\n      <div className=\"w-[600px] md:w-full\">\n        <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n          <div className=\"flex flex-col\">\n            <Typography as=\"h1\" variant=\"h3\">\n              Keywords\n            </Typography>\n            <Typography variant=\"subtitle\">Add or edit your keywords.</Typography>\n          </div>\n        </div>\n\n        {skillsState.length === 0 ? (\n          <ProfilePageEmptyStateBox title=\"Keywords\" onButtonClick={() => setFlyoutVisible(true)}>\n            Why do your clients come to see you? List these here.{\" \"}\n            <UnderlinedLink\n              href=\"https://help.heal.me/en/articles/8441399-what-are-endorsements-and-which-should-i-pick\"\n              target=\"_blank\">\n              Learn more\n            </UnderlinedLink>\n          </ProfilePageEmptyStateBox>\n        ) : (\n          <>\n            <Box data-test-id=\"endorsements\">\n              <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:border-none sm:pb-0\">\n                <Typography variant=\"capitalHeading\">Keywords</Typography>\n                <div data-tooltip-id=\"disabled-tooltip\">\n                  <Button floatingInMobile={true} disabled={skills.length >= 50} onClick={() => setFlyoutVisible(true)}>\n                    Add new\n                  </Button>\n                </div>\n                {skills.length >= 50 && (\n                  <HealMeTooltip\n                    id=\"disabled-tooltip\"\n                    place=\"bottom\"\n                    content=\"Note: You can add a maximum of 50 credentials.\"\n                  />\n                )}\n              </div>\n              <Typography variant=\"subtitle\" className=\"mt-6 sm:mt-2\">\n                Drag to re-order each keyword.\n              </Typography>\n              <ReactSortable\n                className=\"mt-6 flex flex-wrap gap-2 sm:mt-4\"\n                list={skillsState}\n                setList={(newSkills) => {\n                  if (JSON.stringify(newSkills) !== JSON.stringify(skillsState)) {\n                    const newOrder = newSkills.map((skill, i) => JSON.stringify({ id: skill.id, position: i + 1 }))\n                    setSkillsState(newSkills)\n                    moveSkills({ skillArray: newOrder }).then((result) => {\n                      if (result?.data?.moveSkills?.result !== \"success\") {\n                        console.error(result) // eslint-disable-line no-console\n                        showToast({\n                          type: \"error\",\n                          content:\n                            \"There was error reordering your keywords. Please try again later or contact support if the error persists.\"\n                        })\n                      }\n                    })\n                  }\n                }}>\n                {skillsState.map((skill) => (\n                  <EndorsementPill key={skill.id} draggable active onCloseButtonClick={() => removeSkill(skill)}>\n                    {skill.specialty.name}\n                  </EndorsementPill>\n                ))}\n              </ReactSortable>\n            </Box>\n          </>\n        )}\n      </div>\n\n      <EndorsementsFlyout\n        specialtiesByLetter={specialtiesByLetter}\n        skills={skillsState}\n        setSkills={setSkillsState}\n        visible={flyoutVisible}\n        closeFlyout={() => setFlyoutVisible(false)}\n      />\n    </>\n  )\n}\n\nexport default function ProReviewsEndorsementsPage({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <AlgoliaSearchProvider indexName=\"Specialty\">\n        <Configure hitsPerPage={50} filters=\"NOT ordered_kind:1\" />\n        <Endorsements {...props} />\n      </AlgoliaSearchProvider>\n    </ProfileEditProvider>\n  )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport ProImportReviews from \"./ProImportReviews\"\n\nconst Reviews = () => (\n  <>\n    <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n      <div className=\"flex flex-col\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Import Reviews\n        </Typography>\n        <Typography variant=\"subtitle\">Import your past reviews from Google, Facebook, Yelp, and more.</Typography>\n      </div>\n    </div>\n\n    <ProImportReviews />\n  </>\n)\n\nexport default function ProReviewsImportPage(props) {\n  return (\n    <DefaultProvider>\n      <PracticeProvider>\n        <Reviews {...props} />\n      </PracticeProvider>\n    </DefaultProvider>\n  )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport ProReviewRequestsTable from \"./ProReviewRequestsTable\"\n\nconst Reviews = ({ clientRequests }) => (\n  <>\n    <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n      <div className=\"flex flex-col\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Pending Reviews\n        </Typography>\n        <Typography variant=\"subtitle\">\n          {clientRequests?.length === 0 ? <>No pending reviews </> : <>{clientRequests.length} pending reviews</>}\n        </Typography>\n      </div>\n    </div>\n\n    <ProReviewRequestsTable clientRequests={clientRequests} />\n  </>\n)\n\nexport default function ProReviewsPendingPage(props) {\n  return (\n    <DefaultProvider>\n      <PracticeProvider>\n        <Reviews {...props} />\n      </PracticeProvider>\n    </DefaultProvider>\n  )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport ReviewRequestForm from \"./ReviewRequestForm\"\n\nconst Reviews = ({ requestReviewLink, clientRequests }) => (\n  <>\n    <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n      <div className=\"flex flex-col\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Request Reviews\n        </Typography>\n        <Typography variant=\"subtitle\">Send review request to your clients.</Typography>\n      </div>\n    </div>\n\n    <ReviewRequestForm existingRequests={clientRequests.length} requestReviewLink={requestReviewLink} defaultRows={1} />\n  </>\n)\n\nexport default function ProReviewsRequestPage(props) {\n  return (\n    <DefaultProvider>\n      <PracticeProvider>\n        <Reviews {...props} />\n      </PracticeProvider>\n    </DefaultProvider>\n  )\n}\n","import { ClipboardIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport Badge from \"../components/shared/Badge\"\nimport { Box, Divider } from \"../components/shared/Layout\"\nimport Typography from \"../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../contexts/ToastContext\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\nimport { formatPrice } from \"../utils/utils\"\n\nconst ReferralProgram = ({ practitionerReferral, referralCreditWithdrawals, isLifer }) => {\n  const { showToast } = useToast()\n\n  const discountCode = practitionerReferral.discountCode\n\n  const copyToClipboard = () => {\n    navigator.clipboard.writeText(discountCode)\n    showToast(\"Discount code copied to clipboard!\")\n  }\n\n  // const socialMediaUrls = {\n  //   facebook: `https://www.facebook.com/sharer/sharer.php?u=&quote=Check out this discount code: ${discountCode}`,\n  //   twitter: `https://twitter.com/intent/tweet?text=Check out this discount code: ${discountCode}`,\n  //   linkedin: `https://www.linkedin.com/shareArticle?mini=true&url=&summary=Check out this discount code: ${discountCode}`\n  // }\n\n  return (\n    <div className=\"w-[600px] md:w-full\">\n      <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n        <div className=\"flex flex-col\">\n          <Typography variant=\"h3\" as=\"h1\">\n            Referral Program: Give $50, Get $50\n          </Typography>\n          <Typography variant=\"subtitle\">\n            Share your discount code with other practitioners.\n            <br />\n            They&apos;ll get $50 off, and you&apos;ll earn $50 when they join!\n          </Typography>\n        </div>\n      </div>\n\n      <Box>\n        <Typography variant=\"capitalHeading\" as=\"h3\" className=\"mb-4\">\n          Copy your discount code\n        </Typography>\n        <button className=\"flex items-center gap-2 hover:text-teal\" onClick={copyToClipboard}>\n          <span className=\"rounded-lg bg-gray-ultralight px-4 py-1\">Discount code: {discountCode}</span>\n          <ClipboardIcon className=\"h-5 w-5\" />\n        </button>\n\n        {/* <Divider /> */}\n        {/* <Typography variant=\"capitalHeading\" as=\"h3\" className=\"mb-4\"> */}\n        {/*   Share on social media */}\n        {/* </Typography> */}\n        {/* <div className=\"flex gap-4\"> */}\n        {/*   <a href={socialMediaUrls.facebook} target=\"_blank\" rel=\"noopener noreferrer\"> */}\n        {/*     <FacebookIcon height={32} width={24} /> */}\n        {/*   </a> */}\n        {/*   <a href={socialMediaUrls.twitter} target=\"_blank\" rel=\"noopener noreferrer\"> */}\n        {/*     <XTwitterIcon height={32} width={21} /> */}\n        {/*   </a> */}\n        {/*   <a href={socialMediaUrls.linkedin} target=\"_blank\" rel=\"noopener noreferrer\"> */}\n        {/*     <LinkedinIcon height={32} width={22} /> */}\n        {/*   </a> */}\n        {/* </div> */}\n      </Box>\n\n      <Box className=\"mt-8\">\n        <Typography variant=\"capitalHeading\" as=\"h3\" className=\"mb-4\">\n          Referral History\n        </Typography>\n        {practitionerReferral.referralUses.length === 0 ? (\n          <div className=\"text-gray-dark\">When people use your referral code, they will show up here</div>\n        ) : (\n          <>\n            {practitionerReferral.referralUses.map((referral) => (\n              <div key={referral.id} className=\"flex items-center justify-between gap-4\">\n                <div className=\"font-bold\">{dayjs(referral.useDate).format(\"MM/DD/YYYY\")}</div>\n                <div className=\"text-gray-dark\">{formatPrice(practitionerReferral.amountCents)}</div>\n              </div>\n            ))}\n            <Divider />\n            <div className=\"flex items-center justify-between gap-4\">\n              <div className=\"font-bold\">Total</div>\n              <div className=\"text-gray-dark\">\n                {formatPrice(practitionerReferral.referralUses.length * practitionerReferral.amountCents)}\n              </div>\n            </div>\n          </>\n        )}\n      </Box>\n\n      {isLifer && (\n        <Box className=\"mt-8\">\n          <Typography variant=\"capitalHeading\" as=\"h3\" className=\"mb-4\">\n            Referral Credit Withdrawals\n          </Typography>\n          {referralCreditWithdrawals.length === 0 ? (\n            <div className=\"text-gray-dark\">When you withdraw referral credit, it will show up here</div>\n          ) : (\n            <>\n              {referralCreditWithdrawals.map((withdrawal) => (\n                <div key={withdrawal.id} className=\"flex items-center justify-between gap-4 space-y-2\">\n                  <div className=\"font-bold\">{dayjs(withdrawal.withdrawalDate).format(\"MM/DD/YYYY\")}</div>\n                  <div className=\"flex items-center gap-2\">\n                    <div className=\"w-24 text-right text-gray-dark\">{formatPrice(withdrawal.amountCents)}</div>\n                    <Badge type={withdrawal.status === \"pending\" ? \"warning\" : \"success\"} className=\"w-20 text-center\">\n                      {withdrawal.status}\n                    </Badge>\n                  </div>\n                </div>\n              ))}\n            </>\n          )}\n        </Box>\n      )}\n    </div>\n  )\n}\n\nexport default function ReferralProgramPage(props) {\n  return (\n    <GraphQLProvider>\n      <ToastProvider>\n        <ReferralProgram {...props} />\n      </ToastProvider>\n    </GraphQLProvider>\n  )\n}\n","import { GlobeAltIcon, StarIcon } from \"@heroicons/react/24/outline\"\nimport React from \"react\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport Typography from \"../components/shared/Typography\"\n\nconst WebsiteDash = () => (\n  <div>\n    <div className=\"mb-9 flex flex-col sm:mb-4\">\n      <Typography as=\"h1\" variant=\"h3\">\n        Website\n      </Typography>\n      <Typography variant=\"subtitle\" className=\"sm:hidden\">\n        Build your Heal.me website and choose a custom domain.\n      </Typography>\n    </div>\n    <div className=\"grid grid-cols-2 gap-8 sm:grid-cols-1\">\n      <div className=\"flex flex-row gap-4 rounded-xl border border-gray-light p-8\">\n        <div className=\"mb-8 h-fit w-fit rounded-xl bg-green-light p-4\">\n          <StarIcon className=\"h-10 w-10 text-gray-dark\" />\n        </div>\n        <div className=\"flex flex-col\">\n          <Typography variant=\"h5\" className=\"mb-2\">\n            Builder (soon)\n          </Typography>\n          <Typography variant=\"subtitle\" className=\"mb-4\">\n            Choose a website theme and customization option.\n          </Typography>\n          <a href=\"#\">\n            <Button type=\"tertiary\" className=\"w-fit\">\n              Soon\n            </Button>\n          </a>\n        </div>\n      </div>\n\n      <div className=\"flex flex-row gap-4 rounded-xl border border-gray-light p-8\">\n        <div className=\"mb-8 h-fit w-fit rounded-xl bg-orange-light p-4\">\n          <GlobeAltIcon className=\"h-10 w-10 text-gray-dark\" />\n        </div>\n        <div className=\"flex flex-col\">\n          <Typography variant=\"h5\" className=\"mb-2\">\n            Domain\n          </Typography>\n          <Typography variant=\"subtitle\" className=\"mb-4\">\n            Setup your custom domain: yourdomain.com\n          </Typography>\n          <a href=\"/portal/website/domain\">\n            <Button type=\"tertiary\" className=\"w-fit\">\n              Manage\n            </Button>\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n)\n\nexport default WebsiteDash\n","import { gql } from \"urql\"\n\nexport const GENERATE_IMAGE_ALT_TEXT_MUTATION = gql`\n  mutation GenerateImageAltText {\n    generateImageAltText {\n      result\n      errors\n    }\n  }\n`\n","import { gql } from \"urql\"\n\nexport const GENERATE_SITE_METADATA_MUTATION = gql`\n  mutation GenerateSiteMetadata {\n    generateSiteMetadata {\n      result\n      errors\n      websiteMetadata {\n        title\n        description\n        ogSiteName\n        primaryModality\n      }\n    }\n  }\n`\n","import { gql } from \"@urql/core\"\n\nexport const UPSERT_WEBSITE_METADATA_MUTATION = gql`\n  mutation UpsertWebsiteMetadata($input: UpsertWebsiteMetadataInput!) {\n    upsertWebsiteMetadata(input: $input) {\n      result\n      errors\n      websiteMetadata {\n        id\n        title\n        description\n        ogSiteName\n        primaryModality\n      }\n    }\n  }\n`\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { EditableValue, Input, TextArea } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { GENERATE_IMAGE_ALT_TEXT_MUTATION } from \"../../graphql/mutations/generateImageAltText\"\nimport { GENERATE_SITE_METADATA_MUTATION } from \"../../graphql/mutations/generateSiteMetadata\"\nimport { UPSERT_WEBSITE_METADATA_MUTATION } from \"../../graphql/mutations/upsertWebsiteMetadata\"\n\nconst SeoSettings = ({ websiteMetadata: initialWebsiteMetadata }) => {\n  const [websiteMetadata, setWebsiteMetadata] = useState(initialWebsiteMetadata)\n  const [lastSavedValues, setLastSavedValues] = useState(initialWebsiteMetadata)\n\n  const [{ fetching }, upsertMetadata] = useMutation(UPSERT_WEBSITE_METADATA_MUTATION)\n  const { showToast } = useToast()\n  const [{ fetching: generating }, generateMetadata] = useMutation(GENERATE_SITE_METADATA_MUTATION)\n  const [{ fetching: generatingAlt }, generateAltText] = useMutation(GENERATE_IMAGE_ALT_TEXT_MUTATION)\n\n  const handleSave = (field, value) => {\n    upsertMetadata({\n      input: {\n        [field]: value\n      }\n    }).then((result) => {\n      if (result?.data?.upsertWebsiteMetadata?.result === \"success\") {\n        setLastSavedValues((prev) => ({ ...prev, [field]: value }))\n        showToast(\"SEO settings updated successfully\")\n      } else {\n        const errorMessage = result?.data?.upsertWebsiteMetadata?.errors?.join(\" \") || \"An error occurred\"\n        showToast({\n          content: errorMessage,\n          type: \"error\"\n        })\n      }\n    })\n  }\n\n  const handleGenerate = () => {\n    generateMetadata().then((result) => {\n      if (result?.data?.generateSiteMetadata?.result === \"success\") {\n        const newMetadata = result.data.generateSiteMetadata.websiteMetadata\n        setWebsiteMetadata(newMetadata)\n        setLastSavedValues(newMetadata)\n        showToast(\"SEO settings generated successfully\")\n      } else {\n        const errorMessage = result?.data?.generateSiteMetadata?.errors?.join(\" \") || \"An error occurred\"\n        showToast({\n          content: errorMessage,\n          type: \"error\"\n        })\n      }\n    })\n  }\n\n  const handleGenerateAltText = () => {\n    generateAltText().then((result) => {\n      if (result?.data?.generateImageAltText?.result === \"success\") {\n        showToast(\"Alt text generated successfully\")\n      } else {\n        const errorMessage = result?.data?.generateImageAltText?.errors?.join(\" \") || \"An error occurred\"\n        showToast({\n          content: errorMessage,\n          type: \"error\"\n        })\n      }\n    })\n  }\n\n  return (\n    <>\n      <Typography as=\"h2\" variant=\"h4\" className=\"mb-4\">\n        SEO Settings\n      </Typography>\n      <div className=\"flex w-max flex-col items-start justify-start gap-6 rounded-xl border border-gray-light p-8 md:w-full min_sm:min-w-[529px]\">\n        <EditableValue\n          name=\"Site Title\"\n          value={websiteMetadata.title}\n          saveDisabled={websiteMetadata.title === lastSavedValues.title}\n          disabled={fetching}\n          onSave={() => handleSave(\"title\", websiteMetadata.title)}\n          onCancel={() => setWebsiteMetadata((prev) => ({ ...prev, title: lastSavedValues.title }))}\n          className=\"w-full\">\n          <Input\n            name=\"Site Title\"\n            value={websiteMetadata.title}\n            onChange={(e) => setWebsiteMetadata((prev) => ({ ...prev, title: e.target.value }))}\n            className=\"w-full\"\n          />\n        </EditableValue>\n\n        <EditableValue\n          name=\"Description\"\n          value={websiteMetadata.description}\n          saveDisabled={websiteMetadata.description === lastSavedValues.description}\n          disabled={fetching}\n          onSave={() => handleSave(\"description\", websiteMetadata.description)}\n          onCancel={() => setWebsiteMetadata((prev) => ({ ...prev, description: lastSavedValues.description }))}\n          className=\"w-full\">\n          <TextArea\n            name=\"Description\"\n            value={websiteMetadata.description}\n            onChange={(e) => setWebsiteMetadata((prev) => ({ ...prev, description: e.target.value }))}\n            className=\"w-full\"\n          />\n        </EditableValue>\n\n        <EditableValue\n          name=\"Open Graph Site Name\"\n          value={websiteMetadata.ogSiteName}\n          saveDisabled={websiteMetadata.ogSiteName === lastSavedValues.ogSiteName}\n          disabled={fetching}\n          onSave={() => handleSave(\"ogSiteName\", websiteMetadata.ogSiteName)}\n          onCancel={() => setWebsiteMetadata((prev) => ({ ...prev, ogSiteName: lastSavedValues.ogSiteName }))}\n          className=\"w-full\">\n          <Input\n            name=\"Open Graph Site Name\"\n            value={websiteMetadata.ogSiteName}\n            onChange={(e) => setWebsiteMetadata((prev) => ({ ...prev, ogSiteName: e.target.value }))}\n            className=\"w-full\"\n          />\n        </EditableValue>\n\n        <EditableValue\n          name=\"Primary Modality\"\n          value={websiteMetadata.primaryModality}\n          saveDisabled={websiteMetadata.primaryModality === lastSavedValues.primaryModality}\n          disabled={fetching}\n          onSave={() => handleSave(\"primaryModality\", websiteMetadata.primaryModality)}\n          onCancel={() => setWebsiteMetadata((prev) => ({ ...prev, primaryModality: lastSavedValues.primaryModality }))}\n          className=\"w-full\">\n          <Input\n            name=\"Primary Modality\"\n            value={websiteMetadata.primaryModality}\n            onChange={(e) => setWebsiteMetadata((prev) => ({ ...prev, primaryModality: e.target.value }))}\n            className=\"w-full\"\n          />\n        </EditableValue>\n\n        <div className=\"flex gap-4\">\n          <Button onClick={handleGenerate} disabled={generating || generatingAlt}>\n            {generating ? \"Generating...\" : \"Generate Site Metadata\"}\n          </Button>\n          <Button onClick={handleGenerateAltText} disabled={generating || generatingAlt}>\n            {generatingAlt ? \"Generating...\" : \"Generate Alt Text\"}\n          </Button>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport default SeoSettings\n","export const customDomainConfig = (token) => {\n  const isDev = window.App.environment === \"development\"\n  const isStaging = window.App.environment === \"staging\"\n  const url = isDev ? \"https://heal.me\" : `https://${window.location.hostname}`\n  const appId = isDev || isStaging ? \"heal.me_dev\" : \"heal.me\"\n  return {\n    applicationId: appId,\n    token: token,\n    power: true,\n    dnsRecords: {\n      domain: [\n        {\n          type: \"A\",\n          host: \"@\",\n          value: \"{ENTRI_SERVERS}\", // This will be automatically replaced for the Entri servers IPs\n          ttl: 300,\n          applicationUrl: url,\n          powerRootPathAccess: [\"packs/\", \"assets/\"]\n        },\n        {\n          type: \"CNAME\",\n          host: \"www\",\n          value: \"{CNAME_TARGET}\", // This will automatically use the CNAME target entered in the dashboard\n          ttl: 300,\n          applicationUrl: url,\n          powerRootPathAccess: [\"packs/\", \"assets/\"]\n        }\n      ],\n      subDomain: [\n        {\n          type: \"CNAME\",\n          host: \"{SUBDOMAIN}\", // This will use the user inputted subdomain\n          value: \"{CNAME_TARGET}\", // This will automatically use the CNAME target entered in the dashboard\n          ttl: 300,\n          applicationUrl: url,\n          powerRootPathAccess: [\"packs/\", \"assets/\"]\n        }\n      ]\n    }\n  }\n}\n\nexport const showCustomDomainModal = (config) => {\n  if (window.entri) {\n    window.entri.showEntri(config)\n  } else {\n    console.warn(\"entri is not defined\") // eslint-disable-line no-console\n  }\n}\n\nexport const showPurchaseDomainModal = (config) => {\n  if (window.entri) {\n    window.entri.purchaseDomain(config)\n  } else {\n    console.warn(\"entri is not defined\") // eslint-disable-line no-console\n  }\n}\n\nexport const handleCustomDomainModalStepChange = ({ event, upsertCustomDomain, showToast, updateState }) => {\n  if (\n    event.detail &&\n    (event.detail.step === \"FINISHED_SUCCESSFULLY\" || event.detail.step === \"FINISHED_SUCCESSFULLY_MANUAL\")\n  ) {\n    const domain = event.detail.domain\n\n    upsertCustomDomain({ domain }).then((result) => {\n      if (result?.data?.upsertCustomDomain?.result === \"success\") {\n        showToast(\"Custom domain created successfully\")\n        updateState(domain)\n      } else {\n        showToast({\n          type: \"error\",\n          content: \"Error creating custom domain\"\n        })\n      }\n    })\n  }\n}\n","import { ArrowPathIcon, CheckIcon, ExclamationCircleIcon } from \"@heroicons/react/24/outline\"\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport {\n  customDomainConfig,\n  handleCustomDomainModalStepChange,\n  showCustomDomainModal,\n  showPurchaseDomainModal\n} from \"../../utils/customDomainUtils\"\nimport { isValidUrl } from \"../../utils/utils\"\n\nconst JWT_TOKEN_MUTATION = `\n  mutation DomainProviderJwtToken {\n    domainProviderJwtToken {\n      result\n      jwtToken\n      errors\n    }\n  }\n`\n\nconst UPSERT_CUSTOM_DOMAIN_MUTATION = `\n  mutation upsertCustomDomain($domain: String!) {\n    upsertCustomDomain(domain: $domain ) {\n      result\n      errors\n    }\n  }\n`\n\nconst DELETE_CUSTOM_DOMAIN_MUTATION = `\n  mutation deleteCustomDomain {\n    deleteCustomDomain {\n      result\n      errors\n    }\n  }\n`\n\nconst GET_DOMAIN_STATUS_QUERY = `\n  query domainStatus($domain: String!) {\n    domainStatus(domain: $domain)\n  }\n`\n\nexport default function CustomDomainSection({ customDomain, setDetailsValues, website }) {\n  const [showDeleteModal, setShowDeleteModal] = React.useState(false)\n  const [domainStatus, setDomainStatus] = React.useState(null)\n\n  const [{ fetching: jwtTokenFetching }, domainProviderJwtToken] = useMutation(JWT_TOKEN_MUTATION)\n  const [, upsertCustomDomain] = useMutation(UPSERT_CUSTOM_DOMAIN_MUTATION)\n  const [{ fetching: deleteFetching }, deleteCustomDomain] = useMutation(DELETE_CUSTOM_DOMAIN_MUTATION)\n\n  const [{ data, fetching: statusFeching, error }, reexecuteQuery] = useQuery({\n    query: GET_DOMAIN_STATUS_QUERY,\n    variables: { domain: customDomain },\n    requestPolicy: \"network-only\"\n  })\n\n  React.useEffect(() => {\n    if (data?.domainStatus) {\n      setDomainStatus(data.domainStatus)\n    }\n  }, [data])\n\n  const { showToast } = useToast()\n\n  const handleAddOrEditDomain = () => {\n    domainProviderJwtToken().then((result) => {\n      if (result?.data?.domainProviderJwtToken?.result === \"success\") {\n        const token = result.data.domainProviderJwtToken.jwtToken\n\n        const config = customDomainConfig(token)\n\n        showCustomDomainModal(config)\n        window.addEventListener(\n          \"onEntriStepChange\",\n          (event) =>\n            handleCustomDomainModalStepChange({\n              event,\n              upsertCustomDomain,\n              showToast,\n              updateState: setDetailsValues\n            }),\n          false\n        )\n      } else {\n        let errorMessage = \"There was an error getting your custom domain.\"\n        if (result.data?.domainProviderJwtToken?.errors) errorMessage += ` ${result.data.domainProviderJwtToken.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n\n  const handleDeleteDomain = () => {\n    deleteCustomDomain().then((result) => {\n      if (result?.data?.deleteCustomDomain?.result === \"success\") {\n        setDetailsValues(\"\")\n        setShowDeleteModal(false)\n        showToast({\n          type: \"success\",\n          content: \"Custom domain deleted successfully\"\n        })\n      } else {\n        let errorMessage = \"There was an error deleting your custom domain.\"\n        if (result.data?.deleteCustomDomain?.errors) errorMessage += ` ${result.data.deleteCustomDomain.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n  const handleRefreshDomain = () => {\n    reexecuteQuery()\n  }\n\n  const handlePurchaseDomain = () => {\n    domainProviderJwtToken().then((result) => {\n      if (result?.data?.domainProviderJwtToken?.result === \"success\") {\n        const token = result.data.domainProviderJwtToken.jwtToken\n\n        const config = customDomainConfig(token)\n\n        showPurchaseDomainModal(config)\n        window.addEventListener(\n          \"onEntriStepChange\",\n          (event) =>\n            handleCustomDomainModalStepChange({\n              event,\n              upsertCustomDomain,\n              showToast,\n              updateState: setDetailsValues\n            }),\n          false\n        )\n      } else {\n        let errorMessage = \"There was an error getting your custom domain.\"\n        if (result.data?.domainProviderJwtToken?.errors) errorMessage += ` ${result.data.domainProviderJwtToken.errors}`\n        showToast({\n          type: \"error\",\n          content: errorMessage\n        })\n      }\n    })\n  }\n\n  const domainActive = domainStatus === \"active\"\n\n  const domainStatsIcon = statusFeching ? (\n    <ArrowPathIcon className=\"inline-block h-6 w-6 animate-spin rounded-full bg-orange p-1 text-white\" />\n  ) : error ? (\n    <span className=\"text-red\">Error getting status</span>\n  ) : domainActive ? (\n    <CheckIcon className=\"inline-block h-6 w-6 rounded-full bg-green p-1 text-white\" />\n  ) : (\n    <ExclamationCircleIcon className=\"inline-block h-6 w-6 rounded-full bg-red p-1 text-white\" />\n  )\n\n  const domainStatsText = statusFeching ? \"Processing\" : error ? \"Error\" : domainActive ? \"Active\" : \"Activating\"\n\n  const cleanWebsite = customDomain\n    ? \"\"\n    : website && isValidUrl(website)\n    ? `(${new URL(website).hostname.replace(/^www\\./, \"\")})`\n    : \"(yourwebsite.com)\"\n\n  return (\n    <div className=\"flex flex-col\">\n      <Typography variant=\"title\">Custom domain {cleanWebsite}</Typography>\n      <Typography variant=\"smSubtitle\">\n        This will point your personal web address to your Heal.me website.\n        <br />\n        Heal.me partners with Entri to connect and configure custom domains.\n      </Typography>\n      {customDomain && (\n        <>\n          <div\n            className={twMerge(\n              \"mt-2 flex w-full items-start justify-start gap-1 rounded-lg border p-4 md:flex-col md:gap-2\",\n              domainActive ? \"border-green bg-green-light\" : \"\",\n              statusFeching ? \"border-orange bg-orange-light\" : \"\",\n              !statusFeching && (error || !domainActive) ? \"border-gray-light bg-gray-ultralight\" : \"\"\n            )}>\n            <div className=\"flex flex-col items-start justify-start gap-1\">\n              <Typography variant=\"smSubtitle\">Custom domain:</Typography>\n              <a href={`https://${customDomain}`} target=\"_blank\" rel=\"noreferrer\" className=\"font-bold text-teal\">\n                {`https://${customDomain}`}\n              </a>\n            </div>\n            <div className=\"ml-auto flex flex-col items-start justify-start gap-1 md:ml-0\">\n              <Typography variant=\"smSubtitle\">Status:</Typography>\n              <div className=\"flex items-center justify-start gap-1\">\n                <div className=\"flex items-start justify-start gap-2\">\n                  {domainStatsIcon}\n\n                  <div className=\"font-bold\">{domainStatsText}</div>\n                </div>\n              </div>\n            </div>\n          </div>\n          {!statusFeching && !domainActive && (\n            <Typography variant=\"smSubtitle\" className=\"mt-2\">\n              It may take up to 48 hours for the domain to be fully active.\n              <br />\n              If it takes more than that, please contact support.\n            </Typography>\n          )}\n\n          <div className=\"mt-4 flex items-center justify-start gap-2\">\n            <Button onClick={handleAddOrEditDomain}>Manage</Button>\n            <Button\n              type=\"secondary\"\n              onClick={() => {\n                setShowDeleteModal(true)\n              }}>\n              Delete\n            </Button>\n            <Button type=\"secondary\" onClick={handleRefreshDomain}>\n              Refresh\n            </Button>\n          </div>\n        </>\n      )}\n      {!customDomain && (\n        <>\n          <Button className=\"my-2 w-max\" disabled={jwtTokenFetching} onClick={handleAddOrEditDomain}>\n            Connect my website domain\n          </Button>\n          <Button type=\"link\" className=\"w-fit text-left text-sm\" onClick={handlePurchaseDomain}>\n            Purchase a website domain\n          </Button>\n        </>\n      )}\n\n      <AnimatedModal\n        visible={showDeleteModal}\n        hideModal={() => {\n          setShowDeleteModal(false)\n        }}\n        showFooter={true}\n        actionButtonCopy=\"Delete domain\"\n        actionButtonType=\"destructive\"\n        onSave={handleDeleteDomain}\n        header={\"Delete custom domain\"}\n        saveDisabled={deleteFetching}>\n        <Typography variant=\"smSubtitle\">\n          Are you sure you want to delete your custom domain? Your custom domain will stop working but your short link\n          will continue working.\n        </Typography>\n      </AnimatedModal>\n    </div>\n  )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { EditableValue, ShortUrlInput } from \"../../components/shared/Inputs\"\nimport { Divider } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport CustomDomainSection from \"../ProfileEdit/CustomDomainSection\"\n\nconst UPDATE_SHORT_LINK_MUTATION = `\n  mutation UpdateShortLink($shortLink: String!) {\n    updateShortLink(shortLink: $shortLink) {\n      result\n      errors\n    }\n  }\n`\n\nconst WebsiteDomain = ({ shortLink, customDomain, customDomainEnabled, website }) => {\n  const [shortLinkValue, setShortLinkValue] = useState(shortLink)\n  const [lastSavedShortLink, setLastSavedShortLink] = useState(shortLink)\n  const [customDomainValue, setCustomDomainValue] = useState(customDomain)\n\n  const [{ fetching }, updateShortLink] = useMutation(UPDATE_SHORT_LINK_MUTATION)\n\n  const { showToast } = useToast()\n\n  const onSave = () => {\n    updateShortLink({ shortLink: shortLinkValue }).then((result) => {\n      if (result?.data?.updateShortLink?.result === \"success\") {\n        setLastSavedShortLink(shortLinkValue)\n        showToast(\"Short link updated successfully\")\n      } else {\n        console.error(result) // eslint-disable-line no-console\n        setShortLinkValue(lastSavedShortLink)\n        const errorMessage = result?.data?.updateShortLink?.errors?.join(\" \") || \"An error occurred\"\n        showToast({\n          content: errorMessage,\n          type: \"error\"\n        })\n      }\n    })\n  }\n\n  return (\n    <>\n      <Typography as=\"h2\" variant=\"h4\" className=\"mb-4\">\n        Shortlink and custom domain\n      </Typography>\n      <div className=\"flex w-max flex-col items-start justify-start gap-6 rounded-xl border border-gray-light p-8 md:w-full\">\n        <EditableValue\n          name=\"Heal.me domain (heal.me/link)\"\n          hint=\"Set your short profile link so it's easy to share your profile.\"\n          value={shortLinkValue ? `https://heal.me/${shortLinkValue}` : null}\n          saveDisabled={shortLinkValue?.length < 1 || shortLinkValue === lastSavedShortLink}\n          disabled={fetching}\n          onSave={onSave}\n          onCancel={() => setShortLinkValue(lastSavedShortLink)}\n          className={\"w-full\"}>\n          <>\n            <ShortUrlInput\n              name=\"Short link\"\n              value={shortLinkValue || \"\"}\n              onChange={(e) => {\n                const newValue = e.target.value.toLowerCase().replace(/[^a-z0-9_-]/g, \"\")\n                setShortLinkValue(newValue)\n              }}\n            />\n            <Typography variant=\"micro\">Only lowercase letters, numbers, hyphen and underscore allowed</Typography>\n          </>\n        </EditableValue>\n\n        {customDomainEnabled && (\n          <>\n            <Divider className=\"my-2\" />\n            <CustomDomainSection\n              customDomain={customDomainValue}\n              setDetailsValues={setCustomDomainValue}\n              website={website}\n            />\n          </>\n        )}\n      </div>\n    </>\n  )\n}\n\nexport default WebsiteDomain\n","import React from \"react\"\n\nimport { Divider } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport SeoSettings from \"./SeoSettings\"\nimport WebsiteDomain from \"./WebsiteDomain\"\n\nconst WebsiteSettingsComponent = ({\n  shortLink,\n  customDomain,\n  customDomainEnabled,\n  website,\n  websiteMetadata,\n  isImpersonating\n}) => (\n  <>\n    <div>\n      <div className=\"mb-9 flex flex-col sm:mb-4\">\n        <Typography as=\"h1\" variant=\"h3\">\n          Website Settings\n        </Typography>\n      </div>\n    </div>\n    <WebsiteDomain\n      shortLink={shortLink}\n      customDomain={customDomain}\n      customDomainEnabled={customDomainEnabled}\n      website={website}\n    />\n    {isImpersonating && (\n      <>\n        <Divider className=\"my-10\" />\n        <SeoSettings websiteMetadata={websiteMetadata} />\n      </>\n    )}\n  </>\n)\n\nexport default function WebsiteSettings({ ...props }) {\n  return (\n    <ToastProvider>\n      <GraphQLProvider>\n        <WebsiteSettingsComponent {...props} />\n      </GraphQLProvider>\n    </ToastProvider>\n  )\n}\n","require(\"@rails/ujs\").start()\nrequire(\"channels/consumer\")\nrequire(\"swiper\")\nrequire(\"../src/application/setup\")\nrequire(\"../src/application/misc\")\nrequire(\"../src/application/amplitude\")\nrequire(\"../src/application/tabs\")\nrequire(\"../src/application/forms\")\nrequire(\"../src/application/quiz\")\nrequire(\"../src/application/toggle-controls\")\nrequire(\"../src/application/intlTelInput\")\nrequire(\"../src/application/utils\")\n\nimport \"controllers\"\nimport \"../stylesheets/application.css.sass\"\nimport \"react-tooltip/dist/react-tooltip.css\"\n\nimport ReactOnRails from \"react-on-rails\"\nimport { setLicenseKey } from \"survey-core\"\n\nimport { wrapWithErrorBoundary } from \"../@core/HoneyBadgerErrorBoundary\"\nimport ClientBookings from \"../components/client_bookings/ClientBookings\"\nimport ClientUploadButton from \"../components/ClientUploadButton\"\nimport BrowseTherapiesCTA from \"../components/header/BrowseTherapiesCTA\"\nimport MobileMenu from \"../components/header/MobileMenu\"\nimport SearchBar from \"../components/header/SearchBar\"\nimport InviteClients from \"../components/invite_clients/InviteClients\"\nimport ReviewBookNext from \"../components/leave_review/ReviewBookNext\"\nimport ReviewClientInfo from \"../components/leave_review/ReviewClientInfo\"\nimport ReviewConfirm from \"../components/leave_review/ReviewConfirm\"\nimport ReviewEndorsements from \"../components/leave_review/ReviewEndorsements\"\nimport ReviewIntro from \"../components/leave_review/ReviewIntro\"\nimport ReviewRating from \"../components/leave_review/ReviewRating\"\nimport ReviewTextReview from \"../components/leave_review/ReviewTextReview\"\nimport ListPracticeCTA from \"../components/ListPracticeCTA\"\nimport PortalHeader from \"../components/PortalHeader\"\nimport ProCalendar from \"../components/pro_portal/calendar/ProCalendar\"\nimport ClientDirectory from \"../components/pro_portal/clients/ClientDirectory\"\nimport DownloadMobileApp from \"../components/pro_portal/dashboard/DownloadMobileApp\"\nimport PaymentDirectory from \"../components/pro_portal/payments/PaymentDirectory\"\nimport ProInbox from \"../components/pro_portal/ProInbox\"\nimport ProfilePhoneNumber from \"../components/ProfilePhoneNumber\"\nimport ClientUpload from \"../components/shared/ClientUpload\"\nimport EnterPhone from \"../components/shared/EnterPhone\"\nimport SideNavigation from \"../components/SideNavigation\"\nimport BookableEvents from \"../pages/BookableEvents\"\nimport ClientBillingPage from \"../pages/Client/ClientBillingPage\"\nimport ClientIntakeForm from \"../pages/Client/ClientIntakeForm\"\nimport ClientNotes from \"../pages/Client/ClientNotes\"\nimport ClientOverview from \"../pages/Client/ClientOverview\"\nimport HomePage from \"../pages/HomePage\"\nimport IntakeForm from \"../pages/IntakeForm\"\nimport IntakeFormsPage from \"../pages/IntakeFormsPage\"\nimport ManageAppointmentsConsumer from \"../pages/ManageAppointmentsConsumer\"\nimport ManageEventRegistration from \"../pages/ManageEventRegistration\"\nimport ManagePaymentMethods from \"../pages/ManagePaymentMethods/ManagePaymentMethods\"\nimport PersonalSettings from \"../pages/PersonalSettings\"\nimport PortalGiftCardTemplatesPage from \"../pages/PortalGiftCardTemplates/PortalGiftCardTemplatesPage\"\nimport PortalServicesLocations from \"../pages/PortalServices/PortalServicesLocations\"\nimport PortalServicesPage from \"../pages/PortalServices/PortalServicesPage\"\nimport ProCommunicationSettings from \"../pages/PortalSettings/Communications/ProCommunicationSettings\"\nimport ProCommunicationTemplates from \"../pages/PortalSettings/Communications/ProCommunicationTemplates\"\nimport ConferencingSettingsPage from \"../pages/PortalSettings/ConferencingSettings\"\nimport PaypalSettings from \"../pages/PortalSettings/Payments/PaypalSettings\"\nimport SquarePaymentsSettings from \"../pages/PortalSettings/Payments/SquarePaymentsSettings\"\nimport StripePaymentsSettings from \"../pages/PortalSettings/Payments/StripePaymentsSettings\"\nimport ProBookingSettings from \"../pages/PortalSettings/ProBookingSettings\"\nimport ProCalendarSettings from \"../pages/PortalSettings/ProCalendarSettings\"\nimport ProMainSettings from \"../pages/PortalSettings/ProMainSettings\"\nimport ProPaymentSettings from \"../pages/PortalSettings/ProPaymentSettings\"\nimport PractitionerLandingPage from \"../pages/PractitionerLandingPage/PractitionerLandingPage\"\nimport CombinedInformationPage from \"../pages/ProfileEdit/CombinedInformationPage\"\nimport PersonalInformationPage from \"../pages/ProfileEdit/PersonalInformationPage\"\nimport PracticeInformationPage from \"../pages/ProfileEdit/PracticeInformationPage\"\nimport ProfileEditCredentialsV2 from \"../pages/ProfileEdit/ProfileEditCredentialsV2\"\nimport ProfileEditAudience from \"../pages/ProfileEditAudience\"\nimport ProfileEditCredentials from \"../pages/ProfileEditCredentials\"\nimport ProfileEditDetails from \"../pages/ProfileEditDetails\"\nimport ProfileEditEndorsements from \"../pages/ProfileEditEndorsements\"\nimport ProfileEditLocations from \"../pages/ProfileEditLocations\"\nimport ProfileEditPhotos from \"../pages/ProfileEditPhotos\"\nimport ProfileEditServices from \"../pages/ProfileEditServices\"\nimport ProProfile from \"../pages/ProProfile\"\nimport ProProfileV2 from \"../pages/ProProfileV2\"\nimport ProReviews from \"../pages/ProReviews\"\nimport ProReviewsCompletedPage from \"../pages/ProReviews/ProReviewsCompletedPage\"\nimport ProReviewsEndorsementsPage from \"../pages/ProReviews/ProReviewsEndorsementsPage\"\nimport ProReviewsImportPage from \"../pages/ProReviews/ProReviewsImportPage\"\nimport ProReviewsPendingPage from \"../pages/ProReviews/ProReviewsPendingPage\"\nimport ProReviewsRequestPage from \"../pages/ProReviews/ProReviewsRequestPage\"\nimport ReferralProgramPage from \"../pages/ReferralProgramPage\"\nimport SearchPage from \"../pages/SearchPage\"\nimport TopNavSearchBox from \"../pages/SearchPage/TopNavSearchBox\"\nimport WebsiteBuilderPage from \"../pages/WebsiteBuilder/WebsiteBuilderPage\"\nimport WebsiteContentPage from \"../pages/WebsiteBuilder/WebsiteContentPage\"\nimport WebsiteDash from \"../pages/WebsiteDash\"\nimport WebsiteSettings from \"../pages/WebsiteSettings/WebsiteSettings\"\nimport dayJsPlugins from \"../utils/dayJsPlugins\" // eslint-disable-line no-unused-vars\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  // Note: we've removed turbolinks, but much of the legacy code still listens for this event. Eventually we want to remove even these events.\n  document.dispatchEvent(new Event(\"turbolinks:load\", { bubbles: true, cancelable: true }))\n})\n\nsetLicenseKey(\n  \"ZjY4NTJmMjItNzgzNS00MWY0LWFjNzktMTZhNjFhOTUzNTJkJmRvbWFpbnM6aGVhbC5tZSxsb2NhbGhvc3Q6MzAwMDsxPTIwMjUtMDctMTksMj0yMDI1LTA3LTE5LDQ9MjAyNS0wNy0xOQ==\"\n)\n\nconst components = {\n  ProfilePhoneNumber,\n  InviteClients,\n  ListPracticeCTA,\n  DownloadMobileApp,\n  ProCalendar,\n  ProInbox,\n  ProMainSettings,\n  ProCalendarSettings,\n  ProReviews,\n  BrowseTherapiesCTA,\n  SearchBar,\n  MobileMenu,\n  ClientDirectory,\n  PaymentDirectory,\n  ClientUpload,\n  EnterPhone,\n  ManageAppointmentsConsumer,\n  ManageEventRegistration,\n  ClientBookings,\n  ProCommunicationSettings,\n  ProCommunicationTemplates,\n  SideNavigation,\n  ClientUploadButton,\n  ProfileEditDetails,\n  ProfileEditCredentials,\n  ProfileEditEndorsements,\n  ProfileEditPhotos,\n  ProfileEditServices,\n  ProfileEditLocations,\n  ProfileEditAudience,\n  ProPaymentSettings,\n  StripePaymentsSettings,\n  SquarePaymentsSettings,\n  PaypalSettings,\n  ProBookingSettings,\n  PortalHeader,\n  PersonalSettings,\n  ReviewIntro,\n  ReviewClientInfo,\n  ReviewRating,\n  ReviewEndorsements,\n  ReviewTextReview,\n  ReviewBookNext,\n  ReviewConfirm,\n  ManagePaymentMethods,\n  HomePage,\n  ProProfile,\n  ProProfileV2,\n  SearchPage,\n  TopNavSearchBox,\n  BookableEvents,\n  ClientNotes,\n  IntakeFormsPage,\n  IntakeForm,\n  ClientOverview,\n  ClientIntakeForm,\n  ClientBillingPage,\n  WebsiteBuilderPage,\n  WebsiteContentPage,\n  WebsiteDash,\n  WebsiteSettings,\n  PortalServicesPage,\n  PortalServicesLocations,\n  ProReviewsCompletedPage,\n  ProReviewsImportPage,\n  ProReviewsPendingPage,\n  ProReviewsRequestPage,\n  ProReviewsEndorsementsPage,\n  PersonalInformationPage,\n  ProfileEditCredentialsV2,\n  PracticeInformationPage,\n  PractitionerLandingPage,\n  ReferralProgramPage,\n  CombinedInformationPage,\n  PortalGiftCardTemplatesPage,\n  ConferencingSettingsPage\n}\n\nObject.entries(components).forEach(([name, Component]) => {\n  ReactOnRails.register({\n    [name]: wrapWithErrorBoundary(Component)\n  })\n})\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\nimport LoadingSpinner from \"../shared/LoadingSpinner\"\n\nimport ChooseMethod from \"./ChooseMethod\"\nimport Confirmation from \"./Confirmation\"\nimport CopyPaste from \"./CopyPaste\"\nimport Review from \"./Review\"\n\nconst InviteClientsMutation = `\n  mutation InviteClients($clients: [ClientInput!]!) {\n    inviteClients (clients: $clients) {\n      erroredClients {\n        email\n      }\n    }\n  }\n`\n\nexport default function InviteClients() {\n  const [active, setActive] = useState(\"file\")\n  const [step, setStep] = useState(1)\n  const [clients, setClients] = useState([])\n  const [existingClients, setExistingClients] = useState([])\n  const [field, setField] = useState(\"\")\n  const [, inviteClients] = useMutation(InviteClientsMutation)\n  const [errorMessage, setErrorMessage] = useState(\"\")\n\n  const handleChoiceUpdate = (newVal) => {\n    setActive(newVal)\n  }\n\n  const handleChoice = (choice) => {\n    if (choice === \"file\") {\n      setStep(2)\n      sendAmplitudeData(\"import method selected\", { \"Method Selected\": \"CSV\" })\n    } else if (choice === \"single\") {\n      window.location.href = \"/portal/clients?show_add_client_form=1\"\n    } else {\n      setStep(3)\n      sendAmplitudeData(\"import method selected\", { \"Method Selected\": \"Copy Paste\" })\n    }\n  }\n\n  const handleFieldChange = (val) => {\n    sendAmplitudeData(\"import row edited\")\n    setField(val)\n  }\n\n  const handleFileUpload = () => {\n    setStep(4)\n    sendAmplitudeData(\"csv uploaded\")\n  }\n\n  const review = (clients) => {\n    setClients(clients)\n    setStep(4)\n  }\n\n  const editContacts = () => {\n    setStep(3)\n  }\n\n  const submitContacts = () => {\n    setStep(6)\n    inviteClients({ clients: clients }).then((result) => {\n      if (result.error) {\n        console.error(result.error)\n      } else {\n        sendAmplitudeData(\"import clients submitted\", {\n          \"Total Rows\": clients.length,\n          \"Errored Invites\": result.data.inviteClients.erroredClients.length\n        })\n        setExistingClients(result.data.inviteClients.erroredClients)\n        setStep(5)\n      }\n    })\n  }\n\n  const reviewInput = (userInput, invitationType) => {\n    const clients = []\n    // split input on linebreaks\n    const array = userInput.split(/\\r?\\n/)\n    array.forEach((row) => {\n      // split row on commas\n      const rowArray = row.split(/[,\\t]+/)\n      if (validateEmail(rowArray[0])) {\n        clients.push({\n          email: rowArray[0],\n          firstName: rowArray[1],\n          lastName: rowArray[2],\n          phone: rowArray[3],\n          clientType: \"invited\",\n          invitedFrom: invitationType\n        })\n      }\n    })\n    if (clients.length) {\n      if (invitationType == \"csv_upload\") {\n        sendAmplitudeData(\"csv upload sucess\", { \"Valid Rows\": clients.length })\n      } else {\n        sendAmplitudeData(\"copy paste sucess\", { \"Valid Rows\": clients.length })\n      }\n\n      review(clients)\n    } else {\n      if (invitationType == \"csv_upload\") {\n        sendAmplitudeData(\"csv upload failed\")\n      } else {\n        sendAmplitudeData(\"copy paste failed\")\n      }\n\n      setErrorMessage(\n        invitationType == \"csv_upload\"\n          ? \"Please make sure the file contains at least one correct email and the formatting of your file is in this order: Email | First name | Last name | Phone number\"\n          : \"Please make sure you entered at least one correct email and you entered the information in this order: Email | First name | Last name | Phone number\"\n      )\n    }\n    handleFieldChange(userInput)\n  }\n\n  const validateEmail = (email) => {\n    const re =\n      /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n    return re.test(email)\n  }\n\n  const SwitchCase = ({ value }) => {\n    switch (value) {\n      case 1:\n        return (\n          <ChooseMethod\n            handleChoice={handleChoice}\n            active={active}\n            handleChoiceUpdate={handleChoiceUpdate}\n            handleFileUpload={handleFileUpload}\n            reviewInput={reviewInput}\n          />\n        )\n      case 2:\n        return <div />\n      case 3:\n        return <CopyPaste field={field} reviewInput={reviewInput} errorMessage={errorMessage} />\n      case 4:\n        return <Review clients={clients} submitContacts={submitContacts} editContacts={editContacts} />\n      case 5:\n        return <Confirmation clients={clients} existingClients={existingClients} />\n      case 6:\n        return <LoadingSpinner />\n    }\n  }\n\n  return (\n    <div>\n      <SwitchCase value={step} />\n    </div>\n  )\n}\n","import React from \"react\"\n\nimport { sendAmplitudeData } from \"../support/amplitude-react\"\nexport default function ListPracticeCTA({ classname, amplitudeData, styling }) {\n  const sendAnalytics = () => {\n    sendAmplitudeData(amplitudeData)\n    fbq(\"trackCustom\", \"typeform_opened\")\n  }\n\n  const ctaUrl = \"/pro\"\n\n  return (\n    <div onClick={sendAnalytics} style={{ display: \"flex\" }}>\n      <a href={ctaUrl} className={classname} style={styling}>\n        Join as a practitioner\n      </a>\n    </div>\n  )\n}\n","import React from \"react\"\n\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\n\nimport ClientUpload from \"./shared/ClientUpload\"\n\nexport default function ClientUploadButton(props) {\n  return (\n    <GraphQLProvider>\n      <ClientUpload {...props} />\n    </GraphQLProvider>\n  )\n}\n","import React from \"react\"\n\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport ContentTab from \"./ContentTab\"\nimport { WebsiteBuilderProvider } from \"./WebsiteBuilderContext\"\nimport WebsitePreviewView from \"./WebsitePreviewView\"\n\nimport \"../../components/shared/wysiwyg.sass\"\n\nexport default function WebsiteBuilderPage(props) {\n  return (\n    <ToastProvider>\n      <GraphQLProvider>\n        <WebsiteBuilderProvider {...props}>\n          <WebsitePreviewView>\n            <div className=\"p-8 pt-6\">\n              <ContentTab />\n            </div>\n          </WebsitePreviewView>\n        </WebsiteBuilderProvider>\n      </GraphQLProvider>\n    </ToastProvider>\n  )\n}\n","import React from \"react\"\n\nimport PersonalInformationUser from \"./PersonalInformationUser\"\nimport ProfileEditProvider from \"./ProfileEditProvider\"\n\nexport default function PersonalInformationPage({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <PersonalInformationUser {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import React from \"react\"\n\nimport PersonalInformationPractice from \"./PersonalInformationPractice\"\nimport ProfileEditProvider from \"./ProfileEditProvider\"\n\nexport default function PracticeInformationPage({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <PersonalInformationPractice {...props} />\n    </ProfileEditProvider>\n  )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\n\nimport PersonalInformationPractice from \"./PersonalInformationPractice\"\nimport PersonalInformationUser from \"./PersonalInformationUser\"\nimport ProfileEditProvider from \"./ProfileEditProvider\"\n\nexport default function CombinedInformationPage({ profileStatusData, ...props }) {\n  return (\n    <ProfileEditProvider profileStatusData={profileStatusData}>\n      <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n        <div className=\"flex flex-col\">\n          <Typography variant=\"h3\" as=\"h1\">\n            Details\n          </Typography>\n          <Typography variant=\"subtitle\">Edit information about you and your practice</Typography>\n        </div>\n      </div>\n\n      <div className=\"space-y-8\">\n        <section>\n          <PersonalInformationUser {...props} />\n          <PersonalInformationPractice {...props} />\n        </section>\n      </div>\n    </ProfileEditProvider>\n  )\n}\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { ButtonLink } from \"../../components/shared/Links\"\n\nconst CTALink = ({ className, href = \"/practitioner-search\", children = \"Find a practitioner\", ...rest }) => (\n  <ButtonLink\n    {...rest}\n    className={twMerge(\"block px-10 py-4 text-center hover:shadow active:bg-teal-dark sm:w-full\", className)}\n    href={href}>\n    {children}\n  </ButtonLink>\n)\n\nexport default CTALink\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\n\nimport CTALink from \"./CTALink\"\n\nconst BottomCTA = () => (\n  <section className=\"mx-auto flex max-w-splash-container py-10 pb-20 hplg:px-8 sm:p-0 sm:py-5 sm:pb-10\">\n    <div className=\"w-full bg-[url('~/public/images/homepage/bottom-cta.webp')] bg-cover bg-no-repeat bg-blend-multiply\">\n      <div className=\"h-full w-full bg-black bg-opacity-[0.64] p-24 sm:flex sm:h-[320px] sm:flex-col sm:justify-center sm:p-8\">\n        <Typography variant=\"hxl\" className=\"leading-tight text-white sm:text-[24px]\">\n          Explore over 4,000+ holistic practitioners.\n        </Typography>\n        <Typography variant=\"h4\" as=\"p\" className=\"mb-6 mt-4 font-normal leading-normal text-white\">\n          The best practitioners are on Heal.me, book a session today.\n        </Typography>\n        <CTALink href=\"/practitioner-search\">Find a practitioner</CTALink>\n      </div>\n    </div>\n  </section>\n)\n\nexport default BottomCTA\n","import React, { useState, useEffect } from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\n\nimport CTALink from \"./CTALink\"\n\nconst bgImageClasses = [\n  \"bg-[url('~/public/images/homepage/hero_images/image-1.webp')]\",\n  \"bg-[url('~/public/images/homepage/hero_images/image-2.webp')]\",\n  \"bg-[url('~/public/images/homepage/hero_images/image-3.webp')]\",\n  \"bg-[url('~/public/images/homepage/hero_images/image-4.webp')]\",\n  \"bg-[url('~/public/images/homepage/hero_images/image-5.webp')]\"\n]\nconst randomIndex = Math.floor(Math.random() * bgImageClasses.length)\nconst currentBgImageClass = bgImageClasses[randomIndex]\n\nconst HeroSection = () => {\n  const [ctaButtonIsSticky, setCtaButtonIsSticky] = useState(false)\n  const [ctaButtonLeftOffset, setCtaButtonLeftOffset] = useState(0)\n\n  useEffect(() => {\n    const ctaButton = document.getElementById(\"cta-button\")\n    const stickyPoint = ctaButton.offsetTop\n    setCtaButtonLeftOffset(ctaButton.offsetLeft)\n\n    const handleScroll = () => setCtaButtonIsSticky(window.scrollY > stickyPoint)\n\n    window.addEventListener(\"scroll\", handleScroll)\n    handleScroll()\n\n    return () => window.removeEventListener(\"scroll\", handleScroll)\n  }, [])\n\n  return (\n    <section className=\"h-[75vh]\">\n      <div\n        className={`mb-10 h-[75vh] bg-cover bg-center bg-no-repeat bg-blend-multiply sm:mb-5 ${currentBgImageClass}`}>\n        <div className=\"h-full w-full bg-black bg-opacity-[0.64]\">\n          <div className=\"mx-auto flex h-full max-w-splash-container items-center hplg:px-8 sm:items-end sm:px-6\">\n            <div className=\"flex max-w-3xl flex-col gap-4 py-24 sm:pb-16\">\n              <Typography variant=\"hxl\" className=\"leading-tight text-white\">\n                Book with 4000+\n                <br />\n                holistic practitioners\n              </Typography>\n              <Typography variant=\"h3\" as=\"p\" className=\"mb-4 font-normal leading-normal text-white\">\n                From massage therapists to reiki masters, nutritionists to naturopaths, and everything in between.\n              </Typography>\n              {!ctaButtonIsSticky && (\n                <CTALink id=\"cta-button\" href=\"/practitioner-search\">\n                  Find a practitioner\n                </CTALink>\n              )}\n            </div>\n          </div>\n        </div>\n      </div>\n      {ctaButtonIsSticky && (\n        <div\n          className=\"fixed top-[12px] z-9998 py-2 sm:-left-4 sm:top-[63px] sm:mx-4 sm:w-full sm:border-y sm:border-gray-light sm:bg-white sm:px-6 sm:py-4\"\n          style={{ left: ctaButtonLeftOffset }}>\n          <CTALink id=\"cta-button\" href=\"/practitioner-search\" className=\"py-2\">\n            Find a practitioner\n          </CTALink>\n        </div>\n      )}\n    </section>\n  )\n}\n\nexport default HeroSection\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\n\nimport CTALink from \"./CTALink\"\n\nconst PractitionerJoinCTA = () => (\n  <section className=\"mx-auto flex max-w-splash-container px-0 py-10 sm:py-5\">\n    <div className=\"w-[816px] bg-orange-light px-20 py-24 hplg:w-full sm:p-8\">\n      <Typography variant=\"h2\" className=\"!leading-tight\">\n        <span>Holistic practitioner? Apply today.</span>\n      </Typography>\n      <p className=\"mb-6 mt-4\">\n        Grow your practice with the all-in-one platform and marketplace for holistic professionals.\n      </p>\n      <CTALink href=\"https://heal.me/lp/application\">Apply Now</CTALink>\n    </div>\n    <div className=\"w-[384px] hplg:hidden\">\n      <img className=\"h-full w-full\" src=\"/images/homepage/pro-cta.webp\" alt=\"Practitioner\" loading=\"lazy\" />\n    </div>\n  </section>\n)\n\nexport default PractitionerJoinCTA\n","import React, { useEffect, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { practitionerWebsiteUrl } from \"../../@core/practitioner/practitioner.utils\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport ReviewStars from \"../../components/shared/ReviewStars\"\nimport Typography from \"../../components/shared/Typography\"\n\nconst ReviewCard = ({ review, className }) => {\n  const isAnonymous = review.isAnonymous\n  const reviewText = review.review.trim()\n  const name = review.client?.firstName || review.user?.firstName\n  const lastName = review.client?.lastName || review.user?.lastName\n  const firstName = name && name.split(\" \")[0]\n  const firstInitial = firstName && `${firstName[0]}.`?.toUpperCase()\n  const lastInitial = (lastName && `${lastName[0]}.`?.toUpperCase()) || (name && name.split(\" \")[1]?.toUpperCase())\n\n  return (\n    <Box\n      as=\"a\"\n      href={practitionerWebsiteUrl(review.practice.user, review.practice)}\n      target=\"_blank\"\n      key={review.id}\n      keepBorderInMobile={true}\n      className={twMerge(\n        \"flex min-h-[328px] flex-col transition-opacity duration-700 ease-in-out focus:outline-none focus:ring-4 sm:min-h-[285px]\",\n        className\n      )}>\n      <div className=\"line-clamp-5 text-black\" dangerouslySetInnerHTML={{ __html: reviewText }}></div>\n      <div className=\"mt-auto\">\n        <div className=\"flex w-full flex-wrap items-center gap-2\">\n          <Typography variant=\"small\" as=\"div\" className=\"hidden text-gray-dark sm:block\">\n            {isAnonymous ? \"Anonymous\" : `${firstInitial} ${lastInitial}`} • {review.createdAtAgoInWords}\n          </Typography>\n          <Typography variant=\"small\" as=\"div\" className=\"text-gray-dark sm:hidden\">\n            {isAnonymous ? \"Anonymous\" : `${firstName}${lastInitial ? ` ${lastInitial}` : \"\"}`} •{\" \"}\n            {review.createdAtAgoInWords}\n          </Typography>\n          <ReviewStars rating={review.rating} />\n        </div>\n        <Divider className=\"my-4\" />\n        <div className=\"flex w-full items-center gap-3 truncate\">\n          <img\n            src={review.practice.user.smallPhotoUrl}\n            alt=\"Practitioner photo\"\n            className=\"h-12 w-12 rounded-full object-cover object-center\"\n          />\n          <div className=\"flex flex-col truncate\">\n            <div className=\"flex items-center gap-1\">\n              <span className=\"truncate font-bold\">{review.practice.user.name}</span>\n              <img className=\"h-5 w-5\" src=\"/images/email/verified.png\" alt=\"Verified\" />\n            </div>\n            <Typography variant=\"smSubtitle\" className=\"truncate\">\n              {review.practice.user.title}\n            </Typography>\n          </div>\n        </div>\n      </div>\n    </Box>\n  )\n}\n\nconst ReviewsSection = ({ reviews }) => {\n  const defaultNumReviewsShown = 3\n  const [reviewsState, setReviewsState] = useState({\n    numReviewsShown: defaultNumReviewsShown,\n    shownReviews: reviews.slice(0, defaultNumReviewsShown),\n    nextReviewIndex: defaultNumReviewsShown,\n    nextSlotIndex: 0\n  })\n  const [startAnimation, setStartAnimation] = useState(false)\n\n  useEffect(() => {\n    if (reviews.length === 0) return\n\n    const interval = setInterval(() => {\n      setStartAnimation(true)\n      setTimeout(() => {\n        setReviewsState((prevState) => {\n          const nextReview = reviews[prevState.nextReviewIndex]\n          const newShownReviews = [...prevState.shownReviews]\n          newShownReviews[prevState.nextSlotIndex] = nextReview\n          return {\n            ...prevState,\n            shownReviews: newShownReviews,\n            nextReviewIndex: (prevState.nextReviewIndex + 1) % reviews.length\n          }\n        })\n      }, 650)\n\n      setTimeout(() => {\n        setStartAnimation(false)\n        setReviewsState((prevState) => ({\n          ...prevState,\n          nextSlotIndex: (prevState.nextSlotIndex + 1) % prevState.numReviewsShown\n        }))\n      }, 700)\n    }, 3000)\n    return () => clearTimeout(interval)\n  }, [])\n\n  return (\n    <section className=\"mx-auto max-w-splash-container py-10 hplg:px-8 sm:px-6 sm:py-5\">\n      <Typography variant=\"h3\" as=\"h2\" className=\"mb-4\">\n        Recent client reviews\n      </Typography>\n      <div className=\"grid grid-cols-3 gap-4 sm:grid-cols-1\">\n        {reviewsState.shownReviews.map((review, i) => (\n          <ReviewCard\n            key={review.id}\n            review={review}\n            className={\n              startAnimation && i === reviewsState.nextSlotIndex % reviewsState.numReviewsShown\n                ? \"opacity-0\"\n                : \"opacity-100\"\n            }\n          />\n        ))}\n      </div>\n    </section>\n  )\n}\n\nexport default ReviewsSection\n","import { ArrowRightIcon, ChevronRightIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { ButtonLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\n\nconst TherapyCategoriesSection = ({ therapyCategories }) => {\n  const [showAll, setShowAll] = useState(false)\n\n  const limitedTherapyCategories = therapyCategories.slice(0, 13)\n  const fullTherapyCategories = therapyCategories\n\n  return (\n    <section className=\"mx-auto max-w-splash-container py-10 hplg:px-8 sm:px-6 sm:py-5\">\n      <Typography variant=\"h3\" as=\"h2\" className=\"mb-4\">\n        Explore holistic services\n      </Typography>\n      <div className=\"columns-4 lg:columns-3 md:columns-2 sm:hidden\">\n        {fullTherapyCategories.map((category) => (\n          <a\n            className=\"group mb-2 flex items-center text-gray-dark hover:font-bold hover:text-black hover:underline\"\n            href={`/practitioner-search?query=${encodeURIComponent(category)}`}\n            key={category}>\n            {category}\n            <span className=\"-mx-16 h-6 w-6 translate-x-16 text-gray-dark opacity-0 transition-opacity duration-500 ease-in-out group-hover:opacity-100\">\n              <ChevronRightIcon />\n            </span>\n          </a>\n        ))}\n      </div>\n      <ButtonLink\n        href=\"/practitioner-search\"\n        className=\"mt-4 flex items-center justify-center border border-teal bg-white text-teal active:bg-gray-light sm:hidden\">\n        Explore all services <ArrowRightIcon className=\"ml-2 h-6 w-6\" />\n      </ButtonLink>\n\n      <div className=\"hidden sm:flex sm:flex-col\">\n        {(showAll ? fullTherapyCategories : limitedTherapyCategories).map((category) => (\n          <a\n            className=\"mb-2 text-gray-dark hover:font-bold hover:text-black hover:underline\"\n            href={`/practitioner-search?query=${encodeURIComponent(category)}`}\n            key={category}>\n            {category}\n          </a>\n        ))}\n        {!showAll && (\n          <div className=\"w-full bg-gradient-to-t from-white sm:-mt-8\">\n            <Button type=\"tertiary\" onClick={() => setShowAll(true)} className=\"mx-auto sm:block\">\n              Show all services\n            </Button>\n          </div>\n        )}\n        {showAll && (\n          <ButtonLink\n            href=\"/practitioner-search\"\n            className=\"mt-4 hidden w-full items-center justify-center border border-teal bg-white text-teal sm:flex\">\n            Explore all services <ArrowRightIcon className=\"ml-2 h-6 w-6\" />\n          </ButtonLink>\n        )}\n      </div>\n    </section>\n  )\n}\n\nexport default TherapyCategoriesSection\n","import React from \"react\"\n\nimport BottomCTA from \"./HomePage/BottomCTA\"\nimport HeroSection from \"./HomePage/HeroSection\"\nimport PractitionerJoinCTA from \"./HomePage/PractitionerJoinCTA\"\nimport ReviewsSection from \"./HomePage/ReviewsSection\"\nimport TherapyCategoriesSection from \"./HomePage/TherapyCategoriesSection\"\n\nconst HomePage = ({ reviews, therapyCategories, isMobile }) => (\n  <div>\n    <HeroSection />\n    <ReviewsSection reviews={reviews} isMobile={isMobile} />\n    <TherapyCategoriesSection therapyCategories={therapyCategories} />\n    <PractitionerJoinCTA />\n    <BottomCTA />\n  </div>\n)\n\nexport default HomePage\n","import amplitude from \"amplitude-js\"\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  amplitude.getInstance().init(App.amplitude_id, null, {\n    includeUtm: true,\n    includeReferrer: true,\n    includeGclid: true,\n    includeFbclid: true\n  })\n\n  amplitude.getInstance().logEvent(`page view: ${App.page_name}`, { \"page title\": document.title })\n  if (App.user_id) {\n    amplitude.getInstance().setUserId(App.user_id)\n    amplitude.getInstance().setUserProperties({ \"profile type\": App.user_kind })\n  }\n\n  $(\"a:not([data-amplitude])\").click(() => {\n    const link = $(this).attr(\"href\")\n    const text = $(this).text()\n    if (link) {\n      amplitude.getInstance().logEvent(\"link clicked\", { href: link, screen: App.page_name, text: text })\n    }\n  })\n\n  $(\"[data-amplitude='home-search']\").click(() => {\n    amplitude.getInstance().logEvent(\"search from homepage\", { query: $(\"[data-amplitude='query']\").val() })\n  })\n\n  $(\"[data-amplitude='homepage-category']\").click(() => {\n    amplitude.getInstance().logEvent(\"homepage category clicked\", { Category: $(this).text() })\n  })\n\n  $(\"[data-amplitude='homepage-list-practice']\").click(() => {\n    amplitude.getInstance().logEvent(\"homepage list practice clicked\")\n  })\n\n  $(\"[data-amplitude='slide-pro-carousel']\").click(() => {\n    amplitude.getInstance().logEvent(\"viewed more pros\")\n  })\n\n  $(\"[data-amplitude='homepage-top-practitioner']\").click(() => {\n    amplitude.getInstance().logEvent(\"homepage top practitioner clicked\")\n  })\n\n  // Booking Widget Clicks\n  $(\"[data-amplitude='service']\").click(() => {\n    const serviceName = $(this).text()\n    amplitude.getInstance().logEvent(\"service selected\", { value: serviceName })\n  })\n\n  $(\"[data-amplitude='location']\").click(() => {\n    const locationName = $(this).text()\n    amplitude.getInstance().logEvent(\"location selected\", { value: locationName })\n  })\n\n  $(\"[data-amplitude='time']\").click(() => {\n    amplitude.getInstance().logEvent(\"time selected\")\n  })\n\n  $(\"[data-amplitude='booking-started-profile']\").click(() => {\n    amplitude.getInstance().logEvent(\"booking started\", {\n      screen: \"Profile Page\",\n      \"pro name\": $(\"[data-amplitude=name-selection]\").text(),\n      \"service name\": $(\"[data-amplitude=service-selection]\").text(),\n      \"service location\": $(\"[data-amplitude=location-selection]\").text(),\n      \"service price\": $(\"[data-amplitude=cost-selection]\").text()\n    })\n  })\n\n  function initAccountHandler() {\n    setTimeout(() => {\n      $(\"[data-amplitude='login-created']\").click(() => {\n        amplitude.getInstance().logEvent(\"client login created\", {\n          email: $(\"[data-amplitude=email-selection]\").val()\n        })\n      })\n    }, 1000)\n  }\n\n  $(\"[data-amplitude='personal-details-submitted']\").click(() => {\n    amplitude.getInstance().logEvent(\"client personal details entered\", {\n      \"full name\": $(\"[data-amplitude=name-selection]\").val(),\n      dob: $(\"[data-amplitude=dob-selection]\").val(),\n      gender: $(\"[data-amplitude=gender-selection]\").val()\n    })\n    initAccountHandler()\n  })\n\n  function initVerifyHandler() {\n    setTimeout(() => {\n      $(\"[data-amplitude='verify-phone']\").click(() => {\n        amplitude.getInstance().logEvent(\"client phone verified\")\n      })\n\n      $(\"[data-amplitude='phone-no-code']\").click(() => {\n        amplitude.getInstance().logEvent(\"phone code not received\")\n      })\n    }, 1000)\n  }\n\n  $(\"[data-amplitude='text-verify']\").click(() => {\n    initVerifyHandler()\n    amplitude.getInstance().logEvent(\"client phone entered\", {\n      \"phone number\": $(\"[data-amplitude=phone-selection]\").val(),\n      \"verification method\": \"text\"\n    })\n  })\n\n  $(\"[data-amplitude='call-verify']\").click(() => {\n    initVerifyHandler()\n    amplitude.getInstance().logEvent(\"client phone entered\", {\n      \"phone number\": $(\"[data-amplitude=phone-selection]\").val(),\n      \"verification method\": \"call\"\n    })\n  })\n\n  $(\"[data-amplitude='quiz-start']\").click(() => {\n    amplitude.getInstance().logEvent(\"quiz started\")\n  })\n\n  if ($(\"[data-amplitude='checkout-screen\").length > 0) {\n    amplitude.getInstance().logEvent(\"checkout started\", {\n      \"pro name\": $(\"[data-amplitude=name-selection]\").text(),\n      \"service name\": $(\"[data-amplitude=service-selection]\").text(),\n      \"service location\": $(\"[data-amplitude=location-selection]\").text(),\n      \"service price\": $(\"[data-amplitude=cost-selection]\").text()\n    })\n  }\n\n  $(\"[data-amplitude='new-card']\").click(() => {\n    amplitude.getInstance().logEvent(\"card added\", {\n      \"pro name\": $(\"[data-amplitude=name-selection]\").text(),\n      \"service name\": $(\"[data-amplitude=service-selection]\").text(),\n      \"service location\": $(\"[data-amplitude=location-selection]\").text(),\n      \"service price\": $(\"[data-amplitude=cost-selection]\").text()\n    })\n  })\n\n  function collectCancelData(canceledBy) {\n    amplitude.getInstance().logEvent(\"booking canceled\", {\n      \"pro name\": $(this).data(\"amplitude-pro\"),\n      \"service name\": $(this).data(\"amplitude-service\"),\n      \"service location\": $(this).data(\"amplitude-location\"),\n      \"service price\": $(this).data(\"amplitude-price\"),\n      \"canceled by\": canceledBy\n    })\n  }\n\n  $(\"[data-amplitude='consumer-cancel']\").click(() => {\n    collectCancelData(\"cancel\")\n  })\n\n  $(\"[data-amplitude='pro-cancel']\").click(() => {\n    collectCancelData(\"pro\")\n  })\n\n  function initRescheduleHandler() {\n    setTimeout(() => {\n      $(\"[data-amplitude='pro-reject-reschedule']\").click(() => {\n        amplitude.getInstance().logEvent(\"booking rejected\", {\n          \"pro name\": $(this).data(\"amplitude-pro\"),\n          \"service name\": $(this).data(\"amplitude-service\"),\n          \"service location\": $(this).data(\"amplitude-location\"),\n          \"service price\": $(this).data(\"amplitude-price\"),\n          \"canceled by\": \"pro\"\n        })\n      })\n    }, 1000)\n  }\n\n  $(\"[data-amplitude='start-reschedule']\").click(() => {\n    initRescheduleHandler()\n  })\n\n  $(\"[data-amplitude='new-time-accepted']\").click(() => {\n    amplitude.getInstance().logEvent(\"booking new time accepted\", {\n      \"pro name\": $(this).data(\"amplitude-pro\"),\n      \"service name\": $(this).data(\"amplitude-service\"),\n      \"service location\": $(this).data(\"amplitude-location\"),\n      \"service price\": $(this).data(\"amplitude-price\")\n    })\n  })\n\n  $(\"[data-amplitude='question-asked']\").click(() => {\n    amplitude.getInstance().logEvent(\"question asked\", {\n      question: $(\"[data-amplitude=question]\").val(),\n      tags: $(\"[data-amplitude=tags]\").val(),\n      \"additional details\": $(\"[data-amplitude=details]\").val()\n    })\n  })\n\n  function initQuestionHandler() {\n    setTimeout(() => {\n      $(\"[data-amplitude='quiz-step-completed']\").on(\"click\", () => {\n        amplitude.getInstance().logEvent(\"quiz step completed\", {\n          \"question title\": $(this).data(\"amplitude-title\"),\n          \"question step\": $(this).data(\"amplitude-step\"),\n          \"question answer\": $(\"#quiz_answer_values\").val()\n        })\n        initQuestionHandler()\n      })\n    }, 1000)\n  }\n\n  $(\"[data-amplitude='quiz-start']\").click(() => {\n    amplitude.getInstance().logEvent(\"quiz started\")\n    initQuestionHandler()\n  })\n\n  $(\"[data-amplitude='first-login']\").click(() => {\n    amplitude.getInstance().logEvent(\"first time pro login\")\n  })\n\n  $(\"[data-amplitude='save-info']\").click(() => {\n    if ($(\"#setup_info_title\").val() && $(\"#headline-id\").val() && $(\"#setup_info_personal_nickname\").val()) {\n      amplitude.getInstance().logEvent(\"basic info completed\")\n    }\n  })\n\n  $(\"[data-amplitude='save-photo']\").click(() => {\n    if ($(\".filestack-upload.with-profile\").length) {\n      amplitude.getInstance().logEvent(\"profile photo uploaded\")\n    }\n\n    if ($(\".filestack-upload.with-video\").length) {\n      amplitude.getInstance().logEvent(\"video uploaded\")\n    }\n\n    if ($(\".filestack-upload.with-header\").length) {\n      amplitude.getInstance().logEvent(\"cover photo uploaded\")\n    }\n  })\n\n  $(\"[data-amplitude='save-location']\").click(() => {\n    amplitude.getInstance().logEvent(\"location saved\")\n  })\n\n  if ($(\"[data-amplitude='stripe-connected']\").length && $(\"[data-amplitude='stripe-connected']\").is(\":visible\")) {\n    amplitude.getInstance().logEvent(\"stripe connected\")\n  }\n\n  $(\"[data-amplitude='save-service']\").click(() => {\n    amplitude.getInstance().logEvent(\"service saved\", {\n      \"service name\": $(\"[data-amplitude=service-name]\").val(),\n      \"service price\": $(\"[data-amplitude=service-price]\").val(),\n      \"service length\": $(\"[data-amplitude=service-length]\").val()\n    })\n  })\n\n  $(\"[data-amplitude='save-license']\").click(() => {\n    amplitude.getInstance().logEvent(\"credential uploaded\", {\n      \"credential type\": \"license\"\n    })\n  })\n\n  $(\"[data-amplitude='save-certificate']\").click(() => {\n    amplitude.getInstance().logEvent(\"credential uploaded\", {\n      \"credential type\": \"certificate\"\n    })\n  })\n\n  $(\"[data-amplitude='save-membership']\").click(() => {\n    amplitude.getInstance().logEvent(\"credential uploaded\", {\n      \"credential type\": \"membership\"\n    })\n  })\n\n  $(\"[data-amplitude='save-degree']\").click(() => {\n    amplitude.getInstance().logEvent(\"credential uploaded\", {\n      \"Credential Type\": \"degree\"\n    })\n  })\n\n  $(\"[data-amplitude='save-skills']\").click(() => {\n    if ($(\"[data-amplitude='specialty-ids']\").val()) {\n      amplitude.getInstance().logEvent(\"skills added\")\n    }\n  })\n\n  $(\"[data-amplitude='save-shortlink']\").click(() => {\n    if ($(\"[data-amplitude='vanity-slug']\").val()) {\n      amplitude.getInstance().logEvent(\"skills added\")\n    }\n  })\n\n  $(\"[data-amplitude='save-about']\").click(() => {\n    amplitude.getInstance().logEvent(\"learn more fields edited\", {\n      \"Bio / About\": $(\"[data-amplitude='one']\").val(),\n      \"Your Philosophy of Care\": $(\"[data-amplitude='two']\").val(),\n      \"What Can a Client Expect on Their First Visit?\": $(\"[data-amplitude='three']\").val(),\n      \"Your Inspiration to Become a Healer\": $(\"[data-amplitude='four']\").val()\n    })\n  })\n\n  $(\"[data-amplitude='save-details']\").click(() => {\n    amplitude.getInstance().logEvent(\"practice details edited\", {\n      Insurance: $(\"[data-amplitude='insurance']\").val(),\n      \"Work Withs\": $(\"[data-amplitude='work-withs']\").val(),\n      Ages: $(\"[data-amplitude='ages']\").val(),\n      Languages: $(\"[data-amplitude='languages']\").val()\n    })\n  })\n\n  $(\"[data-amplitude='upload-gallery']\").click(() => {\n    amplitude.getInstance().logEvent(\"gallery photo uploaded\")\n  })\n\n  $(\"[data-amplitude='connect-calendar']\").click(() => {\n    amplitude.getInstance().logEvent(\"calendar connected\", {\n      \"calendar type\": \"Google\"\n    })\n  })\n\n  $(\"[data-amplitude='bookings-settings-updated']\").click(() => {\n    amplitude.getInstance().logEvent(\"booking settings updated\", {\n      \"instant booking\": $(\"[data-amplitude='instant-booking']\").val(),\n      \"artificial scarcity\": $(\"[data-amplitude='scarcity']\").val(),\n      \"buffer time\": $(\"[data-amplitude='buffer-time']\").val(),\n      \"lead time\": $(\"[data-amplitude='lead-time']\").val(),\n      \"increment time\": $(\"[data-amplitude='increment-time']\").val()\n    })\n  })\n\n  $(\"[data-amplitude='invite-single-client']\").click(() => {\n    amplitude.getInstance().logEvent(\"single client invited\", {\n      \"client email\": $(\"[data-amplitude='client-email']\").val()\n    })\n  })\n\n  $(\"[data-amplitude='invite-multiple']\").click(() => {\n    amplitude.getInstance().logEvent(\"import clients started\")\n  })\n\n  $(\"[data-amplitude='send-message-client']\").click(() => {\n    amplitude.getInstance().logEvent(\"consumer message sent\", {\n      \"pro id\": $(\"[data-amplitude='pro-id']\").val(),\n      \"consumer email\": $(\"[data-amplitude='consumer-email']\").val()\n    })\n  })\n})\n","import Inputmask from \"inputmask\"\n\ndocument.addEventListener(\"turbolinks:load\", function () {\n  // Submit icon\n  $(\"body\").on(\"click\", \"form button[type='submit']\", function (e) {\n    $(this).addClass(\"working\")\n  })\n\n  // Input icons\n  $(\"input[data-icon]\").each(function () {\n    const wrapper = $(this).closest(\".input-wrapper\")\n    $(`<i class=\"icon-${$(this).attr(\"data-icon\")}\"></i>`).prependTo(wrapper)\n    wrapper.addClass(\"with-icon\")\n  })\n\n  // Tel input formats\n  document.querySelectorAll(\"input[type='tel']\").forEach((input) => {\n    const mask = new Inputmask(\"(999) 999-9999\")\n    mask.mask(input)\n  })\n\n  // Money input formats\n  document.querySelectorAll(\".money input\").forEach((input) => {\n    const mask = new Inputmask({ alias: \"currency\" })\n    mask.mask(input)\n  })\n\n  // Range Slider - move bullet\n  const slider = $(\".range-slider input\")\n  if (slider.length) {\n    const getRgbColorFromGradient = function (beginColor, endColor, ratio) {\n      return (\n        \"rgb(\" +\n        Math.round(endColor[0] * ratio + beginColor[0] * (1 - ratio)) +\n        \",\" +\n        Math.round(endColor[1] * ratio + beginColor[1] * (1 - ratio)) +\n        \",\" +\n        Math.round(endColor[2] * ratio + beginColor[2] * (1 - ratio)) +\n        \")\"\n      )\n    }\n\n    const getGradientColor = function (percent) {\n      // Gradient is #0B3B56 0%, #1B9D9F 33.4%, #F4B765 68.89%, #F39881 100%\n      if (percent <= 33.4) {\n        return getRgbColorFromGradient([11, 59, 86], [27, 157, 159], percent / 33.4)\n      }\n      if (percent <= 68.89) {\n        return getRgbColorFromGradient([27, 157, 159], [244, 183, 101], percent / 68.89)\n      }\n      if (percent <= 100) {\n        return getRgbColorFromGradient([244, 183, 101], [243, 152, 129], percent / 100)\n      }\n    }\n\n    const moveSliderBullet = function (sliderInputElement) {\n      const inputElement = sliderInputElement.length ? sliderInputElement : $(this)\n      const value = inputElement.val()\n      const max = inputElement.attr(\"max\")\n      const percent = Math.round(((value - 1) / (max - 1)) * 10000) / 100\n      const bullet = inputElement.parent().parent().find(\".bullet\")\n      // restet line and number colors\n      const lines = inputElement.parent().parent().find(\".line\")\n      const numbers = inputElement.parent().parent().find(\".tick-number\")\n      lines.css(\"color\", \"#C8D6DF\")\n      numbers.css(\"color\", \"#55778A\")\n      // Set current chosen line and number color\n      lines[value - 1].style.color = \"#0B3954\"\n      numbers[value - 1].style.color = \"#0B3954\"\n      // Move bullet and set its background color\n      bullet.css(\"left\", percent + \"%\")\n      bullet.css(\"background-color\", getGradientColor(percent))\n      // Size bullet according to length of text to be shown in it\n      const values = inputElement.data(\"values\")\n      if (values[value - 1].length < 6) {\n        bullet.css(\"width\", \"77px\")\n        bullet.css(\"height\", \"40px\")\n        bullet.css(\"top\", \"-93px\")\n      } else if (values[value - 1].length < 15) {\n        bullet.css(\"width\", \"119px\")\n        bullet.css(\"height\", \"40px\")\n        bullet.css(\"top\", \"-93px\")\n      } else if (values[value - 1].length < 32) {\n        bullet.css(\"width\", \"250px\")\n        bullet.css(\"height\", \"40px\")\n        bullet.css(\"top\", \"-93px\")\n      } else {\n        bullet.css(\"width\", \"250px\")\n        bullet.css(\"height\", \"60px\")\n        bullet.css(\"top\", \"-113px\")\n      }\n      bullet.children(\".text\").text(values[value - 1])\n    }\n\n    moveSliderBullet(slider)\n    slider.on(\"input\", moveSliderBullet)\n  }\n\n  // Word count\n  if ($(\"#char-count-1\").length > 0) {\n    $(\"#char-count-1\").html($(\"#counted-1\").val().length)\n    $(\"#counted-1\").keyup(function () {\n      $(\"#char-count-1\").html($(this).val().length)\n    })\n  }\n\n  if ($(\"#char-count-2\").length > 0) {\n    $(\"#char-count-2\").html($(\"#counted-2\").val().length)\n\n    $(\"#counted-2\").keyup(function () {\n      $(\"#char-count-2\").html($(this).val().length)\n    })\n  }\n\n  if ($(\"#char-count-3\").length > 0) {\n    $(\"#char-count-3\").html($(\"#counted-3\").val().length)\n\n    $(\"#counted-3\").keyup(function () {\n      $(\"#char-count-3\").html($(this).val().length)\n    })\n  }\n\n  if ($(\"#char-count-4\").length > 0) {\n    $(\"#char-count-4\").html($(\"#counted-4\").val().length)\n\n    $(\"#counted-4\").keyup(function () {\n      $(\"#char-count-4\").html($(this).val().length)\n    })\n  }\n\n  if ($(\"#char-count-5\").length > 0) {\n    $(\"#char-count-5\").html($(\"#counted-5\").val().length)\n\n    $(\"#counted-5\").keyup(function () {\n      $(\"#char-count-5\").html($(this).val().length)\n    })\n  }\n\n  // if ($('#title-char-count').length > 0 ){\n  //   $('#title-char-count').html($('#title-id').val().length);\n\n  //   $('#title-id').keyup(function() {\n  //     $('#title-char-count').html($(this).val().length);\n  //   });\n  // }\n\n  if ($(\"#headline-char-count\").length > 0) {\n    $(\"#headline-char-count\").html($(\"#headline-id\").val().length)\n\n    $(\"#headline-id\").keyup(function () {\n      $(\"#headline-char-count\").html($(this).val().length)\n    })\n  }\n\n  $(\".select\").change(function (e) {\n    $(this).addClass(\"touched\")\n  })\n})\n","/*\n * International Telephone Input v12.3.0\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n\n// wrap in UMD - see https://github.com/umdjs/umd/blob/master/jqueryPluginCommonjs.js\n;(function (factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define([\"jquery\"], function ($) {\n      factory($, window, document)\n    })\n  } else if (typeof module === \"object\" && module.exports) {\n    module.exports = factory(\n      require(\"../../../../../../../../../Library/Caches/typescript/2.9/node_modules/@types/jquery\"),\n      window,\n      document\n    )\n  } else {\n    factory(jQuery, window, document)\n  }\n})(function ($, window, document, undefined) {\n  \"use strict\"\n  // these vars persist through all instances of the plugin\n  var pluginName = \"intlTelInput\",\n    id = 1, // give each instance it's own id for namespaced event handling\n    defaults = {\n      // whether or not to allow the dropdown\n      allowDropdown: true,\n      // if there is just a dial code in the input: remove it on blur, and re-add it on focus\n      autoHideDialCode: true,\n      // add a placeholder in the input with an example number for the selected country\n      autoPlaceholder: \"polite\",\n      // modify the auto placeholder\n      customPlaceholder: null,\n      // append menu to a specific element\n      dropdownContainer: \"\",\n      // don't display these countries\n      excludeCountries: [],\n      // format the input value during initialisation and on setNumber\n      formatOnDisplay: true,\n      // geoIp lookup function\n      geoIpLookup: null,\n      // inject a hidden input with this name, and on submit, populate it with the result of getNumber\n      hiddenInput: \"\",\n      // initial country\n      initialCountry: \"\",\n      // don't insert international dial codes\n      nationalMode: true,\n      // display only these countries\n      onlyCountries: [],\n      // number type to use for placeholders\n      placeholderNumberType: \"MOBILE\",\n      // the countries at the top of the list. defaults to united states and united kingdom\n      preferredCountries: [\"us\", \"gb\"],\n      // display the country dial code next to the selected flag so it's not part of the typed number\n      separateDialCode: false,\n      // specify the path to the libphonenumber script to enable validation/formatting\n      utilsScript: \"\"\n    },\n    keys = {\n      UP: 38,\n      DOWN: 40,\n      ENTER: 13,\n      ESC: 27,\n      PLUS: 43,\n      A: 65,\n      Z: 90,\n      SPACE: 32,\n      TAB: 9\n    }, // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes\n    regionlessNanpNumbers = [\n      \"800\",\n      \"822\",\n      \"833\",\n      \"844\",\n      \"855\",\n      \"866\",\n      \"877\",\n      \"880\",\n      \"881\",\n      \"882\",\n      \"883\",\n      \"884\",\n      \"885\",\n      \"886\",\n      \"887\",\n      \"888\",\n      \"889\"\n    ]\n  // keep track of if the window.load event has fired as impossible to check after the fact\n  $(window).on(\"load\", function () {\n    // UPDATE: use a public static field so we can fudge it in the tests\n    $.fn[pluginName].windowLoaded = true\n  })\n  function Plugin(element, options) {\n    this.telInput = $(element)\n    this.options = $.extend({}, defaults, options)\n    // event namespace\n    this.ns = \".\" + pluginName + id++\n    // Chrome, FF, Safari, IE9+\n    this.isGoodBrowser = Boolean(element.setSelectionRange)\n    this.hadInitialPlaceholder = Boolean($(element).attr(\"placeholder\"))\n  }\n  Plugin.prototype = {\n    _init: function () {\n      // if in nationalMode, disable options relating to dial codes\n      if (this.options.nationalMode) {\n        this.options.autoHideDialCode = false\n      }\n      // if separateDialCode then doesn't make sense to A) insert dial code into input (autoHideDialCode), and B) display national numbers (because we're displaying the country dial code next to them)\n      if (this.options.separateDialCode) {\n        this.options.autoHideDialCode = this.options.nationalMode = false\n      }\n      // we cannot just test screen size as some smartphones/website meta tags will report desktop resolutions\n      // Note: for some reason jasmine breaks if you put this in the main Plugin function with the rest of these declarations\n      // Note: to target Android Mobiles (and not Tablets), we must find \"Android\" and \"Mobile\"\n      this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n      if (this.isMobile) {\n        // trigger the mobile dropdown css\n        $(\"body\").addClass(\"iti-mobile\")\n        // on mobile, we want a full screen dropdown, so we must append it to the body\n        if (!this.options.dropdownContainer) {\n          this.options.dropdownContainer = \"body\"\n        }\n      }\n      // we return these deferred objects from the _init() call so they can be watched, and then we resolve them when each specific request returns\n      // Note: again, jasmine breaks when I put these in the Plugin function\n      this.autoCountryDeferred = new $.Deferred()\n      this.utilsScriptDeferred = new $.Deferred()\n      // in various situations there could be no country selected initially, but we need to be able to assume this variable exists\n      this.selectedCountryData = {}\n      // process all the data: onlyCountries, excludeCountries, preferredCountries etc\n      this._processCountryData()\n      // generate the markup\n      this._generateMarkup()\n      // set the initial state of the input value and the selected flag\n      this._setInitialState()\n      // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click\n      this._initListeners()\n      // utils script, and auto country\n      this._initRequests()\n      // return the deferreds\n      return [this.autoCountryDeferred, this.utilsScriptDeferred]\n    },\n    /********************\n     *  PRIVATE METHODS\n     ********************/\n    // prepare all of the country data, including onlyCountries, excludeCountries and preferredCountries options\n    _processCountryData: function () {\n      // process onlyCountries or excludeCountries array if present\n      this._processAllCountries()\n      // process the countryCodes map\n      this._processCountryCodes()\n      // process the preferredCountries\n      this._processPreferredCountries()\n    },\n    // add a country code to this.countryCodes\n    _addCountryCode: function (iso2, dialCode, priority) {\n      if (!(dialCode in this.countryCodes)) {\n        this.countryCodes[dialCode] = []\n      }\n      var index = priority || 0\n      this.countryCodes[dialCode][index] = iso2\n    },\n    // process onlyCountries or excludeCountries array if present\n    _processAllCountries: function () {\n      if (this.options.onlyCountries.length) {\n        var lowerCaseOnlyCountries = this.options.onlyCountries.map(function (country) {\n          return country.toLowerCase()\n        })\n        this.countries = allCountries.filter(function (country) {\n          return lowerCaseOnlyCountries.indexOf(country.iso2) > -1\n        })\n        this.countries.sort(this._countryNameSort)\n      } else if (this.options.excludeCountries.length) {\n        var lowerCaseExcludeCountries = this.options.excludeCountries.map(function (country) {\n          return country.toLowerCase()\n        })\n        this.countries = allCountries.filter(function (country) {\n          return lowerCaseExcludeCountries.indexOf(country.iso2) === -1\n        })\n      } else {\n        this.countries = allCountries\n      }\n    },\n    // sort by country name\n    _countryNameSort: function (a, b) {\n      return a.name.localeCompare(b.name)\n    },\n    // process the countryCodes map\n    _processCountryCodes: function () {\n      this.countryCodes = {}\n      for (var i = 0; i < this.countries.length; i++) {\n        var c = this.countries[i]\n        this._addCountryCode(c.iso2, c.dialCode, c.priority)\n        // area codes\n        if (c.areaCodes) {\n          for (var j = 0; j < c.areaCodes.length; j++) {\n            // full dial code is country code + dial code\n            this._addCountryCode(c.iso2, c.dialCode + c.areaCodes[j])\n          }\n        }\n      }\n    },\n    // process preferred countries - iterate through the preferences, fetching the country data for each one\n    _processPreferredCountries: function () {\n      this.preferredCountries = []\n      for (var i = 0; i < this.options.preferredCountries.length; i++) {\n        var countryCode = this.options.preferredCountries[i].toLowerCase(),\n          countryData = this._getCountryData(countryCode, false, true)\n        if (countryData) {\n          this.preferredCountries.push(countryData)\n        }\n      }\n    },\n    // generate all of the markup for the plugin: the selected flag overlay, and the dropdown\n    _generateMarkup: function () {\n      // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can easily put the plugin in an inconsistent state e.g. the wrong flag selected for the autocompleted number, which on submit could mean the wrong number is saved (esp in nationalMode)\n      this.telInput.attr(\"autocomplete\", \"off\")\n      // containers (mostly for positioning)\n      var parentClass = \"intl-tel-input\"\n      if (this.options.allowDropdown) {\n        parentClass += \" allow-dropdown\"\n      }\n      if (this.options.separateDialCode) {\n        parentClass += \" separate-dial-code\"\n      }\n      this.telInput.wrap(\n        $(\"<div>\", {\n          class: parentClass\n        })\n      )\n      this.flagsContainer = $(\"<div>\", {\n        class: \"flag-container\",\n        id: \"flag-container\"\n      }).insertBefore(this.telInput)\n      // currently selected flag (displayed to left of input)\n      var selectedFlag = $(\"<div>\", {\n        class: \"selected-flag\"\n      })\n      selectedFlag.appendTo(this.flagsContainer)\n      this.selectedFlagInner = $(\"<div>\", {\n        class: \"iti-flag\"\n      }).appendTo(selectedFlag)\n      if (this.options.separateDialCode) {\n        this.selectedDialCode = $(\"<div>\", {\n          class: \"selected-dial-code\",\n          id: \"selected-dial-code\"\n        }).appendTo(selectedFlag)\n      }\n      if (this.options.allowDropdown) {\n        // make element focusable and tab naviagable\n        selectedFlag.attr(\"tabindex\", \"0\")\n        // CSS triangle\n        $(\"<div>\", {\n          class: \"iti-arrow\"\n        }).appendTo(selectedFlag)\n        // country dropdown: preferred countries, then divider, then all countries\n        this.countryList = $(\"<ul>\", {\n          class: \"country-list hide\"\n        })\n        if (this.preferredCountries.length) {\n          this._appendListItems(this.preferredCountries, \"preferred\")\n          $(\"<li>\", {\n            class: \"divider\"\n          }).appendTo(this.countryList)\n        }\n        this._appendListItems(this.countries, \"\")\n        // this is useful in lots of places\n        this.countryListItems = this.countryList.children(\".country\")\n        // create dropdownContainer markup\n        if (this.options.dropdownContainer) {\n          this.dropdown = $(\"<div>\", {\n            class: \"intl-tel-input iti-container\"\n          }).append(this.countryList)\n        } else {\n          this.countryList.appendTo(this.flagsContainer)\n        }\n      } else {\n        // a little hack so we don't break anything\n        this.countryListItems = $()\n      }\n      if (this.options.hiddenInput) {\n        this.hiddenInput = $(\"<input>\", {\n          type: \"hidden\",\n          name: this.options.hiddenInput\n        }).insertAfter(this.telInput)\n      }\n    },\n    // add a country <li> to the countryList <ul> container\n    _appendListItems: function (countries, className) {\n      // we create so many DOM elements, it is faster to build a temp string\n      // and then add everything to the DOM in one go at the end\n      var tmp = \"\"\n      // for each country\n      for (var i = 0; i < countries.length; i++) {\n        var c = countries[i]\n        // open the list item\n        tmp +=\n          \"<li class='country \" +\n          className +\n          \"' data-dial-code='\" +\n          c.dialCode +\n          \"' data-country-code='\" +\n          c.iso2 +\n          \"'>\"\n        // add the flag\n        tmp += \"<div class='flag-box'><div class='iti-flag \" + c.iso2 + \"'></div></div>\"\n        // and the country name and dial code\n        tmp += \"<span class='country-name'>\" + c.name + \"</span>\"\n        tmp += \"<span class='dial-code'>+\" + c.dialCode + \"</span>\"\n        // close the list item\n        tmp += \"</li>\"\n      }\n      this.countryList.append(tmp)\n    },\n    // set the initial state of the input value and the selected flag by:\n    // 1. extracting a dial code from the given number\n    // 2. using explicit initialCountry\n    // 3. picking the first preferred country\n    // 4. picking the first country\n    _setInitialState: function () {\n      var val = this.telInput.val()\n      // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the flag, else fall back to the default country\n      // UPDATE: actually we do want to set the flag for a regionlessNanp in one situation: if we're in nationalMode and there's no initialCountry - otherwise we lose the +1 and we're left with an invalid number\n      if (\n        this._getDialCode(val) &&\n        (!this._isRegionlessNanp(val) || (this.options.nationalMode && !this.options.initialCountry))\n      ) {\n        this._updateFlagFromNumber(val)\n      } else if (this.options.initialCountry !== \"auto\") {\n        // see if we should select a flag\n        if (this.options.initialCountry) {\n          this._setFlag(this.options.initialCountry.toLowerCase())\n        } else {\n          // no dial code and no initialCountry, so default to first in list\n          this.defaultCountry = this.preferredCountries.length\n            ? this.preferredCountries[0].iso2\n            : this.countries[0].iso2\n          if (!val) {\n            this._setFlag(this.defaultCountry)\n          }\n        }\n        // if empty and no nationalMode and no autoHideDialCode then insert the default dial code\n        if (!val && !this.options.nationalMode && !this.options.autoHideDialCode && !this.options.separateDialCode) {\n          this.telInput.val(\"+\" + this.selectedCountryData.dialCode)\n        }\n      }\n      // NOTE: if initialCountry is set to auto, that will be handled separately\n      // format\n      if (val) {\n        // this wont be run after _updateDialCode as that's only called if no val\n        this._updateValFromNumber(val)\n      }\n    },\n    // initialise the main event listeners: input keyup, and click selected flag\n    _initListeners: function () {\n      this._initKeyListeners()\n      if (this.options.autoHideDialCode) {\n        this._initFocusListeners()\n      }\n      if (this.options.allowDropdown) {\n        this._initDropdownListeners()\n      }\n      if (this.hiddenInput) {\n        this._initHiddenInputListener()\n      }\n    },\n    // update hidden input on form submit\n    _initHiddenInputListener: function () {\n      var that = this\n      var form = this.telInput.closest(\"form\")\n      if (form.length) {\n        form.submit(function () {\n          that.hiddenInput.val(that.getNumber())\n        })\n      }\n    },\n    // initialise the dropdown listeners\n    _initDropdownListeners: function () {\n      var that = this\n      // hack for input nested inside label: clicking the selected-flag to open the dropdown would then automatically trigger a 2nd click on the input which would close it again\n      var label = this.telInput.closest(\"label\")\n      if (label.length) {\n        label.on(\"click\" + this.ns, function (e) {\n          // if the dropdown is closed, then focus the input, else ignore the click\n          if (that.countryList.hasClass(\"hide\")) {\n            that.telInput.focus()\n          } else {\n            e.preventDefault()\n          }\n        })\n      }\n      // toggle country dropdown on click\n      var selectedFlag = this.selectedFlagInner.parent()\n      selectedFlag.on(\"click\" + this.ns, function (e) {\n        // only intercept this event if we're opening the dropdown\n        // else let it bubble up to the top (\"click-off-to-close\" listener)\n        // we cannot just stopPropagation as it may be needed to close another instance\n        if (that.countryList.hasClass(\"hide\") && !that.telInput.prop(\"disabled\") && !that.telInput.prop(\"readonly\")) {\n          that._showDropdown()\n        }\n      })\n      // open dropdown list if currently focused\n      this.flagsContainer.on(\"keydown\" + that.ns, function (e) {\n        var isDropdownHidden = that.countryList.hasClass(\"hide\")\n        if (\n          isDropdownHidden &&\n          (e.which == keys.UP || e.which == keys.DOWN || e.which == keys.SPACE || e.which == keys.ENTER)\n        ) {\n          // prevent form from being submitted if \"ENTER\" was pressed\n          e.preventDefault()\n          // prevent event from being handled again by document\n          e.stopPropagation()\n          that._showDropdown()\n        }\n        // allow navigation from dropdown to input on TAB\n        if (e.which == keys.TAB) {\n          that._closeDropdown()\n        }\n      })\n    },\n    // init many requests: utils script / geo ip lookup\n    _initRequests: function () {\n      var that = this\n      // if the user has specified the path to the utils script, fetch it on window.load, else resolve\n      if (this.options.utilsScript) {\n        // if the plugin is being initialised after the window.load event has already been fired\n        if ($.fn[pluginName].windowLoaded) {\n          $.fn[pluginName].loadUtils(this.options.utilsScript, this.utilsScriptDeferred)\n        } else {\n          // wait until the load event so we don't block any other requests e.g. the flags image\n          $(window).on(\"load\", function () {\n            $.fn[pluginName].loadUtils(that.options.utilsScript, that.utilsScriptDeferred)\n          })\n        }\n      } else {\n        this.utilsScriptDeferred.resolve()\n      }\n      if (this.options.initialCountry === \"auto\") {\n        this._loadAutoCountry()\n      } else {\n        this.autoCountryDeferred.resolve()\n      }\n    },\n    // perform the geo ip lookup\n    _loadAutoCountry: function () {\n      var that = this\n      // 3 options:\n      // 1) already loaded (we're done)\n      // 2) not already started loading (start)\n      // 3) already started loading (do nothing - just wait for loading callback to fire)\n      if ($.fn[pluginName].autoCountry) {\n        this.handleAutoCountry()\n      } else if (!$.fn[pluginName].startedLoadingAutoCountry) {\n        // don't do this twice!\n        $.fn[pluginName].startedLoadingAutoCountry = true\n        if (typeof this.options.geoIpLookup === \"function\") {\n          this.options.geoIpLookup(function (countryCode) {\n            $.fn[pluginName].autoCountry = countryCode.toLowerCase()\n            // tell all instances the auto country is ready\n            // TODO: this should just be the current instances\n            // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight away (e.g. if they have already done the geo ip lookup somewhere else). Using setTimeout means that the current thread of execution will finish before executing this, which allows the plugin to finish initialising.\n            setTimeout(function () {\n              $(\".intl-tel-input input\").intlTelInput(\"handleAutoCountry\")\n            })\n          })\n        }\n      }\n    },\n    // initialize any key listeners\n    _initKeyListeners: function () {\n      var that = this\n      // update flag on keyup\n      // (keep this listener separate otherwise the setTimeout breaks all the tests)\n      this.telInput.on(\"keyup\" + this.ns, function () {\n        if (that._updateFlagFromNumber(that.telInput.val())) {\n          that._triggerCountryChange()\n        }\n      })\n      // update flag on cut/paste events (now supported in all major browsers)\n      this.telInput.on(\"cut\" + this.ns + \" paste\" + this.ns, function () {\n        // hack because \"paste\" event is fired before input is updated\n        setTimeout(function () {\n          if (that._updateFlagFromNumber(that.telInput.val())) {\n            that._triggerCountryChange()\n          }\n        })\n      })\n    },\n    // adhere to the input's maxlength attr\n    _cap: function (number) {\n      var max = this.telInput.attr(\"maxlength\")\n      return max && number.length > max ? number.substr(0, max) : number\n    },\n    // listen for mousedown, focus and blur\n    _initFocusListeners: function () {\n      var that = this\n      // mousedown decides where the cursor goes, so if we're focusing we must preventDefault as we'll be inserting the dial code, and we want the cursor to be at the end no matter where they click\n      this.telInput.on(\"mousedown\" + this.ns, function (e) {\n        if (!that.telInput.is(\":focus\") && !that.telInput.val()) {\n          e.preventDefault()\n          // but this also cancels the focus, so we must trigger that manually\n          that.telInput.focus()\n        }\n      })\n      // on focus: if empty, insert the dial code for the currently selected flag\n      this.telInput.on(\"focus\" + this.ns, function (e) {\n        if (!that.telInput.val() && !that.telInput.prop(\"readonly\") && that.selectedCountryData.dialCode) {\n          // insert the dial code\n          that.telInput.val(\"+\" + that.selectedCountryData.dialCode)\n          // after auto-inserting a dial code, if the first key they hit is '+' then assume they are entering a new number, so remove the dial code. use keypress instead of keydown because keydown gets triggered for the shift key (required to hit the + key), and instead of keyup because that shows the new '+' before removing the old one\n          that.telInput.one(\"keypress.plus\" + that.ns, function (e) {\n            if (e.which == keys.PLUS) {\n              that.telInput.val(\"\")\n            }\n          })\n          // after tabbing in, make sure the cursor is at the end we must use setTimeout to get outside of the focus handler as it seems the selection happens after that\n          setTimeout(function () {\n            var input = that.telInput[0]\n            if (that.isGoodBrowser) {\n              var len = that.telInput.val().length\n              input.setSelectionRange(len, len)\n            }\n          })\n        }\n      })\n      // on blur or form submit: if just a dial code then remove it\n      var form = this.telInput.prop(\"form\")\n      if (form) {\n        $(form).on(\"submit\" + this.ns, function () {\n          that._removeEmptyDialCode()\n        })\n      }\n      this.telInput.on(\"blur\" + this.ns, function () {\n        that._removeEmptyDialCode()\n      })\n    },\n    _removeEmptyDialCode: function () {\n      var value = this.telInput.val(),\n        startsPlus = value.charAt(0) == \"+\"\n      if (startsPlus) {\n        var numeric = this._getNumeric(value)\n        // if just a plus, or if just a dial code\n        if (!numeric || this.selectedCountryData.dialCode == numeric) {\n          this.telInput.val(\"\")\n        }\n      }\n      // remove the keypress listener we added on focus\n      this.telInput.off(\"keypress.plus\" + this.ns)\n    },\n    // extract the numeric digits from the given string\n    _getNumeric: function (s) {\n      return s.replace(/\\D/g, \"\")\n    },\n    // show the dropdown\n    _showDropdown: function () {\n      this._setDropdownPosition()\n      // update highlighting and scroll to active list item\n      var activeListItem = this.countryList.children(\".active\")\n      if (activeListItem.length) {\n        this._highlightListItem(activeListItem)\n        this._scrollTo(activeListItem)\n      }\n      // bind all the dropdown-related listeners: mouseover, click, click-off, keydown\n      this._bindDropdownListeners()\n      // update the arrow\n      this.selectedFlagInner.children(\".iti-arrow\").addClass(\"up\")\n      this.telInput.trigger(\"open:countrydropdown\")\n    },\n    // decide where to position dropdown (depends on position within viewport, and scroll)\n    _setDropdownPosition: function () {\n      var that = this\n      if (this.options.dropdownContainer) {\n        this.dropdown.appendTo(this.options.dropdownContainer)\n      }\n      // show the menu and grab the dropdown height\n      this.dropdownHeight = this.countryList.removeClass(\"hide\").outerHeight()\n      if (!this.isMobile) {\n        var pos = this.telInput.offset(),\n          inputTop = pos.top,\n          windowTop = $(window).scrollTop(), // dropdownFitsBelow = (dropdownBottom < windowBottom)\n          dropdownFitsBelow =\n            inputTop + this.telInput.outerHeight() + this.dropdownHeight < windowTop + $(window).height(),\n          dropdownFitsAbove = inputTop - this.dropdownHeight > windowTop\n        // by default, the dropdown will be below the input. If we want to position it above the input, we add the dropup class.\n        this.countryList.toggleClass(\"dropup\", !dropdownFitsBelow && dropdownFitsAbove)\n        // if dropdownContainer is enabled, calculate postion\n        if (this.options.dropdownContainer) {\n          // by default the dropdown will be directly over the input because it's not in the flow. If we want to position it below, we need to add some extra top value.\n          var extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.innerHeight()\n          // calculate placement\n          this.dropdown.css({\n            top: inputTop + extraTop,\n            left: pos.left\n          })\n          // close menu on window scroll\n          $(window).on(\"scroll\" + this.ns, function () {\n            that._closeDropdown()\n          })\n        }\n      }\n    },\n    // we only bind dropdown listeners when the dropdown is open\n    _bindDropdownListeners: function () {\n      var that = this\n      // when mouse over a list item, just highlight that one\n      // we add the class \"highlight\", so if they hit \"enter\" we know which one to select\n      this.countryList.on(\"mouseover\" + this.ns, \".country\", function (e) {\n        that._highlightListItem($(this))\n      })\n      // listen for country selection\n      this.countryList.on(\"click\" + this.ns, \".country\", function (e) {\n        that._selectListItem($(this))\n      })\n      // click off to close\n      // (except when this initial opening click is bubbling up)\n      // we cannot just stopPropagation as it may be needed to close another instance\n      var isOpening = true\n      $(\"html\").on(\"click\" + this.ns, function (e) {\n        if (!isOpening) {\n          that._closeDropdown()\n        }\n        isOpening = false\n      })\n      // listen for up/down scrolling, enter to select, or letters to jump to country name.\n      // use keydown as keypress doesn't fire for non-char keys and we want to catch if they\n      // just hit down and hold it to scroll down (no keyup event).\n      // listen on the document because that's where key events are triggered if no input has focus\n      var query = \"\",\n        queryTimer = null\n      $(document).on(\"keydown\" + this.ns, function (e) {\n        // prevent down key from scrolling the whole page,\n        // and enter key from submitting a form etc\n        e.preventDefault()\n        if (e.which == keys.UP || e.which == keys.DOWN) {\n          // up and down to navigate\n          that._handleUpDownKey(e.which)\n        } else if (e.which == keys.ENTER) {\n          // enter to select\n          that._handleEnterKey()\n        } else if (e.which == keys.ESC) {\n          // esc to close\n          that._closeDropdown()\n        } else if ((e.which >= keys.A && e.which <= keys.Z) || e.which == keys.SPACE) {\n          // upper case letters (note: keyup/keydown only return upper case letters)\n          // jump to countries that start with the query string\n          if (queryTimer) {\n            clearTimeout(queryTimer)\n          }\n          query += String.fromCharCode(e.which)\n          that._searchForCountry(query)\n          // if the timer hits 1 second, reset the query\n          queryTimer = setTimeout(function () {\n            query = \"\"\n          }, 1e3)\n        }\n      })\n    },\n    // highlight the next/prev item in the list (and ensure it is visible)\n    _handleUpDownKey: function (key) {\n      var current = this.countryList.children(\".highlight\").first()\n      var next = key == keys.UP ? current.prev() : current.next()\n      if (next.length) {\n        // skip the divider\n        if (next.hasClass(\"divider\")) {\n          next = key == keys.UP ? next.prev() : next.next()\n        }\n        this._highlightListItem(next)\n        this._scrollTo(next)\n      }\n    },\n    // select the currently highlighted item\n    _handleEnterKey: function () {\n      var currentCountry = this.countryList.children(\".highlight\").first()\n      if (currentCountry.length) {\n        this._selectListItem(currentCountry)\n      }\n    },\n    // find the first list item whose name starts with the query string\n    _searchForCountry: function (query) {\n      for (var i = 0; i < this.countries.length; i++) {\n        if (this._startsWith(this.countries[i].name, query)) {\n          var listItem = this.countryList\n            .children(\"[data-country-code=\" + this.countries[i].iso2 + \"]\")\n            .not(\".preferred\")\n          // update highlighting and scroll\n          this._highlightListItem(listItem)\n          this._scrollTo(listItem, true)\n          break\n        }\n      }\n    },\n    // check if (uppercase) string a starts with string b\n    _startsWith: function (a, b) {\n      return a.substr(0, b.length).toUpperCase() == b\n    },\n    // update the input's value to the given val (format first if possible)\n    // NOTE: this is called from _setInitialState, handleUtils and setNumber\n    _updateValFromNumber: function (number) {\n      if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {\n        var format =\n          !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) != \"+\")\n            ? intlTelInputUtils.numberFormat.NATIONAL\n            : intlTelInputUtils.numberFormat.INTERNATIONAL\n        number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format)\n      }\n      number = this._beforeSetNumber(number)\n      this.telInput.val(number)\n    },\n    // check if need to select a new flag based on the given number\n    // Note: called from _setInitialState, keyup handler, setNumber\n    _updateFlagFromNumber: function (number) {\n      // if we're in nationalMode and we already have US/Canada selected, make sure the number starts with a +1 so _getDialCode will be able to extract the area code\n      // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag from the number), that means we're initialising the plugin with a number that already has a dial code, so fine to ignore this bit\n      if (number && this.options.nationalMode && this.selectedCountryData.dialCode == \"1\" && number.charAt(0) != \"+\") {\n        if (number.charAt(0) != \"1\") {\n          number = \"1\" + number\n        }\n        number = \"+\" + number\n      }\n      // try and extract valid dial code from input\n      var dialCode = this._getDialCode(number),\n        countryCode = null,\n        numeric = this._getNumeric(number)\n      if (dialCode) {\n        // check if one of the matching countries is already selected\n        var countryCodes = this.countryCodes[this._getNumeric(dialCode)],\n          alreadySelected = $.inArray(this.selectedCountryData.iso2, countryCodes) > -1, // check if the given number contains a NANP area code i.e. the only dialCode that could be extracted was +1 (instead of say +1204) and the actual number's length is >=4\n          isNanpAreaCode = dialCode == \"+1\" && numeric.length >= 4,\n          nanpSelected = this.selectedCountryData.dialCode == \"1\"\n        // only update the flag if:\n        // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp)\n        // AND\n        // B) either a matching country is not already selected OR the number contains a NANP area code (ensure the flag is set to the first matching country)\n        if (!(nanpSelected && this._isRegionlessNanp(numeric)) && (!alreadySelected || isNanpAreaCode)) {\n          // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first non-empty index\n          for (var j = 0; j < countryCodes.length; j++) {\n            if (countryCodes[j]) {\n              countryCode = countryCodes[j]\n              break\n            }\n          }\n        }\n      } else if (number.charAt(0) == \"+\" && numeric.length) {\n        // invalid dial code, so empty\n        // Note: use getNumeric here because the number has not been formatted yet, so could contain bad chars\n        countryCode = \"\"\n      } else if (!number || number == \"+\") {\n        // empty, or just a plus, so default\n        countryCode = this.defaultCountry\n      }\n      if (countryCode !== null) {\n        return this._setFlag(countryCode)\n      }\n      return false\n    },\n    // check if the given number is a regionless NANP number (expects the number to contain an international dial code)\n    _isRegionlessNanp: function (number) {\n      var numeric = this._getNumeric(number)\n      if (numeric.charAt(0) == \"1\") {\n        var areaCode = numeric.substr(1, 3)\n        return $.inArray(areaCode, regionlessNanpNumbers) > -1\n      }\n      return false\n    },\n    // remove highlighting from other list items and highlight the given item\n    _highlightListItem: function (listItem) {\n      this.countryListItems.removeClass(\"highlight\")\n      listItem.addClass(\"highlight\")\n    },\n    // find the country data for the given country code\n    // the ignoreOnlyCountriesOption is only used during init() while parsing the onlyCountries array\n    _getCountryData: function (countryCode, ignoreOnlyCountriesOption, allowFail) {\n      var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries\n      for (var i = 0; i < countryList.length; i++) {\n        if (countryList[i].iso2 == countryCode) {\n          return countryList[i]\n        }\n      }\n      if (allowFail) {\n        return null\n      } else {\n        throw new Error(\"No country data for '\" + countryCode + \"'\")\n      }\n    },\n    // select the given flag, update the placeholder and the active list item\n    // Note: called from _setInitialState, _updateFlagFromNumber, _selectListItem, setCountry\n    _setFlag: function (countryCode) {\n      var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {}\n      // do this first as it will throw an error and stop if countryCode is invalid\n      this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {}\n      // update the defaultCountry - we only need the iso2 from now on, so just store that\n      if (this.selectedCountryData.iso2) {\n        this.defaultCountry = this.selectedCountryData.iso2\n      }\n      this.selectedFlagInner.attr(\"class\", \"iti-flag \" + countryCode)\n      // update the selected country's title attribute\n      var title = countryCode ? this.selectedCountryData.name + \": +\" + this.selectedCountryData.dialCode : \"Unknown\"\n      this.selectedFlagInner.parent().attr(\"title\", title)\n      if (this.options.separateDialCode) {\n        var dialCode = this.selectedCountryData.dialCode ? \"+\" + this.selectedCountryData.dialCode : \"\",\n          parent = this.telInput.parent()\n        if (prevCountry.dialCode) {\n          parent.removeClass(\"iti-sdc-\" + (prevCountry.dialCode.length + 1))\n        }\n        if (dialCode) {\n          parent.addClass(\"iti-sdc-\" + dialCode.length)\n        }\n        this.selectedDialCode.text(dialCode)\n      }\n      // and the input's placeholder\n      this._updatePlaceholder()\n      // update the active list item\n      this.countryListItems.removeClass(\"active\")\n      if (countryCode) {\n        this.countryListItems\n          .find(\".iti-flag.\" + countryCode)\n          .first()\n          .closest(\".country\")\n          .addClass(\"active\")\n      }\n      // return if the flag has changed or not\n      return prevCountry.iso2 !== countryCode\n    },\n    // update the input placeholder to an example number from the currently selected country\n    _updatePlaceholder: function () {\n      var shouldSetPlaceholder =\n        this.options.autoPlaceholder === \"aggressive\" ||\n        (!this.hadInitialPlaceholder &&\n          (this.options.autoPlaceholder === true || this.options.autoPlaceholder === \"polite\"))\n      if (window.intlTelInputUtils && shouldSetPlaceholder) {\n        var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType],\n          placeholder = this.selectedCountryData.iso2\n            ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType)\n            : \"\"\n        placeholder = this._beforeSetNumber(placeholder)\n        if (typeof this.options.customPlaceholder === \"function\") {\n          placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData)\n        }\n        this.telInput.attr(\"placeholder\", placeholder)\n      }\n    },\n    // called when the user selects a list item from the dropdown\n    _selectListItem: function (listItem) {\n      // update selected flag and active list item\n      var flagChanged = this._setFlag(listItem.attr(\"data-country-code\"))\n      this._closeDropdown()\n      this._updateDialCode(listItem.attr(\"data-dial-code\"), true)\n      // focus the input\n      this.telInput.focus()\n      // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto inserting dial code), who try to put the cursor at the beginning the first time\n      if (this.isGoodBrowser) {\n        var len = this.telInput.val().length\n        this.telInput[0].setSelectionRange(len, len)\n      }\n      if (flagChanged) {\n        this._triggerCountryChange()\n      }\n    },\n    // close the dropdown and unbind any listeners\n    _closeDropdown: function () {\n      this.countryList.addClass(\"hide\")\n      // update the arrow\n      this.selectedFlagInner.children(\".iti-arrow\").removeClass(\"up\")\n      // unbind key events\n      $(document).off(this.ns)\n      // unbind click-off-to-close\n      $(\"html\").off(this.ns)\n      // unbind hover and click listeners\n      this.countryList.off(this.ns)\n      // remove menu from container\n      if (this.options.dropdownContainer) {\n        if (!this.isMobile) {\n          $(window).off(\"scroll\" + this.ns)\n        }\n        this.dropdown.detach()\n      }\n      this.telInput.trigger(\"close:countrydropdown\")\n    },\n    // check if an element is visible within it's container, else scroll until it is\n    _scrollTo: function (element, middle) {\n      var container = this.countryList,\n        containerHeight = container.height(),\n        containerTop = container.offset().top,\n        containerBottom = containerTop + containerHeight,\n        elementHeight = element.outerHeight(),\n        elementTop = element.offset().top,\n        elementBottom = elementTop + elementHeight,\n        newScrollTop = elementTop - containerTop + container.scrollTop(),\n        middleOffset = containerHeight / 2 - elementHeight / 2\n      if (elementTop < containerTop) {\n        // scroll up\n        if (middle) {\n          newScrollTop -= middleOffset\n        }\n        container.scrollTop(newScrollTop)\n      } else if (elementBottom > containerBottom) {\n        // scroll down\n        if (middle) {\n          newScrollTop += middleOffset\n        }\n        var heightDifference = containerHeight - elementHeight\n        container.scrollTop(newScrollTop - heightDifference)\n      }\n    },\n    // replace any existing dial code with the new one\n    // Note: called from _selectListItem and setCountry\n    _updateDialCode: function (newDialCode, hasSelectedListItem) {\n      var inputVal = this.telInput.val(),\n        newNumber\n      // save having to pass this every time\n      newDialCode = \"+\" + newDialCode\n      if (inputVal.charAt(0) == \"+\") {\n        // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not)\n        var prevDialCode = this._getDialCode(inputVal)\n        if (prevDialCode) {\n          // current number contains a valid dial code, so replace it\n          newNumber = inputVal.replace(prevDialCode, newDialCode)\n        } else {\n          // current number contains an invalid dial code, so ditch it\n          // (no way to determine where the invalid dial code ends and the rest of the number begins)\n          newNumber = newDialCode\n        }\n      } else if (this.options.nationalMode || this.options.separateDialCode) {\n        // don't do anything\n        return\n      } else {\n        // nationalMode is disabled\n        if (inputVal) {\n          // there is an existing value with no dial code: prefix the new dial code\n          newNumber = newDialCode + inputVal\n        } else if (hasSelectedListItem || !this.options.autoHideDialCode) {\n          // no existing value and either they've just selected a list item, or autoHideDialCode is disabled: insert new dial code\n          newNumber = newDialCode\n        } else {\n          return\n        }\n      }\n      this.telInput.val(newNumber)\n    },\n    // try and extract a valid international dial code from a full telephone number\n    // Note: returns the raw string inc plus character and any whitespace/dots etc\n    _getDialCode: function (number) {\n      var dialCode = \"\"\n      // only interested in international numbers (starting with a plus)\n      if (number.charAt(0) == \"+\") {\n        var numericChars = \"\"\n        // iterate over chars\n        for (var i = 0; i < number.length; i++) {\n          var c = number.charAt(i)\n          // if char is number\n          if ($.isNumeric(c)) {\n            numericChars += c\n            // if current numericChars make a valid dial code\n            if (this.countryCodes[numericChars]) {\n              // store the actual raw string (useful for matching later)\n              dialCode = number.substr(0, i + 1)\n            }\n            // longest dial code is 4 chars\n            if (numericChars.length == 4) {\n              break\n            }\n          }\n        }\n      }\n      return dialCode\n    },\n    // get the input val, adding the dial code if separateDialCode is enabled\n    _getFullNumber: function () {\n      var val = $.trim(this.telInput.val()),\n        dialCode = this.selectedCountryData.dialCode,\n        prefix,\n        numericVal = this._getNumeric(val), // normalized means ensure starts with a 1, so we can match against the full dial code\n        normalizedVal = numericVal.charAt(0) == \"1\" ? numericVal : \"1\" + numericVal\n      if (this.options.separateDialCode) {\n        prefix = \"+\" + dialCode\n      } else if (\n        val.charAt(0) != \"+\" &&\n        val.charAt(0) != \"1\" &&\n        dialCode &&\n        dialCode.charAt(0) == \"1\" &&\n        dialCode.length == 4 &&\n        dialCode != normalizedVal.substr(0, 4)\n      ) {\n        // if the user has entered a national NANP number, then ensure it includes the full dial code / area code\n        prefix = dialCode.substr(1)\n      } else {\n        prefix = \"\"\n      }\n      return prefix + val\n    },\n    // remove the dial code if separateDialCode is enabled\n    _beforeSetNumber: function (number) {\n      if (this.options.separateDialCode) {\n        var dialCode = this._getDialCode(number)\n        if (dialCode) {\n          // US dialCode is \"+1\", which is what we want\n          // CA dialCode is \"+1 123\", which is wrong - should be \"+1\" (as it has multiple area codes)\n          // AS dialCode is \"+1 684\", which is what we want\n          // Solution: if the country has area codes, then revert to just the dial code\n          if (this.selectedCountryData.areaCodes !== null) {\n            dialCode = \"+\" + this.selectedCountryData.dialCode\n          }\n          // a lot of numbers will have a space separating the dial code and the main number, and some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get rid of it\n          // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc\n          var start =\n            number[dialCode.length] === \" \" || number[dialCode.length] === \"-\" ? dialCode.length + 1 : dialCode.length\n          number = number.substr(start)\n        }\n      }\n      return this._cap(number)\n    },\n    // trigger the 'countrychange' event\n    _triggerCountryChange: function () {\n      this.telInput.trigger(\"countrychange\", this.selectedCountryData)\n    },\n    /**************************\n     *  SECRET PUBLIC METHODS\n     **************************/\n    // this is called when the geoip call returns\n    handleAutoCountry: function () {\n      if (this.options.initialCountry === \"auto\") {\n        // we must set this even if there is an initial val in the input: in case the initial val is invalid and they delete it - they should see their auto country\n        this.defaultCountry = $.fn[pluginName].autoCountry\n        // if there's no initial value in the input, then update the flag\n        if (!this.telInput.val()) {\n          this.setCountry(this.defaultCountry)\n        }\n        this.autoCountryDeferred.resolve()\n      }\n    },\n    // this is called when the utils request completes\n    handleUtils: function () {\n      // if the request was successful\n      if (window.intlTelInputUtils) {\n        // if there's an initial value in the input, then format it\n        if (this.telInput.val()) {\n          this._updateValFromNumber(this.telInput.val())\n        }\n        this._updatePlaceholder()\n      }\n      this.utilsScriptDeferred.resolve()\n    },\n    /********************\n     *  PUBLIC METHODS\n     ********************/\n    // remove plugin\n    destroy: function () {\n      if (this.allowDropdown) {\n        // make sure the dropdown is closed (and unbind listeners)\n        this._closeDropdown()\n        // click event to open dropdown\n        this.selectedFlagInner.parent().off(this.ns)\n        // label click hack\n        this.telInput.closest(\"label\").off(this.ns)\n      }\n      // unbind submit event handler on form\n      if (this.options.autoHideDialCode) {\n        var form = this.telInput.prop(\"form\")\n        if (form) {\n          $(form).off(this.ns)\n        }\n      }\n      // unbind all events: key events, and focus/blur events if autoHideDialCode=true\n      this.telInput.off(this.ns)\n      // remove markup (but leave the original input)\n      var container = this.telInput.parent()\n      container.before(this.telInput).remove()\n    },\n    // get the extension from the current number\n    getExtension: function () {\n      if (window.intlTelInputUtils) {\n        return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2)\n      }\n      return \"\"\n    },\n    // format the number to the given format\n    getNumber: function (format) {\n      if (window.intlTelInputUtils) {\n        return intlTelInputUtils.formatNumber(this._getFullNumber(), this.selectedCountryData.iso2, format)\n      }\n      return \"\"\n    },\n    // get the type of the entered number e.g. landline/mobile\n    getNumberType: function () {\n      if (window.intlTelInputUtils) {\n        return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2)\n      }\n      return -99\n    },\n    // get the country data for the currently selected flag\n    getSelectedCountryData: function () {\n      return this.selectedCountryData\n    },\n    // get the validation error\n    getValidationError: function () {\n      if (window.intlTelInputUtils) {\n        return intlTelInputUtils.getValidationError(this._getFullNumber(), this.selectedCountryData.iso2)\n      }\n      return -99\n    },\n    // validate the input val - assumes the global function isValidNumber (from utilsScript)\n    isValidNumber: function () {\n      var val = $.trim(this._getFullNumber()),\n        countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : \"\"\n      return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null\n    },\n    // update the selected flag, and update the input val accordingly\n    setCountry: function (countryCode) {\n      countryCode = countryCode.toLowerCase()\n      // check if already selected\n      if (!this.selectedFlagInner.hasClass(countryCode)) {\n        this._setFlag(countryCode)\n        this._updateDialCode(this.selectedCountryData.dialCode, false)\n        this._triggerCountryChange()\n      }\n    },\n    // set the input value and update the flag\n    setNumber: function (number) {\n      // we must update the flag first, which updates this.selectedCountryData, which is used for formatting the number before displaying it\n      var flagChanged = this._updateFlagFromNumber(number)\n      this._updateValFromNumber(number)\n      if (flagChanged) {\n        this._triggerCountryChange()\n      }\n    },\n    // set the placeholder number typ\n    setPlaceholderNumberType: function (type) {\n      this.options.placeholderNumberType = type\n      this._updatePlaceholder()\n    }\n  }\n  // using https://github.com/jquery-boilerplate/jquery-boilerplate/wiki/Extending-jQuery-Boilerplate\n  // (adapted to allow public functions)\n  $.fn[pluginName] = function (options) {\n    var args = arguments\n    // Is the first parameter an object (options), or was omitted,\n    // instantiate a new instance of the plugin.\n    if (options === undefined || typeof options === \"object\") {\n      // collect all of the deferred objects for all instances created with this selector\n      var deferreds = []\n      this.each(function () {\n        if (!$.data(this, \"plugin_\" + pluginName)) {\n          var instance = new Plugin(this, options)\n          var instanceDeferreds = instance._init()\n          // we now have 2 deffereds: 1 for auto country, 1 for utils script\n          deferreds.push(instanceDeferreds[0])\n          deferreds.push(instanceDeferreds[1])\n          $.data(this, \"plugin_\" + pluginName, instance)\n        }\n      })\n      // return the promise from the \"master\" deferred object that tracks all the others\n      return $.when.apply(null, deferreds)\n    } else if (typeof options === \"string\" && options[0] !== \"_\") {\n      // If the first parameter is a string and it doesn't start\n      // with an underscore or \"contains\" the `init`-function,\n      // treat this as a call to a public method.\n      // Cache the method call to make it possible to return a value\n      var returns\n      this.each(function () {\n        var instance = $.data(this, \"plugin_\" + pluginName)\n        // Tests that there's already a plugin-instance\n        // and checks that the requested public method exists\n        if (instance instanceof Plugin && typeof instance[options] === \"function\") {\n          // Call the method of our plugin instance,\n          // and pass it the supplied arguments.\n          returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1))\n        }\n        // Allow instances to be destroyed via the 'destroy' method\n        if (options === \"destroy\") {\n          $.data(this, \"plugin_\" + pluginName, null)\n        }\n      })\n      // If the earlier cached method gives a value back return the value,\n      // otherwise return this to preserve chainability.\n      return returns !== undefined ? returns : this\n    }\n  }\n  /********************\n   *  STATIC METHODS\n   ********************/\n  // get the country data object\n  $.fn[pluginName].getCountryData = function () {\n    return allCountries\n  }\n  // load the utils script\n  $.fn[pluginName].loadUtils = function (path, utilsScriptDeferred) {\n    if (!$.fn[pluginName].loadedUtilsScript) {\n      // don't do this twice! (dont just check if window.intlTelInputUtils exists as if init plugin multiple times in quick succession, it may not have finished loading yet)\n      $.fn[pluginName].loadedUtilsScript = true\n      // dont use $.getScript as it prevents caching\n      $.ajax({\n        type: \"GET\",\n        url: path,\n        complete: function () {\n          // tell all instances that the utils request is complete\n          $(\".intl-tel-input input\").intlTelInput(\"handleUtils\")\n        },\n        dataType: \"script\",\n        cache: true\n      })\n    } else if (utilsScriptDeferred) {\n      utilsScriptDeferred.resolve()\n    }\n  }\n  // default options\n  $.fn[pluginName].defaults = defaults\n  // version\n  $.fn[pluginName].version = \"12.3.0\"\n  // Array of country objects for the flag dropdown.\n  // Here is the criteria for the plugin to support a given country/territory\n  // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n  // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n  // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n  // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n  // Each country array has the following information:\n  // [\n  //    Country name,\n  //    iso2 code,\n  //    International dial code,\n  //    Order (if >1 country with same dial code),\n  //    Area codes\n  // ]\n  var allCountries = [\n    [\"Afghanistan (‫افغانستان‬‎)\", \"af\", \"93\"],\n    [\"Albania (Shqipëri)\", \"al\", \"355\"],\n    [\"Algeria (‫الجزائر‬‎)\", \"dz\", \"213\"],\n    [\"American Samoa\", \"as\", \"1684\"],\n    [\"Andorra\", \"ad\", \"376\"],\n    [\"Angola\", \"ao\", \"244\"],\n    [\"Anguilla\", \"ai\", \"1264\"],\n    [\"Antigua and Barbuda\", \"ag\", \"1268\"],\n    [\"Argentina\", \"ar\", \"54\"],\n    [\"Armenia (Հայաստան)\", \"am\", \"374\"],\n    [\"Aruba\", \"aw\", \"297\"],\n    [\"Australia\", \"au\", \"61\", 0],\n    [\"Austria (Österreich)\", \"at\", \"43\"],\n    [\"Azerbaijan (Azərbaycan)\", \"az\", \"994\"],\n    [\"Bahamas\", \"bs\", \"1242\"],\n    [\"Bahrain (‫البحرين‬‎)\", \"bh\", \"973\"],\n    [\"Bangladesh (বাংলাদেশ)\", \"bd\", \"880\"],\n    [\"Barbados\", \"bb\", \"1246\"],\n    [\"Belarus (Беларусь)\", \"by\", \"375\"],\n    [\"Belgium (België)\", \"be\", \"32\"],\n    [\"Belize\", \"bz\", \"501\"],\n    [\"Benin (Bénin)\", \"bj\", \"229\"],\n    [\"Bermuda\", \"bm\", \"1441\"],\n    [\"Bhutan (འབྲུག)\", \"bt\", \"975\"],\n    [\"Bolivia\", \"bo\", \"591\"],\n    [\"Bosnia and Herzegovina (Босна и Херцеговина)\", \"ba\", \"387\"],\n    [\"Botswana\", \"bw\", \"267\"],\n    [\"Brazil (Brasil)\", \"br\", \"55\"],\n    [\"British Indian Ocean Territory\", \"io\", \"246\"],\n    [\"British Virgin Islands\", \"vg\", \"1284\"],\n    [\"Brunei\", \"bn\", \"673\"],\n    [\"Bulgaria (България)\", \"bg\", \"359\"],\n    [\"Burkina Faso\", \"bf\", \"226\"],\n    [\"Burundi (Uburundi)\", \"bi\", \"257\"],\n    [\"Cambodia (កម្ពុជា)\", \"kh\", \"855\"],\n    [\"Cameroon (Cameroun)\", \"cm\", \"237\"],\n    [\n      \"Canada\",\n      \"ca\",\n      \"1\",\n      1,\n      [\n        \"204\",\n        \"226\",\n        \"236\",\n        \"249\",\n        \"250\",\n        \"289\",\n        \"306\",\n        \"343\",\n        \"365\",\n        \"387\",\n        \"403\",\n        \"416\",\n        \"418\",\n        \"431\",\n        \"437\",\n        \"438\",\n        \"450\",\n        \"506\",\n        \"514\",\n        \"519\",\n        \"548\",\n        \"579\",\n        \"581\",\n        \"587\",\n        \"604\",\n        \"613\",\n        \"639\",\n        \"647\",\n        \"672\",\n        \"705\",\n        \"709\",\n        \"742\",\n        \"778\",\n        \"780\",\n        \"782\",\n        \"807\",\n        \"819\",\n        \"825\",\n        \"867\",\n        \"873\",\n        \"902\",\n        \"905\"\n      ]\n    ],\n    [\"Cape Verde (Kabu Verdi)\", \"cv\", \"238\"],\n    [\"Caribbean Netherlands\", \"bq\", \"599\", 1],\n    [\"Cayman Islands\", \"ky\", \"1345\"],\n    [\"Central African Republic (République centrafricaine)\", \"cf\", \"236\"],\n    [\"Chad (Tchad)\", \"td\", \"235\"],\n    [\"Chile\", \"cl\", \"56\"],\n    [\"China (中国)\", \"cn\", \"86\"],\n    [\"Christmas Island\", \"cx\", \"61\", 2],\n    [\"Cocos (Keeling) Islands\", \"cc\", \"61\", 1],\n    [\"Colombia\", \"co\", \"57\"],\n    [\"Comoros (‫جزر القمر‬‎)\", \"km\", \"269\"],\n    [\"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\", \"cd\", \"243\"],\n    [\"Congo (Republic) (Congo-Brazzaville)\", \"cg\", \"242\"],\n    [\"Cook Islands\", \"ck\", \"682\"],\n    [\"Costa Rica\", \"cr\", \"506\"],\n    [\"Côte d’Ivoire\", \"ci\", \"225\"],\n    [\"Croatia (Hrvatska)\", \"hr\", \"385\"],\n    [\"Cuba\", \"cu\", \"53\"],\n    [\"Curaçao\", \"cw\", \"599\", 0],\n    [\"Cyprus (Κύπρος)\", \"cy\", \"357\"],\n    [\"Czech Republic (Česká republika)\", \"cz\", \"420\"],\n    [\"Denmark (Danmark)\", \"dk\", \"45\"],\n    [\"Djibouti\", \"dj\", \"253\"],\n    [\"Dominica\", \"dm\", \"1767\"],\n    [\"Dominican Republic (República Dominicana)\", \"do\", \"1\", 2, [\"809\", \"829\", \"849\"]],\n    [\"Ecuador\", \"ec\", \"593\"],\n    [\"Egypt (‫مصر‬‎)\", \"eg\", \"20\"],\n    [\"El Salvador\", \"sv\", \"503\"],\n    [\"Equatorial Guinea (Guinea Ecuatorial)\", \"gq\", \"240\"],\n    [\"Eritrea\", \"er\", \"291\"],\n    [\"Estonia (Eesti)\", \"ee\", \"372\"],\n    [\"Ethiopia\", \"et\", \"251\"],\n    [\"Falkland Islands (Islas Malvinas)\", \"fk\", \"500\"],\n    [\"Faroe Islands (Føroyar)\", \"fo\", \"298\"],\n    [\"Fiji\", \"fj\", \"679\"],\n    [\"Finland (Suomi)\", \"fi\", \"358\", 0],\n    [\"France\", \"fr\", \"33\"],\n    [\"French Guiana (Guyane française)\", \"gf\", \"594\"],\n    [\"French Polynesia (Polynésie française)\", \"pf\", \"689\"],\n    [\"Gabon\", \"ga\", \"241\"],\n    [\"Gambia\", \"gm\", \"220\"],\n    [\"Georgia (საქართველო)\", \"ge\", \"995\"],\n    [\"Germany (Deutschland)\", \"de\", \"49\"],\n    [\"Ghana (Gaana)\", \"gh\", \"233\"],\n    [\"Gibraltar\", \"gi\", \"350\"],\n    [\"Greece (Ελλάδα)\", \"gr\", \"30\"],\n    [\"Greenland (Kalaallit Nunaat)\", \"gl\", \"299\"],\n    [\"Grenada\", \"gd\", \"1473\"],\n    [\"Guadeloupe\", \"gp\", \"590\", 0],\n    [\"Guam\", \"gu\", \"1671\"],\n    [\"Guatemala\", \"gt\", \"502\"],\n    [\"Guernsey\", \"gg\", \"44\", 1],\n    [\"Guinea (Guinée)\", \"gn\", \"224\"],\n    [\"Guinea-Bissau (Guiné Bissau)\", \"gw\", \"245\"],\n    [\"Guyana\", \"gy\", \"592\"],\n    [\"Haiti\", \"ht\", \"509\"],\n    [\"Honduras\", \"hn\", \"504\"],\n    [\"Hong Kong (香港)\", \"hk\", \"852\"],\n    [\"Hungary (Magyarország)\", \"hu\", \"36\"],\n    [\"Iceland (Ísland)\", \"is\", \"354\"],\n    [\"India (भारत)\", \"in\", \"91\"],\n    [\"Indonesia\", \"id\", \"62\"],\n    [\"Iran (‫ایران‬‎)\", \"ir\", \"98\"],\n    [\"Iraq (‫العراق‬‎)\", \"iq\", \"964\"],\n    [\"Ireland\", \"ie\", \"353\"],\n    [\"Isle of Man\", \"im\", \"44\", 2],\n    [\"Israel (‫ישראל‬‎)\", \"il\", \"972\"],\n    [\"Italy (Italia)\", \"it\", \"39\", 0],\n    [\"Jamaica\", \"jm\", \"1\", 4, [\"876\", \"658\"]],\n    [\"Japan (日本)\", \"jp\", \"81\"],\n    [\"Jersey\", \"je\", \"44\", 3],\n    [\"Jordan (‫الأردن‬‎)\", \"jo\", \"962\"],\n    [\"Kazakhstan (Казахстан)\", \"kz\", \"7\", 1],\n    [\"Kenya\", \"ke\", \"254\"],\n    [\"Kiribati\", \"ki\", \"686\"],\n    [\"Kosovo\", \"xk\", \"383\"],\n    [\"Kuwait (‫الكويت‬‎)\", \"kw\", \"965\"],\n    [\"Kyrgyzstan (Кыргызстан)\", \"kg\", \"996\"],\n    [\"Laos (ລາວ)\", \"la\", \"856\"],\n    [\"Latvia (Latvija)\", \"lv\", \"371\"],\n    [\"Lebanon (‫لبنان‬‎)\", \"lb\", \"961\"],\n    [\"Lesotho\", \"ls\", \"266\"],\n    [\"Liberia\", \"lr\", \"231\"],\n    [\"Libya (‫ليبيا‬‎)\", \"ly\", \"218\"],\n    [\"Liechtenstein\", \"li\", \"423\"],\n    [\"Lithuania (Lietuva)\", \"lt\", \"370\"],\n    [\"Luxembourg\", \"lu\", \"352\"],\n    [\"Macau (澳門)\", \"mo\", \"853\"],\n    [\"Macedonia (FYROM) (Македонија)\", \"mk\", \"389\"],\n    [\"Madagascar (Madagasikara)\", \"mg\", \"261\"],\n    [\"Malawi\", \"mw\", \"265\"],\n    [\"Malaysia\", \"my\", \"60\"],\n    [\"Maldives\", \"mv\", \"960\"],\n    [\"Mali\", \"ml\", \"223\"],\n    [\"Malta\", \"mt\", \"356\"],\n    [\"Marshall Islands\", \"mh\", \"692\"],\n    [\"Martinique\", \"mq\", \"596\"],\n    [\"Mauritania (‫موريتانيا‬‎)\", \"mr\", \"222\"],\n    [\"Mauritius (Moris)\", \"mu\", \"230\"],\n    [\"Mayotte\", \"yt\", \"262\", 1],\n    [\"Mexico (México)\", \"mx\", \"52\"],\n    [\"Micronesia\", \"fm\", \"691\"],\n    [\"Moldova (Republica Moldova)\", \"md\", \"373\"],\n    [\"Monaco\", \"mc\", \"377\"],\n    [\"Mongolia (Монгол)\", \"mn\", \"976\"],\n    [\"Montenegro (Crna Gora)\", \"me\", \"382\"],\n    [\"Montserrat\", \"ms\", \"1664\"],\n    [\"Morocco (‫المغرب‬‎)\", \"ma\", \"212\", 0],\n    [\"Mozambique (Moçambique)\", \"mz\", \"258\"],\n    [\"Myanmar (Burma) (မြန်မာ)\", \"mm\", \"95\"],\n    [\"Namibia (Namibië)\", \"na\", \"264\"],\n    [\"Nauru\", \"nr\", \"674\"],\n    [\"Nepal (नेपाल)\", \"np\", \"977\"],\n    [\"Netherlands (Nederland)\", \"nl\", \"31\"],\n    [\"New Caledonia (Nouvelle-Calédonie)\", \"nc\", \"687\"],\n    [\"New Zealand\", \"nz\", \"64\"],\n    [\"Nicaragua\", \"ni\", \"505\"],\n    [\"Niger (Nijar)\", \"ne\", \"227\"],\n    [\"Nigeria\", \"ng\", \"234\"],\n    [\"Niue\", \"nu\", \"683\"],\n    [\"Norfolk Island\", \"nf\", \"672\"],\n    [\"North Korea (조선 민주주의 인민 공화국)\", \"kp\", \"850\"],\n    [\"Northern Mariana Islands\", \"mp\", \"1670\"],\n    [\"Norway (Norge)\", \"no\", \"47\", 0],\n    [\"Oman (‫عُمان‬‎)\", \"om\", \"968\"],\n    [\"Pakistan (‫پاکستان‬‎)\", \"pk\", \"92\"],\n    [\"Palau\", \"pw\", \"680\"],\n    [\"Palestine (‫فلسطين‬‎)\", \"ps\", \"970\"],\n    [\"Panama (Panamá)\", \"pa\", \"507\"],\n    [\"Papua New Guinea\", \"pg\", \"675\"],\n    [\"Paraguay\", \"py\", \"595\"],\n    [\"Peru (Perú)\", \"pe\", \"51\"],\n    [\"Philippines\", \"ph\", \"63\"],\n    [\"Poland (Polska)\", \"pl\", \"48\"],\n    [\"Portugal\", \"pt\", \"351\"],\n    [\"Puerto Rico\", \"pr\", \"1\", 3, [\"787\", \"939\"]],\n    [\"Qatar (‫قطر‬‎)\", \"qa\", \"974\"],\n    [\"Réunion (La Réunion)\", \"re\", \"262\", 0],\n    [\"Romania (România)\", \"ro\", \"40\"],\n    [\"Russia (Россия)\", \"ru\", \"7\", 0],\n    [\"Rwanda\", \"rw\", \"250\"],\n    [\"Saint Barthélemy\", \"bl\", \"590\", 1],\n    [\"Saint Helena\", \"sh\", \"290\"],\n    [\"Saint Kitts and Nevis\", \"kn\", \"1869\"],\n    [\"Saint Lucia\", \"lc\", \"1758\"],\n    [\"Saint Martin (Saint-Martin (partie française))\", \"mf\", \"590\", 2],\n    [\"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\", \"pm\", \"508\"],\n    [\"Saint Vincent and the Grenadines\", \"vc\", \"1784\"],\n    [\"Samoa\", \"ws\", \"685\"],\n    [\"San Marino\", \"sm\", \"378\"],\n    [\"São Tomé and Príncipe (São Tomé e Príncipe)\", \"st\", \"239\"],\n    [\"Saudi Arabia (‫المملكة العربية السعودية‬‎)\", \"sa\", \"966\"],\n    [\"Senegal (Sénégal)\", \"sn\", \"221\"],\n    [\"Serbia (Србија)\", \"rs\", \"381\"],\n    [\"Seychelles\", \"sc\", \"248\"],\n    [\"Sierra Leone\", \"sl\", \"232\"],\n    [\"Singapore\", \"sg\", \"65\"],\n    [\"Sint Maarten\", \"sx\", \"1721\"],\n    [\"Slovakia (Slovensko)\", \"sk\", \"421\"],\n    [\"Slovenia (Slovenija)\", \"si\", \"386\"],\n    [\"Solomon Islands\", \"sb\", \"677\"],\n    [\"Somalia (Soomaaliya)\", \"so\", \"252\"],\n    [\"South Africa\", \"za\", \"27\"],\n    [\"South Korea (대한민국)\", \"kr\", \"82\"],\n    [\"South Sudan (‫جنوب السودان‬‎)\", \"ss\", \"211\"],\n    [\"Spain (España)\", \"es\", \"34\"],\n    [\"Sri Lanka (ශ්‍රී ලංකාව)\", \"lk\", \"94\"],\n    [\"Sudan (‫السودان‬‎)\", \"sd\", \"249\"],\n    [\"Suriname\", \"sr\", \"597\"],\n    [\"Svalbard and Jan Mayen\", \"sj\", \"47\", 1],\n    [\"Swaziland\", \"sz\", \"268\"],\n    [\"Sweden (Sverige)\", \"se\", \"46\"],\n    [\"Switzerland (Schweiz)\", \"ch\", \"41\"],\n    [\"Syria (‫سوريا‬‎)\", \"sy\", \"963\"],\n    [\"Taiwan (台灣)\", \"tw\", \"886\"],\n    [\"Tajikistan\", \"tj\", \"992\"],\n    [\"Tanzania\", \"tz\", \"255\"],\n    [\"Thailand (ไทย)\", \"th\", \"66\"],\n    [\"Timor-Leste\", \"tl\", \"670\"],\n    [\"Togo\", \"tg\", \"228\"],\n    [\"Tokelau\", \"tk\", \"690\"],\n    [\"Tonga\", \"to\", \"676\"],\n    [\"Trinidad and Tobago\", \"tt\", \"1868\"],\n    [\"Tunisia (‫تونس‬‎)\", \"tn\", \"216\"],\n    [\"Turkey (Türkiye)\", \"tr\", \"90\"],\n    [\"Turkmenistan\", \"tm\", \"993\"],\n    [\"Turks and Caicos Islands\", \"tc\", \"1649\"],\n    [\"Tuvalu\", \"tv\", \"688\"],\n    [\"U.S. Virgin Islands\", \"vi\", \"1340\"],\n    [\"Uganda\", \"ug\", \"256\"],\n    [\"Ukraine (Україна)\", \"ua\", \"380\"],\n    [\"United Arab Emirates (‫الإمارات العربية المتحدة‬‎)\", \"ae\", \"971\"],\n    [\"United Kingdom\", \"gb\", \"44\", 0],\n    [\"United States\", \"us\", \"1\", 0],\n    [\"Uruguay\", \"uy\", \"598\"],\n    [\"Uzbekistan (Oʻzbekiston)\", \"uz\", \"998\"],\n    [\"Vanuatu\", \"vu\", \"678\"],\n    [\"Vatican City (Città del Vaticano)\", \"va\", \"39\", 1],\n    [\"Venezuela\", \"ve\", \"58\"],\n    [\"Vietnam (Việt Nam)\", \"vn\", \"84\"],\n    [\"Wallis and Futuna (Wallis-et-Futuna)\", \"wf\", \"681\"],\n    [\"Western Sahara (‫الصحراء الغربية‬‎)\", \"eh\", \"212\", 1],\n    [\"Yemen (‫اليمن‬‎)\", \"ye\", \"967\"],\n    [\"Zambia\", \"zm\", \"260\"],\n    [\"Zimbabwe\", \"zw\", \"263\"],\n    [\"Åland Islands\", \"ax\", \"358\", 1]\n  ]\n  // loop over all of the countries above\n  for (var i = 0; i < allCountries.length; i++) {\n    var c = allCountries[i]\n    allCountries[i] = {\n      name: c[0],\n      iso2: c[1],\n      dialCode: c[2],\n      priority: c[3] || 0,\n      areaCodes: c[4] || null\n    }\n  }\n})\n","import \"animate.css/animate.css\"\nimport LocalTime from \"local-time\"\n\ndocument.addEventListener(\"turbolinks:load\", function () {\n  let calendarIndex = 0\n\n  // LocalTime\n  LocalTime.run()\n\n  // Flash\n  if ($(\".flashes\").length) {\n    setTimeout(function () {\n      $(\".flashes\").attr(\"data-state\", \"displayed\")\n    }, 10000)\n  }\n\n  // Buttons\n  $(\"a[data-icon]\").each(function () {\n    const text = $(this).text()\n    const icon = $(this).attr(\"data-icon\")\n    return $(this).html(`<i class='icon-${icon}'></i><span>${text}</span>`)\n  })\n\n  $(\"body\").on(\"click\", \"a[data-working]\", function (e) {\n    $(this).addClass(\"working\")\n  })\n\n  // Close Dropdowns\n  $(\"body\").on(\"click\", \".dropdown button.button-close\", function (e) {\n    e.preventDefault()\n    $(this).closest(\".dropdown\").removeClass(\"is-active\")\n  })\n\n  // Read More\n  $(\"[data-read-more]\").each(function () {\n    let innerStr = $(this).text()\n    const maxLength = parseInt($(this).attr(\"data-read-more\"))\n    if (innerStr.includes(\"read more...\")) {\n      innerStr = innerStr.substring(maxLength + 13)\n    }\n\n    if (\n      innerStr.length > maxLength &&\n      innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n    ) {\n      const newStr = innerStr.substring(0, maxLength)\n      $(this).empty().html(newStr)\n      $(this).append(' <a href=\"\" data-read-more-trigger>read more...</a>')\n      $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n    }\n  })\n\n  $(\"body\").on(\"click\", \"a[data-read-more-trigger]\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\"[data-read-more]\")\n    const originalString = parent.find(\"span[data-more-text]\").html()\n    parent.empty().html(originalString)\n  })\n\n  // Read More Bottom\n  $(\"[data-read-more-bottom]\").each(function () {\n    let innerStr = $(this).text()\n    const maxLength = parseInt($(this).attr(\"data-read-more-bottom\"))\n\n    if (innerStr.includes(\"read more...\")) {\n      innerStr = innerStr.substring(maxLength + 13)\n    }\n\n    if (\n      innerStr.length > maxLength &&\n      innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n    ) {\n      const newStr = innerStr.substring(0, maxLength)\n      $(this).empty().html(newStr)\n      $(this).append(' <a href=\"\" data-read-more-trigger>read more...</a>')\n      $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n    }\n  })\n\n  $(\"body\").on(\"click\", \"a[data-read-more-trigger]\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\"[data-read-more-bottom]\")\n    const originalString = parent.find(\"span[data-more-text]\").html()\n    parent.empty().html(originalString)\n  })\n\n  // Read More Field2\n  $(\"[field2-read-more]\").each(function () {\n    let innerStr = $(this).text()\n    const maxLength = parseInt($(this).attr(\"field2-read-more\"))\n    if (innerStr.includes(\"read more...\")) {\n      innerStr = innerStr.substring(maxLength + 13)\n    }\n\n    if (\n      innerStr.length > maxLength &&\n      innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n    ) {\n      const newStr = innerStr.substring(0, maxLength)\n      $(this).empty().html(newStr)\n      $(this).append(' <a href=\"\" field2-read-more-trigger>read more...</a>')\n      $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n    }\n  })\n\n  $(\"body\").on(\"click\", \"a[field2-read-more-trigger]\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\"[field2-read-more]\")\n    const originalString = parent.find(\"span[data-more-text]\").html()\n    parent.empty().html(originalString)\n  })\n\n  // Read More Field3\n  $(\"[field3-read-more]\").each(function () {\n    let innerStr = $(this).text()\n    const maxLength = parseInt($(this).attr(\"field3-read-more\"))\n\n    if (innerStr.includes(\"read more...\")) {\n      innerStr = innerStr.substring(maxLength + 13)\n    }\n\n    if (\n      innerStr.length > maxLength &&\n      innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n    ) {\n      const newStr = innerStr.substring(0, maxLength)\n      $(this).empty().html(newStr)\n      $(this).append(' <a href=\"\" field3-read-more-trigger>read more...</a>')\n      $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n    }\n  })\n\n  $(\"body\").on(\"click\", \"a[field3-read-more-trigger]\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\"[field3-read-more]\")\n    const originalString = parent.find(\"span[data-more-text]\").html()\n    parent.empty().html(originalString)\n  })\n\n  // Read More Field4\n  $(\"[field4-read-more]\").each(function () {\n    let innerStr = $(this).text()\n    const maxLength = parseInt($(this).attr(\"field4-read-more\"))\n\n    if (innerStr.includes(\"read more...\")) {\n      innerStr = innerStr.substring(maxLength + 13)\n    }\n\n    if (\n      innerStr.length > maxLength &&\n      innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n    ) {\n      const newStr = innerStr.substring(0, maxLength)\n      $(this).empty().html(newStr)\n      $(this).append(' <a href=\"\" field4-read-more-trigger>read more...</a>')\n      $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n    }\n  })\n\n  $(\"body\").on(\"click\", \"a[field4-read-more-trigger]\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\"[field4-read-more]\")\n    const originalString = parent.find(\"span[data-more-text]\").html()\n    parent.empty().html(originalString)\n  })\n\n  // Read More Field5\n  $(\"[field5-read-more]\").each(function () {\n    let innerStr = $(this).text()\n    const maxLength = parseInt($(this).attr(\"field5-read-more\"))\n\n    if (innerStr.includes(\"read more...\")) {\n      innerStr = innerStr.substring(maxLength + 13)\n    }\n\n    if (\n      innerStr.length > maxLength &&\n      innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n    ) {\n      const newStr = innerStr.substring(0, maxLength)\n      $(this).empty().html(newStr)\n      $(this).append(' <a href=\"\" field5-read-more-trigger>read more...</a>')\n      $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n    }\n  })\n\n  $(\"body\").on(\"click\", \"a[field5-read-more-trigger]\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\"[field5-read-more]\")\n    const originalString = parent.find(\"span[data-more-text]\").html()\n    parent.empty().html(originalString)\n  })\n\n  // Service description read more\n  $(\"[service-description-read-more]\").each(function () {\n    let innerStr = $(this).text()\n    const maxLength = parseInt($(this).attr(\"service-description-read-more\"))\n    if (innerStr.includes(\"read more...\")) {\n      innerStr = innerStr.substring(maxLength + 13)\n    }\n\n    if (\n      innerStr.length > maxLength &&\n      innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n    ) {\n      const newStr = innerStr.substring(0, maxLength)\n      $(this).empty().html(newStr)\n      $(this).append(' <a href=\"\" service-description-read-more-trigger>read more...</a>')\n      $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n    }\n  })\n\n  $(\"body\").on(\"click\", \"a[service-description-read-more-trigger]\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\"[service-description-read-more]\")\n    const originalString = parent.find(\"span[data-more-text]\").html()\n    parent.empty().html(originalString)\n  })\n\n  // See more reviews - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-more-reviews-button\", function (e) {\n    $(\"html,body\").animate(\n      {\n        scrollTop: $(\"#bottom-reviews\").offset().top - 150\n      },\n      \"slow\"\n    )\n    $(\"#see-more-reviews-bottom\").fadeIn(() => {\n      if ((document.getElementById(\"see-more-reviews-button\").value = !null)) {\n        document.getElementById(\"see-less-reviews-bottom-button\").style.display = \"inline-block\"\n      }\n    })\n  })\n\n  // See less reviews - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-less-reviews-button\", function (e) {\n    document.getElementById(\"see-less-reviews-button\").style.display = \"none\"\n    $(\"#see-more-reviews\").fadeOut(() => {\n      document.getElementById(\"see-more-reviews-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See more reviews bottom - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-more-reviews-bottom-button\", function (e) {\n    document.getElementById(\"see-more-reviews-bottom-button\").style.display = \"none\"\n    $(\"#see-more-reviews-bottom\").fadeIn(() => {\n      document.getElementById(\"see-less-reviews-bottom-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See less reviews bottom - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-less-reviews-bottom-button\", function (e) {\n    document.getElementById(\"see-less-reviews-bottom-button\").style.display = \"none\"\n    $(\"#see-more-reviews-bottom\").fadeOut(() => {\n      document.getElementById(\"see-more-reviews-bottom-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See more skills - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-more-skills-button\", function (e) {\n    document.getElementById(\"see-more-skills-button\").style.display = \"none\"\n    $(\"#see-more-skills\").fadeIn(() => {\n      document.getElementById(\"see-less-skills-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See less skills - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-less-skills-button\", function (e) {\n    document.getElementById(\"see-less-skills-button\").style.display = \"none\"\n    $(\"#see-more-skills\").fadeOut(() => {\n      document.getElementById(\"see-more-skills-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See more articles  - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-more-articles-button\", function (e) {\n    document.getElementById(\"see-more-articles-button\").style.display = \"none\"\n    $(\"#see-more-articles\").fadeIn(() => {\n      document.getElementById(\"see-less-articles-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See less articles  - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-less-articles-button\", function (e) {\n    document.getElementById(\"see-less-articles-button\").style.display = \"none\"\n    $(\"#see-more-articles\").fadeOut(() => {\n      document.getElementById(\"see-more-articles-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See more images  - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-more-images-button\", function (e) {\n    document.getElementById(\"see-more-images-button\").style.display = \"none\"\n    $(\"#see-more-images\").fadeIn(() => {\n      document.getElementById(\"see-less-images-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See less images  - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-less-images-button\", function (e) {\n    document.getElementById(\"see-less-images-button\").style.display = \"none\"\n    $(\"#see-more-images\").fadeOut(() => {\n      document.getElementById(\"see-more-images-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See more answers  - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-more-answers-button\", function (e) {\n    document.getElementById(\"see-more-answers-button\").style.display = \"none\"\n    $(\"#see-more-answers\").fadeIn(() => {\n      document.getElementById(\"see-less-answers-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See less answers  - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-less-answers-button\", function (e) {\n    document.getElementById(\"see-less-answers-button\").style.display = \"none\"\n    $(\"#see-more-answers\").fadeOut(() => {\n      document.getElementById(\"see-more-answers-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See more services  - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-more-services-button\", function (e) {\n    document.getElementById(\"see-more-services-button\").style.display = \"none\"\n    $(\"#hidden-divider\").fadeIn()\n    $(\"#see-more-services\").fadeIn(() => {\n      document.getElementById(\"see-less-services-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // See less services  - Parctitioner Page\n  $(\"body\").on(\"click\", \"#see-less-services-button\", function (e) {\n    document.getElementById(\"see-less-services-button\").style.display = \"none\"\n    $(\"#see-more-services\").fadeOut(() => {\n      document.getElementById(\"see-more-services-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // Add License - Profile Setup\n  $(\"body\").on(\"click\", \"#add-license-button\", function (e) {\n    document.getElementById(\"add-license-button\").style.display = \"none\"\n    $(\"#add-license\").fadeIn(() => {\n      document.getElementById(\"done-add-license-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // Done adding license - Profile Setup\n  $(\"body\").on(\"click\", \"#done-add-license-button\", function (e) {\n    document.getElementById(\"done-add-license-button\").style.display = \"none\"\n    $(\"#add-license\").fadeOut(() => {\n      document.getElementById(\"add-license-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // Add Certificate - Profile Setup\n  $(\"body\").on(\"click\", \"#add-certificate-button\", function (e) {\n    document.getElementById(\"add-certificate-button\").style.display = \"none\"\n    $(\"#add-certificate\").fadeIn(() => {\n      document.getElementById(\"done-add-certificate-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // Done adding certificate - Profile Setup\n  $(\"body\").on(\"click\", \"#done-add-certificate-button\", function (e) {\n    document.getElementById(\"done-add-certificate-button\").style.display = \"none\"\n    $(\"#add-certificate\").fadeOut(() => {\n      document.getElementById(\"add-certificate-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // Add Degree - Profile Setup\n  $(\"body\").on(\"click\", \"#add-degree-button\", function (e) {\n    document.getElementById(\"add-degree-button\").style.display = \"none\"\n    $(\"#add-degree\").fadeIn(() => {\n      document.getElementById(\"done-add-degree-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // Done adding degree - Profile Setup\n  $(\"body\").on(\"click\", \"#done-add-degree-button\", function (e) {\n    document.getElementById(\"done-add-degree-button\").style.display = \"none\"\n    $(\"#add-degree\").fadeOut(() => {\n      document.getElementById(\"add-degree-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // Add Membership - Profile Setup\n  $(\"body\").on(\"click\", \"#add-membership-button\", function (e) {\n    document.getElementById(\"add-membership-button\").style.display = \"none\"\n    $(\"#add-membership\").fadeIn(() => {\n      document.getElementById(\"done-add-membership-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // Done adding membership - Profile Setup\n  $(\"body\").on(\"click\", \"#done-add-membership-button\", function (e) {\n    document.getElementById(\"done-add-membership-button\").style.display = \"none\"\n    $(\"#add-membership\").fadeOut(() => {\n      document.getElementById(\"add-membership-button\").style.display = \"inline-block\"\n    })\n  })\n\n  // show more days - appointment offer alternative times modal\n  $(\"body\").on(\"click\", \"#show-more-days\", function (e) {\n    document.getElementById(\"show-more-days\").style.display = \"none\"\n    document.getElementById(\"calendar-times\").style.overflowY = \"scroll\"\n  })\n\n  // See all insurances - Parctitioner Search Page\n  $(\"body\").on(\"click\", \"#see-all-insurances\", function (e) {\n    document.getElementById(\"see-all-insurances\").style.display = \"none\"\n    document.getElementById(\"insurance-accepted\").style.maxHeight = \"100%\"\n  })\n\n  // Clear all filters - Parctitioner Search Page\n  $(\"body\").on(\"click\", \"#clear-all-filters\", function (e) {\n    $('input[type=\"checkbox\"]:checked').prop(\"checked\", false)\n  })\n\n  // Equalizer heights\n  $(\"[data-equalizer]\").each(function () {\n    const parentElement = $(this)\n    const children = parentElement.find(\"[data-equalizer-watch]\")\n    if (children.length) {\n      const heights = children.map(function () {\n        return $(this).height()\n      })\n      const maxHeight = heights.get().reduce(function (a, b) {\n        return Math.max(a, b)\n      })\n      children.height(maxHeight)\n    }\n  })\n\n  // Modal Close\n  $(\".modal button.close\").click(function (e) {\n    e.preventDefault()\n    $(this).closest(\".modal\").removeClass(\"is-active\")\n  })\n\n  $(\".modal .modal-background\").click(function (e) {\n    e.preventDefault()\n    $(this).closest(\".modal\").removeClass(\"is-active\")\n  })\n\n  $(\".modal button.close-fullwidth\").click(function (e) {\n    e.preventDefault()\n    $(this).closest(\".modal\").removeClass(\"is-active\")\n  })\n\n  $(\".modal [data-close]\").click(function (e) {\n    e.preventDefault()\n    if ($(this).closest(\".modal\").hasClass(\"video\")) {\n      $(\"iframe.youtube-video\").attr(\"src\", function (i, val) {\n        return val\n      })\n    }\n\n    $(this).closest(\".modal\").removeClass(\"is-active\")\n  })\n\n  $(\".modal [data-close]\").click(function (e) {\n    e.preventDefault()\n    if ($(this).closest(\".modal\").hasClass(\"video\")) {\n      $(\"iframe.vimeo-video\").attr(\"src\", function (i, val) {\n        return val\n      })\n    }\n\n    $(this).closest(\".modal\").removeClass(\"is-active\")\n  })\n\n  $(\".modal [data-close]\").click(function (e) {\n    e.preventDefault()\n    if ($(this).closest(\".modal\").hasClass(\"video\")) {\n      $(\"iframe.bitchute-video\").attr(\"src\", function (i, val) {\n        return val\n      })\n    }\n\n    $(this).closest(\".modal\").removeClass(\"is-active\")\n  })\n\n  $(\".modal [data-close]\").click(function (e) {\n    e.preventDefault()\n    if ($(this).closest(\".modal\").hasClass(\"video\")) {\n      $(\"iframe.brandnewtube-video\").attr(\"src\", function (i, val) {\n        return val\n      })\n    }\n\n    $(this).closest(\".modal\").removeClass(\"is-active\")\n  })\n\n  $(\".modal [data-close]\").click(function (e) {\n    e.preventDefault()\n    if ($(this).closest(\".modal\").hasClass(\"video\")) {\n      $(\"iframe.brighteon-video\").attr(\"src\", function (i, val) {\n        return val\n      })\n    }\n\n    $(this).closest(\".modal\").removeClass(\"is-active\")\n  })\n\n  // Toggle View Password\n  $(\".toggle-view-password\").click(function () {\n    const pass = document.getElementById(\"session_password\")\n    if (pass.type === \"password\") {\n      pass.type = \"text\"\n      document.getElementById(\"show-hide-pw\").classList.add(\"icon-eye-blocked\")\n      document.getElementById(\"show-hide-pw\").classList.remove(\"icon-eye\")\n    } else {\n      pass.type = \"password\"\n      document.getElementById(\"show-hide-pw\").classList.remove(\"icon-eye-blocked\")\n      document.getElementById(\"show-hide-pw\").classList.add(\"icon-eye\")\n    }\n  })\n\n  // Toggle View Password\n  $(\".toggle-view-password-registration\").click(function () {\n    const pass = document.getElementById(\"user_password\")\n    if (pass.type === \"password\") {\n      pass.type = \"text\"\n      document.getElementById(\"show-hide-signup-pw\").classList.add(\"icon-eye-blocked\")\n      document.getElementById(\"show-hide-signup-pw\").classList.remove(\"icon-eye\")\n    } else {\n      pass.type = \"password\"\n      document.getElementById(\"show-hide-signup-pw\").classList.remove(\"icon-eye-blocked\")\n      document.getElementById(\"show-hide-signup-pw\").classList.add(\"icon-eye\")\n    }\n  })\n\n  $(\"#next-calendar\").click(function (e) {\n    e.preventDefault()\n    if (calendarIndex < 2) {\n      calendarIndex += 1\n    }\n    const baseIndex = calendarIndex * 4\n    document.getElementsByClassName(\"pro-search-calendar\").forEach((element) => {\n      $(element).find(\"th\").hide()\n      $(element).find(\"td\").hide()\n      $(element).find(`th[data-index=${baseIndex}]`).show()\n      $(element).find(`td[data-index=${baseIndex}]`).show()\n      $(element)\n        .find(`th[data-index=${baseIndex + 1}]`)\n        .show()\n      $(element)\n        .find(`td[data-index=${baseIndex + 1}]`)\n        .show()\n      $(element)\n        .find(`th[data-index=${baseIndex + 2}]`)\n        .show()\n      $(element)\n        .find(`td[data-index=${baseIndex + 2}]`)\n        .show()\n      $(element)\n        .find(`th[data-index=${baseIndex + 3}]`)\n        .show()\n      $(element)\n        .find(`td[data-index=${baseIndex + 3}]`)\n        .show()\n    })\n  })\n\n  $(\"#prev-calendar\").click(function (e) {\n    e.preventDefault()\n    if (calendarIndex > 0) {\n      calendarIndex -= 1\n    }\n    const baseIndex = calendarIndex * 4\n    document.getElementsByClassName(\"pro-search-calendar\").forEach((element) => {\n      $(element).find(\"th\").hide()\n      $(element).find(\"td\").hide()\n      $(element).find(`th[data-index=${baseIndex}]`).show()\n      $(element).find(`td[data-index=${baseIndex}]`).show()\n      $(element)\n        .find(`th[data-index=${baseIndex + 1}]`)\n        .show()\n      $(element)\n        .find(`td[data-index=${baseIndex + 1}]`)\n        .show()\n      $(element)\n        .find(`th[data-index=${baseIndex + 2}]`)\n        .show()\n      $(element)\n        .find(`td[data-index=${baseIndex + 2}]`)\n        .show()\n      $(element)\n        .find(`th[data-index=${baseIndex + 3}]`)\n        .show()\n      $(element)\n        .find(`td[data-index=${baseIndex + 3}]`)\n        .show()\n    })\n  })\n\n  // Make calendar/practitioners found sticky on scroll\n  $(window).scroll(function () {\n    if ($(window).scrollTop() > 5) {\n      $(\".sticky-calendar\").addClass(\"sticky\")\n    } else {\n      $(\".sticky-calendar\").removeClass(\"sticky\")\n    }\n  })\n\n  // \"Fake\" clicking buttons to trigger actions in stimulus controller\n  $(\"#virtual-button\").click(function (e) {\n    const btn = document.getElementById(\"virtual-remote-checkbox\")\n    btn.click()\n    document.getElementById(\"all-pros-button\").classList.remove(\"active\")\n    document.getElementById(\"in-person-button\").classList.remove(\"active\")\n    document.getElementById(\"in-home-button\").classList.remove(\"active\")\n    document.getElementById(\"virtual-button\").classList.add(\"active\")\n  })\n  $(\"#in-home-button\").click(function (e) {\n    const btn = document.getElementById(\"in-home-remote-checkbox\")\n    btn.click()\n    document.getElementById(\"all-pros-button\").classList.remove(\"active\")\n    document.getElementById(\"in-person-button\").classList.remove(\"active\")\n    document.getElementById(\"virtual-button\").classList.remove(\"active\")\n    document.getElementById(\"in-home-button\").classList.add(\"active\")\n  })\n  $(\"#in-person-button\").click(function (e) {\n    const btn = document.getElementById(\"inperson-remote-checkbox\")\n    btn.click()\n    document.getElementById(\"all-pros-button\").classList.remove(\"active\")\n    document.getElementById(\"in-person-button\").classList.add(\"active\")\n    document.getElementById(\"virtual-button\").classList.remove(\"active\")\n    document.getElementById(\"in-home-button\").classList.remove(\"active\")\n  })\n  $(\"#all-pros-button\").click(function (e) {\n    const btn = document.getElementById(\"allpros-remote-checkbox\")\n    btn.click()\n    document.getElementById(\"all-pros-button\").classList.add(\"active\")\n    document.getElementById(\"in-person-button\").classList.remove(\"active\")\n    document.getElementById(\"virtual-button\").classList.remove(\"active\")\n    document.getElementById(\"in-home-button\").classList.remove(\"active\")\n  })\n  $(\"#apply-filters\")\n    .unbind()\n    .click(function (e) {\n      console.log(\"track this click event\")\n      const btn = document.getElementById(\"submitFilters\")\n      btn.click()\n      $(this).closest(\".modal\").removeClass(\"is-active\")\n    })\n\n  $(\"#search-field-mobile-button\").click(function (e) {\n    $(\"#modal-slider\").fadeIn(() => {\n      document.getElementById(\"modal-slider\").style.display = \"inline-block\"\n    })\n  })\n\n  $(\"#close-modal-slider\").click(function (e) {\n    $(\"#modal-slider\").fadeOut(() => {})\n  })\n\n  $(\"#search-button\").click(function (e) {\n    $(\"#modal-slider\").fadeOut(() => {})\n  })\n\n  // \"Fake\" clicking buttons to trigger filters in localities page\n  $(\"#virtual-localities-button\").click(function (e) {\n    document.getElementById(\"all-pros-localities-button\").classList.remove(\"active\")\n    document.getElementById(\"in-person-localities-button\").classList.remove(\"active\")\n    document.getElementById(\"virtual-localities-button\").classList.add(\"active\")\n    $(\"#virtual-locality-value\").prop(\"checked\", true)\n    $(\"#in-person-locality-value\").prop(\"checked\", false)\n    const btn = document.getElementById(\"submit-localities-filters\")\n    btn.click()\n  })\n  $(\"#in-person-localities-button\").click(function (e) {\n    document.getElementById(\"all-pros-localities-button\").classList.remove(\"active\")\n    document.getElementById(\"in-person-localities-button\").classList.add(\"active\")\n    document.getElementById(\"virtual-localities-button\").classList.remove(\"active\")\n    $(\"#virtual-locality-value\").prop(\"checked\", false)\n    $(\"#in-person-locality-value\").prop(\"checked\", true)\n    const btn = document.getElementById(\"submit-localities-filters\")\n    btn.click()\n  })\n  $(\"#all-pros-localities-button\").click(function (e) {\n    document.getElementById(\"all-pros-localities-button\").classList.add(\"active\")\n    document.getElementById(\"in-person-localities-button\").classList.remove(\"active\")\n    document.getElementById(\"virtual-localities-button\").classList.remove(\"active\")\n    $(\"#virtual-locality-value\").prop(\"checked\", false)\n    $(\"#in-person-locality-value\").prop(\"checked\", false)\n    const btn = document.getElementById(\"submit-localities-filters\")\n    btn.click()\n  })\n\n  // \"Fake\" clicking buttons to trigger filters in quiz page\n  $(\"#virtual-quiz-button\").click(function (e) {\n    document.getElementById(\"all-pros-quiz-button\").classList.remove(\"active\")\n    document.getElementById(\"in-person-quiz-button\").classList.remove(\"active\")\n    document.getElementById(\"virtual-quiz-button\").classList.add(\"active\")\n    $(\"#virtual-quiz-value\").prop(\"checked\", true)\n    $(\"#in-person-quiz-value\").prop(\"checked\", false)\n    const btn = document.getElementById(\"submit-quiz-filters\")\n    btn.click()\n  })\n  $(\"#in-person-quiz-button\").click(function (e) {\n    document.getElementById(\"all-pros-quiz-button\").classList.remove(\"active\")\n    document.getElementById(\"in-person-quiz-button\").classList.add(\"active\")\n    document.getElementById(\"virtual-quiz-button\").classList.remove(\"active\")\n    $(\"#virtual-quiz-value\").prop(\"checked\", false)\n    $(\"#in-person-quiz-value\").prop(\"checked\", true)\n    const btn = document.getElementById(\"submit-quiz-filters\")\n    btn.click()\n  })\n  $(\"#all-pros-quiz-button\").click(function (e) {\n    document.getElementById(\"all-pros-quiz-button\").classList.add(\"active\")\n    document.getElementById(\"in-person-quiz-button\").classList.remove(\"active\")\n    document.getElementById(\"virtual-quiz-button\").classList.remove(\"active\")\n    $(\"#virtual-quiz-value\").prop(\"checked\", false)\n    $(\"#in-person-quiz-value\").prop(\"checked\", false)\n    const btn = document.getElementById(\"submit-quiz-filters\")\n    btn.click()\n  })\n\n  // Read More Service description\n  $(\"[service-read-more]\").each(function () {\n    let innerStr = $(this).text()\n    const maxLength = parseInt($(this).attr(\"service-read-more\"))\n    if (innerStr.includes(\"read more...\")) {\n      innerStr = innerStr.substring(maxLength + 13)\n    }\n\n    if (\n      innerStr.length > maxLength &&\n      innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n    ) {\n      const newStr = innerStr.substring(0, maxLength)\n      $(this).empty().html(newStr)\n      $(this).append(' <a href=\"\" service-read-more-trigger>read more...</a>')\n      $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n    }\n  })\n\n  $(\"body\").on(\"click\", \"a[service-read-more-trigger]\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\"[service-read-more]\")\n    const originalString = parent.find(\"span[data-more-text]\").html()\n    parent.empty().html(originalString)\n  })\n\n  $(\"body\").on(\"click\", \"#add-time-length-1\", function (e) {\n    e.preventDefault()\n    $(this).parent().siblings(\".is-hidden\").first().removeClass(\"is-hidden\")\n    $(this).addClass(\"hidden\")\n  })\n\n  $(\"body\").on(\"click\", \"#add-time-length-2\", function (e) {\n    e.preventDefault()\n    $(this).parent().parent().siblings(\".is-hidden\").first().removeClass(\"is-hidden\")\n    $(this).parent().remove()\n  })\n\n  $(\"body\").on(\"click\", \"#add-time-length-3\", function (e) {\n    e.preventDefault()\n    $(this).parent().siblings(\".is-hidden\").first().removeClass(\"is-hidden\")\n    $(this).addClass(\"hidden\")\n  })\n\n  $(\"body\").on(\"click\", \"#add-time-length-4\", function (e) {\n    e.preventDefault()\n    $(this).parent().parent().siblings(\".is-hidden\").first().removeClass(\"is-hidden\")\n    $(this).parent().remove()\n  })\n\n  $(\"body\").on(\"click\", \"#book-now-services\", function (e) {\n    document.getElementById(\"booking-side-bar\").style.border = \"2px solid #0c3954\"\n    document.getElementById(\"booking-side-bar\").style.transition = \"border-width 1.5s linear\"\n  })\n\n  $(\"body\").on(\"click\", \"#coupon-section\", function (e) {\n    $(\"#coupon-section\").fadeOut(() => {\n      $(\"#coupon-form\").fadeIn()\n    })\n  })\n\n  // TEMPORARY: Show Performance data in Development\n  if (process.env.NODE_ENV === \"development\" && window.performance) {\n    const performance = window.performance\n    const performanceEntries = performance.getEntriesByType(\"paint\")\n    performanceEntries.forEach((performanceEntry, i, entries) => {\n      console.log(\"The time to \" + performanceEntry.name + \" was \" + performanceEntry.startTime + \" milliseconds.\")\n    })\n  }\n\n  $(\"#phone_input\").intlTelInput({\n    formatOnInit: true,\n    separateDialCode: true\n  })\n\n  // Press Escape key to close modal\n  $(document).keydown(function (event) {\n    if (event.keyCode === 27) {\n      Array.from(document.getElementsByClassName(\"modal is-active\")).forEach((modal) => {\n        modal.classList.remove(\"is-active\")\n      })\n    }\n  })\n\n  const current_url = document.location.toString()\n  window.addEventListener(\"popstate\", (event) => {\n    if (\n      document.location.toString().includes(\"practitioner-search\") &&\n      document.location.toString().includes(\"query\")\n    ) {\n      if (current_url && !current_url.includes(\"practitioner-search\")) {\n        location.reload()\n      }\n    }\n  })\n\n  $(\"#checkout_is_recurring_true\").click(function () {\n    $(\".recurrence\").show()\n  })\n  $(\"#checkout_is_recurring_false\").click(function () {\n    $(\".recurrence\").hide()\n  })\n\n  $(\"body\").on(\"click\", \".copy-link\", function (e) {\n    e.preventDefault()\n    const parent = $(this).closest(\".copy-link\")\n    var link = parent.prevObject[0].dataset.value\n    var txtArea = document.createElement(\"textarea\")\n    document.body.appendChild(txtArea)\n    txtArea.value = link\n    txtArea.select()\n    document.execCommand(\"copy\")\n    document.body.removeChild(txtArea)\n    document.execCommand(\"copy\")\n    parent.prevObject[0].innerText = \"Copied to clipboard\"\n  })\n})\n","document.addEventListener(\"turbolinks:load\", function () {\n  // Quiz Completion\n  if ($(\"body.quizzes\").length && $(\".computation-state\").length) {\n    const element = $(\".computation-state\")\n\n    setTimeout(function () {\n      element.find(\".computing\").fadeOut(function () {\n        const resultsElement = element.find(\".results\")\n        $(\".image.hero-img img\").replaceWith(resultsElement.data(\"image-tag\"))\n        resultsElement.fadeIn(1000)\n      })\n    }, 3000)\n  }\n})\n","if (!window.App) {\n  window.App = {}\n}\n\nApp.$ = $ // Allows us to use App.$ in UJS partials to get the Cash wrapper.\n\nApp.refireLoad = () => document.dispatchEvent(new Event(\"turbolinks:load\", { bubbles: true, cancelable: true }))\n","document.addEventListener(\"turbolinks:load\", function () {\n  // Tabs\n  $(\"body\").on(\"click\", \".tabs ul li a\", function (e) {\n    if ($(this).attr(\"data-index\")) {\n      e.preventDefault()\n      const parent = $(this).closest(\".tabs\")\n      const tabsetName = parent.attr(\"data-tabs\")\n      const index = $(this).attr(\"data-index\")\n      const tabPanels = $(`.tab-panels[data-tabs='${tabsetName}']`)\n\n      parent.find(\"li\").removeClass(\"is-active\")\n      $(this).closest(\"li\").addClass(\"is-active\")\n\n      tabPanels.find(\".tab-panel.is-active\").removeClass(\"is-active\")\n      tabPanels.find(`.tab-panel[data-index='${index}']`).addClass(\"is-active\")\n    }\n  })\n})\n","(function(){var aa=this;function k(a){return\"string\"==typeof a}function m(a,b){a=a.split(\".\");var c=aa;a[0]in c||!c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b}\nfunction n(a,b){function c(){}c.prototype=b.prototype;a.o=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.aa=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e<arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};var p=Array.prototype.indexOf?function(a,b,c){return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(k(a))return k(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};function q(a,b){a.sort(b||ba)}function ba(a,b){return a>b?1:a<b?-1:0};function ca(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};function da(a,b){this.a=a;this.h=!!b.i;this.c=b.b;this.m=b.type;this.l=!1;switch(this.c){case ea:case fa:case ha:case ia:case ja:case ka:case la:this.l=!0}this.g=b.defaultValue}var la=1,ka=2,ea=3,fa=4,ha=6,ia=16,ja=18;function ma(a,b){this.c=a;this.a={};for(a=0;a<b.length;a++){var c=b[a];this.a[c.a]=c}}function na(a){a=ca(a.a);q(a,function(a,c){return a.a-c.a});return a};function r(){this.a={};this.g=this.f().a;this.c=this.h=null}r.prototype.has=function(a){return null!=this.a[a.a]};r.prototype.get=function(a,b){return t(this,a.a,b)};r.prototype.set=function(a,b){u(this,a.a,b)};r.prototype.add=function(a,b){v(this,a.a,b)};\nfunction oa(a,b){for(var c=na(a.f()),d=0;d<c.length;d++){var e=c[d],f=e.a;if(null!=b.a[f]){a.c&&delete a.c[e.a];var g=11==e.c||10==e.c;if(e.h){e=w(b,f);for(var h=0;h<e.length;h++)v(a,f,g?e[h].clone():e[h])}else e=x(b,f),g?(g=x(a,f))?oa(g,e):u(a,f,e.clone()):u(a,f,e)}}}r.prototype.clone=function(){var a=new this.constructor;a!=this&&(a.a={},a.c&&(a.c={}),oa(a,this));return a};\nfunction x(a,b){var c=a.a[b];if(null==c)return null;if(a.h){if(!(b in a.c)){var d=a.h,e=a.g[b];if(null!=c)if(e.h){for(var f=[],g=0;g<c.length;g++)f[g]=d.c(e,c[g]);c=f}else c=d.c(e,c);return a.c[b]=c}return a.c[b]}return c}function t(a,b,c){var d=x(a,b);return a.g[b].h?d[c||0]:d}function y(a,b){if(null!=a.a[b])a=t(a,b,void 0);else a:{a=a.g[b];if(void 0===a.g)if(b=a.m,b===Boolean)a.g=!1;else if(b===Number)a.g=0;else if(b===String)a.g=a.l?\"0\":\"\";else{a=new b;break a}a=a.g}return a}\nfunction w(a,b){return x(a,b)||[]}function A(a,b){return a.g[b].h?null!=a.a[b]?a.a[b].length:0:null!=a.a[b]?1:0}function u(a,b,c){a.a[b]=c;a.c&&(a.c[b]=c)}function v(a,b,c){a.a[b]||(a.a[b]=[]);a.a[b].push(c);a.c&&delete a.c[b]}function B(a,b){var c=[],d;for(d in b)0!=d&&c.push(new da(d,b[d]));return new ma(a,c)};function C(){}C.prototype.a=function(a){new a.c;throw Error(\"Unimplemented\");};C.prototype.c=function(a,b){if(11==a.c||10==a.c)return b instanceof r?b:this.a(a.m.prototype.f(),b);if(14==a.c)return k(b)&&pa.test(b)&&(a=Number(b),0<a)?a:b;if(!a.l)return b;a=a.m;if(a===String){if(\"number\"==typeof b)return String(b)}else if(a===Number&&k(b)&&(\"Infinity\"===b||\"-Infinity\"===b||\"NaN\"===b||pa.test(b)))return Number(b);return b};var pa=/^-?[0-9]+$/;function D(){}n(D,C);D.prototype.a=function(a,b){a=new a.c;a.h=this;a.a=b;a.c={};return a};function E(){}n(E,D);E.prototype.c=function(a,b){return 8==a.c?!!b:C.prototype.c.apply(this,arguments)};E.prototype.a=function(a,b){return E.o.a.call(this,a,b)};function F(a,b){null!=a&&this.a.apply(this,arguments)}F.prototype.c=\"\";F.prototype.set=function(a){this.c=\"\"+a};F.prototype.a=function(a,b,c){this.c+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.c+=arguments[d];return this};F.prototype.toString=function(){return this.c};/*\n Protocol Buffer 2 Copyright 2008 Google Inc.\n All other code copyright its respective owners.\n Copyright (C) 2010 The Libphonenumber Authors\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nfunction G(){r.call(this)}n(G,r);var qa=null;function H(){r.call(this)}n(H,r);var ra=null;function I(){r.call(this)}n(I,r);var sa=null;\nG.prototype.f=function(){var a=qa;a||(qa=a=B(G,{0:{name:\"NumberFormat\",j:\"i18n.phonenumbers.NumberFormat\"},1:{name:\"pattern\",required:!0,b:9,type:String},2:{name:\"format\",required:!0,b:9,type:String},3:{name:\"leading_digits_pattern\",i:!0,b:9,type:String},4:{name:\"national_prefix_formatting_rule\",b:9,type:String},6:{name:\"national_prefix_optional_when_formatting\",b:8,defaultValue:!1,type:Boolean},5:{name:\"domestic_carrier_code_formatting_rule\",b:9,type:String}}));return a};G.f=G.prototype.f;\nH.prototype.f=function(){var a=ra;a||(ra=a=B(H,{0:{name:\"PhoneNumberDesc\",j:\"i18n.phonenumbers.PhoneNumberDesc\"},2:{name:\"national_number_pattern\",b:9,type:String},9:{name:\"possible_length\",i:!0,b:5,type:Number},10:{name:\"possible_length_local_only\",i:!0,b:5,type:Number},6:{name:\"example_number\",b:9,type:String}}));return a};H.f=H.prototype.f;\nI.prototype.f=function(){var a=sa;a||(sa=a=B(I,{0:{name:\"PhoneMetadata\",j:\"i18n.phonenumbers.PhoneMetadata\"},1:{name:\"general_desc\",b:11,type:H},2:{name:\"fixed_line\",b:11,type:H},3:{name:\"mobile\",b:11,type:H},4:{name:\"toll_free\",b:11,type:H},5:{name:\"premium_rate\",b:11,type:H},6:{name:\"shared_cost\",b:11,type:H},7:{name:\"personal_number\",b:11,type:H},8:{name:\"voip\",b:11,type:H},21:{name:\"pager\",b:11,type:H},25:{name:\"uan\",b:11,type:H},27:{name:\"emergency\",b:11,type:H},28:{name:\"voicemail\",b:11,type:H},\n29:{name:\"short_code\",b:11,type:H},30:{name:\"standard_rate\",b:11,type:H},31:{name:\"carrier_specific\",b:11,type:H},33:{name:\"sms_services\",b:11,type:H},24:{name:\"no_international_dialling\",b:11,type:H},9:{name:\"id\",required:!0,b:9,type:String},10:{name:\"country_code\",b:5,type:Number},11:{name:\"international_prefix\",b:9,type:String},17:{name:\"preferred_international_prefix\",b:9,type:String},12:{name:\"national_prefix\",b:9,type:String},13:{name:\"preferred_extn_prefix\",b:9,type:String},15:{name:\"national_prefix_for_parsing\",\nb:9,type:String},16:{name:\"national_prefix_transform_rule\",b:9,type:String},18:{name:\"same_mobile_and_fixed_line_pattern\",b:8,defaultValue:!1,type:Boolean},19:{name:\"number_format\",i:!0,b:11,type:G},20:{name:\"intl_number_format\",i:!0,b:11,type:G},22:{name:\"main_country_for_code\",b:8,defaultValue:!1,type:Boolean},23:{name:\"leading_digits\",b:9,type:String},26:{name:\"leading_zero_possible\",b:8,defaultValue:!1,type:Boolean}}));return a};I.f=I.prototype.f;function J(){r.call(this)}n(J,r);var ta=null,ua={$:0,w:1,v:5,u:10,s:20};\nJ.prototype.f=function(){var a=ta;a||(ta=a=B(J,{0:{name:\"PhoneNumber\",j:\"i18n.phonenumbers.PhoneNumber\"},1:{name:\"country_code\",required:!0,b:5,type:Number},2:{name:\"national_number\",required:!0,b:4,type:Number},3:{name:\"extension\",b:9,type:String},4:{name:\"italian_leading_zero\",b:8,type:Boolean},8:{name:\"number_of_leading_zeros\",b:5,defaultValue:1,type:Number},5:{name:\"raw_input\",b:9,type:String},6:{name:\"country_code_source\",b:14,defaultValue:0,type:ua},7:{name:\"preferred_domestic_carrier_code\",\nb:9,type:String}}));return a};J.ctor=J;J.ctor.f=J.prototype.f;/*\n Copyright (C) 2010 The Libphonenumber Authors\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nvar K={1:\"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI\".split(\" \"),7:[\"RU\",\"KZ\"],20:[\"EG\"],27:[\"ZA\"],30:[\"GR\"],31:[\"NL\"],32:[\"BE\"],33:[\"FR\"],34:[\"ES\"],36:[\"HU\"],39:[\"IT\",\"VA\"],40:[\"RO\"],41:[\"CH\"],43:[\"AT\"],44:[\"GB\",\"GG\",\"IM\",\"JE\"],45:[\"DK\"],46:[\"SE\"],47:[\"NO\",\"SJ\"],48:[\"PL\"],49:[\"DE\"],51:[\"PE\"],52:[\"MX\"],53:[\"CU\"],54:[\"AR\"],55:[\"BR\"],56:[\"CL\"],57:[\"CO\"],58:[\"VE\"],60:[\"MY\"],61:[\"AU\",\"CC\",\"CX\"],62:[\"ID\"],63:[\"PH\"],64:[\"NZ\"],65:[\"SG\"],66:[\"TH\"],81:[\"JP\"],82:[\"KR\"],84:[\"VN\"],\n86:[\"CN\"],90:[\"TR\"],91:[\"IN\"],92:[\"PK\"],93:[\"AF\"],94:[\"LK\"],95:[\"MM\"],98:[\"IR\"],211:[\"SS\"],212:[\"MA\",\"EH\"],213:[\"DZ\"],216:[\"TN\"],218:[\"LY\"],220:[\"GM\"],221:[\"SN\"],222:[\"MR\"],223:[\"ML\"],224:[\"GN\"],225:[\"CI\"],226:[\"BF\"],227:[\"NE\"],228:[\"TG\"],229:[\"BJ\"],230:[\"MU\"],231:[\"LR\"],232:[\"SL\"],233:[\"GH\"],234:[\"NG\"],235:[\"TD\"],236:[\"CF\"],237:[\"CM\"],238:[\"CV\"],239:[\"ST\"],240:[\"GQ\"],241:[\"GA\"],242:[\"CG\"],243:[\"CD\"],244:[\"AO\"],245:[\"GW\"],246:[\"IO\"],247:[\"AC\"],248:[\"SC\"],249:[\"SD\"],250:[\"RW\"],251:[\"ET\"],252:[\"SO\"],\n253:[\"DJ\"],254:[\"KE\"],255:[\"TZ\"],256:[\"UG\"],257:[\"BI\"],258:[\"MZ\"],260:[\"ZM\"],261:[\"MG\"],262:[\"RE\",\"YT\"],263:[\"ZW\"],264:[\"NA\"],265:[\"MW\"],266:[\"LS\"],267:[\"BW\"],268:[\"SZ\"],269:[\"KM\"],290:[\"SH\",\"TA\"],291:[\"ER\"],297:[\"AW\"],298:[\"FO\"],299:[\"GL\"],350:[\"GI\"],351:[\"PT\"],352:[\"LU\"],353:[\"IE\"],354:[\"IS\"],355:[\"AL\"],356:[\"MT\"],357:[\"CY\"],358:[\"FI\",\"AX\"],359:[\"BG\"],370:[\"LT\"],371:[\"LV\"],372:[\"EE\"],373:[\"MD\"],374:[\"AM\"],375:[\"BY\"],376:[\"AD\"],377:[\"MC\"],378:[\"SM\"],380:[\"UA\"],381:[\"RS\"],382:[\"ME\"],383:[\"XK\"],385:[\"HR\"],\n386:[\"SI\"],387:[\"BA\"],389:[\"MK\"],420:[\"CZ\"],421:[\"SK\"],423:[\"LI\"],500:[\"FK\"],501:[\"BZ\"],502:[\"GT\"],503:[\"SV\"],504:[\"HN\"],505:[\"NI\"],506:[\"CR\"],507:[\"PA\"],508:[\"PM\"],509:[\"HT\"],590:[\"GP\",\"BL\",\"MF\"],591:[\"BO\"],592:[\"GY\"],593:[\"EC\"],594:[\"GF\"],595:[\"PY\"],596:[\"MQ\"],597:[\"SR\"],598:[\"UY\"],599:[\"CW\",\"BQ\"],670:[\"TL\"],672:[\"NF\"],673:[\"BN\"],674:[\"NR\"],675:[\"PG\"],676:[\"TO\"],677:[\"SB\"],678:[\"VU\"],679:[\"FJ\"],680:[\"PW\"],681:[\"WF\"],682:[\"CK\"],683:[\"NU\"],685:[\"WS\"],686:[\"KI\"],687:[\"NC\"],688:[\"TV\"],689:[\"PF\"],690:[\"TK\"],\n691:[\"FM\"],692:[\"MH\"],800:[\"001\"],808:[\"001\"],850:[\"KP\"],852:[\"HK\"],853:[\"MO\"],855:[\"KH\"],856:[\"LA\"],870:[\"001\"],878:[\"001\"],880:[\"BD\"],881:[\"001\"],882:[\"001\"],883:[\"001\"],886:[\"TW\"],888:[\"001\"],960:[\"MV\"],961:[\"LB\"],962:[\"JO\"],963:[\"SY\"],964:[\"IQ\"],965:[\"KW\"],966:[\"SA\"],967:[\"YE\"],968:[\"OM\"],970:[\"PS\"],971:[\"AE\"],972:[\"IL\"],973:[\"BH\"],974:[\"QA\"],975:[\"BT\"],976:[\"MN\"],977:[\"NP\"],979:[\"001\"],992:[\"TJ\"],993:[\"TM\"],994:[\"AZ\"],995:[\"GE\"],996:[\"KG\"],998:[\"UZ\"]},wa={AC:[,[,,\"[46]\\\\d{4}|[01589]\\\\d{5}\",,\n,,,,,[5,6]],[,,\"6[2-467]\\\\d{3}\",,,,\"62889\",,,[5]],[,,\"4\\\\d{4}\",,,,\"40123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AC\",247,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"[01589]\\\\d{5}\",,,,\"542011\",,,[6]],,,[,,,,,,,,,[-1]]],AD:[,[,,\"[16]\\\\d{5,8}|[37-9]\\\\d{5}\",,,,,,,[6,8,9]],[,,\"[78]\\\\d{5}\",,,,\"712345\",,,[6]],[,,\"(?:3\\\\d|6(?:[0-8]|9(?:0\\\\d{2})?))\\\\d{4}\",,,,\"312345\",,,[6,9]],[,,\"180[02]\\\\d{4}\",,,,\"18001234\",,,[8]],[,,\"[19]\\\\d{5}\",,,,\"912345\",,,[6]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AD\",376,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[136-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"180\",\"180[02]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"690\"]]],,[,,,,,,,,,[-1]],,,[,,\"1800\\\\d{4}\",,,,\"18000000\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AE:[,[,,\"[2-79]\\\\d{7,8}|800\\\\d{2,9}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"[2-4679][2-8]\\\\d{6}\",,,,\"22345678\",,,[8],[7]],[,,\"5[024-68]\\\\d{7}\",,,,\"501234567\",,,[9]],[,,\"400\\\\d{6}|800\\\\d{2,9}\",,,,\"800123456\"],\n[,,\"900[02]\\\\d{5}\",,,,\"900234567\",,,[9]],[,,\"700[05]\\\\d{5}\",,,,\"700012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AE\",971,\"00\",\"0\",,,\"0\",,,,[[,\"([2-4679])(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-4679][2-8]\"],\"0$1\"],[,\"(5\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"([479]00)(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]00\"],\"$1\"],[,\"([68]00)(\\\\d{2,9})\",\"$1 $2\",[\"[68]00\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"600[25]\\\\d{5}\",,,,\"600212345\",,,[9]],,,[,,,,,,,,,[-1]]],AF:[,[,,\"[2-7]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\\\d{6}\",\n,,,\"234567890\",,,,[7]],[,,\"7(?:[014-9]\\\\d|2[89]|3[01])\\\\d{6}\",,,,\"701234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AF\",93,\"00\",\"0\",,,\"0\",,,,[[,\"([2-7]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AG:[,[,,\"[2589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"268(?:4(?:6[0-38]|84)|56[0-2])\\\\d{4}\",,,,\"2684601234\",,,,[7]],[,,\"268(?:464|7(?:1[3-9]|2\\\\d|3[246]|64|[78][0-689]))\\\\d{4}\",,,,\"2684641234\",,,,[7]],\n[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,\"26848[01]\\\\d{4}\",,,,\"2684801234\",,,,[7]],\"AG\",1,\"011\",\"1\",,,\"1\",,,,,,[,,\"26840[69]\\\\d{4}\",,,,\"2684061234\",,,,[7]],,\"268\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AI:[,[,,\"[2589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"2644(?:6[12]|9[78])\\\\d{4}\",,,,\"2644612345\",,,,[7]],[,,\"264(?:235|476|5(?:3[6-9]|8[1-4])|7(?:29|72))\\\\d{4}\",\n,,,\"2642351234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AI\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"264\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AL:[,[,,\"[2-57]\\\\d{7}|6\\\\d{8}|8\\\\d{5,7}|9\\\\d{5}\",,,,,,,[6,7,8,9],[5]],[,,\"(?:[2358](?:[16-9]\\\\d[2-9]|[2-5][2-9]\\\\d)|4(?:[2-57-9][2-9]\\\\d|6\\\\d{2}))\\\\d{4}\",,,,\"22345678\",,,[8],[5,\n6,7]],[,,\"6(?:[689][2-9]|7[2-6])\\\\d{6}\",,,,\"662123456\",,,[9]],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"900[1-9]\\\\d{2}\",,,,\"900123\",,,[6]],[,,\"808[1-9]\\\\d{2}\",,,,\"808123\",,,[6]],[,,\"700[2-9]\\\\d{4}\",,,,\"70021234\",,,[8]],[,,,,,,,,,[-1]],\"AL\",355,\"00\",\"0\",,,\"0\",,,,[[,\"(4)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[0-6]\"],\"0$1\"],[,\"(6\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4[7-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"[235][16-9]|[79]|8[016-9]\"],\"0$1\"]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AM:[,[,,\"[1-9]\\\\d{7}\",,,,,,,[8],[5,6]],[,,\"(?:1[0-2]\\\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2|47\\\\d)\\\\d{5}\",,,,\"10123456\",,,,[5,6]],[,,\"(?:4[1349]|55|77|88|9[13-9])\\\\d{6}\",,,,\"77123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[016]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-4]\\\\d{5}\",,,,\"80112345\"],[,,,,,,,,,[-1]],[,,\"60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\\\d|90)\\\\d{4}\",,,,\"60271234\"],\"AM\",374,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{6})\",\n\"$1 $2\",[\"1|47\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4[1349]|[5-7]|88|9[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8|90\"],\"0 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AO:[,[,,\"[29]\\\\d{8}\",,,,,,,[9]],[,,\"2\\\\d(?:[26-9]\\\\d|\\\\d[26-9])\\\\d{5}\",,,,\"222123456\"],[,,\"9[1-49]\\\\d{7}\",,,,\"923123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AO\",244,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AR:[,[,,\"11\\\\d{8}|[2368]\\\\d{9}|9\\\\d{10}\",,,,,,,[10,11],[6,7,8]],[,,\"11\\\\d{8}|(?:2(?:2(?:[013]\\\\d|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:[07]\\\\d|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|6[013-9])|4(?:7[3-8]|9\\\\d)|6(?:[01346]\\\\d|2[24-6]|5[15-8])|80\\\\d|9(?:[012789]\\\\d|3[1-6]|4[02-9]|5[234]|6[2-46]))|3(?:3(?:2[79]|6\\\\d|8[2578])|4(?:0[0124-9]|[1-357]\\\\d|4[24-7]|6[02-9]|8[0-79]|9[1236-8])|5(?:[138]\\\\d|2[1245]|4[1-9]|6[2-4]|7[1-6])|6[24]\\\\d|7(?:[069]\\\\d|1[1568]|2[013-9]|3[145]|4[0-35-9]|5[14-8]|7[2-57]|8[0-24-9])|8(?:[01578]\\\\d|2[15-7]|3[0-24-9]|4[13-6]|6[1-357-9]|9[124]))|670\\\\d)\\\\d{6}\",\n,,,\"1123456789\",,,[10],[6,7,8]],[,,\"675\\\\d{7}|9(?:11[2-9]\\\\d{7}|(?:2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[12358]|5[138]|6[24]|7[069]|8[013578]))[2-9]\\\\d{6}|\\\\d{4}[2-9]\\\\d{5})\",,,,\"91123456789\",,,,[6,7,8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"60[04579]\\\\d{7}\",,,,\"6001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AR\",54,\"00\",\"0\",,,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))?15)?\",\n\"9$1\",,,[[,\"([68]\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"],\"$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"],\"$1\"],[,\"(9)(11)(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"911\"],\"0$1\"],[,\"(9)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-4689]|3[3-8])\",\"9(?:2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578]))\",\"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))\",\n\"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))\"],\"0$1\"],[,\"(9)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9[23]\"],\"0$1\"],[,\"(11)(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"11\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578])\",\"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))\",\n\"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1],[,\"(\\\\d{3})\",\"$1\",[\"1[0-2]|911\"],\"$1\"]],[[,\"([68]\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(9)(11)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"911\"]],[,\"(9)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9(?:2[2-4689]|3[3-8])\",\"9(?:2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578]))\",\n\"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))\",\"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))\"]],[,\"(9)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9[23]\"]],[,\"(11)(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"11\"],\"0$1\",\n,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578])\",\"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))\",\"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1]],[,,,,,,,,,[-1]],,,[,,\"810\\\\d{7}\",,,,\"8101234567\",,,[10]],[,,\"810\\\\d{7}\",,,,\"8101234567\",,,[10]],,,[,,,,,,,,,[-1]]],AS:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"6846(?:22|33|44|55|77|88|9[19])\\\\d{4}\",,,,\"6846221234\",,,,[7]],[,,\"684(?:2(?:5[2468]|72)|7(?:3[13]|70))\\\\d{4}\",,,,\"6847331234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AS\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"684\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AT:[,[,,\"[1-9]\\\\d{3,12}\",,,,,,,[4,5,6,7,8,9,10,11,12,13],[3]],[,,\"1\\\\d{3,12}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-8]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|63|7[1368]|8[2457])|5(?:12|2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[1-35-8]|5[468]|62)|7(?:2[1-8]|3[25]|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\\\d{3,10}\",\n,,,\"1234567890\",,,,[3]],[,,\"6(?:5[0-3579]|6[013-9]|[7-9]\\\\d)\\\\d{4,10}\",,,,\"664123456\",,,[7,8,9,10,11,12,13]],[,,\"800\\\\d{6,10}\",,,,\"800123456\",,,[9,10,11,12,13]],[,,\"9(?:0[01]|3[019])\\\\d{6,10}\",,,,\"900123456\",,,[9,10,11,12,13]],[,,\"8(?:10\\\\d|2(?:[01]\\\\d|8\\\\d?))\\\\d{5,9}\",,,,\"810123456\",,,[8,9,10,11,12,13]],[,,,,,,,,,[-1]],[,,\"780\\\\d{6,10}\",,,,\"780123456\",,,[9,10,11,12,13]],\"AT\",43,\"00\",\"0\",,,\"0\",,,,[[,\"(116\\\\d{3})\",\"$1\",[\"116\"],\"$1\"],[,\"(1)(\\\\d{3,12})\",\"$1 $2\",[\"1\"],\"0$1\"],[,\"(5\\\\d)(\\\\d{3,5})\",\"$1 $2\",\n[\"5[079]\"],\"0$1\"],[,\"(5\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5[079]\"],\"0$1\"],[,\"(5\\\\d)(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5[079]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:[28]0|32)|[89]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"2|3(?:1[1-578]|[3-8])|4[2378]|5[2-6]|6(?:[12]|4[1-9]|5[468])|7(?:[24][1-8]|35|[5-79])\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"5(?:(?:0[1-9]|17)\\\\d{2,10}|[79]\\\\d{3,11})|720\\\\d{6,10}\",,,,\"50123\",,,[5,6,7,8,9,10,11,12,13]],,,[,,,,,,\n,,,[-1]]],AU:[,[,,\"1\\\\d{4,9}|[2-578]\\\\d{8}\",,,,,,,[5,6,7,8,9,10]],[,,\"[237]\\\\d{8}|8(?:51(?:0(?:0[03-9]|[1247]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-6])|1(?:1[69]|[23]\\\\d|4[0-4]))|[6-8]\\\\d{4}|9(?:[02-9]\\\\d{3}|1(?:[0-57-9]\\\\d{2}|6[0135-9]\\\\d)))\\\\d{3}\",,,,\"212345678\",,,[9],[8]],[,,\"14(?:5\\\\d|71)\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[12457-9]|9[017-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"19(?:0[0126]\\\\d|[679])\\\\d{5}\",,,,\"1900123456\",,,[8,10]],\n[,,\"13(?:00\\\\d{3}|45[0-4]|\\\\d)\\\\d{3}\",,,,\"1300123456\",,,[6,8,10]],[,,\"500\\\\d{6}\",,,,\"500123456\",,,[9]],[,,\"550\\\\d{6}\",,,,\"550123456\",,,[9]],\"AU\",61,\"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011)|001[14-689]\",\"0\",,,\"0\",,\"0011\",,[[,\"([2378])(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|[45]\"],\"0$1\"],[,\"(16)(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[,\"(16)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[,\"(1[389]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[389]0\",\"1(?:[38]0|9)0\"]],\n[,\"(180)(2\\\\d{3})\",\"$1 $2\",[\"180\",\"1802\"]],[,\"(19\\\\d)(\\\\d{3})\",\"$1 $2\",[\"19[13]\"]],[,\"(19\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"19[679]\"]],[,\"(13)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"13[1-9]\"]]],,[,,\"16\\\\d{3,7}\",,,,\"1612345\",,,[5,6,7,8,9]],1,,[,,\"1(?:3(?:00\\\\d{3}|45[0-4]|\\\\d)\\\\d{3}|80(?:0\\\\d{6}|2\\\\d{3}))\",,,,\"1300123456\",,,[6,7,8,10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AW:[,[,,\"[25-9]\\\\d{6}\",,,,,,,[7]],[,,\"5(?:2\\\\d|8[1-9])\\\\d{4}\",,,,\"5212345\"],[,,\"(?:290|5[69]\\\\d|6(?:[03]0|22|4[0-2]|[69]\\\\d)|7(?:[34]\\\\d|7[07])|9(?:6[45]|9[4-8]))\\\\d{4}\",\n,,,\"5601234\"],[,,\"800\\\\d{4}\",,,,\"8001234\"],[,,\"900\\\\d{4}\",,,,\"9001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"28\\\\d{5}|501\\\\d{4}\",,,,\"5011234\"],\"AW\",297,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AX:[,[,,\"1\\\\d{5,11}|[35]\\\\d{5,9}|2\\\\d{4,9}|4\\\\d{5,10}|6\\\\d{7,9}|7\\\\d{4,9}|8\\\\d{6,9}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"18[1-8]\\\\d{3,9}\",,,,\"181234567\",,,[6,7,8,9,10,11,12]],[,,\"4\\\\d{5,10}|50\\\\d{4,8}\",,,,\"412345678\",,,[6,7,8,9,10,11]],[,,\"800\\\\d{4,7}\",\n,,,\"8001234567\",,,[7,8,9,10]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AX\",358,\"00|99(?:[01469]|5(?:11|3[23]|41|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,,,[,,,,,,,,,[-1]],,,[,,\"[13]00\\\\d{3,7}|2(?:0(?:0\\\\d{3,7}|2[023]\\\\d{1,6}|9[89]\\\\d{1,6}))|60(?:[12]\\\\d{5,6}|6\\\\d{7})|7(?:1\\\\d{7}|3\\\\d{8}|5[03-9]\\\\d{3,7})\",,,,\"1001234\",,,[5,6,7,8,9,10]],[,,\"[13]0\\\\d{4,8}|2(?:0(?:[016-8]\\\\d{3,7}|[2-59]\\\\d{2,7})|9\\\\d{4,8})|60(?:[12]\\\\d{5,6}|6\\\\d{7})|7(?:1\\\\d{7}|3\\\\d{8}|5[03-9]\\\\d{2,7})\",\n,,,\"10112345\",,,[5,6,7,8,9,10]],,,[,,,,,,,,,[-1]]],AZ:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:1[28]\\\\d{3}|2(?:02|1[24]|2[2-4]|33|[45]2|6[23])\\\\d{2}|365(?:[0-46-9]\\\\d|5[0-35-9]))\\\\d{4}\",,,,\"123123456\",,,,[7]],[,,\"(?:36554|(?:4[04]|5[015]|60|7[07])\\\\d{3})\\\\d{4}\",,,,\"401234567\"],[,,\"88\\\\d{7}\",,,,\"881234567\"],[,,\"900200\\\\d{3}\",,,,\"900200123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AZ\",994,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2(?:[0-36]|[45]2)|365\"],\n\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[4-8]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BA:[,[,,\"[3-9]\\\\d{7,8}\",,,,,,,[8,9],[6]],[,,\"(?:3(?:[05679][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\\\d{5}\",,,,\"30212345\",,,[8],[6]],[,,\"6(?:0(?:3\\\\d|40)|[1-356]\\\\d|44[0-6]|71[137])\\\\d{5}\",,,,\"61123456\"],\n[,,\"8[08]\\\\d{6}\",,,,\"80123456\",,,[8]],[,,\"9[0246]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"8[12]\\\\d{6}\",,,,\"82123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BA\",387,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-356]|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6[047]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70(?:3[0146]|[56]0)\\\\d{4}\",,,,\"70341234\",,,[8]],,,[,,,,,,,,,[-1]]],BB:[,[,,\"[2589]\\\\d{9}\",,,,\n,,,[10],[7]],[,,\"246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\\\d|3[2-9])|5(?:20|[34]\\\\d|54|7[1-3])|6(?:2\\\\d|38)|7(?:37|57)|9(?:1[89]|63))\\\\d{4}\",,,,\"2464123456\",,,,[7]],[,,\"246(?:2(?:[356]\\\\d|4[0-57-9]|8[0-79])|45\\\\d|69[5-7]|8(?:[2-5]\\\\d|83))\\\\d{4}\",,,,\"2462501234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900\\\\d{7}|246976\\\\d{4}\",,,,\"9002123456\",,,,[7]],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,\"24631\\\\d{5}\",,,,\"2463101234\",,,,\n[7]],\"BB\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"246\",[,,,,,,,,,[-1]],[,,\"246(?:292|367|4(?:1[7-9]|3[01]|44|67)|736)\\\\d{4}\",,,,\"2464301234\",,,,[7]],,,[,,,,,,,,,[-1]]],BD:[,[,,\"[2-79]\\\\d{5,9}|1\\\\d{9}|8[0-7]\\\\d{4,8}\",,,,,,,[6,7,8,9,10]],[,,\"2(?:[45]\\\\d{3}|7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|[139][1-6]|2[0157-9]|41|6[1-35]|7[1-5]|8[1-8]|90)|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0167]|7[15]|8[0146-9]))\\\\d{4}|3(?:12?[5-7]\\\\d{2}|0(?:2(?:[025-79]\\\\d|[348]\\\\d{1,2})|3(?:[2-4]\\\\d|[56]\\\\d?))|2(?:1\\\\d{2}|2(?:[12]\\\\d|[35]\\\\d{1,2}|4\\\\d?))|3(?:1\\\\d{2}|2(?:[2356]\\\\d|4\\\\d{1,2}))|4(?:1\\\\d{2}|2(?:2\\\\d{1,2}|[47]|5\\\\d{2}))|5(?:1\\\\d{2}|29)|[67]1\\\\d{2}|8(?:1\\\\d{2}|2(?:2\\\\d{2}|3|4\\\\d)))\\\\d{3}|4(?:0(?:2(?:[09]\\\\d|7)|33\\\\d{2})|1\\\\d{3}|2(?:1\\\\d{2}|2(?:[25]\\\\d?|[348]\\\\d|[67]\\\\d{1,2}))|3(?:1\\\\d{2}(?:\\\\d{2})?|2(?:[045]\\\\d|[236-9]\\\\d{1,2})|32\\\\d{2})|4(?:[18]\\\\d{2}|2(?:[2-46]\\\\d{2}|3)|5[25]\\\\d{2})|5(?:1\\\\d{2}|2(?:3\\\\d|5))|6(?:[18]\\\\d{2}|2(?:3(?:\\\\d{2})?|[46]\\\\d{1,2}|5\\\\d{2}|7\\\\d)|5(?:3\\\\d?|4\\\\d|[57]\\\\d{1,2}|6\\\\d{2}|8))|71\\\\d{2}|8(?:[18]\\\\d{2}|23\\\\d{2}|54\\\\d{2})|9(?:[18]\\\\d{2}|2[2-5]\\\\d{2}|53\\\\d{1,2}))\\\\d{3}|5(?:02[03489]\\\\d{2}|1\\\\d{2}|2(?:1\\\\d{2}|2(?:2(?:\\\\d{2})?|[457]\\\\d{2}))|3(?:1\\\\d{2}|2(?:[37](?:\\\\d{2})?|[569]\\\\d{2}))|4(?:1\\\\d{2}|2[46]\\\\d{2})|5(?:1\\\\d{2}|26\\\\d{1,2})|6(?:[18]\\\\d{2}|2|53\\\\d{2})|7(?:1|24)\\\\d{2}|8(?:1|26)\\\\d{2}|91\\\\d{2})\\\\d{3}|6(?:0(?:1\\\\d{2}|2(?:3\\\\d{2}|4\\\\d{1,2}))|2(?:2[2-5]\\\\d{2}|5(?:[3-5]\\\\d{2}|7)|8\\\\d{2})|3(?:1|2[3478])\\\\d{2}|4(?:1|2[34])\\\\d{2}|5(?:1|2[47])\\\\d{2}|6(?:[18]\\\\d{2}|6(?:2(?:2\\\\d|[34]\\\\d{2})|5(?:[24]\\\\d{2}|3\\\\d|5\\\\d{1,2})))|72[2-5]\\\\d{2}|8(?:1\\\\d{2}|2[2-5]\\\\d{2})|9(?:1\\\\d{2}|2[2-6]\\\\d{2}))\\\\d{3}|7(?:(?:02|[3-589]1|6[12]|72[24])\\\\d{2}|21\\\\d{3}|32)\\\\d{3}|8(?:(?:4[12]|[5-7]2|1\\\\d?)|(?:0|3[12]|[5-7]1|217)\\\\d)\\\\d{4}|9(?:[35]1|(?:[024]2|81)\\\\d|(?:1|[24]1)\\\\d{2})\\\\d{3}\",\n,,,\"27111234\",,,[6,7,8,9]],[,,\"(?:1[13-9]\\\\d|(?:3[78]|44)[02-9]|6(?:44|6[02-9]))\\\\d{7}\",,,,\"1812345678\",,,[10]],[,,\"80[03]\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"96(?:0[469]|1[0-4]|3[389]|6[69]|7[78])\\\\d{6}\",,,,\"9604123456\",,,[10]],\"BD\",880,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"[3-79]1\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"1|3(?:0|[2-58]2)|4(?:0|[25]2|3[23]|[4689][25])|5(?:[02-578]2|6[25])|6(?:[0347-9]2|[26][25])|7[02-9]2|8(?:[023][23]|[4-7]2)|9(?:[02][23]|[458]2|6[01367])\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"[3-79][2-9]|8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BE:[,[,,\"[1-9]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"(?:1[0-69]|[23][2-8]|4[23]|5\\\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\\\d{6}|80[2-8]\\\\d{5}\",,,,\"12345678\",,,[8]],[,,\"4(?:56|6[0135-8]|[79]\\\\d|8[3-9])\\\\d{6}\",,,,\"470123456\",,,[9]],[,,\"800[1-9]\\\\d{4}\",,,,\"80012345\",,,[8]],[,,\"(?:70(?:2[0-57]|3[0457]|44|69|7[0579])|90(?:0[0-35-8]|1[36]|2[0-3568]|3[0135689]|4[2-68]|5[1-68]|6[0-378]|7[23568]|9[34679]))\\\\d{4}\",\n,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BE\",32,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4[5-9]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]|4[23]|9[2-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[156]|7[018]|8(?:0[1-9]|[1-79])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"78[0-7]\\\\d{5}\",,,,\"78102345\",,,[8]],,,[,,,,,,,,,[-1]]],BF:[,[,,\"[25-7]\\\\d{7}\",\n,,,,,,[8]],[,,\"2(?:0(?:49|5[23]|6[56]|9[016-9])|4(?:4[569]|5[4-6]|6[56]|7[0179])|5(?:[34]\\\\d|50|6[5-7]))\\\\d{4}\",,,,\"20491234\"],[,,\"(?:5[124-8]|[67]\\\\d)\\\\d{6}\",,,,\"70123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BF\",226,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BG:[,[,,\"[23567]\\\\d{5,7}|[489]\\\\d{6,8}\",,,,,,,[6,7,8,9],[4,5]],[,,\"2\\\\d{5,7}|(?:[36]\\\\d|5[1-9]|8[1-6]|9[1-7])\\\\d{5,6}|(?:4(?:[124-7]\\\\d|3[1-6])|7(?:0[1-9]|[1-9]\\\\d))\\\\d{4,5}\",\n,,,\"2123456\",,,[6,7,8],[4,5]],[,,\"(?:8[7-9]\\\\d|9(?:8\\\\d|9[69]))\\\\d{6}|4(?:3[0789]|8\\\\d)\\\\d{5}\",,,,\"48123456\",,,[8,9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,\"700\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,,,,,,[-1]],\"BG\",359,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[,\"(2)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[124-7]|70[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[124-7]|70[1-9]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[78]00\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"99[69]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"48|8[7-9]|9[08]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BH:[,[,,\"[136-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:3[1356]|6[0156]|7\\\\d)\\\\d|6(?:1[16]\\\\d|500|6(?:0\\\\d|3[12]|44|7[7-9])|9[69][69])|7(?:1(?:11|78)|7\\\\d{2}))\\\\d{4}\",\n,,,\"17001234\"],[,,\"(?:3(?:[1-4679]\\\\d|5[013-69]|8[0-47-9])\\\\d|6(?:3(?:00|33|6[16])|6(?:[69]\\\\d|3[03-9]|7[0-6])))\\\\d{4}\",,,,\"36001234\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"(?:87|9[014578])\\\\d{6}\",,,,\"90123456\"],[,,\"84\\\\d{6}\",,,,\"84123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BH\",973,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BI:[,[,,\"[2367]\\\\d{7}\",,,,,,,[8]],[,,\"22\\\\d{6}\",,,,\"22201234\"],[,,\"(?:29|31|6[189]|7[125-9])\\\\d{6}\",,,,\"79561234\"],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BI\",257,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BJ:[,[,,\"[2689]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:02|1[037]|2[45]|3[68])\\\\d{5}\",,,,\"20211234\"],[,,\"(?:6\\\\d|9[03-9])\\\\d{6}\",,,,\"90011234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"857[58]\\\\d{4}\",,,,\"85751234\"],\"BJ\",229,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[2689]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"81\\\\d{6}\",,,,\"81123456\"],,,[,,,,,,,,,[-1]]],BL:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"590(?:2[7-9]|5[12]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d{2}|1(?:2[29]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BL\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BM:[,[,,\"[4589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"441(?:2(?:02|23|61|[3479]\\\\d)|[46]\\\\d{2}|5(?:4\\\\d|60|89)|824)\\\\d{4}\",\n,,,\"4412345678\",,,,[7]],[,,\"441(?:[37]\\\\d|5[0-39])\\\\d{5}\",,,,\"4413701234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"441\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BN:[,[,,\"[2-578]\\\\d{6}\",,,,,,,[7]],[,,\"2(?:[013-9]\\\\d|2[0-7])\\\\d{4}|[3-5]\\\\d{6}\",,,,\"2345678\"],[,,\"22[89]\\\\d{4}|[78]\\\\d{6}\",\n,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BN\",673,\"00\",,,,,,,,[[,\"([2-578]\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BO:[,[,,\"[23467]\\\\d{7}|8\\\\d{8}\",,,,,,,[8,9],[7]],[,,\"(?:2(?:2\\\\d{2}|5(?:11|[258]\\\\d|9[67])|6(?:12|2\\\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\\\d{2}|4(?:6\\\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:2\\\\d|3[234]|4[248]|5[24]|6[2-6]|7\\\\d))|4(?:4\\\\d{2}|6(?:11|[24689]\\\\d|72)))\\\\d{4}\",\n,,,\"22123456\",,,[8],[7]],[,,\"[67]\\\\d{7}\",,,,\"71234567\",,,[8]],[,,\"80017\\\\d{4}\",,,,\"800171234\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BO\",591,\"00(1\\\\d)?\",\"0\",,,\"0(1\\\\d)?\",,,,[[,\"([234])(\\\\d{7})\",\"$1 $2\",[\"[2-4]\"],,\"0$CC $1\"],[,\"([67]\\\\d{7})\",\"$1\",[\"[67]\"],,\"0$CC $1\"],[,\"(800)(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"800\"],,\"0$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BQ:[,[,,\"[347]\\\\d{6}\",,,,,,,[7]],[,,\"(?:318[023]|41(?:6[023]|70)|7(?:1[578]|50)\\\\d)\\\\d{3}\",\n,,,\"7151234\"],[,,\"(?:31(?:8[14-8]|9[14578])|416[145-9]|7(?:0[01]|7[07]|8\\\\d|9[056])\\\\d)\\\\d{3}\",,,,\"3181234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BQ\",599,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BR:[,[,,\"[1-46-9]\\\\d{7,10}|5(?:[0-4]\\\\d{7,9}|5(?:[2-8]\\\\d{7}|9\\\\d{7,8}))\",,,,,,,[8,9,10,11]],[,,\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\\\d{7}\",,,,\"1123456789\",,,[10],[8]],[,,\"(?:[189][1-9]|2[12478])(?:7|9\\\\d)\\\\d{7}|(?:3[1-578]|[46][1-9]|5[13-5]|7[13-579])(?:[6-9]|9\\\\d)\\\\d{7}\",\n,,,\"11961234567\",,,[10,11],[8]],[,,\"800\\\\d{6,7}\",,,,\"800123456\",,,[9,10]],[,,\"(?:300|[59]00\\\\d?)\\\\d{6}\",,,,\"300123456\",,,[9,10]],[,,\"(?:300\\\\d(?:\\\\d{2})?|4(?:0(?:0\\\\d|20)|370))\\\\d{4}\",,,,\"40041234\",,,[8,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BR\",55,\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"0\",,,\"0(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\",,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"300|4(?:0(?:0|20)|370)\"]],[,\"([3589]00)(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3589]00\"],\"0$1\"],[,\n\"(\\\\d{3,5})\",\"$1\",[\"1[125689]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[2-9](?:0[1-9]|[1-9])\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"9(?:0[1-9]|[1-9])\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"[1-9][1-9]\"],\"($1)\",\"0 $CC ($1)\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[1-9][1-9]9\"],\"($1)\",\"0 $CC ($1)\"]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"300|4(?:0(?:0|20)|370)\"]],[,\"([3589]00)(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3589]00\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"[1-9][1-9]\"],\"($1)\",\"0 $CC ($1)\"],\n[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[1-9][1-9]9\"],\"($1)\",\"0 $CC ($1)\"]],[,,,,,,,,,[-1]],,,[,,\"(?:300\\\\d|40(?:0\\\\d|20))\\\\d{4}\",,,,\"40041234\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BS:[,[,,\"[2589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\\\d{4}\",,,,\"2423456789\",,,,[7]],[,,\"242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\\\d|[89]9))\\\\d{4}\",\n,,,\"2423591234\",,,,[7]],[,,\"242300\\\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\",,,,[7]],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BS\",1,\"011?\",\"1\",,,\"1\",,\"011\",,,,[,,,,,,,,,[-1]],,\"242\",[,,,,,,,,,[-1]],[,,\"242225[0-46-9]\\\\d{3}\",,,,\"2422250123\"],,,[,,,,,,,,,[-1]]],BT:[,[,,\"[1-8]\\\\d{6,7}\",,,,,,,[7,8],[6]],[,,\"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\\\d{5}\",,,,\"2345678\",,,[7],[6]],\n[,,\"(?:1[67]|77)\\\\d{6}\",,,,\"17123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BT\",975,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1|77\"]],[,\"([2-8])(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BW:[,[,,\"[2-79]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\\\d|7[01])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[0389]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\\\d{4}\",\n,,,\"2401234\",,,[7]],[,,\"7(?:[1-6]\\\\d|7[014-8])\\\\d{5}\",,,,\"71123456\",,,[8]],[,,,,,,,,,[-1]],[,,\"90\\\\d{5}\",,,,\"9012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"79[12][01]\\\\d{4}\",,,,\"79101234\",,,[8]],\"BW\",267,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-6]\"]],[,\"(7\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[,\"(90)(\\\\d{5})\",\"$1 $2\",[\"90\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BY:[,[,,\"[1-4]\\\\d{8}|8(?:0(?:0\\\\d{3,7}|[13]\\\\d{7})|(?:10|20\\\\d)\\\\d{7})|9\\\\d{9,10}\",,,,,,,[6,\n7,8,9,10,11],[5]],[,,\"(?:1(?:5(?:1[1-5]|[24]\\\\d|6[2-4]|9[1-7])|6(?:[235]\\\\d|4[1-7])|7\\\\d{2})|2(?:1(?:[246]\\\\d|3[0-35-9]|5[1-9])|2(?:[235]\\\\d|4[0-8])|3(?:[26]\\\\d|3[02-79]|4[024-7]|5[03-7])))\\\\d{5}\",,,,\"152450911\",,,[9],[5,6,7]],[,,\"(?:2(?:5[5679]|9[1-9])|33\\\\d|44\\\\d)\\\\d{6}\",,,,\"294911911\",,,[9]],[,,\"8(?:0[13]|20\\\\d)\\\\d{7}|800\\\\d{3,7}\",,,,\"8011234567\"],[,,\"(?:810|902)\\\\d{7}\",,,,\"9021234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"249\\\\d{6}\",,,,\"249123456\",,,[9]],\"BY\",375,\"810\",\"8\",,,\"8?0?\",,\"8~10\",\n,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"17[0-3589]|2[4-9]|[34]\",\"17(?:[02358]|1[0-2]|9[0189])|2[4-9]|[34]\"],\"8 0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:5[24]|6[235]|7[467])|2(?:1[246]|2[25]|3[26])\",\"1(?:5[24]|6(?:2|3[04-9]|5[0346-9])|7(?:[46]|7[37-9]))|2(?:1[246]|2[25]|3[26])\"],\"8 0$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\n\"8 0$1\"],[,\"([89]\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8[01]|9\"],\"8 $1\"],[,\"(82\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"82\"],\"8 $1\"],[,\"(800)(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[,\"(800)(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,\"8(?:0[13]|10|20\\\\d)\\\\d{7}|800\\\\d{3,7}|902\\\\d{7}\",,,,\"82012345678\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BZ:[,[,,\"[2-8]\\\\d{6}|0\\\\d{10}\",,,,,,,[7,11]],[,,\"(?:2(?:[02]\\\\d|36)|[3-58][02]\\\\d|7(?:[02]\\\\d|32))\\\\d{4}\",,,,\"2221234\",,,[7]],[,,\"6[0-35-7]\\\\d{5}\",,,,\"6221234\",\n,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234123\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BZ\",501,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[,\"(0)(800)(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"080\",\"0800\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CA:[,[,,\"[2-9]\\\\d{9}\",,,,,,,[10],[7]],[,,\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:0[04]|13|22|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",\n,,,\"5062345678\",,,,[7]],[,,\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:0[04]|13|22|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",,,,\"2042345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"CA\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],CC:[,[,,\"[1458]\\\\d{5,9}\",,,,,,,[6,7,8,9,10]],[,,\"8(?:51(?:0(?:02|31|60)|118)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:08|22|68)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",,,,\"891621234\",,,[9],[8]],[,,\"14(?:5\\\\d|71)\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[12547-9]|9[017-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"19(?:0[0126]\\\\d|[679])\\\\d{5}\",,,,\"1900123456\",,,[8,10]],[,,\"13(?:00\\\\d{2})?\\\\d{4}\",,,,\"1300123456\",,,[6,10]],\n[,,\"500\\\\d{6}\",,,,\"500123456\",,,[9]],[,,\"550\\\\d{6}\",,,,\"550123456\",,,[9]],\"CC\",61,\"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]\",\"0\",,,\"0\",,\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CD:[,[,,\"[2-6]\\\\d{6}|[18]\\\\d{6,8}|9\\\\d{8}\",,,,,,,[7,9]],[,,\"1(?:2\\\\d{7}|\\\\d{6})|[2-6]\\\\d{6}\",,,,\"1234567\"],[,,\"8(?:[0-2459]\\\\d{2}|8)\\\\d{5}|9[017-9]\\\\d{7}\",,,,\"991234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CD\",243,\"00\",\"0\",,,\"0\",\n,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"12\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[0-2459]|9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CF:[,[,,\"[278]\\\\d{7}\",,,,,,,[8]],[,,\"2[12]\\\\d{6}\",,,,\"21612345\"],[,,\"7[0257]\\\\d{6}\",,,,\"70012345\"],[,,,,,,,,,[-1]],[,,\"8776\\\\d{4}\",,,,\"87761234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CF\",236,\"00\",\n,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CG:[,[,,\"[028]\\\\d{8}\",,,,,,,[9]],[,,\"222[1-589]\\\\d{5}\",,,,\"222123456\"],[,,\"0[14-6]\\\\d{7}\",,,,\"061234567\"],[,,,,,,,,,[-1]],[,,\"80(?:0\\\\d{2}|11[0-4])\\\\d{4}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CG\",242,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"801\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"800\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CH:[,[,,\"[2-9]\\\\d{8}|860\\\\d{9}\",,,,,,,[9,12]],[,,\"(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"7[5-9]\\\\d{7}\",,,,\"781234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90[016]\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"84[0248]\\\\d{6}\",,,,\"840123456\",,,[9]],[,,\"878\\\\d{6}\",,,,\"878123456\",,,[9]],[,,,,,,,,,[-1]],\"CH\",41,\"00\",\"0\",,,\"0\",,,,[[,\"([2-9]\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[2-7]|[89]1\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"860\"],\"0$1\"]],,[,,\"74[0248]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"5[18]\\\\d{7}\",,,,\"581234567\",,,[9]],,,[,,\"860\\\\d{9}\",,,,\"860123456789\",,,[12]]],CI:[,[,,\"[02-8]\\\\d{7}\",,,,,,,[8]],[,,\"(?:2(?:0[023]|1[02357]|[23][045]|4[03-5])|3(?:0[06]|1[069]|[2-4][07]|5[09]|6[08]))\\\\d{5}\",,,,\"21234567\"],[,,\"(?:0[1-9]|[45]\\\\d|6[014-9]|7[124-9]|8[4-9])\\\\d{6}\",\n,,,\"01234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CI\",225,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CK:[,[,,\"[2-8]\\\\d{4}\",,,,,,,[5]],[,,\"(?:2\\\\d|3[13-7]|4[1-5])\\\\d{3}\",,,,\"21234\"],[,,\"[5-8]\\\\d{4}\",,,,\"71234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CK\",682,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CL:[,[,,\"1230\\\\d{7}|[2-46-9]\\\\d{8,10}|5[1-3578]\\\\d{7}\",,,,,,,[9,10,11]],[,,\"2(?:1962\\\\d{4}|2\\\\d{7}|32[0-467]\\\\d{5})|(?:3[2-5]\\\\d|[47][1-35]\\\\d|5[1-3578]\\\\d|6[13-57]\\\\d|8(?:0[1-9]|[1-9]\\\\d)|9[3-9]\\\\d)\\\\d{6}\",,,,\"221234567\",,,[9]],[,,\"2(?:1962\\\\d{4}|2\\\\d{7}|32[0-467]\\\\d{5})|(?:3[2-5]\\\\d|[47][1-35]\\\\d|5[1-3578]\\\\d|6[13-57]\\\\d|8(?:0[1-9]|[1-9]\\\\d)|9[3-9]\\\\d)\\\\d{6}\",,,,\"961234567\",,,[9]],[,,\"800\\\\d{6}|1230\\\\d{7}\",,,,\"800123456\",,,[9,11]],[,,,,,,,,,[-1]],\n[,,\"600\\\\d{7,8}\",,,,\"6001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,\"44\\\\d{7}\",,,,\"441234567\",,,[9]],\"CL\",56,\"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0\",,,,,,,1,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[23]\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[357]|4[1-35]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[,\"(9)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]],[,\"(44)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"([68]00)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[68]00\"]],[,\"(600)(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",\n[\"600\"]],[,\"(1230)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"123\",\"1230\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\"],\"($1)\"],[,\"(\\\\d{4,5})\",\"$1\",[\"[1-9]\"],\"$1\"]],[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[23]\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[357]|4[1-35]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[,\"(9)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]],[,\"(44)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"([68]00)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[68]00\"]],[,\"(600)(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"600\"]],[,\"(1230)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"123\",\"1230\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\"],\"($1)\"]],[,,,,,,,,,[-1]],,,[,,\"600\\\\d{7,8}\",,,,\"6001234567\",,,[10,11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CM:[,[,,\"[2368]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"2(?:22|33|4[23])\\\\d{6}\",,,,\"222123456\",,,[9]],[,,\"6[5-9]\\\\d{7}\",,,,\"671234567\",,,[9]],[,,\"88\\\\d{6}\",,,,\"88012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CM\",237,\"00\",,,,,,,,[[,\"([26])(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[23]|88\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CN:[,[,,\"[1-7]\\\\d{6,11}|8[0-357-9]\\\\d{6,9}|9\\\\d{7,10}\",,,,,,,[7,8,9,10,11,12],[5,6]],[,,\"21(?:100\\\\d{2}|95\\\\d{3,4}|\\\\d{8,10})|(?:10|2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1\\\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|8(?:[57]1|98))(?:100\\\\d{2}|95\\\\d{3,4}|\\\\d{8})|(?:3(?:1[02-9]|35|49|5\\\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\\\d|2[248]|3[04-9]|4[3-6]|5[0-4689]|6[2368]|9[02-9])|8(?:078|1[236-8]|2[5-7]|3\\\\d|5[1-9]|7[02-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100\\\\d{2}|95\\\\d{3,4}|\\\\d{7})\",\n,,,\"1012345678\",,,,[5,6]],[,,\"1(?:[38]\\\\d{3}|4[57]\\\\d{2}|5[0-35-9]\\\\d{2}|66\\\\d{2}|7(?:[0-35-8]\\\\d{2}|40[0-5])|9[89]\\\\d{2})\\\\d{6}\",,,,\"13123456789\",,,[11]],[,,\"(?:10)?800\\\\d{7}\",,,,\"8001234567\",,,[10,12]],[,,\"16[08]\\\\d{5}\",,,,\"16812345\",,,[8]],[,,\"400\\\\d{7}|950\\\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[4789]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[3678]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))96\\\\d{3,4}\",\n,,,\"4001234567\",,,[7,8,9,10,11],[5,6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CN\",86,\"(?:1(?:[12]\\\\d{3}|79\\\\d{2}|9[0-7]\\\\d{2}))?00\",\"0\",,,\"(1(?:[12]\\\\d{3}|79\\\\d{2}|9[0-7]\\\\d{2}))|0\",,\"00\",,[[,\"([48]00)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[48]00\"]],[,\"(\\\\d{5,6})\",\"$1\",[\"100|95\"]],[,\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2\\\\d)[19]\",\"(?:10|2\\\\d)(?:10|9[56])\",\"(?:10|2\\\\d)(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[3-9]\",\"[3-9]\\\\d\\\\d[19]\",\"[3-9]\\\\d\\\\d(?:10|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3,4})(\\\\d{4})\",\n\"$1 $2\",[\"[2-9]\"]],[,\"(21)(\\\\d{4})(\\\\d{4,6})\",\"$1 $2 $3\",[\"21\"],\"0$1\",\"$CC $1\",1],[,\"([12]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10[1-9]|2[02-9]\",\"10[1-9]|2[02-9]\",\"10(?:[1-79]|8(?:0[1-9]|[1-9]))|2[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[47-9]|7|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])\"],\n\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[457]|6[09])|8(?:[57]1|98)\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"807\",\"8078\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:[3-57-9]|66)\"],,\"$CC $1\"],[,\"(10800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"108\",\"1080\",\"10800\"]],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"950\"]]],[[,\"([48]00)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[48]00\"]],[,\"(\\\\d{2})(\\\\d{5,6})\",\n\"$1 $2\",[\"(?:10|2\\\\d)[19]\",\"(?:10|2\\\\d)(?:10|9[56])\",\"(?:10|2\\\\d)(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[3-9]\",\"[3-9]\\\\d\\\\d[19]\",\"[3-9]\\\\d\\\\d(?:10|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(21)(\\\\d{4})(\\\\d{4,6})\",\"$1 $2 $3\",[\"21\"],\"0$1\",\"$CC $1\",1],[,\"([12]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10[1-9]|2[02-9]\",\"10[1-9]|2[02-9]\",\"10(?:[1-79]|8(?:0[1-9]|[1-9]))|2[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[47-9]|7|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])\"],\n\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[457]|6[09])|8(?:[57]1|98)\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"807\",\"8078\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:[3-57-9]|66)\"],,\"$CC $1\"],[,\"(10800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"108\",\"1080\",\"10800\"]],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"950\"]]],[,,,,,,,,,[-1]],,,[,,\"(?:4|(?:10)?8)00\\\\d{7}|950\\\\d{7,8}\",,,,\"4001234567\",\n,,[10,11,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CO:[,[,,\"(?:[13]\\\\d{0,3}|[24-8])\\\\d{7}\",,,,,,,[8,10,11],[7]],[,,\"[124-8][2-9]\\\\d{6}\",,,,\"12345678\",,,[8],[7]],[,,\"3(?:0[0-5]|1\\\\d|2[0-3]|5[01])\\\\d{7}\",,,,\"3211234567\",,,[10]],[,,\"1800\\\\d{7}\",,,,\"18001234567\",,,[11]],[,,\"19(?:0[01]|4[78])\\\\d{7}\",,,,\"19001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CO\",57,\"00(?:4(?:[14]4|56)|[579])\",\"0\",,,\"0([3579]|4(?:44|56))?\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1(?:[2-7]|8[2-9]|9[0-3])|[24-8]\",\"1(?:[2-7]|8[2-9]|9(?:09|[1-3]))|[24-8]\"],\n\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],,\"0$CC $1\"],[,\"(1)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1(?:80|9[04])\",\"1(?:800|9(?:0[01]|4[78]))\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1(?:[2-7]|8[2-9]|9[0-3])|[24-8]\",\"1(?:[2-7]|8[2-9]|9(?:09|[1-3]))|[24-8]\"],\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],,\"0$CC $1\"],[,\"(1)(\\\\d{3})(\\\\d{7})\",\"$1 $2 $3\",[\"1(?:80|9[04])\",\"1(?:800|9(?:0[01]|4[78]))\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CR:[,[,,\"[24-9]\\\\d{7,9}\",,\n,,,,,[8,10]],[,,\"2(?:[024-7]\\\\d{2}|1(?:0[7-9]|[1-9]\\\\d))\\\\d{4}\",,,,\"22123456\",,,[8]],[,,\"5(?:0[01]|7[0-3])\\\\d{5}|6(?:[0-4]\\\\d{3}|500[01])\\\\d{3}|(?:7[0-3]|8[3-9])\\\\d{6}\",,,,\"83123456\",,,[8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"90[059]\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"210[0-6]\\\\d{4}|4\\\\d{7}|5100\\\\d{4}\",,,,\"40001234\",,,[8]],\"CR\",506,\"00\",,,,\"(19(?:0[012468]|1[09]|20|66|77|99))\",,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[24-7]|8[3-9]\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1-$2-$3\",[\"[89]0\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CU:[,[,,\"[2-57]\\\\d{5,7}\",,,,,,,[6,7,8],[4,5]],[,,\"2[1-4]\\\\d{5,6}|3(?:1\\\\d{6}|[23]\\\\d{4,6})|4(?:[125]\\\\d{5,6}|[36]\\\\d{6}|[78]\\\\d{4,6})|7\\\\d{6,7}\",,,,\"71234567\",,,,[4,5]],[,,\"5\\\\d{7}\",,,,\"51234567\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CU\",53,\"119\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"[2-4]\"],\"(0$1)\"],\n[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CV:[,[,,\"[2-59]\\\\d{6}\",,,,,,,[7]],[,,\"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\\\d|7[1-3]|8[1-5])\\\\d{4}\",,,,\"2211234\"],[,,\"(?:[34][36]|5[1-389]|9\\\\d)\\\\d{5}\",,,,\"9911234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CV\",238,\"0\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CW:[,[,,\"[134679]\\\\d{6,7}\",\n,,,,,,[7,8]],[,,\"9(?:[48]\\\\d{2}|50\\\\d|7(?:2[0-24]|[34]\\\\d|6[35-7]|77|8[7-9]))\\\\d{4}\",,,,\"94151234\",,,[8]],[,,\"9(?:5(?:[12467]\\\\d|3[01])|6(?:[15-9]\\\\d|3[01]))\\\\d{4}\",,,,\"95181234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"60[0-2]\\\\d{4}\",,,,\"6001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CW\",599,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[13-7]\"]],[,\"(9)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],,[,,\"955\\\\d{5}\",,,,\"95581234\",,,[8]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CX:[,[,,\"[1458]\\\\d{5,9}\",\n,,,,,,[6,7,8,9,10]],[,,\"8(?:51(?:0(?:01|30|59)|117)|91(?:00[6-9]|1(?:21|49|78|81)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",,,,\"891641234\",,,[9],[8]],[,,\"14(?:5\\\\d|71)\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[12547-9]|9[017-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"19(?:0[0126]\\\\d|[679])\\\\d{5}\",,,,\"1900123456\",,,[8,10]],[,,\"13(?:00\\\\d{2})?\\\\d{4}\",,,,\"1300123456\",,,[6,8,10]],[,,\"500\\\\d{6}\",,,,\"500123456\",\n,,[9]],[,,\"550\\\\d{6}\",,,,\"550123456\",,,[9]],\"CX\",61,\"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]\",\"0\",,,\"0\",,\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CY:[,[,,\"[257-9]\\\\d{7}\",,,,,,,[8]],[,,\"2[2-6]\\\\d{6}\",,,,\"22345678\"],[,,\"9[4-79]\\\\d{6}\",,,,\"96123456\"],[,,\"800\\\\d{5}\",,,,\"80001234\"],[,,\"90[09]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-9]\\\\d{5}\",,,,\"80112345\"],[,,\"700\\\\d{5}\",,,,\"70012345\"],[,,,,,,,,,[-1]],\"CY\",357,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\"]],,[,,,,,\n,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:50|77)\\\\d{6}\",,,,\"77123456\"],,,[,,,,,,,,,[-1]]],CZ:[,[,,\"[2-8]\\\\d{8}|9\\\\d{8,11}\",,,,,,,[9,10,11,12]],[,,\"2\\\\d{8}|(?:3[1257-9]|4[16-9]|5[13-9])\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"(?:60[1-8]|7(?:0[2-5]|[2379]\\\\d))\\\\d{6}\",,,,\"601123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:0[05689]|76)\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"8[134]\\\\d{7}\",,,,\"811234567\",,,[9]],[,,\"70[01]\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"9[17]0\\\\d{6}\",,,,\"910123456\",,,[9]],\"CZ\",420,\"00\",,,,,,,\n,[[,\"([2-9]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[,\"(96\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"96\"]],[,\"(9\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9[36]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"9(?:5\\\\d|7[234])\\\\d{6}\",,,,\"972123456\",,,[9]],,,[,,\"9(?:3\\\\d{9}|6\\\\d{7,10})\",,,,\"93123456789\"]],DE:[,[,,\"[1-35-9]\\\\d{3,14}|4(?:[0-8]\\\\d{3,12}|9(?:[0-37]\\\\d|4(?:[1-35-8]|4\\\\d?)|5\\\\d{1,2}|6[1-8]\\\\d?)\\\\d{2,8})\",,,,,,,[4,5,6,7,8,9,10,11,12,13,14,15],[3]],[,,\"2\\\\d{5,13}|3(?:0\\\\d{3,13}|2\\\\d{9}|[3-9]\\\\d{4,13})|4(?:0\\\\d{3,12}|[1-8]\\\\d{4,12}|9(?:[0-37]\\\\d|4(?:[1-35-8]|4\\\\d?)|5\\\\d{1,2}|6[1-8]\\\\d?)\\\\d{2,8})|5(?:0[2-8]|[1256]\\\\d|[38][0-8]|4\\\\d{0,2}|[79][0-7])\\\\d{3,11}|6(?:\\\\d{5,13}|9\\\\d{3,12})|7(?:0[2-8]|[1-9]\\\\d)\\\\d{3,10}|8(?:0[2-9]|[1-8]\\\\d|9\\\\d?)\\\\d{3,10}|9(?:0[6-9]\\\\d{3,10}|1\\\\d{4,12}|[2-9]\\\\d{4,11})\",\n,,,\"30123456\",,,[5,6,7,8,9,10,11,12,13,14,15],[3,4]],[,,\"1(?:5[0-25-9]\\\\d{8}|6[023]\\\\d{7,8}|7\\\\d{8,9})\",,,,\"15123456789\",,,[10,11]],[,,\"800\\\\d{7,12}\",,,,\"8001234567890\",,,[10,11,12,13,14,15]],[,,\"137[7-9]\\\\d{6}|900(?:[135]\\\\d{6}|9\\\\d{7})\",,,,\"9001234567\",,,[10,11]],[,,\"1(?:3(?:7[1-6]\\\\d{6}|8\\\\d{4})|80\\\\d{5,11})\",,,,\"18012345\",,,[7,8,9,10,11,12,13,14]],[,,\"700\\\\d{8}\",,,,\"70012345678\",,,[11]],[,,,,,,,,,[-1]],\"DE\",49,\"00\",\"0\",,,\"0\",,,,[[,\"(1\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[,\"(15\\\\d{3})(\\\\d{6})\",\n\"$1 $2\",[\"15[0568]\"],\"0$1\"],[,\"(1\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"15\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,11})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,11})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14]|[4-9]1)|3(?:[35-9][15]|4[015])|[4-8][1-9]1|9(?:06|[1-9]1)\",\"2(?:0[1-389]|1(?:[14]|2[0-8])|2[18]|3[14]|[4-9]1)|3(?:[35-9][15]|4[015])|[4-8][1-9]1|9(?:06|[1-9]1)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|[7-9](?:0[1-9]|[1-9])\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|[46][1246]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|3[1357]|4[13578]|6[1246]|7[1356]|9[1346])|5(?:0[14]|2[1-3589]|3[1357]|[49][1246]|6[1-4]|7[13468]|8[13568])|6(?:0[1356]|2[1-489]|3[124-6]|4[1347]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|3[1357]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|4[1347]|6[0135-9]|7[1467]|8[136])|9(?:0[12479]|2[1358]|3[1357]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|[7-9](?:0[1-9]|[1-9])\"],\n\"0$1\"],[,\"(3\\\\d{4})(\\\\d{1,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(800)(\\\\d{7,12})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:37|80)|900\",\"1(?:37|80)|900[1359]\"],\"0$1\"],[,\"(1\\\\d{2})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[,\"(18\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[,\"(18\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[,\"(18\\\\d)(\\\\d{8})\",\"$1 $2\",[\"18[2-579]\"],\"0$1\"],[,\"(700)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"700\"],\"0$1\"],[,\"(138)(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[,\"(15[013-68])(\\\\d{2})(\\\\d{8})\",\n\"$1 $2 $3\",[\"15[013-68]\"],\"0$1\"],[,\"(15[279]\\\\d)(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[,\"(1[67]\\\\d)(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"]],,[,,\"16(?:4\\\\d{1,10}|[89]\\\\d{1,11})\",,,,\"16412345\",,,[4,5,6,7,8,9,10,11,12,13,14]],,,[,,,,,,,,,[-1]],[,,\"18(?:1\\\\d{5,11}|[2-9]\\\\d{8})\",,,,\"18500123456\",,,[8,9,10,11,12,13,14]],,,[,,\"1(?:5(?:(?:2\\\\d55|7\\\\d99|9\\\\d33)\\\\d{7}|(?:[034568]00|113)\\\\d{8})|6(?:013|255|399)\\\\d{7,8}|7(?:[015]13|[234]55|[69]33|[78]99)\\\\d{7,8})\",,,,\"177991234567\",\n,,[12,13]]],DJ:[,[,,\"[27]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:1[2-5]|7[45])\\\\d{5}\",,,,\"21360003\"],[,,\"77\\\\d{6}\",,,,\"77831001\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DJ\",253,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DK:[,[,,\"[2-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-36-9])\\\\d{6}\",,,,\"32123456\"],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-36-9])\\\\d{6}\",,,,\"20123456\"],[,,\"80\\\\d{6}\",\n,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DK\",45,\"00\",,,,,,,1,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DM:[,[,,\"[57-9]\\\\d{9}\",,,,,,,[10],[7]],[,,\"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4]|70[1-3])\\\\d{4}\",,,,\"7674201234\",,,,[7]],[,,\"767(?:2(?:[234689]5|7[5-7])|31[5-7]|61[1-7])\\\\d{4}\",,,,\"7672251234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],\n[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"767\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DO:[,[,,\"[589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"8(?:[04]9[2-9]\\\\d{6}|29(?:2(?:[0-59]\\\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\\\d|4[7-9])|[45]\\\\d{2}|6(?:[0-27-9]\\\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9]))\\\\d{4})\",\n,,,\"8092345678\",,,,[7]],[,,\"8[024]9[2-9]\\\\d{6}\",,,,\"8092345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DO\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"8[024]9\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DZ:[,[,,\"(?:[1-4]|[5-9]\\\\d)\\\\d{7}\",,,,,,,[8,9]],[,,\"(?:1\\\\d|2[013-79]|3[0-8]|4[0135689])\\\\d{6}|9619\\\\d{5}\",,,,\"12345678\"],[,,\n\"(?:5[4-6]|7[7-9])\\\\d{7}|6(?:[569]\\\\d|7[0-6])\\\\d{6}\",,,,\"551234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"80[3-689]1\\\\d{5}\",,,,\"808123456\",,,[9]],[,,\"80[12]1\\\\d{5}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"98[23]\\\\d{6}\",,,,\"983123456\",,,[9]],\"DZ\",213,\"00\",\"0\",,,\"0\",,,,[[,\"([1-4]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[,\"([5-8]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"],[,\"(9\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"]],,[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EC:[,[,,\"1\\\\d{9,10}|[2-8]\\\\d{7}|9\\\\d{8}\",,,,,,,[8,9,10,11],[7]],[,,\"[2-7][2-7]\\\\d{6}\",,,,\"22123456\",,,[8],[7]],[,,\"9(?:(?:39|[57][89]|[89]\\\\d)\\\\d|6(?:[0-27-9]\\\\d|30))\\\\d{5}\",,,,\"991234567\",,,[9]],[,,\"1800\\\\d{6,7}\",,,,\"18001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[2-7]890\\\\d{4}\",,,,\"28901234\",,,[8]],\"EC\",593,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[247]|[356][2-8]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(1800)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"180\",\"1800\"],\"$1\"]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[247]|[356][2-8]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(1800)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"180\",\"1800\"],\"$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EE:[,[,,\"[3-9]\\\\d{6,7}|800\\\\d{6,7}\",,,,,,,[7,8,10]],[,,\"(?:3[23589]|4[3-8]|6\\\\d|7[1-9]|88)\\\\d{5}\",,,,\"3212345\",,,[7]],[,,\"(?:5\\\\d|8[1-5])\\\\d{6}|5(?:[02]\\\\d{2}|1(?:[0-8]\\\\d|95)|5[0-478]\\\\d|64[0-4]|65[1-589])\\\\d{3}\",\n,,,\"51234567\",,,[7,8]],[,,\"800(?:0\\\\d{3}|1\\\\d|[2-9])\\\\d{3}\",,,,\"80012345\"],[,,\"(?:40\\\\d{2}|900)\\\\d{4}\",,,,\"9001234\",,,[7,8]],[,,,,,,,,,[-1]],[,,\"70[0-2]\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,,,,,,[-1]],\"EE\",372,\"00\",,,,,,,,[[,\"([3-79]\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]\"]],[,\"(70)(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"70\"]],[,\"(8000)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"800\",\"8000\"]],[,\"([458]\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2\",[\"40|5|8(?:00|[1-5])\",\"40|5|8(?:00[1-9]|[1-5])\"]]],,[,,,,,,,,,[-1]],,,[,,\"800[2-9]\\\\d{3}\",,,,\"8002123\",,,[7]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EG:[,[,,\"1\\\\d{4,9}|[24-6]\\\\d{8}|3\\\\d{7}|[89]\\\\d{8,9}\",,,,,,,[8,9,10],[7]],[,,\"(?:1(?:3[23]\\\\d|5(?:[23]|9\\\\d))|2[2-4]\\\\d{2}|3\\\\d{2}|4(?:0[2-5]|[578][23]|64)\\\\d|5(?:0[2-7]|5\\\\d|7[23])\\\\d|6[24-689]3\\\\d|8(?:2[2-57]|4[26]|6[237]|8[2-4])\\\\d|9(?:2[27]|3[24]|52|6[2356]|7[2-4])\\\\d)\\\\d{5}\",,,,\"234567890\",,,[8,9],[7]],[,,\"1[0125]\\\\d{8}\",,,,\"1001234567\",,,[10]],\n[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"EG\",20,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1(?:3|5[239])|[4-6]|[89][2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1[0-25]|[89]00\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EH:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"528[89]\\\\d{5}\",,,,\"528812345\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0[067]|6[1267]|7[017]))\\\\d{6}\",\n,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5924[01]\\\\d{4}\",,,,\"592401234\"],\"EH\",212,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"528[89]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ER:[,[,,\"[178]\\\\d{6}\",,,,,,,[7],[6]],[,,\"1(?:1[12568]|20|40|55|6[146])\\\\d{4}|8\\\\d{6}\",,,,\"8370362\",,,,[6]],[,,\"17[1-3]\\\\d{4}|7\\\\d{6}\",,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ER\",291,\"00\",\"0\",,,\"0\",\n,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ES:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"8(?:[1356]\\\\d|[28][0-8]|[47][1-9])\\\\d{6}|9(?:[135]\\\\d{7}|[28][0-8]\\\\d{6}|4[1-9]\\\\d{6}|6(?:[0-8]\\\\d{6}|9(?:0(?:[0-57-9]\\\\d{4}|6(?:0[0-8]|1[1-9]|[2-9]\\\\d)\\\\d{2})|[1-9]\\\\d{5}))|7(?:[124-9]\\\\d{2}|3(?:[0-8]\\\\d|9[1-9]))\\\\d{4})\",,,,\"810123456\"],[,,\"(?:6\\\\d{6}|7[1-48]\\\\d{5}|9(?:6906(?:09|10)|7390\\\\d{2}))\\\\d{2}\",,,,\"612345678\"],[,,\"[89]00\\\\d{6}\",,,,\"800123456\"],\n[,,\"80[367]\\\\d{6}\",,,,\"803123456\"],[,,\"90[12]\\\\d{6}\",,,,\"901123456\"],[,,\"70\\\\d{7}\",,,,\"701234567\"],[,,,,,,,,,[-1]],\"ES\",34,\"00\",,,,,,,,[[,\"([89]00)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[,\"([5-9]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[568]|[79][0-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"51\\\\d{7}\",,,,\"511234567\"],,,[,,,,,,,,,[-1]]],ET:[,[,,\"[1-59]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:11(?:1(?:1[124]|2[2-57]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:18|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|22[0-6]|33[0134689]|44[04]|55[0-6]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:11[1-9]|22[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\\\d)))\\\\d{4}\",\n,,,\"111112345\",,,,[7]],[,,\"9\\\\d{8}\",,,,\"911234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ET\",251,\"00\",\"0\",,,\"0\",,,,[[,\"([1-59]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FI:[,[,,\"1\\\\d{4,11}|[2-9]\\\\d{4,10}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"1(?:[3569][1-8]\\\\d{3,9}|[47]\\\\d{5,10})|2[1-8]\\\\d{3,9}|3(?:[1-8]\\\\d{3,9}|9\\\\d{4,8})|[5689][1-8]\\\\d{3,9}\",,,,\"1312345678\"],[,,\"4(?:[0-8]\\\\d{4,9}|9\\\\d{3,8})|50\\\\d{4,8}\",\n,,,\"412345678\",,,[6,7,8,9,10,11]],[,,\"800\\\\d{4,7}\",,,,\"8001234567\",,,[7,8,9,10]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FI\",358,\"00|99(?:[01469]|5(?:11|3[23]|41|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[6-8])0\"],\"0$1\"],[,\"(75\\\\d{3})\",\"$1\",[\"75[12]\"],\"0$1\"],[,\"(116\\\\d{3})\",\"$1\",[\"116\"],\"$1\"],[,\"(\\\\d{2})(\\\\d{4,10})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4,11})\",\"$1 $2\",[\"[25689][1-8]|3\"],\"0$1\"]],\n,[,,,,,,,,,[-1]],1,,[,,\"[13]00\\\\d{3,7}|2(?:0(?:0\\\\d{3,7}|2[023]\\\\d{1,6}|9[89]\\\\d{1,6}))|60(?:[12]\\\\d{5,6}|6\\\\d{7})|7(?:1\\\\d{7}|3\\\\d{8}|5[03-9]\\\\d{3,7})\",,,,\"100123\",,,[5,6,7,8,9,10]],[,,\"[13]0\\\\d{4,8}|2(?:0(?:[016-8]\\\\d{3,7}|[2-59]\\\\d{2,7})|9\\\\d{4,8})|60(?:[12]\\\\d{5,6}|6\\\\d{7})|7(?:1\\\\d{7}|3\\\\d{8}|5[03-9]\\\\d{3,7})\",,,,\"10112345\",,,[5,6,7,8,9,10]],,,[,,,,,,,,,[-1]]],FJ:[,[,,\"[2-9]\\\\d{6}|0\\\\d{10}\",,,,,,,[7,11]],[,,\"(?:3[0-5]\\\\d|6(?:03|[25-7]\\\\d)|8[58]\\\\d)\\\\d{4}\",,,,\"3212345\",,,[7]],[,,\"(?:[279]\\\\d|45|5[01568]|8[034679])\\\\d{5}\",\n,,,\"7012345\",,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FJ\",679,\"0(?:0|52)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FK:[,[,,\"[2-7]\\\\d{4}\",,,,,,,[5]],[,,\"[2-47]\\\\d{4}\",,,,\"31234\"],[,,\"[56]\\\\d{4}\",,,,\"51234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FK\",500,\"00\",\n,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FM:[,[,,\"[39]\\\\d{6}\",,,,,,,[7]],[,,\"3[2357]0[1-9]\\\\d{3}|9[2-6]\\\\d{5}\",,,,\"3201234\"],[,,\"3[2357]0[1-9]\\\\d{3}|9[2-7]\\\\d{5}\",,,,\"3501234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FM\",691,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FO:[,[,,\"[2-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:20|[3-4]\\\\d|8[19])\\\\d{4}\",,,,\"201234\"],[,,\"(?:[27][1-9]|5\\\\d)\\\\d{4}\",\n,,,\"211234\"],[,,\"80[257-9]\\\\d{3}\",,,,\"802123\"],[,,\"90(?:[1345][15-7]|2[125-7]|99)\\\\d{2}\",,,,\"901123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:6[0-36]|88)\\\\d{4}\",,,,\"601234\"],\"FO\",298,\"00\",,,,\"(10(?:01|[12]0|88))\",,,,[[,\"(\\\\d{6})\",\"$1\",,,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FR:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9]],[,,\"[1-5]\\\\d{8}\",,,,\"123456789\"],[,,\"(?:6\\\\d|7[3-9])\\\\d{7}\",,,,\"612345678\"],[,,\"80[0-5]\\\\d{6}\",,,,\"801234567\"],[,,\"8[129]\\\\d{7}\",,,,\"891123456\"],[,,\"884\\\\d{6}\",\n,,,\"884012345\"],[,,,,,,,,,[-1]],[,,\"9\\\\d{8}\",,,,\"912345678\"],\"FR\",33,\"00\",\"0\",,,\"0\",,,,[[,\"([1-79])(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"],[,\"(1\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"11\"],\"$1\"],[,\"(8\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"]],[[,\"([1-79])(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"],[,\"(8\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"80[6-9]\\\\d{6}\",,,,\"806123456\"],,,[,,,\n,,,,,,[-1]]],GA:[,[,,\"0?\\\\d{7}\",,,,,,,[7,8]],[,,\"01\\\\d{6}\",,,,\"01441234\",,,[8]],[,,\"0?[2-7]\\\\d{6}\",,,,\"06031234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GA\",241,\"00\",,,,,,,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GB:[,[,,\"\\\\d{7,10}\",,,,,,,[7,9,10],[4,5,6,8]],[,,\"2(?:0[01378]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{7}|1(?:1(?:3[0-48]|[46][0-4]|5[0-26-9]|[78][0-49])|21[0-7]|31[0-8]|[4-69]1\\\\d)\\\\d{6}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)|3(?:0\\\\d|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[28][02-57-9]|[37]\\\\d|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|2[024-9]|3[015689]|4[02-9]|5[03-9]|6\\\\d|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0124578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|8\\\\d|9[2-57]))\\\\d{6}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[345])))|3(?:638[2-5]|647[23]|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[123]))|5(?:24(?:3[2-79]|6\\\\d)|276\\\\d|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[567]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|955[0-4])|7(?:26(?:6[13-9]|7[0-7])|442\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|84(?:3[2-58]))|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}|176888[2-46-8]\\\\d{2}|16977[23]\\\\d{3}\",\n,,,\"1212345678\",,,[9,10],[4,5,6,7,8]],[,,\"7(?:[1-3]\\\\d{3}|4(?:[0-46-9]\\\\d{2}|5(?:[0-689]\\\\d|7[0-57-9]))|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])\\\\d|7(?:0(?:0[01]|[1-9]\\\\d)|[1-7]\\\\d{2}|8[02-9]\\\\d|9[0-689]\\\\d)|8(?:[014-9]\\\\d|[23][0-8])\\\\d|9(?:[024-9]\\\\d{2}|1(?:[02-9]\\\\d|1[028])|3[0-689]\\\\d))\\\\d{5}\",,,,\"7400123456\",,,[10]],[,,\"80(?:0(?:1111|\\\\d{6,7})|8\\\\d{7})\",,,,\"8001234567\"],[,,\"(?:87[123]|9(?:[01]\\\\d|8[2349]))\\\\d{7}\",,,,\"9012345678\",,,[10]],[,,\"8(?:4(?:5464\\\\d|[2-5]\\\\d{7})|70\\\\d{7})\",,,,\"8431234567\",,,[7,\n10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",,,[10]],\"GB\",44,\"00\",\"0\",\" x\",,\"0\",,,,[[,\"(7\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"7(?:[1-57-9]|62)\",\"7(?:[1-57-9]|624)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2|5[56]|7[06]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:[02-9]1|1)|3|9[018]\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[,\"(1\\\\d{3})(\\\\d{5,6})\",\n\"$1 $2\",[\"1\"],\"0$1\"],[,\"(800)(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[,\"(845)(46)(4\\\\d)\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[,\"(8\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8(?:4[2-5]|7[0-3])\"],\"0$1\"],[,\"(80\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\"],[,\"(800)(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"]],,[,,\"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",,,,\"7640123456\",,,[10]],1,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,\n,,,[-1]]],GD:[,[,,\"[4589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|68|73|90)|63[68]|7(?:58|84)|800|938)\\\\d{4}\",,,,\"4732691234\",,,,[7]],[,,\"473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\\\d{4}\",,,,\"4734031234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GD\",1,\"011\",\"1\",,,\n\"1\",,,,,,[,,,,,,,,,[-1]],,\"473\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GE:[,[,,\"[34578]\\\\d{8}\",,,,,,,[9],[6]],[,,\"(?:3(?:[256]\\\\d|4[124-9]|7[0-4])|4(?:1\\\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\\\d{6}\",,,,\"322123456\",,,,[6]],[,,\"(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\\\d{6}\",,,,\"555123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"706\\\\d{6}\",,,,\"706123456\"],\"GE\",995,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[348]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5|790\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"706\\\\d{6}\",,,,\"706123456\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GF:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"594(?:[023]\\\\d|1[01]|4[03-9]|5[6-9]|6[0-3]|80|9[014])\\\\d{4}\",,,,\"594101234\"],[,,\"694(?:[0-249]\\\\d|3[0-48])\\\\d{4}\",,,,\"694201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GF\",594,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GG:[,[,,\"[135789]\\\\d{6,9}\",,,,,,,[7,9,10],[6]],[,,\"1481[25-9]\\\\d{5}\",,,,\"1481256789\",,,[10],[6]],[,,\"7(?:781\\\\d|839\\\\d|911[17])\\\\d{5}\",,,,\"7781123456\",,,[10]],[,,\"80(?:0(?:1111|\\\\d{6,7})|8\\\\d{7})\",,,,\"8001234567\"],[,,\"(?:87[123]|9(?:[01]\\\\d|8[0-3]))\\\\d{7}\",,,,\"9012345678\",,,[10]],[,,\"8(?:4(?:5464\\\\d|[2-5]\\\\d{7})|70\\\\d{7})\",,,,\"8431234567\",,,[7,10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",\n,,[10]],\"GG\",44,\"00\",\"0\",,,\"0\",,,,,,[,,\"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",,,,\"7640123456\",,,[10]],,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,,,,[-1]]],GH:[,[,,\"[235]\\\\d{8}|8\\\\d{7}\",,,,,,,[8,9],[7]],[,,\"3(?:0(?:[237]\\\\d|80)|[167](?:2[0-6]|7\\\\d|80)|2(?:2[0-5]|7\\\\d|80)|3(?:2[0-3]|7\\\\d|80)|4(?:2[013-9]|3[01]|7\\\\d|80)|5(?:2[0-7]|7\\\\d|80)|8(?:2[0-2]|7\\\\d|80)|9(?:[28]0|7\\\\d))\\\\d{5}\",,,,\"302345678\",,,[9],[7]],[,,\"(?:2[034678]\\\\d|5(?:[0457]\\\\d|6[01]))\\\\d{6}\",\n,,,\"231234567\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GH\",233,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GI:[,[,,\"[256]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:00\\\\d{2}|1(?:6[24-7]\\\\d|90[0-2])|2(?:2[2457]\\\\d|50[0-2]))\\\\d{3}\",,,,\"20012345\"],[,,\"(?:5[46-8]|62)\\\\d{6}\",,,,\"57123456\"],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GI\",350,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GL:[,[,,\"[1-689]\\\\d{5}\",,,,,,,[6]],[,,\"(?:19|3[1-7]|6[14689]|8[14-79]|9\\\\d)\\\\d{4}\",,,,\"321000\"],[,,\"(?:[25][1-9]|4[2-9])\\\\d{4}\",,,,\"221234\"],[,,\"80\\\\d{4}\",,,,\"801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3[89]\\\\d{4}\",,,,\"381234\"],\"GL\",299,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GM:[,[,,\"[2-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:4(?:[23]\\\\d{2}|4(?:1[024679]|[6-9]\\\\d))|5(?:54[0-7]|6(?:[67]\\\\d)|7(?:1[04]|2[035]|3[58]|48))|8\\\\d{3})\\\\d{3}\",,,,\"5661234\"],[,,\"[23679]\\\\d{6}\",,,,\"3012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GM\",220,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GN:[,[,,\"[367]\\\\d{7,8}\",\n,,,,,,[8,9]],[,,\"30(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])\\\\d{4}\",,,,\"30241234\",,,[8]],[,,\"6[02356]\\\\d{7}\",,,,\"601123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"722\\\\d{6}\",,,,\"722123456\",,,[9]],\"GN\",224,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GP:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\",\n,,,\"590201234\"],[,,\"69(?:0\\\\d{2}|1(?:2[29]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GP\",590,\"00\",\"0\",,,\"0\",,,,[[,\"([56]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"590|69[01]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GQ:[,[,,\"[23589]\\\\d{8}\",,,,,,,[9]],[,,\"3(?:3(?:3\\\\d[7-9]|[0-24-9]\\\\d[46])|5\\\\d{2}[7-9])\\\\d{4}\",,,,\"333091234\"],[,,\"(?:222|55[15])\\\\d{6}\",,,,\"222123456\"],[,,\"80\\\\d[1-9]\\\\d{5}\",\n,,,\"800123456\"],[,,\"90\\\\d[1-9]\\\\d{5}\",,,,\"900123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GQ\",240,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GR:[,[,,\"[26-9]\\\\d{9}\",,,,,,,[10]],[,,\"2(?:1\\\\d{2}|2(?:2[1-46-9]|3[1-8]|4[1-7]|5[1-4]|6[1-8]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|3[1245]|4[1-7]|5[13-9]|[269][1-6]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}\",\n,,,\"2123456789\"],[,,\"6(?:8[57-9]|9\\\\d)\\\\d{7}\",,,,\"6912345678\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"90[19]\\\\d{7}\",,,,\"9091234567\"],[,,\"8(?:0[16]|12|25)\\\\d{7}\",,,,\"8011234567\"],[,,\"70\\\\d{8}\",,,,\"7012345678\"],[,,,,,,,,,[-1]],\"GR\",30,\"00\",,,,,,,,[[,\"([27]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[2-9]1|[689]\"]],[,\"(2\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"2[2-9][02-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GT:[,[,,\"[2-7]\\\\d{7}|1[89]\\\\d{9}\",\n,,,,,,[8,11]],[,,\"[267][2-9]\\\\d{6}\",,,,\"22456789\",,,[8]],[,,\"[345]\\\\d{7}\",,,,\"51234567\",,,[8]],[,,\"18[01]\\\\d{8}\",,,,\"18001112222\",,,[11]],[,,\"19\\\\d{9}\",,,,\"19001112222\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GT\",502,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GU:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[079]7|2[0167]|3[45]|47|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",\n,,,\"6713001234\",,,,[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[079]7|2[0167]|3[45]|47|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",,,,\"6713001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GU\",1,\"011\",\"1\",,,\"1\",,,1,\n,,[,,,,,,,,,[-1]],,\"671\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GW:[,[,,\"(?:4(?:0\\\\d{5}|4\\\\d{7})|9\\\\d{8})\",,,,,,,[7,9]],[,,\"443\\\\d{6}\",,,,\"443201234\",,,[9]],[,,\"9(?:5\\\\d|6[569]|77)\\\\d{6}\",,,,\"955012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"40\\\\d{5}\",,,,\"4012345\",,,[7]],\"GW\",245,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"44|9[5-7]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nGY:[,[,,\"[2-46-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\\\d|7[0-24-79])|3(?:2[25-9]|3\\\\d)|4(?:4[0-24]|5[56])|77[1-57])\\\\d{4}\",,,,\"2201234\"],[,,\"6\\\\d{6}\",,,,\"6091234\"],[,,\"(?:289|862)\\\\d{4}\",,,,\"2891234\"],[,,\"9008\\\\d{3}\",,,,\"9008123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GY\",592,\"001\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HK:[,[,,\"[2-7]\\\\d{7}|8[0-4]\\\\d{6,7}|9\\\\d{4,10}\",,,,,,,[5,6,7,8,9,11]],[,\n,\"(?:2(?:[13-8]\\\\d|2[013-9]|9[0-24-9])\\\\d|3(?:[1569][0-24-9]\\\\d|4[0-246-9]\\\\d|7[0-24-69]\\\\d|8(?:4[04]|9\\\\d))|58(?:0[1-8]|1[2-9]))\\\\d{4}\",,,,\"21234567\",,,[8]],[,,\"(?:46(?:0[0-6]|4[0-57-9])|5(?:[1-59][0-46-9]\\\\d|6[0-4689]\\\\d|7(?:[0-2469]\\\\d|30))|6(?:0[1-9]\\\\d|[1459]\\\\d{2}|2(?:[0-57-9]\\\\d|6[01])|[368][0-57-9]\\\\d|7[0-79]\\\\d)|707[1-5]|8480|9(?:0[1-9]\\\\d|1[02-9]\\\\d|2(?:[0-8]\\\\d|9[03-9])|[358][0-8]\\\\d|[467]\\\\d{2}))\\\\d{4}\",,,,\"51234567\",,,[8]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"900(?:[0-24-9]\\\\d{7}|3\\\\d{1,4})\",\n,,,\"90012345678\",,,[5,6,7,8,11]],[,,,,,,,,,[-1]],[,,\"8(?:1[0-4679]\\\\d|2(?:[0-36]\\\\d|7[0-4])|3(?:[034]\\\\d|2[09]|70))\\\\d{4}\",,,,\"81123456\",,,[8]],[,,,,,,,,,[-1]],\"HK\",852,\"00(?:[126-9]|30|5[09])?\",,,,,,\"00\",,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|[89](?:0[1-9]|[1-9])\"]],[,\"(800)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"800\"]],[,\"(900)(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"900\"]],[,\"(900)(\\\\d{2,5})\",\"$1 $2\",[\"900\"]]],,[,,\"7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[136])|2(?:[02389]\\\\d|1[18]|7[27-9])|3(?:[0-38]\\\\d|7[0-369]|9[2357-9])|47\\\\d|5(?:[178]\\\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\\\d)|7(?:[27]\\\\d|8[7-9])|8(?:[23689]\\\\d|7[1-9])|9(?:[025]\\\\d|6[0-246-8]|7[0-36-9]|8[238]))\\\\d{4}\",\n,,,\"71123456\",,,[8]],,,[,,,,,,,,,[-1]],[,,\"30(?:0[1-9]|[15-7]\\\\d|2[047]|89)\\\\d{4}\",,,,\"30161234\",,,[8]],,,[,,,,,,,,,[-1]]],HN:[,[,,\"[237-9]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2(?:0[019]|1[1-36]|[23]\\\\d|4[04-6]|5[57]|7[013689]|8[0146-9]|9[012])|4(?:07|2[3-59]|3[13-689]|4[0-68]|5[1-35])|5(?:16|4[03-5]|5\\\\d|6[4-6]|74)|6(?:[056]\\\\d|17|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034])|8(?:79|8[0-35789]|9[1-57-9]))\\\\d{4}\",,,,\"22123456\"],[,,\"[37-9]\\\\d{7}\",,,,\"91234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"HN\",504,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HR:[,[,,\"[1-7]\\\\d{5,8}|[89]\\\\d{6,8}\",,,,,,,[6,7,8,9]],[,,\"1\\\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\\\d{6,7}\",,,,\"12345678\",,,[8,9],[6,7]],[,,\"9(?:01\\\\d|[1259]\\\\d{2}|7(?:[0679]\\\\d|51)|8\\\\d{1,2})\\\\d{5}\",,,,\"921234567\",,,[8,9]],[,,\"80[01]\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"6(?:[01]\\\\d{0,2}|[459]\\\\d{2})\\\\d{4}\",,,,\"611234\",,,[6,\n7,8]],[,,,,,,,,,[-1]],[,,\"7[45]\\\\d{6}\",,,,\"74123456\",,,[8]],[,,,,,,,,,[-1]],\"HR\",385,\"00\",\"0\",,,\"0\",,,,[[,\"(1)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"([2-5]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[,\"(9\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(6[01])(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[,\"([67]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[,\"(80[01])(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"80[01]\"],\"0$1\"],[,\"(80[01])(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]\"],\"0$1\"]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:62\\\\d?|72)\\\\d{6}\",,,,\"62123456\",,,[8,9]],,,[,,,,,,,,,[-1]]],HT:[,[,,\"[2-489]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2\\\\d|5[1-5]|81|9[149])\\\\d{5}\",,,,\"22453300\"],[,,\"[34]\\\\d{7}\",,,,\"34101234\"],[,,\"8\\\\d{7}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:9(?:[67][0-4]|8[0-3589]|9\\\\d))\\\\d{5}\",,,,\"98901234\"],\"HT\",509,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HU:[,[,,\"[1-9]\\\\d{7,8}\",\n,,,,,,[8,9],[6]],[,,\"(?:1\\\\d|2[2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|7[2-9]|8[2-57-9]|9[2-69])\\\\d{6}\",,,,\"12345678\",,,[8],[6]],[,,\"(?:[257]0|3[01])\\\\d{7}\",,,,\"201234567\",,,[9]],[,,\"[48]0\\\\d{6}\",,,,\"80123456\",,,[8]],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"21\\\\d{7}\",,,,\"211234567\",,,[9]],\"HU\",36,\"00\",\"06\",,,\"06\",,,,[[,\"(1)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"($1)\"]],,[,,,,,,,,,[-1]],,,[,,\"[48]0\\\\d{6}\",,,,\"80123456\",\n,,[8]],[,,\"38\\\\d{7}\",,,,\"381234567\",,,[9]],,,[,,,,,,,,,[-1]]],ID:[,[,,\"(?:[1-79]\\\\d{6,10}|8\\\\d{7,11})\",,,,,,,[7,8,9,10,11,12],[5,6]],[,,\"2(?:1(?:14\\\\d{3}|500\\\\d{3}|\\\\d{7,8})|2\\\\d{6,8}|4\\\\d{7,8})|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:19?|[25]\\\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\\\d{5,8}\",\n,,,\"612345678\",,,[7,8,9,10,11],[5,6]],[,,\"(?:2(?:1(?:3[145]|4[01]|5[1-469]|60|8[0359])|2(?:88|9[1256])|3[1-4]9|4(?:36|91)|5(?:1[349]|[2-4]9)|6[0-7]9|7(?:[1-36]9|4[39])|8[1-5]9|9[1-48]9)|3(?:19[1-3]|2[12]9|3[13]9|4(?:1[69]|39)|5[14]9|6(?:1[69]|2[89])|709)|4[13]19|5(?:1(?:19|8[39])|4[129]9|6[12]9)|6(?:19[12]|2(?:[23]9|77))|7(?:1[13]9|2[15]9|419|5(?:1[89]|29)|6[15]9|7[178]9))\\\\d{5,6}|8[1-35-9]\\\\d{7,10}\",,,,\"812345678\",,,[9,10,11,12]],[,,\"177\\\\d{6,8}|800\\\\d{5,7}\",,,,\"8001234567\",,,[8,9,10,11]],[,,\"809\\\\d{7}\",\n,,,\"8091234567\",,,[10]],[,,\"804\\\\d{7}\",,,,\"8041234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ID\",62,\"0(?:0[1789]|10(?:00|1[67]))\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5,8})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"2[035-9]|[36][02-9]|[4579]\"],\"(0$1)\"],[,\"(8\\\\d{2})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[,\"(8\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[,\"(1)(500)(\\\\d{3})\",\"$1 $2 $3\",[\"150\",\"1500\"],\"$1\"],[,\"(177)(\\\\d{6,8})\",\"$1 $2\",[\"177\"],\"0$1\"],[,\n\"(800)(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(804)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[,\"(80\\\\d)(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80[79]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"8071\\\\d{6}\",,,,\"8071123456\",,,[10]],[,,\"1500\\\\d{3}|8071\\\\d{6}\",,,,\"8071123456\",,,[7,10]],,,[,,,,,,,,,[-1]]],IE:[,[,,\"[124-9]\\\\d{6,9}\",,,,,,,[7,8,9,10],[5,6]],[,,\"1\\\\d{7,8}|2(?:1\\\\d{6,7}|3\\\\d{7}|[24-9]\\\\d{5})|4(?:0[24]\\\\d{5}|[1-469]\\\\d{7}|5\\\\d{6}|7\\\\d{5}|8[0-46-9]\\\\d{7})|5(?:0[45]\\\\d{5}|1\\\\d{6}|[23679]\\\\d{7}|8\\\\d{5})|6(?:1\\\\d{6}|[237-9]\\\\d{5}|[4-6]\\\\d{7})|7[14]\\\\d{7}|9(?:1\\\\d{6}|[04]\\\\d{7}|[35-9]\\\\d{5})\",\n,,,\"2212345\",,,,[5,6]],[,,\"8(?:22\\\\d{6}|[35-9]\\\\d{7})\",,,,\"850123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,\"15(?:1[2-8]|[2-8]0|9[089])\\\\d{6}\",,,,\"1520123456\",,,[10]],[,,\"18[59]0\\\\d{6}\",,,,\"1850123456\",,,[10]],[,,\"700\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"76\\\\d{7}\",,,,\"761234567\",,,[9]],\"IE\",353,\"00\",\"0\",,,\"0\",,,,[[,\"(1)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"40[24]|50[45]\"],\"(0$1)\"],\n[,\"(48)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"48\"],\"(0$1)\"],[,\"(818)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"818\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[24-69]|7[14]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"76|8[35-9]\"],\"0$1\"],[,\"(8\\\\d)(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8[35-9]5\"],\"0$1\"],[,\"(700)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"700\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:5|8[059])\",\"1(?:5|8[059]0)\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,\"18[59]0\\\\d{6}\",,,,\"1850123456\",,,[10]],[,\n,\"818\\\\d{6}\",,,,\"818123456\",,,[9]],,,[,,\"8[35-9]5\\\\d{7}\",,,,\"8551234567\",,,[10]]],IL:[,[,,\"1\\\\d{6,11}|[2-589]\\\\d{3}(?:\\\\d{3,6})?|6\\\\d{3}|7\\\\d{6,9}\",,,,,,,[4,7,8,9,10,11,12]],[,,\"(?:153\\\\d{1,2}|[2-489])\\\\d{7}\",,,,\"21234567\",,,[8,11,12],[7]],[,,\"5(?:[0-489][2-9]\\\\d|5(?:01|[23][23]|4[45]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9])|6\\\\d{2})\\\\d{5}\",,,,\"502345678\",,,[9]],[,,\"1(?:80[019]\\\\d{3}|255)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"1(?:212|(?:9(?:0[01]|19)|200)\\\\d{2})\\\\d{4}\",,,,\"1919123456\",,,[8,9,10]],\n[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"7(?:18\\\\d|2[23]\\\\d|3[237]\\\\d|47\\\\d|6[58]\\\\d|7\\\\d{2}|8(?:2\\\\d|33|55|77|81)|9[2579]\\\\d)\\\\d{5}\",,,,\"771234567\",,,[9]],\"IL\",972,\"0(?:0|1[2-9])\",\"0\",,,\"0\",,,,[[,\"([2-489])(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[,\"([57]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[,\"(153)(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"153\"]],[,\"(1)([7-9]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[,\"(1255)(\\\\d{3})\",\"$1-$2\",[\"125\",\"1255\"]],[,\"(1200)(\\\\d{3})(\\\\d{3})\",\n\"$1-$2-$3\",[\"120\",\"1200\"]],[,\"(1212)(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\",\"1212\"]],[,\"(1599)(\\\\d{6})\",\"$1-$2\",[\"159\",\"1599\"]],[,\"(151)(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"151\"]],[,\"(\\\\d{4})\",\"*$1\",[\"[2-689]\"]]],,[,,,,,,,,,[-1]],,,[,,\"1700\\\\d{6}|[2-689]\\\\d{3}\",,,,\"1700123456\",,,[4,10]],[,,\"[2-689]\\\\d{3}|1599\\\\d{6}\",,,,\"1599123456\",,,[4,10]],,,[,,\"151\\\\d{8,9}\",,,,\"15112340000\",,,[11,12]]],IM:[,[,,\"[135789]\\\\d{6,9}\",,,,,,,[10],[6]],[,,\"1624[5-8]\\\\d{5}\",,,,\"1624756789\",,,,[6]],[,,\"7(?:4576|[59]24\\\\d|624[0-4689])\\\\d{5}\",\n,,,\"7924123456\"],[,,\"808162\\\\d{4}\",,,,\"8081624567\"],[,,\"(?:872299|90[0167]624)\\\\d{4}\",,,,\"9016247890\"],[,,\"8(?:4(?:40[49]06|5624\\\\d)|70624\\\\d)\\\\d{3}\",,,,\"8456247890\"],[,,\"70\\\\d{8}\",,,,\"7012345678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"IM\",44,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"3(?:08162\\\\d|3\\\\d{5}|4(?:40[49]06|5624\\\\d)|7(?:0624\\\\d|2299\\\\d))\\\\d{3}|55\\\\d{8}\",,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],IN:[,[,,\"008\\\\d{9}|1\\\\d{7,12}|[2-9]\\\\d{9,10}\",,,,,,,[8,9,10,11,12,13],[6,7]],[,,\"(?:11|2[02]|33|4[04]|79|80)[2-7]\\\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|[36][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\\\d{6}|(?:(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[13-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1-5]|4[25-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|[57][2-689]|6[24-578]|8[1-6])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\\\d|7(?:(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|9\\\\d)\\\\d|8(?:2[0-6]|[013-8]\\\\d)))[2-7]\\\\d{5}\",\n,,,\"1123456789\",,,[10],[6,7,8]],[,,\"(?:6(?:0(?:0[0-35]|26)\\\\d|1279|2(?:0[0-49]|3[589]|[68][0-49]|9[0-6])\\\\d|3(?:0[0-39]\\\\d|5(?:0[0-6]|[1-9]\\\\d)|6[0-2]\\\\d|7[015-79]\\\\d|[89][0-79]\\\\d)|90[019]\\\\d)|7(?:0\\\\d{3}|19[0-5]\\\\d|2(?:[0235679]\\\\d{2}|[14][017-9]\\\\d|8(?:[0-59]\\\\d|[678][089]))|3(?:[05-8]\\\\d{2}|1(?:[089]\\\\d|11|7[024-8])|2(?:[0-49][089]|[5-8]\\\\d)|3[017-9]\\\\d|4(?:[07-9]\\\\d|11)|9(?:[016-9]\\\\d|[2-5][089]))|4(?:0\\\\d{2}|1(?:[015-9]\\\\d|[23][089]|4[089])|2(?:0[089]|[1-7][089]|[89]\\\\d)|3(?:[0-8][089]|9\\\\d)|4(?:[089]\\\\d|11|7[02-8])|[56]\\\\d[089]|7(?:[089]\\\\d|11|7[02-8])|8(?:[0-24-7][089]|[389]\\\\d)|9(?:[0-6][089]|7[089]|[89]\\\\d))|5(?:[0346-8]\\\\d{2}|1(?:[07-9]\\\\d|11)|2(?:[04-9]\\\\d|[123][089])|5[017-9]\\\\d|9(?:[0-6][089]|[7-9]\\\\d))|6(?:0(?:[0-47]\\\\d|[5689][089])|(?:1[0-257-9]|[6-9]\\\\d)\\\\d|2(?:[0-4]\\\\d|[5-9][089])|3(?:[02-8][089]|[19]\\\\d)|4\\\\d[089]|5(?:[0-367][089]|[4589]\\\\d))|7(?:0(?:0[02-9]|[13-7][089]|[289]\\\\d)|[1-9]\\\\d{2})|8(?:[0-79]\\\\d{2}|8(?:[089]\\\\d|11|7[02-9]))|9(?:[089]\\\\d{2}|313|7(?:[02-8]\\\\d|9[07-9])))|8(?:0(?:[01589]\\\\d{2}|6[67]\\\\d|7(?:[02-8]\\\\d|9[04-9]))|1(?:[02-57-9]\\\\d{2}|1(?:[0-35-9]\\\\d|4[0-46-9])|6(?:[089]\\\\d|7[02-8]))|2(?:0(?:[089]\\\\d|7[02-8])|[14](?:[089]\\\\d|7[02-8])|[235-9]\\\\d{2})|3(?:[0357-9]\\\\d{2}|1(?:[089]\\\\d|7[02-8])|2(?:[09]\\\\d|7[02-8]|8[0-689])|4\\\\d{2}|6(?:[089]\\\\d|7[02-8]))|[45]\\\\d{3}|6(?:[02457-9]\\\\d{2}|1(?:[089]\\\\d|7[02-8])|3(?:[089]\\\\d|7[02-8])|6(?:[08]\\\\d|7[02-8]|9\\\\d))|7(?:0[07-9]\\\\d|[1-69]\\\\d{2}|[78](?:[089]\\\\d|7[02-8]))|8(?:[0-25-9]\\\\d{2}|3(?:[089]\\\\d|7[02-8])|4(?:[0489]\\\\d|7[02-8]))|9(?:[02-9]\\\\d{2}|1(?:[0289]\\\\d|7[02-8])))|9\\\\d{4})\\\\d{5}\",\n,,,\"8123456789\",,,[10]],[,,\"00800\\\\d{7}|1(?:600\\\\d{6}|80(?:0\\\\d{4,9}|3\\\\d{9}))\",,,,\"1800123456\"],[,,\"186[12]\\\\d{9}\",,,,\"1861123456789\",,,[13]],[,,\"1860\\\\d{7}\",,,,\"18603451234\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IN\",91,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{8})\",\"$1\",[\"561\",\"5616\",\"56161\"],\"$1\",,1],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"6(?:0[02]|12|2[03689]|3[05-9]|9[019])|7(?:[02-8]|19|9[037-9])|8(?:0[015-9]|[1-9])|9\",\"6(?:0(?:0|26)|127|2(?:0[0-49]|3[589]|[68][0-39]|9[0-46])|3(?:0[0-39]|5[0-46-9]|6[0-2]|7[015-79]|[89][0-79])|9[019])|7(?:[07]|19[0-5]|2(?:[0235-9]|[14][017-9])|3(?:[025-9]|[134][017-9])|4(?:[0-35689]|[47][017-9])|5(?:[02-46-9]|[15][017-9])|6(?:[02-9]|1[0-257-9])|8(?:[0-79]|8[0189])|9(?:[089]|31|7[02-9]))|8(?:0(?:[01589]|6[67]|7[02-9])|1(?:[0-57-9]|6[07-9])|2(?:[014][07-9]|[235-9])|3(?:[03-57-9]|[126][07-9])|[45]|6(?:[02457-9]|[136][07-9])|7(?:[078][07-9]|[1-69])|8(?:[0-25-9]|3[07-9]|4[047-9])|9(?:[02-9]|1[027-9]))|9\",\n\"6(?:0(?:0|26)|1279|2(?:0[0-49]|3[589]|[68][0-39]|9[0-46])|3(?:0[0-39]|5[0-46-9]|6[0-2]|7[015-79]|[89][0-79])|9[019])|7(?:0|19[0-5]|2(?:[0235-79]|[14][017-9]|8(?:[0-69]|[78][089]))|3(?:[05-8]|1(?:[0189]|7[024-9])|2(?:[0-49][089]|[5-8])|3[017-9]|4(?:[07-9]|11)|9(?:[01689]|[2-5][089]|7[0189]))|4(?:[056]|1(?:[0135-9]|[24][089])|[29](?:[0-7][089]|[89])|3(?:[0-8][089]|9)|[47](?:[089]|11|7[02-8])|8(?:[0-24-7][089]|[389]))|5(?:[0346-9]|[15][017-9]|2(?:[03-9]|[12][089]))|6(?:[0346-9]|1[0-257-9]|2(?:[0-4]|[5-9][089])|5(?:[0-367][089]|[4589]))|7(?:0(?:[02-9]|1[089])|[1-9])|8(?:[0-79]|8(?:0[0189]|11|8[013-9]|9))|9(?:[089]|313|7(?:[02-8]|9[07-9])))|8(?:0(?:[01589]|6[67]|7(?:[02-8]|9[04-9]))|1(?:[02-57-9]|1(?:[0-35-9]|4[0-46-9])|6(?:[089]|7[02-8]))|2(?:[014](?:[089]|7[02-8])|[235-9])|3(?:[03-57-9]|[16](?:[089]|7[02-8])|2(?:[09]|7[02-8]|8[0-689]))|[45]|6(?:[02457-9]|[136](?:[089]|7[02-8]))|7(?:0[07-9]|[1-69]|[78](?:[089]|7[02-8]))|8(?:[0-25-9]|3(?:[089]|7[02-8])|4(?:[0489]|7[02-8]))|9(?:[02-9]|1(?:[0289]|7[02-8])))|9\"],\n\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-9]|80[2-46]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[59][14]|[68][1-9]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1|9[15])|6(?:12|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[23579]|[468][1-9])|[2-8]\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"008\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"160\",\"1600\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"180\",\"1800\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"186\",\"1860\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"18[06]\"],\"$1\",,1]],,[,,,,,,,,,[-1]],,,[,,\"00800\\\\d{7}|1(?:600\\\\d{6}|8(?:0(?:0\\\\d{4,9}|3\\\\d{9})|6(?:0\\\\d{7}|[12]\\\\d{9})))\",,,,\"1800123456\"],[,,\"140\\\\d{7}\",,,,\"1409305260\",,,[10]],,,[,,,,,,,,,[-1]]],IO:[,[,,\"3\\\\d{6}\",,,,,,,[7]],[,,\"37\\\\d{5}\",,,,\"3709100\"],[,,\"38\\\\d{5}\",,,,\"3801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IO\",246,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nIQ:[,[,,\"[1-7]\\\\d{7,9}\",,,,,,,[8,9,10],[6,7]],[,,\"1\\\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\\\d{6,7}\",,,,\"12345678\",,,[8,9],[6,7]],[,,\"7[3-9]\\\\d{8}\",,,,\"7912345678\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IQ\",964,\"00\",\"0\",,,\"0\",,,,[[,\"(1)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"([2-6]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[,\"(7\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],IR:[,[,,\"[1-8]\\\\d{5,9}|9(?:[0-4]\\\\d{8}|9\\\\d{8})\",,,,,,,[6,7,10],[4,5,8]],[,,\"(?:(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:\\\\d{8}|(?:[16]|[289]\\\\d?)\\\\d{3}))|94(?:000|11[0-7]|2\\\\d{2}|30[01]|4(?:11|40))\\\\d{5}\",,,,\"2123456789\",,,,[4,5,8]],[,,\"9(?:0(?:[1-35]\\\\d{2}|44\\\\d)|[13]\\\\d{3}|2[0-2]\\\\d{2}|9(?:[01]\\\\d{2}|44\\\\d|8(?:10|88)|9(?:0[013]|1[134]|21|9[89])))\\\\d{5}\",,,,\"9123456789\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"993\\\\d{7}\",\n,,,\"9932123456\",,,[10]],\"IR\",98,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"[1-8]\"],\"0$1\"],[,\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:9411[1-7]|94440)\\\\d{5}\",,,,\"9411110000\",,,[10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IS:[,[,,\"[4-9]\\\\d{6}|38\\\\d{7}\",,,,,,,[7,9]],[,,\"(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-245]|5[0-68]|6\\\\d|8[0-36-8])|5(?:05|[156]\\\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|87[23])\\\\d{4}\",\n,,,\"4101234\",,,[7]],[,,\"38[589]\\\\d{6}|(?:6(?:1[1-8]|2[0-6]|3[027-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\\\d)|7(?:5[057]|[6-8]\\\\d|9[0-3])|8(?:2[0-59]|[3469]\\\\d|5[1-9]|8[28]))\\\\d{4}\",,,,\"6111234\"],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"90\\\\d{5}\",,,,\"9011234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"49\\\\d{5}\",,,,\"4921234\",,,[7]],\"IS\",354,\"1(?:0(?:01|10|20)|100)|00\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[,\"(3\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],\n[,,\"809\\\\d{4}\",,,,\"8091234\",,,[7]],,,[,,\"(?:689|8(?:7[0189]|80)|95[48])\\\\d{4}\",,,,\"6891234\",,,[7]]],IT:[,[,,\"[01589]\\\\d{5,10}|3(?:[12457-9]\\\\d{8}|[36]\\\\d{7,9})\",,,,,,,[6,7,8,9,10,11]],[,,\"0(?:[26]\\\\d{4,9}|(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2346]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[34578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7})\",\n,,,\"0212345678\"],[,,\"3(?:[12457-9]\\\\d{8}|6\\\\d{7,8}|3\\\\d{7,9})\",,,,\"3123456789\",,,[9,10,11]],[,,\"80(?:0\\\\d{6}|3\\\\d{3})\",,,,\"800123456\",,,[6,9]],[,,\"0878\\\\d{5}|1(?:44|6[346])\\\\d{6}|89(?:2\\\\d{3}|4(?:[0-4]\\\\d{2}|[5-9]\\\\d{4})|5(?:[0-4]\\\\d{2}|[5-9]\\\\d{6})|9\\\\d{6})\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{6}|[17]\\\\d{3})\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"IT\",39,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|55\"]],\n[,\"(0[26])(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[,\"(0[26])(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[,\"(0\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]\"]],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[245])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|[45][0-4]))\"]],[,\"(0\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][2-46-8]\"]],[,\"(0\\\\d{3})(\\\\d{2,6})\",\"$1 $2\",[\"0[13-57-9][2-46-8]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13]|8(?:00|4[08]|9[59])\",\"[13]|8(?:00|4[08]|9(?:5[5-9]|9))\"]],\n[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\",\"894[5-9]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"3\"]]],,[,,,,,,,,,[-1]],1,,[,,\"848\\\\d{6}\",,,,\"848123456\",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],JE:[,[,,\"[135789]\\\\d{6,9}\",,,,,,,[10],[6]],[,,\"1534[0-24-8]\\\\d{5}\",,,,\"1534456789\",,,,[6]],[,,\"7(?:509\\\\d|7(?:00[378]|97[7-9])|829\\\\d|937\\\\d)\\\\d{5}\",,,,\"7797712345\"],[,,\"80(?:07(?:35|81)|8901)\\\\d{4}\",,,,\"8007354567\"],[,,\"(?:871206|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\",,,,\"9018105678\"],[,,\"8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|70002)\\\\d{4}\",\n,,,\"8447034567\"],[,,\"701511\\\\d{4}\",,,,\"7015115678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"JE\",44,\"00\",\"0\",,,\"0\",,,,,,[,,\"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",,,,\"7640123456\"],,,[,,,,,,,,,[-1]],[,,\"3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))\\\\d{4}|55\\\\d{8}\",,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],JM:[,[,,\"[589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"876(?:5(?:0[12]|1[0-468]|2[35]|63)|6(?:0[1-3579]|1[0237-9]|[23]\\\\d|40|5[06]|6[2-589]|7[05]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\\\d|9[2-468]))\\\\d{4}\",\n,,,\"8765123456\",,,,[7]],[,,\"876(?:2[14-9]\\\\d|[348]\\\\d{2}|5(?:0[3-9]|[2-57-9]\\\\d|6[0-24-9])|7(?:0[07]|7\\\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\\\d{4}\",,,,\"8762101234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"JM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"876\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],JO:[,[,,\"[235-9]\\\\d{7,8}\",\n,,,,,,[8,9]],[,,\"(?:2(?:6(?:2[0-35-9]|3[0-57-8]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\\\d|4[0-3]|[57][023]|6[03])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2[50]0|3(?:00|33)|4(?:0[0125]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[17-8]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[02-39]))|87(?:[02]0|7[08]|90))\\\\d{4}\",,,,\"62001234\",,,[8]],[,,\n\"7(?:55[0-49]|7[025-9]\\\\d|8[0-25-9]\\\\d|9[0-25-9]\\\\d)\\\\d{5}\",,,,\"790123456\",,,[9]],[,,\"80\\\\d{6}\",,,,\"80012345\",,,[8]],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,\"85\\\\d{6}\",,,,\"85012345\",,,[8]],[,,\"70\\\\d{7}\",,,,\"700123456\",,,[9]],[,,,,,,,,,[-1]],\"JO\",962,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[,\"(7)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7[457-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"8[0158]|9\"],\"0$1\"]],,[,,\"74(?:66|77)\\\\d{5}\",\n,,,\"746612345\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"8(?:10|8\\\\d)\\\\d{5}\",,,,\"88101234\",,,[8]],,,[,,,,,,,,,[-1]]],JP:[,[,,\"[1-9]\\\\d{8,9}|00(?:[36]\\\\d{7,14}|7\\\\d{5,7}|8\\\\d{7})\",,,,,,,[8,9,10,11,12,13,14,15,16,17]],[,,\"(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|2[2-9]\\\\d|[36][1-9]\\\\d|4(?:6[02-8]|[2-578]\\\\d|9[2-59])|5(?:6[1-9]|7[2-8]|[2-589]\\\\d)|7(?:3[4-9]|4[02-9]|[25-9]\\\\d)|8(?:3[2-9]|4[5-9]|5[1-9]|8[03-9]|[2679]\\\\d)|9(?:[679][1-9]|[2-58]\\\\d))\\\\d{6}\",,,,\"312345678\",,,[9]],[,,\"[7-9]0[1-9]\\\\d{7}\",\n,,,\"9012345678\",,,[10]],[,,\"120\\\\d{6}|800\\\\d{7}|00(?:37\\\\d{6,13}|66\\\\d{6,13}|777(?:[01]\\\\d{2}|5\\\\d{3}|8\\\\d{4})|882[1245]\\\\d{4})\",,,,\"120123456\"],[,,\"990\\\\d{6}\",,,,\"990123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"60\\\\d{7}\",,,,\"601234567\",,,[9]],[,,\"50[1-9]\\\\d{7}\",,,,\"5012345678\",,,[10]],\"JP\",81,\"010\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"007\",\"0077\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3,4})\",\n\"$1-$2-$3\",[\"007\",\"0077\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"008\",\"0088\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2-$3\",[\"00[36]\",\"00(?:37|66)\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"00[36]\",\"00(?:37|66)\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{5})(\\\\d{5,6})\",\"$1-$2-$3\",[\"00[36]\",\"00(?:37|66)\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{6})(\\\\d{6,7})\",\"$1-$2-$3\",[\"00[36]\",\"00(?:37|66)\"],\"$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[2579]0|80[1-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\n\"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))\",\"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[2-57-9])|9(?:496|802|9(?:1[23]|69))\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:[3-6][2-9]|7[2-6]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|4[2-69]|[5-7]))\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6[56]))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6(?:5[25]|60)))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93)\",\"1|2(?:2[37]|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93[34])\",\"1|2(?:2[37]|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93(?:31|4))\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\n\"$1-$2-$3\",[\"2(?:[34]7|[56]9|74|9[14-79])|82|993\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2479][1-9]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[2579]0|80[1-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\n\"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))\",\"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[2-57-9])|9(?:496|802|9(?:1[23]|69))\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:[3-6][2-9]|7[2-6]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|4[2-69]|[5-7]))\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6[56]))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6(?:5[25]|60)))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93)\",\"1|2(?:2[37]|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93[34])\",\"1|2(?:2[37]|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93(?:31|4))\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\n\"$1-$2-$3\",[\"2(?:[34]7|[56]9|74|9[14-79])|82|993\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2479][1-9]\"],\"0$1\"]],[,,\"20\\\\d{8}\",,,,\"2012345678\",,,[10]],,,[,,\"00(?:37\\\\d{6,13}|66\\\\d{6,13}|777(?:[01]\\\\d{2}|5\\\\d{3}|8\\\\d{4})|882[1245]\\\\d{4})\",,,,\"00777012\"],[,,\"570\\\\d{6}\",,,,\"570123456\",,,[9]],,,[,,,,,,,,,[-1]]],KE:[,[,,\"20\\\\d{6,7}|[4-9]\\\\d{6,9}\",,,,,,,[7,8,9,10]],[,,\"20\\\\d{6,7}|4(?:0\\\\d{6,7}|[136]\\\\d{7}|[245]\\\\d{5,7})|5(?:[08]\\\\d{7}|[1-79]\\\\d{5,7})|6(?:[01457-9]\\\\d{5,7}|2\\\\d{7}|6\\\\d{6,7})\",\n,,,\"202012345\",,,[7,8,9]],[,,\"7(?:[0-3679]\\\\d|4[0-9]|5[0-7]|8[0-25-9])\\\\d{6}\",,,,\"712123456\",,,[9]],[,,\"800[24-8]\\\\d{5,6}\",,,,\"800223456\",,,[9,10]],[,,\"900[02-9]\\\\d{5}\",,,,\"900223456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KE\",254,\"000\",\"0\",,,\"005|0\",,,,[[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KG:[,[,,\"[235-8]\\\\d{8,9}\",\n,,,,,,[9,10],[5,6]],[,,\"(?:3(?:1(?:[256]\\\\d|3[1-9]|47)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\\\d)|5(?:22|3[4-7]|59|6\\\\d)|6(?:22|5[35-7]|6\\\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\\\d)|9(?:22|4[1-8]|6\\\\d))|6(?:09|12|2[2-4])\\\\d)\\\\d{5}\",,,,\"312123456\",,,[9],[5,6]],[,,\"(?:2(?:0[0-35]|2\\\\d)|5[0-24-7]\\\\d|7(?:[07]\\\\d|55))\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KG\",996,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",\n[\"[25-7]|31[25]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[36]|[2-9])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KH:[,[,,\"[1-9]\\\\d{7,9}\",,,,,,,[8,9,10],[6,7]],[,,\"(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:[237-9]|4[56]|5\\\\d|6\\\\d?)\\\\d{5}|23(?:4[234]|8\\\\d{2})\\\\d{4}\",,,,\"23756789\",,,[8,9],[6,7]],[,,\"(?:1(?:[013-79]\\\\d|[28]\\\\d{1,2})|2[3-6]48|3(?:[18]\\\\d{2}|[2-6]48)|4[2-4]48|5[2-5]48|6(?:[016-9]\\\\d|[2-5]48)|7(?:[07-9]\\\\d|[16]\\\\d{2}|[2-5]48)|8(?:[013-79]\\\\d|8\\\\d{2})|9(?:6\\\\d{2}|7\\\\d{1,2}|[0-589]\\\\d))\\\\d{5}\",\n,,,\"91234567\",,,[8,9]],[,,\"1800(?:1\\\\d|2[019])\\\\d{4}\",,,,\"1800123456\",,,[10]],[,,\"1900(?:1\\\\d|2[09])\\\\d{4}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KH\",855,\"00[14-9]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\\\\d[1-9]|[2-9]\"],\"0$1\"],[,\"(1[89]00)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[89]0\",\"1[89]00\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KI:[,[,,\"[2458]\\\\d{4}|3\\\\d{4,7}|[67]\\\\d{7}\",,,,,,,[5,8]],[,,\"(?:[24]\\\\d|3[1-9]|50|8[0-5])\\\\d{3}|(?:65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\\\d{2}|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500)))\\\\d{3}\",\n,,,\"31234\"],[,,\"(?:6(?:200[01]|30[01]\\\\d)|7(?:200[01]|3(?:0[0-5]\\\\d|140)))\\\\d{3}\",,,,\"72001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"30(?:0[01]\\\\d{2}|12(?:11|20))\\\\d{2}\",,,,\"30010000\",,,[8]],\"KI\",686,\"00\",,,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KM:[,[,,\"[3478]\\\\d{6}\",,,,,,,[7]],[,,\"7[4-7]\\\\d{5}\",,,,\"7712345\"],[,,\"[34]\\\\d{6}\",,,,\"3212345\"],[,,,,,,,,,[-1]],[,,\"8\\\\d{6}\",,,,\"8001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],\"KM\",269,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KN:[,[,,\"[589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"869(?:2(?:29|36)|302|4(?:6[015-9]|70))\\\\d{4}\",,,,\"8692361234\",,,,[7]],[,,\"869(?:5(?:5[6-8]|6[5-7])|66\\\\d|76[02-7])\\\\d{4}\",,,,\"8697652917\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],\n[,,,,,,,,,[-1]],\"KN\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"869\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KP:[,[,,\"1\\\\d{9}|[28]\\\\d{7}\",,,,,,,[8,10],[6,7]],[,,\"2\\\\d{7}|85\\\\d{6}\",,,,\"21234567\",,,[8],[6,7]],[,,\"19[123]\\\\d{7}\",,,,\"1921234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KP\",850,\"00|99\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"2(?:[0-24-9]\\\\d{2}|3(?:[0-79]\\\\d|8[02-9]))\\\\d{4}\",,,,\"23821234\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KR:[,[,,\"00(?:3\\\\d{8,9}|7\\\\d{9,11})|[1-7]\\\\d{4,9}|8\\\\d{8}\",,,,,,,[5,6,8,9,10,11,12,13,14],[3,7]],[,,\"2[1-9]\\\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])(?:1\\\\d{2,3}|[1-9]\\\\d{6,7})\",,,,\"22123456\",,,[5,6,8,9,10],[3,7]],[,,\"1[0-26-9]\\\\d{7,8}\",,,,\"1000000000\",,,[9,10]],[,,\"(?:00(?:3(?:08|68\\\\d)|798\\\\d{1,3})|80\\\\d)\\\\d{6}\",,,,\"801234567\",,,[9,11,12,13,14]],[,,\n\"60[2-9]\\\\d{6}\",,,,\"602345678\",,,[9]],[,,,,,,,,,[-1]],[,,\"50\\\\d{8}\",,,,\"5012345678\",,,[10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],\"KR\",82,\"00(?:[1259]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"0\",,,\"0(8[1-46-8]|85\\\\d{2})?\",,,,[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1(?:5[246-9]|6[046-8]|8[03579])\",\"1(?:5(?:22|44|66|77|88|99)|6(?:[07]0|44|6[16]|88)|8(?:00|33|55|77|99))\"],\"$1\",\"0$CC-$1\"],[,\"(\\\\d{5})\",\"$1\",[\"1[016-9]1\",\"1[016-9]11\",\n\"1[016-9]114\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2[1-9]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60[2-9]|80\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"1[0-25-9]|(?:3[1-3]|[46][1-4]|5[1-5])[1-9]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]0\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"003\",\"0030\",\"00308\"],\"$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"00[37]\",\"00(?:36|79)\",\"00(?:36|79)8\"],\n\"$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"007\",\"0079\",\"00798\"],\"$1\",\"0$CC-$1\"]],[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1(?:5[246-9]|6[046-8]|8[03579])\",\"1(?:5(?:22|44|66|77|88|99)|6(?:[07]0|44|6[16]|88)|8(?:00|33|55|77|99))\"],\"$1\",\"0$CC-$1\"],[,\"(\\\\d{5})\",\"$1\",[\"1[016-9]1\",\"1[016-9]11\",\"1[016-9]114\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2[1-9]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1-$2-$3\",[\"60[2-9]|80\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"1[0-25-9]|(?:3[1-3]|[46][1-4]|5[1-5])[1-9]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]0\"],\"0$1\",\"0$CC-$1\"]],[,,\"15\\\\d{7,8}\",,,,\"1523456789\",,,[9,10]],,,[,,\"00(?:3(?:08|68\\\\d)|798\\\\d{1,3})\\\\d{6}\",,,,\"007981234567\",,,[11,12,13,14]],[,,\"1(?:5(?:22|44|66|77|88|99)|6(?:00|44|6[16]|70|88)|8(?:00|33|55|77|99))\\\\d{4}\",,,,\"15441234\",,,[8]],,,[,,,,,,,,,[-1]]],KW:[,[,,\"[12569]\\\\d{6,7}\",,,,,,,[7,8]],[,\n,\"(?:18\\\\d|2(?:[23]\\\\d{2}|4(?:[1-35-9]\\\\d|44)|5(?:0[034]|[2-46]\\\\d|5[1-3]|7[1-7])))\\\\d{4}\",,,,\"22345678\"],[,,\"(?:5(?:[05]\\\\d{2}|1[0-7]\\\\d|2(?:22|5[25])|6[56]\\\\d)|6(?:0[034679]\\\\d|222|5[015-9]\\\\d|6\\\\d{2}|7(?:0[013-9]|[67]\\\\d)|9(?:[069]\\\\d|3[039]))|9(?:0[09]\\\\d|11[01]|22\\\\d|4[01479]\\\\d|55\\\\d|6[0679]\\\\d|7(?:02|[1-9]\\\\d)|8[057-9]\\\\d|9\\\\d{2}))\\\\d{4}\",,,,\"50012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KW\",965,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",\n[\"[16]|2(?:[0-35-9]|4[0-35-9])|52[25]|9[0-24-9]\"]],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"244|5(?:[015]|6[56])\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KY:[,[,,\"[3589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"345(?:2(?:22|44)|444|6(?:23|38|40)|7(?:4[35-79]|6[6-9]|77)|8(?:00|1[45]|25|[48]8)|9(?:14|4[035-9]))\\\\d{4}\",,,,\"3452221234\",,,,[7]],[,,\"345(?:32[1-9]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|9(?:1[67]|2[2-9]|3[689]))\\\\d{4}\",,,,\"3453231234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}|345976\\\\d{4}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"KY\",1,\"011\",\"1\",,,\"1\",,,,,,[,,\"345849\\\\d{4}\",,,,\"3458491234\"],,\"345\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KZ:[,[,,\"(?:33\\\\d|7\\\\d{2}|80[089])\\\\d{7}\",,,,,,,[10]],[,,\"33622\\\\d{5}|7(?:1(?:0(?:[23]\\\\d|4[0-3]|59|63)|1(?:[23]\\\\d|4[0-79]|59)|2(?:[23]\\\\d|59)|3(?:2\\\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\\\d|3[013-9]|5[1-9])|5(?:2\\\\d|3[1-9]|4[0-7]|59)|6(?:[234]\\\\d|5[19]|61)|72\\\\d|8(?:[27]\\\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\\\d|4[46-9]|5[3469])|2(?:2\\\\d|3[0679]|46|5[12679])|3(?:[234]\\\\d|5[139])|4(?:2\\\\d|3[1235-9]|59)|5(?:[23]\\\\d|4[01246-8]|59|61)|6(?:2\\\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\\\d|40|5[279])|8(?:[23]\\\\d|4[0-3]|59)|9(?:2\\\\d|3[124578]|59)))\\\\d{5}\",\n,,,\"7123456789\"],[,,\"7(?:0[012578]|47|6[02-4]|7[15-8]|85)\\\\d{7}\",,,,\"7710009998\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"809\\\\d{7}\",,,,\"8091234567\"],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\"],[,,\"751\\\\d{7}\",,,,\"7511234567\"],\"KZ\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,,,[,,,,,,,,,[-1]],,,[,,\"751\\\\d{7}\",,,,\"7511234567\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LA:[,[,,\"[2-8]\\\\d{7,9}\",,,,,,,[8,9,10],[6]],[,,\"(?:2[13]|3(?:0\\\\d|[14])|[5-7][14]|41|8[1468])\\\\d{6}\",,,,\"21212862\",,,[8,9],[6]],[,,\"20(?:2[2389]|5[24-689]|7[6-8]|9[1-35-9])\\\\d{6}\",\n,,,\"2023123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LA\",856,\"00\",\"0\",,,\"0\",,,,[[,\"(20)(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"],\"0$1\"],[,\"([2-8]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[,\"(30)(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LB:[,[,,\"[13-9]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"(?:[14-6]\\\\d{2}|7(?:[2-57]\\\\d|62|8[0-7]|9[04-9])|8[02-9]\\\\d|9\\\\d{2})\\\\d{4}\",\n,,,\"1123456\",,,[7]],[,,\"(?:3\\\\d|7(?:[01]\\\\d|6[013-9]|8[89]|9[1-3])|81\\\\d)\\\\d{5}\",,,,\"71123456\"],[,,,,,,,,,[-1]],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"80\\\\d{6}\",,,,\"80123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LB\",961,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[,\"([7-9]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7(?:[01]|6[013-9]|8[89]|9[1-3])|[89][01]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LC:[,\n[,,\"[5789]\\\\d{9}\",,,,,,,[10],[7]],[,,\"758(?:4(?:30|5[0-9]|6[2-9]|8[0-2])|57[0-2]|638)\\\\d{4}\",,,,\"7584305678\",,,,[7]],[,,\"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\\\d|3[01]))\\\\d{4}\",,,,\"7582845678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"LC\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"758\",[,,,,,,,,,[-1]],[,,,,,,\n,,,[-1]],,,[,,,,,,,,,[-1]]],LI:[,[,,\"6\\\\d{8}|[23789]\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:2(?:01|1[27]|3\\\\d|6[02-578]|96)|3(?:7[0135-7]|8[048]|9[0269]))\\\\d{4}\",,,,\"2345678\",,,[7]],[,,\"6(?:5(?:09|1\\\\d|20)|6(?:0[0-6]|10|2[06-9]|39))\\\\d{5}|7(?:[37-9]\\\\d|42|56)\\\\d{4}\",,,,\"660234567\"],[,,\"80(?:02[28]|9\\\\d{2})\\\\d{2}\",,,,\"8002222\",,,[7]],[,,\"90(?:02[258]|1(?:23|3[14])|66[136])\\\\d{2}\",,,,\"9002222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LI\",423,\"00\",\"0\",,,\"0|10(?:01|20|66)\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3\",[\"[237-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[56]\"]],[,\"(69)(7\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"697\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"870(?:28|87)\\\\d{2}\",,,,\"8702812\",,,[7]],,,[,,\"697(?:42|56|[78]\\\\d)\\\\d{4}\",,,,\"697861234\",,,[9]]],LK:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"1(?:1[2-57]\\\\d{6}|973\\\\d{5})|(?:2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7]|[89]1)[2-57]\\\\d{6}\",,,,\"112345678\",,,,[7]],[,,\"7[0125-8]\\\\d{7}\",,,,\"712345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\n,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LK\",94,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LR:[,[,,\"2\\\\d{7,8}|[378]\\\\d{8}|4\\\\d{6}|5\\\\d{6,8}\",,,,,,,[7,8,9]],[,,\"(?:2\\\\d{3}|33333)\\\\d{4}\",,,,\"21234567\",,,[8,9]],[,,\"(?:20\\\\d{2}|330\\\\d|4[67]|5(?:55)?\\\\d|77\\\\d{2}|88\\\\d{2})\\\\d{5}\",,,,\"770123456\",,,[7,9]],[,,,,,,,,,[-1]],[,,\"332(?:02|[2-5]\\\\d)\\\\d{4}\",,,,\"332021234\",\n,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LR\",231,\"00\",\"0\",,,\"0\",,,,[[,\"(2\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"([4-5])(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23578]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LS:[,[,,\"[2568]\\\\d{7}\",,,,,,,[8]],[,,\"2\\\\d{7}\",,,,\"22123456\"],[,,\"[56]\\\\d{7}\",,,,\"50123456\"],[,,\"800[256]\\\\d{4}\",,,,\"80021234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],\"LS\",266,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LT:[,[,,\"[3-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:3[1478]|4[124-6]|52)\\\\d{6}\",,,,\"31234567\"],[,,\"6\\\\d{7}\",,,,\"61234567\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"9(?:0[0239]|10)\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],[,,\"700\\\\d{5}\",,,,\"70012345\"],[,,,,,,,,,[-1]],\"LT\",370,\"00\",\"8\",,,\"[08]\",,,,[[,\"([34]\\\\d)(\\\\d{6})\",\"$1 $2\",[\"37|4(?:1|5[45]|6[2-4])\"],\"(8-$1)\",,1],[,\"([3-6]\\\\d{2})(\\\\d{5})\",\n\"$1 $2\",[\"3[148]|4(?:[24]|6[09])|528|6\"],\"(8-$1)\",,1],[,\"([7-9]\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",,1],[,\"(5)(2\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-79]\"],\"(8-$1)\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70[67]\\\\d{5}\",,,,\"70712345\"],,,[,,,,,,,,,[-1]]],LU:[,[,,\"[24-9]\\\\d{3,10}|3(?:[0-46-9]\\\\d{2,9}|5[013-9]\\\\d{1,8})\",,,,,,,[4,5,6,7,8,9,10,11]],[,,\"(?:2[2-9]\\\\d{2,9}|(?:3(?:[0-46-9]\\\\d|5[013-9])|[457]\\\\d{2}|8(?:0[2-9]|[13-9]\\\\d)|9(?:0[89]|[2-579]\\\\d))\\\\d{1,8})\",,,,\"27123456\"],[,,\"6[25-79][18]\\\\d{6}\",\n,,,\"628123456\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90[015]\\\\d{5}\",,,,\"90012345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,,,,,,,,[-1]],[,,\"20(?:1\\\\d{5}|[2-689]\\\\d{1,7})\",,,,\"20201234\",,,[4,5,6,7,8,9,10]],\"LU\",352,\"00\",,,,\"(15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\\\\d)\",,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-5]|7[1-9]|[89](?:0[2-9]|[1-9])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-5]|7[1-9]|[89](?:0[2-9]|[1-9])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20\"],\n,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,4})\",\"$1 $2 $3 $4\",[\"2(?:[12589]|4[12])|[3-5]|7[1-9]|8(?:0[2-9]|[1-9])|9(?:0[2-46-9]|[1-9])\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"70|80[01]|90[015]\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"6\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LV:[,[,,\"[2689]\\\\d{7}\",,,,,,,[8]],[,,\"6\\\\d{7}\",,,,\"63123456\"],[,,\"2\\\\d{7}\",,,,\"21234567\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,\"81\\\\d{6}\",,,,\"81123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LV\",371,\"00\",,,,,,,,[[,\"([2689]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2689]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LY:[,[,,\"[25679]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:2[1345]|5[1347]|6[123479]|71)\\\\d{7}\",\n,,,\"212345678\",,,,[7]],[,,\"9[1-6]\\\\d{7}\",,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LY\",218,\"00\",\"0\",,,\"0\",,,,[[,\"([25-79]\\\\d)(\\\\d{7})\",\"$1-$2\",[\"[25-79]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MA:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"5(?:2(?:[015-79]\\\\d|2[02-9]|3[2-57]|4[2-8]|8[235-7])\\\\d|3(?:[0-48]\\\\d|[57][2-9]|6[2-8]|9[3-9])\\\\d|4[067]\\\\d{2}|5[03]\\\\d{2})\\\\d{4}\",,,,\"520123456\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0[067]|6[1267]|7[017]))\\\\d{6}\",\n,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5924[01]\\\\d{4}\",,,,\"592401234\"],\"MA\",212,\"00\",\"0\",,,\"0\",,,,[[,\"([5-7]\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"5(?:2[015-7]|3[0-4])|[67]\"],\"0$1\"],[,\"([58]\\\\d{3})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|92)|892\",\"5(?:2(?:[2-48]|9[0-7])|3(?:[5-79]|8[0-7])|924)|892\"],\"0$1\"],[,\"(5\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\"],\"0$1\"],[,\"([5]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:4[067]|5[03])\"],\n\"0$1\"],[,\"(8[09])(\\\\d{7})\",\"$1-$2\",[\"8(?:0|9[013-9])\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MC:[,[,,\"[34689]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"870\\\\d{5}|9[2-47-9]\\\\d{6}\",,,,\"99123456\",,,[8]],[,,\"3\\\\d{7}|4(?:4\\\\d|5[1-9])\\\\d{5}|6\\\\d{8}\",,,,\"612345678\"],[,,\"90\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MC\",377,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[39]\"],\"$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"4\"],\"0$1\"],[,\"(6)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"8\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,\"870\\\\d{5}\",,,,\"87012345\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MD:[,[,,\"[235-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:2[1-9]\\\\d|3[1-79]\\\\d|5(?:33|5[257]))\\\\d{5}\",,,,\"22212345\"],[,,\"(?:562|6\\\\d{2}|7(?:[189]\\\\d|6[07]|7[457-9]))\\\\d{5}\",,,,\"62112345\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[056]\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],\n[,,,,,,,,,[-1]],[,,\"3[08]\\\\d{6}\",,,,\"30123456\"],\"MD\",373,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[,\"([25-7]\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13-9]|[5-7]\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"803\\\\d{5}\",,,,\"80312345\"],,,[,,,,,,,,,[-1]]],ME:[,[,,\"[2-9]\\\\d{7,8}\",,,,,,,[8,9],[6]],[,,\"(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:[01][2467]|2[2-467]))\\\\d{5}\",,,,\"30234567\",,,[8],[6]],[,,\"6(?:00\\\\d|3[024]\\\\d|6[0-25]\\\\d|[7-9]\\\\d{2})\\\\d{4}\",\n,,,\"67622901\",,,[8]],[,,\"80(?:[0-2578]|9\\\\d)\\\\d{5}\",,,,\"80080002\"],[,,\"(?:9(?:4[1568]|5[178]))\\\\d{5}\",,,,\"94515151\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"78[1-49]\\\\d{5}\",,,,\"78108780\",,,[8]],\"ME\",382,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57-9]|6[036-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"77[1-9]\\\\d{5}\",,,,\"77273012\",,,[8]],,,[,,,,,,,,,[-1]]],MF:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"590(?:0[079]|13|2[79]|30|43|5[0-268]|7[79]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d{2}|1(?:2[29]|3[0-5]))\\\\d{4}\",\n,,,\"690001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MF\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MG:[,[,,\"[23]\\\\d{8}\",,,,,,,[9],[7]],[,,\"20(?:2\\\\d{2}|4[47]\\\\d|5[3467]\\\\d|6[279]\\\\d|7(?:2[29]|[35]\\\\d)|8[268]\\\\d|9[245]\\\\d)\\\\d{4}\",,,,\"202123456\",,,,[7]],[,,\"3[2-49]\\\\d{7}\",,,,\"321234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"22\\\\d{7}\",,,,\"221234567\"],\"MG\",261,\"00\",\"0\",,,\"0\",,\n,,[[,\"([23]\\\\d)(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MH:[,[,,\"[2-6]\\\\d{6}\",,,,,,,[7]],[,,\"(?:247|528|625)\\\\d{4}\",,,,\"2471234\"],[,,\"(?:235|329|45[56]|545)\\\\d{4}\",,,,\"2351234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"635\\\\d{4}\",,,,\"6351234\"],\"MH\",692,\"011\",\"1\",,,\"1\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MK:[,[,,\"[2-578]\\\\d{7}\",\n,,,,,,[8],[6,7]],[,,\"(?:2(?:[23]\\\\d|5[0-24578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\\\d{5}\",,,,\"22012345\",,,,[6,7]],[,,\"7(?:[0-25-8]\\\\d{2}|3[2-4]\\\\d|421|9[23]\\\\d)\\\\d{4}\",,,,\"72345678\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"5[02-9]\\\\d{6}\",,,,\"50012345\"],[,,\"8(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\",,,,\"80123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MK\",389,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"([347]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",\n[\"[347]\"],\"0$1\"],[,\"([58]\\\\d{2})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ML:[,[,,\"[24-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:2(?:0(?:2\\\\d|7[0-8])|1(?:2[67]|[4-689]\\\\d))|4(?:0[0-4]|4[1-39])\\\\d)\\\\d{4}\",,,,\"20212345\"],[,,\"(?:2(?:079|17\\\\d)|50\\\\d{2}|[679]\\\\d{3}|8[239]\\\\d{2})\\\\d{4}\",,,,\"65012345\"],[,,\"80\\\\d{6}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ML\",223,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[24-9]\"]],[,\"(\\\\d{4})\",\"$1\",[\"67|74\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],[,,,,,,,,,[-1]],,,[,,\"80\\\\d{6}\",,,,\"80012345\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MM:[,[,,\"[178]\\\\d{5,7}|[24-6]\\\\d{5,8}|9(?:[279]\\\\d{0,2}|5|[34]\\\\d{1,2}|6(?:\\\\d{1,2})?|8(?:\\\\d{2})?)\\\\d{6}\",,,,,,,[6,7,8,9,10],[5]],[,,\"1(?:2\\\\d{1,2}|[35]\\\\d|4(?:\\\\d|2[236]|39)|6\\\\d?|[89][0-6]\\\\d)\\\\d{4}|2(?:2(?:000\\\\d{3}|\\\\d{4})|3\\\\d{4}|4(?:0\\\\d{5}|26\\\\d{4}|39\\\\d{4}|\\\\d{4})|5(?:1\\\\d{3,6}|[02-9]\\\\d{3,5})|[6-9]\\\\d{4})|4(?:2[245-8]|3(?:2(?:02)?|[346]|56?)|[46][2-6]|5[3-5])\\\\d{4}|5(?:2(?:2(?:\\\\d{1,2})?|[3-8])|3[2-68]|4(?:21?|[4-8])|5[23]|6[2-4]|7[2-8]|8[24-7]|9[2-7])\\\\d{4}|6(?:0[23]|1(?:2(?:0|4\\\\d)?|[356])|2[2-6]|3[24-6]|4(?:2(?:4\\\\d)?|[3-6])|5[2-4]|6[2-8]|7(?:[2367]|4(?:\\\\d|39)|5\\\\d?|8[145]\\\\d)|8[245]|9(?:20?|4))\\\\d{4}|7(?:[04][24-8]|1(?:20?|[3-7])|22|3[2-4]|5[2-7])\\\\d{4}|8(?:1(?:2\\\\d{1,2}|[3-689]\\\\d)|2(?:2\\\\d|3(?:\\\\d|20)|[4-8]\\\\d)|3[24]\\\\d|4[24-7]\\\\d|5[245]\\\\d|6[23]\\\\d)\\\\d{3}\",\n,,,\"1234567\",,,[6,7,8,9],[5]],[,,\"17[01]\\\\d{4}|9(?:2(?:[0-4]|5\\\\d{2}|6[0-5]\\\\d)|3(?:[0-36]|4[069])\\\\d|4(?:0[0-4]\\\\d|[1379]\\\\d|2\\\\d{2}|4[0-589]\\\\d|5\\\\d{2}|88)|5[0-6]|6(?:1\\\\d|9\\\\d{2}|\\\\d)|7(?:3|5[0-2]|[6-9]\\\\d)\\\\d|8(?:\\\\d|9\\\\d{2})|9(?:1\\\\d|[5-7]\\\\d{2}|[089]))\\\\d{5}\",,,,\"92123456\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1333\\\\d{4}\",,,,\"13331234\",,,[8]],\"MM\",95,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1|2[245]\"],\"0$1\"],[,\"(2)(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"251\"],\"0$1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"432|67|81\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-8]\"],\"0$1\"],[,\"(9)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[,\"(9)([34]\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9(?:3[0-36]|4[0-57-9])\"],\"0$1\"],[,\"(9)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92[56]\"],\"0$1\"],[,\"(9)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"93\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MN:[,[,,\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",,,,,,,[8,9,10],[6,7]],[,,\"[12](?:1\\\\d|2(?:[1-3]\\\\d?|7\\\\d)|3[2-8]\\\\d{1,2}|4[2-68]\\\\d{1,2}|5[1-4689]\\\\d{1,2})\\\\d{5}|5[0568]\\\\d{6}\",,,,\"50123456\",,,,[6,7]],[,,\"(?:8(?:[05689]\\\\d|3[01])|9[013-9]\\\\d)\\\\d{5}\",,,,\"88123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"7[05-8]\\\\d{6}\",,,,\"75123456\",,,[8]],\"MN\",976,\"001\",\"0\",,,\"0\",,,,[[,\"([12]\\\\d)(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[,\"([12]2\\\\d)(\\\\d{5,6})\",\n\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[,\"([12]\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[12](?:27|[3-5])\",\"[12](?:27|[3-5]\\\\d)2\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"],\"$1\"],[,\"([12]\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"[12](?:27|[3-5])\",\"[12](?:27|[3-5]\\\\d)[4-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MO:[,[,,\"[268]\\\\d{7}\",,,,,,,[8]],[,,\"(?:28[2-57-9]|8(?:11|[2-57-9]\\\\d))\\\\d{5}\",,,,\"28212345\"],[,,\"6(?:[2356]\\\\d{2}|8(?:[02][5-9]|[1478]\\\\d|[356][0-4]))\\\\d{4}\",,,,\"66123456\"],[,,,,,\n,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MO\",853,\"00\",,,,,,,,[[,\"([268]\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MP:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"670(?:2(?:3[3-7]|56|8[5-8])|32[1238]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",,,,\"6702345678\",,,,[7]],[,,\"670(?:2(?:3[3-7]|56|8[5-8])|32[1238]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",\n,,,\"6702345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MP\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"670\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MQ:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"596(?:0[0-7]|10|2[7-9]|3[05-9]|4[0-46-8]|[5-7]\\\\d|8[09]|9[4-8])\\\\d{4}\",,,,\"596301234\"],[,,\"69(?:6(?:[0-47-9]\\\\d|5[0-6]|6[0-4])|727)\\\\d{4}\",,\n,,\"696201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MQ\",596,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MR:[,[,,\"[2-48]\\\\d{7}\",,,,,,,[8]],[,,\"25[08]\\\\d{5}|35\\\\d{6}|45[1-7]\\\\d{5}\",,,,\"35123456\"],[,,\"[234][0-46-9]\\\\d{6}\",,,,\"22123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MR\",222,\"00\",,,,,,,,[[,\n\"([2-48]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MS:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"664491\\\\d{4}\",,,,\"6644912345\",,,,[7]],[,,\"66449[2-6]\\\\d{4}\",,,,\"6644923456\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MS\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],\n,\"664\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MT:[,[,,\"[2357-9]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:0(?:[169]\\\\d|3[1-4])|[1-357]\\\\d{2})\\\\d{4}\",,,,\"21001234\"],[,,\"(?:7(?:210|[79]\\\\d{2})|9(?:2(?:1[01]|31)|69[67]|8(?:1[1-3]|89|97)|9\\\\d{2}))\\\\d{4}\",,,,\"96961234\"],[,,\"800[3467]\\\\d{4}\",,,,\"80071234\"],[,,\"5(?:0(?:0(?:37|43)|6\\\\d{2}|70\\\\d|9[0168]\\\\d)|[12]\\\\d0[1-5])\\\\d{3}\",,,,\"50037123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3550\\\\d{4}\",,,,\"35501234\"],\"MT\",356,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,\n[,,\"7117\\\\d{4}\",,,,\"71171234\"],,,[,,,,,,,,,[-1]],[,,\"501\\\\d{5}\",,,,\"50112345\"],,,[,,,,,,,,,[-1]]],MU:[,[,,\"[2-9]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"(?:2(?:[03478]\\\\d|1[0-7]|6[1-69])|4(?:[013568]\\\\d|2[4-7])|5(?:44\\\\d|471)|6\\\\d{2}|8(?:14|3[129]))\\\\d{4}\",,,,\"2012345\"],[,,\"5(?:2[589]\\\\d|4(?:2[1-389]|[489]\\\\d|7[1-9])|7\\\\d{2}|8(?:[0-689]\\\\d|7[15-8])|9[0-8]\\\\d)\\\\d{4}\",,,,\"52512345\",,,[8]],[,,\"80[012]\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"30\\\\d{5}\",,,,\"3012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3(?:20|9\\\\d)\\\\d{4}\",\n,,,\"3201234\",,,[7]],\"MU\",230,\"0(?:0|[2-7]0|33)\",,,,,,\"020\",,[[,\"([2-46-9]\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]],[,\"(5\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"5\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MV:[,[,,\"[346-8]\\\\d{6,9}|9(?:00\\\\d{7}|\\\\d{6})\",,,,,,,[7,10]],[,,\"(?:3(?:0[0-3]|3[0-59])|6(?:[57][02468]|6[024568]|8[024689]))\\\\d{4}\",,,,\"6701234\",,,[7]],[,,\"(?:46[46]|7[2-9]\\\\d|9[14-9]\\\\d)\\\\d{4}\",,,,\"7712345\",,,[7]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",\n,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MV\",960,\"0(?:0|19)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9(?:0[1-9]|[1-9])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]00\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"4[05]0\\\\d{4}\",,,,\"4001234\",,,[7]],,,[,,,,,,,,,[-1]]],MW:[,[,,\"(?:1(?:\\\\d{2})?|[2789]\\\\d{2}|31\\\\d)\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:1[2-9]|21\\\\d{2})\\\\d{5}\",,,,\"1234567\"],[,,\"(?:111|77\\\\d|88\\\\d|99\\\\d)\\\\d{6}\",,,,\"991234567\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],[,,\"31\\\\d{7}\",,,,\"310123456\",,,[9]],\"MW\",265,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(2\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[17-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"31\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MX:[,[,,\"[1-9]\\\\d{9,10}\",,,,,,,[10,11],[7,8]],[,,\"(?:33|55|81)\\\\d{8}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-9]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\\\d{7}\",\n,,,\"2221234567\",,,[10],[7,8]],[,,\"1(?:(?:33|55|81)\\\\d{8}|(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-9]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\\\d{7})\",,,,\"12221234567\",,,[11]],[,,\"8(?:00|88)\\\\d{7}\",\n,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,\"300\\\\d{7}\",,,,\"3001234567\",,,[10]],[,,\"500\\\\d{7}\",,,,\"5001234567\",,,[10]],[,,,,,,,,,[-1]],\"MX\",52,\"0[09]\",\"01\",,,\"0[12]|04[45](\\\\d{10})\",\"1$1\",,,[[,\"([358]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|55|81\"],\"01 $1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2467]|3[0-2457-9]|5[089]|8[02-9]|9[0-35-9]\"],\"01 $1\",,1],[,\"(1)([358]\\\\d)(\\\\d{4})(\\\\d{4})\",\"044 $2 $3 $4\",[\"1(?:33|55|81)\"],\"$1\",,1],[,\"(1)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"044 $2 $3 $4\",\n[\"1(?:[2467]|3[0-2457-9]|5[089]|8[2-9]|9[1-35-9])\"],\"$1\",,1]],[[,\"([358]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|55|81\"],\"01 $1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2467]|3[0-2457-9]|5[089]|8[02-9]|9[0-35-9]\"],\"01 $1\",,1],[,\"(1)([358]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1(?:33|55|81)\"]],[,\"(1)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1(?:[2467]|3[0-2457-9]|5[089]|8[2-9]|9[1-35-9])\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MY:[,[,,\"[13-9]\\\\d{7,9}\",,,,,,,[8,9,\n10],[6,7]],[,,\"(?:3(?:2(?:0(?:11|2[0-8]|3[0-24-79]|[579]\\\\d|8[0-57-9])|1(?:0[6-9]|1[03-9]|[467]\\\\d|8[0-2]|9[13])|2(?:0[1-3]|2[2-4]|4[0-25-7]|6[0-8]|7[02-689]|8\\\\d|9[5-9])|3(?:0[0-3]|3[0-36]|8[0-35-9]|9[1-3])|6(?:0[0-5]|[139]\\\\d|8[15-8])|7(?:1\\\\d|2[0-7]|3[0-3]|42|7[0-356]|8[0-35-8])|8(?:00|4[78]|5[6-9])|93[58])|3(?:0(?:0[0-35-9]|10|5[01]|8[0-6]|9[39])|1(?:0[1-39]|10|2[02-469]|3[245]|4[0-3589]|6[0-35-9]|7[067]|8[0-57]|9[0-278])|2(?:1[3467]|2[45]|4[1-3]|5[0689]|6[04589]|7[0-3579]|8[0-489]|9[0-27])|3(?:1[7-9]|2[1-6]|4[1-689]|5[89]|6[1-3]|7\\\\d|8[125]|9[236])|6(?:[12]0|3[01]|5[0-256]|6[08]|8[45]))|4(?:0(?:09|[14]\\\\d|2[0-8]|3[12]|5[01]|65)|1(?:0[0-8]|31|4\\\\d|6[12])|2(?:17|5[0-35-9]|6[024-6]|7[0189]|8[057-9]|9\\\\d)|770|8(?:0[0-2]|1[0-3569]|2[01]))|5(?:0(?:2[0-2]|3[0-35-9])|1(?:0[1-3]|1[05]|2[0-6]|31|6[1-7]|9[1258])|270|48[0-5]|5(?:1\\\\d|2[0-6]|4[0-589]|6[125-9]|9[01])|6(?:1[1-4]|2[0-589]|3\\\\d|5[0-3])|7(?:21|40)|8(?:7[06-9]|8[025-9]|9[12]))|6(?:0(?:2[0-28]|3[24-9]|4[246-9]|5[57]|6[13-6]|7[358]|8[1247]|9[0-59])|1(?:[04][0-58]|15|2[02-8]|3[015-9]|5[016-8]|7[7-9]|8[14-9]|9[1-356])|2(?:[05]\\\\d|11|[46][1-3]|7[02-79]|8[015-7])|303|4(?:1[129]|2[01]|3[36]|6[0-2])|690|7(?:3\\\\d|89))|7(?:118|2(?:0[02]|6[01])|4(?:[59]\\\\d|8[01])|6(?:1[01]|2\\\\d|5[0-2]|6[0-69])|7(?:1[0-37-9]|[28]\\\\d|3[1-5]|7[0-3])|8(?:[04]\\\\d|3[129]|59|6[1-356]|7[02-79]|8[02-7]|90)|9(?:10|3[1-3]|4[016-9]|[56]\\\\d|7[12]|8\\\\d))|8(?:0(?:0[08]|11|2[0-7]|5[12]|6\\\\d|7[013-69]|8[0-24]|9[0-5])|100|21[0-36]|3(?:08|1\\\\d|2[0-589]|31)|408|5(?:2[0-35-79]|88)|6(?:0[0-259]|5[5-79]|6[01]|8[46-9]|9[019])|7(?:0[35-8]|2[3-7]|3\\\\d|4[0149]|5[0-2]|6[016-9]|7[5-9]|8[037]|90)|8(?:00|61|7[0-3]|8\\\\d|9[0-4])|9(?:1[1-3]|[2-5]\\\\d|6[1-4689]|8[89]|9[0-689]))|9(?:0(?:1[0-289]|2[15]|5[014-9]|7[04-68]|8[0-256])|1(?:0[0-3568]|3[0-49]|4[015]|7[0-59]|9[15])|2(?:0[0-25-7]|12|2[1-6]|3[1256]|7[14]|8\\\\d)|3[68]8|41[01]|5(?:14|2[01]|4[03-9]|6[5-79]|7[0-2569])))\\\\d|4(?:2(?:0[01]|1[07-9]|2[02-46-9]|38|4[0-28]|5[0-589]|6[0-47-9]|8[0-389]|9[0-38])\\\\d|3(?:0[5-9]|[12][034]|3[0-37]|47|5[168]|6[7-9]|7[0135-8]|8\\\\d|9[0-27-9])\\\\d|4(?:[02-9]\\\\d{2}|1(?:[02-9]\\\\d|10))|5(?:[07]\\\\d{2}|1[0-358]\\\\d|2[1246]\\\\d|3[06-9]\\\\d|4[0589]\\\\d|5[12457-9]\\\\d|6[0-689]\\\\d|8(?:[0-57-9]\\\\d|60)|9(?:[2-57-9]\\\\d|60))|6(?:0[79]|1[0-689]|2[0135-9]|[3-5]\\\\d|6[07-9]|7[23]|8[03-9]|99)\\\\d|7(?:0[0-59]\\\\d|1[04679]\\\\d|2(?:[02-9]\\\\d|10)|[37]\\\\d{2}|4(?:[0178]\\\\d|5[0-6])|5(?:[0-57-9]\\\\d|60)|6[024-689]\\\\d|8[0-79]\\\\d|9(?:[0479]\\\\d|3[01]))|8(?:1[0189]\\\\d|2[046-9]\\\\d|3[058]\\\\d|5[029]\\\\d|6(?:[0689]\\\\d|40)|8[14568]\\\\d|9[0-389]\\\\d)|9(?:0[1368]\\\\d|1[13-9]\\\\d|[27]\\\\d{2}|3(?:[0-368]\\\\d|7[0-3])|4[013-79]\\\\d|5[0-35689]\\\\d|6[0-46-9]\\\\d|8[0-24-9]\\\\d|97\\\\d))|5(?:2(?:0[13589]\\\\d|1[0-2]\\\\d|2[056]\\\\d|3(?:[067]\\\\d|2[01])|4[0-69]\\\\d|5[3-6]\\\\d|8[0-25-9]\\\\d|9[0-469]\\\\d)|3(?:[12][0-38]|3[0-37]|4[89]|5[01346-9]|[67]\\\\d|8[01589]|95)\\\\d|4(?:0[1346]\\\\d|1[02-35-9]\\\\d|2[1379]\\\\d|3[0-46-9]\\\\d|4[013689]\\\\d|[59]\\\\d{2}|6(?:[15-9]\\\\d|20)|7[036-9]\\\\d|8[015-8]\\\\d)|5(?:0[167]\\\\d|17\\\\d|2[025-9]\\\\d|3[035-7]\\\\d|4[0-35-9]\\\\d|8[13]\\\\d|9(?:[124-9]\\\\d|31))|6(?:0[89]\\\\d|1[02-46-8]\\\\d|2[0-69]\\\\d|3(?:[1-367]\\\\d|40)|4[0-689]\\\\d|5(?:[0-24-9]\\\\d|30)|6[1457-9]\\\\d|7\\\\d{2}|8[0-57-9]\\\\d|9[0-389]\\\\d)|7(?:1(?:[024679]\\\\d|80)|2[0-35-8]\\\\d|3[23]\\\\d|4[34]\\\\d|5[0-36-9]\\\\d|6[356-9]\\\\d|7\\\\d{2}|8(?:[23]\\\\d|[01]1)|9(?:[1-689]\\\\d|70))|8(?:0[145-9]\\\\d|1[0-2]\\\\d|2[09]\\\\d|3(?:[058]\\\\d|0[017])|4[016-9]\\\\d|5[02-9]\\\\d|7(?:10|2\\\\d)|8[013589]\\\\d|9[0-57-9]\\\\d)|9[23]0\\\\d)|6(?:2(?:2[1246-9]\\\\d|3[0-5]\\\\d|4[02]\\\\d|5[1-3]\\\\d|[68]\\\\d{2}|7(?:[04-8]\\\\d|10)|9[2-5]\\\\d)|3(?:1(?:[125-9]\\\\d|3[01])|3[0-7]\\\\d|5[0-478]\\\\d|79\\\\d|8[3-578]\\\\d|9[018]\\\\d)|4(?:1[015]|[2-689]\\\\d|7[1-79])\\\\d|5(?:09\\\\d|1(?:10|[2479]\\\\d)|2[1-579]\\\\d|3(?:[0-467]\\\\d|50)|4[0-24-9]\\\\d|5\\\\d{2}|60\\\\d)|6(?:0[13]\\\\d|1[0-57]\\\\d|2[03]\\\\d|3[0-478]\\\\d|4[0-8]\\\\d|5[013-689]\\\\d|6[0-467]\\\\d|[78]\\\\d{2}|9(?:[13-9]\\\\d|20))|7(?:01|2[06-9]|3[367]|5[7-9]|6\\\\d|7[0156]|8[12]|9[0-47-9])\\\\d|85[0-26]\\\\d|9(?:0[167]|10|[57]\\\\d|6[02-9]|8[013-9])\\\\d)|7(?:2(?:0[7-9]|1[016-9]|2[0-8]|[39]\\\\d|4[014]|5[0-79]|6[125-8]|7[1246-9]|8[37-9])\\\\d|3(?:0[0-5]|[35]\\\\d|40|5[0-478]|6[0-5]|8[0-26-8])\\\\d|4(?:0[07-9]|[1-35]\\\\d|6[7-9]|7[57]|8[1-68])\\\\d|5(?:0[04-9]|1[0-68]|2[0-378]|3[0-3]|5\\\\d|6[0-2]|7[018]|8[5-7]|9[05-9])\\\\d|6(?:5[0-24-9]|6[0-3568]|7[0457-9]|8[02-9]|9\\\\d)\\\\d|7(?:0[25-8]\\\\d|1(?:[01]\\\\d|20)|2[0-2]\\\\d|3[489]\\\\d|[457-9]\\\\d{2}|6(?:[0-8]\\\\d|90))|8(?:01[01]|10\\\\d|[289]\\\\d{2}|3(?:[028]\\\\d|10)|50\\\\d|6[0-357-9]\\\\d|7(?:[0235-9]\\\\d|[14]0))|9(?:0(?:[0246-8]\\\\d|10)|[1-4]\\\\d{2}|50\\\\d|6[014589]\\\\d|[7-9]0\\\\d))|8(?:2(?:2(?:[013-5]\\\\d|[28][0-8]|6[016]|7[0-589]|9[0-49])|3(?:[02][0-689]|1[1-59]|[3-7]\\\\d|8[0-389]|9[13])|4(?:0[1-3]|[1-8]\\\\d|9[1-359])|5(?:0[1-7]|[17]\\\\d|20|3[0-26-9]|4[1-9]|5[0-35]|8[0-689]|9[02367])|6(?:[147]\\\\d|2[0-25-9]|39|5[014-9]|6[1-9]|8[1-8]|9[089])|7(?:0[017-9]|1[1-356]|20|3[01457-9]|4[15]|5[0-25]|6[0-6]|70|8[0-2]|9[01378])|8(?:0[3-57-9]|[15]0|2[124-9]|3[01]|4[02-6]|6[02-578]|7\\\\d|8[25-8]|9[04-689]))|3(?:220|3(?:0[089]|10|2[0-7]|3[7-9]|4[0-48])|4(?:0[68]|1[0-478]|2[5-79]|3[024-9]|50|6\\\\d|7[0-57]|8[05]|96)|5(?:4[4578]|55|6[2-9]|70|8[459]|92))|4(?:2(?:[15]\\\\d|2[0-489]|3[124-9])|3(?:0[1-8]|[1-4]\\\\d|5[0-3]|6[1-7]|7[56]|8[0-4]|9[1-578])|4(?:05|80)|555|6(?:1[0-3]|20|3[1-4]|4[0-24-7]|5\\\\d|6[0-2]|71|8[0-47-9]|9[0-689])|7(02|1[79]|21|3[0-2468]|5[0-5]|6[0256]|7[0-8]|8[01589]|9[026-9])|8(?:0[1-9]|1[0-3568]|2[0138]|3[0-4]|4[046-9]|5[06]|6\\\\d|7[0-579]|80|9[0-8]))|5(?:2(?:0[0-26]|1\\\\d|2[0-5]|3[18]|4[0-2]|6[3-68]|70|8[025-9]|9[05-9])|3(?:10|2\\\\d|31|95)|4(?:0[1-7]|[1-4]\\\\d|5[02-6]|6[0-3]|7[0-245]|8[125]|9[1-6])|5(?:40|55)|6(?:0[1459]|1[0-8]|2[0-36-8]|3[0-35-8]|[45]\\\\d|6[0-8]|80)|7(?:1[07-9]|20|3[3-9]|4[02-4]|5[05689]|6[015-9]|7\\\\d|8[045]|9[0-6]))|6(?:2(?:01|3[12]|5[1-7]|60|8[1-6]|9[0-8])|3(?:0[0137]|[134]\\\\d|2[0-8]|[59][01]|60|[78]1)|4(?:2[2-4]|49|5[17]|6\\\\d|7[0-46-9]|8[0-689])|5(?:0[6-8]|55|8[0149]|90)|8(?:5\\\\d|[68]0)|9(?:5[12]|81))|7(?:2(?:0[189]|[12][1-9]|3[0-47]|50)|3(?:[01][1-9]|3\\\\d|4[0-245]|6[4-9]|7[237-9]|9[12])|4(?:[0-2]\\\\d|3[167-9]|[45][0-3]|6[0-8]|7[25-9]|8[0-6]|90)|5(?:0[1-9]|[89]\\\\d)|7(?:1[89]|[27]\\\\d|3[013-9]|4[0-8]|50|6[01568]|82)|8(?:[03][1-3]|1[0-28]|2[0-38]|48|5[0-4]|6[1-3]|7[124]|8[013-57-9]|9[07]))|8(?:2(?:0[13-7]|[1-9]\\\\d)|3(?:0[1-47-9]|[128]\\\\d|3[0-4]|4[1-9]|5[0-35-7]|6[0-46-9]|9[3-7])|4(?:0[1-58]|1[1-5]|[2-57-9]\\\\d|69)|5(?:1[1-35-9]|2\\\\d|3[2-8]|52)|6(?:0[2-9]|1[1-8]|[23]\\\\d|41|5[12367]|6[1-9]|7[14-9]|8[02-8]|9[05])|7(?:0[1-589]|[1-35-8]\\\\d|4[0-7]|9[0-46-9])|8(?:01|30|5[0-48]|6[13]|7\\\\d|8[013-689]|9[24-9])|9(?:0[2-4689]|1\\\\d|2[08]|3[18]|4[03]|59|6[0-36-9]|7[0-35-79]|8[1235]))|9(?:2(?:[057][1-9]|[1-3]\\\\d|4[0-8]|6[1-5]|8[015-9]|9[04-6])|300|4(?:01|36|6[1-6]|[89][12])|5(?:0[25689]|1\\\\d|2[0134]|3[1-8]|5[17]|6[0-35-9]|7[0-7]|91)|6(?:1[1-9]|2[23]|3[0-4]|6[03-9]|7[0-7])|7(?:0[1-68]|1[1-8]|2[25-9]|3[056]|4[4-9]|[5-8]\\\\d|9[0-46-9])|8(?:0[1-7]|[189]\\\\d|2[1-46]|4[1-689]|5[0-79]|6[1-9]|71)|9(?:0[1-3]|1\\\\d|2[0-35-7]|3[67]|4[12]|5[0-249]|6[5-9]|75|8[1-6])))|9(?:2(?:0[458]\\\\d|1[2-57]\\\\d|2[0-589]\\\\d|[39]\\\\d{2}|4(?:[02-9]\\\\d|10)|5(?:[024-6]\\\\d|[7-9]0)|6(?:[03-9]\\\\d|20)|7[0-26-9]\\\\d|8(?:[0-24-68]\\\\d|7[01]))|3(?:0[0-2689]\\\\d|1(?:[0235]\\\\d|1[0-2]|4[01])|2(?:0[01]|[1-57-9]\\\\d|6[0-2])|3(?:00|1[0-4]|2\\\\d)|4[05]\\\\d|5[0-3568]\\\\d|6(?:[1-357-9]\\\\d|60)|[78]0\\\\d)|4(?:0[24578]\\\\d|1[02-57-9]\\\\d|2\\\\d{2}|3(?:[0278]\\\\d|1[01]|60)|4[013579]\\\\d|5[0-8]\\\\d|6[0678]\\\\d|7[013-9]\\\\d|8[01569]\\\\d)|5(0(?:[589]\\\\d|7[01])|1\\\\d{2}|2[0159]\\\\d|3[14689]\\\\d|4[0-46-9]\\\\d|5[0-35-9]\\\\d|6[0156-8]\\\\d|7[0-35]\\\\d|8[0-7]\\\\d|9[0-3589]\\\\d)|6(?:0[269]\\\\d|[12]\\\\d{2}|3[0-57-9]\\\\d|44[0-2]|5[01379]\\\\d|6[02-9]\\\\d|7[69]\\\\d|8(?:[0-24-8]\\\\d|30)|9(?:[0-24-9]\\\\d|3[01]))|7(?:0[0136-8]|1[02-4]|2[156]|3[258]|[489]\\\\d|5[0-589]|6[024-9]|7[0-689])\\\\d|8(?:0(?:0[01]|1\\\\d)|1[3-9]\\\\d|[23]\\\\d{2}|4[0-24-689]\\\\d|5[0-689]\\\\d|6[02-9]\\\\d|7(?:[01]0|[2-4]\\\\d)|888)|9(?:00\\\\d|1[2-57-9]\\\\d|2(?:00|1[01]|[238]\\\\d)|3(?:[2-467]\\\\d|50)|4[4-9]\\\\d|5(?:[0-2457-9]\\\\d|60)|6[0156]\\\\d|7[04-9]\\\\d|8[01]\\\\d)))\\\\d{3}\",\n,,,\"323856789\",,,[8,9],[6,7]],[,,\"1(?:0(?:[23568]\\\\d|4[0-6]|7[016-9]|9[0-8])\\\\d|1(?:[1-5]\\\\d{2}|6(?:0[5-9]|[1-9]\\\\d))\\\\d|[23679][2-9]\\\\d{2}|4(?:[235-9]\\\\d{2}|400)|59\\\\d{3}|8(?:1[23]\\\\d|[236]\\\\d{2}|4(?:[06]\\\\d|7[0-4])|5[7-9]\\\\d|7[016-9]\\\\d|8(?:[01]\\\\d|[27][0-4])|9[0-8]\\\\d))\\\\d{4}\",,,,\"123456789\",,,[9,10]],[,,\"1[378]00\\\\d{6}\",,,,\"1300123456\",,,[10]],[,,\"1600\\\\d{6}\",,,,\"1600123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"154(?:6(?:0\\\\d|1[0-3])|8(?:[25]1|4[0189]|7[0-4679]))\\\\d{4}\",,,,\"1546012345\",\n,,[10]],\"MY\",60,\"00\",\"0\",,,\"0\",,,,[[,\"([4-79])(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[,\"(3)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[,\"([18]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1[02-46-9][1-9]|8\"],\"0$1\"],[,\"(1)([36-8]00)(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]0\",\"1[36-8]00\"]],[,\"(11)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"11\"],\"0$1\"],[,\"(15[49])(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15[49]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MZ:[,[,,\"[28]\\\\d{7,8}\",,,,,,,[8,9]],\n[,,\"2(?:[1346]\\\\d|5[0-2]|[78][12]|93)\\\\d{5}\",,,,\"21123456\",,,[8]],[,,\"8[2-7]\\\\d{7}\",,,,\"821234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MZ\",258,\"00\",,,,,,,,[[,\"([28]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-7]\"]],[,\"(80\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"80\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NA:[,[,,\"[68]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"6(?:1(?:17|2(?:[0189]\\\\d|[2-6]|7\\\\d?)|3(?:[01378]|2\\\\d)|4(?:[024]|10?|3[15]?)|69|7[014])|2(?:17|5(?:[0-36-8]|4\\\\d?)|69|70)|3(?:17|2(?:[0237]\\\\d?|[14-689])|34|6[289]|7[01]|81)|4(?:17|2(?:[012]|7\\\\d?)|4(?:[06]|1\\\\d?)|5(?:[01357]|[25]\\\\d?)|69|7[01])|5(?:17|2(?:[0459]|[23678]\\\\d?)|69|7[01])|6(?:17|2(?:5|6\\\\d?)|38|42|69|7[01])|7(?:17|2(?:[569]|[234]\\\\d?)|3(?:0\\\\d?|[13])|6[89]|7[01]))\\\\d{4}\",\n,,,\"61221234\"],[,,\"(?:60|8[125])\\\\d{7}\",,,,\"811234567\",,,[9]],[,,,,,,,,,[-1]],[,,\"8701\\\\d{5}\",,,,\"870123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8(?:3\\\\d{2}|86)\\\\d{5}\",,,,\"88612345\"],\"NA\",264,\"00\",\"0\",,,\"0\",,,,[[,\"(8\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8[1-35]\"],\"0$1\"],[,\"(6\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[,\"(88)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(870)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"870\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nNC:[,[,,\"[2-57-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:2[03-9]|3[0-5]|4[1-7]|88)\\\\d{4}\",,,,\"201234\"],[,,\"(?:5[0-4]|[79]\\\\d|8[0-79])\\\\d{4}\",,,,\"751234\"],[,,,,,,,,,[-1]],[,,\"36\\\\d{4}\",,,,\"366711\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NC\",687,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-46-9]|5[0-4]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NE:[,[,,\"[0289]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:0(?:20|3[1-7]|4[134]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\\\d{4}\",\n,,,\"20201234\"],[,,\"(?:8[04589]|9\\\\d)\\\\d{6}\",,,,\"93123456\"],[,,\"08\\\\d{6}\",,,,\"08123456\"],[,,\"09\\\\d{6}\",,,,\"09123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NE\",227,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"09|[289]\"]],[,\"(08)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NF:[,[,,\"[13]\\\\d{5}\",,,,,,,[6],[5]],[,,\"(?:1(?:06|17|28|39)|3[012]\\\\d)\\\\d{3}\",,,,\"106609\",,,,[5]],[,,\"3[58]\\\\d{4}\",,,,\"381234\",,,,[5]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NF\",672,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NG:[,[,,\"[1-6]\\\\d{5,8}|9\\\\d{5,9}|[78]\\\\d{5,13}\",,,,,,,[7,8,10,11,12,13,14],[5,6]],[,,\"[12]\\\\d{6,7}|9(?:0[3-9]|[1-9]\\\\d)\\\\d{5}|(?:3\\\\d|4[023568]|5[02368]|6[02-469]|7[4-69]|8[2-9])\\\\d{6}|(?:4[47]|5[14579]|6[1578]|7[0-357])\\\\d{5,6}|(?:78|41)\\\\d{5}\",,,,\"12345678\",\n,,[7,8],[5,6]],[,,\"(?:1(?:7[34]\\\\d|8(?:04|[124579]\\\\d|8[0-3])|95\\\\d)|287[0-7]|3(?:18[1-8]|88[0-7]|9(?:8[5-9]|6[1-5]))|4(?:28[0-2]|6(?:7[1-9]|8[02-47])|88[0-2])|5(?:2(?:7[7-9]|8\\\\d)|38[1-79]|48[0-7]|68[4-7])|6(?:2(?:7[7-9]|8\\\\d)|4(?:3[7-9]|[68][129]|7[04-69]|9[1-8])|58[0-2]|98[7-9])|7(?:38[0-7]|69[1-8]|78[2-4])|8(?:28[3-9]|38[0-2]|4(?:2[12]|3[147-9]|5[346]|7[4-9]|8[014-689]|90)|58[1-8]|78[2-9]|88[5-7])|98[07]\\\\d)\\\\d{4}|(?:70(?:[1-689]\\\\d|7[0-3])|8(?:0(?:1[01]|[2-9]\\\\d)|1(?:[0-8]\\\\d|9[01]))|90[235-9]\\\\d)\\\\d{6}\",\n,,,\"8021234567\",,,[8,10]],[,,\"800\\\\d{7,11}\",,,,\"80017591759\",,,[10,11,12,13,14]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NG\",234,\"009\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-6]|7(?:0[1-9]|[1-79])|8[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"70|8[01]|90[235-9]\"],\"0$1\"],[,\"([78]00)(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]00\"],\"0$1\"],[,\"([78]00)(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",\n[\"[78]00\"],\"0$1\"],[,\"(78)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"700\\\\d{7,11}\",,,,\"7001234567\",,,[10,11,12,13,14]],,,[,,,,,,,,,[-1]]],NI:[,[,,\"[125-8]\\\\d{7}\",,,,,,,[8]],[,,\"2\\\\d{7}\",,,,\"21234567\"],[,,\"(?:5(?:5[0-7]|[78]\\\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|7[5-8]\\\\d|8\\\\d{2})\\\\d{5}\",,,,\"81234567\"],[,,\"1800\\\\d{4}\",,,,\"18001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NI\",505,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NL:[,[,,\"1\\\\d{4,8}|[2-7]\\\\d{8}|[89]\\\\d{6,9}\",,,,,,,[5,6,7,8,9,10]],[,,\"(?:1(?:[035]\\\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\\\d{2})\\\\d{6}\",,,,\"101234567\",,,[9]],[,,\"6[1-58]\\\\d{7}\",,,,\"612345678\",,,[9]],[,,\"800\\\\d{4,7}\",,,,\"8001234\",,,[7,8,9,10]],[,,\"90[069]\\\\d{4,7}\",\n,,,\"9061234\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:6760|85\\\\d{2})\\\\d{5}\",,,,\"851234567\",,,[9]],\"NL\",31,\"00\",\"0\",,,\"0\",,,,[[,\"([1-578]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[4578]\"],\"0$1\"],[,\"([1-5]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[,\"(6)(\\\\d{8})\",\"$1 $2\",[\"6[0-57-9]\"],\"0$1\"],[,\"(66)(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[,\"(14)(\\\\d{3,4})\",\"$1 $2\",[\"14\"],\"$1\"],[,\"([89]0\\\\d)(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\n\"0$1\"]],,[,,\"66\\\\d{7}\",,,,\"662345678\",,,[9]],,,[,,\"140(?:1(?:[035]|[16-8]\\\\d)|2(?:[0346]|[259]\\\\d)|3(?:[03568]|[124]\\\\d)|4(?:[0356]|[17-9]\\\\d)|5(?:[0358]|[124679]\\\\d)|7\\\\d|8[458])\",,,,\"14023\",,,[5,6]],[,,\"140(?:1(?:[035]|[16-8]\\\\d)|2(?:[0346]|[259]\\\\d)|3(?:[03568]|[124]\\\\d)|4(?:[0356]|[17-9]\\\\d)|5(?:[0358]|[124679]\\\\d)|7\\\\d|8[458])|8[478]\\\\d{7}\",,,,\"14020\",,,[5,6,9]],,,[,,,,,,,,,[-1]]],NO:[,[,,\"0\\\\d{4}|[2-9]\\\\d{7}\",,,,,,,[5,8]],[,,\"(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\\\d{6}\",,,,\"21234567\",\n,,[8]],[,,\"(?:4[015-8]|5[89]|9\\\\d)\\\\d{6}\",,,,\"40612345\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"NO\",47,\"00\",,,,,,,,[[,\"([489]\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]\"]],[,\"([235-7]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,\"0\\\\d{4}|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d{2})\\\\d{3}\",\n,,,\"01234\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],NP:[,[,,\"[1-8]\\\\d{7}|9(?:[1-69]\\\\d{6,8}|7[2-6]\\\\d{5,7}|8\\\\d{8})\",,,,,,,[8,10],[6,7]],[,,\"(?:1[0-6]\\\\d|2[13-79][2-6]|3[135-8][2-6]|4[146-9][2-6]|5[135-7][2-6]|6[13-9][2-6]|7[15-9][2-6]|8[1-46-9][2-6]|9[1-79][2-6])\\\\d{5}\",,,,\"14567890\",,,[8],[6,7]],[,,\"9(?:6[0-3]|7[245]|8[0-24-68])\\\\d{7}\",,,,\"9841234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NP\",977,\"00\",\"0\",,,\"0\",,,,[[,\"(1)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-69]|7[15-9])\"],\"0$1\"],[,\"(9\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"9(?:6[013]|7[245]|8)\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NR:[,[,,\"[458]\\\\d{6}\",,,,,,,[7]],[,,\"(?:444|888)\\\\d{4}\",,,,\"4441234\"],[,,\"55[4-9]\\\\d{4}\",,,,\"5551234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NR\",674,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,\n,,,,,,,,[-1]]],NU:[,[,,\"[1-5]\\\\d{3}\",,,,,,,[4]],[,,\"[34]\\\\d{3}\",,,,\"4002\"],[,,\"[125]\\\\d{3}\",,,,\"1234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NU\",683,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NZ:[,[,,\"6[235-9]\\\\d{6}|[2-57-9]\\\\d{7,9}\",,,,,,,[8,9,10],[7]],[,,\"(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\\\d{6}|24099\\\\d{3}\",,,,\"32345678\",,,[8],[7]],[,,\"2(?:[028]\\\\d{7,8}|1\\\\d{6,8}|[79]\\\\d{7})\",,,,\"211234567\"],[,,\"508\\\\d{6,7}|80\\\\d{6,8}\",\n,,,\"800123456\"],[,,\"90\\\\d{6,7}\",,,,\"900123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,\"70\\\\d{7}\",,,,\"701234567\",,,[9]],[,,,,,,,,,[-1]],\"NZ\",64,\"0(?:0|161)\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"240|[346]|7[2-57-9]|9[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:1[1-9]|[69]|7[0-35-9])|70|86\"],\"0$1\"],[,\"(2\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[028]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"90\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"2(?:10|74)|5|[89]0\"],\"0$1\"]],,[,,\"[28]6\\\\d{6,7}\",,,,\"26123456\",,,[8,9]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],OM:[,[,,\"(?:5|[279]\\\\d)\\\\d{6}|800\\\\d{5,6}\",,,,,,,[7,8,9]],[,,\"2[2-6]\\\\d{6}\",,,,\"23123456\",,,[8]],[,,\"7[19]\\\\d{6}|9(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\",,,,\"92123456\",,,[8]],[,,\"8007\\\\d{4,5}|500\\\\d{4}\",,,,\"80071234\"],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"OM\",968,\"00\",,,,,,,,[[,\"(2\\\\d)(\\\\d{6})\",\"$1 $2\",[\"2\"]],[,\"([79]\\\\d{3})(\\\\d{4})\",\n\"$1 $2\",[\"[79]\"]],[,\"([58]00)(\\\\d{4,6})\",\"$1 $2\",[\"[58]00\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PA:[,[,,\"[1-9]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"(?:1(?:0\\\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|[68][58]|7[0167]|9[39])|2(?:[0235-79]\\\\d|1[0-7]|4[013-9]|8[026-9])|3(?:[089]\\\\d|1[014-7]|2[0-35]|33|4[0-579]|55|6[068]|7[06-8])|4(?:00|3[0-579]|4\\\\d|7[0-57-9])|5(?:[01]\\\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[05]|7[0-24-9]|8[7-9]|90)|8(?:09|2[89]|3\\\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\\\d))\\\\d{4}\",\n,,,\"2001234\",,,[7]],[,,\"(?:1[16]1|21[89]|8(?:1[01]|7[23]))\\\\d{4}|6(?:[02-9]\\\\d|1[0-5])\\\\d{5}\",,,,\"61234567\"],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\\\d{4}\",,,,\"8601234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PA\",507,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"6\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PE:[,[,,\"[14-9]\\\\d{7,8}\",,,,,,,[8,9],[6,7]],[,,\"(?:1\\\\d|4[1-4]|5[1-46]|6[1-7]|7[2-46]|8[2-4])\\\\d{6}\",\n,,,\"11234567\",,,[8],[6,7]],[,,\"9\\\\d{8}\",,,,\"912345678\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"805\\\\d{5}\",,,,\"80512345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,\"80[24]\\\\d{5}\",,,,\"80212345\",,,[8]],[,,,,,,,,,[-1]],\"PE\",51,\"19(?:1[124]|77|90)00\",\"0\",\" Anexo \",,\"0\",,,,[[,\"(1)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[,\"([4-8]\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[4-7]|8[2-4]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[,\"(9\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,\n,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PF:[,[,,\"4\\\\d{5,7}|8\\\\d{7}\",,,,,,,[6,8]],[,,\"4(?:[09][45689]\\\\d|4)\\\\d{4}\",,,,\"40412345\"],[,,\"8[79]\\\\d{6}\",,,,\"87123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PF\",689,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4[09]|8[79]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]]],,[,,,,,,,,,[-1]],,,[,,\"44\\\\d{4}\",,,,\"441234\",,,[6]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PG:[,[,,\"[1-9]\\\\d{6,7}\",,\n,,,,,[7,8]],[,,\"(?:3[0-2]\\\\d|4[257]\\\\d|5[34]\\\\d|64[1-9]|77(?:[0-24]\\\\d|30)|85[02-46-9]|9[78]\\\\d)\\\\d{4}\",,,,\"3123456\",,,[7]],[,,\"7(?:[0-689]\\\\d|75)\\\\d{5}\",,,,\"70123456\",,,[8]],[,,\"180\\\\d{4}\",,,,\"1801234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"2(?:0[0-47]|7[568])\\\\d{4}\",,,,\"2751234\",,,[7]],\"PG\",675,\"140[1-3]|00\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[13-689]|27\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"20|7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PH:[,\n[,,\"1\\\\d{10,12}|2\\\\d{5,7}|[3-7]\\\\d{8}|8\\\\d{7,9}|9\\\\d{9}\",,,,,,,[6,8,9,10,11,12,13],[5,7]],[,,\"2\\\\d{5}(?:\\\\d{2})?|(?:3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578]|8[2-8])\\\\d{7}|88(?:22\\\\d{6}|42\\\\d{4})\",,,,\"21234567\",,,[6,8,9,10],[5,7]],[,,\"(?:81[37]|9(?:0[5-9]|1[024-9]|2[0-35-9]|3[02-9]|4[235-9]|5[056]|6[5-7]|7[34-79]|89|9[4-9]))\\\\d{7}\",,,,\"9051234567\",,,[10]],[,,\"1800\\\\d{7,9}\",,,,\"180012345678\",,,[11,12,13]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PH\",63,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[,\"(2)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[,\"([3-8]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-8]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"81|9\"],\n\"0$1\"],[,\"(1800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"180\",\"1800\"]],[,\"(1800)(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"180\",\"1800\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PK:[,[,,\"1\\\\d{8}|[2-8]\\\\d{5,11}|9(?:[013-9]\\\\d{4,10}|2\\\\d(?:111\\\\d{6}|\\\\d{3,7}))\",,,,,,,[8,9,10,11,12],[6,7]],[,,\"(?:21|42)[2-9]\\\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\\\d{6}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\\\d{5,6}|58[126]\\\\d{7}\",\n,,,\"2123456789\",,,[9,10],[6,7,8]],[,,\"3(?:[014]\\\\d|2[0-5]|3[0-7]|55|64)\\\\d{7}\",,,,\"3012345678\",,,[10]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,\"122\\\\d{6}\",,,,\"122044444\",,,[9]],[,,,,,,,,,[-1]],\"PK\",92,\"00\",\"0\",,,\"0\",,,,[[,\"([89]00)(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[89]00\"],\"0$1\"],[,\"(1\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"1\"],\"$1\"],[,\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",\n[\"2[349]|45|54|60|72|8[2-5]|9[2-469]\",\"(?:2[349]|45|54|60|72|8[2-5]|9[2-469])\\\\d[2-9]\"],\"(0$1)\"],[,\"(58\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"58[126]\"],\"(0$1)\"],[,\"(3\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(\\\\d{2})(111)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)1\",\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)11\",\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)111\"],\"(0$1)\"],[,\"(\\\\d{3})(111)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[349]|45|54|60|72|8[2-5]|9[2-9]\",\n\"(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\\\d1\",\"(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\\\d11\",\"(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\\\d111\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:[1-8]|0[468])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\\\d{6}\",,,,\"21111825888\",,,[11,12]],,,[,,,,,,,,,[-1]]],PL:[,[,,\"[1-57-9]\\\\d{6,8}|6\\\\d{5,8}\",,,,,,,[6,7,8,9]],[,,\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:\\\\d{7}|19\\\\d{3})\",\n,,,\"123456789\",,,[7,9]],[,,\"(?:45|5[0137]|6[069]|7[2389]|88)\\\\d{7}\",,,,\"512345678\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"70[01346-8]\\\\d{6}\",,,,\"701234567\",,,[9]],[,,\"801\\\\d{6}\",,,,\"801234567\",,,[9]],[,,,,,,,,,[-1]],[,,\"39\\\\d{7}\",,,,\"391234567\",,,[9]],\"PL\",48,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11[68]|64\"]],[,\"(\\\\d{5})\",\"$1\",[\"19\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\n\"$1 $2 $3\",[\"64\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"26|39|45|5[0137]|6[0469]|7[02389]|8[08]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[14]|2[0-57-9]|3[2-4]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]\"]]],,[,,\"64\\\\d{4,7}\",,,,\"641234567\"],,,[,,,,,,,,,[-1]],[,,\"804\\\\d{6}\",,,,\"804123456\",,,[9]],,,[,,,,,,,,,[-1]]],PM:[,[,,\"[45]\\\\d{5}\",,,,,,,[6]],[,,\"(?:4[1-3]|50)\\\\d{4}\",,,,\"411234\"],[,,\"(?:4[02-4]|5[05])\\\\d{4}\",,,,\"551234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,\n,,[-1]],[,,,,,,,,,[-1]],\"PM\",508,\"00\",\"0\",,,\"0\",,,,[[,\"([45]\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PR:[,[,,\"[5789]\\\\d{9}\",,,,,,,[10],[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],\n[,,,,,,,,,[-1]],\"PR\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"787|939\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PS:[,[,,\"1\\\\d{9}|[24589]\\\\d{7,8}\",,,,,,,[8,9,10],[7]],[,,\"(?:22[234789]|42[45]|82[01458]|92[369])\\\\d{5}\",,,,\"22234567\",,,[8],[7]],[,,\"5[69]\\\\d{7}\",,,,\"599123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PS\",970,\"00\",\"0\",,,\"0\",,,,[[,\"([2489])(2\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]2\"],\n\"0$1\"],[,\"(5[69]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5[69]\"],\"0$1\"],[,\"(1[78]00)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[78]0\",\"1[78]00\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PT:[,[,,\"[2-46-9]\\\\d{8}\",,,,,,,[9]],[,,\"2(?:[12]\\\\d|[35][1-689]|4[1-59]|6[1-35689]|7[1-9]|8[1-69]|9[1256])\\\\d{6}\",,,,\"212345678\"],[,,\"9(?:[1236]\\\\d{2}|480)\\\\d{5}\",,,,\"912345678\"],[,,\"80[02]\\\\d{6}\",,,,\"800123456\"],[,,\"6(?:0[178]|4[68])\\\\d{6}|76(?:0[1-57]|1[2-47]|2[237])\\\\d{5}\",,,,\"760123456\"],[,,\n\"80(?:8\\\\d|9[1579])\\\\d{5}\",,,,\"808123456\"],[,,\"884[0-4689]\\\\d{5}\",,,,\"884123456\"],[,,\"30\\\\d{7}\",,,,\"301234567\"],\"PT\",351,\"00\",,,,,,,,[[,\"(2\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[,\"([2-46-9]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[3-9]|[346-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7(?:0(?:7\\\\d|8[17]))\\\\d{5}\",,,,\"707123456\"],,,[,,\"600\\\\d{6}\",,,,\"600110000\"]],PW:[,[,,\"[2-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\\\d{4}\",,,,\"2771234\"],\n[,,\"(?:6[234689]0|77\\\\d|88[0-4])\\\\d{4}\",,,,\"6201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PW\",680,\"01[12]\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PY:[,[,,\"5[0-5]\\\\d{4,7}|[2-46-9]\\\\d{5,8}\",,,,,,,[6,7,8,9],[5]],[,,\"(?:[26]1|3[289]|4[124678]|7[123]|8[1236])\\\\d{5,7}|(?:2(?:2[4568]|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51)|4(?:18|2[45]|3[12]|5[13]|64|71|9[1-47])|5(?:[1-4]\\\\d|5[0234])|6(?:3[1-3]|44|7[1-4678])|7(?:17|4[0-4]|6[1-578]|75|8[0-8])|858)\\\\d{5,6}\",\n,,,\"212345678\",,,[7,8,9],[5,6]],[,,\"9(?:51|6[129]|[78][1-6]|9[1-5])\\\\d{6}\",,,,\"961456789\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8700[0-4]\\\\d{4}\",,,,\"870012345\",,,[9]],\"PY\",595,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9[1-9]\"],\"0$1\"],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"870\",\"8700\"]],[,\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"[2-8][1-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8][1-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"[2-9]0\\\\d{4,7}\",,,,\"201234567\"],,,[,,,,,,,,,[-1]]],QA:[,[,,\"[2-8]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"4[04]\\\\d{6}\",,,,\"44123456\",,,[8]],[,,\"[3567]\\\\d{7}\",,,,\"33123456\",,,[8]],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"QA\",974,\"00\",,,,,,,,[[,\n\"([28]\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[28]\"]],[,\"([3-7]\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]],,[,,\"2(?:[12]\\\\d|61)\\\\d{4}\",,,,\"2123456\",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RE:[,[,,\"[268]\\\\d{8}\",,,,,,,[9]],[,,\"262\\\\d{6}\",,,,\"262161234\"],[,,\"69(?:2\\\\d{2}|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[05]|6[0-26]|7[0-27]|8[0-38]|9[0-479]))\\\\d{4}\",,,,\"692123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89[1-37-9]\\\\d{6}\",,,,\"891123456\"],[,,\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\",,,,\"810123456\"],[,,,,,,,\n,,[-1]],[,,,,,,,,,[-1]],\"RE\",262,\"00\",\"0\",,,\"0\",,,,[[,\"([268]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[268]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,\"262|69|8\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RO:[,[,,\"[23]\\\\d{5,8}|[7-9]\\\\d{8}\",,,,,,,[6,9]],[,,\"2(?:1(?:\\\\d{7}|9\\\\d{3})|[3-6](?:\\\\d{7}|\\\\d9\\\\d{2}))|3(?:1\\\\d{4}(?:\\\\d{3})?|[3-6]\\\\d{7})\",,,,\"211234567\"],[,,\"7(?:[02-7]\\\\d{2}|1(?:[01]\\\\d|20)|8[03-8]\\\\d|99\\\\d)\\\\d{5}\",,,,\"712034567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90[036]\\\\d{6}\",\n,,,\"900123456\",,,[9]],[,,\"801\\\\d{6}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RO\",40,\"00\",\"0\",\" int \",,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[23]1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23][3-7]|[7-9]\"],\"0$1\"],[,\"(2\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"37\\\\d{7}\",,,,\"372123456\",,,[9]],,,[,,,,,,,,,[-1]]],RS:[,[,,\"[126-9]\\\\d{4,11}|3(?:[0-79]\\\\d{3,10}|8[2-9]\\\\d{2,9})\",,,,,\n,,[6,7,8,9,10,11,12],[5]],[,,\"(?:1(?:[02-9][2-9]|1[1-9])\\\\d|2(?:[0-24-7][2-9]\\\\d|[389](?:0[2-9]|[2-9]\\\\d))|3(?:[0-8][2-9]\\\\d|9(?:[2-9]\\\\d|0[2-9])))\\\\d{3,8}\",,,,\"10234567\",,,[7,8,9,10,11,12],[5,6]],[,,\"6(?:[0-689]|7\\\\d)\\\\d{6,7}\",,,,\"601234567\",,,[8,9,10]],[,,\"800\\\\d{3,9}\",,,,\"80012345\"],[,,\"(?:90[0169]|78\\\\d)\\\\d{3,7}\",,,,\"90012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RS\",381,\"00\",\"0\",,,\"0\",,,,[[,\"([23]\\\\d{2})(\\\\d{4,9})\",\"$1 $2\",[\"(?:2[389]|39)0\"],\"0$1\"],[,\"([1-3]\\\\d)(\\\\d{5,10})\",\"$1 $2\",\n[\"1|2(?:[0-24-7]|[389][1-9])|3(?:[0-8]|9[1-9])\"],\"0$1\"],[,\"(6\\\\d)(\\\\d{6,8})\",\"$1 $2\",[\"6\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{3,9})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(7[26])(\\\\d{4,9})\",\"$1 $2\",[\"7[26]\"],\"0$1\"],[,\"(7[08]\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"7[08]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7[06]\\\\d{4,10}\",,,,\"700123456\"],,,[,,,,,,,,,[-1]]],RU:[,[,,\"[347-9]\\\\d{9}\",,,,,,,[10]],[,,\"(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\\\d{7}\",\n,,,\"3011234567\"],[,,\"9\\\\d{9}\",,,,\"9123456789\"],[,,\"80[04]\\\\d{7}\",,,,\"8001234567\"],[,,\"80[39]\\\\d{7}\",,,,\"8091234567\"],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\"],[,,,,,,,,,[-1]],\"RU\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"[1-79]\"],\"$1\",,1],[,\"([3489]\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[3489]\"],\"8 ($1)\",,1],[,\"(7\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1]],[[,\"([3489]\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[3489]\"],\"8 ($1)\",,1],[,\"(7\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RW:[,[,,\"[027-9]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"2[258]\\\\d{7}|06\\\\d{6}\",,,,\"250123456\"],[,,\"7[238]\\\\d{7}\",,,,\"720123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"900\\\\d{6}\",,,,\"900123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RW\",250,\"00\",\"0\",,,\"0\",,,,[[,\"(2\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[,\"([7-9]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[,\"(0\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SA:[,[,,\"[15]\\\\d{8}|8\\\\d{9}|92\\\\d{7}\",,,,,,,[9,10],[7]],[,,\"1(?:1\\\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\\\d{6}\",,,,\"112345678\",,,[9],[7]],[,,\"(?:5(?:[013-689]\\\\d|7[0-36-8])|811\\\\d)\\\\d{6}\",,,,\"512345678\"],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"92[05]\\\\d{6}\",,,,\"920012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SA\",966,\"00\",\"0\",,,\"0\",,,,[[,\"(1\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1[1-467]\"],\n\"0$1\"],[,\"(5\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(92\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"92\"],\"$1\"],[,\"(800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"800\"],\"$1\"],[,\"(811)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"811\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SB:[,[,,\"[1-9]\\\\d{4,6}\",,,,,,,[5,7]],[,,\"(?:1[4-79]|[23]\\\\d|4[0-2]|5[03]|6[0-37])\\\\d{3}\",,,,\"40123\",,,[5]],[,,\"48\\\\d{3}|7(?:30|[46-8]\\\\d|5[025-9]|9[0-5])\\\\d{4}|8[4-9]\\\\d{5}|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8])\\\\d{4}\",\n,,,\"7421234\"],[,,\"1[38]\\\\d{3}\",,,,\"18123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[12]\\\\d{3}\",,,,\"51123\",,,[5]],\"SB\",677,\"0[01]\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[7-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SC:[,[,,\"[24689]\\\\d{5,6}\",,,,,,,[7]],[,,\"4[2-46]\\\\d{5}\",,,,\"4217123\"],[,,\"2[5-8]\\\\d{5}\",,,,\"2510123\"],[,,\"8000\\\\d{3}\",,,,\"8000000\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:64\\\\d|971)\\\\d{4}\",,,,\"6412345\"],\"SC\",248,\"0(?:[02]|10?)\",\n,,,,,\"00\",,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SD:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"1(?:5\\\\d|8[3567])\\\\d{6}\",,,,\"151231234\"],[,,\"(?:1[0-2]|9[0-3569])\\\\d{7}\",,,,\"911231234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SD\",249,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SE:[,[,,\"[1-35-9]\\\\d{5,11}|4\\\\d{6,8}\",\n,,,,,,[6,7,8,9,10,12]],[,,\"1(?:0[1-8]\\\\d{6}|[136]\\\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\\\d)\\\\d{5,6})|2(?:[136]\\\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])\\\\d{5,6})|3(?:[356]\\\\d{5,7}|(?:0[0-4]|1\\\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\\\d{5,6})|4(?:[0246]\\\\d{5,7}|(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\\\d{5,6})|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\\\d|6[03-5]|7[013]|8[0-79]|9[01])\\\\d{5,6}|6(?:[03]\\\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\\\d{5,6})|8\\\\d{6,8}|9(?:0[1-9]\\\\d{4,6}|(?:1[0-68]|2\\\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8])\\\\d{5,6})\",\n,,,\"8123456\",,,[7,8,9]],[,,\"7[02369]\\\\d{7}\",,,,\"701234567\",,,[9]],[,,\"20\\\\d{4,7}\",,,,\"20123456\",,,[6,7,8,9]],[,,\"649\\\\d{6}|9(?:00|39|44)[1-8]\\\\d{3,6}\",,,,\"9001234567\",,,[7,8,9,10]],[,,\"77(?:0\\\\d{3}(?:\\\\d{3})?|[1-7]\\\\d{6})\",,,,\"771234567\",,,[6,9]],[,,\"75[1-8]\\\\d{6}\",,,,\"751234567\",,,[9]],[,,,,,,,,,[-1]],\"SE\",46,\"00\",\"0\",,,\"0\",,,,[[,\"(8)(\\\\d{2,3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\"],[,\"([1-69]\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90\"],\"0$1\"],\n[,\"([1-469]\\\\d)(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])\"],\"0$1\"],[,\"(7\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"7\"],\"0$1\"],[,\"(77)(\\\\d{2})(\\\\d{2})\",\n\"$1-$2$3\",[\"77\"],\"0$1\"],[,\"(20)(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\"],[,\"(9[034]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9[034]\"],\"0$1\"],[,\"(9[034]\\\\d)(\\\\d{4})\",\"$1-$2\",[\"9[034]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"25[245]|67[3-6]\"],\"0$1\"]],[[,\"(8)(\\\\d{2,3})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[,\"([1-69]\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90\"]],[,\"([1-469]\\\\d)(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90\"]],\n[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])\"]],[,\"(7\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7\"]],[,\"(77)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"77\"]],[,\"(20)(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"20\"]],[,\"(9[034]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"9[034]\"]],[,\"(9[034]\\\\d)(\\\\d{4})\",\"$1 $2\",[\"9[034]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"25[245]|67[3-6]\"]]],[,,\"74[02-9]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"(?:25[245]|67[3-6])\\\\d{9}\",,,,\"254123456789\",,,[12]]],SG:[,[,,\"[36]\\\\d{7}|[17-9]\\\\d{7,10}\",,,,,,,[8,10,11]],[,,\"6[1-9]\\\\d{6}\",,,,\"61234567\",,,[8]],[,,\"(?:8[1-8]|9[0-8])\\\\d{6}\",,,,\"81234567\",,,[8]],[,,\"1?800\\\\d{7}\",,,,\"18001234567\",,,[10,11]],[,,\"1900\\\\d{7}\",,,,\"19001234567\",\n,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3[12]\\\\d{6}\",,,,\"31234567\",,,[8]],\"SG\",65,\"0[0-3]\\\\d\",,,,,,,,[[,\"([3689]\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|8[1-9]\"]],[,\"(1[89]00)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1[89]0\",\"1[89]00\"]],[,\"(7000)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"700\",\"7000\"]],[,\"(800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"800\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7000\\\\d{7}\",,,,\"70001234567\",,,[11]],,,[,,,,,,,,,[-1]]],SH:[,[,,\"[256]\\\\d{4}|8\\\\d{3}\",,,,,,,[4,5]],[,,\"2(?:[0-57-9]\\\\d|6[4-9])\\\\d{2}\",,,,\"22158\"],\n[,,\"[56]\\\\d{4}\",,,,\"51234\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"262\\\\d{2}\",,,,\"26212\",,,[5]],\"SH\",290,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SI:[,[,,\"[1-7]\\\\d{6,7}|[89]\\\\d{4,7}\",,,,,,,[5,6,7,8]],[,,\"(?:1\\\\d|[25][2-8]|3[24-8]|4[24-8]|7[3-8])\\\\d{6}\",,,,\"11234567\",,,[8],[7]],[,,\"(?:[37][01]\\\\d|4[0139]\\\\d|51\\\\d|6(?:[48]\\\\d|5[15-7]|9[69]))\\\\d{5}\",,,,\"31234567\",,,[8]],[,,\"80\\\\d{4,6}\",,,,\"80123456\",,,[6,7,8]],[,,\"90\\\\d{4,6}|89[1-3]\\\\d{2,5}\",\n,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:59|8[1-3])\\\\d{6}\",,,,\"59012345\",,,[8]],\"SI\",386,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[12]|[34][24-8]|5[2-8]|7[3-8]\"],\"(0$1)\"],[,\"([3-7]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[,\"([89][09])(\\\\d{3,6})\",\"$1 $2\",[\"[89][09]\"],\"0$1\"],[,\"([58]\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"59|8[1-3]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SJ:[,[,,\"0\\\\d{4}|[45789]\\\\d{7}\",,,,,\n,,[5,8]],[,,\"79\\\\d{6}\",,,,\"79123456\",,,[8]],[,,\"(?:4[015-8]|5[89]|9\\\\d)\\\\d{6}\",,,,\"41234567\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"SJ\",47,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"0\\\\d{4}|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d{2})\\\\d{3}\",,,,\"01234\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],SK:[,[,,\"(?:[2-68]\\\\d{5,8}|9\\\\d{6,8})\",\n,,,,,,[6,7,9]],[,,\"2(?:1(?:6\\\\d{3,4}|7\\\\d{3})|[2-9]\\\\d{7})|[3-5][1-8](?:1(?:6\\\\d{2,3}|7\\\\d{3})|\\\\d{7})\",,,,\"221234567\"],[,,\"9(?:0(?:[1-8]\\\\d|9[1-9])|(?:1[0-24-9]|[45]\\\\d)\\\\d)\\\\d{5}\",,,,\"912123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:[78]\\\\d{7}|00\\\\d{6})\",,,,\"900123456\",,,[9]],[,,\"8[5-9]\\\\d{7}\",,,,\"850123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"6(?:02|5[0-4]|9[0-6])\\\\d{6}\",,,,\"690123456\",,,[9]],\"SK\",421,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(1[67])(\\\\d{3,4})\",\"$1 $2 $3\",[\"21[67]\"],\"0$1\"],[,\"([3-5]\\\\d)(\\\\d{2})(\\\\d{2,3})\",\n\"$1 $2 $3\",[\"[3-5]\"],\"0$1\"],[,\"(2)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[,\"([3-5]\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"],[,\"([689]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[,\"(9090)(\\\\d{3})\",\"$1 $2\",[\"909\",\"9090\"],\"0$1\"]],,[,,\"9090\\\\d{3}\",,,,\"9090123\",,,[7]],,,[,,\"(?:602|8(?:00|[5-9]\\\\d)|9(?:00|[78]\\\\d))\\\\d{6}|9090\\\\d{3}\",,,,\"800123456\",,,[7,9]],[,,\"96\\\\d{7}\",,,,\"961234567\",,,[9]],,,[,,,,,,,,,[-1]]],SL:[,[,,\"[2-9]\\\\d{7}\",,,,,,,[8],[6]],[,,\"[235]2[2-4][2-9]\\\\d{4}\",\n,,,\"22221234\",,,,[6]],[,,\"(?:2[15]|3[013-5]|4[04]|5[05]|66|7[5-9]|8[08]|99)\\\\d{6}\",,,,\"25123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SL\",232,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",,\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SM:[,[,,\"[05-7]\\\\d{7,9}\",,,,,,,[8,10],[6]],[,,\"0549(?:8[0157-9]|9\\\\d)\\\\d{4}\",,,,\"0549886377\",,,[10],[6]],[,,\"6[16]\\\\d{6}\",,,,\"66661212\",,,[8]],[,,,,,,,,,[-1]],[,,\"7[178]\\\\d{6}\",,,,\"71123456\",\n,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[158]\\\\d{6}\",,,,\"58001110\",,,[8]],\"SM\",378,\"00\",,,,\"([89]\\\\d{5})\",\"0549$1\",,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(0549)(\\\\d{6})\",\"$1 $2\",[\"054\",\"0549\"]],[,\"(\\\\d{6})\",\"0549 $1\",[\"[89]\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(0549)(\\\\d{6})\",\"($1) $2\",[\"054\",\"0549\"]],[,\"(\\\\d{6})\",\"(0549) $1\",[\"[89]\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SN:[,[,,\"[3789]\\\\d{8}\",,,,,\n,,[9]],[,,\"3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\\\d{5}\",,,,\"301012345\"],[,,\"7(?:[06-8]\\\\d|21|90)\\\\d{6}\",,,,\"701234567\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,\"88[4689]\\\\d{6}\",,,,\"884123456\"],[,,\"81[02468]\\\\d{6}\",,,,\"810123456\"],[,,,,,,,,,[-1]],[,,\"39[01]\\\\d{6}|3392\\\\d{5}|93330\\\\d{4}\",,,,\"933301234\"],\"SN\",221,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,\n,[,,,,,,,,,[-1]]],SO:[,[,,\"[1-9]\\\\d{5,8}\",,,,,,,[6,7,8,9]],[,,\"(?:1\\\\d{1,2}|2[0-79]\\\\d|3[0-46-8]?\\\\d|4[0-7]?\\\\d|59\\\\d|8[125])\\\\d{4}\",,,,\"4012345\",,,[6,7]],[,,\"(?:15\\\\d|2(?:4\\\\d|8)|3[59]\\\\d{2}|4[89]\\\\d{2}|6[1-9]?\\\\d{2}|7(?:[1-8]\\\\d|9\\\\d{1,2})|8[08]\\\\d{2}|9(?:0[67]|[2-9])\\\\d)\\\\d{5}\",,,,\"71123456\",,,[7,8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SO\",252,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[,\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[13-5]|2[0-79]\"]],[,\"(\\\\d)(\\\\d{7})\",\n\"$1 $2\",[\"24|[67]\"]],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"15|28|6[1-35-9]|799|9[2-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3[59]|4[89]|6[24-6]|79|8[08]|90\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SR:[,[,,\"[2-8]\\\\d{5,6}\",,,,,,,[6,7]],[,,\"(?:2[1-3]|3[0-7]|4\\\\d|5[2-58]|68\\\\d)\\\\d{4}\",,,,\"211234\"],[,,\"(?:7[124-7]|8[125-9])\\\\d{5}\",,,,\"7412345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"56\\\\d{4}\",\n,,,\"561234\",,,[6]],\"SR\",597,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|5[2-58]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SS:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"18\\\\d{7}\",,,,\"181234567\"],[,,\"(?:12|9[1257])\\\\d{7}\",,,,\"977123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SS\",211,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",,\n\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ST:[,[,,\"[29]\\\\d{6}\",,,,,,,[7]],[,,\"22\\\\d{5}\",,,,\"2221234\"],[,,\"9(?:0(?:0[5-9]|[1-9]\\\\d)|[89]\\\\d{2})\\\\d{3}\",,,,\"9812345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ST\",239,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SV:[,[,,\"[267]\\\\d{7}|[89]\\\\d{6}(?:\\\\d{4})?\",,,,,,,[7,8,11]],[,,\"2[1-6]\\\\d{6}\",,,,\"21234567\",,,[8]],\n[,,\"[67]\\\\d{7}\",,,,\"70123456\",,,[8]],[,,\"800\\\\d{4}(?:\\\\d{4})?\",,,,\"8001234\",,,[7,11]],[,,\"900\\\\d{4}(?:\\\\d{4})?\",,,,\"9001234\",,,[7,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SV\",503,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SX:[,[,,\"[5789]\\\\d{9}\",,,,,,,[10],[7]],[,,\"7215(?:4[2-8]|8[239]|9[056])\\\\d{4}\",,,,\"7215425678\",,\n,,[7]],[,,\"7215(?:1[02]|2\\\\d|5[034679]|8[014-8])\\\\d{4}\",,,,\"7215205678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"SX\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"721\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SY:[,[,,\"[1-59]\\\\d{7,8}\",,,,,,,[8,9],[6,7]],[,,\"(?:1(?:1\\\\d?|4\\\\d|[2356])|2(?:1\\\\d?|[235])|3(?:[13]\\\\d|4)|4[13]|5[1-3])\\\\d{6}\",\n,,,\"112345678\",,,,[6,7]],[,,\"9(?:22|[3-589]\\\\d|6[024-9])\\\\d{6}\",,,,\"944567890\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SY\",963,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",,1],[,\"(9\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SZ:[,[,,\"[0237]\\\\d{7}|900\\\\d{6}\",,,,,,,[8,9]],[,,\"[23][2-5]\\\\d{6}\",,,,\"22171234\",,,[8]],[,,\"7[6-9]\\\\d{6}\",,,,\"76123456\",\n,,[8]],[,,\"0800\\\\d{4}\",,,,\"08001234\",,,[8]],[,,\"900\\\\d{6}\",,,,\"900012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"70\\\\d{6}\",,,,\"70012345\",,,[8]],\"SZ\",268,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"900\"]]],,[,,,,,,,,,[-1]],,,[,,\"0800\\\\d{4}\",,,,\"08001234\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TA:[,[,,\"8\\\\d{3}\",,,,,,,[4]],[,,\"8\\\\d{3}\",,,,\"8999\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TA\",290,\"00\",\n,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TC:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"649(?:712|9(?:4\\\\d|50))\\\\d{4}\",,,,\"6497121234\",,,,[7]],[,,\"649(?:2(?:3[129]|4[1-7])|3(?:3[1-389]|4[1-8])|4[34][1-3])\\\\d{4}\",,,,\"6492311234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,\"64971[01]\\\\d{4}\",,,,\"6497101234\",,,,[7]],\"TC\",\n1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"649\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TD:[,[,,\"[2679]\\\\d{7}\",,,,,,,[8]],[,,\"22(?:[3789]0|5[0-5]|6[89])\\\\d{4}\",,,,\"22501234\"],[,,\"(?:6[023568]\\\\d|77\\\\d|9\\\\d{2})\\\\d{5}\",,,,\"63012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TD\",235,\"00|16\",,,,,,\"00\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TG:[,[,,\"[279]\\\\d{7}\",,,,,,,\n[8]],[,,\"2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\\\d{5}\",,,,\"22212345\"],[,,\"(?:7[09]|9[0-36-9])\\\\d{6}\",,,,\"90112345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TG\",228,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TH:[,[,,\"1\\\\d{8,9}|[2-9]\\\\d{7,8}\",,,,,,,[8,9,10]],[,,\"(?:2\\\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\\\d{6}\",,,,\"21234567\",,,[8]],[,,\"(?:14|6[1-6]|[89]\\\\d)\\\\d{7}\",,\n,,\"812345678\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,\"1900\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"6[08]\\\\d{7}\",,,,\"601234567\",,,[9]],\"TH\",66,\"00[1-9]\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"([13-9]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"14|[3-9]\"],\"0$1\"],[,\"(1[89]00)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[89]0\",\"1[89]00\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TJ:[,[,,\"[3-57-9]\\\\d{8}\",,,,,,,[9],[3,5,7]],[,\n,\"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\\\d{6}\",,,,\"372123456\",,,,[3,5,7]],[,,\"(?:41[18]|(?:5[05]|77|88|9[0-35-9])\\\\d)\\\\d{6}\",,,,\"917123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TJ\",992,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"([349]\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"],,,1],[,\"([457-9]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[148]|[578]|9(?:[0235-9]|1[59])\"],,,1],[,\"(331700)(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\",\"33170\",\"331700\"],,\n,1],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\",\"3(?:[1245]|3(?:[02-9]|1[0-589]))\"],,,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TK:[,[,,\"[2-47]\\\\d{3,6}\",,,,,,,[4,5,6,7]],[,,\"(?:2[2-4]|[34]\\\\d)\\\\d{2,5}\",,,,\"3101\"],[,,\"7[2-4]\\\\d{2,5}\",,,,\"7290\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TK\",690,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TL:[,[,,\"[2-489]\\\\d{6}|7\\\\d{6,7}\",,,,,,,[7,8]],[,,\n\"(?:2[1-5]|3[1-9]|4[1-4])\\\\d{5}\",,,,\"2112345\",,,[7]],[,,\"7[3-8]\\\\d{6}\",,,,\"77212345\",,,[8]],[,,\"80\\\\d{5}\",,,,\"8012345\",,,[7]],[,,\"90\\\\d{5}\",,,,\"9012345\",,,[7]],[,,,,,,,,,[-1]],[,,\"70\\\\d{5}\",,,,\"7012345\",,,[7]],[,,,,,,,,,[-1]],\"TL\",670,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7[3-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TM:[,[,,\"[1-6]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:2\\\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\\\d{5}\",\n,,,\"12345678\"],[,,\"6[1-9]\\\\d{6}\",,,,\"66123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TM\",993,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"13|[2-5]\"],\"(8 $1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TN:[,[,,\"[2-57-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:3[0-2]\\\\d{3}|7\\\\d{4}|81200)\\\\d{3}\",,,,\"71234567\"],\n[,,\"(?:[259]\\\\d{3}|3(?:001|1(?:[1-35]\\\\d|40)|240|6[0-4]\\\\d|91\\\\d)|4[0-6]\\\\d{2})\\\\d{4}\",,,,\"20123456\"],[,,\"8010\\\\d{4}\",,,,\"80101234\"],[,,\"88\\\\d{6}\",,,,\"88123456\"],[,,\"8[12]10\\\\d{4}\",,,,\"81101234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TN\",216,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TO:[,[,,\"[02-8]\\\\d{4,6}\",,,,,,,[5,7]],[,,\"(?:2\\\\d|3[1-8]|4[1-4]|[56]0|7[0149]|8[05])\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:7[578]|8[46-9])\\\\d{5}\",\n,,,\"7715123\",,,[7]],[,,\"0800\\\\d{3}\",,,,\"0800222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TO\",676,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[1-6]|7[0-4]|8[05]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"7[5-9]|8[46-9]\"]],[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TR:[,[,,\"[2-589]\\\\d{9}|444\\\\d{4}\",,,,,,,[7,10]],[,,\"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\\\d{7}\",\n,,,\"2123456789\",,,[10]],[,,\"5(?:(?:0[15-7]|1[06]|24|[34]\\\\d|5[1-59]|9[46])\\\\d{2}|6161)\\\\d{5}\",,,,\"5012345678\",,,[10]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"(?:8[89]8|900)\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"592(?:21[12]|461)\\\\d{4}\",,,,\"5922121234\",,,[10]],[,,,,,,,,,[-1]],\"TR\",90,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]|4(?:[0-35-9]|4[0-35-9])\"],\"(0$1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[02-69]|1[06])\"],\"0$1\",,1],[,\n\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"51|[89]\"],\"0$1\",,1],[,\"(444)(\\\\d{1})(\\\\d{3})\",\"$1 $2 $3\",[\"444\"],,,1]],,[,,\"512\\\\d{7}\",,,,\"5123456789\",,,[10]],,,[,,\"444\\\\d{4}\",,,,\"4441444\",,,[7]],[,,\"444\\\\d{4}|850\\\\d{7}\",,,,\"4441444\"],,,[,,,,,,,,,[-1]]],TT:[,[,,\"[589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"868(?:2(?:01|[23]\\\\d)|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\\\d|7[0-79])|82[124])\\\\d{4}\",,,,\"8682211234\",,,,[7]],[,,\"868(?:2(?:6[6-9]|[789]\\\\d)|3(?:0[1-9]|1[02-9]|[2-9]\\\\d)|4[6-9]\\\\d|6(?:20|78|8\\\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\\\d))\\\\d{4}\",\n,,,\"8682911234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"TT\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"868\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"868619\\\\d{4}\",,,,\"8686191234\",,,,[7]]],TV:[,[,,\"[279]\\\\d{4,6}\",,,,,,,[5,6,7]],[,,\"2[02-9]\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:7[01]\\\\d|90)\\\\d{4}\",,,,\"901234\",,,[6,7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TV\",688,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TW:[,[,,\"2\\\\d{6,8}|[3-689]\\\\d{7,8}|7\\\\d{7,9}\",,,,,,,[7,8,9,10]],[,,\"(?:2(?:[235-8]\\\\d{3}|4\\\\d{2,3})|3[2-9]\\\\d{2}|4(?:[239]\\\\d|[78])\\\\d{2}|5[2-8]\\\\d{2}|6[235-79]\\\\d{2}|7[1-9]\\\\d{2}|8(?:2(?:3\\\\d|66)|[7-9]\\\\d{2}))\\\\d{4}\",,,,\"221234567\",,,[8,9]],[,,\"9[0-8]\\\\d{7}\",,,,\"912345678\",,,[9]],[,,\"80[0-79]\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"20(?:2|[013-9]\\\\d{2})\\\\d{4}\",,,,\"203123456\",\n,,[7,9]],[,,,,,,,,,[-1]],[,,\"99\\\\d{7}\",,,,\"990123456\",,,[9]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],\"TW\",886,\"0(?:0[25679]|19)\",\"0\",\"#\",,\"0\",,,,[[,\"(20)(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[,\"([258]0)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[013-9]|50[0-46-9]|80[0-79]\"],\"0$1\"],[,\"([2-8])(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25][2-8]|[346]|[78][1-9]\"],\"0$1\"],[,\"(9\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(70)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"70\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"50[0-46-9]\\\\d{6}\",\n,,,\"500123456\",,,[9]],,,[,,,,,,,,,[-1]]],TZ:[,[,,\"\\\\d{9}\",,,,,,,[7,9]],[,,\"2[2-8]\\\\d{7}\",,,,\"222345678\"],[,,\"(?:6[2-9]|7[13-9])\\\\d{7}\",,,,\"621234567\",,,[9]],[,,\"80[08]\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90\\\\d{7}\",,,,\"900123456\",,,[9]],[,,\"8(?:40|6[01])\\\\d{6}\",,,,\"840123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"41\\\\d{7}\",,,,\"412345678\",,,[9]],\"TZ\",255,\"00[056]\",\"0\",,,\"0\",,,,[[,\"([24]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[,\"([67]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{2})(\\\\d{4})\",\n\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:8(?:[04]0|6[01])|90\\\\d)\\\\d{6}\",,,,\"800123456\",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UA:[,[,,\"[3-9]\\\\d{8}\",,,,,,,[9],[5,6,7]],[,,\"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\\\d{7}\",,,,\"311234567\",,,,[5,6,7]],[,,\"(?:39|50|6[36-8]|7[1-3]|9[1-9])\\\\d{7}\",,,,\"391234567\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,\"900[2-49]\\\\d{5}\",,,,\"900212345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"89[1-579]\\\\d{6}\",,,,\"891234567\"],\"UA\",380,\"00\",\"0\",,,\"0\",,\"0~0\",,[[,\"([3-9]\\\\d)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"[38]9|4(?:[45][0-5]|87)|5(?:0|[67][37])|6[36-8]|7|9[1-9]\",\"[38]9|4(?:[45][0-5]|87)|5(?:0|6(?:3[14-7]|7)|7[37])|6[36-8]|7|9[1-9]\"],\"0$1\"],[,\"([3-689]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:3[1-8]|4[136-8])2|5(?:[12457]2|6[24])|6(?:[12][29]|[49]2|5[24])|8[0-8]|90\",\"3(?:[1-46-8]2[013-9]|52)|4(?:[1378]2|62[013-9])|5(?:[12457]2|6[24])|6(?:[12][29]|[49]2|5[24])|8[0-8]|90\"],\"0$1\"],[,\"([3-6]\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"3(?:[1-46-8]|5[013-9])|4(?:[137][013-9]|[45][6-9]|6|8[4-6])|5(?:[1245][013-9]|3|6[0135689]|7[4-6])|6(?:[12][13-8]|[49][013-9]|5[0135-9])\",\n\"3(?:[1-46-8](?:[013-9]|22)|5[013-9])|4(?:[137][013-9]|[45][6-9]|6(?:[013-9]|22)|8[4-6])|5(?:[1245][013-9]|3|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][13-8]|[49][013-9]|5[0135-9])\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UG:[,[,,\"\\\\d{9}\",,,,,,,[9],[5,6,7]],[,,\"20(?:[0147]\\\\d{3}|2(?:40|[5-9]\\\\d)\\\\d|3(?:0[0-4]|[2367]\\\\d)\\\\d|5[0-4]\\\\d{2}|6(?:00[0-2]|30[0-4]|[5-9]\\\\d{2})|8[0-2]\\\\d{2})\\\\d{3}|[34]\\\\d{8}\",,,,\"312345678\",,,,[5,6,7]],[,,\"7(?:[09][0-7]\\\\d|[1578]\\\\d{2}|2(?:[03]\\\\d|60)|30\\\\d|4[0-4]\\\\d)\\\\d{5}\",\n,,,\"712345678\"],[,,\"800[123]\\\\d{5}\",,,,\"800123456\"],[,,\"90[123]\\\\d{6}\",,,,\"901123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UG\",256,\"00[057]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"20[0-8]|4(?:6[45]|[7-9])|[7-9]\",\"20(?:[013-8]|2[5-9])|4(?:6[45]|[7-9])|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"3|4(?:[1-5]|6[0-36-9])\"],\"0$1\"],[,\"(2024)(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],US:[,[,,\"[2-9]\\\\d{9}\",,,,,,,[10],\n[7]],[,,\"(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[16]|5[017]|6[0-279]|78|8[012])|7(?:0[1-46-8]|1[02-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-258]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[014678]|4[0179]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[16]|5[017]|6[0-279]|78|8[012])|7(?:0[1-46-8]|1[02-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-258]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[014678]|4[0179]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"US\",1,\"011\",\"1\",,,\"1\",,,1,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",,,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",,,,1]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\"]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UY:[,[,,\"[2489]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"2\\\\d{7}|4[2-7]\\\\d{6}\",\n,,,\"21231234\",,,[8],[7]],[,,\"9[1-9]\\\\d{6}\",,,,\"94231234\",,,[8]],[,,\"80[05]\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"90[0-8]\\\\d{4}\",,,,\"9001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UY\",598,\"0(?:1[3-9]\\\\d|0)\",\"0\",\" int. \",,\"0\",,\"00\",,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[24]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]0\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UZ:[,[,,\"[679]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:6(?:1(?:22|3[124]|4[1-4]|5[123578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\\\d{2}|7(?:[23]\\\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[12456]|9[135-8])|1[12]\\\\d|2(?:22|3[1345789]|4[123579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\\\d{5}\",\n,,,\"662345678\",,,,[7]],[,,\"6(?:1(?:2(?:98|2[01])|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:11\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4])|7\\\\d{2})|5(?:19[01]|2(?:27|9[26])|30\\\\d|59\\\\d|7\\\\d{2})|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|3[79]\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79])|9[0-3]\\\\d)|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|5\\\\d|3[01]|7[0-4])|5[67]\\\\d|6(?:2[0-26]|8\\\\d)|7\\\\d{2}))\\\\d{4}|7(?:0\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|33\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078])|9[4-6]\\\\d)|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0127]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[05629]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07])))\\\\d{4}|9[0-57-9]\\\\d{7}\",\n,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UZ\",998,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"([679]\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[679]\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VA:[,[,,\"(?:0(?:878\\\\d{5}|6698\\\\d{5})|[1589]\\\\d{5,10}|3(?:[12457-9]\\\\d{8}|[36]\\\\d{7,9}))\",,,,,,,[6,8,9,10,11]],[,,\"06698\\\\d{5}\",,,,\"0669812345\",,,[10]],[,,\"3(?:[12457-9]\\\\d{8}|6\\\\d{7,8}|3\\\\d{7,9})\",,,,\"3123456789\",,,[9,10,11]],[,\n,\"80(?:0\\\\d{6}|3\\\\d{3})\",,,,\"800123456\",,,[6,9]],[,,\"0878\\\\d{5}|1(?:44|6[346])\\\\d{6}|89(?:2\\\\d{3}|4(?:[0-4]\\\\d{2}|[5-9]\\\\d{4})|5(?:[0-4]\\\\d{2}|[5-9]\\\\d{6})|9\\\\d{6})\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{6}|[17]\\\\d{3})\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"VA\",39,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,\"848\\\\d{6}\",,,,\"848123456\",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VC:[,[,,\"[5789]\\\\d{9}\",,,,,,,[10],[7]],[,,\"784(?:266|3(?:6[6-9]|7\\\\d|8[0-24-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\\\d{4}\",\n,,,\"7842661234\",,,,[7]],[,,\"784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4]))\\\\d{4}\",,,,\"7844301234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VC\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"784\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VE:[,[,,\"[24589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"(?:2(?:12|3[457-9]|[58][1-9]|[467]\\\\d|9[1-6])|50[01])\\\\d{7}\",\n,,,\"2121234567\",,,,[7]],[,,\"4(?:1[24-8]|2[46])\\\\d{7}\",,,,\"4121234567\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"900\\\\d{7}\",,,,\"9001234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"VE\",58,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",,\"0$1\",\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VG:[,[,,\"[2589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"284(?:(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\\\d{4}|496[0-5]\\\\d{3})\",,,,\"2842291234\",,,,[7]],[,,\"284(?:(?:3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|54[0-57])\\\\d{4}|496[6-9]\\\\d{3})\",\n,,,\"2843001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VG\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"284\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VI:[,[,,\"[3589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"340(?:2(?:01|2[0678]|44|77)|3(?:32|44)|4(?:22|7[34])|5(?:1[34]|55)|6(?:26|4[23]|77|9[023])|7(?:1[2-57-9]|27|7\\\\d)|884|998)\\\\d{4}\",,,,\"3406421234\",\n,,,[7]],[,,\"340(?:2(?:01|2[0678]|44|77)|3(?:32|44)|4(?:22|7[34])|5(?:1[34]|55)|6(?:26|4[23]|77|9[023])|7(?:1[2-57-9]|27|7\\\\d)|884|998)\\\\d{4}\",,,,\"3406421234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VI\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"340\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VN:[,[,,\"1\\\\d{6,9}|2\\\\d{9}|6\\\\d{6,7}|7\\\\d{6}|8\\\\d{6,8}|9\\\\d{8}\",\n,,,,,,[7,8,9,10]],[,,\"2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-7]|9[0-4679])\\\\d{7}\",,,,\"2101234567\",,,[10]],[,,\"(?:9\\\\d|1(?:2\\\\d|6[2-9]|8[68]|99))\\\\d{7}|8(?:6[89]|8\\\\d|9[89])\\\\d{6}\",,,,\"912345678\",,,[9,10]],[,,\"1800\\\\d{4,6}\",,,,\"1800123456\",,,[8,9,10]],[,,\"1900\\\\d{4,6}\",,,,\"1900123456\",,,[8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"VN\",84,\"00\",\"0\",,,\"0\",,,,[[,\"([17]99)(\\\\d{4})\",\"$1 $2\",[\"[17]99\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\n\"0$1\",,1],[,\"(80)(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",,1],[,\"(69\\\\d)(\\\\d{4,5})\",\"$1 $2\",[\"69\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2[0-35-79]\"],\"0$1\",,1],[,\"([89]\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8(?:8|9[89])|9\"],\"0$1\",,1],[,\"(1[2689]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:[26]|8[68]|99)\"],\"0$1\",,1],[,\"(86[89])(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"86[89]\"],\"0$1\",,1],[,\"(1[89]00)(\\\\d{4,6})\",\"$1 $2\",[\"1[89]0\",\"1[89]00\"],\"$1\",,1]],,[,,,,,,,,,[-1]],,,[,,\"[17]99\\\\d{4}|69\\\\d{5,6}\",,,,\"1992000\",\n,,[7,8]],[,,\"[17]99\\\\d{4}|69\\\\d{5,6}|80\\\\d{5}\",,,,\"1992000\",,,[7,8]],,,[,,,,,,,,,[-1]]],VU:[,[,,\"[2-57-9]\\\\d{4,6}\",,,,,,,[5,7]],[,,\"(?:2[02-9]\\\\d|3(?:[5-7]\\\\d|8[0-8])|48[4-9]|88\\\\d)\\\\d{2}\",,,,\"22123\",,,[5]],[,,\"(?:5(?:7[2-5]|[0-689]\\\\d)|7[013-7]\\\\d)\\\\d{4}\",,,,\"5912345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"VU\",678,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[579]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"3[03]\\\\d{3}|900\\\\d{4}\",,,,\"30123\"],,,[,,,,\n,,,,,[-1]]],WF:[,[,,\"[4-8]\\\\d{5}\",,,,,,,[6]],[,,\"(?:50|68|72)\\\\d{4}\",,,,\"501234\"],[,,\"(?:50|68|72|8[23])\\\\d{4}\",,,,\"501234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WF\",681,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"[48]0\\\\d{4}\",,,,\"401234\"]],WS:[,[,,\"[2-578]\\\\d{4,9}|6[1-9]\\\\d{3}\",,,,,,,[5,6,7,10]],[,,\"(?:[2-5]\\\\d|6[1-9])\\\\d{3}\",,,,\"22123\",,,[5]],[,,\"(?:7[25-7]|8(?:[3-7]|9\\\\d{3}))\\\\d{5}\",\n,,,\"7212345\",,,[7,10]],[,,\"800\\\\d{3}\",,,,\"800123\",,,[6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WS\",685,\"0\",,,,,,,,[[,\"(8\\\\d{2})(\\\\d{3,7})\",\"$1 $2\",[\"8\"]],[,\"(7\\\\d)(\\\\d{5})\",\"$1 $2\",[\"7\"]],[,\"(\\\\d{5})\",\"$1\",[\"[2-6]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],XK:[,[,,\"[23][89]\\\\d{6,7}|4[3-79]\\\\d{6}|[89]00\\\\d{5}\",,,,,,,[8,9]],[,,\"(?:2[89]0?|3(?:8|90?))\\\\d{6}\",,,,\"28012345\"],[,,\"4[3-79]\\\\d{6}\",,,,\"43201234\",,,[8]],[,,\"800\\\\d{5}\",,,,\"80001234\",,\n,[8]],[,,\"900\\\\d{5}\",,,,\"90001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"XK\",383,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23][89]|4[3-79]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]00\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YE:[,[,,\"[1-7]\\\\d{6,8}\",,,,,,,[7,8,9],[6]],[,,\"(?:1(?:7\\\\d|[2-68])|2[2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-68])\\\\d{5}\",,,,\"1234567\",,,[7,8],[6]],\n[,,\"7[0137]\\\\d{7}\",,,,\"712345678\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YE\",967,\"00\",\"0\",,,\"0\",,,,[[,\"([1-7])(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[,\"(7\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7[0137]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YT:[,[,,\"[268]\\\\d{8}\",,,,,,,[9]],[,,\"269(?:0[67]|5[01]|6\\\\d|[78]0)\\\\d{4}\",,,,\"269601234\"],[,,\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|[45]0|9[04-79])\\\\d{4}\",,\n,,\"639012345\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YT\",262,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"269|63\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZA:[,[,,\"[1-79]\\\\d{8}|8\\\\d{4,8}\",,,,,,,[5,6,7,8,9]],[,,\"(?:1[0-8]|2[1-378]|3[1-69]|4\\\\d|5[1346-8])\\\\d{7}\",,,,\"101234567\",,,[9]],[,,\"(?:6\\\\d|7[0-46-9])\\\\d{7}|8(?:[1-4]\\\\d{1,5}|5\\\\d{5})\\\\d{2}\",,,,\"711234567\"],[,,\"80\\\\d{7}\",,,,\"801234567\",,,[9]],[,,\"86[2-9]\\\\d{6}|9[0-2]\\\\d{7}\",,,,\"862345678\",\n,,[9]],[,,\"860\\\\d{6}\",,,,\"860123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"87\\\\d{7}\",,,,\"871234567\",,,[9]],\"ZA\",27,\"00\",\"0\",,,\"0\",,,,[[,\"(860)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-79]|8(?:[0-57]|6[1-9])\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"861\\\\d{6}\",,,,\"861123456\",,,[9]],,,[,,,,,,,,,[-1]]],ZM:[,[,,\"[289]\\\\d{8}\",,,,,,,[9],[6,7]],[,,\"21[1-8]\\\\d{6}\",\n,,,\"211234567\",,,,[6,7]],[,,\"9[4-9]\\\\d{7}\",,,,\"955123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ZM\",260,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",,\"$1\"],[,\"([1-8])(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"$1\"],[,\"([29]\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[29]\"],\"0$1\"],[,\"(800)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"800\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZW:[,[,,\"2(?:[0-57-9]\\\\d{3,8}|6(?:[14]\\\\d{7}|\\\\d{4}))|[13-69]\\\\d{4,9}|7\\\\d{8}|8[06]\\\\d{5,8}\",\n,,,,,,[5,6,7,8,9,10],[3,4]],[,,\"(?:2(?:0(?:4\\\\d|5\\\\d{2})|2[278]\\\\d|48\\\\d|7(?:[1-7]\\\\d|[089]\\\\d{2})|8(?:[2-57-9]|[146]\\\\d{2})|98)|3(?:08|17|3[78]|7(?:[19]|[56]\\\\d)|8[37]|98)|5[15][78]|6(?:28\\\\d{2}|37|6[78]|75\\\\d|98|8(?:7\\\\d|8)))\\\\d{3}|(?:2(?:1[39]|2[0157]|31|[56][14]|7[35]|84)|329)\\\\d{7}|(?:1(?:3\\\\d{2}|[4-8]|9\\\\d)|2(?:0\\\\d{2}|12|292|[569]\\\\d)|3(?:[26]|[013459]\\\\d)|5(?:0|1[2-4]|26|[37]2|5\\\\d{2}|[689]\\\\d)|6(?:[39]|[01246]\\\\d|[78]\\\\d{2}))\\\\d{3}|(?:29\\\\d|39|54)\\\\d{6}|(?:(?:25|54)83\\\\d|2582\\\\d{2}|65[2-8])\\\\d{2}|(?:4\\\\d{6,7}|9[2-9]\\\\d{4,5})\",\n,,,\"1312345\",,,,[3,4]],[,,\"(?:7(?:1\\\\d|3[2-9]|7[1-9]|8[2-5])|8644)\\\\d{6}\",,,,\"712345678\",,,[9,10]],[,,\"80(?:[01]\\\\d|20|8[0-8])\\\\d{3}\",,,,\"8001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"86(?:1[12]|30|55|77|8[368])\\\\d{6}\",,,,\"8686123456\",,,[10]],\"ZW\",263,\"00\",\"0\",,,\"0\",,,,[[,\"([49])(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"4|9[2-9]\"],\"0$1\"],[,\"(7\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(86\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"86[24]\"],\"0$1\"],[,\"([2356]\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",\n[\"2(?:0[45]|2[278]|[49]8|[78])|3(?:[09]8|17|3[78]|7[1569]|8[37])|5[15][78]|6(?:[29]8|37|[68][78]|75)\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|31|[56][14]|7[35]|84)|329\"],\"0$1\"],[,\"([1-356]\\\\d)(\\\\d{3,5})\",\"$1 $2\",[\"1[3-9]|2[02569]|3[0-69]|5[05689]|6\"],\"0$1\"],[,\"([235]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[23]9|54\"],\"0$1\"],[,\"([25]\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258[23]|5483\"],\"0$1\"],[,\"(8\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"86\"],\"0$1\"],[,\"(80\\\\d)(\\\\d{4})\",\"$1 $2\",[\"80\"],\n\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],800:[,[,,\"\\\\d{8}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"\\\\d{8}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",800,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],808:[,[,,\"\\\\d{8}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"\\\\d{8}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n\"001\",808,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],870:[,[,,\"[35-7]\\\\d{8}\",,,,,,,[9]],[,,,,,,,,,[-1]],[,,\"(?:[356]\\\\d|7[6-8])\\\\d{7}\",,,,\"301234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",870,,,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],878:[,[,,\"1\\\\d{11}\",,,,,,,[12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"10\\\\d{10}\",,,,\"101234567890\"],\"001\",878,,,,,,,,1,[[,\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],881:[,[,,\"[67]\\\\d{8}\",,,,,,,[9]],[,,,,,,,,,[-1]],[,,\"[67]\\\\d{8}\",,,,\"612345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",881,,,,,,,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[67]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],882:[,[,,\"[13]\\\\d{6,11}\",,,,,,,[7,8,9,10,11,12]],[,,,,,,,,,[-1]],[,,\"3(?:2\\\\d{3}|37\\\\d{2}|4(?:2|7\\\\d{3}))\\\\d{4}\",,,,\"3421234\",,,[7,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15678]|9[0689])\\\\d{4}|6\\\\d{5,10})|3(?:45|9\\\\d{3})\\\\d{7}\",,,,\"390123456789\"],\"001\",882,,,,,,,,,[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"34[57]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"348\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[,\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"16|39\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"348[57]\\\\d{7}\",,,,\"34851234567\",,,[11]]],883:[,[,,\"51\\\\d{7}(?:\\\\d{3})?\",,,,,,,[9,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"51(?:00\\\\d{5}(?:\\\\d{3})?|[13]0\\\\d{8})\",\n,,,\"510012345\"],\"001\",883,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"510\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],888:[,[,,\"\\\\d{11}\",,,,,,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",888,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,\n,[-1]],[,,\"\\\\d{11}\",,,,\"12345678901\"],,,[,,,,,,,,,[-1]]],979:[,[,,\"\\\\d{9}\",,,,,,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"\\\\d{9}\",,,,\"123456789\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",979,,,,,,,,1,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]]};/*\n Copyright (C) 2010 The Libphonenumber Authors.\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nfunction M(){this.a={}}M.c=void 0;M.a=function(){return M.c?M.c:M.c=new M};\nvar xa={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\"},ya={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",\n7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\",A:\"2\",B:\"2\",C:\"2\",D:\"3\",E:\"3\",F:\"3\",G:\"4\",H:\"4\",I:\"4\",J:\"5\",K:\"5\",L:\"5\",M:\"6\",N:\"6\",O:\"6\",P:\"7\",\nQ:\"7\",R:\"7\",S:\"7\",T:\"8\",U:\"8\",V:\"8\",W:\"9\",X:\"9\",Y:\"9\",Z:\"9\"},N=/^[+\\uff0b]+/,za=/([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9])/,Aa=/[+\\uff0b0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]/,Ba=/[\\\\\\/] *x/,Ca=/[^0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9A-Za-z#]+$/,Da=/(?:.*?[A-Za-z]){3}.*/,Ea=/(?:;ext=([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,7})|[ \\u00a0\\t,]*(?:e?xt(?:ensi(?:o\\u0301?|\\u00f3))?n?|\\uff45?\\uff58\\uff54\\uff4e?|[;,x\\uff58#\\uff03~\\uff5e]|int|anexo|\\uff49\\uff4e\\uff54)[:\\.\\uff0e]?[ \\u00a0\\t,-]*([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,7})#?|[- ]+([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,5})#)$/i,\nFa=/^[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{2}$|^[+\\uff0b]*(?:[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e*]*[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]){3,}[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e*A-Za-z0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]*(?:;ext=([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,7})|[ \\u00a0\\t,]*(?:e?xt(?:ensi(?:o\\u0301?|\\u00f3))?n?|\\uff45?\\uff58\\uff54\\uff4e?|[;,x\\uff58#\\uff03~\\uff5e]|int|anexo|\\uff49\\uff4e\\uff54)[:\\.\\uff0e]?[ \\u00a0\\t,-]*([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,7})#?|[- ]+([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,5})#)?$/i,\nGa=/(\\$\\d)/;function Ha(a){var b=a.search(Aa);0<=b?(a=a.substring(b),a=a.replace(Ca,\"\"),b=a.search(Ba),0<=b&&(a=a.substring(0,b))):a=\"\";return a}function Ia(a){return 2>a.length?!1:O(Fa,a)}function Ja(a){return O(Da,a)?P(a,ya):P(a,xa)}function Ka(a){var b=Ja(a.toString());a.c=\"\";a.a(b)}function La(a){return null!=a&&(1!=A(a,9)||-1!=w(a,9)[0])}function P(a,b){for(var c=new F,d,e=a.length,f=0;f<e;++f)d=a.charAt(f),d=b[d.toUpperCase()],null!=d&&c.a(d);return c.toString()}\nfunction Q(a){return null!=a&&isNaN(a)&&a.toUpperCase()in wa}\nfunction Ma(a,b,c){if(0==t(b,2)&&null!=b.a[5]){var d=y(b,5);if(0<d.length)return d}d=y(b,1);var e=R(b);if(0==c)return Na(d,0,e,\"\");if(!(d in K))return e;a=S(a,d,T(d));b=null!=b.a[3]&&0!=t(b,3).length?3==c?\";ext=\"+t(b,3):null!=a.a[13]?t(a,13)+y(b,3):\" ext. \"+y(b,3):\"\";a:{a=0==w(a,20).length||2==c?w(a,19):w(a,20);for(var f,g=a.length,h=0;h<g;++h){f=a[h];var l=A(f,3);if(0==l||0==e.search(t(f,3,l-1)))if(l=new RegExp(t(f,1)),O(l,e)){a=f;break a}}a=null}null!=a&&(g=a,a=y(g,2),f=new RegExp(t(g,1)),y(g,5),\ng=y(g,4),e=2==c&&null!=g&&0<g.length?e.replace(f,a.replace(Ga,g)):e.replace(f,a),3==c&&(e=e.replace(/^[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e]+/,\"\"),e=e.replace(/[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e]+/g,\"-\")));return Na(d,c,e,b)}function S(a,b,c){return\"001\"==c?U(a,\"\"+b):U(a,c)}\nfunction R(a){if(null==a.a[2])return\"\";var b=\"\"+t(a,2);return null!=a.a[4]&&t(a,4)&&0<y(a,8)?Array(y(a,8)+1).join(\"0\")+b:b}function Na(a,b,c,d){switch(b){case 0:return\"+\"+a+c+d;case 1:return\"+\"+a+\" \"+c+d;case 3:return\"tel:+\"+a+\"-\"+c+d;default:return c+d}}\nfunction V(a,b){switch(b){case 4:return t(a,5);case 3:return t(a,4);case 1:return t(a,3);case 0:case 2:return t(a,2);case 5:return t(a,6);case 6:return t(a,8);case 7:return t(a,7);case 8:return t(a,21);case 9:return t(a,25);case 10:return t(a,28);default:return t(a,1)}}function W(a,b){return X(a,t(b,1))?X(a,t(b,5))?4:X(a,t(b,4))?3:X(a,t(b,6))?5:X(a,t(b,8))?6:X(a,t(b,7))?7:X(a,t(b,21))?8:X(a,t(b,25))?9:X(a,t(b,28))?10:X(a,t(b,2))?t(b,18)||X(a,t(b,3))?2:0:!t(b,18)&&X(a,t(b,3))?1:-1:-1}\nfunction U(a,b){if(null==b)return null;b=b.toUpperCase();var c=a.a[b];if(null==c){c=wa[b];if(null==c)return null;c=(new E).a(I.f(),c);a.a[b]=c}return c}function X(a,b){var c=a.length;return 0<A(b,9)&&-1==p(w(b,9),c)?!1:O(y(b,2),a)}\nfunction Oa(a,b){if(null==b)return null;var c=y(b,1);c=K[c];if(null==c)a=null;else if(1==c.length)a=c[0];else a:{b=R(b);for(var d,e=c.length,f=0;f<e;f++){d=c[f];var g=U(a,d);if(null!=g.a[23]){if(0==b.search(t(g,23))){a=d;break a}}else if(-1!=W(b,g)){a=d;break a}}a=null}return a}function T(a){a=K[a];return null==a?\"ZZ\":a[0]}\nfunction Y(a,b,c,d){var e=V(c,d),f=0==A(e,9)?w(t(c,1),9):w(e,9);e=w(e,10);if(2==d)if(La(V(c,0)))a=V(c,1),La(a)&&(f=f.concat(0==A(a,9)?w(t(c,1),9):w(a,9)),q(f),0==e.length?e=w(a,10):(e=e.concat(w(a,10)),q(e)));else return Y(a,b,c,1);if(-1==f[0])return 5;b=b.length;if(-1<p(e,b))return 4;c=f[0];return c==b?0:c>b?2:f[f.length-1]<b?3:-1<p(f,b,1)?0:5}function Pa(a,b){var c=R(b);b=y(b,1);if(!(b in K))return 1;b=S(a,b,T(b));return Y(a,c,b,-1)}\nfunction Qa(a,b,c,d,e,f){if(0==b.length)return 0;b=new F(b);var g;null!=c&&(g=t(c,11));null==g&&(g=\"NonMatch\");var h=b.toString();if(0==h.length)g=20;else if(N.test(h))h=h.replace(N,\"\"),b.c=\"\",b.a(Ja(h)),g=1;else{h=new RegExp(g);Ka(b);g=b.toString();if(0==g.search(h)){h=g.match(h)[0].length;var l=g.substring(h).match(za);l&&null!=l[1]&&0<l[1].length&&\"0\"==P(l[1],xa)?g=!1:(b.c=\"\",b.a(g.substring(h)),g=!0)}else g=!1;g=g?5:20}e&&u(f,6,g);if(20!=g){if(2>=b.c.length)throw Error(\"Phone number too short after IDD\");\na:{a=b.toString();if(0!=a.length&&\"0\"!=a.charAt(0))for(e=a.length,b=1;3>=b&&b<=e;++b)if(c=parseInt(a.substring(0,b),10),c in K){d.a(a.substring(b));d=c;break a}d=0}if(0!=d)return u(f,1,d),d;throw Error(\"Invalid country calling code\");}if(null!=c&&(g=y(c,10),h=\"\"+g,l=b.toString(),0==l.lastIndexOf(h,0)&&(h=new F(l.substring(h.length)),l=t(c,1),l=new RegExp(y(l,2)),Ra(h,c,null),h=h.toString(),!O(l,b.toString())&&O(l,h)||3==Y(a,b.toString(),c,-1))))return d.a(h),e&&u(f,6,10),u(f,1,g),g;u(f,1,0);return 0}\nfunction Ra(a,b,c){var d=a.toString(),e=d.length,f=t(b,15);if(0!=e&&null!=f&&0!=f.length){var g=new RegExp(\"^(?:\"+f+\")\");if(e=g.exec(d)){f=new RegExp(y(t(b,1),2));var h=O(f,d),l=e.length-1;b=t(b,16);if(null==b||0==b.length||null==e[l]||0==e[l].length){if(!h||O(f,d.substring(e[0].length)))null!=c&&0<l&&null!=e[l]&&c.a(e[1]),a.set(d.substring(e[0].length))}else if(d=d.replace(g,b),!h||O(f,d))null!=c&&0<l&&c.a(e[1]),a.set(d)}}}\nfunction Z(a,b,c){if(!Q(c)&&0<b.length&&\"+\"!=b.charAt(0))throw Error(\"Invalid country calling code\");return Sa(a,b,c,!0)}\nfunction Sa(a,b,c,d){if(null==b)throw Error(\"The string supplied did not seem to be a phone number\");if(250<b.length)throw Error(\"The string supplied is too long to be a phone number\");var e=new F,f=b.indexOf(\";phone-context=\");if(0<=f){var g=f+15;if(\"+\"==b.charAt(g)){var h=b.indexOf(\";\",g);0<h?e.a(b.substring(g,h)):e.a(b.substring(g))}g=b.indexOf(\"tel:\");e.a(b.substring(0<=g?g+4:0,f))}else e.a(Ha(b));f=e.toString();g=f.indexOf(\";isub=\");0<g&&(e.c=\"\",e.a(f.substring(0,g)));if(!Ia(e.toString()))throw Error(\"The string supplied did not seem to be a phone number\");\nf=e.toString();if(!(Q(c)||null!=f&&0<f.length&&N.test(f)))throw Error(\"Invalid country calling code\");f=new J;d&&u(f,5,b);a:{b=e.toString();g=b.search(Ea);if(0<=g&&Ia(b.substring(0,g))){h=b.match(Ea);for(var l=h.length,z=1;z<l;++z)if(null!=h[z]&&0<h[z].length){e.c=\"\";e.a(b.substring(0,g));b=h[z];break a}}b=\"\"}0<b.length&&u(f,3,b);g=U(a,c);b=new F;h=0;l=e.toString();try{h=Qa(a,l,g,b,d,f)}catch(L){if(\"Invalid country calling code\"==L.message&&N.test(l)){if(l=l.replace(N,\"\"),h=Qa(a,l,g,b,d,f),0==h)throw L;\n}else throw L;}0!=h?(e=T(h),e!=c&&(g=S(a,h,e))):(Ka(e),b.a(e.toString()),null!=c?(h=y(g,10),u(f,1,h)):d&&(delete f.a[6],f.c&&delete f.c[6]));if(2>b.c.length)throw Error(\"The string supplied is too short to be a phone number\");null!=g&&(c=new F,e=new F(b.toString()),Ra(e,g,c),a=Y(a,e.toString(),g,-1),2!=a&&4!=a&&5!=a&&(b=e,d&&0<c.toString().length&&u(f,7,c.toString())));d=b.toString();a=d.length;if(2>a)throw Error(\"The string supplied is too short to be a phone number\");if(17<a)throw Error(\"The string supplied is too long to be a phone number\");\nif(1<d.length&&\"0\"==d.charAt(0)){u(f,4,!0);for(a=1;a<d.length-1&&\"0\"==d.charAt(a);)a++;1!=a&&u(f,8,a)}u(f,2,parseInt(d,10));return f}function O(a,b){return(a=\"string\"==typeof a?b.match(\"^(?:\"+a+\")$\"):b.match(a))&&a[0].length==b.length?!0:!1};m(\"intlTelInputUtils\",{});m(\"intlTelInputUtils.formatNumber\",function(a,b,c){try{var d=M.a(),e=Z(d,a,b),f=Pa(d,e);return 0==f||4==f?Ma(d,e,\"undefined\"==typeof c?0:c):a}catch(g){return a}});m(\"intlTelInputUtils.getExampleNumber\",function(a,b,c){try{var d=M.a();a:{if(Q(a)){var e=V(U(d,a),c);try{if(null!=e.a[6]){var f=t(e,6);var g=Sa(d,f,a,!1);break a}}catch(h){}}g=null}return Ma(d,g,b?2:1)}catch(h){return\"\"}});m(\"intlTelInputUtils.getExtension\",function(a,b){try{return t(Z(M.a(),a,b),3)}catch(c){return\"\"}});\nm(\"intlTelInputUtils.getNumberType\",function(a,b){try{var c=M.a();var d=Z(c,a,b),e=Oa(c,d),f=S(c,y(d,1),e);if(null==f)var g=-1;else{var h=R(d);g=W(h,f)}return g}catch(l){return-99}});\nm(\"intlTelInputUtils.getValidationError\",function(a,b){try{var c=M.a(),d=Z(c,a,b);return Pa(c,d)}catch(e){return\"Invalid country calling code\"==e.message?1:\"The string supplied did not seem to be a phone number\"==e.message?4:\"Phone number too short after IDD\"==e.message||\"The string supplied is too short to be a phone number\"==e?2:\"The string supplied is too long to be a phone number\"==e.message?3:-99}});\nm(\"intlTelInputUtils.isValidNumber\",function(a,b){try{var c=M.a(),d=Z(c,a,b);var e=Oa(c,d),f=y(d,1),g=S(c,f,e),h;if(!(h=null==g)){var l;if(l=\"001\"!=e){var z=U(c,e);if(null==z)throw Error(\"Invalid region code: \"+e);var L=y(z,10);l=f!=L}h=l}if(h)var va=!1;else{var Ta=R(d);va=-1!=W(Ta,g)}return va}catch(Ua){return!1}});m(\"intlTelInputUtils.numberFormat\",{E164:0,INTERNATIONAL:1,NATIONAL:2,RFC3966:3});\nm(\"intlTelInputUtils.numberType\",{FIXED_LINE:0,MOBILE:1,FIXED_LINE_OR_MOBILE:2,TOLL_FREE:3,PREMIUM_RATE:4,SHARED_COST:5,VOIP:6,PERSONAL_NUMBER:7,PAGER:8,UAN:9,VOICEMAIL:10,UNKNOWN:-1});m(\"intlTelInputUtils.validationError\",{IS_POSSIBLE:0,INVALID_COUNTRY_CODE:1,TOO_SHORT:2,TOO_LONG:3,NOT_A_NUMBER:4});})();\n","export const UPSERT_PERSONAL_EVENT = `\n  mutation UpsertPersonalEvent ($id: ID, $startsAt: String!, $endsAt: String!, $name: String, $allDay: Boolean, $timeZone: String) {\n    upsertPersonalEvent (id: $id, startsAt: $startsAt, endsAt: $endsAt, name: $name, allDay: $allDay, timeZone: $timeZone) {\n      result\n      errors\n      personalEvent {\n        id name startsAt endsAt allDay\n      }\n    }\n  }\n`\n\nexport const CHARGE_CARD_MUTATION = `\n  mutation($appointmentId: ID!) {\n    chargeCard(appointmentId: $appointmentId) {\n      result\n      errors\n      appointment {\n        id\n        clientPaymentStatus\n      }\n    }\n  }\n`\n\nexport const SQUARE_ADD_CARD_TO_CUSTOMER_MUTATION = `\n  mutation SquareAddCardToCustomerMutation($clientId: ID, $practiceId: ID!, $sourceId: String!, $userId: ID) {\n    squareAddCardToCustomer(clientId: $clientId, practiceId: $practiceId, sourceId: $sourceId, userId: $userId) {\n      result\n      errors\n    }\n  }\n`\n\nexport const DEFAULT_PAYMENT_METHOD_QUERY = `\n  query($clientId: ID, $userId: ID, $practiceId: ID!) {\n    defaultPaymentMethodPractice(clientId: $clientId, userId: $userId, practiceId: $practiceId) {\n      brand\n      last4\n      expMonth\n      expYear\n    }\n  }\n`\n\nexport const UPDATE_PRACTICE_DETAILS_MUTATION = `\n  mutation UpdatePracticeDetails(\n    $locationId: String,\n    $languageIds: [ID!], \n    $ageWorkWithIds: [ID!], \n    $workWithIds: [ID!], \n    $website: String, \n    $facebook: String, \n    $instagram: String, \n    $twitter: String, \n    $linkedin: String, \n    $tiktok: String,\n    $youtube: String\n  ) {\n    updatePracticeDetails(\n      locationId: $locationId,\n      languageIds: $languageIds, \n      ageWorkWithIds: $ageWorkWithIds, \n      workWithIds: $workWithIds, \n      website: $website, \n      facebook: $facebook, \n      instagram: $instagram, \n      twitter: $twitter, \n      linkedin: $linkedin, \n      tiktok: $tiktok,\n      youtube: $youtube\n    ) {\n      result\n      practice {\n        id\n        location\n        languages { id name }\n        ageWorkWiths { id name }\n        workWiths { id name }\n        website\n        facebook\n        instagram\n        twitter\n        linkedin\n        tiktok\n        youtube\n      }\n    }\n  }\n`\n"],"names":["SquarePaymentForm","cardRef","useRef","squarePayments","squareCard","setSquareCard","useContext","PaymentProviderContext","useEffect","async","card","attach","current","initializePayment","React","id","ref","PaymentProviderCardForm","practice","options","paymentProvider","PaymentElement","SETUP_INTENT_MUTATION","useStripeHook","data","setupIntent","useMutation","stripeData","elementsOptions","setupIntentSecret","clientSecret","mode","currency","PaymentProviderWrapper","appointment","user","client","children","StripeWrapper","SquareWrapper","promise","loadStripe","window","App","stripe_key","stripeAccount","stripeAccountId","practice_stripe_account","practiceId","appointmentId","userId","clientId","then","res","result","Honeybadger","error","console","Elements","stripe","PaymentProviderContextProvider","provider","createContext","squareAddCardToCustomer","SQUARE_ADD_CARD_TO_CUSTOMER_MUTATION","useStripe","elements","useElements","setSquarePayments","sp","payments","square_application_id","handleCardSavedOnProvider","useCallback","isSetupMode","setupIntentResult","message","confirmParams","redirect","return_url","location","origin","pathname","confirmSetup","token","tokenizeResult","tokenize","status","addCardResult","sourceId","errors","join","JSON","stringify","Provider","value","usePaymentProvider","honeybadger","configure","apiKey","environment","projectRoot","revision","heroku_slug_commit","enableUncaught","Photo","filestack","imgSrc","onClick","className","imgClassName","x_large","webp","type","srcSet","jpeg","large","square","medium","src","Card","styled","a","props","CancelContainer","div","BookingCard","booking","showConfirmCancel","setShowConfirmCancel","useState","fetching","useQuery","query","variables","requestPolicy","cancelAppointmentFetching","cancelAppointmentNoUser","LoadingSpinner","userAppointment","services","processingFees","feeCents","platformFeeCents","state","getStatus","timeZoneDisplay","Date","toLocaleTimeString","timeZoneName","split","CardTitle","dayjs","startsAt","format","href","instantActionToken","profilePhotos","name","map","service","key","addOn","endsAt","kind","timeZoneAbbr","amountCents","toLocaleString","style","appointmentTimeLength","address","cityState","zip","country","virtualLink","virtualInstructions","Modal","open","closeModal","size","header","DesktopH5","content","footer","HealMeSquareButton","label","loading","reload","DesktopTitle3","TransactionCard","transaction","setPractice","setService","serviceId","APPOINTMENT_FIELDS","QUERY","Container","Title","SubTitle","TabsContainer","Tab","active","BookingsContainer","UPCOMING","PAST","TRANSACTIONS","EXPIRED","Bookings","activeTab","setActiveTab","upcoming","setUpcoming","past","setPast","expired","setExpired","upcomingAppointments","pastAppointments","expiredAppointments","length","sendAmplitudeData","eventType","eventProperties","amplitude","getInstance","logEvent","InviteClientsMutation","InviteBox","ClientUpload","checkImport","inviteClients","showAlert","setShowAlert","alertContent","setAlertContent","showModal","setShowModal","launchImport","setLaunchImport","importSuccess","setImportSuccess","handleClientImport","clientsForUpload","rows","uploadedClient","email","firstName","lastName","phone","notes","clientType","invitedFrom","clients","inviteErrors","erroredClients","row_success","log","Button","CSVBoxButton","licenseKey","user_id","onImport","render","launch","Toast","visible","setVisible","VectorImg","Vector","TherapyCategoriesContainer","TherapyCategory","BrowseTherapiesContainer","TherapyCategories","categories","c","index","Therapy","encodeURIComponent","BrowseCategoriesCTA","classname","styling","useMenuOutsideAlerter","setShow","handleClickOutside","event","contains","target","document","addEventListener","removeEventListener","LocationSearchBox","locationSearchboxRef","e","preventDefault","LocationSearch","setSearchLocation","searchLocation","setLatlng","setIsVirtual","isVirtual","onLocationFocus","shouldRedirect","setValue","show","autoCompleteRef","inputRef","types","setValuesFromPlace","place","geometry","lat","lng","formatted_address","sessionStorage","setItem","Turbolinks","$","val","submit","clicked","keyCode","Geocode","fromAddress","response","results","catch","findMyLocation","geoLocation","navigator","geolocation","getCurrentPosition","position","coords","latitude","longitude","fromLatLng","formattedAddressArray","city","google","Promise","resolve","setTimeout","maps","places","Autocomplete","addListener","getPlace","addPlaceChangedListener","getItem","placeholder","onChange","onFocus","onKeyUp","ProRow","hit","photo","reviews_average","reviews_count","connectAutoComplete","SearchCategory","currentRefinement","hits","refine","setQuery","latlng","onSearchFocus","activeFilter","inputProps","search","visit","Autosuggest","suggestions","multiSection","onSuggestionsFetchRequested","onSuggestionsClearRequested","onSuggestionSelected","suggestion","pro","slug","practitionerWebsiteUrl","therapy","getSuggestionValue","renderSuggestion","Highlight","attribute","tagName","renderSectionTitle","section","getSectionSuggestions","focusInputOnSuggestionClick","SearchBar","envVars","searchClient","algoliasearch","algoliaAppId","algoliaApiKey","InstantSearch","indexName","Configure","hitsPerPage","Index","button","fullWidth","customStyling","secondary","tertiary","background","color","border","link","quaternary","padding","fontSize","fontWeight","lineHeight","warning","letterSpacing","borderRadius","text","marginTop","RoundedButton","disabled","undefined","width","CsvReader","handleFileUpload","reviewInput","upload","uploadFile","click","accept","uploadedFile","file","reader","FileReader","onload","readAsText","files","display","require","uploadClientListImage","UploadContainer","Divider","HR","InlineFlex","LinkComponent","InviteLater","ButtonWrapper","UploadWrapper","ChooseMethod","handleChoice","uploadClick","setUploadClick","Row","Confirmation","existingClients","marginBottom","row","first_name","last_name","CopyPaste","field","errorMessage","localField","setLocalField","handleChange","pointerEvents","opacity","Review","submitContacts","editContacts","ProgressBar","percentComplete","twMerge","logo","ReviewLayout","percentDone","showProgressBar","proPic","onContinue","continueDisabled","hideContinue","finalStep","skipStep","mobileOverflow","showBackButton","rest","Object","assign","history","back","BookNext","review","showToast","useToast","isAnon","setIsAnon","isAnonymous","toggleAnonReview","websiteUrl","practitioner","Typography","variant","ButtonLink","CheckBox","reviewId","toggleReviewAnon","checked","as","ReviewProvider","NiceModal","ToastProvider","GraphQLProvider","ClientInfo","setFirstName","setPhone","createClient","createdClientInfo","setCreatedClientInfo","localStorage","parse","isFormValid","trim","handleCreateClient","referralCode","reviewCreateClient","InputWithLabel","Star","filled","colorClass","StarIcon","RatingStarRow","total","stars","i","push","Confirm","showWarning","setShowWarning","confirmReview","filestackPhoto","UnderlinedLink","formatShortDate","createdAt","rating","handleConfirm","EndorsementButton","specialty","onCloseButtonClick","EndorsementPill","toString","Endorsements","endorsements","setEndorsements","addEndorsements","onSpecialtyClick","newEndorsements","specialtyId","includes","indexOf","splice","handleAddEndorsements","Array","from","reviewAddEndorsements","skills","ReviewIntro","RatingStar","setRating","hover","setHover","keywords","star","ratingValue","onMouseEnter","onMouseLeave","Rating","addRating","handleAddRating","reviewAddRating","urlParams","URLSearchParams","get","Number","TextReview","textReview","setTextReview","showVideo","setShowVideo","addTextReview","featureRequest","handleAddTextReview","reviewAddTextReview","TextArea","NewModal","showFooter","hideModal","PracticeContext","PracticeProvider","practiceServices","setPracticeServices","fetchPractice","urqlClient","toPromise","currentPractice","practiceEmail","practicePhone","formatPhone","usePractice","AddOrRetryModal","headerLabel","onSave","setLoading","defaultPaymentMethod","setDefaultPaymentMethod","paymentMethod","setPaymentMethod","DEFAULT_PAYMENT_METHOD_QUERY","pause","defaultPaymentMethodPractice","AnimatedModal","paymentProviderResult","saveDisabled","actionButtonCopy","RadioWithLabel","capitalize","brand","last4","expMonth","expYear","getDefaultPaymentMethodText","AddOrRetryButton","paymentModalOpen","setPaymentModalOpen","NotificationsFlyout","closeFlyout","notificationAppointments","reexecuteQuery","appointments","setAppointments","acceptAppointmentFetching","acceptAppointment","retryPaymentFetching","retryPayment","mutationFetching","Flyout","now","pending","failed","paymentError","overdue","hasTransaction","unprocessed","buttonText","badgeType","badgeText","url","Box","keepBorderInMobile","Badge","formattedStartsAt","Link","handleViewDetailsClick","handleRetryPayment","prev","filter","INBOX_QUERY","Inbox","showFlyout","setShowFlyout","proInbox","failedPayments","missingPayments","pendingAppointments","sort","b","badgeStyles","BellIcon","CounterBadge","ProInbox","FeatureFlagContext","FeatureFlagProvider","flags","navItems","solidIcon","CalendarIconSolid","outlineIcon","CalendarIconOutline","UserIconSolid","UserIconOutline","BanknotesIconSolid","BanknotesIconOutline","NewspaperIconSolid","NewspaperIconOutline","GlobeAltIconSolid","GlobeAltIconOutline","ChatBubbleLeftIconSolid","ChatBubbleLeftIconOutline","Cog8ToothIconSolid","Cog8ToothIconOutline","CurrencyDollarIconSolid","CurrencyDollarIconOutline","QuestionMarkCircleIconSolid","QuestionMarkCircleIconOutline","getSideNavigationItems","websitePlan","giftCardsEnabled","conferencingEnabled","navigationItems","item","child","HealMenuItem","MenuItem","UserDropdown","photoUrl","proName","proEmail","proUrl","Menu","MenuButton","Transition","Fragment","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","MenuItems","static","rel","MobileMenuHambuger","mobileMenuProps","Bars3Icon","MobileMenuFlyout","eventsEnabled","intakeFormsEnabled","customDomainEnabled","websiteBuilderEnabled","openItems","setOpenItems","itemName","ChevronUpIcon","ChevronDownIcon","PortalHeader","alt","CalendarFlyoutContext","CalendarFlyoutProvider","setEventType","useCalendarFlyout","APPOINTMENT_FIELDS_FOR_CALENDAR","APPOINTMENT_QUERY_FOR_CALENDAR","PRO_CALENDAR_QUERY","CREATE_APPOINTMENT_MUTATION","CREATE_APPOINTMENTS_MUTATION","UPDATE_APPOINTMENT_V2_MUTATION","ACCEPT_APPOINTMENT_MUTATION","DECLINE_APPOINTMENT_MUTATION","initialState","locationId","customerId","bookedFrom","bookedBy","recurringStartTimes","recurrencePattern","recurringAppointmentError","rescheduledStartsAt","rescheduledEndsAt","rescheduleRecurringSeries","appointmentErrors","initialAppointmentValues","reducer","action","payload","Error","ManualBookingContext","ManualBookingProvider","dispatch","useReducer","createRecurringAppointmentsFetching","createAppointments","updatedServices","appointmentServices","customPrice","customPrices","find","cp","priceChanged","saveCustomPrice","initialValues","setServices","setLocationId","setStartsAt","setEndsAt","setCustomerId","setClientId","setClient","setRecurringStartTimes","setRecurrencePattern","setRecurringAppointmentError","resetBookingState","setAppointment","setRescheduledStartsAt","setRescheduledEndsAt","setRescheduleRecurringSeries","setAppointmentErrors","createRecurringAppointments","onSuccess","newClient","duration","diff","updateEndsAtWithServicesDuration","servicesObj","totalTimeLength","timeLength","reduce","sum","add","toISOString","useManualBooking","REMOVE_CLIENT_FROM_BOOKABLE_EVENT_MUTATION","PROCESS_REGISTRATION_PAYMENT_MUTATION","defaultNewEvent","set","allDay","timeZone","bookableEventTypeId","BookableEventsContext","BookableEventsProvider","bookableEvents","bookableEventsProp","previousLocations","setBookableEvents","googlePlacesLoaded","setGooglePlacesLoaded","bookableEvent","setBookableEvent","deleteModalVisible","setDeleteModalVisible","rescheduleModalVisible","setRescheduleModalVisible","bookableEventTab","setBookableEventTab","upsertMutationFetching","upsertBookableEvent","photoMutationFetching","updatePhoto","deleteMutationFetching","deleteBookableEvent","removePhotoMutationFetching","removePhoto","getDefaultNewEvent","Intl","DateTimeFormat","resolvedOptions","importLibrary","initPlaces","updateBookableEvents","newEvent","prevEvents","newEvents","findIndex","s","resetBookableEventState","useBookableEvents","formatEventTitle","appt","daysjs","handleDayHeaderContent","args","dayString","date","toDateString","dayName","dayNumber","renderEventContent","eventInfo","extendedProps","timeText","title","description","ProCalendarContext","TIME_GRID_TYPE_MAP","timeGridDay","timeGridWeek","dayGridMonth","ProCalendarProvider","calendarData","setCalendarData","isLoading","setIsLoading","calendarEvents","setCalendarEvents","isFlyoutVisible","setIsFlyoutVisible","selectedDateTime","setSelectedDateTime","selectedPersonalEvent","setSelectedPersonalEvent","selectedExternalEvent","setSelectedExternalEvent","currentViewDate","setCurrentViewDate","showRescheduleConfirm","setShowRescheduleConfirm","draggedEvent","setDraggedEvent","navigate","useNavigate","setSelectedAppointment","upsertPersonalEvent","UPSERT_PERSONAL_EVENT","hash","param","substring","handleCreateAppointmentButtonClick","tokenAppointment","mergeUniqueById","existingItems","newItems","self","fetchCalendarData","to","prevData","practiceAppointments","practiceBookableEvents","personalEvents","fetchCalendarEvents","startDate","endDate","processedEvents","processCalendarEvents","events","currentTimeZone","startsWith","processPersonalEvent","processAllDayEvent","start","end","currentWeekStart","startOf","subtract","currentWeekEnd","endOf","currentUser","addTemporaryEvent","backgroundColor","borderColor","handlePersonalEventReschedule","personalEventId","handleAppointmentReschedule","findAppointment","findPersonalEvent","findBookableEvent","currentPath","replace","bookingAvailability","availableSlots","firstAvailableTimeSlot","getFirstAvailableTimeSlot","nextHour","handleEventClick","personalEvent","foundBookableEvent","handleDateClick","dateInfo","clickedDate","handleDragReschedule","eventDropInfo","handleCreatePersonalEvent","classNames","handleDeletePersonalEvent","handleAppointmentChange","newAppointment","handleRecurringAppointmentsChange","newAppointments","handleAppointmentCancellation","appointmentIds","handleRescheduleSuccess","oldAppointmentId","updatedAppointment","newCalendarEvent","hideRescheduleConfirm","revert","handleDatesSet","timeGridType","view","startStr","endStr","clickedTime","handleBookableEventChange","textColor","editable","handleDeleteBookableEvent","ConfirmRescheduleModal","showReschedule","onRescheduleSuccess","practitionerNote","setPractitionerNote","updateAppointmentV2","clientName","formatShortDateTime","initialEventType","instructions","amount","cents","capacity","BookableEventTypesContext","BookableEventTypesProvider","bookableEventTypes","bookableEventTypesProp","bookableEventType","setBookableEventType","setBookableEventTypes","fetchedEventTypesData","fetchingEventTypes","upsertBookableEventType","deleteBookableEventType","updateBookableEventTypes","newEventType","prevEventTypes","newEventTypes","resetEventType","editEventType","addEventType","saveEventType","removeBookableEventTypeFromList","useBookableEventTypes","BookableEventForm","onBookableEventChanged","onDeleteBookableEvent","editingExistingEvent","selectedEventType","et","saveEnabled","spinnerClassName","Label","htmlFor","Select","handleEventTypeChange","eventTypeId","toFixed","ArrowTopRightOnSquareIcon","tz","DatePicker","selected","TimePicker","valueFormat","showFifteenIncrements","hour","minute","toDate","supportedValuesOf","actionButtonType","DELETE_CLIENT_MUTATION","DeleteClientModal","deleteModalId","deleteClient","editClient","EDIT_CLIENT_MUTATION","EditClientModal","modalId","setError","clientInput","setClientInput","addressTwo","postalCode","fullHeightInMobile","Input","defaultValue","input","labelClassName","isClientValid","fields","CustomOption","setClientToEdit","restProps","contactInfo","preventBooking","__isNew__","components","Option","ClientSelector","defaultClient","onSelect","clientList","setClientList","setNewClient","selectedClient","setSelectedClient","listValue","setListValue","clientToEdit","isLoadingDetails","setIsLoadingDetails","clientPhone","replaceState","required","Creatable","formatCreateLabel","inputValue","DropdownIndicator","isDisabled","clientFromSelect","fullClient","clientDetailsData","enrichedClient","finally","menuPortalTarget","body","formatOptionLabel","option","context","dangerouslySetInnerHTML","__html","styles","selectStyling","onCreateOption","Banner","BOOKABLE_EVENT_REGISTRANTS_QUERY","BOOKABLE_EVENT_REGISTRATION_QUERY","BookableEventPaymentModal","registration","onPaymentSuccess","processingPayment","setProcessingPayment","setPaymentError","paymentMethodData","fetchingPaymentMethod","processPayment","hasSavedCard","handlePaymentMethodChange","cancelButtonCopy","cancelButtonType","registrationId","processRegistrationPayment","err","ClientDetailsFlyout","bookableEventId","onClientRemoved","removeError","setRemoveError","removeFetching","removeClientFromEvent","showRemoveConfirmation","setShowRemoveConfirmation","showPaymentModal","setShowPaymentModal","registrationData","registrationFetching","registrationError","bookableEventRegistration","formatCurrency","canProcessPayment","paymentStatus","getPaymentStatusDisplay","toLocaleDateString","discount","code","hasPaymentProvider","handleShowPaymentModal","CreditCardIcon","handleShowRemoveConfirmation","handleCancelRemove","removeClientFromBookableEvent","handlePaymentSuccess","BookableEventRegistrants","showAddClientModal","setShowAddClientModal","clientDetailsFlyoutVisible","setClientDetailsFlyoutVisible","atCapacity","useMemo","handleAddClient","IconButton","Icon","PencilIcon","handleEditClient","tooltip","AddClientToEvent","handleAddClientSuccess","onCancel","handleClientRemoved","addClientToEvent","zIndex","clientParams","addClientToBookableEvent","CalendarEvent","calendarEvent","calendarName","about","PAYMENT_STATUS_OPTIONS","FREE","PAID","PAST_DUE","FAILED","CARD_NEEDED","CARD_NEEDED_PAST_DUE","PENDING","CANCELLED","UNPAID","paymentProviderName","isPaidOnProvider","paymentIntentId","CREATE_ADJUSTMENT","AdjustmentModal","showAdjustmentModal","note","setNote","adjustmentDate","setAdjustmentDate","adjustmentAmount","setAdjustmentAmount","fullTotal","addAdjustment","overflowVisible","adjustedAt","createAdjustment","newAdjustment","adjustment","updatedAdjustments","adjustments","adj","CurrencyInput","formatPrice","handleAmountChange","AppointmentAdjustments","setShowAdjustmentModal","showRemoveAdjustmentModal","setShowRemoveAdjustmentModal","setAdjustment","isStripePayment","removeAdjustment","formatDate","XMarkIcon","adjustmentId","AppointmentActions","onDecline","removeAppointmentFromCalendar","onAccept","onAppointmentChanged","createManualAppointment","editManualAppointment","onRecurringAppointmentsChanged","setShowPackageConfirmModal","setShowPastAppointmentModal","setPendingAction","packageData","openPackages","p","package","formatClientPhonePlusOne","isCreatingNewPackage","executeSave","declineAppointment","handleSave","validServices","every","isBefore","getTimeFromDateAndTime","time","parseInt","EditAppointmentDateTime","startTime","endTime","isValid","startDateTime","endDateTime","newEndDateTime","startAt","InputWrapper","defaultMaskOptions","prefix","suffix","includeThousandsSeparator","thousandsSeparatorSymbol","allowDecimal","decimalSymbol","decimalLimit","integerLimit","allowNegative","allowLeadingZeroes","currencyMask","createNumberMask","MaskedInput","BASE_INPUT_CLASSNAMES","mask","seriesEndOptions","getDateInNMonths","n","year","getFullYear","month","getMonth","day","getDate","oneMonthLater","ordinals","getDayOfWeekAndDayInMonth","dateObj","dayOfWeek","weekday","toUpperCase","dayInMonth","weekOfMonth","Math","ceil","RecurrenceSelect","dayOfWeekWithOrdinal","getDayOfWeekAndDayInMonthOrdinal","currentServiceOpenPackage","openPackage","isNewPackage","defaultFrequency","recurrenceFrequency","maxOccurrences","numberOfSessions","sessionsRemaining","min","numberOfOccurrenceOptions","fill","_","getNumberOfSessions","recurrenceCount","removedRecurringTimes","frequency","setFrequency","seriesEnd","setSeriesEnd","recurrenceUntil","numberOfOccurrences","setNumberOfOccurrences","endsOnDate","setEndsOnDate","recurringTimes","setRecurringTimes","customRecurrence","setCustomRecurrence","repeatEveryValue","repeatEveryUnit","repeatOn","SU","MO","TU","WE","TH","FR","SA","handleCustomRecurrenceChange","prevState","newNumberOfSessions","conflictsCount","recurringTime","conflicts","pattern","getPattern","customPattern","daysActive","entries","isChecked","fetchRecurringTimes","networkOnlyUrqlClient","shouldBook","updateState","lastRecurringTime","nonConflictingLength","newRecurringTimes","newRepeatOn","handleCustomDayChange","setHours","hasConflicts","InformationCircleIcon","HealMeTooltip","conflict","timeRange","nextTime","pop","finalTime","getServiceLabel","variation","EditAppointmentService","isServicesEditable","serviceOptions","flatMap","variations","serviceOptionsWithoutPackages","serviceOptionsToUse","regularServiceOptions","addOnServiceOptions","groupedOptions","formatGroupLabel","CustomOptionComponent","innerProps","totalPrice","addServiceDisabled","isBookingOpenPackage","pkg","ReactSelect","variationId","handleServiceSelect","fullService","selectedVariation","originalPrice","updatedServicesAfterPriceChange","handlePriceChange","newDisplayPrice","newAmountCents","unformatPrice","currentService","clientCustomPrice","TrashIcon","handleSaveCustomPriceChange","some","tipAmountCents","discountCodeRedemptions","recurringBookingsEnabled","LocationSelect","locations","virtualMeetingLinkWithFallback","singleLine","VideoCameraIcon","AppointmentDetails","resendProAppointmentConfirmation","resendProAppointmentConfirmationHandler","sendTo","AppointmentReview","CopyLinkButton","reviewLink","copyToClipboard","AppointmentStatus","markPaid","undoMarkPaid","selectedPaymentOption","setSelectedPaymentOption","otherPaymentOption","setOtherPaymentOption","appointmentCopy","setAppointmentCopy","retryingPayment","setRetryingPayment","hasPaymentMethod","canShowWarning","missingPaymentMethod","overduePayment","unprocessedPayment","failedPayment","isPackage","packageSessionNumber","markAsPaid","paidBy","ClientNotes","setText","refetchQuery","addNoteFetching","addNote","clientNote","EditableValue","replaceAll","titleClassName","truncateLength","onOpened","updateStateOnClientSelect","selectedService","serviceObj","buildServiceObj","ChevronRightIcon","clientNotesEnabled","lastBookedService","ConfirmPackageModal","showPackageConfirmModal","__typename","cardOnFile","ConfirmModals","showCancelModal","showPastAppointmentModal","onCancelSuccess","hideRescheduleModal","hideCancelModal","hidePackageConfirmModal","hidePastAppointmentModal","onPackageConfirm","onPastAppointmentConfirm","cancelRecurringSeries","setCancelRecurringSeries","serviceAmount","ErrorBanner","clientEmail","ManualPaymentInvoiceSection","showInvoiceModal","setShowInvoiceModal","setSendTo","sendInvoice","sendInvoiceHandler","sendClientInvoiceMutation","ClientEventForm","onAppointmentCancelled","setShowReschedule","setShowCancelModal","pendingAction","createFetching","createAppointment","updateV2Fetching","cancelFetching","cancelAppointment","acceptFetching","declineFetching","practiceData","includePrivate","includeAddOns","resetDefaultValues","handleErrors","successCallback","proCreateAppointment","showManualPaymentButton","handleCancelSuccess","cancelledAppointmentIds","handlePackageConfirm","handlePastAppointmentConfirm","DELETE_PERSONAL_EVENT","combineDateAndTime","tempDate","PersonalEventForm","onCreate","onDelete","setName","setStartDate","setEndDate","setStartTime","setEndTime","setAllDay","setErrors","deletePersonalEvent","newStartDate","newEndDate","getHours","slice","minDate","AppointmentFlyout","selectedCalendarEvent","onCreatePersonal","onDeletePersonal","showRadioButtons","sidebarHeader","handleCloseFlyout","bookableEventsEnabled","ToggleButtonGroup","CalendarComponent","isMobile","setIsMobile","innerWidth","loadingBarRef","handleResize","continuousStart","complete","LoadingBar","height","FullCalendar","plugins","timeGridPlugin","dayGridPlugin","interactionPlugin","initialView","headerToolbar","left","center","right","customButtons","datesSet","eventContent","eventClick","dateClick","eventDrop","eventResize","views","titleFormat","dayHeaderContent","slotDuration","slotLabelInterval","nowIndicator","contentHeight","expandRows","slotMinTime","scrollTime","AcceptTermsModal","showTermsModal","ProCalendar","featureFlags","DefaultProvider","SendIntakeFormButton","intakeLastSentAt","sendIntakeForm","sentForm","setSentForm","fromNow","IntakeFormSection","hasIntakeForm","intakeFormSubmitted","AddCreditCardModal","AppointmentSummaryRow","hideDivider","startsAtDate","shortSingleLine","PAST_APPOINTMENTS_QUERY","AppointmentHistory","limit","pastAppointment","isLastItem","UPCOMING_APPOINTMENTS_QUERY","UpcomingAppointments","upcomingAppointment","ClientFlyout","creditCardModalOpen","setCreditCardModalOpen","showData","initialClientInput","CreateClientModal","close","setErrorMessage","createClientResult","validEmail","invitedClient","ClientsTable","showClientDetail","setShowClientDetail","clientToDetail","setClientToDetail","setEditClient","columns","accessor","Header","Cell","cell","original","fieldSeparator","quoteStrings","decimalSeparator","showLabels","useTextFile","useBom","filename","headers","refreshScreen","exportToCSV","csvExporter","ExportToCsv","exportable","Email","Phone","lastAppointmentDate","generateCsv","buttonStyle","buttonSize","floatingInMobile","HealMeTable","searchType","rowClick","openToEdit","refreshClient","clientDeleted","clientAdded","appStore","googlePlaystore","iphone13","mobileAppStore","mobileConsumerIphone","consumerIphone","mobileIphone13","mobileGooglePlaystore","Wrapper","TextWrapper","Subtitle","SubHeader","Helper","HelperLink","IconWrapper","Logo","ImageWrapper","createUrqlClient","PaymentSettingsFlyout","hasOffline","communicationSettings","updatePaymentSettings","settings","setSettings","originalSettings","setOriginalSettings","handleUpdate","newValue","update","prevSettings","settingsChanged","handleSettingsUpdate","timeout","requireClientCcToBook","chargeClientCcAtBooking","paymentPastDueEmailEnabled","commIntervals","paymentPastDueEmailMinutes","paymentPastDueTextEnabled","paymentPastDueTextMinutes","dateRangeOptions","stateOptions","limitOptions","TableHeader","dateFilter","stateFilter","handleFilter","totalCount","showPagination","showSearch","PaymentsTable","appointmentFlyoutVisible","setAppointmentFlyoutVisible","showSettings","setShowSettings","filteredPayments","setFilteredPayments","setDateFilter","setStateFilter","setLimit","page","setPage","searchTerm","setSearchTerm","offset","seenPackages","Set","filteredAppointments","packageId","has","consolidatePackages","dateSelection","stateSelection","limitSelection","textColorClass","showAppointment","obj","selectedAppointment","fetchAppointment","genericCallback","isStripeApproved","totalCollected","totalOutstanding","Service","Location","Amount","Status","requireCcEnabled","hasPagination","pastAppointmentsCount","rowData","searchPlaceholder","offlinePaymentMethod","PaymentDirectory","ProfilePhoneNumber","practitionerId","phoneNumberHref","setPhoneNumberHref","formattedPhoneNumber","setFormattedPhoneNumber","setIsDisabled","viewPhone","phoneNumber","dataLayer","event_category","event_label","InputField","autoComplete","clsx","forwardRef","EnterPhoneWrapper","NavigationItem","activeHref","badgeCount","hasChildren","hasChildrenActive","isOpen","setIsOpen","isActive","icon","textDecoration","NavigationItemChild","isLast","SideNavigationComponent","completionCount","verificationCount","googleConnected","cronofyConnected","showNotice","setShowNotice","cronofyModalVisible","setCronofyModalVisible","profileBadgeCount","items","handleDismiss","hideCancelButton","BookableEventCard","BookableEventsFlyout","BookableEventsPage","defaultTimeZone","Breadcrumbs","links","activePage","ListBox","labelClassNames","buttonHint","Listbox","BASE_LABEL_CLASSNAMES","Options","DROPDOWN_CLASSNAMES","DROPDOWN_OPTION_CLASSNAMES","ClientPageView","path","clientProp","selectItems","TabNavLink","fullAddress","Boolean","prevClient","DETACH_PAYMENT_METHOD_PRACTICE_MUTATION","ClientPaymentMethod","setShowDeleteModal","PaymentMethods","showDeleteModal","detachPaymentMethodPractice","filteredClients","latestClients","forEach","values","getFilteredClients","EmptyStateBox","ManageCreditCard","detachingPaymentMethod","Billing","IntakeForm","rawJson","intakeForm","parsedJson","isArray","subKey","subValue","addNoteToClient","AppointmentNotes","openAppointmentToken","editing","setEditing","focus","appointmentNoteText","appointmentNote","noteType","sanitize","ClientChronology","setOpenAppointmentToken","Overview","IntakeFormPage","uniqueId","theme","alreadyCompleted","redirectUrl","countdown","setCountdown","saveIntakeFormResponse","timer","clearTimeout","survey","Model","applyTheme","surveyComplete","formData","onComplete","Survey","model","questionTypes","UPSERT_INTAKE_FORM_MUTATION","UPSERT_INTAKE_FORM_THEME_MUTATION","IntakeForms","formJson","showLogicTab","showJSONEditorTab","showThemeTab","creator","SurveyCreator","whiteList","onShowingProperty","constructor","canShow","property","isAutoSave","showState","toolbox","forceCompact","saveSurveyFunc","saveNo","callback","mutation","saveThemeFunc","SurveyCreatorComponent","InfoParagraph","SurveyCreatorCore","getLocale","ed","surveyTypeName","PaypalPaymentButton","tipOnly","fundingSource","onError","createOrder","capturePayment","createOrderCallback","createPaypalOrder","orderId","PayPalButtons","forceReRender","onApprove","orderID","capturePaypalPayment","layout","shape","PAYMENT_METHODS","PAYMENT_METHOD_DESCRIPTIONS","AddPaymentModal","onPaypalSuccess","tipOption","setTipOption","tipValue","setTipValue","useAppointment","browserInfo","setBrowserInfo","userAgent","browserData","isChrome","test","isSafari","isAndroid","isIOS","isCompatibleBrowser","useBrowserInfo","customTipInputRef","acceptsTips","showPaypal","hasPaypalPaymentsEnabled","showVenmo","hasVenmoPaymentsEnabled","paypal","isFundingEligible","isVenmoIncompatible","addTipToAppointment","chargeTipOnly","TIPPING_OPTIONS","scrollIntoView","behavior","block","showErrorAndClose","tipAmount","stringPriceToInteger","autoFocus","appointmentResponse","AddPaymentButton","modalHeaderLabel","modalActionButtonCopy","hasPaypalAccount","PayPalScriptProvider","paypal_client_id","merchantId","paypal_merchant_id","dataPartnerAttributionId","paypal_partner_attribution_id","amountCurrency","intent","enableFunding","CancelAppointmentButton","cancelButtonLoading","setCancelButtonLoading","confirmCancelModal","useModal","ConfirmCancelModal","hide","OfflinePaymentMethods","acceptsCash","acceptsOfflineCreditCard","acceptsPaypal","acceptsVenmo","acceptsZelle","PaymentStatusBox","clientPaymentStatus","defaultPaymentMethodData","statusMessage","Paid","Failed","Pending","PriceRow","PageContent","appointmentData","setContextAppointment","alertVisible","setAlertVisible","alertWarning","setAlertWarning","buttonLoading","setButtonLoading","ianaTimeZone","guess","appointmentIsPast","shouldPayNow","showAddCardButton","showAddTipButton","titleStatus","subTitle","formattedTip","formattedTotal","formattedPhone","isPhoneCall","virtualType","chargeCard","CHARGE_CARD_MUTATION","onCreditCardSave","tip","chargeAndAlert","defaultPhotoUrl","locationName","utc","timezone","eventRegistration","finalAmountCents","eventIsPast","isAfter","locationDisplay","eventAmount","discountAmount","finalAmount","ProfileStatusContext","ProfileStatusProvider","profileStatusData","setProfileStatusData","syncProfileStatus","useProfileStatus","ProfileEditProvider","Details","userState","setUserState","lastSavedUserValue","setLastSavedUserValue","openField","setOpenField","updatePersonalSettings","password","passwordConfirmation","fromEntries","v","fieldName","gender","customGender","dob","editButtonCopy","GiftCardForm","giftCard","setFormData","public","step","round","handleSubmit","validate","newErrors","isNaN","parseFloat","keys","GiftCardTemplates","giftCardTemplates","giftCardTemplatesProp","setGiftCardTemplates","setView","showNewForm","setShowNewForm","editingTemplate","setEditingTemplate","upsertGiftCardTemplate","savedTemplate","giftCardTemplate","templates","t","template","DisplayAvailableTimes","locationOrService","ORDERED_DAYS","availableTimesForDay","availableTimes","enabled","toLowerCase","AvailableTimes","updateAvailableTimes","newState","newTimes","PlacesAutocomplete","validationError","VALIDATION_ERROR_INPUT_CLASSNAMES","ValidationError","LocationPlacesSelect","setLocation","process","onPlaceSelected","newLocation","neighborhood","cityGeocoded","stateProvince","stateAbbreviation","countryCode","placeId","fullStreetAddress","address_components","long_name","short_name","place_id","stripUSAFromString","SELECT_OPTIONS","HomeLocationFields","validationErrors","travelDistance","defaultOption","OfficeLocationFields","secondaryAddress","hideAddress","TIMEZONE_OPTIONS","group","timezones","formatTimezoneOption","timeString","formattedLabel","currentTime","VirtualLocationFields","zoomActive","conferencingServices","timeUpdate","setTimeUpdate","interval","setInterval","clearInterval","timezoneOptions","provided","justifyContent","explanatorySubtext","LocationFlyout","setLocations","formState","setFormState","setValidationErrors","upsertLocationFetching","upsertLocation","disableLocationFetching","disableLocation","enableLocationFetching","enableLocation","deleteLocationFetching","deleteLocation","editingExistingLocation","lastActiveLocation","l","handleLocationTypeChange","updateLocationsState","locationsCopy","onDisable","onlyLocationForService","onEnable","formatAvailableTimes","disabledTooltipMessage","Locations","defaultAvailableTimes","newLocationDefaults","locationsState","setLocationsState","flyoutVisible","setFlyoutVisible","addNewLocation","ProfilePageEmptyStateBox","onButtonClick","DropdownButton","LocationInput","setInputValue","comboboxRef","placesService","placePredictions","getPlacePredictions","isPlacePredictionsLoading","usePlacesService","debounce","Combobox","getDetails","newMapCenter","CustomEvent","detail","dispatchEvent","ComboboxInput","evt","ComboboxButton","MapPinIcon","ComboboxOptions","ComboboxOption","RegExp","match","PhotoUpload","onUploadDone","uploadPhoto","handle","filesUploaded","updateBookableEventTypePhoto","FilePicker","transformations","onPhotoDelete","removeBookableEventTypePhoto","BookableEventTypeForm","newAmount","newKind","BookableEventTypeFlyout","refetchEventTypes","setFetching","editingExistingEventType","confirmLabel","confirmType","EventTypeRow","onEdit","BookableEventTypesTable","ServiceSelector","selectedServiceIds","isMulti","DiscountCodeFlyout","setDiscountCodes","editingCode","setEditingCode","defaultDiscountCode","upsertDiscountCode","percent","expiresAt","maxRedemptions","combinationLimit","hasExpiration","hasMaxRedemptions","applyToSpecificServices","serviceIds","newCode","discountCode","codes","max","floor","onKeyDown","Toggle","newIds","DiscountCodesTable","discountCodes","discountCodesProp","discountCodesFlyoutVisible","setDiscountCodesFlyoutVisible","deleteDiscountCode","DocumentDuplicateIcon","clipboard","writeText","redemptionCount","confirm","handleDelete","hasDuplicates","array","ServiceFlyout","allServices","addOns","setAddOns","activeLocations","showToggle","upsertService","removeMutationFetching","removeService","editingExistingService","lastActiveService","allVariations","hasMultipleLocationsInSameCity","uniqBy","updateServices","newService","newServices","updateServicePhoto","smallWebpUrl","stripHTMLTags","variationsArray","locationIds","allowedServiceIds","removeServicePhoto","QuillEditor","prevService","CloseButton","otherVariations","priceExists","durationExists","newVariations","newVariation","prevErrors","uuidv4","availableTimesEnabled","isEmpty","QuestionMarkCircleIcon","ServiceCard","servicesPagesEnabled","serviceUrl","tabToHashMap","Coupons","hashToTabMap","addons","coupons","Services","servicesProp","discountCodesEnabled","newServiceDefaults","newPackageDefaults","newAddOnDefaults","showToggleInFlyout","setShowToggleInFlyout","editingDiscountCode","setEditingDiscountCode","reorderServices","setEventTypeFlyoutVisible","updateView","newView","handleHashChange","tabName","addNewService","addNewAddOn","editService","addNewDiscountCode","addNewEventType","unsortableServices","sortableServices","dropDownItems","addNewPackage","ReactSortable","list","setList","newPositions","concat","servicesArray","EllipsisVerticalIcon","NAV_ITEMS","SELECT_ITEMS","ProCommunicationSettingsView","CommunicationSettings","updateCommunicationSettings","appointmentReminderEmailEnabled","appointmentEmailReminderMinutes","appointmentReminderTextEnabled","appointmentTextReminderMinutes","VariableDivider","VariableRow","exampleValue","handleCopy","CommunicationTemplates","emailTemplates","defaultEmailContent","originalEmailTemplates","defaultEmailTemplate","customEmailTemplate","customContent","defaultContent","allowedVariables","currentEmailTemplates","setCurrentEmailTemplates","handleEmailTemplateUpdate","emailName","prevEmailTemplates","emailTemplate","updatedEmailTemplates","emailTemplatesChanged","confirmationEmail","reminderEmail","handleCancel","ConferencingSettings","zoom","deactivateVideoConferencing","showDeactivateModal","setShowDeactivateModal","connected","erroredAt","ExclamationCircleIcon","accountName","accountEmail","DISCONNECT_PAYPAL_MUTATION","gql","UPDATE_PAYPAL_SETTINGS_MUTATION","CHECK_PAYPAL_SELLER_STATUS","PaypalSettingsComponent","paypalInfo","paypalConnected","setPaypalConnected","showDisconnectModal","setShowDisconnectModal","paypalActive","setPaypalActive","venmoActive","setVenmoActive","sellerStatus","setSellerStatus","disconnectPaypal","updatePaypalSettings","fetchingCheckStatus","checkStatus","handleUpdateSettings","newPaypalActive","newVenmoActive","checkSellerStatus","checkPaypalSellerStatus","isOnboardingComplete","paymentsReceivable","primaryEmailConfirmed","handleDisconnect","disconnectPaypalAccount","SquareSettings","squareInfo","displayName","squareConnected","StripeSettings","stripeInfo","connectionError","requirementsDue","requirementsPastDue","operational","bufferIntervals","leadTimes","startTimeIncrements","BookingSettings","bookingSettings","cancellationPolicyEnabled","updateBookingSettings","instantClientApproval","appointmentBufferTime","appointmentLeadTime","startTimeIncrement","maxLength","cancellationPolicy","calendarImages","apple","live_connect","CalIcon","iconClassName","CalendarIcon","ReadCalendarSettings","selectedProvider","newProvider","setNewProvider","updateCalendars","providerName","profileName","calendars","cal","prevProvider","calendar","updateCronofyCalendars","WriteCalendarSettings","connectedCalendars","writeCalendar","setWriteCalendar","writeProvider","setWriteProvider","calendarId","updateCronofyClient","writeCalendarId","CalendarContainer","copy","ConfigurationButton","fallbackCopy","CalendarSettings","authorizationUrl","writeCal","setConnectedCalendars","isFlyoutOpen","setIsFlyoutOpen","providerId","setProviderId","profileToDelete","setProfileToDelete","feedModalVisible","setFeedModalVisible","feedUrl","setFeedUrl","feedSaving","setFeedSaving","removeCronofyProfile","createCronofyFeed","feed","profileId","prevCalendars","newCalendars","MainSettings","calendarConnected","showSubscriptionLink","ArrowPathRoundedSquareIcon","ChatBubbleLeftEllipsisIcon","CalendarDaysIcon","NewspaperIcon","PaymentIntegrations","stripeConnected","stripeDisplayName","squareDisplayName","paypalEnabled","changePaymentProviderModalVisible","setChangePaymentProviderModalVisible","newPaymentProvider","setNewPaymentProvider","updatePaymentProvider","PaymentProviderCard","imageUrl","manageUrl","connectUrl","noticeModalVisible","setNoticeModalVisible","hasAnyConnected","isCurrentProvider","sortedProviders","handleUpdatePaymentProvider","currencyOptions","PaymentSettings","acceptsCreditCard","currencyEnabled","updateOfflineOptions","updateCurrency","updateTippingOption","editableCurrency","setEditableCurrency","editableAcceptsCash","setEditableAcceptsCash","editableAcceptsPaypal","setEditableAcceptsPaypal","editableAcceptsZelle","setEditableAcceptsZelle","editableAcceptsVenmo","setEditableAcceptsVenmo","editableAcceptsCreditCard","setEditableAcceptsCreditCard","editableAcceptsTips","setEditableAcceptsTips","paymentMethods","setState","CurrencyDollarIcon","updatePracticeCurrency","method","methodId","acc","updatePracticeOfflineOptions","SparklesIcon","updatePracticeAcceptsTips","PersonalInformationPractice","allLanguages","allWorkWiths","allAgeWorkWiths","userIsWebsitePlan","practiceDetails","setPracticeDetails","lastSavedDetailsValues","setLastSavedDetailsValues","updatePracticeDetails","UPDATE_PRACTICE_DETAILS_MUTATION","languageIds","languages","ageWorkWithIds","ageWorkWiths","workWithIds","workWiths","w","website","facebook","instagram","twitter","linkedin","tiktok","youtube","setVariables","socialsValue","hint","language","ageWorkWith","workWith","LinkIcon","UPDATE_INFO_MUTATION","PersonalInformationUser","CredentialsModal","setProCredentials","selectedCredentialType","setSelectedCredentialType","selectedCredential","setSelectedCredential","selectedIssuer","setSelectedIssuer","licenseNumber","setLicenseNumber","issuingState","setIssuingState","addCredential","handleCredentialChange","onMutationComplete","createProCredential","credentials","proCredential","hideSaveButton","credentialId","issuerId","stateIssued","AlgoliaSearchBox","filters","objectID","FilePickerDropArea","filestackDocument","filestackDocumentName","CredentialRow","deleteCredential","fallbackFilename","credential","DocumentTextIcon","Credentials","proCredentials","proCredentialsProp","credentialToDelete","setCredentialToDelete","removeCredential","reorderCredentials","approvedCredentials","pendingCredentials","deleteCredentialModalId","newCredentials","newOrder","credentialArray","stripePromise","Step","number","Tag","CheckIcon","ProfileChecklist","modalShown","setModalShown","profilePublished","notVerified","showCompletedModal","steps","completionSteps","verificationSteps","indexOfCurrentStep","completed","progressPercentage","startVerification","verificationSession","verifyIdentity","practitionerFirstName","profileUrl","ProfileEditView","profileVerified","Audience","details","allShortLinks","detailsValues","setDetailsValues","photoUrlValue","setPhotoUrlValue","infoFetching","updateInfo","photoFetching","updateUserPhoto","headline","shortLink","profileDetails","PlusIcon","ShortUrlInput","EndorsementsFlyout","specialtiesByLetter","setSkills","searchValue","setSearchValue","selectedSpecialties","setSelectedSpecialties","skill","updateSkills","useSearchBox","useHits","specialties","newSpecialties","SearchInput","containerClassName","newQuery","letter","skillsState","setSkillsState","deleteSkills","moveSkills","newSkills","skillArray","draggable","skillId","copySkills","removeSkill","Photos","galleryImages","photos","setPhotos","removeImageFetching","removeGalleryImage","addImagesFetching","addGalleryImage","reorderGalleryImages","handles","maxFiles","photosArray","galleryId","servicesState","setServicesState","freeServices","paidServices","ProImportReviews","importReview","reviewDefaults","newReview","setNewReview","proImportReview","today","maxDate","ProReviewRequestsTable","clientRequests","requests","setRequests","reviewToDismiss","setReviewToDismiss","dismissReviewRequest","resendProReviewRequest","requestColumns","reviewRequireConfirmation","dateA","reviewRequestedAt","request","dateFormat","REVIEW_REPLY_MUTATION","ReviewFlyout","showReplyEdit","setShowReplyEdit","reviewReply","setReviewReply","addEditReply","handleReviewReply","replied","addEditReviewReply","unverifiedName","endorsedSkills","clientEdited","ratingOptions","ratingFilter","ProReviewsTable","reviews","allReviews","flyoutKey","setFlyoutKey","showReviewDetail","setShowReviewDetail","selectedReview","setSelectedReview","filteredReviews","setFilteredReviews","setRatingFilter","ratingSelection","combinedArray","filterReviewsByDate","filterByRating","reviewColumns","clientOrUser","client_name","ReviewRequestForm","existingRequests","requestReviewLink","defaultRows","setClients","sendBulkReviewRequests","handleClientChange","updatedClients","addClient","formattedClients","Reviews","importReviewsEnabled","handleTabClick","tabId","ReferralProgram","practitionerReferral","referralCreditWithdrawals","isLifer","ClipboardIcon","referralUses","referral","useDate","withdrawal","withdrawalDate","WebsiteDash","GlobeAltIcon","GENERATE_IMAGE_ALT_TEXT_MUTATION","GENERATE_SITE_METADATA_MUTATION","UPSERT_WEBSITE_METADATA_MUTATION","SeoSettings","websiteMetadata","initialWebsiteMetadata","setWebsiteMetadata","lastSavedValues","setLastSavedValues","upsertMetadata","generating","generateMetadata","generatingAlt","generateAltText","upsertWebsiteMetadata","ogSiteName","primaryModality","handleGenerate","generateSiteMetadata","newMetadata","handleGenerateAltText","generateImageAltText","customDomainConfig","isDev","isStaging","hostname","applicationId","power","dnsRecords","domain","host","ttl","applicationUrl","powerRootPathAccess","subDomain","handleCustomDomainModalStepChange","upsertCustomDomain","CustomDomainSection","customDomain","domainStatus","setDomainStatus","jwtTokenFetching","domainProviderJwtToken","deleteFetching","deleteCustomDomain","statusFeching","handleAddOrEditDomain","jwtToken","config","entri","showEntri","warn","showCustomDomainModal","domainActive","domainStatsIcon","ArrowPathIcon","domainStatsText","cleanWebsite","isValidUrl","URL","handleRefreshDomain","handlePurchaseDomain","purchaseDomain","showPurchaseDomainModal","handleDeleteDomain","WebsiteDomain","shortLinkValue","setShortLinkValue","lastSavedShortLink","setLastSavedShortLink","customDomainValue","setCustomDomainValue","updateShortLink","WebsiteSettingsComponent","isImpersonating","Event","bubbles","cancelable","setLicenseKey","InviteClients","setActive","setStep","setExistingClients","setField","handleChoiceUpdate","newVal","choice","userInput","invitationType","rowArray","validateEmail","SwitchCase","ListPracticeCTA","amplitudeData","sendAnalytics","fbq","DownloadMobileApp","isPro","contextHeader","sendText","dimension","updateDimention","innerHeight","ProMainSettings","ProCalendarSettings","ProReviews","BrowseTherapiesCTA","MobileMenu","ClientDirectory","EnterPhone","nextStep","ManageAppointmentsConsumer","AppointmentProvider","ManageEventRegistration","ClientBookings","ProCommunicationSettings","ProCommunicationSettingsProvider","ProCommunicationTemplates","SideNavigation","ClientUploadButton","ProfileEditDetails","ProfileEditCredentials","ProfileEditEndorsements","AlgoliaSearchProvider","ProfileEditPhotos","ProfileEditServices","ProfileEditLocations","ProfileEditAudience","ProPaymentSettings","StripePaymentsSettings","SquarePaymentsSettings","PaypalSettings","ProBookingSettings","PersonalSettings","ReviewClientInfo","ReviewRating","ReviewEndorsements","ReviewTextReview","ReviewBookNext","ReviewConfirm","ManagePaymentMethods","HomePage","ProProfile","ProProfileV2","SearchPage","TopNavSearchBox","BookableEvents","IntakeFormsPage","ClientOverview","ClientIntakeForm","ClientBillingPage","WebsiteBuilderPage","WebsiteContentPage","WebsiteBuilderProvider","WebsitePreviewView","ContentTab","WebsiteSettings","PortalServicesPage","PortalServicesLocations","ProReviewsCompletedPage","ProReviewsImportPage","ProReviewsPendingPage","ProReviewsRequestPage","ProReviewsEndorsementsPage","PersonalInformationPage","ProfileEditCredentialsV2","PracticeInformationPage","PractitionerLandingPage","ReferralProgramPage","CombinedInformationPage","PortalGiftCardTemplatesPage","ConferencingSettingsPage","Component","WrappedComponent","ReactOnRails","HoneybadgerErrorBoundary","CTALink","BottomCTA","bgImageClasses","currentBgImageClass","random","HeroSection","ctaButtonIsSticky","setCtaButtonIsSticky","ctaButtonLeftOffset","setCtaButtonLeftOffset","ctaButton","getElementById","stickyPoint","offsetTop","offsetLeft","handleScroll","scrollY","PractitionerJoinCTA","ReviewCard","reviewText","firstInitial","lastInitial","createdAtAgoInWords","ReviewStars","smallPhotoUrl","ReviewsSection","reviewsState","setReviewsState","numReviewsShown","shownReviews","nextReviewIndex","nextSlotIndex","startAnimation","setStartAnimation","nextReview","newShownReviews","TherapyCategoriesSection","therapyCategories","showAll","setShowAll","limitedTherapyCategories","fullTherapyCategories","category","ArrowRightIcon","initVerifyHandler","collectCancelData","canceledBy","this","initQuestionHandler","on","init","amplitude_id","includeUtm","includeReferrer","includeGclid","includeFbclid","page_name","setUserId","setUserProperties","user_kind","attr","screen","Category","serviceName","initRescheduleHandler","question","tags","is","Insurance","Ages","Languages","addClass","each","wrapper","closest","prependTo","querySelectorAll","Inputmask","alias","slider","getRgbColorFromGradient","beginColor","endColor","ratio","getGradientColor","moveSliderBullet","sliderInputElement","inputElement","bullet","parent","lines","numbers","css","html","keyup","change","define","pluginName","defaults","allowDropdown","autoHideDialCode","autoPlaceholder","customPlaceholder","dropdownContainer","excludeCountries","formatOnDisplay","geoIpLookup","hiddenInput","initialCountry","nationalMode","onlyCountries","placeholderNumberType","preferredCountries","separateDialCode","utilsScript","UP","DOWN","ENTER","ESC","PLUS","A","Z","SPACE","TAB","regionlessNanpNumbers","Plugin","element","telInput","extend","ns","isGoodBrowser","setSelectionRange","hadInitialPlaceholder","fn","windowLoaded","prototype","_init","autoCountryDeferred","Deferred","utilsScriptDeferred","selectedCountryData","_processCountryData","_generateMarkup","_setInitialState","_initListeners","_initRequests","_processAllCountries","_processCountryCodes","_processPreferredCountries","_addCountryCode","iso2","dialCode","priority","countryCodes","lowerCaseOnlyCountries","countries","allCountries","_countryNameSort","lowerCaseExcludeCountries","localeCompare","areaCodes","j","countryData","_getCountryData","parentClass","wrap","class","flagsContainer","insertBefore","selectedFlag","appendTo","selectedFlagInner","selectedDialCode","countryList","_appendListItems","countryListItems","dropdown","append","insertAfter","tmp","_getDialCode","_isRegionlessNanp","_updateFlagFromNumber","_setFlag","defaultCountry","_updateValFromNumber","_initKeyListeners","_initFocusListeners","_initDropdownListeners","_initHiddenInputListener","that","form","getNumber","hasClass","prop","_showDropdown","which","stopPropagation","_closeDropdown","loadUtils","_loadAutoCountry","autoCountry","handleAutoCountry","startedLoadingAutoCountry","intlTelInput","_triggerCountryChange","_cap","substr","one","len","_removeEmptyDialCode","charAt","numeric","_getNumeric","off","_setDropdownPosition","activeListItem","_highlightListItem","_scrollTo","_bindDropdownListeners","trigger","dropdownHeight","removeClass","outerHeight","pos","inputTop","top","windowTop","scrollTop","dropdownFitsBelow","dropdownFitsAbove","toggleClass","extraTop","_selectListItem","isOpening","queryTimer","_handleUpDownKey","_handleEnterKey","String","fromCharCode","_searchForCountry","first","next","currentCountry","_startsWith","listItem","not","intlTelInputUtils","numberFormat","INTERNATIONAL","NATIONAL","formatNumber","_beforeSetNumber","alreadySelected","inArray","isNanpAreaCode","areaCode","ignoreOnlyCountriesOption","allowFail","prevCountry","_updatePlaceholder","shouldSetPlaceholder","numberType","getExampleNumber","flagChanged","_updateDialCode","detach","middle","container","containerHeight","containerTop","containerBottom","elementHeight","elementTop","elementBottom","newScrollTop","middleOffset","heightDifference","newDialCode","hasSelectedListItem","newNumber","inputVal","prevDialCode","numericChars","isNumeric","_getFullNumber","numericVal","normalizedVal","setCountry","handleUtils","destroy","before","remove","getExtension","getNumberType","getSelectedCountryData","getValidationError","isValidNumber","setNumber","setPlaceholderNumberType","returns","arguments","deferreds","instance","instanceDeferreds","when","apply","call","getCountryData","loadedUtilsScript","ajax","dataType","cache","version","factory","calendarIndex","LocalTime","innerStr","newStr","empty","originalString","animate","fadeIn","fadeOut","overflowY","maxHeight","pass","classList","baseIndex","getElementsByClassName","scroll","unbind","siblings","transition","formatOnInit","keydown","modal","current_url","prevObject","dataset","txtArea","createElement","appendChild","select","execCommand","removeChild","innerText","resultsElement","replaceWith","refireLoad","tabsetName","tabPanels","aa","k","m","d","execScript","shift","o","f","q","ba","da","h","ea","fa","ha","ia","ja","ka","la","g","ma","r","oa","ca","na","clone","x","u","y","B","C","pa","D","E","F","G","qa","H","ra","I","sa","J","ta","ua","ctor","K","wa","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","M","xa","ya","L","N","O","P","Q","R","S","T","U","V","W","X","Y","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","lastIndexOf","Ra","exec","Sa","Ha","z","va","Ua","E164","RFC3966","FIXED_LINE","MOBILE","FIXED_LINE_OR_MOBILE","TOLL_FREE","PREMIUM_RATE","SHARED_COST","VOIP","PERSONAL_NUMBER","PAGER","UAN","VOICEMAIL","UNKNOWN","IS_POSSIBLE","INVALID_COUNTRY_CODE","TOO_SHORT","TOO_LONG","NOT_A_NUMBER"],"sourceRoot":""}