@zeniai/web-components 4.3.83-beta0ND → 4.3.83-beta1ND
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{SessionTimeoutPopup-C1vz9EZM.js → SessionTimeoutPopup-C4j8wdBe.js} +26 -23
- package/dist/SessionTimeoutPopup-C4j8wdBe.js.map +4 -0
- package/dist/{SessionTimeoutPopup-BUcO2ymH.cjs → SessionTimeoutPopup-D-KfWCwF.cjs} +10 -7
- package/dist/SessionTimeoutPopup-D-KfWCwF.cjs.map +4 -0
- package/dist/appLocale.d.ts +1 -0
- package/dist/cockpit.cjs.js +1 -1
- package/dist/cockpit.esm.js +1 -1
- package/dist/components/commentsAndNotes/AllThreadsDrawer.d.ts +5 -0
- package/dist/components/commentsAndNotes/components/CollapsibleThread.d.ts +3 -1
- package/dist/components/commentsAndNotes/utils/reportThreadRouting.d.ts +7 -0
- package/dist/{index-CtI3SgwH.cjs → index-CpUcTFnx.cjs} +2 -2
- package/dist/{index-CtI3SgwH.cjs.map → index-CpUcTFnx.cjs.map} +1 -1
- package/dist/{index-BzKtWcL1.js → index-ky65w6UR.js} +2 -2
- package/dist/{index-BzKtWcL1.js.map → index-ky65w6UR.js.map} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/strings/strings.d.ts +1 -0
- package/package.json +1 -1
- package/dist/SessionTimeoutPopup-BUcO2ymH.cjs.map +0 -4
- package/dist/SessionTimeoutPopup-C1vz9EZM.js.map +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __typeError=e=>{throw TypeError(e)},__accessCheck=(e,t,n)=>t.has(e)||__typeError("Cannot "+n),__privateGet=(e,t,n)=>(__accessCheck(e,t,"read from private field"),n?n.call(e):t.get(e)),__privateAdd=(e,t,n)=>t.has(e)?__typeError("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),__privateSet=(e,t,n,o)=>(__accessCheck(e,t,"write to private field"),o?o.call(e,n):t.set(e,n),n),__privateMethod=(e,t,n)=>(__accessCheck(e,t,"access private method"),n),__privateWrapper=(e,t,n,o)=>({set _(o){__privateSet(e,t,o,n)},get _(){return __privateGet(e,t,o)}}),_fakeWorkerId,_isWorkerDisabled,_workerPorts,_PDFWorker_instances,resolve_fn,_PDFWorker_static,mainThreadWorkerMessageHandler_get;import*as React from"react";import React__default,{Component,createElement,createContext,useContext,useState,useEffect,useRef,useCallback,isValidElement as isValidElement$1,cloneElement,Children,memo as memo$c,forwardRef,useMemo,useLayoutEffect,useReducer,useImperativeHandle,Fragment,PureComponent,createRef,Suspense,lazy,Profiler,useId as useId$1,useSyncExternalStore}from"react";import styled$2 from"@emotion/styled";import{stringToUnionStrict,updateZeniDateLocaleID,dateLocal,dateNow,isZeniSignedInUser,stringToUnion,isInfiniteRunway,hasInvestorBankerLevelAccess,isCalculatedBalanceType,SUPPORTED_TRANSACTION_LINE_ATTACHMENT_FILE_TYPES,toContentType,getYearsList,ALL_AI_CFO_CHARTS_TYPES,NEW_INTERNATIONAL_METHOD_SUBTEXT,getVendorCriteria,getDepartmentCriteria,getAmountCriteria,toUserRoleType,zeniDate,hasEmployeeLevelAccess,isAwaitingMarkAsPaid,checkIfLowBalance,getActualPaymentDate,isPaymentMethodOutsideZeni,getFormattedAddress,toSupportedFileTypeStrict,mapFileEntityToAttachment,mapFilePayloadToFile,uploadFile,defaultVendorCurrency,LOCAL_CURRENCY_INTERNATIONAL_METHOD_SUBTEXT,filterDays,holidaysFormatted,getPreviousNthWorkingDay,getNextNthWorkingDay,isHolidayToday,getInternationalSubConfigCodeKey,SWIFT_OUR_INTERNATIONAL_METHOD_SUBTEXT,isVerifiedPaymentAccountProviderStatusCode,isVerifiedStatusCode,PAYMENT_BUSINESS_DAYS,toRecurringBillFrequency,isColumnYTDSpend,toAmount,toScheduleSubTabType,getFirstControllerEmail,getFirstControllerId,hasBillPayAccess,hasAdminLevelAccess,hasReimbursementAccess,hasZeniAccountsAccess,isCardsProductEnabledOnCompany,hasChargeCardAccess,hasTreasuryAccess,hasAnyCompanyRole,isFinOpsUserRoleType,toZeniUrl,defaultCustomerCurrency,formatZeniDate,TOP_EX_TIME_PERIODS,hasChargeCardAdminLevelAccess,hasReimbursementUserAccess,DEFAULT_REFERRER_AMOUNT,dateFromYearMonthDate,toMonth,isSettingsVisible,isMyBankConnectionsTabVisible,isIntegrationsTabVisible,isCompanyDetailsTabVisible,isBusinessVerificationTabVisible,isBillingTabVisible,isApprovalRulesTabVisible,isAccountingTabVisible,hasBillPayAccessible,hasReimbursementAccessible,hasChargeCardAccessible,isTenantBookkeepingEnabled,isTenantCardsOnly,isTenantBankingOnly,addPeriod,getStartOfAndEndOfTimeframeForFY,subtractPeriod,toTransactionTypeStrict,isVendorTransaction,isDashboardClassesViewReport,toTimeframeTick,getTimeframeTickTag,isOpexByVendorIDNotSpecifiedVendor,isPAndLClassesViewReport,isBalanceSheetClassesViewReport,isPAndLProjectViewReport,isDashboardProjectViewReport,isBalanceSheetProjectViewReport,isAgingReport,isOpExByVendorReport,isCashFlowProjectViewReport,isCashFlowClassesViewReport,isPAndLReport,isDashboardReport,isCashFlowOrBalanceSheetReport,isFluxAnalysisOpExReport,isAccountReconReport,isGroupedBalanceSheetReport,isGroupedCashFlowReport,isIncompleteMonthPresentInTimeframeTick,isNetBurnOrIncomeClassesViewSectionID,isNetBurnOrIncomeClassesViewCalculatedSectionID,isNetBurnOrIncomeReportViewSectionID,isNetBurnOrIncomeReportViewCalculatedSectionID,isRevenueClassesViewSectionID,isRevenueClassesViewCalculatedSectionID,isRevenueSectionID,isRevenueCalculatedSectionID,reduceAllFetchState,getFYQuarterAndYear,getLastMonthOfFYQuarter,getActualPeriodOfFYQtr,toQuarter,getLastMonthOfFYYear,getActualPeriodOfFY,isBalanceSheetReport,isCashFlowReport,isBalanceSheetReportViewSectionID,isBalanceSheetReportViewCalculatedSectionID,isCashFlowReportViewCalculatedSectionID,isCashFlowReportViewSectionID,isCashFlowReportViewCalculatedSectionType1ID,isPandLReportViewSectionID,isPandLReportViewCalculatedSectionID,getEmptyHorizontalSectionBalancesSlice,aggregateHorizontalDescendantBalances,isCustomerTransaction,isTransferTransaction,toJournalEntrySortKey,isVendorTransactionWithCustomer,getChangedLineItemCountFromLocalData,toAttachment,hasZeniRoleOrCompanyOfficerAccess,COMPANY_ONBOARDING_INDUSTRY_TYPE_CODES,getCompanyOnboardingSubIndustryCodesForIndustry,COMPANY_SOURCE_OF_FUNDS_CODES,COMPANY_TRANSACTION_VOLUME_CODES,COMPANY_US_NEXUS_TYPE_CODES,COMPANY_PURPOSE_OF_ACCOUNT_CODES,getFYMonths,isCompanyPassportDataToBeSaved,toOutsideZeniPaymentModeType,checkIfCreatorIsApprover,hasBillPayAdminLevelAccess,hasOnlyBillPayAccess,toUserRoleTypeStrict,isNonZeniRole,NOTIFICATION_MODES,REMINDER_NOTIFICATION_TYPES,toNotificationFrequency,isMonthEndNotificationsSectionVisibleOnSettingsPage,isRemindersSectionVisibleOnSettingsPage,hasReimbursementAdminLevelAccess,isBulkProcessing,detectRuleOverlap,reduceAnyFetchState,toReimbursementTypeCode,getBusinessDayOfDate,PAYMENT_HISTORY_FILTER_CATEGORIES,TASK_LIST_FILTER_CATEGORIES,REIMBURSEMENT_FILTER_CATEGORIES_RESTRICTED,REIMBURSEMENT_FILTER_CATEGORIES,hideCreatedByFilter,BILL_PAY_FILTER_CATEGORIES,getBillListUniqueType,getRemiListUniqueType,allTaskPriority,allTaskStatus,toVendorDetailTabsType,toVendorSpendTrendFilterTabsTypeStrict,hasAnyFinOpRole,hasZeniAccountsAdminLevelAccess,getProductSettingsString,hasFullOrAdminLevelAccess,isVendorsTabVisible,DEFAULT_SESSION_CONFIG,toCOABalanceTimeframe,getOpexVendorTimeframeKey,toVendorFirstReviewViewColumnKeyType,toZeniUrlWithoutBaseURL,toVendorGlobalReviewColumnSortKeyType,getThirdPartyIdFromTransactionId,ALL_ONE_TIME_ACCRUAL_IGNORE_REASONS,ALL_JE_SCHEDULE_REVERT_REASONS,ALL_JE_SCHEDULE_IGNORE_REASONS,ALL_ONE_TIME_ACCRUAL_REVERT_REASONS,toScheduleDaysOfMonth,getQBOUrlForLink,anyCardOnHold,attachmentFilePathToAttachment,getZeniDateFromPeriod,getUserName,getPaymentStatusDisplayText,CARD_POLICY_LIMIT_ROW_ID_TRANSACTION as CARD_POLICY_LIMIT_ROW_ID_TRANSACTION$1,CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT as CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT$1,TASK_LIST_GROUP_BY_CATEGORIES,toTaskListGroupByKeyTypeStrict,toPriorityCodeType,convertHHMMStrToMinutes,toTaskStatusCodeType,toDueDateGroupKeyType,ALL_TASK_LIST_TABS,SEMI_WEEKLY_REQUIRED_DAYS_COUNT,ALL_WEEK_DAYS,getMinAllowedEndDate as getMinAllowedEndDate$1,uploadFiles,sortSubtasks,getRecurringEndDateFromCount,toRecurringFrequency,hasSuperAdminLevelAccess,hasBookKeepingAdminLevelAccess,StatusTypes,toReferralListViewSortKeyType,AmountStatusTypes,toNotificationSubTabTypeStrict,toNotificationTabTypeStrict,isBillConditionallyValid,TIME_SERIES_DURATIONS,convertToTimeSeriesSelectionRange,toTimeSeriesDuration,shouldDefaultAdjustmentCreditNote,buildVoidInvoiceSubmitBody,entityToInvoicingCustomerFormLocalData,toInvoicingSubscriptionQuantity,INVOICING_CATALOG_TIER_TYPE_VALUES,INVOICING_CATALOG_PRORATION_VALUES,INVOICING_CATALOG_PRICING_MODEL_VALUES,INVOICING_CATALOG_APPLICABILITY_VALUES,blankInvoicingCatalogSubFamily,blankInvoicingCatalogTier,isTieredCatalogPricingModel,toInvoicingDunningAction,entityToInvoicingBrandingFormLocalData,invoicingAccountsForQboAccountTypes,entityToInvoicingSubscriptionFormLocalData,getLowestInvoicingPlanPricePointAmount,entityToInvoicingCatalogItemFormLocalData,isInvoicingEntityLinkable,TRANSACTION_FILTER_CATEGORIES,toExpenseAutomationTransactionsTabKey,toReconciliationTabsType,isReviewTransactionBillPaymentType,isReviewTransactionExpenseType,isReviewTransactionCreditCardPaymentType,isReviewTransactionBankTransferType,isReviewTransactionDepositType,isReviewTransactionCreditCardCreditType,getJEScheduleRowType,isAccruedScheduleRow,isOneTimeAccrualRow,isAiAccountantSchedule,isExistingTabRow,isPendingReviewRow,toScheduleTypesType,toExpenseAutomationMissingReceiptsSortKey,mapAttachmentFileToAttachmentFilePayload,SUPPORTED_ATTACHMENT_FILE_TYPES,toSupportedAttachmentFileType,getAttachmentFileIdByFileName,toTransactionsSortKey,MAX_SELECTION_LIMIT,isAnyItemWithUncategorizedExpenseAccount,checkIfAllLineItemsAreCategoryClassFilled,TRANSACTION_GROUPS,toBulkUploadSortKey,BULK_UPLOAD_BAR_COMPLETE_HOLD_MS,getLineItemsByTransactionIdsFromLocalData,toReconciliationAccountSource,uploadAccountStatementIntoDocumentAI,toAccountType,hasTreasuryAdminLevelAccess,getNextTransferDate}from"@zeniai/client-epic-state";import{Global as Global$1,ThemeContext as ThemeContext$2,keyframes,css as css$2,jsx,CacheProvider,useTheme as useTheme$4}from"@emotion/react";import{Event as Event$1}from"@zeniai/client-analytics";import*as ReactDOM from"react-dom";import ReactDOM__default,{createPortal,findDOMNode}from"react-dom";import{useThreads,useUserThreads_experimental,RoomProvider,useCreateComment,useUser,useCreateThread,LiveblocksProvider,ClientSideSuspense,useRoom}from"@liveblocks/react";import{useOverrides,Comment as Comment$1,Thread,Composer as Composer$1}from"@liveblocks/react-ui";import{Timestamp as Timestamp$1,Comment}from"@liveblocks/react-ui/primitives";var commonjsGlobal$1="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var jsxRuntime={exports:{}},reactJsxRuntime_production_min={},hasRequiredReactJsxRuntime_production_min;function requireReactJsxRuntime_production_min(){if(hasRequiredReactJsxRuntime_production_min)return reactJsxRuntime_production_min;hasRequiredReactJsxRuntime_production_min=1;var e=React__default,t=/* @__PURE__ */Symbol.for("react.element"),n=/* @__PURE__ */Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,i=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,r={key:!0,ref:!0,__self:!0,__source:!0};function a(e,n,a){var s,l={},c=null,d=null;for(s in void 0!==a&&(c=""+a),void 0!==n.key&&(c=""+n.key),void 0!==n.ref&&(d=n.ref),n)o.call(n,s)&&!r.hasOwnProperty(s)&&(l[s]=n[s]);if(e&&e.defaultProps)for(s in n=e.defaultProps)void 0===l[s]&&(l[s]=n[s]);return{$$typeof:t,type:e,key:c,ref:d,props:l,_owner:i.current}}return reactJsxRuntime_production_min.Fragment=n,reactJsxRuntime_production_min.jsx=a,reactJsxRuntime_production_min.jsxs=a,reactJsxRuntime_production_min}var reactJsxRuntime_development={},hasRequiredReactJsxRuntime_development,hasRequiredJsxRuntime;function requireReactJsxRuntime_development(){return hasRequiredReactJsxRuntime_development||(hasRequiredReactJsxRuntime_development=1,"production"!==process.env.NODE_ENV&&function(){var e=React__default,t=/* @__PURE__ */Symbol.for("react.element"),n=/* @__PURE__ */Symbol.for("react.portal"),o=/* @__PURE__ */Symbol.for("react.fragment"),i=/* @__PURE__ */Symbol.for("react.strict_mode"),r=/* @__PURE__ */Symbol.for("react.profiler"),a=/* @__PURE__ */Symbol.for("react.provider"),s=/* @__PURE__ */Symbol.for("react.context"),l=/* @__PURE__ */Symbol.for("react.forward_ref"),c=/* @__PURE__ */Symbol.for("react.suspense"),d=/* @__PURE__ */Symbol.for("react.suspense_list"),p=/* @__PURE__ */Symbol.for("react.memo"),u=/* @__PURE__ */Symbol.for("react.lazy"),m=/* @__PURE__ */Symbol.for("react.offscreen"),h=Symbol.iterator;var g=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function x(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];!function(e,t,n){var o=g.ReactDebugCurrentFrame.getStackAddendum();""!==o&&(t+="%s",n=n.concat([o]));var i=n.map(function(e){return String(e)});i.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,i)}("error",e,n)}var f;function y(e){return e.displayName||"Context"}function S(e){if(null==e)return null;if("number"==typeof e.tag&&x("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),"function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case o:return"Fragment";case n:return"Portal";case r:return"Profiler";case i:return"StrictMode";case c:return"Suspense";case d:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case s:return y(e)+".Consumer";case a:return y(e._context)+".Provider";case l:return function(e,t,n){var o=e.displayName;if(o)return o;var i=t.displayName||t.name||"";return""!==i?n+"("+i+")":n}(e,e.render,"ForwardRef");case p:var t=e.displayName||null;return null!==t?t:S(e.type)||"Memo";case u:var m=e,h=m._payload,g=m._init;try{return S(g(h))}catch(f){return null}}return null}f=/* @__PURE__ */Symbol.for("react.module.reference");var C,$,b,v,E,w,R,A=Object.assign,j=0;function T(){}T.__reactDisabledLog=!0;var I,k=g.ReactCurrentDispatcher;function L(e,t,n){if(void 0===I)try{throw Error()}catch(i){var o=i.stack.trim().match(/\n( *(at )?)/);I=o&&o[1]||""}return"\n"+I+e}var D,_=!1,P="function"==typeof WeakMap?WeakMap:Map;function B(e,t){if(!e||_)return"";var n,o=D.get(e);if(void 0!==o)return o;_=!0;var i,r=Error.prepareStackTrace;Error.prepareStackTrace=void 0,i=k.current,k.current=null,function(){if(0===j){C=console.log,$=console.info,b=console.warn,v=console.error,E=console.group,w=console.groupCollapsed,R=console.groupEnd;var e={configurable:!0,enumerable:!0,value:T,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}j++}();try{if(t){var a=function(){throw Error()};if(Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(a,[])}catch(h){n=h}Reflect.construct(e,[],a)}else{try{a.call()}catch(h){n=h}e.call(a.prototype)}}else{try{throw Error()}catch(h){n=h}e()}}catch(g){if(g&&n&&"string"==typeof g.stack){for(var s=g.stack.split("\n"),l=n.stack.split("\n"),c=s.length-1,d=l.length-1;c>=1&&d>=0&&s[c]!==l[d];)d--;for(;c>=1&&d>=0;c--,d--)if(s[c]!==l[d]){if(1!==c||1!==d)do{if(c--,--d<0||s[c]!==l[d]){var p="\n"+s[c].replace(" at new "," at ");return e.displayName&&p.includes("<anonymous>")&&(p=p.replace("<anonymous>",e.displayName)),"function"==typeof e&&D.set(e,p),p}}while(c>=1&&d>=0);break}}}finally{_=!1,k.current=i,function(){if(0===--j){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:A({},e,{value:C}),info:A({},e,{value:$}),warn:A({},e,{value:b}),error:A({},e,{value:v}),group:A({},e,{value:E}),groupCollapsed:A({},e,{value:w}),groupEnd:A({},e,{value:R})})}j<0&&x("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}(),Error.prepareStackTrace=r}var u=e?e.displayName||e.name:"",m=u?L(u):"";return"function"==typeof e&&D.set(e,m),m}function M(e,t,n){if(null==e)return"";if("function"==typeof e)return B(e,!(!(o=e.prototype)||!o.isReactComponent));var o;if("string"==typeof e)return L(e);switch(e){case c:return L("Suspense");case d:return L("SuspenseList")}if("object"==typeof e)switch(e.$$typeof){case l:return B(e.render,!1);case p:return M(e.type,t,n);case u:var i=e,r=i._payload,a=i._init;try{return M(a(r),t,n)}catch(s){}}return""}D=new P;var O=Object.prototype.hasOwnProperty,F={},N=g.ReactDebugCurrentFrame;function z(e){if(e){var t=e._owner,n=M(e.type,e._source,t?t.type:null);N.setExtraStackFrame(n)}else N.setExtraStackFrame(null)}var H=Array.isArray;function V(e){return H(e)}function W(e){return""+e}function U(e){if(function(e){try{return W(e),!1}catch(t){return!0}}(e))return x("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",function(e){return"function"==typeof Symbol&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object"}(e)),W(e)}var G,q,Q=g.ReactCurrentOwner,Y={key:!0,ref:!0,__self:!0,__source:!0};function K(e,n,o,i,r){var a,s={},l=null,c=null;for(a in void 0!==o&&(U(o),l=""+o),function(e){if(O.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return void 0!==e.key}(n)&&(U(n.key),l=""+n.key),function(e){if(O.call(e,"ref")){var t=Object.getOwnPropertyDescriptor(e,"ref").get;if(t&&t.isReactWarning)return!1}return void 0!==e.ref}(n)&&(c=n.ref,function(e){"string"==typeof e.ref&&Q.current}(n)),n)O.call(n,a)&&!Y.hasOwnProperty(a)&&(s[a]=n[a]);if(e&&e.defaultProps){var d=e.defaultProps;for(a in d)void 0===s[a]&&(s[a]=d[a])}if(l||c){var p="function"==typeof e?e.displayName||e.name||"Unknown":e;l&&function(e,t){var n=function(){G||(G=!0,x("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",t))};n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}(s,p),c&&function(e,t){var n=function(){q||(q=!0,x("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",t))};n.isReactWarning=!0,Object.defineProperty(e,"ref",{get:n,configurable:!0})}(s,p)}return function(e,n,o,i,r,a,s){var l={$$typeof:t,type:e,key:n,ref:o,props:s,_owner:a,_store:{}};return Object.defineProperty(l._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(l,"_self",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.defineProperty(l,"_source",{configurable:!1,enumerable:!1,writable:!1,value:r}),Object.freeze&&(Object.freeze(l.props),Object.freeze(l)),l}(e,l,c,r,i,Q.current,s)}var Z,X=g.ReactCurrentOwner,J=g.ReactDebugCurrentFrame;function ee(e){if(e){var t=e._owner,n=M(e.type,e._source,t?t.type:null);J.setExtraStackFrame(n)}else J.setExtraStackFrame(null)}function te(e){return"object"==typeof e&&null!==e&&e.$$typeof===t}function ne(){if(X.current){var e=S(X.current.type);if(e)return"\n\nCheck the render method of `"+e+"`."}return""}Z=!1;var oe={};function ie(e,t){if(e._store&&!e._store.validated&&null==e.key){e._store.validated=!0;var n=function(e){var t=ne();if(!t){var n="string"==typeof e?e:e.displayName||e.name;n&&(t="\n\nCheck the top-level render call using <"+n+">.")}return t}(t);if(!oe[n]){oe[n]=!0;var o="";e&&e._owner&&e._owner!==X.current&&(o=" It was passed a child from "+S(e._owner.type)+"."),ee(e),x('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,o),ee(null)}}}function re(e,t){if("object"==typeof e)if(V(e))for(var n=0;n<e.length;n++){var o=e[n];te(o)&&ie(o,t)}else if(te(e))e._store&&(e._store.validated=!0);else if(e){var i=function(e){if(null===e||"object"!=typeof e)return null;var t=h&&e[h]||e["@@iterator"];return"function"==typeof t?t:null}(e);if("function"==typeof i&&i!==e.entries)for(var r,a=i.call(e);!(r=a.next()).done;)te(r.value)&&ie(r.value,t)}}function ae(e){var t,n=e.type;if(null!=n&&"string"!=typeof n){if("function"==typeof n)t=n.propTypes;else{if("object"!=typeof n||n.$$typeof!==l&&n.$$typeof!==p)return;t=n.propTypes}if(t){var o=S(n);!function(e,t,n,o,i){var r=Function.call.bind(O);for(var a in e)if(r(e,a)){var s=void 0;try{if("function"!=typeof e[a]){var l=Error((o||"React class")+": "+n+" type `"+a+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[a]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw l.name="Invariant Violation",l}s=e[a](t,a,o,n,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(c){s=c}!s||s instanceof Error||(z(i),x("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",o||"React class",n,a,typeof s),z(null)),s instanceof Error&&!(s.message in F)&&(F[s.message]=!0,z(i),x("Failed %s type: %s",n,s.message),z(null))}}(t,e.props,"prop",o,e)}else if(void 0!==n.PropTypes&&!Z){Z=!0,x("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",S(n)||"Unknown")}"function"!=typeof n.getDefaultProps||n.getDefaultProps.isReactClassApproved||x("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}var se={};function le(e,n,h,g,y,C){var $=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===r||e===i||e===c||e===d||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===u||e.$$typeof===p||e.$$typeof===a||e.$$typeof===s||e.$$typeof===l||e.$$typeof===f||void 0!==e.getModuleId)}(e);if(!$){var b="";(void 0===e||"object"==typeof e&&null!==e&&0===Object.keys(e).length)&&(b+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var v;b+=ne(),null===e?v="null":V(e)?v="array":void 0!==e&&e.$$typeof===t?(v="<"+(S(e.type)||"Unknown")+" />",b=" Did you accidentally export a JSX literal instead of a component?"):v=typeof e,x("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",v,b)}var E=K(e,n,h,y,C);if(null==E)return E;if($){var w=n.children;if(void 0!==w)if(g)if(V(w)){for(var R=0;R<w.length;R++)re(w[R],e);Object.freeze&&Object.freeze(w)}else x("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else re(w,e)}if(O.call(n,"key")){var A=S(e),j=Object.keys(n).filter(function(e){return"key"!==e}),T=j.length>0?"{key: someKey, "+j.join(": ..., ")+": ...}":"{key: someKey}";if(!se[A+T])x('A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />',T,A,j.length>0?"{"+j.join(": ..., ")+": ...}":"{}",A),se[A+T]=!0}return e===o?function(e){for(var t=Object.keys(e.props),n=0;n<t.length;n++){var o=t[n];if("children"!==o&&"key"!==o){ee(e),x("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",o),ee(null);break}}null!==e.ref&&(ee(e),x("Invalid attribute `ref` supplied to `React.Fragment`."),ee(null))}(E):ae(E),E}var ce=function(e,t,n){return le(e,t,n,!1)},de=function(e,t,n){return le(e,t,n,!0)};reactJsxRuntime_development.Fragment=o,reactJsxRuntime_development.jsx=ce,reactJsxRuntime_development.jsxs=de}()),reactJsxRuntime_development}function requireJsxRuntime(){return hasRequiredJsxRuntime||(hasRequiredJsxRuntime=1,"production"===process.env.NODE_ENV?jsxRuntime.exports=requireReactJsxRuntime_production_min():jsxRuntime.exports=requireReactJsxRuntime_development()),jsxRuntime.exports}var jsxRuntimeExports=requireJsxRuntime();const ErrorBoundaryContext=createContext(null),initialState$2={didCatch:!1,error:null};let ErrorBoundary$1=class extends Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=initialState$2}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){const{error:e}=this.state;if(null!==e){for(var t,n,o=arguments.length,i=new Array(o),r=0;r<o;r++)i[r]=arguments[r];null===(t=(n=this.props).onReset)||void 0===t||t.call(n,{args:i,reason:"imperative-api"}),this.setState(initialState$2)}}componentDidCatch(e,t){var n,o;null===(n=(o=this.props).onError)||void 0===n||n.call(o,e,t)}componentDidUpdate(e,t){const{didCatch:n}=this.state,{resetKeys:o}=this.props;var i,r;n&&null!==t.error&&hasArrayChanged(e.resetKeys,o)&&(null===(i=(r=this.props).onReset)||void 0===i||i.call(r,{next:o,prev:e.resetKeys,reason:"keys"}),this.setState(initialState$2))}render(){const{children:e,fallbackRender:t,FallbackComponent:n,fallback:o}=this.props,{didCatch:i,error:r}=this.state;let a=e;if(i){const e={error:r,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)a=t(e);else if(n)a=createElement(n,e);else{if(void 0===o)throw r;a=o}}return createElement(ErrorBoundaryContext.Provider,{value:{didCatch:i,error:r,resetErrorBoundary:this.resetErrorBoundary}},a)}};function hasArrayChanged(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some((e,n)=>!Object.is(e,t[n]))}var numeral$2={exports:{}},numeral$1=numeral$2.exports,hasRequiredNumeral;function requireNumeral(){return hasRequiredNumeral||(hasRequiredNumeral=1,t=numeral$1,n=function(){var e,t,n,o,i,r={},a={},s={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},l={currentLocale:s.currentLocale,zeroFormat:s.zeroFormat,nullFormat:s.nullFormat,defaultFormat:s.defaultFormat,scalePercentBy100:s.scalePercentBy100};function c(e,t){this._input=e,this._value=t}return(e=function(n){var o,i,a,s;if(e.isNumeral(n))o=n.value();else if(0===n||void 0===n)o=0;else if(null===n||t.isNaN(n))o=null;else if("string"==typeof n)if(l.zeroFormat&&n===l.zeroFormat)o=0;else if(l.nullFormat&&n===l.nullFormat||!n.replace(/[^0-9]+/g,"").length)o=null;else{for(i in r)if((s="function"==typeof r[i].regexps.unformat?r[i].regexps.unformat():r[i].regexps.unformat)&&n.match(s)){a=r[i].unformat;break}o=(a=a||e._.stringToNumber)(n)}else o=Number(n)||null;return new c(n,o)}).version="2.0.6",e.isNumeral=function(e){return e instanceof c},e._=t={numberToFormat:function(t,n,o){var i,r,s,l,c,d,p,u,m=a[e.options.currentLocale],h=!1,g=!1,x="",f=1e12,y=1e9,S=1e6,C="",$=!1;if(t=t||0,s=Math.abs(t),e._.includes(n,"(")?(h=!0,n=n.replace(/[\(|\)]/g,"")):(e._.includes(n,"+")||e._.includes(n,"-"))&&(d=e._.includes(n,"+")?n.indexOf("+"):t<0?n.indexOf("-"):-1,n=n.replace(/[\+|\-]/g,"")),e._.includes(n,"a")&&(r=!!(r=n.match(/a(k|m|b|t)?/))&&r[1],e._.includes(n," a")&&(x=" "),n=n.replace(new RegExp(x+"a[kmbt]?"),""),s>=f&&!r||"t"===r?(x+=m.abbreviations.trillion,t/=f):s<f&&s>=y&&!r||"b"===r?(x+=m.abbreviations.billion,t/=y):s<y&&s>=S&&!r||"m"===r?(x+=m.abbreviations.million,t/=S):(s<S&&s>=1e3&&!r||"k"===r)&&(x+=m.abbreviations.thousand,t/=1e3)),e._.includes(n,"[.]")&&(g=!0,n=n.replace("[.]",".")),l=t.toString().split(".")[0],c=n.split(".")[1],p=n.indexOf(","),i=(n.split(".")[0].split(",")[0].match(/0/g)||[]).length,c?(e._.includes(c,"[")?(c=(c=c.replace("]","")).split("["),C=e._.toFixed(t,c[0].length+c[1].length,o,c[1].length)):C=e._.toFixed(t,c.length,o),l=C.split(".")[0],C=e._.includes(C,".")?m.delimiters.decimal+C.split(".")[1]:"",g&&0===Number(C.slice(1))&&(C="")):l=e._.toFixed(t,0,o),x&&!r&&Number(l)>=1e3&&x!==m.abbreviations.trillion)switch(l=String(Number(l)/1e3),x){case m.abbreviations.thousand:x=m.abbreviations.million;break;case m.abbreviations.million:x=m.abbreviations.billion;break;case m.abbreviations.billion:x=m.abbreviations.trillion}if(e._.includes(l,"-")&&(l=l.slice(1),$=!0),l.length<i)for(var b=i-l.length;b>0;b--)l="0"+l;return p>-1&&(l=l.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+m.delimiters.thousands)),0===n.indexOf(".")&&(l=""),u=l+C+(x||""),h?u=(h&&$?"(":"")+u+(h&&$?")":""):d>=0?u=0===d?($?"-":"+")+u:u+($?"-":"+"):$&&(u="-"+u),u},stringToNumber:function(e){var t,n,o,i=a[l.currentLocale],r=e,s={thousand:3,million:6,billion:9,trillion:12};if(l.zeroFormat&&e===l.zeroFormat)n=0;else if(l.nullFormat&&e===l.nullFormat||!e.replace(/[^0-9]+/g,"").length)n=null;else{for(t in n=1,"."!==i.delimiters.decimal&&(e=e.replace(/\./g,"").replace(i.delimiters.decimal,".")),s)if(o=new RegExp("[^a-zA-Z]"+i.abbreviations[t]+"(?:\\)|(\\"+i.currency.symbol+")?(?:\\))?)?$"),r.match(o)){n*=Math.pow(10,s[t]);break}n*=(e.split("-").length+Math.min(e.split("(").length-1,e.split(")").length-1))%2?1:-1,e=e.replace(/[^0-9\.]+/g,""),n*=Number(e)}return n},isNaN:function(e){return"number"==typeof e&&isNaN(e)},includes:function(e,t){return-1!==e.indexOf(t)},insert:function(e,t,n){return e.slice(0,n)+t+e.slice(n)},reduce:function(e,t){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof t)throw new TypeError(t+" is not a function");var n,o=Object(e),i=o.length>>>0,r=0;if(3===arguments.length)n=arguments[2];else{for(;r<i&&!(r in o);)r++;if(r>=i)throw new TypeError("Reduce of empty array with no initial value");n=o[r++]}for(;r<i;r++)r in o&&(n=t(n,o[r],r,o));return n},multiplier:function(e){var t=e.toString().split(".");return t.length<2?1:Math.pow(10,t[1].length)},correctionFactor:function(){return Array.prototype.slice.call(arguments).reduce(function(e,n){var o=t.multiplier(n);return e>o?e:o},1)},toFixed:function(e,t,n,o){var i,r,a,s,l=e.toString().split("."),c=t-(o||0);return i=2===l.length?Math.min(Math.max(l[1].length,c),t):c,a=Math.pow(10,i),s=(n(e+"e+"+i)/a).toFixed(i),o>t-i&&(r=new RegExp("\\.?0{1,"+(o-(t-i))+"}$"),s=s.replace(r,"")),s}},e.options=l,e.formats=r,e.locales=a,e.locale=function(e){return e&&(l.currentLocale=e.toLowerCase()),l.currentLocale},e.localeData=function(e){if(!e)return a[l.currentLocale];if(e=e.toLowerCase(),!a[e])throw new Error("Unknown locale : "+e);return a[e]},e.reset=function(){for(var e in s)l[e]=s[e]},e.zeroFormat=function(e){l.zeroFormat="string"==typeof e?e:null},e.nullFormat=function(e){l.nullFormat="string"==typeof e?e:null},e.defaultFormat=function(e){l.defaultFormat="string"==typeof e?e:"0.0"},e.register=function(e,t,n){if(t=t.toLowerCase(),this[e+"s"][t])throw new TypeError(t+" "+e+" already registered.");return this[e+"s"][t]=n,n},e.validate=function(t,n){var o,i,r,a,s,l,c,d;if("string"!=typeof t&&(t+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",t)),(t=t.trim()).match(/^\d+$/))return!0;if(""===t)return!1;try{c=e.localeData(n)}catch(p){c=e.localeData(e.locale())}return r=c.currency.symbol,s=c.abbreviations,o=c.delimiters.decimal,i="."===c.delimiters.thousands?"\\.":c.delimiters.thousands,!(null!==(d=t.match(/^[^\d]+/))&&(t=t.substr(1),d[0]!==r)||null!==(d=t.match(/[^\d]+$/))&&(t=t.slice(0,-1),d[0]!==s.thousand&&d[0]!==s.million&&d[0]!==s.billion&&d[0]!==s.trillion)||(l=new RegExp(i+"{2}"),t.match(/[^\d.,]/g)||(a=t.split(o)).length>2||(a.length<2?!a[0].match(/^\d+.*\d$/)||a[0].match(l):1===a[0].length?!a[0].match(/^\d+$/)||a[0].match(l)||!a[1].match(/^\d+$/):!a[0].match(/^\d+.*\d$/)||a[0].match(l)||!a[1].match(/^\d+$/))))},e.fn=c.prototype={clone:function(){return e(this)},format:function(t,n){var o,i,a,s=this._value,c=t||l.defaultFormat;if(n=n||Math.round,0===s&&null!==l.zeroFormat)i=l.zeroFormat;else if(null===s&&null!==l.nullFormat)i=l.nullFormat;else{for(o in r)if(c.match(r[o].regexps.format)){a=r[o].format;break}i=(a=a||e._.numberToFormat)(s,c,n)}return i},value:function(){return this._value},input:function(){return this._input},set:function(e){return this._value=Number(e),this},add:function(e){var n=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([this._value,e],function(e,t,o,i){return e+Math.round(n*t)},0)/n,this},subtract:function(e){var n=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([e],function(e,t,o,i){return e-Math.round(n*t)},Math.round(this._value*n))/n,this},multiply:function(e){return this._value=t.reduce([this._value,e],function(e,n,o,i){var r=t.correctionFactor(e,n);return Math.round(e*r)*Math.round(n*r)/Math.round(r*r)},1),this},divide:function(e){return this._value=t.reduce([this._value,e],function(e,n,o,i){var r=t.correctionFactor(e,n);return Math.round(e*r)/Math.round(n*r)}),this},difference:function(t){return Math.abs(e(this._value).subtract(t).value())}},e.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}}),e.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(t,n,o){var i,r=e._.includes(n," BPS")?" ":"";return t*=1e4,n=n.replace(/\s?BPS/,""),i=e._.numberToFormat(t,n,o),e._.includes(i,")")?((i=i.split("")).splice(-1,0,r+"BPS"),i=i.join("")):i=i+r+"BPS",i},unformat:function(t){return+(1e-4*e._.stringToNumber(t)).toFixed(15)}}),o={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},i="("+(i=(n={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}).suffixes.concat(o.suffixes.filter(function(e){return n.suffixes.indexOf(e)<0})).join("|")).replace("B","B(?!PS)")+")",e.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(i)},format:function(t,i,r){var a,s,l,c=e._.includes(i,"ib")?o:n,d=e._.includes(i," b")||e._.includes(i," ib")?" ":"";for(i=i.replace(/\s?i?b/,""),a=0;a<=c.suffixes.length;a++)if(s=Math.pow(c.base,a),l=Math.pow(c.base,a+1),null===t||0===t||t>=s&&t<l){d+=c.suffixes[a],s>0&&(t/=s);break}return e._.numberToFormat(t,i,r)+d},unformat:function(t){var i,r,a=e._.stringToNumber(t);if(a){for(i=n.suffixes.length-1;i>=0;i--){if(e._.includes(t,n.suffixes[i])){r=Math.pow(n.base,i);break}if(e._.includes(t,o.suffixes[i])){r=Math.pow(o.base,i);break}}a*=r||1}return a}}),e.register("format","currency",{regexps:{format:/(\$)/},format:function(t,n,o){var i,r,a=e.locales[e.options.currentLocale],s={before:n.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:n.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(n=n.replace(/\s?\$\s?/,""),i=e._.numberToFormat(t,n,o),t>=0?(s.before=s.before.replace(/[\-\(]/,""),s.after=s.after.replace(/[\-\)]/,"")):t<0&&!e._.includes(s.before,"-")&&!e._.includes(s.before,"(")&&(s.before="-"+s.before),r=0;r<s.before.length;r++)switch(s.before[r]){case"$":i=e._.insert(i,a.currency.symbol,r);break;case" ":i=e._.insert(i," ",r+a.currency.symbol.length-1)}for(r=s.after.length-1;r>=0;r--)switch(s.after[r]){case"$":i=r===s.after.length-1?i+a.currency.symbol:e._.insert(i,a.currency.symbol,-(s.after.length-(1+r)));break;case" ":i=r===s.after.length-1?i+" ":e._.insert(i," ",-(s.after.length-(1+r)+a.currency.symbol.length-1))}return i}}),e.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(t,n,o){var i=("number"!=typeof t||e._.isNaN(t)?"0e+0":t.toExponential()).split("e");return n=n.replace(/e[\+|\-]{1}0/,""),e._.numberToFormat(Number(i[0]),n,o)+"e"+i[1]},unformat:function(t){var n=e._.includes(t,"e+")?t.split("e+"):t.split("e-"),o=Number(n[0]),i=Number(n[1]);return i=e._.includes(t,"e-")?i*=-1:i,e._.reduce([o,Math.pow(10,i)],function(t,n,o,i){var r=e._.correctionFactor(t,n);return t*r*(n*r)/(r*r)},1)}}),e.register("format","ordinal",{regexps:{format:/(o)/},format:function(t,n,o){var i=e.locales[e.options.currentLocale],r=e._.includes(n," o")?" ":"";return n=n.replace(/\s?o/,""),r+=i.ordinal(t),e._.numberToFormat(t,n,o)+r}}),e.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(t,n,o){var i,r=e._.includes(n," %")?" ":"";return e.options.scalePercentBy100&&(t*=100),n=n.replace(/\s?\%/,""),i=e._.numberToFormat(t,n,o),e._.includes(i,")")?((i=i.split("")).splice(-1,0,r+"%"),i=i.join("")):i=i+r+"%",i},unformat:function(t){var n=e._.stringToNumber(t);return e.options.scalePercentBy100?.01*n:n}}),e.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(e,t,n){var o=Math.floor(e/60/60),i=Math.floor((e-60*o*60)/60),r=Math.round(e-60*o*60-60*i);return o+":"+(i<10?"0"+i:i)+":"+(r<10?"0"+r:r)},unformat:function(e){var t=e.split(":"),n=0;return 3===t.length?(n+=60*Number(t[0])*60,n+=60*Number(t[1]),n+=Number(t[2])):2===t.length&&(n+=60*Number(t[0]),n+=Number(t[1])),Number(n)}}),e},(e=numeral$2).exports?e.exports=n():t.numeral=n()),numeral$2.exports;var e,t,n}var numeralExports=requireNumeral();const numeral=/* @__PURE__ */getDefaultExportFromCjs(numeralExports),zeniStrings={appName:"Zeni",card:{cashZero:"Cash Zero",yrs:"yrs",time:"time",underReview:"(Under Review)"},common:{skip:"Skip",remove:"Remove",save:"Save",submit:"Submit",send:"Send",back:"Back",close:"Close",download:"Download",search:"Search",update:"Update",copy:"Copy",upload:"Upload",apply:"Apply",clear:"Clear",done:"Done",all:"All",as:"as",in:"In",by:"by",custom:"Custom",zeniIncText:"© Zeni Inc. __year__",zeniInc:"Zeni Inc.",optional:"Optional",required:"Required",asOf:"as of",add:"Add",edit:"Edit",more:"More",delete:"Delete",gotIt:"Got it",deleted:"Deleted",sent:"Sent",yes:"Yes",no:"No",to:"to",of:"of",and:"and",review:"Review",due:"due",loading:"loading",others:"others",other:"other",reacted:"Reacted",found:"Found",failed:"Failed",post:"Post",ignore:"Ignore",create:"Create",resolve:"Resolve",for:"For",kb:"KB",mb:"MB",join:"Join",from:"from",on:"on",new:"New",chat:"Chat",collapseAll:"Collapse All",expandAll:"Expand All",rename:"Rename",reset:"Reset",resets:"resets",resetsCap:"Resets",updates:"updates",show:"Show",view:"View",numbers:{maximumCount:99,maximumUserAvatarCount:9,maximumUserCount:9},cc:"cc",host:"host",attendees:"attendees",scheduleTypes:{prepaid_expenses:"Prepaid",fixed_assets:"Fixed Asset",accrued_expenses:"Accrual",deferred_revenue:"Deferred Revenue"},texts:{action:"Action",assetId:"Asset ID",deferredRevenue:"Deferred Revenue",duplicate:"Duplicate",expenseCategory:"Expense Category",invoiceAmount:"Invoice Amount",lifecycle:"Lifecycle",notNeeded:"Not needed",period:"Period",postingDate:"Posting Date",revert:"Revert",serviceMonth:"Service month",somethingElse:"Something else",zeroDollarDecimalPlaceholder:"$0.00",zeroDollarPlaceholder:"$0",zeni:"Zeni",ai:"AI",aiAgents:"AI Agents",table:"Table",chart:"Chart",chargebee:"Chargebee",confirmAction:"Confirm action",zeniAI:"Zeni AI",zeniTeam:"Zeni Team",unreview:"Unreview",searchShortcutCmd:"Cmd + K",searchShortcutCtrl:"Ctrl + K",reload:"Reload",goHome:"Go Home",refresh:"Refresh",filter:"Filter",name:"Name",select:"Select",selectReason:"Select reason",goBack:"Go Back",minimize:"Minimize",maximize:"Maximize",closed:"Closed",customer:"Customer",frequency:"Frequency",startDate:"Start Date",endDate:"End Date",total:"Total",totalAmount:"Total Amount",addComment:"Add Comment",addMore:"Add More",clearAll:"Clear All",noData:"No Data",remaining:" Remaining",limit:"Limit",perMonth:"Per Month",limitReset:"Limit Resets:",spent:"Spent",user:"User",anonymousUser:"Anonymous User",tasks:"Tasks",comment:"Comment",comments:"Comments",read:"Read",unread:"Unread",mention:"Mention",mentions:"@Mentions",recommendedVendor:"Recommended Vendor",recommendedCategory:"Recommended Category",recommendedClass:"Recommended Class",alternateVendor:"Alternative Vendor",alternateCategory:"Alternative Category",alternateClass:"Alternative Class",primaryRecommendation:"Primary Recommendation",alternateRecommendation:"Alternative Recommendation",thoughtProcess:"Thought Process",insured:"Insured",monthInsightSent:"Insights Sent",subject:"Subject",refer:"Refer",copy:"copy",copied:"copied",invite:"invite",issue:"Issue",issues:"Issues",item:"Item",items:"Items",status:"Status",reviewStatus:"Review Status",priority:"Priority",tag:"Tag",groupName:"Group Name",dueDate:"Due Date",assignee:"Assignee",createdBy:"Created By",reply:"Reply",replies:"Replies",hideReply:"Hide reply",hideReplies:"Hide replies",noReply:"No replies",open:"Open",resolved:"Resolved",payment:"payment",payments:"payments",deposits:"deposits",these:"these",this_:"this",bill:"bill",bills:"bills",report:"report",reports:"reports",they:"they",it:"it",have:"have",has:"has",are:"are",is:"is",do_:"do",does:"does",maxLimit:"(Max limit reached)",or:"or",bankAccount:"Bank Account",expenseCategories:"Expense Categories",owner:"Owner",category:"Category",class:"Class",complete:"complete",saved:"saved",vendor:"Vendor",paymentAccount:"Payment Account",transaction:"Transaction",transactions:"Transactions",date:"Date",receipts:"Receipts",amount:"Amount",transactionType:"Type",review:"Review",expense:"Expense",type:"Type",box:"Box",type1099:"1099 Type",maxLimitReached:"Max limit reached",undo:"Undo",ein:"ein",ssn:"ssn",confidence:"Confidence",high:"High",medium:"Medium",low:"Low",current:"Current",previous:"Previous",score:"Score",moreActions:"More Actions",filters:"Filters",excluded:"Excluded",account:"Account",accountAlreadyExists:"Account already exists.",accountDetails:"Account Details",accountName:"Account Name",accounts:"Accounts",accountsPayable:"Accounts Payable",accountsReceivable:"Accounts Receivable",accruedExpenseCategory:"Accrued Expense Category",accruedExpenses:"Accrued Expenses",accumulatedDepreciationCategory:"Accumulated Depreciation Category",ach:"ACH",achDetails:"ACH Details",actionRequired:"Action Required",actions:"Actions",activity:"Activity",actual:"Actual",add:"Add ",addAccount:"Add account",addAmount:"Add amount",addBankAccount:"Add Bank Account",addCategory:"Add category",addCategory2:"Add Category",addClass:"Add class",addClass2:"Add Class",addCustomAddress:"Add Custom Address",addCustomer:"Add Customer",addDescription:"Add description",addEinOrSsn:"Add EIN/SSN",addEmail:"Add email",addFilter:"Add Filter",addFullName:"Add full name",addFundsFrom:"Add Funds From",addMailingAddress:"Add Mailing Address",addMemo:"Add memo",addMemo2:"Add Memo",addOfficer:"Add Officer",addPayee:"Add Payee",addPlan:"Add Plan",addPricePoint:"Add price point",addReasonOptional:"Add reason (optional)",addRejectionReasonRequired:"Add rejection reason (required)",addRule:"Add Rule",addSuite:"Add suite",addVendor:"Add Vendor",addZipCode:"Add ZIP code",addons:"Addons",address:"Address",admin:"Admin",aiBookkeeping:"AI Bookkeeping",aiCfo:"AI CFO",allApprovals:"All Approvals",allCategories:"All Categories",allClass:"All Class",allSchedulesReviewed:"All schedules reviewed!",allTypes:"All Types",allVendors:"All Vendors",amountDue:"Amount Due",analyzing:"Analyzing",and:" and ",anotherTransfer:"Another Transfer",apAnalyst:"AP Analyst",approvals:"Approvals",archive:"Archive",arr:"ARR",asOf:"As of",askAiCfo:"Ask AI CFO",askAiCfoAQuestionAndGetClear:"Ask AI CFO a question and get clear answers.",assets:"Assets",auditLog:"Audit Log",automateCashManagement:"Automate Cash Management",available:"Available",awaitingAllApproval:"Awaiting All Approval",awaitingAllApprovals:"Awaiting All Approvals",awaitingMyApproval:"Awaiting My Approval",backSide:"Back Side",balanceSheet:"Balance Sheet",balanceUnavailable:"Balance unavailable!",bankConnection:"Bank Connection",bankNameIsRequiredForAccount:"Bank Name is required for account.",bankTransfer:"Bank Transfer",basedOnZeniGptRecommendation:"Based on Zeni GPT recommendation",between:"Between",bill2:"Bill",billPayment:"Bill Payment",billing:"Billing",billingAddress:"Billing Address",billingCycles:"Billing Cycles",bold:"Bold",bookkeeping:"Bookkeeping",bulletList:"Bullet List",business:"Business",businessChecking:"Business Checking",businessDays:"business days",businessDetails:"Business Details",businessVerification:"Business Verification",businessVerificationDetails:"Business Verification Details",by:"By",byAi:"by AI",byClickingTransferIAuthorizeZeniToInitiate:'By clicking "Transfer," I authorize Zeni to initiate the transfer.',byRejectingThisPaymentTheApprovalProcessWill:"By rejecting this payment the approval process will not move forward and no payments will be issued. Help your team understand why this bill should not be paid.",cancelCase:"Cancel Case",cancelSubscription:"Cancel subscription",canceled:"Canceled",capitalizationThreshold:"Capitalization Threshold",card:"Card",cardNumber:"Card Number",cash:"Cash",cashAndEquivalents:"Cash and Equivalents",cashBalance:"Cash Balance",cashFlowFromOperatingActivities:"Cash Flow from Operating Activities",cashFlowStatement:"Cash Flow Statement",cashIn:"Cash In",cashOut:"Cash Out",cashback:"Cashback",cashbackPercentCashback:"__cashback__% Cashback",change:"Change",changeNameFromOldName:'Change name from "__old_name__"',changePercent:"Change %",check:"Check",checkYourBankStatementForA3Letter:'Check your bank statement for a 3-letter code after "#" symbol in "ZENI ACCTVERIFY" transaction.',churnProbability:"Churn Probability",churned:"Churned",clearFilter:"Clear filter",click:"Click ",click2:"Click ",cockpit:"Cockpit",collectFrom:"Collect from",companyDetails:"Company Details",companyName:"Company Name",companyOfficer:"Company Officer",companySettings:"Company Settings",compareSameMonthLastYear:"Compare same month last year $",compareSamePeriodLastYear:"Compare same period last year $",compareSamePeriodLastYearPercent:"Compare same period last year %",compareSameQuarterLastYearPercent:"Compare same quarter last year %",completed:"Completed",confirmChargebeeId:"Confirm Chargebee ID",confirmDeletion:"Confirm Deletion",confirmHubspotId:"Confirm Hubspot ID",congratulationsYouHaveSuccessfullyEstablishedAConnectionWith:"Congratulations! You have successfully established a connection with QuickBooks.",connectBankAccount:"Connect bank account",connectQuickBooks:"Connect QuickBooks",connectToQbo:"Connect to QBO",connectYourBank:"Connect your Bank",connectYourLedger:"Connect your ledger",contact:"Contact",controller:"Controller",cos:"COS",country:"Country",coupon:"Coupon",createAndManageReusableSpendControlPolicies:"Create and manage reusable spend control policies",createGroup:"Create Group",createPolicy:"Create Policy",createPromotionalCredits:"Create Promotional Credits",createRule:"Create Rule",created:"Created",createdAt:"Created At",createdBy2:"Created by",createdDate:"Created Date",creationDate:"Creation Date",credit:"Credit",credit2:"credit",creditCard:"Credit Card",creditCardCredit:"Credit Card Credit",creditCardPayment:"Credit Card Payment",creditCards:"Credit Cards",creditLimit:"Credit Limit",creditNotes:"Credit Notes",csManager:"CS Manager",csat:"CSAT",currency:"Currency",customerCreation:"Customer Creation",customers:"Customers",cvc:"CVC",dataImport:"Data Import",daysDays:"{days} days",debit:"Debit",debit2:"debit",debitCards:"Debit Cards",department:"Department",deposit:"Deposit",description:"description",description2:"Description",details:"Details",discardChanges:"Discard Changes",discount:"Discount",documentsAreEncryptedAndStoredWithSoc2:"Documents are encrypted and stored with SOC 2 Type II compliance.",domesticWire:"Domestic Wire",domesticWireDetails:"Domestic Wire Details",downloadPdf:"Download PDF",downloading:"Downloading...",drafts:"Drafts",dragAndDropOrClick:"Drag & Drop or Click",dropOrClickHereToUpload:"Drop or click here to upload",dueDate2:"Due date",dunning:"Dunning",duplicateEmail:"Duplicate email",eachLineMustHaveACategoryAndAmount:"Each line must have a category and amount",eachLineMustHaveACategoryClassAnd:"Each line must have a category, class and amount",editAddress:"Edit Address",editAndReSubmit:"Edit & Re-Submit",editBill:"Edit Bill",editCustomer:"Edit Customer",enableAccounts:"Enable Accounts",enableCards:"Enable Cards",enterAmount:"Enter amount",enterAnAmountGreaterThan0:"Enter an amount greater than $0",enterBusinessDetailsToCompleteVerification:"Enter business details to complete verification.",enterBusinessDetailsToCompleteVerificationTheKyb:"Enter business details to complete verification.\n The KYB info is required to comply with financial regulations and uphold the security of our customers.",enterProofOfIdentityToCompleteVerification:"Enter proof of identity to complete verification.",enterProofOfIdentityToCompleteVerificationThe:"Enter proof of identity to complete verification.\n The KYC info is required to comply with the Bank Secrecy Act and Anti-Money Laundering regulations.",equity:"Equity",evaluateAll:"Evaluate All",exclude:"Exclude",expenseAccounts:"Expense Accounts",expenses:"Expenses",expensesOpexCogs:"Expenses(Opex + Cogs)",expired:"Expired",externalId:"External ID",externalServicesExposure:"External Services Exposure",failureReason:"Failure Reason",fdicInsured:"FDIC Insured",fees:"+ Fees",fetchingYourDataFromChargebee:"Fetching your data from Chargebee…",fieldsMarkedWithTheZeniAiSparkleWere:"Fields marked with the Zeni AI sparkle were autofilled from your uploaded document.",filterBy:"Filter By",financingActivities:"Financing Activities",firstName:"First Name",fixedAsset:"Fixed Asset",fixedAssets:"Fixed Assets",flexible:"Flexible",for:"For ",forAllBillsInThisSeries:"For all bills in this series",forecast:"Forecast",freeUnlimited:"FREE Unlimited",from:"From",from2:" from ",frontSide:"Front Side",getStarted:"Get Started",getYourCard:"Get Your Card",gotIt:"Got It",greaterThan:"Greater than",grossBurn:"Gross Burn",grossMargin:"Gross Margin",group:"Group",groupCreation:"Group Creation",hide:"Hide",highFive:"High five!",httpsOrOrWwwChaseCom:"https://www.chase.com",httpsOrOrWwwSipcOrg:"https://www.sipc.org",httpsOrOrWwwZeniAiOrLegal:"https://www.zeni.ai/legal/cards",httpsOrOrWwwZeniAiOrPrivacy:"https://www.zeni.ai/privacy-policy",httpsOrOrWwwZeniAiOrTerms:"https://www.zeni.ai/terms",hubspotId:"Hubspot ID",ifSubmittedBillsAreUsingThisAccountThey:"If submitted bills are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new bills.",ifThereAreAnyChargesYouCanEither:"If there are any charges, you can either generate an invoice immediately, or add it to unbilled charges and invoice them later.",imported:"Imported",inProgress:"In Progress",income:"Income",indent:"Indent",initiatedBy:"Initiated By",insuredFunds:"Insured Funds",internalDescription:"Internal Description",internationalWire:"International Wire",internationalWireDetails:"International Wire Details",introducing:"Introducing",introducing2:"INTRODUCING",invalidAccountNumber:"Invalid account number",invalidEmail:"Invalid email",invalidRoutingNumber:"Invalid routing number",investingActivities:"Investing Activities",invite2:"Invite",invitePeople:"Invite People",inviteViaEmail:"Invite via Email",invoice:"Invoice",invoiceBranding:"Invoice Branding",invoiceDate:"Invoice Date",invoiceNumber:"Invoice Number",invoiceSummary:"Invoice Summary",invoices:"Invoices",invoicing:"Invoicing",issueCredit:"Issue Credit",issueCreditNote:"Issue Credit Note",italic:"Italic",jePostingDate:"JE Posting Date",jeSchedules:"JE Schedules",keepEditing:"Keep Editing",keepInMindThatMergingVendorProfilesIs:"Keep in mind that merging vendor profiles is permanent. You can't undo this later.",last12Months:"Last 12 Months",last30Days:"Last 30 Days",last3Months:"Last 3 Months",last6Months:"Last 6 Months",last90Days:"Last 90 Days",lastMonth:"Last Month",lastName:"Last Name",lastReportSent:"Last Report Sent",lastSync:"Last Sync",lastTraining:"Last Training",lastUpdated:"Last Updated",lastUpdated2:"Last updated",lastUpdatedBy:"Last Updated By",lastWeek:"Last Week",lastYear:"Last Year",lastYear2:"Last Year - ",learnMore:"Learn More",legalName:"Legal Name",lessThan:"Less than",liabilities:"Liabilities",lineItems:"Line Items",link:"Link",linkBankAccount:"Link Bank Account",linkedAccount:"Linked Account",live:"Live",loading:"Loading...",loading2:"Loading",lock:"Lock",logout:"Logout",mailingAddress:"Mailing Address",mailingDetails:"Mailing Details",maintainBalanceIn:"Maintain Balance In",manageYourBusinessVerificationBankDetailsToMake:"Manage your business verification, bank details to make Zeni work better for you.",manager:"Manager",managerOfManager:"Manager of Manager",manual:"Manual",matched:"Matched",maximumAmountPerSingleTransaction:"Maximum amount per single transaction",memo:"Memo",merchant:"Merchant",merge:"Merge",method:"Method",mileage:"Mileage",monthly:"Monthly",months:"Months",moreActions2:"More actions",moveMoney:"Move Money",mrr:"MRR",needsToCompleteTheirProfileBeforeTheCard:" needs to complete their profile before the card can be shipped.",needsToCompleteTheirProfileToAccessThis:" needs to complete their profile to access this card.",net15:"Net-15",net30:"Net-30",net45:"Net-45",net60:"Net-60",netBurn:"Net Burn",netCashFlow:"Net Cash Flow",netIncome:"Net Income",netIncomeOrBurn:"Net Income / Burn",netRevenue:"Net Revenue",new:"NEW",newBill:"New Bill",newCustomer:"New Customer",newReimbursement:"New Reimbursement",nextBilling:"Next Billing",noAccountsFound:"No accounts found!",noCustomersFound:"No customers found",noEligibleAccountsAvailable:"No eligible accounts available.",noStatementsFound:"No Statements found",noVendorsMatchedYourSearch:"No vendors matched your search.",noVendorsToDisplayYet:"No vendors to display yet!",notSet:"Not set",notify:"Notify",nps:"NPS",ofEveryMonth:"of every month",off:"Off",offboarded:"Offboarded",offline:"Offline",ok:"OK",okay:"Okay",onThe:"On the ",onboarding:"Onboarding",ongoing:"Ongoing",openInFullView:"Open in full view",openInSidePanel:"Open in side panel",operatingActivities:"Operating Activities",operatingExpenses:"Operating Expenses",operatingExpensesOpex:"Operating Expenses (OPEX)",or2:"OR",orUseCreditCardInstead3PercentFee:"Or, use credit card instead (3% fee)",other:"Other",outdent:"Outdent",overview:"Overview",paid:"Paid",parent:"Parent",passport:"Passport",pause:"Pause",pauseSubscription:"Pause subscription",pay:"Pay",payee:"Payee",payment2:"Payment",paymentDate:"Payment Date",paymentDestination:"Payment Destination",paymentDetails:"Payment Details",paymentMethod:"Payment Method",paymentOrDeposit:"Payment/Deposit",paymentStatus:"Payment Status",paymentType:"Payment Type",payments2:"Payments",payroll:"Payroll",people:"People",periodRange:"Period Range",periodTotal:"Period Total",periodsColumnsSelected:"periods + columns selected",personalIdIsRequiredForProductType:"Personal ID is required for _product_type_.",phone:"Phone",phoneIsRequiredForProductType:"Phone is required for _product_type_",physical:"Physical",pickDate:"Pick date",plan:"Plan",planHigherLimit:"Plan Higher Limit",planLowerLimit:"Plan Lower Limit",plans:"Plans",pleaseSelectACategory:"Please select a category",pleaseWaitUntilTheProcessIsCompleteBefore:"Please wait until the process is complete before making any further changes.",portfolioAllocation:"Portfolio Allocation",prepaidExpense:"Prepaid Expense",prepaidExpenses:"Prepaid Expenses",preparer:"Preparer",preview:"Preview",price:"Price",privacyPolicy:"Privacy Policy",private:"Private",productName:"Product Name",productVerticals:"Product Verticals",profitAndLoss:"Profit & Loss",project:"Project",projects:"Projects",q:"Q",qbo:"QBO",qty:"Qty",quarterly:"Quarterly",quarters:"Quarters",reUploadStatement:"Re-upload Statement",readyToUseBalance:"Ready to use balance",realmId:"Realm ID",reason:"Reason",receipt:"receipt",receipts2:"receipts",receiptsTo:"receipts to",recommendedLimit:"Recommended limit",recurring:"Recurring",redo:"Redo",refund:"Refund",regenerate:"Regenerate",reimbursement:"Reimbursement",rejected:"Rejected",remaining2:"remaining",renewalDate:"Renewal Date",rentalIncome:"Rental Income",replace:"Replace",reportWithAccounts:"Report with accounts",reports2:"Reports",require:"Require",requireAReceiptAboveThisAmount:"Require a receipt above this amount",requireReceipt:"Require Receipt",requiredFoundationForBothAiAgents:"Required foundation for both AI Agents",resendInvite:"Resend Invite",resetRealmId:"Reset realm ID",resetToDefault:"Reset to default",resolveCase:"Resolve Case",resume:"Resume",resumeDunning:"Resume Dunning",retain:"Retain",retryNow:"Retry Now",retryPayment:"Retry Payment",returned:"Returned",revenue:"Revenue",revenues:"Revenues",reviewAndConfirm:"Review & Confirm",reviewVendor:"Review Vendor",reviewer:"Reviewer",rewards:"Rewards",role:"Role",rolling12MonthsAverage:"Rolling 12 months Average",rolling12MonthsTotal:"Rolling 12 months Total",runway:"Runway",sameMonthLastYearSamePeriodLastYear:"Same month last year - -same_period_last_year-",sameQuarterLastYearSamePeriodLastYear:"Same quarter last year - -same_period_last_year-",saveAccount:"Save Account",saveChanges:"Save Changes",saveDetails:"Save Details",saving:"Saving…",savings:"Savings",scheduleBill:"Schedule Bill",scheduleCategory:"Schedule Category",scheduleCreationDate:"Schedule Creation Date",scheduleDemo:"Schedule Demo",scheduled:"Scheduled",searchByNameOrEmail:"Search by name or email",searchForSchedules:"Search for schedules",securelyAddYourPreferredPaymentMethodToActivate:"Securely add your preferred payment method to activate your account.",select2:"Select...",selectAccount:"Select Account",selectAccount2:"Select account",selectAccountToTransferBetweenAccounts:"Select account to transfer between accounts",selectApproverS:"Select approver(s)",selectCategory:"Select category",selectClass:"Select class",selectCountry:"Select country",selectCustomer:"Select customer",selectDocument:"Select Document",selectDueDate:"Select due date",selectFileOrDropHere:"Select file or drop here",selectMethod:"Select method",selectPlan:"Select plan",selectSource:"Select source",selectStartDate:"Select start date",selectType:"Select type",selected:" selected",selectedCategoryWasDeletedInQuickBooksPleaseSelect:"Selected category was deleted in QuickBooks. Please select an active one.",selectedClassWasDeletedInQuickBooksPleaseSelect:"Selected class was deleted in QuickBooks. Please select an active one.",sendEmail:"Send email",sendInvite:"Send Invite",sendMoney:"Send Money",sendReminder:"Send Reminder",setUpPayment:"Set up Payment",settings:"Settings",setupAchPayments:"Setup ACH Payments",setupPayment:"Setup Payment",showDescriptionInInvoices:"Show Description in Invoices",showYieldCalculator:"Show Yield Calculator",showing:"Showing",signInSecurelyViaPlaid:"Sign in securely via Plaid",signUpForFree:"Sign Up for FREE",siteDefault:"Site Default",routines:"Scheduled",skills:"Skills",skipGoToMyDashboard:"Skip — go to my dashboard",snooze:"Snooze",somethingWentWrong:"Something went wrong.",sorryWeCouldnTFindAnyResults:"Sorry! We couldn't find any results.",source:"Source",sourceAccount:"Source Account",spendManagementListViewInnerElementType:"Spend management list view inner element type",startMonth:"Start Month",startVerification:"Start Verification",stateId:"State ID",statements:"Statements",step1:"Step 1",step2:"Step 2",strict:"Strict",subscription:"Subscription",subscriptionDate:"Subscription Date",subscriptions:"Subscriptions",subsidiary:"Subsidiary",summary:"Summary",switchNow:"Switch Now",taDa:"Ta-da!",tags:"Tags",task:"Task",tax:"Tax",taxClassification:"Tax Classification",taxLead:"Tax Lead",taxStatus:"Tax Status",taxable:"Taxable",termEnd:"Term End",termsOfService:"terms of service",theCategoryUpdateRecommendationIsBased:'The "category" update recommendation is __based__',theClassUpdateRecommendationIsBased:'The "class" update recommendation is __based__',theUltimate:"The Ultimate",then:" then ",thisIsTheAmountYouLlEarnOn:"This is the amount you'll earn on your funds on an annualized basis.",thisMonth:"This Month",thisProcessMayTake23Min:"This process may take 2-3 min",thisProcessMayTakeAFewSeconds:"This process may take a few seconds.",thisWeek:"This Week",thisYear:"This Year",timeSpent:"Time Spent",tin:"TIN",to:"To",to2:" to ",toGetStartedPleaseLinkYourPaymentMethod:"To get started, please link your payment method and enter company billing address.",toNewName:' to "__new_name__"',toSetUpYourDashboardWeMustConnect:"To set up your dashboard, we must connect with your QuickBooks account.",totalLiabilitiesAndEquity:"Total Liabilities & Equity",totalMrr:"Total MRR",totalPayable:"Total Payable",transactionDate:"Transaction Date",transactionId:"Transaction ID",transactionLimit:"Transaction Limit",transactionType2:"Transaction Type",transfer:"Transfer",transferBetweenAccounts:"Transfer Between Accounts",transferFrom:"Transfer From",transferTo:"Transfer To",transferredFundsTypicallyTake12BusinessDays:"Transferred funds typically take 1-2 business days to show in the account.",typeAndSelectVendor:"Type and select vendor",unableToConnectQuickbooksPleaseTryAgain:"Unable to connect quickbooks. Please try again.",unarchive:"Unarchive",uncategorizedExpenses:"Uncategorized Expenses",underline:"Underline",understood:"Understood",unitAmount:"Unit Amount",unknown:"Unknown",unleashThePowerOfAiBookkeeping:"Unleash the Power of AI Bookkeeping",unlock:"Unlock",unlockAchSameDayWithZeniChecking:"Unlock ACH Same Day with Zeni Checking",unsnooze:"Unsnooze",unsupportedFiletype:"Unsupported Filetype",upTo:"Up to",updatePlan:"Update Plan",updateRealmId:"Update realm ID",updateSpendLimit:"Update spend limit",updateTo:"Update to",updateYourBooksDailyAccessRealTimeInsights:"Update your books daily, access real-time insights, and receive personalized support from a dedicated team of experts — all on a single platform",upgradeStatus:"Upgrade Status",uploadAPolicyDocumentToExtractAndCreate:"Upload a policy document to extract and create a new policy.",uploadDocument:"Upload document",uploadStatement:"Upload Statement",uploading:"Uploading...",userNeedsToCompleteTheirProfileBeforeThe:"__user__ needs to complete their profile\n before the card can be shipped",userNeedsToCompleteTheirProfileToAccess:"__user__ needs to complete their profile\n to access this card",utilization:"Utilization",v1099Details:"1099 Details",v1099Filing:"1099 Filing",v175PercentCashback:"1.75% cashback",v25m:"> 2.5M",v500k:"$500K",variance:"Variance",vendorOwner:"Vendor Owner",verifyBusiness:"Verify Business",verifyIdentity:"Verify Identity",verifyYourIdentity:"Verify your identity",viewDetails:"View Details",virtual:"Virtual",visibility:"Visibility",voidInvoice:"Void Invoice",warnings:"Warnings",weekly:"Weekly",wholesaleTrade:"Wholesale Trade",wire:"Wire",wireTransfer:"Wire Transfer",workflows:"Workflows",year:"Year",yearToDateLastYearTotal:"Year to Date last year Total",yearToDateTotal:"Year to Date Total",yearly:"Yearly",years:"Years",youCanUseAWireTransferIfYou:"You can use a wire transfer if you want to transfer the entire amount at once. ",youNeedToCompleteYourProfileBeforeThe:"You need to complete your profile before the card can be shipped.",youNeedToCompleteYourProfileToAccess:"You need to complete your profile to access this card.",youVeTransferred:"You’ve transferred ",yourAccountNumbersDonTMatch:"Your account numbers don’t match!",ytdLastYearTotal:"YTD last year Total",ytdSpend:"YTD Spend",ytdTotal:"YTD Total",zeniAIIcon:"zeniAIIcon",zeniCardsIsShuttingDown:"Zeni Cards is shutting down",zeniTermsOfService:"Zeni Terms of Service"},labels:{sourceAccount:"Source Account:",paymentMethod:"Payment Method:",paymentDate:"Payment Date:",sendPaymentTo:"Send Payment To:",name:"Name:",cvv:"CVV:",expiryDate:"Expiry Date:",dateOfBirth:"Date of Birth:",dob:"DOB:",pin:"PIN:",phone:"Phone:",mailingAddress:"Mailing Address:",address:"Address:",email:"Email:",total:"Total:",subject:"Subject:",invoiceAmount:"Invoice Amount:",websiteURL:"Website URL:",firstName:"First Name:",lastName:"Last Name:",category:"Category:",class:"Class:",amount:"Amount:",payee:"Payee:",date:"Date:",memo:"Memo:",companyName:"Company Name:",cardName:"Card Name:",department:"Department:",limit:"Limit:",mergedTo:"Merged to:",vendor:"Vendor:",transferFrom:"Transfer From:",transferTo:"Transfer To:",products:"Products:",legalName:"Legal Name:",taxClassification:"Tax Classification:",accountNickname:"Account Nickname:",accountNumber:"Account Number:",accountType:"Account Type:",annualYieldEarned:"Annual Yield Earned:",balanceDue:"Balance Due:",billDate:"Bill Date:",certificateOfIncorporation:"Certificate of Incorporation:",confirmAccountNumber:"Confirm Account Number:",country:"Country:",coupon:"Coupon:",currentAverageYield:"Current Average Yield:",customer:"Customer:",depositedTo:"Deposited To:",description:"Description:",dueDate:"Due Date:",einDocument:"EIN Document:",industry:"Industry:",invoiceDate:"Invoice Date:",invoiceNo:"Invoice No.:",owner:"Owner:",paymentArrived:"Payment arrived:",paymentCurrency:"Payment Currency:",period:"Period:",planLowerLimit:"Plan Lower Limit:",project:"Project:",recurringAddons:"Recurring Addons:",scheduledDate:"Scheduled Date:",sendTo:"Send To:",sortBy:"Sort By:",stateOfIncorporation:"State of Incorporation:",status:"Status:",subtotal:"Subtotal:",transactionDate:"Transaction Date:",type:"Type:",typeOfIncorporation:"Type of Incorporation:",website:"Website:"},timeStrings:{hour:"hour",hours:"hours",minutes:"minutes",minute:"minute",day:"day",days:"days",justNow:"Just Now",minAgo:"min ago",minsAgo:"mins ago",hrAgo:"hr ago",hrsAgo:"hrs ago",yearAgo:"year ago",monthAgo:"month ago",weekAgo:"week ago",dayAgo:"day ago",secondAgo:"second ago",yearsAgo:"years ago",monthsAgo:"months ago",weeksAgo:"weeks ago",daysAgo:"days ago",secondsAgo:"seconds ago",today:"Today",upcoming:"Upcoming",overdue:"Overdue",this_week:"This week",this_month:"This month",yesterday:"Yesterday",last_7_days_this_month:"Last 7 Days",earlier_this_month:"Earlier this Month",month:"Month",weeks:"weeks",week:"week"},placeholder:{firstNamePlaceholder:"First name",lastNamePlaceholder:"Last name",namePlaceholder:"Add name",frequencyPlaceholder:"Select frequency",endDatePlaceholder:"Select end date",productsPlaceholder:"Select products",datePlaceholder:"Select date",phonePlaceholder:"Add phone",dobPlaceholder:"Add date of birth",addressPlaceholder:"Add address"},errorMessage:{nameError:"Name is required for _product_type_",somethingWentWrong:"Something went wrong!",invalidPhoneNumber:"Invalid phone number",somethingWentWrongPleaseTryAgain:"Something went wrong. Please try again."},sectionTitles:{newVendor:"New Vendor",editVendor:"Edit Vendor",vendorDetails:"Vendor Details"},headers:{tenants:"Tenants",vendors:"Vendors",requestedVendor:"Requested Vendor",originalVendor:"Original Vendor",recommended:"Recommended",sortBy:"Sort By",notes:"Notes",notifications:"Notifications",globalComment:"Global Comment",bills:"Bills",reimbursements:"Reimbursements",auditScore:"Audit Score",confidenceScore:"Confidence Score",jeSchedules:"Journal Entries",fluxAnalysis:"Flux Analysis",insights:"Insights",reconciliation:"Reconciliation",billingAddress:"Add Company Billing Address",billingAddressSubText:"Enter your company’s official billing address for invoicing."},numberFormat:{toTwoDecimal:"0,0.[00]",roundedOff:"0,0"},strings:{asterisk:"*",commaSpace:", ",doubleAsterisk:"**",ellipsis:"...",maskedDigits:"••••",one:"1",spacedMiddleDot:" · ",zero:"0",aboutField:"About",dot:".",dividerDot:"•",middleDot:"·",leftArrow:"←",rightArrow:"→",hyphen:"-",plus:"+",colon:":",empty:"",space:" ",comma:",",slash:"/",apostrophes:"'s",questionMark:"?",underscore:"_",openingBrace:"(",closingBrace:")",pipe:"|",atTheRate:"@",newLine:"\n",spaceWithEscape:"\\s",backspace:"/",hash:"#",percentage:"%",emDash:"—",invalidTooltipDataMessage:"Invalid data provided for {variant} tooltip variant"},tooltips:{editName:"Edit name",addW9:"Add W9",viewW9:"View W9",viewReceipt:"View Receipt",viewReceipts:"View Receipts",addReceipt:"Add Receipt",addMissingReceipt:"Add Missing Receipt"},datePicker:{businessDay:"BD"},fileElementPicker:{formatNotSupported:"Format not supported, please re-upload",sizeLimit:"Size limit exceeded (Max 10 MB), please re-upload"},documents:{formatJPGText10MB:"Format: JPG or JPEG. Size: 10 MB or less.",formatImageText10MB:"Format: JPG or PNG. Size: 10 MB or less.",formatDocumentText10MB:"Format: JPG, PNG or PDF. Size: 10 MB or less",formatDocumentMax10MB:"PDF, JPG or PNG (Max 10 MB)",attachFile:"Attach File",formatImageAndDocumentAttachments:"Format: JPG, PNG, Excel or PDF.",attachmentFileSize700KB:"Size 700Kb or less",singleFileUploadSizeErrorMessage:"File size exceeds the maximum limit. Please upload a file under __maxFileSize__",multipleFileUploadSizeErrorMessage:"One or more files exceed the maximum limit. Please upload files under __maxFileSize__ each"},snackBar:{success:"Success",error:"Error",common:{success:"Details updated successfully.",failed:"Something went wrong! Please try again.",notification:""},billing_address_view:{success:"Billing Address saved successfully.",failed:"Couldn't save Billing Address. Please try again.",notification:""},product_services_update:{success:"Product services updated successfully.",failed:"Couldn't update product services. Please try again.",notification:""},qbo_realm_id_update:{success:"QBO realm ID updated successfully.",failed:"Couldn't update the QBO realm ID. Please try again.",notification:""},task_activities_toast_notification:{success:"",failed:"",notification:"_message_text_"},task_created_toast_notification:{success:"",failed:"",notification:""},task_assigned_toast_notification:{success:"",failed:"",notification:"New Task is assigned to you."},task_due_tomorrow_toast_notification:{success:"",failed:"",notification:"_task_name_ is due tomorrow and currently is in _status_name_ status."},task_deleted_toast_notification:{success:"",failed:"",notification:"_task_name_ was deleted."},task_archived_toast_notification:{success:"",failed:"",notification:"_task_name_ was archived."},task_overdue_toast_notification:{success:"",failed:"",notification:"_task_name_ is overdue."},task_overdue_toast_notification_creator:{success:"",failed:"",notification:"_task_name_ is overdue."},task_notification_count:{success:"",failed:"",notification:"You have _notification_count_ new notifications"},create_card_setup:{success:"Setup intent created",failed:"_api-error_.",notification:""},confirm_card_setup:{success:"Card setup intent confirmed",failed:"_api-error_.",notification:""},add_card_payment_source:{success:"Card linked successfully",failed:"_api-error_.",notification:""},fetch_payment_sources:{success:"Fetch Payment Sources",failed:"_api-error_.",notification:""},create_tag:{success:"Create Tag",failed:"_api-error_.",notification:""},je_bill_link:{success:"Bill/Expense linked for _schedule_name",failed:"_api-error_.",notification:""},delete_tag:{success:"Delete Tag",failed:"_api-error_.",notification:""},real_time_approver_added:{success:"_approvers-added_ have been added as new approver(s).",failed:"_api-error_.",notification:""},receipts_upload:{success:"Receipt(s) uploaded",failed:"_api-error_.",notification:""},receipts_bulk_match:{success:"_matched_ out of _total_ Receipts Matched",failed:"",notification:""},receipt_match:{success:"1 Receipt matched",failed:"Failed to match receipt. Please try again.",notification:""},transactionDetails_updatingPastTransactions:{success:"Updating past transactions",failed:"",notification:""},transactionDetails_transactionUpdated:{success:"Transaction updated successfully",failed:"",notification:""},transactions_categorized_updated_failed:{success:"_transactions_count_ Transactions categorized.",failed:"_transactions_count_ Transactions failed.",notification:"_transactions_count_ Transactions updated."},transaction_categorized_updated_failed:{success:"_transactions_count_ Transaction categorized.",failed:"_transactions_count_ Transaction failed.",notification:"_transactions_count_ Transaction updated."},transactionsCategorized_transactionsUpdated:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transactions updated."},transactionsCategorized_transactionUpdated:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transaction updated."},transactionCategorized_transactionsUpdated:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transactions updated."},transactionCategorized_transactionUpdated:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transaction updated."},transactionsCategorized_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _failed_count_ Transactions failed."},transactionsCategorized_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _failed_count_ Transaction failed."},transactionCategorized_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n_failed_count_ Transactions failed."},transactionCategorized_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n_failed_count_ Transaction failed."},transactionsUpdated_transactionsFailed:{success:"",failed:"",notification:"_updated_count_ Transactions updated.\n _failed_count_ Transactions failed."},transactionsUpdated_transactionFailed:{success:"",failed:"",notification:"_updated_count_ Transactions updated.\n _failed_count_ Transaction failed."},transactionUpdated_transactionsFailed:{success:"",failed:"",notification:"_updated_count_ Transaction updated.\n _failed_count_ Transactions failed."},transactionUpdated_transactionFailed:{success:"",failed:"",notification:"_updated_count_ Transaction updated.\n _failed_count_ Transaction failed."},transactionsCategorized_transactionsUpdated_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transactions updated.\n _failed_count_ Transactions failed."},transactionsCategorized_transactionsUpdated_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transactions updated.\n _failed_count_ Transaction failed."},transactionsCategorized_transactionUpdated_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transaction updated.\n _failed_count_ Transactions failed."},transactionCategorized_transactionsUpdated_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transactions updated.\n _failed_count_ Transactions failed."},transactionsCategorized_transactionUpdated_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transaction updated.\n _failed_count_ Transaction failed."},transactionCategorized_transactionsUpdated_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transactions updated.\n _failed_count_ Transaction failed."},transactionCategorized_transactionUpdated_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transaction updated.\n _failed_count_ Transactions failed."},transactionCategorized_transactionUpdated_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transaction updated.\n _failed_count_ Transaction failed."},people_invite_people:{success:"Invitation sent",failed:"",notification:""},people_invite_multiple_people:{success:"Users invited",failed:"",notification:""},people_update_person:{success:"User info changed",failed:"",notification:""},people_delete_person:{success:"User deleted",failed:"",notification:""},reimbursement_updated:{success:"Reimbursement saved",failed:"_api-error_.",notification:""},reimbursement_approved:{success:"Reimbursement approved",failed:"_api-error_.",notification:""},reimbursement_rejected:{success:"Reimbursement rejected",failed:"_api-error_.",notification:""},reimbursement_sent_for_approval:{success:"Reimbursement sent for approval",failed:"_api-error_.",notification:""},reimbursement_deleted:{success:"Reimbursement deleted",failed:"_api-error_.",notification:""},reimbursement_cancelled:{success:"Reimbursement canceled",failed:"_api-error_.",notification:""},reimbursement_cancelled_deleted:{success:"Reimbursement canceled and deleted",failed:"_api-error_.",notification:""},reimbursement_bulk_submit:{success:"_count_ _report_ will be _action_. You'll be notified once it's done.",failed:"_api-error_.",notification:""},reimbursement_bulk_processed:{success:"_report_ _has_ been _action_. The page will refresh now to reflect updates.",failed:"_api-error_.",notification:""},save_reconcile_for_later:{success:"Reconciliation saved",failed:"Reconciliation not saved. Please try again!",notification:""},reconcile:{success:"_reconcile_account_ reconciliation in progress.",failed:"Reconciliation failed for _reconcile_account_",notification:""},exclude_transaction:{success:"Transaction excluded",failed:"Transaction exclusion failed",notification:""},account_added:{success:"Account added successfully",failed:"",notification:""},issue_charge_card:{success:"New _card_ issued for _user-name_",failed:"",notification:""},issue_charge_cards:{success:"New cards issued",failed:"Couldn't create cards. _api-error_.",notification:""},charge_card_auto_pay_enable:{success:"Early payment enabled",failed:"",notification:""},charge_card_auto_pay_disable:{success:"Early payment disabled",failed:"",notification:""},business_verification_save:{success:"Business Verification Details saved successfully.",failed:"Couldn't save Business Verification Details. Please try again.",notification:""},business_verification_submit:{success:"Business Verification Details submitted successfully.",failed:"Couldn't submit Business Verification Details. Please try again.",notification:""},business_verification_from_bills_submit:{success:"Verified successfully.",failed:"Couldn't submit Business Verification Details. Please try again.",notification:""},plaid_connection:{success:"",failed:"Something went wrong! Please try again.",notification:""},bill_pay_setup:{success:"",failed:"Failed to load Bill Pay Setup Details! Please try again.",notification:""},zeni_accounts_setup:{success:"",failed:"Failed to load Zeni Accounts Setup Details! Please try again.",notification:""},bill_pay_approval_create:{success:"Approval Rule created successfully.",failed:"Couldn't create Approval Rule! Please try again.",notification:""},bill_pay_duplicate_approval_create:{success:"Approval Rule created successfully.",failed:"_api-error_",notification:""},bill_pay_approval_update:{success:"Approval Rule updated successfully.",failed:"Couldn't update Approval Rule! Please try again.",notification:""},update_zeni_account_nickname:{success:"Zeni Account nickname updated successfully",failed:"_api-error_.",notification:""},create_checking_account:{success:"New Business Account Added",failed:"_api-error_.",notification:""},deposit_check:{success:"Check Deposit Successful",failed:"_api-error_.",notification:""},bill_pay_duplicate_approval_update:{success:"Approval Rule updated successfully.",failed:"_api-error_",notification:""},bill_pay_approval_delete:{success:"Approval Rule deleted successfully.",failed:"Couldn't delete Approval Rule! Please try again.",notification:""},bill_pay_approval_reorder:{success:"Approval rules reordered.",failed:"Couldn't reorder Approval Rules. Please try again.",notification:""},reimbursement_setup:{success:"",failed:"Failed to load Reimbursements Setup Details! Please try again.",notification:""},reimbursement_approval_create:{success:"Approval Rule created successfully.",failed:"Couldn't create Approval Rule! Please try again.",notification:""},reimbursement_duplicate_approval_create:{success:"Approval Rule created successfully.",failed:"_api-error_",notification:""},reimbursement_approval_update:{success:"Approval Rule updated successfully.",failed:"Couldn't update Approval Rule! Please try again.",notification:""},reimbursement_duplicate_approval_update:{success:"Approval Rule updated successfully.",failed:"_api-error_",notification:""},reimbursement_approval_delete:{success:"Approval Rule deleted successfully.",failed:"Couldn't delete Approval Rule! Please try again.",notification:""},reimbursement_approval_reorder:{success:"Approval rules reordered.",failed:"Couldn't reorder Approval Rules. Please try again.",notification:""},reimbursement_create_mileage:{success:"Mileage rate added successfully.",failed:"_api-error_.",notification:""},reimbursement_update_mileage:{success:"Mileage rate updated successfully.",failed:"_api-error_.",notification:""},reimbursement_accept_term:{success:"",failed:"_api-error_.",notification:""},reimbursement_accept_employee_term:{success:"",failed:"_api-error_.",notification:""},cockpit_month_end_email_sent:{success:"Zeni Insights sent successfully for _company-name_.",failed:"",notification:""},cockpit_month_end_email_save:{success:"Zeni Insights saved successfully for _company-name_.",failed:"",notification:""},cockpit_month_end_email_attachment_upload:{success:"",failed:"Sorry, the file you uploaded is too large. Maximum file size allowed is 700KB",notification:""},audit_score_updated:{success:"Audit Score updated",failed:"",notification:""},create_bank_account_ach:{success:"ACH account added successfully.",failed:"",notification:""},unlink_deposit_account:{success:"",failed:"_api-error_.",notification:""},create_bank_account_wire:{success:"_wire-type_ wire account added successfully.",failed:"",notification:""},create_bank_account_international:{success:"_wire-type_ wire account added successfully.",failed:"",notification:""},bill_pay_updated:{success:"Bill saved",failed:"_api-error_.",notification:""},bill_pay_deleted:{success:"Bill deleted",failed:"_api-error_.",notification:""},bill_pay_bulk_submit:{success:"_count_ _bill_ will be _action_. You'll be notified once it's done.",failed:"_api-error_.",notification:""},bill_pay_bulk_processed:{success:"_bill_ _has_ been _action_. The page will refresh now to reflect updates.",failed:"_api-error_.",notification:""},bill_pay_cancelled_deleted:{success:"Bill canceled and deleted",failed:"_api-error_.",notification:""},bill_pay_cancelled:{success:"Bill canceled",failed:"_api-error_.",notification:""},bill_pay_approved:{success:"Bill approved",failed:"_api-error_.",notification:""},bill_pay_rejected:{success:"Bill rejected",failed:"_api-error_.",notification:""},bill_pay_sent_for_approval:{success:"Bill sent for approval",failed:"_api-error_.",notification:""},bill_pay_accept_term:{success:"",failed:"_api-error_.",notification:""},bill_pay_refund:{success:"Refund process initiated",failed:"_api-error_.",notification:""},bill_pay_retry:{success:"Payment retried",failed:"_api-error_.",notification:""},bill_pay_marked_as_paid:{success:"Bill marked as paid",failed:"_api-error_.",notification:""},update_vendor:{success:"Vendor updated successfully.",failed:"_api-error_.",notification:""},data_refresh_update:{success:"Data refreshed",failed:"_api-error_.",notification:""},delete_bank_account:{success:"Bank account deleted successfully.",failed:"_api-error_.",notification:""},update_debit_card_pin_attempt:{success:"PIN changed successfully",failed:"_api-error_.",notification:""},set_debit_card_pin:{success:"PIN set successfully",failed:"_api-error_.",notification:""},create_bank_account:{success:"",failed:"_api-error_.",notification:""},send_email_magic_link_to_user:{success:"",failed:"_api-error_.",notification:""},qbo_connection_already_linked:{success:"",failed:"This QuickBooks company is already connected to another active tenant.",notification:""},qbo_connection_failed:{success:"",failed:"Unable to connect QuickBooks. Please try again.",notification:""},accounting_projects_qbo_reconnect_failed:{success:"",failed:"Couldn't reconnect QuickBooks. Try again.",notification:""},complete_profile_done:{success:"Profile details saved.",failed:"_api-error_.",notification:""},zeni_account_accept_term:{success:"",failed:"_api-error_.",notification:""},transfer_money:{success:"",failed:"_api-error_.",notification:""},create_vendor:{success:"Vendor created successfully.",failed:"_api-error_.",notification:""},onboarding_customer_view:{success:"Onboarding Business Details fetched successfully.",failed:"Couldn't fetch Onboarding Business Details. Please try again.",notification:""},onboarding_customer_view_complete:{success:"Onboarding status updated successfully.",failed:"Couldn't update Onboarding status. Please try again.",notification:""},onboarding_customer_identity_verification_save:{success:"Onboarding Identity Details saved successfully.",failed:"Couldn't save Onboarding Identity Details. Please try again.",notification:""},onboarding_customer_identity_verification_submit:{success:"Onboarding Identity Details submitted successfully.",failed:"Couldn't submit Onboarding Identity Details. Please try again.",notification:""},onboarding_customer_business_verification_save:{success:"Onboarding Business Details saved successfully.",failed:"Couldn't save Onboarding Business Details. Please try again.",notification:""},onboarding_customer_business_verification_submit:{success:"Onboarding Business Details submitted successfully.",failed:"Couldn't submit Onboarding Business Details. Please try again.",notification:""},retry_bank_account_connection:{success:"Bank account connection completed successfully.",failed:"Bank account connection failed.",notification:""},dashboard_invite_sent:{success:"Dashboard invite sent to _user-name_ for _company-name_ successfully.",failed:"Dashboard invite failed",notification:""},onboarding_info_saved:{success:"Saved successfully",failed:"Save failed",notification:""},approve_original_merchant:{success:'Review request for "_merchant_name_" is approved successfully.',failed:"_api-error_.",notification:""},approve_global_merchant:{success:'Review request for "_original_merchant_name_" to "_approved_merchant_name_" is approved successfully.',failed:"_api-error_.",notification:""},reject_global_merchant:{success:'Vendor "_merchant_name_" review rejected',failed:"_api-error_.",notification:""},create_global_merchant:{success:'Vendor "_global_merchant_name_" successfully added to global list.',failed:"_api-error_.",notification:""},fetch_global_merchant_no_recommendation:{success:'There are no recommendations for the name "_global_merchant_name_".',failed:"_api-error_.",notification:""},save_vendor_sent_for_review:{success:'Vendor "_vendor_name_" sent for the review.',failed:"_api-error_.",notification:""},save_vendor_renamed:{success:'Vendor "_old_vendor_name_" renamed to "_updated_vendor_name_."',failed:"_api-error_.",notification:""},save_vendor_marked_as_employee:{success:"Marked as employee",failed:"_api-error_.",notification:""},save_vendor_marked_as_local_contractor:{success:"Marked as local contractor",failed:"_api-error_.",notification:""},charge_card_setup:{success:"",failed:"Failed to load Cards Setup Details! Please try again.",notification:""},charge_card_receipt_upload:{success:"Card receipt uploaded",failed:"_api-error_.",notification:""},charge_card_resend_invite:{success:"Card invite resent",failed:"_api-error_.",notification:""},charge_card_revoke_invite:{success:"Card invite revoked",failed:"_api-error_.",notification:""},card_policy_created:{success:"New policy created",failed:"_api-error_.",notification:""},card_policy_updated:{success:"Policy updated",failed:"_api-error_.",notification:""},card_policy_deleted:{success:"Policy deleted",failed:"_api-error_.",notification:""},charge_card_update_limit:{success:"Card limit updated to _amount_",failed:"Limit updation failed with _api-error_.",notification:""},charge_cards_update_limit:{success:"Limit updated for _number_of_cards_",failed:"Limit updation failed with _api-error_.",notification:""},update_charge_card_name:{success:'Card _masked_card_number_ renamed to "_new_card_name_"',failed:"Card name updation failed with _api-error_.",notification:""},update_charge_card_name_card_user:{success:'Card renamed to "_new_card_name_"',failed:"Card name updation failed with _api-error_.",notification:""},lock_charge_card:{success:"Card _masked_card_number_ locked",failed:"Card lock failed with _api-error_.",notification:""},lock_charge_card_card_user:{success:"Card locked",failed:"Card lock failed with _api-error_.",notification:""},unlock_charge_card:{success:"Card _masked_card_number_ unlocked",failed:"Card unlock failed with _api-error_.",notification:""},unlock_charge_card_card_user:{success:"Card unlocked",failed:"Card unlock failed with _api-error_.",notification:""},close_charge_card:{success:"Card _masked_card_number_ closed",failed:"Card close failed with _api-error_.",notification:""},unlock_charge_cards:{success:"_number_of_cards_ unlocked",failed:"Cards unlock failed with _api-error_.",notification:""},lock_charge_cards:{success:"_number_of_cards_ locked",failed:"Cards lock failed with _api-error_.",notification:""},close_charge_cards:{success:"_number_of_cards_ closed",failed:"Cards close failed with _api-error_.",notification:""},revoke_invite_charge_cards:{success:"Invite revoked for _number_of_cards_",failed:"Invite revoke failed with _api-error_.",notification:""},create_schedule:{success:'Schedule created for "_vendor_name_"',failed:"Schedule creation failed with _api-error_.",notification:""},save_schedule:{success:'Schedule saved for "_vendor_name_"',failed:"Save schedule failed with _api-error_.",notification:""},je_posted:{success:"JE Posted",failed:"JE Posting failed with _api-error_.",notification:""},actual_matching_match_and_reverse:{success:"Reversed _count_ accruals from _vendor_name_",failed:"Could not reverse accruals from _vendor_name_",notification:"Reversed _count_ accruals from _vendor_name_. Some could not be reversed."},actual_matching_undo_reversal:{success:"Undid _count_ reversal(s) for _vendor_name_",failed:"Could not undo reversal(s) for _vendor_name_",notification:"Undid _count_ reversal(s) for _vendor_name_. Some could not be undone."},ignore_schedule:{success:"Schedule Ignored",failed:"Schedule Ignore failed with _api-error_.",notification:""},revert_schedule:{success:"Schedule reverted",failed:"Revert failed with _api-error_.",notification:""},ignore_accrual:{success:"Accrual skipped",failed:"Skip accrual failed with _api-error_.",notification:""},revert_accrual:{success:"Accrual reverted",failed:"Revert accrual failed with _api-error_.",notification:""},delete_schedule:{success:'Schedule deleted for "_vendor_name_"',failed:"Delete schedule failed with _api-error_.",notification:""},mark_as_complete_schedule:{success:'Schedule marked as completed for "_vendor_name_"',failed:"Mark as complete schedule failed with _api-error_.",notification:""},cancel_journal_entry:{success:"Accrual Canceled",failed:"Accrual Cancel failed with _api-error_.",notification:""},charge_card_accept_term:{success:"",failed:"_api-error_.",notification:""},charge_card_express_interest:{success:"Interest expressed successfully",failed:"_api-error_.",notification:""},save_task_detail:{success:"",failed:"_api-error_.",notification:""},fetch_task_detail:{success:"Task details fetched successfully.",failed:"_api-error_.",notification:""},delete_task:{success:"",failed:"_api-error_.",notification:""},archive_task:{success:"",failed:"_api-error_.",notification:""},snooze_task:{success:"Task snoozed until _snoozed_until_",failed:"_api-error_.",notification:""},unsnooze_task:{success:"Task unsnoozed",failed:"_api-error_.",notification:""},update_charge_card:{success:"",failed:"_api-error_.",notification:""},notification_settings_saved:{success:"Notification Settings Saved",failed:"_api-error_.",notification:""},referral_invite_sent:{success:"Referral Invite Sent",failed:"_api-error_.",notification:""},notification_mark_as_read:{success:"Notifications marked as read successfully.",failed:"Something went wrong! Please try again.",notification:""},settings_accounting_accounts_updated:{success:"Accounts saved",failed:"",notification:""},task_group_creation_success:{success:"Task group created successfully",failed:"Task group creation failed",notification:""},task_group_deletion_success:{success:"Task group deleted successfully",failed:"Task group deletion failed",notification:""},task_group_update_success:{success:"Task group updated successfully",failed:"Task group update failed",notification:""},primary_funding_account_updated:{success:"Bank account updated for _productType_.",failed:"",notification:""},task_time_spent_validation:{success:"",failed:"Time can't exceed 99h 59m",notification:""},missing_receipts_attachment:{success:"",failed:"Failed to upload attachment__message__ please try again!",notification:""},flux_analysis_reviewed:{success:"_vendors_count_ _vendor_ reviewed",failed:"_api-error_.",notification:""},flux_analysis_unreviewed:{success:"_vendors_count_ _vendor_ unreviewed",failed:"_api-error_.",notification:""},express_pay_submit:{success:"Payment scheduled",failed:"_api-error_.",notification:""},recon_transaction_categorize:{success:"Transaction reviewed",failed:"_api-error_.",notification:""},recon_transaction_match:{success:"Transaction matched",failed:"_api-error_.",notification:""},ai_cfo_create_session_and_submit:{success:"",failed:"Something went wrong, please try again!",notification:""},ai_cfo_chat_session_deleted:{success:"Chat session deleted successfully",failed:"_api-error_.",notification:""},treasury_setup:{success:"",failed:"Failed to load Treasury Setup Details! Please try again.",notification:""},treasury_accept_term:{success:"Treasury Terms accepted successfully.",failed:"Failed to accept terms. Please try again.",notification:""},treasury_transfer_money:{success:"Transfer initiated.",failed:"Transfer failed. Please try again.",notification:""},treasury_transfer_money_failed:{success:"",failed:"Transfer failed. Please try again.",notification:""},auto_transfer_rule_create:{success:"Auto transfer rule created successfully.",failed:"_api-error_.",notification:""},auto_transfer_rule_update:{success:"Auto transfer rule updated successfully.",failed:"_api-error_.",notification:""},auto_transfer_rule_delete:{success:"Rule deleted.",failed:"_api-error_.",notification:""},auto_transfer_rule_pause:{success:'Rule paused "__ruleName__"',failed:"_api-error_.",notification:""},auto_transfer_rule_resume:{success:'Rule resumed "__ruleName__"',failed:"_api-error_.",notification:""},treasury_update_portfolio_allocation:{success:"Portfolio allocation updated.",failed:"Portfolio allocation update failed. Please try again!",notification:""},reports_resync:{success:"",failed:"Something went wrong. Please try again.",notification:"No new data available."},invalid_phone_number:{success:"",failed:"Invalid phone number",notification:""},create_transfer_entry:{success:"Expense deleted.\nTransfer created.",failed:"Unable to create transfer. Please try again.",notification:""},accounting_classes_enabled_update:{success:"Accounting Classes setting updated.",failed:"Couldn't update Accounting Classes setting. Please try again.",notification:""},accounting_projects_enabled_update:{success:"Projects setting updated.",failed:"Couldn't update Projects setting. Please try again.",notification:""},accounting_projects_qbo_not_enabled:{success:"",failed:"Please enable projects in QBO before enabling in the Zeni dashboard!",notification:""},capitalization_threshold_update:{success:"Capitalization threshold updated.",failed:"Couldn't update capitalization threshold. Please try again.",notification:""},account_excluded_from_reconciliation:{success:"_account-name_ excluded",failed:"Account exclusion failed",notification:""},account_included_in_reconciliation:{success:"_account-name_ included",failed:"Account inclusion failed",notification:""},confirm_statement_mapping:{success:"",failed:"Couldn't confirm account mapping. Please try again.",notification:""},statement_parsing_in_progress:{success:"_account_name_ parsing in progress",failed:"",notification:""},statement_parsing_complete:{success:"_account_name_ parsing complete. Review _transaction_count_ transactions",failed:"",notification:""},ai_accountant_trigger_job:{success:"AI Accountant job triggered",failed:"Couldn't trigger the job. __reason__",notification:""},credit_agent_update_profile:{success:"Card profile updated successfully.",failed:"Couldn't update card profile. Please try again.",notification:""},credit_agent_save_macro:{success:"Credit agent prompt saved.",failed:"Couldn't save prompt. Please try again.",notification:""},credit_agent_schedule_cron:{success:"Credit score analysis started.",failed:"Couldn't start analysis. Please try again.",notification:""},oauth_consent_approve:{success:"",failed:"OAuth authorization failed. __reason__",notification:""},oauth_consent_invalid_request:{success:"",failed:"Invalid OAuth request. __reason__",notification:""},create_sub_task:{success:"Subtask created successfully",failed:"Subtask creation failed",notification:""},invoicing_dunning_case_resolved:{success:"Dunning case resolved.",failed:"_api-error_.",notification:""},invoicing_dunning_retry:{success:"Payment retry started.",failed:"_api-error_.",notification:""},invoicing_dunning_cancel:{success:"Dunning case cancelled.",failed:"_api-error_.",notification:""},invoicing_dunning_settings_save:{success:"Dunning settings saved.",failed:"_api-error_.",notification:""},invoicing_qbo_backfill:{success:"QuickBooks backfill started.",failed:"_api-error_.",notification:""},invoicing_qbo_sync_health_retry:{success:"Sync task retried.",failed:"_api-error_.",notification:""},invoicing_qbo_settings_save:{success:"QuickBooks settings saved.",failed:"_api-error_.",notification:""},invoicing_branding_save:{success:"Branding settings saved.",failed:"_api-error_.",notification:""},invoicing_discount_archive:{success:"Discount archived.",failed:"_api-error_.",notification:""},invoicing_discount_unarchive:{success:"Discount unarchived.",failed:"_api-error_.",notification:""},invoicing_discount_delete:{success:"Discount deleted.",failed:"_api-error_.",notification:""},invoicing_invoice_reminder_sent:{success:"Reminder sent.",failed:"_api-error_.",notification:""},invoicing_invoice_regenerated:{success:"Invoice regenerated.",failed:"_api-error_.",notification:""},invoicing_invoice_voided:{success:"Invoice voided.",failed:"_api-error_.",notification:""},invoicing_catalog_item_saved:{success:"Product saved.",failed:"_api-error_.",notification:""},invoicing_customer_saved:{success:"Customer saved.",failed:"_api-error_.",notification:""},invoicing_subscription_saved:{success:"Subscription saved.",failed:"_api-error_.",notification:""},invoicing_coupon_saved:{success:"Coupon saved.",failed:"_api-error_.",notification:""},invoicing_invoice_saved:{success:"Invoice saved.",failed:"_api-error_.",notification:""},invoicing_subscription_activated:{success:"Subscription activated.",failed:"_api-error_.",notification:""},invoicing_subscription_cancellation_removed:{success:"Scheduled cancellation removed.",failed:"_api-error_.",notification:""},invoicing_subscription_cancelled:{success:"Subscription cancelled.",failed:"_api-error_.",notification:""},invoicing_subscription_non_renewing:{success:"Subscription set to non-renewing.",failed:"_api-error_.",notification:""},invoicing_subscription_paused:{success:"Subscription paused.",failed:"_api-error_.",notification:""},invoicing_subscription_reactivated:{success:"Subscription reactivated.",failed:"_api-error_.",notification:""},invoicing_subscription_resumed:{success:"Subscription resumed.",failed:"_api-error_.",notification:""},invoicing_subscription_term_end_changed:{success:"Term end updated.",failed:"_api-error_.",notification:""},invoicing_credit_note_saved:{success:"Credit note issued.",failed:"_api-error_.",notification:""},invoicing_payment_recorded:{success:"Payment recorded.",failed:"_api-error_.",notification:""}},currency:{currencyCode:"USD",currencySymbol:"$",currency:"United States Dollar",countryCode:"US"},format:{ssnFormat:"###-##-####",tinFormat:"##-#######"},status:{pending:"Pending",reviewed:"Reviewed"},cancel:"Cancel",confirm:"Confirm",continue:"Continue",proceed:"Proceed",next:"Next",noText:"--",privacy:"Zeni Privacy Policy",terms:"Terms and Conditions",privacyPolicyUrl:"https://www.zeni.ai/legal/privacy-policy",termsUrl:"https://www.zeni.ai/legal/terms-of-service",footer:{approve:"Approve",reject:"Reject",resubmit:"Resubmit",continueAnyway:"Continue Anyway",inReview:"In Review",sentForReview:"Sent for Review",linkCard:"Link Card",markAsUnReviewed:"Mark as Unreviewed",markAsReviewed:"Mark as Reviewed",saveForLater:"Save for Later",reconcile:"Reconcile",noThanks:"No, Thanks",letsGetStarted:"Let's Get Started"},completeText:"Complete",incompleteText:"Incomplete",notInitiatedText:"Not Initiated",pendingReviewText:"Pending Review",pendingVerificationText:"Pending Verification",retry:"Retry",verified:"Verified",validation:{emailAddressRequired:"Email address required",invalidEmailAddress:"Invalid email address",invalidUrlAddress:"Invalid URL"},needHelp:{text:"Need Help",hoverPrefix:"Experiencing issues?",hoverSuffix:" Schedule a call"},confirmationPopup:{discardTitle:"Discard unsaved changes?",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",discard:"Discard",areYouSureYouWantToRemove:"Are you sure you want to remove?",areYouSureYouWantToDeleteThis:"Are you sure you want to delete this bank account?",areYouSureYouWantToOverwriteThe:"Are you sure you want to overwrite the data?",previewEmail:"Preview email?",areYouSure:"Are you sure?"},via:"via",cockpit:"cockpit",analytics:"Analytics",filters:{noOptions:"No Options",noMatchesFound:"No Matches Found",userProfileAltText:"Failed to load"},updated:"Updated",hoursAgo:"hours ago",minutesAgo:"a few minutes ago",noMatches:"Nothing matched your search. Please try again!",noReport:"No _item-name_ to display yet!",reloadPage:{label:"Something went wrong, please try again!"},settings:{title:{accounting:"Accounting",approvalRules:"Approval Rules",bankConnections:"Bank Connections",integrations:"Integrations",myProfile:"My Profile",myBankConnections:"My Bank Connections"},subtitle:{myProfile:"Profile Details"},label:{primary:"Primary",billPay:"Bill Pay",noManager:"No Manager"},infoText:{accounting:"Quick access to manage the company's accounting-related settings",approvalRules:"Quick access to manage the multi-level approval rules for bills & reimbursements to make Zeni work better for you",businessVerification:"Financial regulations require Zeni to collect both identity & company details to verify your business",companyDetails:"Quick access to manage the company's detailed information"},bankConnectionHeader:{productType:"Products",primaryAccount:"Primary Account",linkAccount:"QBO Linked Account",balance:"Balance"},bankConnectionListHeader:{other:"Other Connections"},productNameByType:{bill_pay:"Bill Pay",reimbursement:"Reimbursements",zeni_accounts:"Checking",zeni_treasury:"Treasury",charge_cards:"Cards"},otherAccount:{subTitle:"Not assigned",subTitleSmall:"not assigned",remove:"Remove Connection"},notifications:{sectionTitle:{reminders:"Reminders",monthEndInsights:"Month-end Insights"},frequency:{biWeekly:"Bi-Weekly"},mode:{email:"Email",dashboard:"Dashboard"},taskNotifications:{sectionTitle:"Task Notifications",groupCount:"({active}/{total})",channelLabels:{slack:"Slack"},frequencyLabels:{instant:"Instant",daily:"Daily"},expandGroupAriaLabel:"Expand {group}",collapseGroupAriaLabel:"Collapse {group}"},reminders:{missingReceiptNotification:"Receipts:",uncategorizedTransactionNotification:"Uncategorized Transactions:",pendingBillApprovalNotification:"Bill Approvals:",pendingReimbursementApprovalNotification:"Reimbursement Approvals:"},monthEndInsights:{labels:{notifyMe:"Notify Me:",notifyOthers:"Notify Others:"},userFieldPlaceholder:"Who should receive this email?",stopReceivingEmailsText:"To stop receiving this email, reach out to",stopReceivingMonthEndInsightsSubject:"Stop Month End Insights"},reminderFrequencyOptions:[{label:"Daily",value:"daily"},{label:"Weekly",value:"weekly"},{label:"Bi-weekly",value:"bi-weekly"},{label:"Monthly",value:"monthly"}]},integrations:{aiAgents:{accountant:{tagline:"Day-to-day books",description:"Runs your books continuously — categorizes transactions, reconciles bank and card feeds, drafts journal entries, and manages AP/AR aging without manual intervention.",tags:["Auto categorization","Reconciliation","Receipt matching","Journal entries","Bill drafting","AP/AR aging","Flux analysis"]},cfo:{tagline:"Strategic finance",description:"Answers any financial question in real time — builds forecasts, surfaces weekly and monthly insights, analyzes vendor exposure, and tracks collections and cash position.",tags:["Any financial question","Forecasting","Monthly insights","Spend analysis","Vendor exposure","Collections"]}},progress:{headlineTemplate:"{connected} of {total} areas connected — your AI agents are running at {coverage}% coverage",description:"{total} areas need attention. Each connection unlocks new AI capabilities — the more you connect, the less manual work for your team."},tabs:{ledger:{title:"Ledger",pillTitle:"Ledger",description:"Connect your ledger and watch your AI team go to work."},banks:{title:"Banks and corporate cards",pillTitle:"Banks and cards",description:"Connect any accounts you have access to."},revenue:{title:"Revenue and payments",pillTitle:"Revenue & payments",description:"Connect any tools you use — mix and match as needed."},payroll:{title:"Payroll and HR",pillTitle:"Payroll and HR",description:"People costs and headcount intelligence."},email:{title:"Email and calendar",pillTitle:"Email and calendar",description:"Financial context that lives outside your ledger."}},badges:{connected:"Connected",notConnected:"Not Connected",comingSoon:"Coming Soon",active:"Active",inactive:"Inactive"},aiCapabilityHeader:{heading:"What your AI Agents can see",subheadingConnected:"{{areasConnected}} connected — connect more areas to unlock full AI capability.",subheadingEmpty:"Connect any area to unlock AI capabilities.",footnote:"Connect what you use — you do not need all five areas for AI Agents to deliver value."},recommended:{first:"Recommended first",second:"Recommended second",third:"Recommended third",fourth:"Recommended fourth",fallback:"Recommended next"},aiBenefits:{ledger:{accountant:"AI Accountant runs your books continuously, no manual work.",cfo:"AI CFO grounds every answer in your live general ledger."},banks:{accountant:"AI Accountant does faster close through automatic reconciliation.",cfo:"AI CFO answers with real time precision."},revenue:{accountant:"AI Accountant drafts revenue JEs and matches invoices automatically.",cfo:"AI CFO tracks MRR, churn, and ARR in real time."},payroll:{accountant:"AI Accountant handles payroll journal entries automatically.",cfo:"AI CFO tracks headcount cost in real time."},email:{accountant:"AI Accountant handles every emailed receipt, invoice, and itinerary.",cfo:"AI CFO catches commitments and gaps before the close.",accountantBullets:[{iconKey:"receipt-email",text:"Receipts matched and auto-drafted JEs"},{iconKey:"calendar",text:"Calendar context on every expense"},{iconKey:"bills",text:"Vendor invoices ingested and journalized"},{iconKey:"reimbursements",text:"Travel expenses built automatically"}],cfoBullets:[{iconKey:"notification",text:"Subscription renewal radar"},{iconKey:"search",text:"Pre close gap detection"}]},unlocksAccountantCta:"What it unlocks for AI Accountant",unlocksCfoCta:"What it unlocks for AI CFO",unlocksCombinedCta:"What it unlocks for AI Accountant + AI CFO"},plaidCard:{title:"Bank accounts and credit cards",subtitle:"Connected via Plaid — covers checking, savings, and all major credit cards.",worksWithLabel:"Works with",worksWithInstitutions:["Chase","Wells Fargo","Bank of America","Amex","Citi","Capital One","+12,000 more"],accountMaskSuffix:" · Connected via Plaid",addAccountButton:"Add account or card",loadingState:"Loading your bank accounts…",emptyStateNotConnected:"Connect your first bank account to get started.",connectButton:"Connect via Plaid"},corporateSpend:{heading:"Corporate spend platforms",subtitle:"Native direct connections — richer than Plaid because receipts are already matched, spend is pre-categorized, and employee analytics are included.",directConnectionNote:"Direct connection — not via Plaid"},emailCard:{title:"Connect your inbox and calendar",subtitle:"Read only — receipts and invoices only — nothing stored."},actions:{configure:"Configure",connect:"Connect",disconnect:"Disconnect",notifyMe:"Notify Me",notifyMeQueued:"We'll notify you",reconnect:"Reconnect"},disconnectDialog:{title:"Disconnect {connectorName}",description:"Are you sure you want to disconnect {connectorName}? Zeni will no longer be able to query your {connectorName} data through AI CFO chat. You can reconnect at any time.",disconnecting:"Disconnecting..."},comingSoonFooter:"Coming soon",cards:{quickbooks:{name:"QuickBooks Online",description:"Read and write ledger of record. Invoices, expenses, GL, chart of accounts, journal entries.",capability:"Activates AI Accountant auto categorization, reconciliation, and the full journal entry engine — gives AI CFO its financial foundation for every answer and forecast.",footerText:"Takes about 2 mins",refreshTooltip:"Sync QuickBooks changes to your dashboard"},netsuite:{name:"NetSuite",description:"Enterprise ERP — multi entity consolidation, advanced revenue recognition, GL across subsidiaries.",capability:"Enables both AI Agents to operate across subsidiaries with consolidated close and multi entity reporting.",footerText:"For multi-entity companies"},plaid:{name:"Plaid",description:"Bank account connections — cash balances, real-time transactions, statement-level history.",capability:"Feeds AI Accountant the daily cash and card activity that powers reconciliation, missing-receipt detection, and live balance views for AI CFO.",footerText:"Takes about 1 min"},brex:{name:"Brex",description:"Corporate card and spend management — real time transactions, receipts, spend controls, and employee analytics.",capability:"AI Accountant gets receipt data already attached and spend categorized at source — significantly higher reconciliation accuracy than a bank feed alone."},ramp:{name:"Ramp",description:"Corporate card and spend management — real time transactions, receipt matching, vendor management, and savings insights.",capability:"AI Accountant accesses Ramp's already categorized spend and matched receipts — fewer corrections, cleaner journal entries, faster close."},chargebee:{description:"Subscription analytics — MRR, ARR, churn, active subscriptions.",capability:"AI Accountant handles subscription revenue journal entries each month — AI CFO gains full ARR waterfall for churn analysis and forecasting.",dialog:{title:"Connect ChargeBee",description:"Enter your ChargeBee site and API key to connect. You can find your API key in ChargeBee under Settings › Configure ChargeBee › API Keys.",siteLabel:"Site / Subdomain",sitePlaceholder:"your-site",siteHintPrefix:"The subdomain of your ChargeBee URL: ",siteHintSuffix:".chargebee.com",apiKeyLabel:"API Key",apiKeyPlaceholder:"Enter your API key",readOnlyRecommendation:"We recommend using a read-only API key — Zeni only needs read access to your subscription data. In ChargeBee, select “Read-Only Key” when creating the key."}},stripe:{name:"Stripe",description:"Payment processing — charges, refunds, payouts, disputes, MRR.",capability:"AI Accountant reconciles every payment and handles all related journal entries — AI CFO tracks real time MRR and payment trends.",dialog:{title:"Connect Stripe",description:"Enter a Stripe restricted API key. Create one in Stripe under Developers › API keys › Create restricted key. Grant read-only access to Charges, Refunds, Disputes, Payouts, and Balance.",apiKeyLabel:"Restricted API Key",apiKeyPlaceholder:"rk_live_...",readOnlyRecommendation:"We recommend a restricted key with read-only scopes only — Zeni never needs write access to your Stripe account."}},mercury:{name:"Mercury",description:"Business banking — account balances, transactions, statements.",capability:"Feeds AI Accountant daily Mercury cash and card activity for reconciliation and gives AI CFO live cash balances across accounts.",dialog:{title:"Connect Mercury",description:"Enter a Mercury API token. Create one in Mercury under Settings › Tokens & API › New token. Grant read-only access to Accounts and Transactions.",apiKeyLabel:"API Token",apiKeyPlaceholder:"secret-token-...",readOnlyRecommendation:"We recommend a read-only token — Zeni never needs write access to your Mercury accounts."}},paypal:{name:"PayPal",description:"Online payments — balance, transaction history, payouts.",capability:"Lets AI CFO see PayPal collected revenue, refunds, and payouts alongside Stripe and bank cash.",dialog:{title:"Connect PayPal",description:"Enter your PayPal REST API client ID and secret. Create them in the PayPal Developer dashboard under Apps & Credentials › Live › Create App. Enable Transaction Search, Invoicing, Subscriptions, and Disputes Read on the app.",clientIdLabel:"Client ID",clientIdPlaceholder:"AeA1...",clientSecretLabel:"Secret",clientSecretPlaceholder:"Enter your client secret",readOnlyRecommendation:"Zeni only needs read access to your PayPal data — leave write features (e.g. Payments) disabled on the app you create."}},hubspot:{name:"HubSpot",description:"CRM and sales pipeline — deals, contacts, close rates, forecasting.",capability:"AI CFO connects pipeline to actuals for precise revenue forecasts and close rate analysis."},billDotCom:{name:"Bill.com",description:"AP and AR workflows — vendor bills, customer invoices, payments, approvals.",capability:"AI Accountant drafts bills, handles all AP and AR journal entries, and tracks aging — AI CFO surfaces vendor insights and cash flow forecasts."},gusto:{name:"Gusto",description:"Payroll, benefits, contractor pay — runs, taxes, and headcount.",capability:"Gives AI Accountant payroll-aware journal entries and lets AI CFO break down compensation by team and role."},rippling:{name:"Rippling",description:"HRIS, payroll, and IT — unified people data.",capability:"Lets AI CFO trace headcount, role, and comp changes through the financial picture — no manual spreadsheets."},moreProviders:{name:"More providers",description:"ADP, Paychex, Justworks and others — tell us what you use.",requestButtonLabel:"Request"},gmail:{name:"Gmail",description:"Email context — invoice attachments, vendor threads, payment confirmations.",capability:"Feeds AI Accountant the supporting docs sitting in inbox threads — receipts, bills, and payment confirmations land in the ledger automatically."},outlook:{name:"Microsoft 365",description:"Outlook — Exchange — Microsoft Calendar",capability:"AI Accountant reads receipt emails to match transactions and determine the right accounting treatment, then drafts the correct journal entry without anyone asking."}},connectorTooltips:{accountantSectionLabel:"AI Accountant",cfoSectionLabel:"AI CFO",quickbooks:{heading:"What you unlock by connecting QuickBooks",accountantBullets:["Auto-categorizes every transaction into your chart of accounts.","Reconciles bank, card, and ledger lines end-to-end.","Drafts the journal entries that close your books."],cfoBullets:["Grounds every forecast and answer in your live ledger.","Powers cash, burn, and runway in the dashboard."]},netsuite:{heading:"What you will unlock by connecting NetSuite",accountantBullets:["Consolidates close across every subsidiary in your structure.","Drafts multi-entity GL with intercompany eliminations.","Handles advanced revenue recognition schedules."],cfoBullets:["Rolls cash, burn, and runway up across all subsidiaries.","Forecasts respect entity-level transfer pricing and FX."]},plaid:{heading:"What you unlock by connecting banks & cards",accountantBullets:["Live bank and card feeds give AI Accountant everything it needs to automatically reconcile every transaction the moment it lands.","No waiting for exports, no manual matching at month end.","Each account connected means more transactions reconciled automatically and a close that takes days instead of weeks."],cfoBullets:["Every connected account gives AI CFO live cash position, accurate burn rate, and runway answers based on what is actually in the bank right now and not last month's close.","The richer your data, the more precise every answer becomes."]},brex:{heading:"What you unlock by connecting Brex",accountantBullets:["Receipts arrive pre-attached — no chasing employees at month end.","Spend is categorized at source, with merchant and policy context.","Reconciliation accuracy lifts significantly vs. a bank feed alone."],cfoBullets:["Burn drilldowns by department, employee, and vendor.","Live policy-violation flags surface in the cash review."]},ramp:{heading:"What you unlock by connecting Ramp",accountantBullets:["Matched receipts and pre-categorized spend arrive ready to post.","Vendor management context cleans up duplicates and renames.","Fewer corrections in the close — journal entries land cleaner."],cfoBullets:["Vendor-level spend forecasts with renewal and contract dates.","Savings insights flow into the runway model automatically."]},mercury:{heading:"What you unlock by connecting Mercury",accountantBullets:["Direct Mercury feed gives AI Accountant transaction details without Plaid latency.","Wires, ACH, and card spend reconcile against the ledger automatically."],cfoBullets:["Live operating cash, runway, and reserve balances in the dashboard.","Treasury yield surfaces in cash position views."]},stripe:{heading:"What you unlock by connecting Stripe",accountantBullets:["Reconciles every charge, refund, payout, and dispute end-to-end.","Posts the fee and Stripe-balance journal entries for you.","Handles foreign-currency settlements and FX gain/loss."],cfoBullets:["Live MRR and payment-trend telemetry in the dashboard.","Dispute and refund signal feeds churn and risk forecasts."]},paypal:{heading:"What you unlock by connecting PayPal",accountantBullets:["PayPal sales, refunds, and fees post to the ledger automatically.","Multi-currency conversions are matched and journaled per ASC 830."],cfoBullets:["PayPal-driven revenue and refunds flow into MRR and churn metrics.","Held-funds visibility in the cash position view."]},hubspot:{heading:"What you unlock by connecting Hubspot",accountantBullets:[],cfoBullets:["Live MRR and payment-trend telemetry in the dashboard.","Dispute and refund signal feeds churn and risk forecasts."]},chargebee:{heading:"What you unlock by connecting Chargebee",accountantBullets:["Monthly subscription revenue journal entries posted automatically.","Deferred revenue + accrual schedules drafted from your billing data.","Refunds, credits, and proration handled per ASC 606."],cfoBullets:["Full ARR waterfall — new, expansion, contraction, churn.","Cohort churn and forecast scenarios in the dashboard."]},billDotCom:{heading:"What you unlock by connecting Bill.com",accountantBullets:["Monthly subscription revenue journal entries posted automatically.","Deferred revenue + accrual schedules drafted from your billing data.","Refunds, credits, and proration handled per ASC 606."],cfoBullets:["Full ARR waterfall — new, expansion, contraction, churn.","Cohort churn and forecast scenarios in the dashboard."]},gusto:{heading:"What you unlock by connecting Gusto",accountantBullets:["Every pay run drafts journal entries across salaries, benefits, taxes, and contractor payments.","Tax filings and benefits accruals land in the ledger every period."],cfoBullets:["Fully-loaded cost per head by department, live.","Headcount spend vs. budget answers without spreadsheets."]},rippling:{heading:"What you unlock by connecting Rippling",accountantBullets:["Payroll, benefits, and contractor payments post journal entries automatically.","Stock-comp and equity events flow into the ledger as configured."],cfoBullets:["Fully-loaded comp visibility by department, role, and location.","Headcount-driven runway scenarios update in real time."]},gmail:{heading:"What you unlock by connecting Gmail",accountantBullets:["Receipts to JEs — reads receipt emails, matches them to transactions, drafts the journal entry.","Calendar context cross-checks client, event, and business purpose on every expense.","Invoice attachments are detected, parsed into Bills, and journaled on arrival.","Travel reports are built automatically from flight and hotel confirmations."],cfoBullets:["Renewal radar surfaces upcoming renewals and pricing changes before charges hit.","Pre-close gap scan catches unreconciled invoices and receipts before month end."]},outlook:{heading:"What you unlock by connecting Outlook",accountantBullets:["Reads receipt emails to match transactions and draft the right journal entry.","Detects invoice attachments and posts them straight into AP.","Builds travel reports from flight and hotel confirmations."],cfoBullets:["Renewal radar surfaces upcoming renewals and pricing changes before charges hit.","Pre-close gap scan catches unreconciled invoices and receipts before month end."]}},areaTooltips:{ledger:{heading:"What you unlock by connecting your ledger",accountantBullets:["Categorizes every transaction into your chart of accounts.","Reconciles bank, card, and GL lines and drafts journal entries."],cfoBullets:["Grounds every forecast and answer in your live ledger.","Powers cash, burn, and runway in the dashboard."]},banks:{heading:"What you unlock by connecting banks & cards",accountantBullets:["Live bank and card feeds give AI Accountant everything it needs to automatically reconcile every transaction the moment it lands. No waiting for exports, no manual matching at month end. Each account connected means more transactions reconciled automatically and a close that takes days instead of weeks."],cfoBullets:["Every connected account gives AI CFO live cash position, accurate burn rate, and runway answers based on what is actually in the bank right now and not last month's close. The richer your data, the more precise every answer becomes."]},revenue:{heading:"What you unlock by connecting revenue & payments",accountantBullets:["Charges, refunds, payouts, and disputes reconcile end-to-end.","Subscription billing posts revenue and deferred-revenue schedules per ASC 606."],cfoBullets:["Full ARR waterfall — new, expansion, contraction, churn.","Live MRR and payment-trend telemetry in the dashboard."]},payroll:{heading:"What you unlock by connecting payroll & HR tools",accountantBullets:["Every pay run generates journal entries across salaries, benefits, taxes, and contractor payments. AI Accountant reads your payroll data and automatically drafts, schedules, and maintains all of these every period — so your books reflect payroll costs accurately without anyone entering a line item."],cfoBullets:['With payroll connected, AI CFO can answer "what is our fully loaded cost per head by department?" and "how does headcount spend compare to budget?" with live data and not a spreadsheet someone pulled last week.']},email:{heading:"What you unlock by connecting email & calendar tools",accountantBullets:[{title:"Receipts to JEs",body:"Reads receipt emails, matches them to transactions, drafts the right journal entry."},{title:"Calendar",body:"When a receipt arrives, cross-checks your calendar to prefill client, event, and business purpose on every expense."},{title:"Invoices auto-posted",body:"Detects invoice attachments, parses them into Bills, and posts the journal entry on arrival right away."},{title:"Travel reports built",body:"Reconciles flight and hotel confirmations to build full travel reports — name, dates, purpose prefilled."}],cfoBullets:[{title:"Renewal radar",body:"Surfaces renewal and pricing-change emails before charges hit your card."},{title:"Pre-close gap scan",body:"Scans for unreconciled invoices and receipts before month end — gaps land pre-close, not after."}]}}}},copyToClipBoard:{copied:"Copied"},aiAgentsActivatingPage:{navTitle:"AI Agents are activating",stepCounter:"Step {current} of {total}",sidebar:{connectLedger:"Connect Ledger",connectLedgerSubtitle:"Quickbooks or Netsuite",connectDataSource:"Connect Data Sources",connectDataSourceSubtitle:"Bank, revenue, payroll and more...",setUpBilling:"Set up billing",setUpBillingSubtitle:"Your zeni subscription",verify:"Verify",verifySubtitle:"Unlock your finance stack"},ledgerSection:{title:"QBO connected. Your AI team is reading your books.",subtitle:"Your finance graph and personalized AI models are being built. Here's what's happening right now.",readyInLabel:"Will be ready in 2 hrs",workingPillLabel:"Working",buildingPillLabel:"Building",readingCountsSubtitle:"Reading __transactionCount__ transactions and __glAccountCount__ GL accounts.",rows:[{title:"Reading chart of accounts and transactions",subtitle:"Reading your chart of accounts and transactions."},{title:"Building your company's finance graph",subtitle:"Finance graph built — vendors, accounts, and cash flow patterns mapped."},{title:"Configuring reconciliation and flux analysis",subtitle:"Reconciliation engine configured and flux analysis running."},{title:"AI CFO financial foundation established",subtitle:"AI CFO financial foundation established — ready to answer questions."}]},backgroundSection:{title:"Deeper AI work running in the background",subtitle:"No action required!",readyInLabel:"Will be ready in 2-4 hrs",startingPillLabel:"Starting",rows:[{title:"Fine-tuning LLM models for {tenantName}",subtitle:"Personalizing to your vendors, accounts, and transaction patterns — informed by 1,000+ Zeni customers and $20B in transactions."},{title:"Configuring RAG-based financial knowledge graph",subtitle:"Building a retrieval layer over your entire financial history — directly improves AI Accountant's transaction categorization accuracy."},{title:"Creating personalized financial context for {tenantName}",subtitle:"Your AI Agents will know your industry, seasonality, vendor relationships, and close patterns before you ask a single question."}]},footerButtonLabel:"Continue to connect more sources"},monthsByIndex:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},oauthConsent:{invalidRequestTitle:"Invalid Authorization Request",authorizeTitle:"Authorize __clientName__",accessSubtitle:"wants to access your Zeni financial data.",signedOutHeadlineSuffix:"wants to access your Zeni financial data",signInToContinue:"Sign in to continue",signIn:"Sign In",signedInAs:"Signed in as __email__",permissionsLabel:"This will allow __clientName__ to:",permissionReadFinancials:"Read your financial data and reports",permissionAccessTransactions:"Access transaction and account information",permissionQueryAi:"Query your Zeni AI assistant on your behalf",selectCompany:"Select a company",company:"Company",allow:"Allow",deny:"Deny"}},download:{errorMessages:{fileDownloadError:"Download __feature__ Failed with"},defaultFileName:"Report.xlsx"},balanceCard:{cashBalanceSectionTitle:"Total Cash Balance",cardBalanceSectionTitle:"Total Card Balance",comparedTo:"compared to",noBalanceText:"No balance data to display yet!"},insightsCard:{vs:"vs",askSomethingElse:"Ask something else?",no_data:{label:"Cash, Opex, Revenue, COS, and Cash In Cash Out Insights, will appear once you have sufficient financial activity. Stay tuned! 💸"}},timeframe:{day:"Days",week:"Weeks",free_range:"Time period"},compareSwitchLabel:"Compare",compareMode:{compare_mode_percent:"Percentage"},chartCard:{no_data_available:"No data available!",no_data_available_for:"No data available for",forecast_dropdown:{forecast_source:"Via Quickbooks",forecast_invalid_issue:"This period is not in the time frame of the actuals. Please view it via the Forecast tab."},netBurnOrIncome:{expenses:"OPEX",no_data_available:"A minimum of one-month data is required!"},netBurnOrIncomeCalculator:{title:"Burn Rate Calculator",accounting_method:{label:"Configure Burn Rate, Runway, and Cash Zero date based on below options:",ebitda:"EBITDA"},time_span_id_for_average:{label:"Further configure Burn Rate, Runway, and Cash Zero date based on below options:",last_month:"Last month",last_completed_month:"Last completed month",average_of_last_2_months:"Average of last 2 completed months",average_of_last_3_months:"Average of last 3 completed months",under_review_last_month_label:"(Including Under Review)"}},no_data:{revenue:"No revenues to display yet, but thrift is a great revenue. Fight On!🤘",cash_in_cash_out:"No cash in cash out to display yet!",cash_position:"No cash position to display yet!",net_burn_or_income:"No net burn to display yet!",operating_expenses:"No operating expenses to display yet!",top_expenses:{this_week_to_date:"No expenses this week 🤷",last_week:"No expenses last week 🤷",this_month_to_date:"No expenses this month 🤷",last_month:"No expenses last month 🤷",last_3_months:"No expenses last 3 months 🤷",last_6_months:"No expenses last 6 months 🤷",last_12_months:"No expenses last 12 months 🤷",this_year_to_date:"No expenses this year 🤷",last_year:"No expenses last year 🤷"},aging_report:"No data to display yet!"}},drawerMenus:{home:"Home",users_and_roles:"Users & Roles",storybooks:"Storybooks",new_chat:"New Chat",explore:"Explore",search_chats:"Search Chats",command_center:"AI Close",task_checklist:"Task Checklist",reconciliation:"Reconciliations",invoicing_settings_quickbooks:"QBO Configuration"},drawerMenuSubtitles:{rewards:"Earn up to __reward-amount__ per referral"},drawerGroups:{finance:"Finance",spend_management:"Spend Management",ai_intelligence:"AI Intelligence",close_management:"Your AI Agents",banking:"Banking",administration:"Administration",personal_settings:"Personal Settings",ai_cfo:"",invoicing_setup:"Setup"},dashboardDropDownList:{menuOption:{logout:{value:"logout"},my_profile:{value:"my_profile"},referrals:{label:"Referrals",value:"referrals",referralSubText:{earn:"Earn up to __reward-amount__",suffix:" for every new company you refer to Zeni"}}}},transactionType:{creditMemo:"Credit Memo",salesReceipt:"Sales Receipt",vendorCredit:"Vendor Credit",journalEntry:"Journal Entry"},signIn:{heading:"Welcome to Zeni",confirmationLinkSent:"Sign-in link sent",message:"Your financial dashboard is just one step away. Get started.",autoLogoutHeading:"You've been logged out",autoLogoutMessagePrefix:"For your security, this session expired after ",autoLogoutMessageSuffix:" of inactivity.",signInSecurelyMessage:"Choose an account to sign in securely",signInGoogleButton:"Sign In With Google",signInMicrosoftButton:"Sign In With Microsoft",termsPrivacyFinePrintPart:"By creating an account on Zeni, you confirm that you ",agreeWith:"agree with our ",privacyPolicy:"privacy policy",signInError:"Couldn’t sign-in to your account.\nPlease try again.",signInAuthError:"Authorization failed, and sign-in is restricted.\nPlease try and authorize again.",emailNotFoundPopup:{title:"If an account exists for this email,\nwe've sent you a sign-in link.",subtitleLine1:"Didn't receive an email?",subtitleLine2:"It may take minutes for email to arrive.",checkSpam:"Check your spam or junk folder",confirmEmail:"Make sure you entered the correct email address",checkAccess:"Check your Zeni Admin for access",contactZeni:"If you're onboarding, reach out to our sales executives."},magicLinkSent:{primaryMessage:"A secure sign in link has been sent to __email__ to access the dashboard.",secondaryMessage:"If you can't see the email, check your spam/junk folder.",resendLinkCountdown:"Resend Link in __seconds__s",resendLink:"Resend Link",attemptsRemaining:"(__remaining__/__total__) attempt(s) remaining",resendLimitExceededRedirecting:"Resend Limit exceeded. Redirecting you in __seconds__s"},workEmailExample:"name@workemail.com",magicLinkExpired:"Your sign-in link has expired. Please try again.",magicLinkExpiredHeading:"This sign-in link has expired",magicLinkAlreadyUsedHeading:"This sign-in link has already been used",magicLinkAlreadyUsedMessage:"For security reasons, sign-in links can only be used once.",requestNewLink:"Request a new link",workEmailLink:"Sign in using email",workEmailSubText:"For users without Google/Microsoft access.",googleOrMicrosoftLink:"Sign in using Google or Microsoft",continueAs:"Continue as"},billPayPromoCard:{aipoweredInvoice:{prefix:"AI-powered invoice processing helps create bills in seconds."},multiLevelApproval:{prefix:"Multi-level approval flows allows you to stay in control of payments."},financeTeam:{prefix:"Fully managed by your expert Zeni Finance Team."},fastestWay:{prefix:"Fastest way to pay your vendors and contractors, 100% free"}},reimbursementPromoCard:{aiPowered:{prefix:"AI powered receipts processing helps you create reports in seconds."},multiLevel:{prefix:"Multi-level approval flows allow you to stay in control of payments."},reimburse:{prefix:"Reimburse employees at lightning speed, absolutely free"}},treasuryPromoCard:{introModal:{dontShowAgain:"Don't show this again",remindMeLater:"Remind me later"},watchVideo:{prefix:"Watch how Zeni Treasury helps you earn more."},highYield:{title:"Earn yields upto",prefix:"Put your idle cash to work and earn\n more than a standard checking account."},sipcInsured:{title:"SIPC coverage upto",prefix:"SIPC protection ensures your assets\n remain secure."},sameDayLiquidity:{title:"High liquidity",prefix:"Accelerate treasury settlements\n with same day transfers."},autoTransfers:{title:"Auto transfers",prefix:"Automatically move funds between\n accounts to optimize liquidity and returns."}},reportTitleById:{card_balance:"Card Balance",net_burn_or_income:{net_burn:"Net Burn",income:"Income"},cash_position:"Cash Position",cash_in_cash_out:"Cash In, Cash Out",top_expenses:"Top Expenses"},zeniAccountsPromoCard:{title:"Business Banking",keepInterest:{header:"Earn interest",prefixDashboard:"On your cash balance of\n <amount> per year",prefixCashBalance:"Keep the interest earned\n on your cash",footer:"* Upto <interest>% APY on total available cash "},protectCash:{prefix:"Up to <amount> in FDIC insurance\n to protect your cash",headerAnimationData:["$250K"]},noHiddenFees:{prefix:"No hidden or monthly fees,\n just great banking",headerAnimationData:["$0","$10","$20","$25","$30","$40","$50"]},freeWire:{prefix:"Free Domestic and\n International Wires",headerAnimationData:["$15","$0"]},expertSupport:{header:"Expert financial support",prefix:"Dedicated, expert support that\n helps you reduce costs",headerAnimationData:["+2"]}},reportViewSelector:{classes:{label:"Classes",dropdownLabel:"View By Classes"},accountGroups:{label:"Account Groups",dropdownLabel:"View By Account Groups"},accounts:{dropdownLabel:"View by Accounts"},projects:{dropdownLabel:"View By Projects",searchPlaceholder:"Search projects",allProjects:"Select all"},generatingReportByClass:"Generating report by Class",generatingReportByProject:"Generating report by Project"},timeframeSwitcherLabels:{free_range:"Free Range"},reports:{title:"Financial Reports",bookCloseInfoStar:"Under Review - ",bookCloseIncompleteInfoStar:"In Progress - ",bookCloseUnderReviewInfoMonth:"The current month is under review by the Zeni Finance Team. The 'Under Review' tag will be removed once a detailed review is complete.",bookCloseIncompleteInfoMonth:"This month is currently in progress and the transactions are being processed daily. Zeni team will review the financials and close the books after the end of the month.",bookCloseUnderReviewInfoQuarter:"The current quarter is under review by the Zeni Finance Team. The 'Under Review' tag will be removed once a detailed review is complete.",bookCloseIncompleteInfoQuarter:"This quarter is currently in progress and the transactions are being processed daily. Zeni team will review the financials and close the books after the end of the quarter.",bookCloseUnderReviewInfoYear:"The current year is under review by the Zeni Finance Team. The 'Under Review' tag will be removed once a detailed review is complete.",bookCloseIncompleteInfoYear:"This year is currently in progress and the transactions are being processed daily. Zeni team will review the financials and close the books after the end of the year.",bookCloseTagUnderReview:"Under Review",periodRangeCalendarTitle:"Period range",periodRangeCalendarHint:"Click a period to start, then another to complete the range. Click the same period twice for one month.",periodRangeChartDisplayLimitNote:"The chart can display up to {count} {timeframe} of available history.",horizontalClassLayoutSwitch:"Horizontal",forecast:{actualInParen:"(Actual)",forecastInParen:"(Forecast)",changePercentInParen:"(Change %)",vsActual:"Vs. Actual"},detail:{netBurnOrIncome:{avgNetBurnTitle:"Avg Net Burn in",avgNetIncomeTitle:"Avg Net Income in",avgNetBurnDesc:"This is your average net operating burn rate for the past three completed months",avgNetIncomeDesc:"This is your average net operating income for the past three completed months"},topEx:{insightLabel:"In Total Spending"}},sections:{cos:"Cost of Sales (COS)",cogs:"Cost of Sales",grossProfit:"Gross Profit",earningsBeforeInterestAndTax:"Earnings Before Interest & Tax",otherIncome:"Other Income",otherExpenses:"Other Expenses",netOtherIncome:"Net Other Income",netOperatingIncome:"Net Operating Income"},balanceSheet:{totalAssets:"Total Assets",totalLiabilities:"Total Liabilities",totalEquity:"Total Equity",totalCurrentAssets:"Total Current Assets",totalNonCurrentAssets:"Total Non-Current Assets",totalCurrentLiabilities:"Total Current Liabilities",totalNonCurrentLiabilities:"Total Non-Current Liabilities",otherCurrentAssets:"Other Current Assets",otherAssets:"Investments or Other Non-Current Assets",otherCurrentLiabilities:"Other Current Liabilities",longTermLiabilities:"Long Term Liabilities",title:"Balance Sheet"},cashFlow:{title:"Cash Flow",longTitle:"Cash Flow Statement",operatingActivities:"Operating Activities",operatingActivitiesNetIncome:"Net Income",operatingActivitiesAdjustments:"Adjustments",operatingActivitiesTotal:"Cash Flow from Operating Activities",investingActivities:"Investing Activities",investingActivitiesTotal:"Cash Flow from Investing Activities",financingActivities:"Financing Activities",financingActivitiesTotal:"Cash Flow from Financing Activities",changeInCashAndEquivalents:"Change in Cash & Equivalents",cashAndEquivalentsOpeningBalance:"Cash & Equivalents, Opening Balance",cashAndEquivalentsClosingBalance:"Cash & Equivalents, Closing Balance"},trend:{income:"Income Trend",expense:"Spend Trend"},aging:{apAging:{apAging:"AP Aging",searchPlaceholder:"Search Vendors"},arAging:{arAging:"AR Aging",searchPlaceholder:"Search Customers",totalReceivable:"Total Receivable"},agingDetail:{noDataText:"No invoices found",header:{daysPastDue:"Past Due Days",balance:"Balance Due",invoiceNumber:"Bill Number"}},apAgingDetail:{dateLabel:"AP Aging as of"},arAgingDetail:{dateLabel:"AR Aging as of"},preComputedDurationOptions:[{label:"Last Month",value:"month"},{label:"Last Quarter",value:"quarter"}],duration:{"due_1-30_days":"1 - 30 Days","due_31-60_days":"31 - 60 Days","due_61-90_days":"61 - 90 Days",due_over_90_days:"90+ Days"}},doubleStarred:"**",starred:"*"},transactionList:{fetching:"Fetching ...",loadNextMonthPrefix:"Load next month",loadPreviousMonthPrefix:"Load previous month",loadNextQuarterPrefix:"Load next quarter",loadPreviousQuarterPrefix:"Load previous quarter",loadNextYearPrefix:"Load next year",loadPreviousYearPrefix:"Load previous year",loadPreviousPrefix:"Load previous",loadNextPrefix:"Load next",monthsSuffix:"months",noTransactionsFoundForPrefix:"No transactions found for",noTransactionsFoundForPeriodPrefix:"No transactions found for period"},uncategorizedTransactionList:{income:{title:"Uncategorized Income"},missingReceipt:{missingReceiptMinAmount:{amount:75},bulkUpload:{bulkUpload:"Bulk Upload",dragAndDropReceipts:"Drag and drop receipts here",dropYourFilesHere:"Drop your files here.",orBrowseFiles:"or browse files",uploadingReceipts:"Uploading __count__ __receiptWord__...",autoMatchingReceipts:"Auto-matching __count__ __receiptWord__...",autoMatchingReceiptsGeneric:"Auto-matching receipts...",unmatched:"Unmatched",missing:"Missing",pastUnmatchedReceipts:"__count__ past unmatched receipts",possibleMatches:"__count__ Possible matches",possibleMatch:"1 Possible match",noPossibleMatch:"No possible match",noMatchFound:"No match found. We will check for future transactions.",retryMessage:"The Receipt Agent will continue attempting to match these receipts for the next 7 days.",searchByVendorDateAmount:"Search by vendor, date, or amount",orSearchManually:"Or, search manually",searchManually:"Search manually",maxFilesAllowed:"Maximum __max__ files allowed",invalidFileType:"Only PDF, JPG, and PNG files are accepted",unmatchedReceipts:"__count__ unmatched receipts",bulkUploadReceipts:"Bulk Upload Receipts",confirmMatch:"Confirm Match",matchingComplete:"Receipt matching complete! __matched__ matched, __unmatched__ unmatched.",noAutoMatchedReceipts:"No auto-matched receipts",allReceiptsMatched:"All receipts have been matched",overrideMatch:"Override Match",matchedTo:"Matched to",fileCount:"__count__ files selected",noPreview:"No preview",auditTrail:"Audit Trail",statusRetrying:"Retrying",retryingDescription:"Agent is retrying to find a match",expiredDescription:"Retry period expired — no match found",emailBannerUploadLead:"Upload or email ",emailBannerAiTail:" will instantly auto-match"}}},miscategorizedTransactionList:{income:{title:"Miscategorized Income"},expense:{title:"Miscategorized Expenses"}},transactionDetail:{deleteConfirmation:{title:"Are you sure you want to delete this receipt?"},notCategorizedTooltipText:"This transaction must be assigned a category before it can be reviewed.",recommendationBanner:{uniqueName:"recommendation.banner",zeniRecommends:"Zeni recommends",retainOr:"or retain",fieldNames:{category:"banner.recommendation.category",class:"banner.recommendation.class"},updateAll:{preface:'Update category and class for all similar "',midText:'" transactions post the book close date of '},tooltip:{category:'The "category" update recommendation is __based__',class:'The "class" update recommendation is __based__'}},header:{billNumber:"Bill No.:",receivedTag:"Received"},lineItems:{allProjects:"All Projects",totalCredits:"Total Credit",totalDebits:"Total Debit",uncategorized:"uncategorized",miscategorized:"miscategorized",uncategorizedCredit:"Uncategorized Credit",uncategorizedDebit:"Uncategorized Debit",miscategorizedCredit:"Miscategorized Credit",miscategorizedDebit:"Miscategorized Debit",postingTypeUncategorizedCredit:"uncategorizedCredit",postingTypeUncategorizedDebit:"uncategorizedDebit",postingTypeMiscategorizedCredit:"miscategorizedCredit",postingTypeMiscategorizedDebit:"miscategorizedDebit",descriptionPlaceholder:"Add description here",classControl:"class",categoryControl:"category",allClasses:"All Classes",recommendedClasses:"Recommended Classes",categories:"Categories",allCustom:"All __custom__",recommendedCustom:"Recommended __custom__",journalEntryTable:{debitPrefix:"Dr",creditPrefix:"Cr",emptyMessage:"No journal entry lines available.",differenceLabel:"Difference",addLine:"+ Add line item",amountUpdateConfirmationTitle:"Update amount?",amountUpdateConfirmationDescription:"This changes the line item total. Confirm to apply the new amount.",amountUpdatePreviousAmountLabel:"Previous amount",amountUpdateNewAmountLabel:"New amount",validation:{lineNeedsDebitOrCredit:"Every line needs a debit or credit amount.",debitsMustEqualCredits:"Total debits must equal total credits.",eachLineMustHaveNoClass:"Each line must have a category and amount",eachLineMustHave:"Each line must have a category, class and amount"}},transactionLineTable:{emptyMessage:"No transaction lines available.",addLine:"Add line item",validation:{sumMustEqual:"Total amount must be equal to __amount__",eachLineMustHaveNoClass:"Each line must have a category and amount",eachLineMustHave:"Each line must have a category, class and amount"}}},payeeDetails:{allPayees:"All Payees",payeeListPlaceholder:"Select or create payee",editPayeeTooltip:"Click to edit payee"},vendorDetails:{recommendedVendors:"Recommended Vendors",vendorListPlaceholder:"Select or create vendor",fromOldName:'Change name from "__old_name__"',toNewName:' to "__new_name__"',vendorCreation:{discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",placeholders:{vendor:"Add vendor",owner:"Add owner"},vendorDetails:{vendorClassAdditionText:"Choose a default class for this vendor.",vendorCategoryAdditionText:"Choose a default category for this vendor",classGroups:{}},vendorAlreadyExistsErrorMsg:"Vendor already exists."}},footer:{allTransactions:"All transaction of ",willUpdate:" will be updated to ",postBookCloseData:" post the book close date of ",forAllLineItems:"for all line items in this transaction."},transactionLabels:{invoice:{origionalAmount:"Original Amount:"},estimate:{estimateNo:"Estimate No.:",estimateDate:"Estimate Date:"},creditMemo:{creditMemoNo:"Credit Memo No.:"},salesReceipt:{salesReceiptNo:"Sales Receipt No.:",salesReceiptDate:"Sales Receipt Date:"},delayedCredit:{delayedCreditNo:"Delayed Credit No.:",delayedCreditDate:"Delayed Credit Date:"},deposit:{account:"Account:"},refund:{refundReceiptNo:"Refund Receipt No.:",refundReceiptDate:"Refund Receipt Date:",refundFrom:"Refund From:"},receivePayment:{referenceNo:"Reference No.:"},expense:{paymentAc:"Payment Account:"},check:{bankAc:"Bank Account:"},purchaseOrder:{purchaseOrderNo:"Purchase Order No.:",purchaseOrderDate:"Purchase Order Date:"},bill:{billNo:"Bill #"},billPayment:{bankOrCreditAc:"Bank / Credit Account:",referenceNo:"Reference No:"},journalEntry:{journalDate:"Journal Date:",totalDebit:"Total Debit:",totalCredit:"Total Credit:"},productOrService:{productOrService:"Product/Service:",quantity:"Quantity:",rate:"Rate:"},productOrServiceInfo:{amountReceived:{default:"Amount Received:",credit_memo:"Credit Used:",refund:"Amount Refunded:"},balanceDue:{credit_memo:"Credit Remaining:",default:"Balance Due:"}},memoAndAttachment:{emptyMemoContent:"No memo added.",memoPlaceHolder:"Add memo here",attachmentTitle:"Receipt(s)",emptyAttachmentContent:"Drag file here or click to upload"},transfer:{transferFundsFrom:"Transfer Funds From:",transferFundsTo:"Transfer Funds To:"},creditCardPayment:{paidForCreditCard:"Paid for Credit Card:",amountPaid:"Amount Paid:"}},attachments:{uploading:"Uploading file...",deleteAttachment:"Delete Attachment"},transactionDetailPlaceholders:{project:"Add project",name:"Search Vendor or Customer"},errorPopup:{default:{description:"We are sorry, this was unexpected.\nPlease try again later."},error406:{title:"Transaction could not be updated.",descriptionPrefix:"Updates through this transaction didn't go through as\n",descriptionSuffix:" month financials have already been\nclosed. However, we just notified your Zeni team\nso they can help make this change."},error409:{description:"Please refresh this page and try again."},error500:{description:"We just notified your Zeni team, and\nthey are working on a solution."}},vendorBulkUpdateFetchRecommendationsPopUpInfo:{title:"Updating vendor name",applyingVendorName:"Applying vendor name to all the line items",appliedVendorName:"Vendor name applied to all the line items",buildingRecommendations:"Building category & class recommendations",recommendationsBuilt:"Category & class recommendations built successfully",recommendationsBuildFailed:"Category & class recommendations build failed"},updateInProgress:"An update to this transaction is currently in progress.",reachZeniTeam:"Please reach out to your Zeni team to update transactions before the book close date.",updateCategoryClassForSimilar:"Update category and class for all similar",transactionsPostBookCloseDateOf:"transactions post the book close date of"},dashboardAccountingPage:{title:"Connect to QuickBooks",adminInfoText:"To set up your ‘_company-name_’ dashboard, we'll need access to connect to your Quickbooks.",nonAdminInfoText:"To set up your ‘‘_company-name_’ dashboard, please ask your administrator to connect to Quickbooks by logging into Zeni Dashboard."},downloadReport:{statementTypes:{pdf:"PDF",excel:"Excel",csv:"CSV"},defaultFileName:"Financial Report.pdf",reportErrorMessage:"downloadAndSaveReport Failed with",viewReport:"View Report",downloadAs:"Download As",displayColumns:{title:"Display Columns",displayOrderBy:"Display order by"},addColumns:"Add Columns",filterBar:{viewColumnsBy:"View Columns By",viewBy:"View By",displayOrder:"Display Order",reportView:"Report View",columns:"Columns"},reportFormat:"Report Format",dataNotAvailable:"Data not available",orderBy:{ascending_date:"Recent period last",descending_date:"Recent period first"},maxPeriodSelectionAllowed:{pdf:"of 13 (periods + columns) selected"},pdfColumnLimit:{title:"PDF supports up to {maxColumns} columns",description:"You've selected {selection}. Excel has no column limit.",selectionWithAddedColumns:"{periods} and {addedColumns} ({selectedColumns} total)",periods:{month:"{count} months",quarter:"{count} quarters",year:"{count} years"},addedColumn:"1 added column",addedColumns:"{count} added columns",columns:"{count} columns",downloadAsExcel:"Download as Excel"},additionalColumns:{month:{free_range_total:"Period Total",year_to_date_total:"Year to Date Total",year_to_date_last_year_total:"Year to Date last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",this_period_vs_same_period_last_year:"Compare same month last year $",same_period_last_year:"Same month last year - -same_period_last_year-",this_period_vs_last_period:"Compare with previous month $",this_period_vs_last_period_percent:"Compare with previous month %",this_period_vs_same_period_last_year_percent:"Compare same month last year %"},quarter:{free_range_total:"Period Total",year_to_date_total:"Year to Date Total",year_to_date_last_year_total:"Year to Date last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",same_period_last_year:"Same quarter last year - -same_period_last_year-",this_period_vs_last_period:"Compare with previous quarter $",this_period_vs_last_period_percent:"Compare with previous quarter %",this_period_vs_same_period_last_year:"Compare same quarter last year $",this_period_vs_same_period_last_year_percent:"Compare same quarter last year %"},year:{free_range_total:"Period Total",year_to_date_total:"Year to Date Total",year_to_date_last_year_total:"Year to Date last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",this_period_vs_last_period:"Compare with previous year $",this_period_vs_last_period_percent:"Compare with previous year %",this_period_vs_same_period_last_year:"Compare same period last year $",this_period_vs_same_period_last_year_percent:"Compare same period last year %"},labels:{month:{free_range_total:"Period Total",year_to_date_total:"YTD Total",year_to_date_last_year_total:"YTD last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",same_period_last_year:"Same month last year - -same_period_last_year-",this_period_vs_same_period_last_year:"Compare same month last year $",this_period_vs_same_period_last_year_percent:"Compare same month last year %"},quarter:{free_range_total:"Period Total",year_to_date_total:"YTD Total",year_to_date_last_year_total:"YTD last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",same_period_last_year:"Same quarter last year - -same_period_last_year-",this_period_vs_same_period_last_year:"Compare same quarter last year $",this_period_vs_same_period_last_year_percent:"Compare same quarter last year %"},year:{free_range_total:"Period Total",year_to_date_total:"YTD Total",year_to_date_last_year_total:"YTD last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",this_period_vs_same_period_last_year:"Compare same period last year $",this_period_vs_same_period_last_year_percent:"Compare same period last year %"}}},fileSwitchDialogue:{pdfLimitation:"PDF can have a maximum of 12 columns",excelNoLimitation:"Excel has no limitations on the number of columns.\nThe period / column selection will reset if you switch to PDF.",switchToExcel:"Switch to Excel",continueWithPDF:"Continue with PDF",unlimitedDateRange:"Pick unlimited date range via Excel"},reportFormats:{summary:{id:"summary",label:"Snapshot",subLabel:"High-level report"},detailed:{id:"detailed",label:"Itemized",subLabelClasses:"Report with classes",subLabelAccountGroups:"Report with account groups"},moreDetailed:{id:"more_detailed",label:"Detailed",subLabelClasses:"Report with classes and accounts",subLabelAccountGroups:"Report with account groups and accounts"}},footer:{downloadExcel:"Download Excel"}},peoplePage:{zeniPeopleTitle:"Zeni People",dropdownPlaceHolderText:"Select Role",emptySearchTextSecondLine:"Please make sure the name or email is correct.",emptyDepartmentPlaceholderText:"Select Department",notApplicable:"Not Applicable",selectManager:"Select manager",rolelabels:{superAdmin:"Super Admin",investorOrBanker:"Investor or Banker",employee:"Employee"},groups:{chargeCard:"Business Cards"},rolesDropdownDescription:{superAdmin:"Full access and can invite or remove people.",employee:"Choose individual product roles below. Admins have full access across that specific product only.",investorOrBanker:"Access to high-level data only and not transaction-level data.",finance:{user:"Users can access all financials, except salary data.",admin:"Admins can access all financials and categorize transactions."},billpay:{user:"Users can create, edit bills and approve if part of the approval rule.",admin:"Admins can view, manage all bills and set up approval rules."},reimbursement:{user:"Users can create and edit their own reimbursements.",admin:"Admins can view, manage all reimbursements and set up approval rules."},accounts:{user:"Users can view account transactions and download statements.",admin:"Admins can move money between Zeni Checking and external accounts."},chargeCard:{user:"Users can request or receive Zeni Cards and view their transactions.",admin:"Admins can Issue cards, set spend limits and manage card specific settings."},treasury:{user:"Users can view transactions and download statements.",admin:"Admins can move money between connected bank accounts and Treasury, and allocate funds to money market mutual funds."}},rootRoleFor:{superAdmin:"For Founders, CFOs and Controllers",employee:"For Employees, Executive Assistants and AP clerks",investorOrBanker:"For Board Members and Investors"},resendInvite:{label:"Resend invite!"},header:{lastSeen:"Last Seen"},invitePage:{editTitle:"Edit Profile",editZeniTitle:"Edit Zeni People",zeniTitle:"Invite Zeni People",user:"Add User",manager:"Manager:",role:"Role:",controllerText:"To add a new department, reach out to your controller ",discardTitle:"Do you want to leave this page?",discardDescription:"You will lose the data you have filled in.",emailSubject:"Request to add a new department.",managerTooltipText:"Manager can review and approve reimbursements for their direct reports.",defaultHelpText:"Enter valid email address.",otherThanZeniMailIDForZeniModeText:"Only Zeni domain is allowed.",zeniMailIDForNormalModeText:"Zeni domain is not allowed.",emailAlreadyExist:"Email entered already exists."},deleteOverlay:{title:"Remove User",description:"Removing ‘_user-name_’ from the organisation will terminate all access to Zeni."},emptyResultsMessage:"To add a new user, click on the ‘Invite People’ button."},informationCard:{howItWorks:"How It Works",thankYou:"Thank You!",youAreAwesome:"You are awesome.",howItWorksSummary:"We are working on unique ways to assist you, so over time, you’ll see new cards in your dashboard.",howItWorksInsight:"We deliver you tailored insights that can help take control of your finances, like what you can do to improve."},autoComplete:{input:{vendor:"Search another vendor",customer:"Search customer",default:"Search for vendor or customer",create:"Create new vendor as ",createRecipient:"Create new recipient as "}},companyPassportCard:{companyOfficer:"Company Officer:",typeOfInc:"Type of Incorporation (Tax Form):"},completeProfile:{title:"Complete your profile",enableTwoFA:"Enable 2FA for your protection!",twoFAEnabled:"2FA via SMS has been setup successfully",phoneSetupText:"Add your phone to set up two-factor authentication",enableTwoFADescription:"You can enable this feature to receive a one-time code via SMS to verify your identity. We never use your phone for marketing or third parties."},dashboardScreen:{input:{placeholder:"Search account, merchant, payee, transaction, etc."}},forecastPromoPage:{pageTitle:"Forecasting & Planning",pageSubTitle:"Zeni will show you the future to help you make better decisions today.",accuratelyText:"Forecast revenue, costs & cashflow",trackText:"Track performance and variances",preciseText:"Budgets across entire business",trustBanner:{title:"Zeni Forecast is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni helps you predict cash flow, align budgets, and make smarter financial decisions."},meetingButton:"Schedule a Meeting",forecastUpload:"If you already have your forecasts ready, please upload them to \n Quickbooks Online Budget Tool so we can showcase it here.✌🏻"},cardPayment:{title:"Link Credit Card",subtitle:"Fees will be charged to this card from your activation date.",terms:{term1:"You accept the ",term2:"Terms & Conditions"},cardBrands:{visa:"Visa",mastercard:"MasterCard",american_express:"American Express",discover:"Discover",jcb:"JCB",diners_club:"Diner's Club",unionpay:"UnionPay",rupay:"Rupay Card",bancontact:"Bancontact",cmr_falabella:"CMR Falabella",tarjeta_naranja:"Tarjeta Naranja",nativa:"Nativa",cencosud:"Cencosud",cabal:"Cabal",argencard:"Argencard",elo:"Elo",hipercard:"Hipercard",carnet:"Carnet",maestro:"Maestro",eftpos_australia:"Eftpos Australia",girocard:"Girocard"}},taskCard:{title:"My Tasks",singleNoteText:"We need your help in completing this task.",multiNoteText:"We need your help in completing these tasks.",expensesText:"Categorize expenses",incomeText:"Categorize income",billsAwaitingApproval:"Bills awaiting approval",reimbursementsAwaitingApproval:"Reimbursements awaiting approval",transactionsText:"Add receipt to transactions",uncategorizedAccountMappingText:"Select Uncategorized Accounts",showAll:"All other tasks"},notFoundPage:{cantFindText:"We can't find the page you are looking for!",pleaseText:"Please ",goBackText:"go back",startOverText:" or start over from ",homePageText:"Home page"},somethingWrongPage:{title:"Something went wrong",subTitle:"Please reload the page and try again."},newUpdateAvailablePage:{title:"New updates available",subTitle:"To experience new updates of this page, please reload it."},statementCloseDay:{statement:"add statement close date",dropdown:{option1:"PickADate",option2:"LastDayOfTheMonth"},lastDate:{text:"Last day of every month"},ordinalText:{lastDate:"close last day of every month",prefix:"close ",suffix:" of every month"}},companyPassport:{quickAccessInfo:"Quick access to the company's detailed information.",zeniOnlyInfo:"Below information is private and visible only to Zeni",protectedContent:"**********",snackBar:{successText:"Company Details updated successfully."},companyInfo:{title:"Company Info",industryPlaceholder:"Select industry",allIndustries:["Artificial Intelligence","Apparel / Goods","Automotive","Developer APIs","Education","Ecommerce","Environment / Sustainability","Finance / Banking","Food & Beverage","Gaming","Hardware","Healthcare","Legal","Media","Productivity","Professional Services / Consulting","Real Estate","Social","Sports"],businessModel:"Business Model:",businessModelPlaceholder:"Select business model",businessModelPlaceholderSmall:"Business model",allBusinessModels:["B2B","B2C","B2B2C","D2C","SaaS","Marketplace/C2C"],fiscalYear:"Fiscal Year:",fiscalYearPlaceholder:"Jan to Dec"},address:{titleAdd:"Add Address",saveAddress:"Save Address",popupAddressConfirmationSave:"Are you sure to change the mailing address?",popupSaveDescription:"The updated mailing address will be regarded as common for all existing wire accounts.",popupCancelDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",poweredBy:"Powered by",street:"Street Address:",streetError:"Street Address is required for __reason__",suite:"Floor/Suite/Office #:",city:"City:",cityError:"City is required for __reason__",state:"State:",stateError:"State is required for __reason__",countryError:"Country is required for __reason__",zipCode:"ZIP Code:",zipCodeError:"ZIP Code is required for __reason__",secondaryInfo:"Secondary Info:",suiteText:"Please add a suite/ unit no. to ensure your shipping info is accurate.",secondaryInfoPlaceholder:"Add secondary info",forPaymentSetup:"payment set up",forBillingSetup:"billing address"},primaryContact:{title:"Primary Contact"},companyIncInfo:{title:"Incorporation Info",incDate:"Incorporation Date:",stateOfIncPlaceholder:"Select state of incorporation",typeOfIncPlaceholder:"Select type of incorporation",stateOfIncPlaceholderSmall:"Select inc state",typeOfIncPlaceholderSmall:"Select inc type",allStatesOfIncorporation:["Alabama","Alaska","American Samoa","Mississippi","Missouri","Montana","Nebraska","Nevada","Maryland","Massachusetts","Michigan","Minnesota","Colorado","Connecticut","Dakota","Delaware","District of Columbia","Florida","Georgia","Guam","Hawaii","Idaho","New Hampshire","New Jersey","New Mexico","California","Louisiana","Maine","Illinois","Arizona","Arkansas","Indiana","Iowa","Kansas","Kentucky","New York","North Carolina","North Dakota","Northern Mariana Islands","Ohio","Oklahoma","Oregon","Orleans","Pennsylvania","Philippine Islands","Puerto Rico","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virgin Islands","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],allTypesOfIncorporation:["C Corporation","S Corporation","Limited Liability Company","Sole Proprietorship","Limited Partnership","Non-profit"]},companyTaxInfo:{title:"Tax Details",taxIdOrEIN:"Tax ID/ EIN:",dunsNumber:"DUNS Number:",naicsCode:"NAICS Code:",sicCode:"SIC Code:",taxIdOrEINPlaceholder:"Add Tax ID/ EIN",dunsNumberPlaceholder:"Add DUNS number",naicsCodePlaceholder:"Add NAICS code",sicCodePlaceholder:"Add SIC code",taxesFiledYears:"Taxes Filed For:",taxesFiledYearsPlaceholder:"Select years",taxStatus:"Tax Status:",taxLead:"Tax Lead:",adminPrivilegeRequired:"Administrator privilege is required to view this information."},companyOfficer:{companyTitle:"Title:",officer:"Officer #"},zeniFinanceTeam:{title:"Zeni Finance Team",controller:"Controller:",scheduleCall:"Schedule a Call:",scheduleCallPlaceholder:"Add calendly/chilipiper/hubspot meeting link",scheduleCallPlaceholderSmall:"Add meeting link",emailUs:"Email Us:",subscriptionPlans:"Subscription Plans:",accountManager:"Account Manager",staffAccountant:"Staff Accountant:",reportsSent:"Reports Sent",planHigherLimit:"Plan Higher Limit:",averageTwoMonthsExpenses:"Average 2 Months Expenses:",planStatus:"Plan Status",addons:"Addons:",notes:"Notes:",schedule:"Schedule"}},transactions:{titles:{miscategorized:"Miscategorized",uncategorized:"Uncategorized"},filters:{equalOperatorValue:"equal"}},cockpit:{errorMessages:{fileDownloadError:"Download cockpit Failed with",auditReportFetchError:"Failed to load"},defaultFileName:"Cockpit Tab - Detail.xlsx",notePlaceholder:"Add note",commentPlaceholder:"Write a reason (required)",lastEdited:"Last edited:",cockpitHeaderSubsidiaryText:"& Subsidiaries",searchplaceholder:"Search customers",businessDay:"Business Day",emptySearchOnFilters:"Filter applied, no tenant found.",emptySearchTextSecondLine:"Please make sure the company name is correct.",searchByName:"Search By Name",userMultiSelectHeaders:{allUsers:"All Users",allUserGroups:"All User Groups",selectedUserGroups:"Selected User Groups",selectedUsers:"Selected Users",selectedControllers:"Selected Controllers",selectedPreparers:"Selected Preparers",selectedReviewers:"Selected Reviewers",selectedAPAnalysts:"Selected AP Analysts",selectedTaxLeads:"Selected Tax Leads"},titles:{management:"Management",portfolio:"Portfolio",audit:"Audit",healthMonitor:"Health Monitor",taskManager:"Task Manager"},creditAgent:{saving:"Saving...",savePrompt:"Save Prompt",downloadReport:"Download Report",failedToSavePrompt:"Failed to save prompt. Please try again.",failedToLoadCardProfiles:"Failed to load card profiles.",noTenantsMatchFilters:"No tenants match your filters.",noCardProfilesYet:"No card profiles yet.",analyzing:"Analyzing…",analyze:"Analyze",addLimit:"+ Add limit",setLimitBeforeApproving:"Set a credit limit before approving",preApprove:"Pre-approve",addReason:"Add reason",inProgress:"In progress…",setCreditLimitFirst:"Set a credit limit first",promptPlaceholder:"e.g. Increase limits for high-growth SaaS companies, or be conservative with companies under 2 years old…",searchPlaceholder:"Search by name or tenant ID...",focusLabel:"Focus",minScoreLabel:"Min score",tenantCountSingular:"tenant",tenantCountPlural:"tenants",tenantCountFound:"found",colCreditScore:"Credit Score",colRecommendedAmount:"Recommended Amount",colRationale:"Rationale",colLastAnalysedOn:"Last Analysed On",composerPlaceholder:"Add a note...",replyComposerPlaceholder:"Reply...",modalPreApproveTitle:"Pre-approve card request",modalApproveTitle:"Approve card request",modalRejectTitle:"Reject card request",modalLockTitle:"Lock card account",modalUnlockTitle:"Unlock card account",modalCardAccessBodySuffix:"will have access to Zeni Cards with a Credit Limit of",modalRejectBodySuffix:"will not get access to Zeni Cards.",modalLockBodySuffix:"'s card account will be locked.",modalUnlockBodySuffix:"'s card account will be unlocked and set back to Active.",modalResetBodySuffix:"'s card status will be reset.",kebabResetToDefault:"Reset to Default",analyseTitle:"Analyse",tenantIdNotAvailable:"Tenant ID not available",moveToInterested:"Move to Interested",creditAgentFallback:"Credit Agent",focusNewOnly:"New only",focusInterested:"Interested",focusActiveOnly:"Active only",notSignedIn:"Not signed in. Please sign in to access the Credit Agent."},review:{header:{miscategorizedTransactions:"Miscategorized Transactions",uncategorizedTransactions:"Uncategorized Transactions",schedules:"Schedules"},reachedZeni:"You have reached Zeni.",errors:{qboLinked:"QBO connection error",bankAccountLinked:"Chargebee connection error",unitVerificationFailed:"Unit verification failed"},selectUncategorizedAccounts:"Select the uncategorized accounts",pendingIssues:"pending issues",getScore:"Get Score",auditReportDrawer:{title:"AuditBot is generating report",reportGeneratedTitle:"Report Generated",reportGeneratedSubtitle:"Please resolve all possible issues and click on the ‘Update Score’ to save the updated report for future",reviewing:"Reviewing",updateScore:"Update Score",issuesFound:"issues found",commentTitle:"Add a reason to bypass the error"},warningsDrawer:{kyb:"KYB",kyc:"KYC",identity:"Identity",issueFound:"issue found"}},management:{header:{satisfaction:"Satisfaction",bookCloseDate:"Book Close Date",reportSent:"Report Sent"},productVerticals:{placeholder:"Select services",options:{cfo:"CFO"}},realmId:{reset:{description:"Are you sure you want to reset the QBO realm ID for {tenantName}?\n\nThe tenant will then be able to connect to any QBO company."},update:{description:"Enter the new QuickBooks realm ID for {tenantName}",caution:"Please be cautious, this will change the QuickBooks realm ID for {tenantName}.",invalidRealmId:"Realm ID must contain digits only.",inputPlaceholder:"New realm ID"}},noPerson:"No people",createMonthInsight:"Create __month__ Insight",editMonthInsight:"Edit __month__ Insight",monthInsightNotReady:"__month__ Insights not ready",monthInsightsCanBeSentFromDashboard:"Send this email from the month close flow on dashboard.",monthInsightsCanBeEditedFromDashboard:"Edit this email from the month close flow on dashboard.",sendMonthInsightsFromDashboardWhenReady:"Send this email from the month close flow on dashboard when insights are ready.",monthEndHistoryUnavailable:"To see history, a minimum of one insight email has to be sent.",customerSatisfaction:{noteLabel:"Please add a comment to save the status",updateNoteLabel:"Please add a comment to save the updated status",customerOptions:{delighted:{name:"Delighted",description:"The customer loves Zeni wants to introduce others to Zeni."},happy:{name:"Happy",description:"The relationship with the customer is good, but Zeni needs to work on tools and Customer Expectations."},complaining:{name:"Complaining",description:"The customer is complaining about quality issues. Customer Success involvement needed."},looking_for_transition:{name:"Looking for transition",description:"The customer is looking to transition off Zeni. Customer notes Pervasive issues. Zeni Executive and Customer Success needed."}},teamOptions:{exceeds_expectations:{name:"Exceeds expectations",description:"Zeni is exceeding expectations. Team is moving timelines up, creating availability and providing exceptional services."},meets_expectations:{name:"Meets expectations",description:"Zeni relationships are working well. Team is meeting timelines. Deliverables have high quality."},improvement_needed:{name:"Improvement needed",description:"Team is in need of training regarding customer classification, team is understaffed."},unsatisfactory:{name:"Unsatisfactory",description:"Team has significant issues with quality, meeting timelines and responding to the customer on a timely basis."}}}},monthEndReport:{sendEmailTo:"Send Email To",addUserForInsights:"Add users you would like to send insights to",reportSentDateInfo:'By sending this email, the "Report Sent Date" in the Cockpit will be updated.',insightsNotAvailable:"No insights available",addEmailAddress:"Add Email Address",addSubject:"Add Subject",agentInsights:{editButtonLabel:"Edit AI Content",doneButtonLabel:"Done Editing",note:"Edits are saved to the draft and are what gets sent. Regenerating replaces them with fresh AI content.",saving:"Saving your edit… Preview and Send unlock once it is saved.",saveFailed:"Your last edit could not be saved. It is shown here but will NOT be sent — try Save Changes again.",regenerateTitle:"Regenerate AI content?",regenerateDescription:"This month's insights were edited. Regenerating replaces every section with fresh AI content and discards those edits.",regenerateConfirm:"Regenerate Anyway",fields:{agent_insights_header:"Headline",agent_insights_section_cfo_perspective:"CFO Perspective",agent_insights_section_what_changed:"What Changed",agent_insights_section_revenue_margin:"Revenue & Margin",agent_insights_section_operating_expenses:"Operating Expenses",agent_insights_section_cash_runway:"Cash & Runway",agent_insights_section_zeni_requests:"Zeni Requests",agent_insights_section_summary:"Summary"}},editorTitle:"Zeni Requests/Updates",editorNote:"Note: This section will remain absent if left empty in the final email sent.",timeStampLabel:"Last Saved:",editorPlaceholder:"Enter some text...",sendMonthInsightsTitle:"Send __month__ Insights",sendEmailButtonLabel:"Send __month__ Insights",sendMonthInsightsDescription:"You are attempting to send the __month__ Insights with an audit score below 75%. Do you want to still want to proceed?",sendAnyway:"Send Anyway",customerRequestSectionTitle:"Customer Requests",customerRequestSectionSubtitle:"Pending requests from last month's insights",auditScoreSectionLoadingTitle:"AuditBot is generating report for __date__",auditScoreSectionSubtitle:"Please ensure the Auditbot score is above 75% to send the month-end insights email",auditScoreCompletedSubtitle:"Please resolve all issues and click on the Update Score to view the latest score.",snippets:"Snippets",lastMonthRequests:"Last Month Requests",lastMonthRequestsSubtitle:"Select the requests to carry forward",issueBypassed:"(Issue bypassed)",editorTextOptions:{normal:"Normal",largeHeading:"Large Heading",smallHeading:"Small Heading",numberedList:"Numbered List"},toolbarPluginTooltip:{list:"List"},templates:{templates:"Templates",templateOptions:{uncategorizedIncomes:"Uncategorized Incomes"}},editorZeniGPTButton:{label:"Improve using Zeni GPT",tooltip:"Enhancing the text may require more than 30 seconds. Your patience is appreciated."}},subscription:{lessBtnText:"Less",header:{avg2MonthExpenses:"Avg 2 Mos. Expenses"}},health:{common:{engagementTypes:{meeting:"Meeting"},labels:{lastEngagements:"Last Engagements",factorsThatIncreaseChurnProbability:"Factors that increase churn probability",factorsThatDecreaseChurnProbability:"Factors that decrease churn probability",increaseChurnProbability:"Increasing churn probability",decreasingChurnProbability:"Decreasing churn probability",contributingFactors:"Contributing Factors"}},header:{lastEngagement:"Last Engagement",dashboardLastSeen:"Dashboard Last Seen"},healthMonitorFiltersHeaderInfoText:{outOf:"out of",customers:"customers"},detailPage:{heading:"'s Health Report",churnProbabilityTexts:{for:"for",dueTo:"due to:",percent:"%"},meterRangePercents:{zeroPercent:"0%",fiftyPercent:"50%",sixtyPercent:"60%",seventyFivePercent:"75%",ninetyPercent:"90%",hundredPercent:"100%"},calculatingProbability:"Calculating Churn Probability %",notApplicable:"NA",tooltipTexts:{manualInputText:"Kindly share the necessary information for calculating the Churn Probability %",externalProductServicesText:"Customer exposure to external accounting services or in-house accounting team.",customerSatisfactionScoreText:"If NPS is not available for this tenant, please enter the CSAT score (1 to 5). To calculate churn probability, it is mandatory to enter at least one of these two scores.",additionalContributingFactorsText:"Please select the additional factors that you want the health monitor to consider when calculating churn probability"},manualInput:{header:"Manual Inputs",placeholders:{addANote:"Add a note(optional)"},labels:{externalProductServices:"External Services Exposure:",additionalContributingFactorsLabel:"Additional Contributing Factors"}},preFilledInput:{header:"Pre-filled",labels:{runway:"Runway:",dashboardLastSeen:"Dashboard Last Seen:",lastReportSent:"Last Report Sent:",countOfReportedIssues:"Count of Reported Issues:",zeniProductServices:"Zeni Product and Services:",daysToRenewal:"Days to Renewal:"}}}},portfolio:{cashUnderManagementText:"Cash under management",expensesAcrossAllCustomersText:"Expenses across all customers",revenuesAcrossAllCustomersText:"Revenues across all customers"},filters:{filterCategories:{management:{statusCode:"Customer Status",customerSatisfaction:"Customer Satisfaction",zeniSatisfaction:"Zeni Satisfaction"},subscription:{statusCode:"Subscription Status",avg2MonthExpenses:"Avg. 2 Mos. Expenses"},aiAccountant:{enrollmentStatus:"Enrollment Status"}}},onboarding:{qboRadioButtonLabels:{zeni_user:"Zeni team will connect to QuickBooks",customer:"Customer will connect to QuickBooks"},qboSetupAutomated:{qboSectionText:"QBO Accounts Available:",typeOfQBOAccount:{essentials:"Essentials",plus:"Plus",advanced:"Advanced"},setupQBO:"Set up QBO"},qboSuccessText:"Congratulations! You have successfully established a connection with QuickBooks.",confirmationPopup:{title:"Send Invite Link to Customer?",subTitle:"Clicking “Yes” will send the invite link to the customer."},header:{enroller:"Enroller"},customer:{customerNameExistInManagementText:"A customer named ‘_company-domain_’ already exists.",customerNameExistInOnboardingText:"Onboarding is already in progress for ‘_company-domain_’",subTitle:"Please follow these steps to create a new customer and send them an onboarding invite.",companyCredentials:"Company Credentials",companyDomain:"Company Domain:",domain:"domain",email:"email",international:"International",primaryContactEmail:"Primary Contact Email:",groupCreationError:"Error creating google group.",emailgroupAPIError:"Sorry, something went wrong please try again.",preOnboardingError:"Pre-onboarding has not yet been done for this tenant!",preOnboardingSaveError:'If pre-onboarding is complete, proceed to "Save".',tryAgainText:"Try Again",completePreOnboardingText:"Complete Pre-onboarding",groupNameWarning:"Group name is required for group creation.",groupEmail:"Group Email",groupEmailWarning:"Group email is required for group creation.",groupDescription:"Group Description",existRealmIdText:"Already have access to Realm ID? Enable customer creation.",customerName:"Customer Name",customerEmail:"Customer Email",customerNameInfoText:"Enter the customer name to send the onboarding invite.",customerEmailInfoText:"Enter the customer email to send the onboarding invite.",companyNameInfoText:"Enter the correct company name to display on the dashboard.",realmIdText:"realm ID",primaryEmailWarning:"The email should match the company domain.",realmIdWarning:"Your realm ID don’t match!",chargebeeIdWarning:"Your chargebee ID don’t match!",hubSpotIdWarning:"Your hubspot ID don’t match!",productsWarning:"Please select product(s).",entity:"Entity",confirmRealmId:"Confirm Realm ID",confirmRealmIdText:"Confirm realm ID",chargebeeId:"Chargebee ID",chargebeeIdText:"chargebee ID",language:"Language",reamlIdTooltip:{firstLine:"How do I find the Realm ID?",secondLine:"RealmID is also called Company ID. You can find it by going to ‘Your Account’ section of your QuickBooks Online Account"}},onboardingUsersPlaceholder:"Onboarding users",goLiveText:"Go Live",goLiveTitle:"You're Almost Done!",goLiveDescription:'Follow these steps once you click "Go Live".',goLiveSteps:{stepOne:"The onboarded customer will be moved to management.",stepTwo:"Search for this customer under the management tab.",stepThree:"Click the customer name to connect to QBO.",stepFour:"Once QBO is connected, you can access the company's dashboard."},connectToQBOTitle:"Connect to Quickbooks",connectToQBODescription:'To set up your "_company-domain_" dashboard, we\'ll need access\nto connect to your Quickbooks.',connectToQBOError:"Unfortunately, you do not have permission to connect.\n To do so, please get in touch with your administrator.",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",customerCreated:"Customer created Successfully",groupCreated:"Group created Successfully",bothCreated:"Group & Customer created Successfully",customerUpdated:"Customer updated Successfully",companyDetailsUpdated:"Company details updated Successfully",onboardingCompleted:"‘_company-name_’ customer moved to the Management tab successfully.",qboErrorText:"Unable to connect quickbooks. Please try again."},taskManager:{header:{taskName:"Task Name"},metrics:{totalTasks:"Total Tasks",openTasks:"Open Tasks",overdueTasks:"Overdue Tasks",closedTasks:"Closed Tasks"}}},dropDowns:{otherOption:"Other -",quickBooks:"QuickBooks",months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],noOptions:{standard:"No options found"},tenantGroups:{aiEnabled:"AI Enabled",allOthers:"All Others"}},subscriptionUpdate:{dropDowns:{labels:{planName:"Plan Name:",nonRecurringAddOns:"Non Recurring Addons:",startDate:"Start Date:"},groups:{recommendedPlan:"Recommended Plan",allPlans:"All Plans"},placeholders:{selectAddOn:"Select addon",selectCoupon:"Select coupon",selectAddAccount:"Add New Account"}},planDetail:{planAmount:"Plan Amount:",billEvery:"Bill Every:",nextBillingAt:"Next Billing On:",nextBillingAmount:"Next Billing Amount:",mrr:"MRR:",title:"Plans & Addons",planUpperLimit:"Plan Upper Limit:",avgMonthlySpend:"Avg. Monthly Spend:",revenueFor:"Revenue For",adminPrivilegeReq:"Administrator privilege is required to edit this information"},planUpdateSummaryDetail:{title:"Confirmation",promotionalCredits:"Promotional Credits:",recurringAddons:"Recurring Addons",appliedCredits:"Applied Credits:"},updatePlan:{applyChanges:{title:"Apply Changes",description:"If there are any charges, you can either generate an invoice immediately, or add it to unbilled charges and invoice them later.",nextRenewal:"On Next Renewal",immediately:"Immediately",applyProRated:"Apply pro-rated credits and charges",proRatedDescription:"If the check box is enabled, pro-rated credits will be applicable to the subscription and a new invoice will be created with the pro-rated charges.",proRatedText1:"* Pro-rated charges won't be applicable, if there is a charge in the billing term (say, monthly to annual)",proRatedText2:"* For PHYSICAL GOODS, disable the checkbox, unless explicitly required."}},addPlan:{invoiceOption:{title:"Invoicing Options",description:"If there are any charges, you can either generate an invoice immediately, or add it to unbilled charges and invoice them later.",invoiceNow:"Invoice now"}},snackBar:{successUpdate:"Plan update successful",errorUpdate:"Plan update failed",successAdd:"Plan added",errorAdd:"Plan add failed",successText:"A confirmation email will be sent shortly."}},dateFormat:{visual:{Dformat:"D",DMMMFormat:"D MMM",DMMMYYFormat:"D MMM YY",DMMMYYYYFormat:"D MMM YYYY",dMMMyyyyFormat:"d MMM yyyy",dSlashMMSlashyyFormat:"d/MM/yy",DdashMMdashYYYYFormat:"D-MM-YYYY",MMMDCommaYYFormat:"MMM D, YY",defaultInput:"MMM d, yyyy",MMMDCommaYYYYformat:"MMM D, YYYY",MMMMYYYYFormat:"MMMM YYYY",DDSlashMMSlashYYYYFormat:"DD/MM/YYYY",MMSlashDSlashYYYYFormat:"MM/D/YYYY",MMMDFormat:"MMM D",MMMDhmmAFormat:"MMM D, h:mm A",MMMCommaYYFormat:"MMM, YY",MMMYYYYFormat:"MMM YYYY",MMMYYFormat:"MMM YY",MMMformat:"MMM",QYYYYformat:"Q YYYY",YYYYformat:"YYYY",MMMCommaYYYYFormat:"MMM, YYYY",MMMMFormat:"MMMM",MMSlashYYYYFormat:"MM/YYYY",MMSpaceSlashYYYYFormat:"MM / YYYY",MMSlashYYFormat:"MM/YY",QYYformat:"Q YY",YYYYDashMMDashDFormat:"YYYY-MM-D",YYYYDashMMFormat:"YYYY-MM",YYYYDashMMDashDDTHHmmssFormat:"YYYY-MM-DDTHH:mm:ss",HHMMFormat:"HH:mm"},analytics:{DDDashMMDashYYYY:"DD-MM-YYYY",MMMYYYYFormat:"MMM YYYY",MMMDDCommaYYYYformat:"MMM DD, YYYY",YYYYFormat:"YYYY",MMSlashDDSlashYYYYFormat:"MM/DD/YYYY",MMMDashDDDashYYYYFormat:"MMM-DD-YYYY",YYYYDashMMDashDDFormat:"YYYY-MM-DD"}},timeFormat:{hmmADashDDMMMCommaYYYY:"h:mm A - DD MMM, YYYY",hhmmAFormat:"hh:mm A",hmmAFormat:"h:mm A",dddCommaHmmAFormat:"ddd, h:mm A"},months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],commonSetUp:{setUp:{setupVerifiedSubTitle:"Manage your business verification, bank details, and multi-level approvals to make Zeni work better for you.",businessVerificationTitle:"Verify Identity & Company Details",businessVerificationSubTitle:"Upload documents to complete proof of identity and business.",businessVerificationAdditionalInfo:"Verification takes up to 24 hours. We'll notify you by email.",cardPolicyHeader:"Add Card Policy",cardPolicyTitle:"View or Create Card Policies",cardPolicySetUpStatus:"Set up",paymentSource:"Payment Source",achSubHeader:"Securely add your preferred payment method to activate your account.",achVerifiedHeader:"ACH Payments",achFailedTitle:"Bank Connection Failed",achSubTitle:"Sign in securely to your bank and start managing your payments right away",fetchBalance:"Fetch balance",fetchingBalance:"Fetching balance...",verifyAccount:"Verify Account",verifyingAccount:"Verifying Account...",getCurrentBalance:"Get Current Balance",fetchBalanceError:"Could not fetch current balance! Please click the refresh icon to display current balance.",verifyAccountError:"Could not verify account! Please try to verify account again.",reLoginLabel:"Re-login required",reLogging:"Re-logging in",reLoginError:"Could not re-login into account! Please try to re-login again.",reLoginMessage:"Login details of this account have expired. Re-login to update the information.",bankAccountLinkingError:"Please link a bank account or credit card to set up payment",linkNewAccount:"Link a new account",addNewCard:"Link new card",connectExternalAccount:"Connect an external bank account",connectNow:"Connect Now",chaseLabel:"Set Zeni as Chase payee",zeniCashAccountLabel:"Zeni Cash Account:",zeniCashAccountPlaceholder:"Select cash account",zeniCashAcoountInfo:"Link your chosen bank account to the correct cash account",setupApprovalHeader:"Setup Approval Rules",createApprovalTitle:"Create Approval Rules",approvalTitle:"View or Create Approval Rules",accountsPlg:{heading:"Elevate your Banking with Zeni Checking",moveMoneyHeading:"Fund Your Zeni Checking to Pay Your Vendors",signUpButtonText:"Sign Up for Free",bulletPoints:{one:"Upto __rate__% APY",two:"Up to __amount__ FDIC insured",three:"Enjoy free wires",four:"Faster payouts"}},cardPolicySubTitle:"Create and manage reusable spend control policies"},businessVerification:{productType:{onboarding:"identity verification",business_verification:"business verification",complete_profile:"complete profile"},documentDetailLine:{checkFront:"Take a clear front photo of your check.",checkBack:"Take a clear back photo of your check.",id:"Take a clear photo of your ID."},takePhotoHeader:"Take A Photo",photoDescription:"Place your document within the frame, then tap “Take a photo” to scan and\n retrieve details.",retakePhoto:"Retake Photo",useThisPhoto:"Use This Photo",takeAPhoto:"Take a Photo",makeSure:"Make sure the lighting is good, and the text is readable.",pleaseMakeSure:"Please make sure the photo appears inside the bleed area.",title:"Financial regulations require Zeni to collect both identity & company details to verify your business.",confirmIdentityDetails:"Confirm Identity Details",confirmIdentityDetailsSubTitle:"Enter business details to complete verification.",confirmIdentityDetailsNewOfficer:"Confirm Identity Details of New Officer",confirmIdentityDetailsTooltip:"The company officer’s SSN is required to comply with the BankSecrecy Act (BSA) and Anti-Money Laundering (AML) regulations.",confirmCompanyDetails:"Confirm Company Details",confirmCompanyDetailsSubTitle:"Enter company details to complete verification.",confirmCompanyDetailsTooltip:"The company details are required to comply with the Financial regulations law and ensure security for all our customers.",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",emailError:"Email is required for _product_type_",phoneErrorForOnboarding:"Please enter a valid phone number",phoneValidationError:"Phone number is not verified",address:"Home Address:",customAddressPlaceholder:"Add custom address",addressError:"Address is required for _product_type_",addressAdditionInfo:"Example: Address on your driver's license",ssnLabel:"Social Security Number (SSN):",nationalityLabel:"Nationality:",nationalityPlaceholder:"Add Nationality",nationalityDescription:"Nationality is required for _product_type_.",companyRoleLabel:"Company Role:",companyRolePlaceholder:"Add company role",companyRolePlaceholderSmall:"Company role",companyLegalNameLabel:"Company Legal Name:",companyLegalNamePlaceholder:"Add legal name of business",companyLegalNameError:"Company legal name is required for _product_type_",companyAddressLabel:"Company Address:",companyAddressPlaceholder:"Add company address",companyAddressError:"Company address is required for _product_type_",registeredAddressLabel:"Registered Address:",registeredAddressPlaceholder:"Add registered address",registeredAddressError:"Registered address is required for _product_type_",companyWebsitePlaceholder:"Add URL",companyWebsiteError:"Website is required for _product_type_",companyTypeOfIncorporationPlaceholder:"Add type of incorporation",companyTypeOfIncorporationError:"Type of Incorporation is required for _product_type_",companyIncDateLabel:"Company Incorporation Date:",companyIncDatePlaceholder:"Select company incorporation date",companyIncDateError:"Company Incorporation Date is required for _product_type_",companyStateOfIncorporationPlaceholder:"Add state of incorporation",companyStateOfIncorporationError:"State of Incorporation is required for _product_type_",countriesOfOperationsLabel:"Countries of Operations:",countriesOfOperationsPlaceholder:"Select countries of operations",countriesOfOperationsAdditionalInfo:"List the countries where you do business or have customers",countriesOfOperationsError:"Countries of Operations is required for _product_type_",companyIndustryPlaceholder:"Add industry",companyIndustryOptions:{retail_consumer_goods:"Retail & Consumer Goods",financial_services:"Financial Services",food_agriculture:"Food & Agriculture",healthcare_pharmaceuticals:"Healthcare & Pharmaceuticals",professional_services:"Professional Services",manufacturing_industrial:"Manufacturing & Industrial",real_estate_construction:"Real Estate & Construction",logistics_transportation:"Logistics & Transportation",business_support_services:"Business Support Services",escort_dating_adult_entertainment:"Escort/Dating/Adult Entertainment"},companyIndustryError:"Industry is required for _product_type_",companyIndustryAdditionalInfo:"Select the primary business activity",companySubIndustryLabel:"Sub-Industry:",companySubIndustryPlaceholder:"Select business activity",companySubIndustryError:"Select primary business activity for _product_type_",companySubIndustryOptions:{retail_consumer_goods:{grocery_stores_supermarkets:"Grocery Stores or Supermarkets",convenience_stores:"Convenience Stores",specialty_food_retailers:"Specialty Food Retailers (Butcher, Bakery, Produce Markets)",gas_stations_retail:"Gas Stations with Retail",general_merchandise_department:"General Merchandise or Department Stores",online_retail_ecommerce:"Online Retail or E-Commerce",subscription_membership:"Subscription and Membership Platforms",direct_to_consumer:"Direct-to-consumer Brands",cannabis:"Cannabis"},financial_services:{banks_credit_unions:"Banks or Credit Unions",fintech_payment_processing:"FinTech or Payment Processing",insurance_providers:"Insurance Providers",investment_advisors_broker:"Investment Advisors or Broker Dealers",lending_mortgage:"Lending or Mortgage Companies",treasury_management:"Treasury Management Platforms",personal_finance_apps:"Personal Finance Apps or AI Assistants",retirement_planning:"Retirement Planning",real_estate_investment:"Real Estate Investment Platforms",money_service_businesses:"Money Service Businesses (MSBs)",cryptocurrency:"Cryptocurrency",debt_collection:"Debt Collection",payday_lending:"Payday Lending",gambling:"Gambling"},food_agriculture:{farms_agricultural:"Farms or Agricultural Producers",food_wholesalers_distributors:"Food Wholesalers or Distributors",restaurants_cafes:"Restaurants or Cafes",bars_nightclubs:"Bars/Nightclubs",catering_services:"Catering Services",farmers_markets:"Farmers Markets",restaurant_tech_pos:"Restaurant Tech & POS Providers"},healthcare_pharmaceuticals:{hospitals_clinics:"Hospitals or Clinics",pharmacies:"Pharmacies",medical_equipment:"Medical Equipment Suppliers",biotechnology:"Biotechnology Firms",home_health:"Home Health Services",healthcare_staffing:"Healthcare Staffing Platforms",wellness_benefits:"Wellness & Benefits Platforms",healthcare_social_assistance:"Healthcare and Social Assistance"},professional_services:{legal_services:"Legal Services",accounting_auditing:"Accounting/Auditing Firms",consulting_firms:"Consulting Firms",marketing_advertising:"Marketing/Advertising Agencies",real_estate_agents_property:"Real Estate Agents/Property Managers",corporate_services_incorporation:"Corporate Services & Incorporation",hr_workforce_management:"HR & Workforce Management Platforms",direct_marketing_telemarketing:"Direct Marketing or Telemarketing",legal_accounting_consulting_programming:"Legal/Accounting/Consulting or Computer Programming"},manufacturing_industrial:{chemical_manufacturing:"Chemical Manufacturing",electronics_hardware:"Electronics/Hardware Manufacturing",automotive_manufacturing:"Automotive Manufacturing",construction_materials:"Construction Materials",textiles_apparel:"Textiles/Apparel",mining:"Mining"},real_estate_construction:{real_estate:"Real Estate",construction:"Construction"},logistics_transportation:{transportation_warehousing:"Transportation or Warehousing"},business_support_services:{business_support_building:"Business Support or Building Services"},escort_dating_adult_entertainment:{escort_services:"Escort Services",dating_adult_entertainment:"Dating or Adult Entertainment"}},companyPrimaryContactNameLabel:"Name of Primary Contact:",companyPrimaryContactNameError:"Name of primary contact is required for _product_type_",companyPrimaryContactEmailLabel:"Email of Primary Contact:",companyPrimaryContactEmailError:"Email of primary contact is required for _product_type_",companyTaxIdLabel:"Tax ID:",companyTaxIdPlaceholder:"Add tax ID",companyTaxIdError:"Tax ID is required for _product_type_",companyOwnershipLabel:"Company Ownership %",companyOwnershipPlaceholder:"Add percentage",companyDescriptionLabel:"Product Description:",companyDescriptionError:"Product description is required for _product_type_",certOfIncopDocumentError:"Certificate of Incorporation is required for _product_type_",einDocumentError:"Company document is required for _product_type_",documentParsingBanner:"Zeni AI is reading your document to autofill details…",addSSNPlaceholder:"Add SSN",dropDocumentPlaceholder:"Drop document here or click to upload",frontDropDocumentPlaceholder:"Front side - Drop document here or click to upload",backDropDocumentPlaceholder:"Back side - Drop document here or click to upload",selectDocumentTypePlaceholder:"Please select document type to upload.",driverLicense:"Driver’s License",incorporationDocument:"Incorporation Document",sourceOfFundsLabel:"Nature of Funds:",sourceOfFundsAdditionalInfo:"Select the primary source of your business funds",sourceOfFundsError:"Source of funds is required for _product_type_",payeeCodePlaceholder:"Enter code",formationDocumentLabel:"Formation Document:",formationDocumentError:"Formation document is required for _product_type_",sendForVerificationButton:"Send for Verification",aiParsingDocument:"Zeni AI is reading your document…",fileNameRequired:"File name is required",deleting:"Deleting...",updatingName:"Updating Name...",selectDocumentOption:{driverLicense:"Driver's License",ssnCard:"SSN Card",w9:"W9",w4:"W4",contract:"Contract",purchaseOrder:"Purchase Order",c1099:"1099-C"},nameDescription:"Name is required for _product_type_.",emailDescription:"Email is required for _product_type_.",dobDescription:"Date of birth is required for _product_type_.",companyRoleDescription:"Company role is required for _product_type_.",companyOwnershipDescription:"Company ownership % is required and is capped to 100% max.",companyOwnershipDescriptionForOnboarding:"Company ownership % is required for identity verification.",ssnDescription:"SSN is required for _product_type_.",allTypesOfRoles:["Founder","CEO / CFO","Chief of Staff / Office Manager / EA","Controller / Finance Manager"],sourceOfFundOptions:{business_revenue:"Business Revenue",investment_proceeds:"Investment Proceeds",sale_of_business:"Sale of Business",sale_of_real_estate:"Sale of Real Estate",rollover:"Rollover",insurance_proceeds:"Insurance Proceeds",legal_settlement:"Legal Settlement",salary:"Salary",inheritance:"Inheritance",gift:"Gift",alimony:"Alimony",gaming_proceeds:"Gaming Proceeds"},companySourceOfFundOptions:{sales_of_goods:"Sales of goods",sales_of_services:"Sales of services",customer_payments:"Customer payments (invoices)",investment_capital:"Investment Capital",business_loans:"Business Loans",owner_contributions:"Owner Contributions",franchise_revenue:"Franchise Revenue",government_contracts_grants:"Government Contracts or Grants",donations_fundraising:"Donations or fundraising",membership_fees_subscriptions:"Membership fees or subscriptions",licensing_royalties:"Licensing or royalties",commission_income:"Commission income",import_export_revenue:"Import/Export revenue",cryptocurrency_activity:"Cryptocurrency related activity",rental_income:"Rental Income"},companySourceOfFundsLabel:"Source of Funds:",companySourceOfFundsAdditionalInfo:"Select how your business earns its revenue",companySourceOfFundsError:"Source of Funds is required for _product_type_",companySourceOfFundsDescriptionError:"Enter details of source of funds",transactionVolumeOptions:{less_than_10000:"Less than $10,000","10000_50000":"$10,000 - $50,000","50001_250000":"$50,001 - $250,000","250001_1000000":"$250,001 - $1,000,000","1000001_2000000":"$1,000,001 - $2,000,000",over_2000000:"Over $2,000,000"},transactionVolumeLabel:"Transaction Volume Expectations:",transactionVolumePlaceholder:"Select range",transactionVolumeAdditionalInfo:"Estimate the total amount your account will process each year",transactionVolumeError:"Transaction Volume Expectations is required for _product_type_",transactionVolumeDescriptionError:"Enter details of expected transaction volume",purposeOfAccountOptions:{retail_sales:"Retail Sales (in-person)",ecommerce_sales:"E-Commerce Sales",cash_heavy_operations:"Cash-Heavy Income and Operations",import_export_trade:"Import/Export Trade Operations",professional_services_not_handling_funds:"Professional Services (not handling funds)",professional_services_handling_funds:"Professional Services (handling funds)",holding_investment_company:"Holding or Investment Company Operations",property_management_real_estate:"Property Management or Real Estate Operations",charitable_nonprofit:"Charitable or Non-Profit Organization Operations",construction_contracting:"Construction and Contracting Operations",commercial_cash_operations:"Commercial Cash Operations",freight_forwarding_logistics:"Freight Forwarding/Logistics Operations",third_party_payment_processing:"Third Party Payment Processing",technology_startup:"Technology Startup Operations",wholesale_distribution:"Wholesale Distribution Operations",franchise_operation:"Franchise Operation Operations",healthcare_provider:"Healthcare Provider Operations",educational_institution:"Educational Institution Operations"},purposeOfAccountLabel:"Purpose of Account:",purposeOfAccountPlaceholder:"Select purpose of account",purposeOfAccountAdditionalInfo:"State how you plan to use this account",purposeOfAccountError:"Purpose of Account is required for _product_type_",purposeOfAccountDescriptionError:"Enter details of purpose of account",regulatedStatusLabel:"Regulated Status:",regulatedStatusAdditionalInfo:'Select "Yes" if a government or financial regulator oversees your business',regulatedStatusError:"Regulated Status is required for _product_type_",regulatedStatusDescriptionPlaceholder:"Add name of regulator",regulatedStatusDescriptionError:"Enter the name of regulator",usNexusLabel:"US Nexus:",usNexusAdditionalInfo:'Select "Yes" if you have employees, customers or bank accounts in the U.S.',usNexusPlaceholder:"Select US nexus types",usNexusOptions:{employees:"Employees",physical_office:"Physical office or facility",banking_relationships:"Banking relationships",customers:"Customers"},usNexusError:"US Nexus is required for _product_type_",usNexusDescriptionPlaceholder:"Add nature of US operations",usNexusTypesError:"Select at least one nature of U.S. operations",descriptionPlaceholder:"Add details",terms:{termsForStripe:'By clicking "Send for Verification," I certify that the information provided for business verification is complete and correct.',term1:'By clicking "Send for Verification," I have read and accepted the ',consent:"Electronic Disclosure and Consent",depositTerms:"Deposit Account Terms and Conditions",cardsTerms:"Cards Terms and Conditions",creditCardsTerms:"Credit Cards Terms and Conditions",debitCardsTerms:"Debit Cards Terms and Conditions",term5:", and I consent to the use of electronic records in connection with this application.",term6:'By clicking "I Agree," I have read and accepted the ',consentUrl:"https://www.zeni.ai/legal/esign",depositUrl:"https://disclosures.thread.bank/terms/zeni/businessdepositaccountagreement.pdf",debitCardsUrl:"https://disclosures.thread.bank/terms/zeni/businessdebitcardholderagreement.pdf"},snackBar:{successReviewText:"Business Verification Details submitted successfully."},protectedSsnText:"••••••••• Provided",protectedSsnTextSmall:"•••••••••",threadText:"Zeni is not a bank. Banking services are provided by Thread Bank; Member FDIC. Deposits are FDIC-insured through Thread Bank; Member FDIC. Your deposits qualify for up to a maximum of __amount__ in FDIC insurance coverage when placed at program banks in the Thread Bank deposit sweep program.",additionalDocumentsOverlay:{title:{ssnCard:"Verify your Social Security Number (SSN) Document"},description:{ssnCard:"To provide you with a more comprehensive payment experience, Zeni has worked with new partners who require your consent with a valid SSN document."},officerInfoLabel:"Confirm Identity Details of"},verifyBusinessDetails:"Step 3: Business Verification",verifyBusinessDetailsWithoutTransfer:"Step 2: Business Verification",verifyBusinessDetailsDescription:"Financial regulations require Zeni to verify your business with additional company details.",submittedTitle:"Portfolio allocation and business details\n submitted for verification!",submittedTitleWithTransfer:"Details are submitted for verification\n and transfer to Treasury is initiated!",submittedDescription:"Verification may take up to 24 hours.\n Once verified, you'll be notified via an email. Thank you for your patience.",submittedDescriptionWithTransfer:'Business verification takes up to 24 hours. Once verified, the transfer of __amount__ from\n "__account__" to "Treasury" will take 1–2 business days. We\'ll notify you by email.',securityMessageTitle:"Uploaded documents are protected with enterprise-grade security!",securityMessageDescription:"All documents are encrypted and securely stored with SOC 2 Type II compliance.",personalIdDescription:"Personal ID is required for _product_type_.",companyIdDescription:"Personal ID is required for _product_type_."},approval:{updatingWithApprovalRulesTooltip:"__entity__ is being updated with latest approval rules. Please try in some time.",approvalRulesUpdatingTooltip:"Approval rules are being updated. Please try again shortly.",deleteApprovalRuleTitle:"Delete approval layer?",deleteApprovalRuleDesc:"You can't undo this action.",newApproval:"New Approval",editApproval:"Edit Approval",followStepsLabel:"Follow Steps:",addStep:"Add Step",notifiersPlaceholder:"Select notifier(s)",firstRuleLowerBoundInfoLabel:"First approval must start from $0.",firstRuleErrorInfoLabel:"Lower bound already exists. Please choose a higher limit.",upperBoundInfoLabel:"To set the upper bound, create new approval.",addApprovalText:"Add Approval",applyToExistingBills:"Apply this rule to existing pending bills and all future bills.",applyToExistingReimbursements:"Apply this rule to existing pending reimbursements and all future reimbursements.",allApprovalRulesTitle:"All Approval Rules",listSubtitle:"Drag to arrange rules. __entity__ are evaluated top to bottom — first match is applied.",fallbackWhenChipText:"No rule matches a bill",createApprovalRuleText:"Create Approval Rule",defaultFallbackBillPayStaticMessage:"Invoices that don't match any rule will be sent to the Vendor Owner for approval. If no Vendor Owner is assigned, they will go to the Super Admin.",defaultFallbackReimbursementStaticMessage:"Reimbursements that don't match any rule will be sent to the submitter's Manager or Manager's Manager for approval. If neither is assigned, they will go to the Super Admin.",separationOfDuties:"Separation of Duties",whenLabel:"When",thenLabel:"Then",moreOptionsLabel:"More options",requireApprovalFromLabel:"Require approval from",amountChip:{isBetween:"is between",isGreaterThan:"is greater than",isLesserThan:"is lesser than"},addRuleSectionSubheading:"Add name and description to start rule creation",setConditionsSectionHeading:"Set Conditions",setConditionsSectionSubheading:"Define when this rule triggers",setApprovalStagesSectionHeading:"Set Approval Stages",setApprovalStagesSectionSubheading:"Define sequential approval steps",nameLabel:"Rule name",namePlaceholder:"e.g. High-value bills",descriptionPlaceholder:"What is this rule for? (optional)",amountComparator:{greater_than:"Is greater than",less_than:"Is less than",range:"custom range"},amountRangeToPlaceholder:"Infinity",amountMissingError:"Approval rule is missing an amount condition; aborting save.",noRequireApprovalStageError:"Add at least one approver to a Require Approval stage before saving.",operatorIsOrIsNot:{is_not:"is not",is:"is"},vendorMultiSelectPlaceholder:"Select vendors",departmentValuesLabel:"Departments",departmentMultiSelectPlaceholder:"Select departments",conditionTypeLabel:"Condition type",conditionTypePlaceholder:"Select condition",conditionType:{amount:"Amount",vendor:"Vendor",department:"Department"},addConditionBtnLabel:"Add Condition",conditionRowAndConnector:"And",removeConditionAriaLabel:"Remove condition",actorKindLabel:"Actor kind",actorKind:{specific_person:"Specific Person",role:"Role"},stageSpecificPersonPlaceholder:"Select person",stageRolePlaceholder:"Select role",stageRoleOption:{manager:"Manager",manager_of_manager:"Manager of Manager",vendor_owner:"Vendor Owner"},addApprovalStageBtnLabel:"Add Approval Stage",removeStageAriaLabel:"Remove stage",dragStageHandleAriaLabel:"Drag stage to reorder",dragRuleHandleAriaLabel:"Drag to reorder approval rule",separationOfDutiesHelper:"Enabling separation of duties prevent bill creators from approving their own requests",overlapBanner:{title:"Partial rule overlap detected",descriptionSingular:"Conditions partially overlap — some bills could match both rules.",descriptionPlural:"Conditions partially overlap with __count__ existing rules — some bills could match more than one rule.",hideDetailsBtn:"Hide Details",showDetailsBtn:"Show Details",ignoreAndProceedBtn:"Ignore & Proceed",editExistingRuleBtn:"Edit Existing Rule",priorityLabel:"Set at Priority #__priority__",duplicateTitle:"Duplicate rule detected",duplicateDescriptionSingular:"All conditions overlap with the existing rule — some bills could match both rules. Check the details below:",duplicateDescriptionPlural:"All conditions overlap with __count__ existing rules — some bills could match more than one rule. Check the details below:",duplicateBlockedMessage:"Duplicate rule can not be created."},inactiveApprover:{singularMessage:"__name__ is inactive.",pluralMessage:"__name__ and __count__ others are inactive.",changeApproverLinkText:"Change the approver to avoid delays."},overlapModal:{title:"Proceed with overlapping rules?",description:"Rules will be evaluated by priority (top to bottom), and the first matching rule will be applied."},nonUsers:{manager:{label:"Manager",subTitle:"If there is no manager, we'll replace with admin(s)."},vendor_owner:{label:"Vendor Owner",subTitle:"If there is no vendor owner, we'll replace with admin(s)."},manager_of_manager:{label:"Manager of Manager",subTitle:"If there is no manager of manager, we'll replace with admin(s)."},admin:{label:"Admin"}}},twoFactorAuthentication:{title:"Verify Phone Number",verifyDeviceTitle:"Verify Your Device",verifyDeviceDescription:"We detected a login attempt from a new device. For enhanced security, please enter the 6-digit code sent to your registered phone.",codeExpiresIn:"Code expires in",codeExpired:"Code expired",phoneNumberPlaceholder:"Add phone number",enterVerificationCode:"Enter the verification code sent to ",confirmPhoneNumber:"Zeni uses your phone number to verify your details and to keep your account secure. We recommend that you use a mobile phone that you access regularly.",codeNotReceived:"Didn’t receive code? ",resend:"Resend",getCode:"Get Code",footerHelperText:"By clicking '<button_text>', you agree to receive text messages for verification and customer interaction purposes.",accessRestricted:"Access Restricted",termsUpdated:"We’ve Updated the Terms & Conditions",description:"Zeni need your admin consent on the updated T&Cs and submission of verified phone number.\n \n However, your access for bills is currently restricted until admin give their consent.",iAgree:"I Agree",verificationInProgress:"Verification in process",verificationFailed:"Business Verification Failed",verifyingDetails:"We are currently verifying your details.",verificationError:"It looks like we will need more information from you to complete the setup. You will be taken to the “Settings” page to complete the verification.",submissionSuccessful:"Submission completed successfully! Verification may take a bit more time. Thank you for your patience.",goToSettings:"Go to Settings",invalidCode:"The code wasn't valid. Please try again.",getOtp:"Get OTP",businessInfoTitle:"Additional Business Information",businessInfoDescription:"We require below details to verify your business.",requireIncDate:"Require incorporation date",requireIndustry:"Require industry",incorrectCode:"Incorrect code entered. Please retry.",accountLockWarning:"One more incorrect attempt will lock your account for 1 hour to keep it secure.",accountLockedTitle:"Verification attempts limit exceeded.",accountLockedSecurityMessage:"For your security, we've paused verification for now.",tryAgainAfter:"You can try again after ",signInViaGoogleOrMicrosoft:", or sign-in via Google or Microsoft",accountLockedContactMessage:"For assistance, please reach us at ",changePhoneNumberHelperText:"Need to update your registered mobile number? Please reach out to us at "},chaseOverlay:{title:"How to add Zeni as payee on Chase Bank?",description:"Authorizing Zeni on your payee list allows Chase Bank to debit funds via ACH from your account. Failure to grant permission will result in automatic blocking of that account.",primaryButtonText:"Watch Video",stepsTitle:"Follow These Steps",chaseVideoUrl:"https://www.chase.com/digital/customer-service/helpful-tips/business-banking/security/ach-debit-block-add-payee",step1:{text1:"Sign-in to Chase Bank",text2:" and navigate to ",text3:" Security",text4:" and select ",text5:"Manage Allowed Payees",text6:" under the ACH Debit."},step2:{text2:" Add Payee",text3:"Two options will appear. Either select Zeni payee from ACH debit report or manually input payee details."},step3:{text1:"Review and select ",text2:"Allow Payee",text3:" for Zeni payee (ACH debit report) or fill in the below details:",payeeIdTitle:"Payee ID: ",payeeIdUnit:"1824863608",payeeIdStripe:"0000004670",payeeNameTitle:"Payee Name: ",amountLimitTitle:"Amount Limit: ",text4:"Add a minimum ",amountLimit:"$1,000,000 ",text5:" or more"}},internationalWire:{subTitle:"Add below business details to enable international transactions",terms1:'By clicking "Submit", you confirm that you agree with the ',privacyPolicy:"privacy policy.",tosUrl:"https://www.nium.com/legal/end-customer-terms"}},spendManagement:{billPay:{addressPageTitleEdit:"Edit Mailing Address",paymentDetails:{feeDetails:"Fee Details",saveDetailsPrompt:"Save these fee details for all future {paymentType} payments.",paymentTypeKey:"{paymentType}",conversionTooltip:"The conversion rate is an estimate that may change by the time your payment is sent. Any gains/losses will be synced to your Foreign Currency Gain/Loss Account.",conversionAmount:"Conversion Amount",conversionRatePrefix:"1.00 = ",feePercent:"% ",plus:"+ ",transactionfee:"Transaction Fee:",wiseVerifyLabel:"Are you the owner of the Wise account? Click here to complete verification",paymentLabels:{achSameDay:"ACH Same Day",offlinePayment:"I won't pay this with Zeni"},internationalPaymentLabels:{our:"with OUR",sha:"with SHA"},offlinePaymentSubText:"Track as offline payment",paymentToAccount:{selectAch:"Select ACH account",selectDomestic:"Select domestic wire account",selectInternational:"Select international wire account",addAch:"Add ACH account",addDomestic:"Add domestic wire account",addInternational:"Add international wire account"},sendAsSha:"Send as SHA - Free",vendorPaysTheFee:"Vendor pays the fee",sendAsOur:"Send as OUR - $15",whySendAsOur:"Why send as OUR?",mostBank:'Most banks automatically send wires coded as "charges shared(SHA)", which means your recipient absorbs any intermediary bank fees.',weGiveYou:'We give you the choice to code the wire as "charges ours (OUR)" instead. When you send as OUR, SWIFT network fees are charged to us, which makes it more likely your recipient will receive the full amount.',ourTooltipIfShaDisabled:"When you send as OUR, SWIFT network fees are charged to us, which makes it more likely your recipient will receive the full amount.",conversionAmountColon:"Conversion Amount:",transactionFee:"+ Transaction Fee:",sameDayAchExtraInfo:{transferLimitExceededHeading:"Transfer Limit Exceeded!",transferLimitExceededText:"Same Day ACH supports transfers up to __amount__.",insufficientBalanceHeading:"Insufficient Balance!",insufficientBalanceText:"Same Day ACH requires 2× the bill amount in your account.",newAtZeni:"You are new to Zeni",newAtZeniText:"Same Day ACH requires 3+ months of activity.",insufficientBalanceError:"ACH Same Day requires 2X the bill amount in the selected withdrawal account"},accountsPromoSection:{signupText:"Sign up for free and enjoy faster payouts.",switchText:"Switch now and enjoy faster payouts.",signupButtonText:"Sign Up",signupHeading:"Unlock ACH Same Day with Zeni Checking",switchHeading:"Unlock ACH Same Day with Zeni Checking"},invoiceAmount:"Invoice Amount",colon:":"},billsByTabs:{billOrganizedInfo:"All your bills are organized in one place here.",searchPlaceHolder:"Search by vendor name or invoice no.",emailInfoTitle:"Add Invoice via Email",emailInfoDescription1:"Forward vendor invoices to this unique email, and we will scan them into your bills drafts for review.",emailInfoDescription2:"Share this unique email with trusted vendors for invoices, and they will appear in your bills drafts.",emailInfoDescription3:"If your company has an AP email, you can auto-forward them to the email below.",noDataTextViaMail:"Create bill drafts by sending your invoices to ",paidVia:"Paid via",invoiceNumber:"Invoice No:",datePaid:"Date Paid:",noDataText:'Click on the "New" button to add new bill',noDataWithFilterText:"No bills matched your search.",headerElementDisplayName:"Spend management list view inner element type"},billPaySetup:{setupTitle:"Bill Pay Setup",setupSubTitle:"To setup bill pay - we require you to confirm your business identity and setup ACH details.",approvalSubTitle:"Bill pay will require approvals based on your bill pay approval rules.",enableBillPay:"Enable Bill Pay",terms:'By clicking "Enable Bill Pay," I authorize Zeni to debit from this bank account to pay for bills scheduled using Zeni Bill Pay.',enableInternationalWireTitle:"Enable International Wire",internationalWireSubTitle:"Guaranteed best exchange rates - Powered by",internationalWireSubTitle2:"Manage global payments effortlessly.",internationalWireFootnote:"You will be redirected to the Wise website to complete setup.",tags:{internationalWirePendingVerification:"Wise Verification Pending",actionRequired:{description:"Click here to re-enable"},verificationPending:{tag:"Verification Pending",description:"Activates in 4-5 days"},verificationFailed:{tag:"Verification Failed",description:"Check your inbox"},nonAdminUser:"Check with admin"},tooltipTexts:{pendingInternationalVerificationText:"Verification process might take 4-5 days.",internationalVerificationFailed:"Reach out to the Zeni team for assistance with reverification."}},billPayPromo:{trustBanner:{title:"Zeni Bill Pay is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni helps you capture invoices, manage approvals effortlessly, and pay vendors on time—every time."},promoText:"The fastest way to pay your vendors and contractors, 100% free.",promoText2:"Manage invoices, approvals, and payments seamlessly in one place.",setupNonAccessableUsersPromoText:"Zeni Bill Pay set up is pending, please check with your admin.",item1:"Free bill payments",item2:"Fully managed by Zeni Finance Team",item3:"Multi-level approval workflows",item4:"AI-powered invoice processing",setupBillPayButton:"Setup Bill Pay",terms:{terms1:'By clicking "Setup Bill Pay", I have read and accepted the ',terms3:". ✌🏻"}},billPayApproval:{amountPerBillLabel:"If amount per bill is between:",amountPerBillGreaterLabel:"If amount per bill is greater than or equal to:"},vendorCreation:{deleteAccountTooltip:"Delete Account",mailingAddressPlaceholder:"Required for wire transfers.",accountsLabel:" Account",areYOuSure:"Are you sure to delete this account?",ifYouSubmit:"If submitted bills are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new bills.",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",addBill:{editVendorConfirmationTitle:"Edit information for Elite Recruitment Solutions",editVendorConfirmationDescription:"You will be taken to the vendor information page for Elite Recruitment Solutions. If the name of this vendor is changed, it will also be updated in all previous bills to this vendor."},placeholders:{owner:"Select owner",tinType:"Select TIN"},vendorDetails:{w9FormTitle:"W-9 form",legalNamePlaceHolder:"Add legal name",taxClassificationPlaceHolder:"Select tax classification",banner:"Zeni has retrieved data from this W9 form and auto-filled the details.",vendorEIN:"EIN",vendorSSN:"SSN",trackPaymentsFor1099:"Track Payments For 1099:",vendorCurrencyAdditionalText:"The vendor will receive payments in this currency",vendorCurrencyHelperText:"The home currency is linked to the vendor's country",vendorClassAdditionText:"Choose a default class for this vendor\nYou can change this for every line item on the bill ",vendorCategoryAdditionText:"Choose a default category for this vendor\nYou can change this for every line item on the bill ",vendorExists:"This is an existing vendor",vendorNew:"This is a new vendor",vendorFindOrCreate:"Find or create a new vendor",vendorEditWarning:"Changing vendor name will also update all previous bills to this vendor",classGroups:{},businessInfo:"Corporations, LLCs; companies that require a W-4",individualInfo:"Sole proprietorship, individuals; anyone who will require a 1099-C",spends:{last30Days:"Last 30 days",last90Days:"Last 90 days"},recommendation:{tooltip:{category:'The "category" update recommendation is __based__',class:'The "class" update recommendation is __based__'}}},vendorContactInfo:{title:"Contact Info",minimumReq:"Minimum one contact required",addContact:"Add Contact"},vendorDocuments:{title:"Documents",addDocument:"Add Document"},wireDetails:{addressErrorInfo:"Address is required",bankRoutingNumber:"Wire Routing Number:",additionalAddressLabel:"Mailing address is required for Wire transfers.",ifYouSubmit:"If submitted bills are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new bills.",domestic:{addWireDetails:"Add Domestic Wire"},international:{addInternationalWireDetails:"Add International Wire",swiftCode:"SWIFT Code (BIC):",addSwiftCode:"Add SWIFT code",iban:"IBAN/Account Number:",addIban:"Add IBAN number",confirmIban:"Confirm IBAN/Account Number:",addConfirmIban:"Confirm IBAN number",invalidSwiftCode:"Please enter valid SWIFT Code",invalidIban:"Invalid IBAN/account number",ibanDontMatch:"Your IBAN/account numbers don’t match!",countryAdditionalInfo:"Vendor country cannot be changed once saved",currencyPlaceholder:"Select currency",currencyAdditionalInfo:"The vendor will be paid in this currency. It cannot be changed once saved",typeOfAccount:"Type of Account:",addSource:"Add Source:",sourceTooltip:"Share the source of account details",sourcePlaceholder:"E.g. via post",colon:":"},areYOuSure:"Are you sure you want to delete this bank account?"},achDetails:{bankRoutingNumber:"Routing Number:",bankName:"Bank Name:",beneficiaryAddress:"Beneficiary Address:",beneficiaryAddressSubLabel:"Use this address as the recipient address for wire transfers.",beneficiaryName:"Recipient/Beneficiary Name:",beneficiaryNameSubLabel:"Use this name as the recipient name for wire transfers.",bankAddress:"Bank Address:",fetchingBankName:"Fetching bank name",confirmedBankAccountNumberPlaceholder:"Re-Enter account number",accountNickName:"Account Nick Name:",addACHDetails:"Add ACH Details",autoFilled:"Auto-filled from invoice",stripeTestRoutingNumber:"110000000",ifYouSubmit:"If submitted bills are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new bills.",areYOuSure:"Are you sure you want to delete this bank account?"},bankAccountCommon:{submitDetails:"Submit Details"},emptyPlaceholderString:"-",colon:":"},billDetails:{createNewVendor:"Create new vendor as __actualVendorName__",tooltip:{category:'The "category" update recommendation is __based__',class:'The "class" update recommendation is __based__'},updateCategoryClassForAllLineItems:"Update category and class for all line items in this bill.",editPageDuplicate:"This invoice number has been used before. Make sure you're not paying twice. ",viewBill:"View Bill #",duplicateBillPayWarning:"This looks like it may be duplicate payment.",duplicateBillPayWarningSubHeading:"Make sure you're not paying twice. ",duplicateInvoiceFound:"Duplicate Invoice Found",issueSyncing:"There's an issue syncing this bill!",accountPeriodClosed:"Since the accounting period is closed, we cannot create or sync this bill with the accounting software.",updateDate:"Please update the date(s) and try again.",banner:"Zeni has retrieved data from this invoice and auto-filled this bill.",setupNewVendorDescription:"Set up this new vendor as you haven’t paid them through Zeni before.",setupNewInternationalVendorDescription:"Set up __vendorName__ as a new vendor, as you paid them in __vendorCurrency__, not __invoiceCurrency__.",setupNewVendor:"Setup New Vendor",addApproverLabel:"Add Approver",addApproverTooltip:"Add additional approvers to this bill. This will not impact the existing rules for other bills.",addApproverForRemiTooltip:"Add additional approvers to this reimbursement. This will not impact the existing rules for other reimbursements.",realTimeApproverRequireLabel:"Require approval",realTimeCommentsPlaceholder:"You can add a note explaining the reason for adding approver(s).",deleteRealTimeStepTooltip:"Remove Step",dragRealTimeStepTooltip:"Drag to reorder",newlyAddedApproverTag:"Newly added",newlyAddedApproverTagHover:"Newly added for this bill",addTitle:"Add Bill",basicInfo:"Basic Info",whoIsItFor:"Who's it For?",noPreviousPayments:"No previous payments to this vendor!",paymentDaysBusinessUnits:"business",fees:"fees",invoiceNo:"Invoice No.",due:"Due:",recentInvoice:"Previous Invoice(s)",whatForTitle:"What For?",vendorName:"Vendor Name:",vendorDropdownPlaceholderText:"Search or type a vendor name",paidOnActualDeposit:"Paid on:",invoiceNumber:"Invoice Number:",billDueDate:"Bill Due Date:",autoUpdateInvoiceDate:"The invoice date is adjusted to the start of the current period since it is from a closed period.",currency:"Currency:",line:"Line",estimatedReceiveDate:"Estimated vendor receive date:",deliveryTimeLabel:"Delivery Time",achDeliveryTime:"(ACH delivery time = _number_of_business_ business days)",addNew:"Add New",billableCategoryErrorText:"Category is not billable category",qboCustomer:"QBO Customer:",billable:"Billable:",billablePlaceholderText:"Select billable",customerPlaceholderText:"Type and select customer",projectPlaceholderText:"Type and select project/customer",total:"Invoice Total",paymentType:"Payment Type:",paymentTimeLine:"Payment Timeline",timeToDeliver:"Delivery Time:",venderReceiveDate:"Vendor Receive Date:",tabsById:{next_business_day:"Next Business Day",arrive_by_due_date:"Arrive by Due Date",issue_on_due_date:"Issue on Due Date",schedule_later:"Schedule Later"},businessDaysText:"_number_of_business_ Business Days",receivingAccount:"Receiving Account:",fromAccount:"From Account:",withdrawFrom:"Withdraw From:",withdrawFromError:"Account verification is pending, please contact your administrator. ",paymentTo:"Send Payment to:",addAccount:"Add Account",reviewChanges:"Review Changes",scheduleAnyways:"Schedule Anyways",sendForApproval:"Send for Approval",internationalText1:"By clicking “Send for Approval”, I agree to NIUM's",internationalTerms:"terms and service",internationalText2:"to transfer funds internationally.",selectVendorBeforeScheduling:"Select a vendor before scheduling payments.",oneLastLook:"One Last Look...",addedByZeni:"Added by Zeni",billActivity:"Bill Activity",approved:"Approved",notified:"Notified",approval:"approval",submittedBy:"Submitted by",draftBy:"Draft by",reportCreatedBy:"Report created by",autoApproveBottomText:"You haven't created any approval rules yet.",autoApprovalBtnText:"Create Approval",autoApproved:"Auto-Approved",waitingForInfo:"Waiting for information",arrived:"Arrived:",desiredPaymentDate:"Desired Payment Date",processing:"Processing...",skipAutofill:"Skip Autofill",skipAutofillInfo:"Or, do it the old-fashioned way.",dropInvoice:"Drop invoice here or click to upload.",dropW9:"Drop W-9 form here or click to upload",uploadFileSizeExceedError:"Upload failed. The document size must be 20 MB or smaller.",uploadError:"There was a problem while uploading your __type__. Please try again.",currencyInfo:"Only US currency bills are allowed!",preparingForPayment:"Preparing for Payment",notApproved:"Not Approved",issueWithBill:"Issue with Bill",attemptFailed:"Attempt Failed",errorProcessing:"Error Processing",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",expand:"Expand",editPopupInformationTitle:"Edit information for ",editConfirmationDescriptionFirstPart:"You will be taken to the vendor information page for ",editConfirmationDescriptionSecondPart:". If the name of this vendor is changed, it will also be updated in all previous bills to this vendor.",overwriteDescription:"By overwriting the data, you will replace the existing row content with the data from the new invoice which you uploaded.",deletedCategoryError:"Selected category was deleted in QuickBooks. Please select an active one.",deletedClassError:"Selected class was deleted in QuickBooks. Please select an active one.",buttons:{editBill:"EditBill",deleteRejectedBill:"Delete Rejected Bill",deleteReturnedBill:"Delete Returned Bill",deleteFailedBill:"Delete Failed Bill",rejectBill:"Reject Bill",approveBill:"Approve Bill",approveAnyways:"Approve Anyways",deleteBill:"Delete Bill",cancel:"Cancel Bill",cancelAndDelete:"Cancel & Delete Bill",refund:"Refund Payment"},toolTips:{editVendor:"Edit Vendor Info",compress:"Hide Vendor Details",chooseNewvendor:"Choose New Vendor",expand:"Show Vendor Details"},cancelBillTitle:"Cancel bill?",cancelAndDeleteBillTitle:"Cancel & Delete bill?",deleteAlertDescription:"Are you sure you want to delete this bill? This action cannot be undone.",cancelAlertDescription:"Are you sure you want to cancel this bill? This action cannot be undone.",cancelAndDeleteAlertDescription:"Are you sure you want to cancel & delete this bill? This action cannot be undone.",noBillAttached:"No bill attached",futurePaymentDateAlert:"Payment Date should be of future.",estimatedArrival:"Estimated arrival: ",rejectBillTitlePrefix:"Reject payment to",rejectBillDescription:"By rejecting this payment the approval process will not move forward and no payments will be issued. Help your team understand why this bill should not be paid.",billAutoApproveInfo:"Because your approval policy for this bill only requires you to approve it, we will automatically approve this bill for payment when you create it.",remiAutoApproveInfo:"Because your approval policy for this reimbursement only requires you to approve it, we will automatically approve this reimbursement for payment when you create it.",vendorEmailPopupText:"Please enter the vendor’s email to proceed",magicLink:{paymentTypeInfoLabel:"We’ll email your vendor to provide their <payment_type> details.",delayedPaymentMessage:{forACHStandard:"The timing seems tight. Consider using same-day ACH or Domestic Wire instead",forNonACHStandard:"The timing seems tight. Zeni will schedule the payment once this bill is approved and the Vendor submits their bank account details."},emailPreview:{title:"Email Preview",subjectLabel:"Subect:",subjectContent:"<company_name> needs your payment details to pay you <amount>",content:"<vendor_name>,\n\n<company_name> wants to pay you <amount> by <bill_due_date> for the attached invoice. To ensure you receive this payment on time, please securely provide your <payment_type> payment details by clicking the link below. <company_name> uses Zeni Bill Pay to pay its vendors securely.",contentNoAttachment:"<vendor_name>,\n\n<company_name> wants to pay you <amount> by <bill_due_date>. To ensure you receive this payment on time, please securely provide your <payment_type> payment details by clicking the link below. <company_name> uses Zeni Bill Pay to pay its vendors securely.",signature:"Thanks,🕊️\n<company_name>'s Finance team",buttonText:"Enter <payment_type> Details"},popUp:{title:"Add Vendor Email",description:"We'll email your vendor to provide their <payment_type> details."},magicLinkScreen:{title:"<tenant_name> wants to pay you",description:"Add your bank account details to get paid by <tenant_name> through Zeni Bill Pay.",encrypted:"Encrypted",successTitle:"Thank you for providing the account details.",successNote:"We are currently working on your payment."}},recurringBill:{recurringCycle:"Recurring Cycle - ",deleteRecurringTitle:"Delete Recurring Bill?",deleteRecurringAlertText:"Deleting this bill will also remove all future instances, leading to the discontinuation of payments to the vendor.",cancelAndDeleteRecurringTitle:"Cancel and Delete Recurring Bill?",cancelAndDeleteRecurringAlertText:"By proceeding, you’re not only canceling the current bill but also removing all future instances, leading to the end of payments to the vendor.",paymentTypeOptions:["One-time Payment","Recurring Payment"],frequencyOptions:[{label:"Weekly",value:"weekly"},{label:"BiWeekly",value:"biweekly"},{label:"Monthly",value:"monthly"},{label:"Quarterly",value:"quarterly"}],requiresApprovalOptions:{current:"For this bill only (Remaining bills in this series will be auto-approved)"},requiresApprovalOptionsSelectedLabels:{current:"For this bill only"},formLabels:{requiresApproval:"Requires Approval"},endDateSelector:{formLabels:{totalPayments:"Total No. Payments"}},paymentCountPrefix:"No. of Payments",paymentSchedule:"Payment Schedule",hidePaymentSchedule:"Hide Payment Schedule",showPaymentSchedule:"Show Payment Schedule",isHoliday:"is a holiday",editRecurringPopup:{title:"Do you want to update?",selectOptions:[{label:"All bills in this series",value:"all"},{label:"This bill only",value:"current"}]}},zeniAssist:{refundTitle:"Confirm Refund",refundDescription:"Are you sure you want to initiate a refund for this bill?\n Refund process will take 1-2 business days.",accountNumber:"Account No.",tooltip:"Zeni Assist",connectToTeamTooltip:"Please connect with the engineering team to resolve this issue."},paymentOutsideZeni:{popUpTitle:"Add payment details",defaultDateInfo:"If not added, the date will default to 1st of this month.",reviewInfo:'Once approved, find this bill in your "Awaiting my Approval" tab to "Mark as Paid."',markAsPaid:"Mark as Paid",paymentModeLabel:"Payment Mode:",selectDate:"Select date ",paymentModeOptions:[{label:"ACH",value:"ach"},{label:"ACH Same Day",value:"ach_same_day"},{label:"Cash",value:"cash"},{label:"Check",value:"check"},{label:"Domestic Wire",value:"us_domestic_wire"},{label:"International Wire",value:"international_wire"},{label:"Other",value:"other"}],banner:{title:'After the bill is approved, it will move to your "Awaiting My Approval" tab.',description:'Once payment is done, you can return to this bill to "Mark as Paid."'}},overwriteTitle:"Are you sure you want to overwrite the data?",hyphenText:"-",dots:"..."},bulkActions:{exceptions:{bookCloseDateDelete:"This bill can't be deleted now as it is from a previous accounting period.",bookCloseDateProcessing:"This bill can't be processed now as it is from a previous accounting period.",processingSelectTogether:'Only bills under "Processing" status can be selected together.',processingWithOthers:'Bills under "Processing" status can’t be selected with others.',cancelProcessing:"Bill payment cannot be canceled as it has been already processed.",cancelRecurring:"Recurring Bill can't be canceled.",deleteRecurring:"Recurring Bill can't be deleted.",noActionRecurring:"Recurring bill can't be canceled or deleted."},duplicateWarning:{title:"An update to this bill is currently in progress.",description:"Please wait until the process is complete before making any further changes."},popUps:{reject:{title:"Reject <_payment_>",description:"By rejecting <_this_> <_payment_>, the approval process will not move forward and no <_payment_> will be issued. Help your team understand why <_this_> <_bill_> should not be paid."},delete:{title:"Delete <_bill_>",descriptionDraft:"Are you sure you want to delete <_this_> <_bill_>? This action cannot be undone.",descriptionRecurring:"Deleting stops current <_payment_> and all the future recurring bill cycles. Help your team understand why?",descriptionOther:"By deleting <_this_> <_bill_>, <_it_> will not move forward and no <_payment_> will be issued. Help your team understand why."},cancel:{title:"Cancel <_bill_>",description:"By cancelling <_this_> <_bill_>, <_it_> will not move forward and no <_payment_> will be issued. Help your team understand why."}},reviewPage:{billsReviewed:{title:"<_bill_> <_has_> been reviewed",description:"<_bill_> <_is_> ready to proceed.",descriptionError:"The selected <_bill_> <_do_> not have the required information to proceed. Please fill in all details and try again."},billsReviewing:{title:"We are reviewing your <_bill_>"},removeOrProceed:"Remove bill or proceed for approval"},totalAmount:"Total amount"},insufficientFunds:{lowBalance:"(Low balance)",lowBalanceIn:"Low balance in __account__",addMoney:"Low balance! Please add money to this account",addOrSwitch:"Low balance! Add money or switch accounts by __date__ to avoid bill payment failure",addOrSwitchInitiateTransfer:"Add money or switch accounts to initiate the transfer.",popUp:{title:"Low Balance",hasLowBalance:" has low balance.",addMoney:"Please add money or switch accounts by ",avoidFailure:" to avoid payment failure."}}},autoTransferRules:{pageTitle:"Auto transfer rules",existingRulesSectionTitle:"Existing rules",pauseConfirmationPopup:{title:"Pause this rule?",description:"Pausing will temporarily stop all transfers until you resume the rule."},deleteConfirmationPopup:{title:"Delete this rule?",description:"Deleting will permanently remove this rule, and all upcoming auto transfers will stop."},existingRuleLabels:{moveFundsFrom:"Move Funds From"},frequencyLabel:"Frequency: {frequency}",nextTransferLabel:"Next Transfer: {nextTransfer}",lowBalanceWarning:"Low balance, add funds or switch accounts before __next_transfer_date__ to avoid transfer failure",ruleTypes:{minimum_balance:{title:"Maintain a Minimum Balance",description:"Auto transfer funds between accounts to maintain a minimum balance."},recurring:{title:"Make a Recurring Transfer",description:"Schedule auto transfers of a fixed amount at regular intervals."},percentage_of_balance:{title:"Distribute Balance by Percentage",description:"Apply percentage-based rules to distribute funds between multiple accounts."}},createRuleDrawer:{amountError:"As daily transfer limit is $100,000, your transfer will be split over multiple days",youCanUse:"You can use a wire transfer if you want to transfer the entire amount at once. ",maintainBalanceIn:"Maintain Balance In:",frequency:"Frequency:",allocate:"Allocate:",allocatePercentTotalExceeded:"Total allocation cannot exceed 100%.",connectAnotherAccount:"Connect Another Account",frequencyInfo:{daily:"Auto transfer every day",weekly:"Auto transfer every 7 days",monthly:"Auto transfer every 30 days"},amountPlaceholder:"$0"},reviewDrawer:{footerDisclaimer:'By clicking "Create Rule", I authorize Zeni to initiate the transactions detailed above for __company_name__.',nextTransfer:"Next Transfer",nextTransferTimeline:"Next Transfer Timeline",maintainMinimumBalanceDescription:'{amount} will be transferred to "{toAccount}" from "{fromAccount}" to maintain a minimum balance.',recurringTransferDescription:'{amount} will be transferred to "{toAccount}" from "{fromAccount}" {frequencyPhrase}.',distributeByPercentageFirstAllocation:'{pct}% of the funds will be transferred to "{label}"',distributeByPercentageAdditionalAllocation:' and {pct}% to "{label}"',distributeByPercentageSourceAndSchedule:' from "{fromAccount}" {frequencyPhrase}.',frequencyPhrase:{daily:"every day",weekly:"every week",monthly:"every month"},summaryPrefix:{daily:"Every day",weekly:"Every week",monthly:"Every month"},minimumBalanceSummary:'{prefix}, funds will be automatically transferred from "{fromAccount}" to "{toAccount}", if the balance is below {amount}.',recurringTransferSummary:'{prefix}, {amount} will be transferred from "{fromAccount}" to "{toAccount}".',distributeByPercentageSummaryFirstAllocation:'{pct}% of the balance in "{fromAccount}" will be transferred to "{label}"',lowBalanceWarning:"Low balance to complete the transfer. Add funds or switch accounts to avoid transfer failure.",dailyTransferLimitSplitWarning:"As daily transfer limit is __dailyLimit__, your transfer will be split over multiple days"}},reimbursement:{reimbursementByTabs:{noDataText:"To add new reimbursements, click on the\n'New Reimbursement' button and get started.",noDataWithFilterText:"No reimbursements matched your search.",reimbursementOrganizedInfo:"All your reimbursement reports are organized in one place here.",searchPlaceHolder:"Search by report name or creator",emailInfoTitle:"Add Receipts via Email",emailInfoDescription1:"Send your receipts to this email, and we'll scan them for review in your reimbursements drafts.",emailInfoDescription2:"If multiple receipts are included in the email, they will be combined into one reimbursement report.",emailInfoDescription3:"For each email you dispatch, we will draft an individual reimbursement report.",noDataTextViaMail:"Create reimbursement drafts by sending your",header:{submitted:"Submitted",paidOn:"Paid On"},reimbursementType:{out_of_pocket:"Out of pocket",titleForBoth:"Both",both:"Out of pocket and Milleage"},tabsById:{draft:"Drafts",pending_approval:"Approvals",scheduled:"Scheduled",paid:"Paid",all:"All",failed:"Failed",cancelled:"Canceled",overdue:"Overdue",rejected:"Rejected",ach:"ACH",wire:"Wire",returned:"Returned",awaitingMyApproval:"Awaiting My Approval",awaitingAllApproval:"Awaiting All Approval",deleted:"Deleted",myDrafts:"My Drafts",awaitingApproval:"Awaiting Approval"},hyphenText:"-",dots:"..."},reimbursementPromo:{item1:"AI-powered receipt capture",item2:"Multi-level approval flow",item3:"Auto-sync of expense data",trustBanner:{title:"Zeni Reimbursements is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni automatically captures receipts, streamlines approvals, and ensures fast, accurate reimbursements."},promoText:"Reimburse employees at lightning speed, absolutely free.",promoText2:"Automate expense tracking, approvals, and reimbursements—all in one place.",employeePendingPromoText:"Reimbursements set up process is pending, please check with your admin.",employeeAcceptPromoText:"The simplest way to apply for reimbursement",setupReimbursementButton:"Setup Reimbursements",createNewReimbursementButton:"Create New Reimbursements",terms:{setupTerms1:'By clicking "Setup Reimbursements", I have read and accepted the ',createTerms1:'By clicking "Create New Reimbursements", you agree to our ',zeniAgreement:"Terms of Service",terms3:". ✌🏻"}},reimbursementSetup:{yourMileage:"Your mileage rate should be the same or higher than ¢ __defaultMileageUnitAmount__ as per IRS guidelines.",setupSubTitle:"To setup reimbursements - we require you to confirm your business identity, set up ACH details and mileage rates.",approvalSubTitle:"Reimbursements will require approvals based on the rules you create.",enableReimbursements:"Enable Reimbursements",terms:'By clicking "Enable Reimbursements," I authorize Zeni to debit from this bank account to repay using Zeni Reimbursements.',mileageHeader:"Setup Mileage Rate",mileageEditTitle:"Edit Mileage Rate",mileageAddTitle:"Add Mileage Rate",mileageSubTitle:"Standard mileage rate you've to set for business-related travel.",perText:"per"},reimbursementApproval:{amountPerRemiLabel:"If amount per reimbursement is between:",amountPerRemiGreaterLabel:"If amount per reimbursement is greater than or equal to:"},reimbursementDetail:{tooltip:{category:'The "category" update recommendation is __based__'},deletedCategoryError:"Selected category was deleted in QuickBooks. Please select an active one.",deletedClassError:"Selected class was deleted in QuickBooks. Please select an active one.",duplicatePopUpInfo:{title:"Preparing For Submission",primaryButtonText:"Review Report",secondaryButtonText:"Submit Anyway",reviewingExpenses:"Reviewing expenses",reviewedAllExpenses:"Reviewed all expenses",detectDuplicates:"Detect duplicates",detectingDuplicates:"Detecting duplicates",duplicateExpensesFound:"Duplicate expense(s) found",failedToSubmit:"Failed to submit, please try again",failedToDetect:"Failed to detect duplicate bills, please try again",noDuplicatesFound:"No duplicates found",submitReport:"Submit report",submittingReport:"Submitting report"},thereSeems:"There seems to be a duplicate expense(s) uploaded in this report.",pleaseFind:"Please find more details below.",thisExpense:"This expense is a duplicate. Make sure you are not submitting again.",thisExpenseReview:"This expense is a duplicate. Please review it before approving.",viewOriginalExpense:"View original expense",accountNameConnector:"XXXX",saveAccountManually:"Save your bank account manually",loginToBank:"Log in securely to your bank to get reimbursement payments ",amountExchangeRateTooltip:"We use Open Exchange Rates to calculate the currency conversion based on real time rates at the time of transaction.",requireReceipt:"Require receipt for a value of $75 or above",missingReceipt:"Missing Receipt",deleteReimbursement:"Delete Reimbursement",missingReceiptDescription:"Transactions of value $75 or above require a receipt.",editReimbursementTitle:"Edit Reimbursement",addReimbursement:"Add Reimbursement",yourBankAccount:"Your Bank Account:",selectBankAccount:"Select bank account",receivePaymentTo:"Receive Payment At",merchant:"Merchant:",merchantPlaceholder:"Select merchant",projectPlaceholder:"Select project/customer",distanceInMiles:"Distance in Miles:",addMerchant:"Add merchant",addDepartment:"Add department",outOfPocketKey:"out_of_pocket",mileageKey:"mileage",outOfPocket:"Out of Pocket",addMiles:"Add miles",reportTitle:"Report Title:",lunchWithClient:"E.g. Lunch with client",whatFor:"What’s It For?",reimbursementType:"Reimbursement Type:",reportStatus:"Report Status",banner:"Zeni has retrieved data from this receipt(s) and auto-filled this report.",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",overwriteDescription:"By overwriting the data, you will replace the existing row content with the data from the new receipt which you uploaded.",uploadLimitTitle:"You have exceeded the file upload size limit",uploadLimitDescription:"Please make sure the size of all receipts should not exceed 32MB. You could either compress the file sizes or upload another report",buttons:{rejectReport:"Reject Report",approveReport:"Approve Report",deleteReport:"Delete Report",resubmit:"Re-Submit",cancelAndDelete:"Cancel & Delete"},deleteDraftTitle:"Delete draft?",deleteReportTitle:"Delete Report?",cancelReportTitle:"Cancel Report?",cancelAndDeleteReportTitle:"Cancel & Delete Report?",deleteAlertDescription:"Are you sure you want to delete this report? This action cannot be undone.",cancelAlertDescription:"Are you sure you want to cancel this report? This action cannot be undone.",cancelAndDeleteAlertDescription:"Are you sure you want to cancel & delete this report? This action cannot be undone.",deleteBankAccountTitle:"Are you sure you want to delete this bank account?",deleteBankAccountDescription:"If submitted reimbursements are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new reimbursements.",noReceiptAttached:"No receipt attached",dropReceipt:{single:"single",multiple:"multiple"},dropReceiptDescription:"Zeni will read the receipt(s) and autofill the reimbursement for you.",reimbursementActivity:"Reimbursement Activity",rejectRemiTitlePrefix:"Reject reimbursement for",rejectRemiDescription:"By rejecting this payment the approval process will not move forward and no payments will be issued. Help your team understand why this bill should not be paid.",overwriteTitle:"Are you sure you want to overwrite the data?",emptyValue:"--"},bulkActions:{exceptions:{processingSelectTogether:'Only reports under "Processing" status can be selected together.',processingWithOthers:'Report(s) under "Processing" status can’t be selected with others.'},duplicateWarning:{title:"An update to this report is currently in progress.",description:"Please wait until the process is complete before making any further changes."},popUps:{reject:{title:"Reject __report__",description:"By rejecting <_this_> <_payment_>, the approval process will not move forward and no <_payment_> will be issued. Help your team understand why <_this_> __report__ should not be paid."},delete:{title:"Delete __report__",descriptionDraft:"Are you sure you want to delete <_this_> __report__? This action cannot be undone.",descriptionOther:"By deleting <_this_> __report__, <_it_> will not move forward and no <_payment_> will be issued. Help your team understand why."},cancel:{title:"Cancel __report__",description:"By cancelling <_this_> __report__, <_it_> will not move forward and no <_payment_> will be issued. Help your team understand why."}},reviewPage:{reportsReviewed:{title:"__report__ <_has_> been reviewed",description:"__report__ <_is_> ready to proceed.",descriptionError:"The selected __report__ <_do_> not have the required information to proceed. Please fill in all details and try again."},reportsReviewing:{title:"We are reviewing your __report__"}},report:"Report"}},commonProgressBar:{newBillProgressStates:["Draft","Approval","Schedule","Payment"],draftProgressStates:["Created","Approval","Schedule","Payment"],scheduleProgressStates:["Created","Approved","Scheduled","Payment"],paidProgressStates:["Created","Approved","Scheduled","Paid"],offlinePaymentStates:["Created","Approved","Schedule","Payment"],alertableStates:["rejected","returned","failed","cancelled","pending_vendor_action"],paymentDatePrefix:"Expected by",newBillProgressBarSubText:"Great! We’ve got your bill.",markedAsPaid:"Marked as Paid"},zeniAccounts:{common:{totalYieldEarned:"Total Yield Earned"},zeniAccountSetUp:{setupSubTitle:"Manage your business verification, bank details to make Zeni work better for you."},zeniAccountsPromo:{promoText1:"Business Banking Reimagined",promoText2:"Smarter business banking with higher returns, stronger protection, and zero hassle.",earnUptoText:"Earn up to __rate__% APY ",insuranceText:"Up to __amount__ in FDIC",noHiddenFee:"No hidden or monthly fees",expertSupport:"24/7 expert support ",setupAccountsButton:"Setup Checking",terms:{terms1:'By clicking "Setup Checking", I have read and accepted the ',terms3:" ✌🏻"},disclaimer:"Zeni is a financial technology company and not a bank. Banking services are provided by Thread Bank; Member FDIC.",iconTexts:{title:"Traditional Banks",unInsuredAmount:"$2.75M",unInsured:"Uninsured",insuredAmount:"$250K",footNote:"Based on an example balance of $3M",yAxisAmounts:["$3M","$2.5M","$2M","$1.5M","$1M","$500K","$0"]},trustBanner:{title:"Zeni Business Checking is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni AI automatically categorizes, matches, and reconciles every transaction, saving finance teams many hours every month."}},zeniAccountList:{noDataText:"To add new account, click on the\n'Add Business Account' button and get started.",totalAvailableBalance:"Available Balance",insuranceInfo:"Up to __amount__ FDIC Insured.",unlinkAccount:"Unlink Account",addFundBtnText:"Add Funds",addAccountText:"Add Business Account",autoTransferRulesColumnHeader:"Auto Transfer Rules",nextTransferOn:"Next transfer on __date__",autoTransferRuleSummary:{minimumBalanceTitle:"Transfer to __destination__ if below __amount__",minimumBalanceSubtitle:"Checks daily · Triggers when balance is below __amount__",recurringTitle:"Transfer __amount__ to __destination__",recurringSubtitle:"Recurring __frequency__ · Next transfer on __date__",percentageTitle:"Transfer __allocations__",percentageAllocation:"__percent__% to __destination__",percentageSubtitle:"Applies on incoming funds · Next transfer on __date__",frequencyLabel:{daily:"daily",weekly:"weekly"},nextTransferPending:"Next transfer pending"},linkExternalAccount:"Link External Account",yieldTooltip:"This is the amount you've earned on your funds since opening your accounts.",insuranceTooltip:"Your accounts are FDIC insured up to __amount__. You are protected by the highest level of FDIC insurance currently available.",balanceTooltip:{base:"Your Available balance does not include processing transactions.",processing:"Processing:",available:"Available:"},createPopUpInfo:{title:"Add a business account",description:"This will create a new business account with its own account number.",placeholder:"Add account nickname"},addFundsPopUpInfo:{title:"Account is now set up.",description:"Add funds to this account. Your balance is covered up to __amount__ by FDIC Insurance, and you will earn up to __rate__% APY. Don't miss our example below to see what you could gain!",primaryButtonText:"Add funds",secondaryButtonText:"Not now"},billPayupPopUpInfo:{title:"Take Me to Bill Pay",description:"You can access bills feature when you want to pay someone.",secondaryButtonText:"Not Now"},tabsById:{zeniAccounts:"Checking",achDetails:"ACH Details",externalAccounts:"External Accounts",wireDetails:"Wire Details"},transferDrawer:{calculator:{sliderTooltipText:"% APY",footerText:{earnUptoText:"Earn up to __rate__% APY",annualYieldEarnedTooltipText:"This is the amount you'll earn on your funds on an annualized basis.",forTotalBalance:"For Total Balance:"},heading:"Your balance is covered up to __amount__ by FDIC Insurance, and you will earn up to __rate__% APY. Don't miss our example below to see what you could gain!"},subTitle:"Transferred funds typically take 1-2 business days to show in the account.",amountError:"Amount is required to transfer between accounts",holiday:"holiday",footNote:'By clicking "Transfer," I authorize Zeni to initiate the transfer.',external:{transferSuccessMsgMidfix2:" The money should arrive within 1-2 business days."},theDaily:"The daily bank transfer limit is __dailyLimit__.",sinceYourDeposit:" Since your deposit exceeds the limit, the amount will be split across multiple days.",splitPaymentTimeline:"Split Payment Timeline",youCanUse:"You can use a wire transfer if you want to transfer the entire amount at once. ",selectYour:"Select your Zeni Checking Account for incoming wire",wireInstruction:"Wire Instructions for __accountName__",backToChecking:"Back to Checking",backToAutoTransferRule:"Back to Auto Transfer Rules",wireTransferDescriptionLine1:"Initiate the wire from your bank using the instructions below. Wires must come from a domestic bank account. Your deposit will show up in Zeni the next business day after you send it.",wireTransferDescriptionLine2:"Your wire will reflect in your account the day after submission. Note that foreign or third-party wires are not accepted at this time.",transferFromError:"Select account to transfer between accounts",transferToError:"Select account to transfer between accounts",amountPlaceholder:"$0"},checkDepositDrawer:{title:"Check Deposit",subTitle:"Deposited check usually take 4-5 business days to appear in your account.",sourceLabel:"Source of Deposit:",sourcePlaceholder:"Type here",footNote:'By clicking "Deposit", I authorize Zeni to initiate the deposit',checkPicLabel:"Check Pictures",picGuides:['Sign the check and write "For mobile deposit at Zeni only" on the back of the check.',"Make sure all account info is clearly visible.","Checks must be issued by a US bank."],transferSuccessMsgPrefix:"We’re reviewing your ",transferSuccessMsgSuffix:" check deposit. The money should arrive within 1 to 2 business days. Please keep the check with you until it clears.",goToAccountBtn:"Go to Account",makeAnotherTransferBtn:"Deposit Another Check",frontSideError:"Front side picture is required for check deposit.",backSideError:"Back side picture is required for check deposit.",amountPlaceholder:"$0"}},zeniAccountDetail:{title:"Zeni Saving",bankLetter:"Bank Letter",bankLetterPdf:"zeni-bank-letter-",viewAll:"View All",transactions:"Recent Transactions",bankLetterTitle:"Zeni - Bank Verification Letter",closeAccountPopUp:{description:"Your remaining balance will be immediately transferred to your Primary checking account, ending with "},editNamePopUp:{title:"Edit nick name",description:"Account nickname"},nullScreenHeading:"Current balance is $0",noTransactionText:"You don't have any transactions yet!"},transactionList:{title:"- Transactions"},moveMoney:{closeAccount:"Close Account",editNickName:"Edit Account Nick Name",accountStatement:"Account Statements",payBills:"Pay Bills",checkDeposit:"Deposit a Check"},statements:{title:"Accounts Statements"},expressPay:{schedulePayment:"Schedule Payment",recipientSectionTitle:"Who’s It For?",recipientName:"Recipient Name:",recipientType:"Recipient Type:",recipientEmail:"Recipient Email:",reciept:"Receipt / Invoice:",placeholders:{recipientName:"Search or type a recipient name",recipientNameMobile:"Type a recipient name"},progressBar:{stateOne:"Recipient Details",stateThree:"Review & Schedule"},phoneNumberPopup:"Users must verify their phone number. We recommend using a phone number that you access frequently."}},activity:{achTraceNumber:"ACH Trace Number:",wireTraceNumber:"Wire Trace Number:"},filters:{enDash:"–",searchPlaceholder:"Search For Vendors",filterCategories:{reimbursements:{receiptDate:"Submitted Date"}},filterOptions:{billAmountOptions:[{label:"< 5K",value:"-10000000<->5000"},{label:"5K to 10K",value:"5000<->10000"},{label:"10K to 20K",value:"10000<->20000"},{label:"> 20K",value:"20000<->10000000"}],reimbursementAmountOptions:[{label:"< 100",value:"-10000000<->100"},{label:"100 to 500",value:"100<->500"},{label:"500 to 1000",value:"500<->1000"},{label:"> 1000",value:"1000<->10000000"}],paymentMethodOptions:[{label:"ACH",value:"ach_standard"},{label:"ACH Same Day",value:"ach_same-day"},{label:"Domestic Wire",value:"wire_us-domestic"},{label:"International Wire",value:"wire_international"},{label:"Offline",value:"outside-zeni_outside-zeni"}],paymentHistoryStatusOptions:[{label:"In Progress",value:"Pending"},{label:"Complete",value:"Sent"},{label:"Failed",value:"Rejected"}],commonStatusOptions:[{label:"Draft",value:"draft"},{label:"Pending Approval",value:"pending_approval"},{label:"Approved",value:"approved"},{label:"Rejected",value:"rejected"},{label:"Scheduled",value:"scheduled"},{label:"Processing",value:"processing"},{label:"Paid",value:"paid"},{label:"Canceled",value:"cancelled"},{label:"Returned",value:"returned"},{label:"Failed",value:"failed"}],billStatusOptions:[{label:"Pending Vendor Action",value:"pending_vendor_action"},{label:"Overdue",value:"overdue"}],billPaymentTypeOptions:[{label:"One-time Payment",value:"one-time"},{label:"Recurring Payment",value:"recurring"}]}},emailInvoiceTooltip:"Email Invoice",emailReceiptTooltip:"Email Receipt",policyTooltip:"Card policy",cardPolicy:{introTooltip:{title:"Cards Policy",description:"Create and manage reusable spend control policies"}},moreMenuOptions:[{label:"Settings",value:"settings"},{label:"Download",value:"download"},{label:"Pay Early",value:"payEarly"},{label:"Statements",value:"statements"},{label:"Payment History",value:"paymentHistory"}],downloads:{defaultDownloadFileName:"Spend Management Transactions.xlsx"},chargeCard:{statements:{title:"Credit Card Statements"},paymentHistory:{autopay:"Autopay",sourceAccountUnknown:"Unknown Account",searchPlaceHolder:"Search payment history...",pageTitle:"Credit Card Payment History",initiatedOn:"Initiated on:",completedOn:"Completed on:",noPaymentHistoryMatchedSearch:"No payment history matched your search.",noPaymentHistoryAvailable:"No payment history found."},common:{expense:"expense",expenses:"expenses",selected:"Selected",reason:{lost:"Lost or stolen",fraud:"Fraud detected"},recurringExpenses:"Recurring Expenses",nextPaymentDate:"Next Payment Date",letUsKnowWhy:"Let Us Know Why"},closeCard:{closeCards:"Close Cards",closeCard:"Close Card",multipleCardsNoRecurringExpenses:"Closing these _number_of_cards_ cards will be a permanent action.",multipleCardsHasRecurringExpenses:"Closing these _number_of_cards_ cards cancel _number_of_recurring_expenses_ recurring",multipleCardsHasRecurringExpensesSuffix:" linked to it. This is a permanent action.",firstCardHasRecurringExpenses:"Closing this card will cancel _number_of_recurring_expenses_ recurring _expense_ linked to it. This is a permanent action.",youNeedToProvideReasonToCloseCard:"You need to provide a reason to close the card"},lockCard:{youNeedToProvideReasonToLockCard:"You need to provide a reason to lock the card",lockCards:"Lock Cards",lockCard:"Lock Card",firstCardNoRecurringExpenses:"Locking this card pauses all expenses through it. You can unlock it anytime to resume.",firstCardHasRecurringExpenses:"Locking this card pauses _number_of_recurring_expenses_ recurring _expense_ linked to it. You can unlock it anytime to resume.",multipleCardsNoRecurringExpenses:"These _number_of_cards_ cards will be locked but can be unlocked later.",multipleCardsHasRecurringExpenses:"These _number_of_cards_ cards will be locked but can be unlocked later, pausing its _number_of_recurring_expenses_ recurring"},cardList:{totalCashback:"Total Cashback",searchPlaceHolder:"Search by owner, card name or department",headerElementDisplayName:"Spend management list view inner element type",noDataWithFilterText:"No cards matched your search.",noDataText:'Click on the "New" button to issue cards.',bulkActions:{exceptionMessages:{closedCardsCannotBeSelected:"Closed cards can't be selected",onlyCardsUnderStatusCanBeSelectedTogether:"Only cards under __status__ status can be selected together",cardAlreadyLocked:"Card is already locked",onlyActiveCardsCanBeLocked:"Only active cards can be locked",cardNotLocked:"Card is not locked",onlyActiveOrInactiveCardsCanBeClosed:"Only active or inactive cards can be closed",onlyActiveOrLockedCardsCanHaveLimitsUpdated:"Only active or locked cards can have limits updated",onlyCardsWithPendingInvitesCanBeRevoked:"Only cards with pending invites can be revoked",cardCannotBeSelectedForAction:"This card cannot be selected for this action"}},header:{cardName:"Card Name",cardType:"Card Type",accountType:"Account Type"},status:{active:"Active",inactive:"Pending Activation",frozen:"Frozen",stolen:"Stolen",lost:"Lost",closed_by_customer:"Closed",suspected_fraud:"Suspected Fraud",request_on_hold:"Pending",locked:"Locked",closed:"Closed"},unassignedCard:"Unassigned Cards: ",slashMonth:"/ Month",tooltip:{business_virtual_credit_card:{cardUser:" needs to complete their profile to access this card.",self:"You need to complete your profile to access this card."},business_physical_credit_card:{cardUser:" needs to complete their profile before the card can be shipped.",self:"You need to complete your profile before the card can be shipped."},business_virtual_debit_card:{cardUser:" needs to complete their profile to access this card.",self:"You need to complete your profile to access this card."},business_physical_debit_card:{cardUser:" needs to complete their profile before the card can be shipped.",self:"You need to complete your profile before the card can be shipped."}},creditCardBalance:"Credit Card Balance",debitCardSpend:"Debit Card Spend",compareToLastMonth:"compared to last month"},cashbackDetail:{totalEarned:"Total Earned",redeemed:"Redeemed",tillDate:"Till Date"},issueCard:{title:"New Card",debitCard:"Debit Card",usersPlaceholder:"Who’s it for?",cardNamePlaceholder:"Add card name",cardholderLabel:"Cardholder: ",cardholdersLabel:"Cardholders: ",connectedAccountLabel:"Connected Account: ",cardNameLabel:"Card Name: ",amountLabel:"Amount: ",frequencyLabel:"Frequency: ",amountExceedError:"Amount exceeds _amount_ limit",amountExceedDebitCardError:"Amount exceeds the max. limit of _amount_",primaryBtnText:"Issue Card",frequencySubLabels:{monthly:"Limit resets every calendar month",quarterly:"Resets every 3 calendar months (Jan, Apr, Jul, Oct)",weekly:"Limit resets every Monday (12 UTC)",yearly:"Limit resets every calendar year"},address:{personal:"Personal",shippingAddressLabel:"Shipping Address:",customAddressText:"Address used to ship the card and won't be saved",personalAddressText:"Address set by _name_ in their personal profile"},addCard:"Add Card",deleteCard:"Delete Card",additionalInfoPhysical:"You can choose only one cardholder",additionalInfoVirtual:"You can choose multiple cardholders",cardLimitWarning:"Card Limit Reached"},cardOnboarding:{title:"Activate Your Card",oneLastStep:"One last step!",sectionTitle:"Personal Details",addressAdditionalInfo:"Physical card will be delivered to this address.",cvvPlaceholder:"Enter CVV",cardIsOnItsWay:"Congratulations! You're all set and your card is on its way",activateYourCard:"Congratulations! You're all set to activate your card",setYourPin:"Congratulations! Your card is activated—set your PIN to start using it",setFourDigitPIN:"Set a four-digit PIN",setFourDigitPinTitle:"Set a 4-digit numeric PIN for your card ending",setPin:"Set PIN",validExpiryDate:"Please ensure you enter a valid expiry date",validCVV:"Please ensure you enter a valid CVV",yourCardWillShipToBelow:"Your card will ship to below address in 7-10 business days",cardShippingAddress:"Card shipping address",creditCardLimit:"Credit card limit:",debitCardLimit:"Debit card limit:"},cardDetails:{cardClosedMessage:"The card is closed and can no longer be used.",cardLockedByAdminMessage:"Your card is locked by an Admin. Contact Admin to unlock it.",cardLockedMessage:"This card is currently locked and can't be used.",existingPin:"Existing PIN:",newPin:"New PIN:",pinAttemptsReached:"PIN attempts reached. Please try again after 24 hours",incorrectCurrentPIN:"Incorrect existing PIN. Please try again.",forgotYourPin:"Forgot your PIN?",callTollFree:"Call the toll-free number on the back of your card to reset it.",moreOptions:{changePin:"Change PIN",updateSpendLimit:"Update Spend Limit",revokeInvite:"Revoke Invite"},singleFileUploadSizeErrorMessage:"File size exceeds the maximum limit. Please upload a file under __maxFileSize__",multipleFileUploadSizeErrorMessage:"One or more files exceed the maximum limit. Please upload files under __maxFileSize__ each",failedToFetchCardWebText:"Failed to load card details. Please click to try again.",failedToFetchCardMobileText:"Failed to load card details. Please tap to try again.",clickTheCardToCopyDetailsText:"Click the card to copy details",clickTheCardToFetchDetailsText:"Click the card to fetch details",adminsCannotAccess:"Admins cannot access card details of another user.",tapCardCopyText:"Tap card > Copy details > Add to wallet",verifyCard:"Verify Card",cardColours:"Card Colors",owner:"Card Owner",transactionListTooltip:"Transactions over $__receiptRequiredAboveAmount__ need receipts, as per policy.",noDataText:"You don’t have any transactions yet!",transactionTable:{emptyTransactions:{title:"Your card is ready!",subTitle:"Use it today and easily track your spendings"},pendingProfileCompletion:{title:"Pending profile completion",subTitle:{business_physical_credit_card:"__user__ needs to complete their profile\n before the card can be shipped",business_virtual_credit_card:"__user__ needs to complete their profile\n to access this card",business_physical_debit_card:"__user__ needs to complete their profile\n before the card can be shipped",business_virtual_debit_card:"__user__ needs to complete their profile\n to access this card"}},pendingActivation:{title:"Pending activation ",subTitle:"__user__ has not activated the card yet"}},cardNumberHideout:"•••• •••• •••• ",cvvHideOut:"•••",cvv:"CVV",expiry:"Valid Thru",cardTheme:"Card Theme",addCardToGoogleWallet:"Add Card to Google Wallet",addCardToAppleWallet:"Add Card to Apple Wallet",openWalletAppOnPhone:"Open Wallet App on Phone",openWalletDescriptionGoogle:'Tap the "+" Add payment card" on your Google Wallet app, select "+ new credit or debit card" to scan the card or enter the details manually',openWalletDescriptionApple:'Tap the "+" button on your wallet app to scan the card or enter the details manually',VerifyCardDescriptionGoogle:"Complete the verification process, and your Zeni Card will be ready to use securely from your Google Wallet.",VerifyCardDescriptionApple:"Complete the verification process, and your Zeni Card will be ready to use securely from your Apple Wallet.",scanNowAndAddToWallet:"Scan now and add to wallet",addToGoogleWallet:"Add to Google Wallet",addToAppleWallet:"Add to Apple Wallet",appleWallet:"Apple Wallet",googleWallet:"Google Wallet",verifyPhoneNumberDescription:"To use this card, users must verify their phone number. We recommend using a phone number that you access frequently.",bannerText:" is yet to complete their profile to access this card.",bannerTextSelf:"You are yet to complete your profile to access this card.",revokeInvite:"Revoke invite",expiryHideOut:"••••"},payEarly:{payNow:"Pay Now",billDueIn:"Bill due in",creditLimitLow:"Credit Limit Low",paymentInitiated:"Payment Initiated",paymentOf:"Payment of",isProcessing:"is processing.",madeOn:"made on",isProcessingAndWillUpdateTheCreditLimitIn23BusinessDays:"is processing and will update the credit limit in 2–3 business days.",isProcessingAndWillResetTheCreditLimitIn23BusinessDays:"is processing and will reset the credit limit in 2–3 business days.",isProcessingAndWillUpdateTheCreditLimitIn1BusinessDay:"is processing and will update the credit limit within 1 business day.",isProcessingAndWillResetTheCreditLimitIn1BusinessDay:"is processing and will reset the credit limit within 1 business day.",theCompanyCreditLimitWillUpdateIn23BusinessDays:"The company’s credit limit will update in 2–3 business days.",transactionsMayBeDeclinedBecauseTheCompanyCreditLimitIsRunningLow:"Transactions may be declined because the company's credit limit is running low. ",transactionsMayBeDeclinedBecauseTheCreditLimitIsRunningLow:"Transactions may be declined because the credit limit is running low.",payEarly:"Pay Early",creditLimitIsLow:"Credit Limit is Low",creditLimitIsRunningLow:"Credit limit is running low.\n Pay now to continue spending.",enableAutoPay:"Enable autopay when credit card balance reaches __autoPayThreshold__% of the limit",earn:"Earn ",whenYouPayViaZeniChecking:" when you pay via Zeni Checking",youvePaid:"You've paid ",theCreditLimitWillResetWithin23BusinessDays:"\nThe credit limit will reset within 2-3 business days.",theCreditLimitWillUpdateWithin23BusinessDays:"\nThe credit limit will update within 2-3 business days.",theCreditLimitWillResetWithin1BusinessDay:"\nThe credit limit will reset within 1 business day.",theCreditLimitWillUpdateWithin1BusinessDay:"\nThe credit limit will update within 1 business day.",goToCards:"Go to Cards",goToPaymentHistory:"Go to Payment History",payCreditCardBalance:"Pay Credit Card Balance",creditLimitReset:"Credit Limit Reset:",creditLimitUpdate:"Credit Limit Update:",business23Days:"(2-3 business days)",byClickingPayNowIAuthorizeZeniToInitiateThePayment:'By clicking "Pay Now" I authorize Zeni to initiate the payment.',bookPayment:"Book Payment",sameDayACH:"Same Day ACH",timeline01BusinessDay:"0-1 business day",timeline23BusinessDays:"2-3 business days",estimatedPaymentCompleteWithTimeline:"Estimated payment complete: __date__ (__timeline__)",estimatedPaymentCompleteWithoutTimeline:"Estimated payment complete: __date__",yourTransactionsMayBeDeclinedBecauseTheCompanyCreditLimitIsRunningLowWeHaveNotifiedYourAdmin:"Your transactions may be declined because the company's credit limit is running low. We have notified your admin.",percentageCashback:"__percentage__% cashback"},renamePopup:{heading:"Rename card",newName:"New name:",placeholder:"Enter new name"},updateSpendLimitPopup:{currentLimit:"Current limit:",slashMonth:"/Month",newLimit:"New Limit:",amountExceedError:"Max limit is _amount_",amountBelowError:"Limit cannot go below spent amount",amountBelowErrorBulk:"Limit cannot be lower than the spent amount on any of the selected cards",maxLimitForCardTypeError:"Max limit for _card_type_ cards is _amount_",unlockSpending:"Unlock spending power!"},addToWallet:{heading:"You are all set.\n Start using your card",subheading:"Add the card to your Apple or Google Wallet"},chargeCardsPromo:{activateCard:"Activate Card",noCardAssigned:{pre:"You haven’t been assigned any cards yet, please reach out to your ",tooltip:"admin",post:" to request a card."},cardAssigned:{singleCreditCard:"Congratulations! __issuing-user__ is inviting you to use __company-name__ credit card, powered by Zeni",singleDebitCard:"Congratulations! __issuing-user__ is inviting you to use __company-name__ debit card, powered by Zeni",selfIssuedSingleCreditCard:"You're invited to use __company-name__ credit card, powered by Zeni",selfIssuedSingleDebitCard:"You're invited to use __company-name__ debit card, powered by Zeni",multipleDebitCreditCards:"You're invited to use __company-name__ debit and credit cards, powered by Zeni",multipleCreditCards:"You're invited to use __company-name__ credit cards, powered by Zeni",multipleDebitCards:"You're invited to use __company-name__ debit cards, powered by Zeni"},promoTextCreditCardPost:"Business Credit Card",promoTextDebitCardPost:"Business Debit Card",promoTextDebitCreditCardPost:"Business Debit and Credit Card",aiPowered:"AI Powered",promoSubText:"Save smart, spend wisely, and simplify your spending with ease.",userPendingPromoText:"Cards set up process is pending, please check with your admin",promoBadgeText:{preApproved:"Exciting news! You have been pre-approved for ",approved:"Congratulations! You have been approved for ",underReview:"We’re reviewing your request and will get back to you shortly.",rejected:"We’ve reviewed your request, but can’t offer a credit line right now.",nonPreApproved:{get:"Get ",scale:"10-20x",higherLimits:"higher limits than other business cards.",doubleStarred:"**"}},trustBanner:{title:"Zeni Business Cards is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni AI Cards automatically categorize, match, and reconcile every transaction, saving finance teams many hours every month."},creditLimit:" credit limit.",preApprovedAmount:"$50,000",benefits:{item2:"Smart Automation",item3:"Unified Control",item4:"Unlimited Cards"},dashboard:{title:"AI Business Credit Cards",get:"Get",cashback:"cashback",subTitle1:" __cashback__% ",subTitle2:"10-20x higher limits and expert support",promoCarousel:{preApprovedLimit:{header:"Enjoy a pre-approved limit",prefix:"Unlock 10-20x higher credit limit\n than traditional cards."},creditLimit:{header:"Unlock credit limit upto",prefix:"Higher than\n traditional cards.",headerAnimationData:["10-20x"]},cashback:{header:"Earn cashback upto",prefix:"On all expenses made\n using Zeni Cards."},receiptMatching:{header:"AI receipt matching",prefix:"Automated receipt matching via\n email or SMS, saving time and effort.",email:"receipts@zeni.com",autoMatching:"Auto-matching",companyName:"McDonald's",date:"May 17",amount:"$65"},categorization:{header:"AI-powered categorization",prefix:"Save hours of manual work with\n automated expense categorization.",autoCategorize:"Auto-categorize"},noHiddenFees:{header:"No fees,\n just savings",prefix:"No hidden fees,\n just pure savings",headerAnimationData:["0","1","2","2","3","4","5"]},discoverBenefits:"Discover Benefits"}},setupCardsButton:"Setup Cards",getPreApprovedNow:"Get Pre-Approved Now",terms:{terms1:'By clicking "Setup Cards" I have read and accepted the ',alternateTerm1:'By clicking "Enable Cards" I have read and accepted the ',getPreApprovedNowTerm:'**Subject to approval. By clicking "Get Pre-Approved Now" I have read and accepted the ',cardUserTerm:'By clicking "Let’s Go" I have read and accepted the ',cardAdminTerm:'By clicking "Proceed" I have read and accepted the ',shipMyCardTerm:'By clicking "Ship My Card" I have read and accepted the ',zeniAgreement:"Zeni Accounts Agreement",terms3:" ✌🏻",checkingAccountTerm:"*Linked Zeni Checking account needed.",approvalTerm:"**Subject to approval."},businessDebit:"Business Debit",keyBenefits:"Key Benefits",aIAutomatedCategorization:"AI automated categorization",maximumCVV:"Maximum CVV attempts reached",forAssistance:"For assistance please contact team@zeni.ai",realtimeSpendVisibility:"Realtime spend visibility",cardOnboardingFormTitle:"Provide your date of birth and phone number.",yourCardWillBeShipped:"Your card will be shipped to",shipMyCard:"Ship My Card",enterExpiryDateAnd:'Enter "Expiry Date" and "',toActivateTheCard:'" to activate the card ending ',whatIsCVV:"What is CVV?",receivedYourCard:"Received your card ending with",proceedToActivate:"Proceed to Activate",cvvText:"456",cardNum:"0000 0000 0000 0000",validThru:"VALID THRU",expiryDate:"12/25",cardFooterContent:"This card is issued by Thread Bank, Member FDIC, pursuant to a license from Visa USA Inc.",timeText:"9:41",addToWallet:"Card added to wallet",addAddressSubText:"This address is used to ship the card and won’t be saved.",listPage:{spendSmarter:"SPEND SMARTER",getAccessTo:"GET ACCESS TO",setUpText:"Set up your first\n __cardType__ card today.",promoMultiText:{debit:["__cashBack__% cashback on every purchase","AI powered expense categorization","No hidden fees, just savings","Automatically match your receipts"],credit:["Pre-approved for __creditLimit__","__cashBack__% cashback on every purchase","AI-powered expense categorization","No hidden fees, just savings","Automatically match your receipts"]},promoSubText:{credit:"First AI Business Credit",debit:"First AI Business Debit Card"},createNow:"Create Now",status:{requestRejected:"Request Rejected",requestUnderReview:"Request Under Review",rejectedMessage:"We can't offer a credit line right now.",underReviewMessage:"We're reviewing your request and will get back to you shortly."}}},chargeCardSetUp:{setupTitle:"Card Setup",setupAccountSectionTitle:"Credit Card Payment Source",setupSubTitleNotEnabled:"Bingo! You are all set to enable and use cards.",setupSubTitle:"Manage your business verification, bank details to make Zeni work better for you.",pageName:"Charge Card Setup"},connectedAccount:"Connected Account",aiAccountantMessage:"will instantly auto-match receipts. Email receipts to",cardsAiCfoHero:{headline:"Issue your first card. Start earning 1.75% back today.",subheadline:"Unlimited virtual cards, smart limits, real-time AI controls — all set up for you.\nYou approve before launch. Pick a starting point ↓",composerPlaceholder:"Ask AI CFO about cards…",pageTitle:"AI CFO for Cards",chatHeaderSubtitle:"Designing your cards stack"},cardPolicyAiCfoHero:{headline:"Set up your first policy. Control spend with confidence",subheadline:"Smart rules, dynamic limits, real-time controls — all pre-configured for you.\nReview, customize, and launch in seconds ↓",pageTitle:"AI CFO for Card Policy",chatHeaderSubtitle:"Designing your cards policy",composerPlaceholder:"Ask AI CFO a question and get clear answers."},cardPolicyPage:{title:"Card Policy",createPageTitle:"New Card Policy",manualEmptyStateHeadline:"Or Create Manually",manualEmptyStateSubtext:'Click on the "New" button to create policy.',manualCreatePlaceholder:"Manual policy creation coming soon.",uploadDocumentTitle:"Upload Policy Document",uploadDocumentSubtitle:"Upload a policy document to extract and create a new policy.",uploadDocumentExtractingLabel:"Extracting policy details...",uploadDocumentRemoveAriaLabel:"Remove uploaded policy document",uploadDocumentExtractErrorMessage:"We couldn't read that policy document. Try a different file.",aiCfoUploadDocumentStepTitle:"Upload a policy document to extract and create a new policy.",policyInformationTitle:"Policy Information",modeStrictDescription:"Block transactions that violate policy",modeFlexibleDescription:"Allow but flag violations for review",namePlaceholder:"e.g. Marketing spend policy",descriptionPlaceholder:"Describe the purpose and scope",vendorRestrictionsTitle:"Vendor Restrictions",vendorRestrictionsSubtitle:"Control which vendors can or cannot be used with this policy. Add vendors to the allowed or blocked list.",vendorAllowLabel:"Allow Vendors",vendorRestrictLabel:"Restrict Vendors",vendorSearchPlaceholder:"Search vendors",categoryRestrictionsTitle:"Category Restrictions (MCC Codes)",categoryRestrictionsSubtitle:"Restrict spending by merchant category codes. Block high-risk categories like gambling or cryptocurrency.",categoryAllowLabel:"Allow Category",categoryRestrictLabel:"Restrict Category",categorySearchPlaceholder:"Search categories",applyToCardsTitle:"Apply to Cards",applyToCardsSubtitle:"Select cards to automatically apply this policy after creation.",applyToCardsSearchPlaceholder:"Search by cardholder, last 4 digits or department",applyToCardsEmptySearchResultsLabel:"No cards match your search.",nameRequiredError:"Policy name is required",nameMaxLengthError:"Policy name must be 80 characters or less",createPolicyGenericErrorMessage:"Something went wrong while creating the policy. Please try again.",updatePolicyBtnLabel:"Update Policy",updatePolicyGenericErrorMessage:"Something went wrong while updating the policy. Please try again.",manageSubheader:"Manage Card Policy",editPolicyAriaLabel:"Edit policy",archivePolicyAriaLabel:"Archive policy",cardsCountLabel:e=>`${e} ${1===e?"Card":"Cards"}`,vendorRestrictionsCountLabel:e=>`${e} ${1===e?"Vendor Restriction":"Vendor Restrictions"}`,categoryRestrictionsCountLabel:e=>`${e} ${1===e?"Category Restriction":"Category Restrictions"}`,transactionLimitHelper:"Maximum amount per single transaction"}},treasury:{menuTooltip:{earnUpTo:"Earn up to",description:"yield and maximize your idle cash. "},overviewPage:{transferFunds:"Transfer Funds",editPortfolio:"Edit Portfolio",taxLetter:"Tax Letter",taxLetterFileName:"tax-letter.pdf",noData:"No performance data yet! \nInitiate your first transfer to start earning yield.",insuredFundsTooltip:"Securities in your account are protected up to $500,000. For details, please see www.sipc.org",fundTilesSectionTitle:"Your Treasury Funds",insuredFundsAmount:"Up to $500k SIPC Insured",sevenDayYield:"7-Day Yield",balanceTooltip:{base:"Your available balance does not include processing transactions.",balance:"Total balance:",processing:"Processing transactions:",available:"Available balance:"},fundTile:{sevenDayYieldTooltip:"7-day SEC yield as of November 1, 2025. The SEC yield for a fund is calculated by annualizing its daily income distributions for the previous 7 days. You should consider the investment objectives, risks, charges, and expenses of a fund carefully before investing. This and other information is found in the fund’s prospectus. Please read the prospectus before investing. An investment in a fund is not insured or guaranteed by the Federal Deposit Insurance Corporation or any other government agency. Although a fund seeks to preserve the value of your investment at $1.00 per share, it is possible to lose money by investing in a fund. Yields fluctuate and past performance is no guarantee of future results."}},promoPage:{yieldLabel:" 7-Day Yield",liquidity:" Liquidity",higherReturns:"Higher returns",quickPayments:"Quick payments",heading:"Low Risk, High Reward, Steady Returns",subHeading:"Secure your funds with Zeni Treasury",usps:{sipcInsured:"SIPC Insured",highLiquidity:"High Liquidity",sameDayTransfer:"Same-Day Transfer",autoTransfers:"Auto Transfers"},fundSize:"Fund Size",maturity:"Maturity",expenseRatio:"Expense Ratio",expenseRatioSuffix:"% included in the yield",riskRating:"Risk Rating",composition:"Composition",compositionHeading:"View the fund's asset allocation at a glance.",disclaimer1:"I. 7-day SEC yield as of November 1, 2025. The SEC yield for a fund is calculated by annualizing its daily income distributions for the previous 7 days. You should consider the investment objectives, risks, charges, and expenses of a fund carefully before investing. This and other information is found in the fund’s prospectus. Please read the prospectus before investing. An investment in a fund is not insured or guaranteed by the Federal Deposit Insurance Corporation or any other government agency. Although a fund seeks to preserve the value of your investment at $1.00 per share, it is possible to lose money by investing in a fund. Yields fluctuate and past performance is no guarantee of future results.",disclaimer2:"II. Same-day liquidity is subject to cutoff times (typically 12 PM ET) and transaction limits. Availability is not guaranteed.",disclaimer3:"III. Securities in your account are protected up to $500,000. For details, please see ",disclaimer3Url:"www.sipc.org.",disclaimer4:"IV. This tool is for illustrative purposes only and does not guarantee future performance. Yields are subject to change.",agreementP1:'Investment advisory services are provided by Atomic Invest LLC, an SEC-registered Investment Adviser. Brokerage services provided by Atomic Brokerage LLC, registered broker-dealer and member of FINRA/SIPC. Due to the relationship between Atomic Invest and Atomic Brokerage, there is a conflict of interest as Atomic Invest directs orders to its affiliate. Investments in securities: Not FDIC Insured. Not Bank Guaranteed. May Lose Value. Zeni Inc. has engaged Atomic Invest LLC ("Atomic") to bring you the opportunity to open an investment advisory account. Atomic may pay Zeni Inc. up to 0.85% of assets under management annually, creating a conflict of interest. Disclosures: ',formCrsText:"Form CRS",formCrsLink:"https://reports.adviserinfo.sec.gov/crs/crs_313255.pdf",formAdvText:"Form ADV Part 2A",formAdvLink:"https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=970947",privacyPolicyLink:"https://legal.atomicvest.com/usa.privacy.de3d0277-78f7-4741-9e9f-755f6b4f03ba.pdf",generalDisclosuresText:"General Disclosures",generalDisclosuresLink:"https://legal.atomicvest.com/usa.disclosures.e1dc8c5c-1742-453e-9157-51e09deee88b.pdf",sipcInfoText:"SIPC Info",viewAgreement:"View Agreement",agreementDrawer:{title:"Open your Treasury Account",intro:"Your Agreement with Atomic Invest LLC and Atomic Brokerage LLC By clicking “Enable Treasury,” you agree that:",introBullets:["You are of legal age and have the capacity to enter into this agreement.","You wish to open a brokerage account with Atomic Brokerage LLC, with investment advisory services provided by Atomic Invest LLC.","You confirm that you have been provided with, read, understood, and agree to the agreements, disclosures and policies listed below:"],documents:[{text:"Atomic Invest Form CRS",link:"https://reports.adviserinfo.sec.gov/crs/crs_313255.pdf"},{text:"Atomic Brokerage Form CRS",link:"https://files.brokercheck.finra.org/crs_315263.pdf"},{text:"Atomic Invest LLC Investment Advisory Agreement",link:"https://legal.atomicvest.com/usa.ima.3FhWfWocRJbFt9qCd5vLON-MMdpqYo1z9OLuUV6uTCg=.pdf"},{text:"",hasMultipleLinks:!0,links:[{text:"Atomic Brokerage LLC Account Agreement,",link:"https://legal.atomicvest.com/usa.broker.agreement.9fd3cb75-d1c5-4b75-8bb8-af05138de439.pdf"},{text:" Margin Supplement Agreement",link:"https://legal.atomicvest.com/usa.custodian.margin-agreement.92f22dc6-cfd4-407f-9006-4a2bef95697c.pdf"},{text:" and ",link:""},{text:"Margin Disclosure Statement",link:"https://legal.atomicvest.com/usa.atomic-brokerage.margin-agreement.f234549b-b32a-4078-805a-2a68c48486e6.pdf"}]},{text:"Atomic Cash Sweep Program Terms and Conditions",link:"https://legal.atomicvest.com/usa.broker.sweep-terms-and-conditions.68e22843-5855-452c-9399-4e6092db7344.pdf"},{text:"Atomic Invest General Disclosures",link:"https://legal.atomicvest.com/usa.disclosures.e1dc8c5c-1742-453e-9157-51e09deee88b.pdf"},{text:"Atomic Brokerage General Disclosures",link:"https://legal.atomicvest.com/usa.broker.disclosures.003464f3-f6bd-41c3-bbdf-7050e50b43a2.pdf"},{text:"Atomic Invest Form ADV Part 2A",link:"https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=970947"},{text:"Atomic Invest and Atomic Brokerage Privacy Policy",link:"https://legal.atomicvest.com/usa.privacy.de3d0277-78f7-4741-9e9f-755f6b4f03ba.pdf"}],confirmTitle:"You also confirm:",confirmBullets:["You agree to resolve any disputes with Atomic Invest and Atomic Brokerage through binding arbitration.","You delegate proxy voting authority to Atomic Invest.","You allow Atomic Invest to direct the purchase and sale of investments on your behalf.","You agree that electronic signatures are legally binding and to the electronic delivery of Atomic Invest and Atomic Brokerage account communications, including account statements, trading confirmations, and tax documents.","You agree to the Quarterly Delivery of Trading Confirmations Certification.","You have read, understood, and agree to the Taxpayer Certification, including that you are not subject to back-up withholding and are exempt from FATCA reporting for this account."]},sliderTitle:"Start earning more with Zeni Treasury",sliderEarnLabel:"Earn",sliderPerYear:"/year",sliderTooltipPrefix:"Deposit:",sliderLabel1:"$1.25M",sliderLabel2:"$2.5M",sliderLabel3:"$3.75M",sliderLabel4:"$5M",sliderLabel5:"5M",enableButton:"Enable Treasury",setupButton:"Setup Treasury"},statements:{title:"Treasury Statements"},taxLetter:{title:"Treasury Tax Letter",noTaxLetter:"No Tax Letter found"},transferDrawer:{title:"Transfer to Treasury",stepTitle:"Step 2: Transfer to Treasury",subTitle:"Transferred funds typically take 1-2 business days to show in the account.",transferNow:"Transfer Now",reviewAndConfirm:"Review & Confirm Transfer",backToTreasury:"Back to Treasury",review:{prefix:"Funds will be deposited to ",suffix:"on __date__.",footNote:'By clicking "Transfer," I authorize Zeni to initiate the transfer.',footNoteForVerification:'By clicking "Submit," I authorize Zeni to initiate the transfer of funds.'},calculator:{sliderTooltipText:"Deposit: ",footerText:{annualYieldEarnedTooltipText:"This is the amount you'll earn on your funds on an annualized basis.",forTotalDeposit:"For Total Deposit:"},heading:"Your balance is covered up to __amount__ by SIPC Insurance, and you will earn up to __rate__% APY. Check out the example below to see what you could gain!"},amountPlaceholder:"$0"},setup:{setupPageName:"Zeni Treasury Setup",setupSubTitle:"Manage your portfolio allocation, business verification, bank details.",title:"Funds Transfer",subTitle:"Tailored to match your goals and tolerance.",verificationInProgress:"Business verification takes up to 24 hours. Once verified transfer will take 1–2 business days. We'll notify you by email."},portfolioAllocation:{stepTitle:"Step 1: Portfolio Allocation",editTitle:"Edit Portfolio Allocation",subtextReadOnly:"Based on your preferences, here's the fund distribution tailored to your goals.",subtextSetup:"Please share your preferences, and we'll calculate the fund distribution tailored to your goals.",subtextEdit:"The changes to your portfolio will take effect in 2-3 business days. Funds in Treasury remain invested during this time.",resetButton:"Reset to recommended allocation",changePreferences:"Change preferences",riskLevelLabel:"Risk Level"},promoBanner:{title:"Introducing Treasury",features:{yield:"Up to __yieldPercentage__ yield — 7-Day Yield",insured:"__insuredAmount__ SIPC Insured",liquidity:"High Liquidity, Same-Day Transfer"},disclaimer:"*Same-day liquidity is subject to cutoff times and transaction limits. For full terms and conditions, visit __termsLink__.",termsLink:"Zeni Treasury Terms of Service"}}},taskManagement:{common:{timeSpentPlaceholder:"00h 00m",timeSpentFormat:"##h ##m"},taskList:{tabs:{archived:"Archived",snoozed:"Snoozed",completed:"Completed",deleted:"Deleted",live:"Active"},searchPlaceHolder:"Search task by task name",noDataText:'Click on the "Create" button to add new task',deleteConfirmationMessage:"This action cannot be undone, and all the tasks in group will be moved to “All Other tasks” group.",footer:{taskSelected:"Task Selected",tasksSelected:"Tasks Selected",moveTo:"Move to",ungroup:"Ungroup",assignees:"Assignees",dates:"Dates",undoDelete:"Undo Delete",noTagsAvailable:"No tags available"},taskGroup:{groupNamePlaceholder:"Add group name",deleteTaskGroup:"Delete Task Group?"},newTaskOptions:{groupTemplates:"Group Templates",noTaskGroup:"No tasks or group found!",newTaskOptionText:'Create "__searchText__" as a new task',newGroupOptionText:'Create "__searchText__" as a new group',searchPlaceholder:"Search task or group"},taskGroupMoreOptions:{groupOptions:"Group options",addTask:"Add Task"},groupingFilters:{placeholder:"Select Group by",groupBy:"Group by",no_tag:"No Tags",no_assignee:"No Assignees",completedInfo:"__resolvedTasks__ out of __totalTasks__ tasks completed"}},taskDetail:{taskNamePlaceholder:"Add task name",statusPlaceholder:"Add status",assigneePlaceholder:"Add assignee",dueDatePlaceholder:"Add due date",priorityPlaceholder:"Add priority",tagPlaceholder:"Add tag",taskTypeLabel:"Task Type:",totalNumberOfTasks:"Total No. of Tasks",attachmentTitle:"Files/Attachments",groupLabel:"Group:",taskCommentCreationMessage:"Please create task to add comments",totalTimeSpent:"Total Time Spent",snoozeUntil:"Snooze until...",snoozeLaterToday:"Later today",snoozeTomorrow:"Tomorrow",snoozeThisWeekend:"This weekend",snoozeNextWeek:"Next week",snoozePickDateTime:"Pick date & time",snoozedUntilBanner:"Snoozed until _date_",viewParentTask:"View parent task",visibilityPublic:"Public",visibilityRequired:"Visibility is required",subtasksLabel:"Subtasks",addSubtask:"Add subtask",subtaskNameRequired:"Name is required",subtasksComplete:"_completed_/_total_ Complete",createSubtaskLabel:"Create Subtask",selectGroupPlaceholder:"Select group",defaultGroupName:"All Other Tasks",pressEnterToCreate:"Press Enter to Create",semiWeeklyDaysLabel:"Select two days:",semiWeeklyDaysExactlyTwo:"Please select exactly 2 days.",semiWeeklyDaysShort:{mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri"},recurringDescriptions:{daily:"Every weekday (Mon–Fri), skipping US holidays",weekly:"Every week on the same day (adjusted for holidays)",biweekly:"Every two weeks on the same day (adjusted for holidays)",semiWeeklyEmpty:"Select two days for semi-weekly recurrence",semiWeeklySelected:"Twice a week on _days_, skipping holidays",monthly:"Monthly on the _ordinal_ (shifted to next business day if needed)",quarterly:"Quarterly on the _ordinal_ (shifted to next business day if needed)"},frequencyLabels:{biweekly:"Biweekly",semiWeekly:"Semi-Weekly"},descriptionEditorTooltip:{leftAlign:"Left Align",centerAlign:"Center Align",rightAlign:"Right Align",justifyAlign:"Justify Align"}},quickResponses:{pageTitle:"Quick Responses",pageSubtitle:"Manage your comment templates",newTemplate:"+ New Template",templateNamePlaceholder:"Template name",messageContentPlaceholder:"Message content",nameHeader:"NAME",previewHeader:"PREVIEW",actionsHeader:"ACTIONS",emptyState:"No quick responses yet. Create one to get started.",manageTemplates:"Manage templates"}},address:{},formElements:{dayOfMonthSelector:{placeholder:"00",lastDayOfMonth:"Last day of the month",daysOfMonth:{1:"1st",2:"2nd",3:"3rd",4:"4th",5:"5th",6:"6th",7:"7th",8:"8th",9:"9th",10:"10th",11:"11th",12:"12th",13:"13th",14:"14th",15:"15th",16:"16th",17:"17th",18:"18th",19:"19th",20:"20th",21:"21st",22:"22nd",23:"23rd",24:"24th",25:"25th",26:"26th",27:"27th",28:"28th",lastDayOfMonth:"Last day "}}},rewardsPage:{referAndEarn:"Refer & Earn",deleteReferral:"Delete Invitee",referButton:{copyReferralUrl:"Copy Referral URL",urlCopied:"Referral URL Copied"},header:{invitee_email:"Invitees"},inviteList:{status:{invite_processing:"Invite Processing",invite_sent:"Invite Sent",declined:"Declined",resend_invite:"Resend Invite!"},headerElementDisplayName:"Invite list view inner element type",pageTitle:"My Invitations"},rewardsCard:{rewardsSummaryShort:"Receive up to __reward-amount__ for every new company you refer to Zeni",rewardsSummary:{PLAN_1000:"Refer a new company to Zeni, and you'll both earn up to __reward-amount__ each",PLAN_4000:"Earn up to __reward-amount__ for every new company you refer to Zeni"},copyReferralLink:"Copy Referral Link",bonus:"BONUS"},statisticsCard:{title:"Rewards Statistics",earned:"Total Earnings",pending:"Pending Bonus",pendingReferrals:"Pending Referrals",howItWorks:"How it works",knowMore:"Know more"},drawerPage:{item1:{title:"Share the Love",content:"Introduce your friends to Zeni using your referral link."},item2:{title:"Welcome Aboard",content:"Upon sign up, they become part of the Zeni family."},item3:{title:{PLAN_1000:"Win-Win Rewards",PLAN_4000:"Win Rewards"},content:{PLAN_1000:"Both you and your friend earn up to __reward-amount__ each when they come onboard.",PLAN_4000:"You earn up to __reward-amount__ for every new company that comes onboard."}}},inviteEmailTemplate:{fromEmail:"invite@zeni.ai",title:"is inviting you to join Zeni",content:{PLAN_1000:"Congratulations! You have been recommended by __user-name__ from __company-name__ to join Zeni! Unlock instant financial clarity with AI-powered bookkeeping & expert support, saving your business 70+ hours on average per month. Get started today and earn a generous __reward-amount__ bonus upon successful onboarding!",PLAN_4000:"Congratulations! You have been recommended by __user-name__ from __company-name__ to join Zeni! Unlock instant financial clarity with AI-powered bookkeeping & expert support, saving your business 70+ hours on average per month."},templateTitle:"__user-name__ thinks you’ll love Zeni",subTitle:"Discover the Zeni Advantage",listItems:{item1:{key:"AI-Powered Bookkeeping",title:"Updates your books daily with real-time insights"},item2:{key:"Bill Payments",title:"Multi-level approval flows and no ACH fees"},item3:{key:"Employee Reimbursements",title:"Auto categorization and same-day ACH"},item6:{key:"Comprehensive Financial Services",title:"Fractional CFO, tax, and payroll services available"},item7:{key:"Personalized Support from Experts",title:"Regular check-ins to evaluate your business's financial well-being"}},person1:"Fractional CFO",person4:"Dedicated Team",footer:"Ready to elevate your financial experience?"},form:{invitee:"Invitee",addInvitee:"Add Invitee",counterText:"You could earn up to ",sendEmailTo:{label:"Send To",placeholder:"Add emails",helperText:"Add users, you would like to send emails to",uniqueEmailMessage:"Please enter unique email addresses",invalidEmailMessage:"Please enter valid email address"}}},vendors:{common:{reportTitles:{operating_expenses_by_vendor:"OPEX By Vendor",vendors_tab:"Summary",prepaid_expenses:"Prepaid Expenses",fixed_assets:"Fixed Assets",accrued_expenses:"Accrued Expenses",filing_1099:"1099 Filing"},transactionTabTitles:{spendTransactions:"Spend transactions",allTransactions:"All transactions"},searchPlaceholder:"Try searching for vendors"},opExByVendor:{noResultsFound:"Nothing matched your search. Please try again."},filing1099:{header:{w9:"Form W-9"},download:{nec:"NEC",misc:"MISC",int:"INT",all:"Download All",defaultFileName:"1099-__type__"}}},billingSetupPage:{section:{subTitle:"Set up payment methods and manage how Zeni bills your subscription."}},customerOnboardingPage:{stepCounterLabel:"Step {stepNumber} of {totalSteps}",steps:{link_payment_account:{stepSubText:"Link your bank account or credit card with Zeni",sectionTitle:"Go live with your Zeni Dashboard",sectionSubTitle:"To get started, please link your payment method and enter company billing address."},qbo_connection:{stepSubText:"Help Zeni to pull QBO data for the dashboard.",sectionSubTitle:"To set up your dashboard, we must connect with your QuickBooks account."},company_officer:{sectionSubTitle:"Enter proof of identity to complete verification.\n The KYC info is required to comply with the Bank Secrecy Act and Anti-Money Laundering regulations.",stepSubText:"Enter proof of identity to complete verification."},company_details:{sectionSubTitle:"Enter business details to complete verification.\n The KYB info is required to comply with financial regulations and uphold the security of our customers.",stepSubText:"Enter business details to complete verification."},link_card:{footNote:{text2:"Switch to credit card (3% fee)"},footNoteCard:{text1:"Switch to bank account — save 3% on your fee"}}},navBar:{skipText:"Skip, I will do this later",link_payment_account:{title:"Go live with your Zeni Dashboard!",subTitle:"To setup your Zeni dashboard, please complete the following steps"},qbo_connection:{subTitle:"To set up your dashboard, we must connect with your QuickBooks account."},company_officer:{subTitle:"Enter proof of identity to complete verification.\n The KYC info is required to comply with the Bank Secrecy Act and Anti-Money Laundering regulations."},company_details:{subTitle:"Enter business details to complete verification.\n The KYB info is required to comply with financial regulations and uphold the security of our customers."}},sections:{link_payment_account:{subText:"Log in securely to your bank and start managing your payments right away",smsOptIn:"SMS Opt-in",smsOptOut:"SMS Opt-out",bankVerificationTitle:"Follow these steps to verify bank account",plaidSmsVerification:"An example of Plaid sending an SMS with the verification link",highlightedWords:{depositAmount:"$0.01",plaidSms:"Plaid will then send you a",smsWithALink:"SMS with a link",zeniAccountVerify:"ZENI ACCTVERIFY",smsLink:"link in the SMS"},bankVerification1:{step1:"Within a few days, you'll see a $0.01 deposit from Plaid in your bank account.",step2:"Plaid will then send you an SMS with a link (unless opted out) to complete the verification.",step3:'Check your bank statement for a 3-letter code after "#" symbol in "ZENI ACCTVERIFY" transaction.',step4:'Open the link in the SMS from Plaid or click "Start Verification" below to verify.'},bankVerification2:{step1:"Within a few days, you'll see a $0.01 deposit from Plaid in your bank account",step2:'Check your bank statement for a 3-letter code after "#" symbol in "ZENI ACCTVERIFY" transaction.',step3:'Enter this code by clicking "Start Verification" button below to complete your verification.'},verifyButton:"Verify Bank Account",verificationNotice:{title:"We're verifying your account via Plaid",subTitle:"This may take up to 2 business days.",notificationText:"Once verified, we’ll notify you via email so you can complete the onboarding."}},card_payment_method:{subHeader:"Securely add your preferred payment method to activate your account.",addNewCard:"Link a new card",protectedCardNo:"****"},connectLedger:{introBody:"This is the moment AI Accountant activates. In the first 2 hours it will read your books, detect recurring journal entry patterns, flag variance anomalies, and hand AI CFO the financial foundation it needs to answer any question you ask.",whatHappensHeading:"What happens after you connect?",firstPhase:{title:"First 2 hours",body:"Reads your chart of accounts and every transaction to build a complete finance graph of your company — a structured model of vendors, accounts, cash flows, and relationships that powers every automated report."},secondPhase:{title:"First 2 to 4 hours — your AI gets personal",body:"Zeni builds AI models fine-tuned specifically to {tenantName} — your vendors, your chart of accounts, your accounting patterns. Trained on signals from 1,000+ Zeni customers and over $20B in transactions."},unlocksTooltip:{quickbooks:{heading:"What you unlock by connecting Quickbooks",accountantBullets:["Auto-categorizes every transaction into your chart of accounts.","Reconciles bank, card, and ledger lines end-to-end.","Drafts the journal entries that close your books."],cfoBullets:["Grounds every forecast and answer in your live ledger.","Powers cash, burn, and runway in the dashboard."]},netsuite:{accountantBullets:["Consolidates close across every subsidiary in your structure.","Drafts multi-entity GL with intercompany eliminations.","Handles advanced revenue recognition schedules."],cfoBullets:["Rolls cash, burn, and runway up across all subsidiaries.","Forecasts respect entity-level transfer pricing and FX."]}},pageSubtitle:"Required foundation for both AI Agents"},officerVerification:{introBody:"Upload a government-issued ID below. Zeni AI reads the document and autofills your details automatically — no manual typing required.",aiCallout:{body:"will retrieve data from the document once you upload it and autofill the details."},autofillFooter:"Fields marked with the Zeni AI sparkle were autofilled from your uploaded document."},companyVerification:{introTitle:"Verify your business.",introBody:"Upload your EIN document. Zeni AI extracts all business details automatically — no manual typing required.",aiCallout:{body:"will retrieve data from your EIN document and autofill all business details."},autofillFooter:"Fields marked with the Zeni AI sparkle were autofilled from your uploaded document."},unlockFinancialStack:{pageTitle:"Unlock your financial stack",pageSubtitle:"You can complete verification any time from Company Settings.",introTitle:"Verify once. Unlock two financial products.",introBody:"A quick identity and business check — required for financial compliance and takes about 5 minutes. Your AI Agents are already working. When you use Zeni's own products, every transaction flows natively into AI Accountant with zero gaps — your close literally takes care of itself. Here is what you unlock.",products:{chargeCard:{name:"Zeni Charge Card",body:"On every purchase. No annual fees, no foreign transaction fees, no complexity. Credit based on your financial health — no personal guarantee."},businessChecking:{value:"2.5% APY",body:"FDIC insured up to $3M through Thread Bank sweep network. Interest compounded daily. No minimums, unlimited accounts."},treasury:{value:"Up to 4% APY",body:"Put idle cash to work automatically. Smart allocation across instruments to maximize yield on your operating reserves."},billPay:{body:"Free domestic transfers, free USD international wires, $0 ACH fees. AI auto-fills invoice details and handles all journal entries automatically."},reimbursements:{body:"Unlimited reimbursements with same-day ACH payouts. Supports 160 currencies, multi-level approval workflows, and AI categorization built in."},debitCard:{name:"Zeni Debit Card",body:"Instant cashback on every spend with no minimums. Full AI spend management, real-time controls per employee or department, and zero foreign transaction fees."}},aiActiveCallout:{heading:"AI Accountant and AI CFO are already active.",body:"Zeni AI will read your uploaded documents and autofill all details automatically.",metaPrimary:"Most verifications",metaSecondary:"complete in under 5 mins"},kycStep:{title:"Step 1 — Verify your identity (KYC)",body:"Upload a government-issued ID. Zeni AI reads the document and autofills name, date of birth, and address automatically. Required by the Bank Secrecy Act and Anti-Money Laundering regulations."},kybStep:{title:"Step 2 — Verify your business (KYB)",body:"Upload your EIN document. Zeni AI extracts company legal name, incorporation type, registered address, and Tax ID automatically. Required for financial services compliance.",meta:"Takes about 3 mins"},startVerificationCta:"Start verification"},chrome:{skipLabel:"Skip for now",skipToDashboardDisabledTooltip:"Connect QuickBooks to activate your dashboard",skipToDashboardPendingVerificationTooltip:"Verify your bank account to activate your dashboard",skipToDashboardLoginRequiredTooltip:"Re-login to your bank account to activate your dashboard"},activateSubscription:{pageTitle:"Activate your subscription",pageSubtitle:"Required to activate your Zeni subscription.",ctaLabel:"Continue to connect your ledger",ctaLabelWithoutLedger:"Continue to verify your business"},connectLedgerPage:{ctaLabel:"Continue to activation",pageSubtitle:"Required foundation for both AI Agents"},officerVerifyPage:{pageSubtitle:"Documents are encrypted and stored with SOC 2 Type II compliance.",ctaLabel:"Continue to business verification"},companyVerifyPage:{pageTitle:"Verify your business",pageSubtitle:"Documents are encrypted and stored with SOC 2 Type II compliance.",ctaLabel:"Submit and go to dashboard"},aiAgentsActivating:{demoTenantName:"Pied Piper"},connectDataSources:{pageTitle:"Connect your Data Sources",pageSubtitle:"Connect what you have access to — others on your team can add the rest later.",ctaLabel:"Continue to verification"},setupBilling:{introTitle:"To get started, please link your payment method and enter company billing address.",introBody:"Your AI Agents are already reading your books. Set up billing to keep them running after your trial ends.",includedCard:{heading:"What's always included:",accountantBody:"Runs your books every day, automatically.",cfoBody:"Answers every financial question, always available.",connectionsLabel:"Unlimited data source connections",connectionsBody:"QBO, banks, cards, AR, AP, revenue, payroll, email and more.",financeTeamLabel:"Your dedicated finance team",financeTeamBody:"Controller, Team Lead and Accountant available Monday–Friday."},paymentMethodHeading:"Subscription Payment Method",paymentMethodSubheading:"ACH bank debit — no additional fees"},qbo_connection:{subTitle:"To set up your dashboard, we must connect with your QuickBooks account.",sucessText:"Congratulations! You have successfully established a connection with QuickBooks.",subtitleText:"Accounting & bookkeeping — journal entries, invoices, bills, expenses",requiredText:"Please connect Quickbooks to sync your financial data",errorText:"Unable to connect quickbooks. Please try again."},company_officer:{subTitle:"Enter proof of identity to complete verification."},company_details:{subTitle:"Enter business details to complete verification."}},thankYou:{title:"Thank you for providing the details.",subTitle:"We are currently verifying and working on your Dashboard."},footer:{buttons:{submitText:'By clicking "__action__", I certify that the information provided here is complete and correct.'}},productSuite:{navTitleCFO:"Thank you, we've got your details",navTitle:"Thank you for completing your onboarding steps",updatePaymentDetails:"Update Payment Details",messageBox:{default:"We're now setting up your Quickbooks account and will notify you via email once it's ready.",onlyTax:"Our Tax team will email you with the next steps within 2 business days.",onlyCFO:"Our CFO team will email you with the next steps before your service start date.",onlyPayroll:"Our Payroll team will email you with the next steps within 2 business days.",taxAndPayroll:"Our Tax & Payroll teams will email you with the next steps within 2 business days.",withTax:"Our Tax team will email you within 2 business days.",withPayroll:"Our Payroll team will email you within 2 business days.",withCFO:"Our CFO team will reach out to you before your service start date.",withTaxAndPayroll:"Our Tax & Payroll teams will email you within 2 business days."},sectionTitleCFO:"Explore more solutions tailored for your business",sectionTitle:"Meanwhile, learn more about Zeni products",sectionFooter:"Discover Zeni's product suite",productCard:{cards:[{cardTitle:"Zeni Reimbursements",sectionTitle:"Pay your employees back faster",sectionSubTitle:"Reimburse your employees at lightning speed with AI-powered expense processing at no additional cost."},{cardTitle:"Zeni Bill Payments",sectionTitle:"Pay your bills in seconds",sectionSubTitle:"Speed up domestic and international vendor payments with AI-powered invoice processing at no additional cost."},{cardTitle:"Zeni AI Bookkeeping",sectionTitle:"Simplify your bookkeeping",sectionSubTitle:"Give your business all the financial insights it needs to succeed on a single dashboard."}]}},aiFinanceTeamReady:{title:{prefix:"Your ",highlight:"AI finance",suffix:" team is ready, {firstName}."},agentChip:"Two AI Agents are joining {companyName}'s finance org today.",description:"Connect them to your financial data and they start working immediately — categorizing, reconciling, journalizing, and answering every question your CFO has.",accountantCard:{subtitle:"Runs the books every day. Handles every accounting task automatically.",tasks:{bankReconciliation:{title:"Bank reconciliation",meta:"Chase ••••8992 — 847 transactions matched"},autoCategorization:{title:"Auto categorization",meta:"1,204 transactions — 94% categorized"},journalEntryEngine:{title:"Journal entry engine",meta:"12 recurring JEs detected and scheduled"},fluxAnalysis:{title:"Flux analysis",meta:"AWS +29% vs last month — flagged"},apArAging:{title:"AP and AR aging",meta:"3 invoices 30+ days overdue — surfaced"}},footer:"All of this happens automatically, every day."},cfoCard:{subtitle:"Answers every financial question. Always available, always precise.",chat:{netBurnQuestion:"What is our net burn this month?",netBurnAnswer:{heading:"Net burn is $487K this month",body:"Payroll 61%, software and infrastructure 22%. Up $34K vs last month — new engineering hire Mar 12 and an $18K AWS overage."},revenueQuestion:"Are we on track for Q2 revenue?",revenueAnswer:{heading:"Yes, on track at 94% confidence",body:"$312K closed, $180K in late stage pipeline due this month. Risk: 3 March renewal invoices totalling $42K still outstanding."}},suggestions:{runway:"What's our current runway?",burnByDept:"Show me burn by department",vendorReview:"Which vendors should I review?",closeStatus:"Close status for November"}},trustRow:{soc2:"SOC 2 Type II",bankGrade:"Bank-grade encryption",trusted:"Trusted by 1,500+ finance teams"},cta:"Connect your Finance Team"}},uncategorizedAccountsMapping:{accountingSettings:{heading:"Account Settings",accountingClasses:{title:"Accounting Classes",subTitle:"Track and categorize transactions by class. Turning this off hides class fields and columns across the workspace.",enableConfirmation:{title:"Enable Accounting Classes?",description:"Class fields will appear on transactions, bills, reimbursements, and reports so you can track spending by class."},disableConfirmation:{title:"Disable Accounting Classes?",description:"Class fields and columns will be hidden across the workspace. Existing class assignments on transactions are preserved but won't be visible until you re-enable this setting."}},projects:{subTitle:"Track and categorize transactions by project. Turning this off hides project fields and columns across the workspace."}},uncategorizedSection:{heading:"Uncategorized Accounts",title:"Income & Expense Accounts",subTitle:"Select the accounts used to temporarily track transactions that require clarification.",incomeLabel:"Income Account:",expenseLabel:"Expense Account:",incomeAccount:"Income Account",expenseAccount:"Expense Account"},billsSection:{subTitle:"Select the account used to track charges while using Zeni Bill Pay",bankChargesAndFeesLabel:"Bank Charges & Fees Account:",billPayExpenseAccount:"Bill Pay Expense Account"},reimbursementsSection:{subTitle:"Select the account used to track charges while using Zeni Reimbursements",mileageLabel:"Mileage Account:",reimbursementsExpenseAccount:"Mileage Expense Account"},vendorSection:{prepaidExpenseSubTitle:"Select the accounts used to track prepaid expenses",fixedAssetsSubTitle:"Select the accounts used to track fixed asset expenses",accruedExpensesSubTitle:"Select the accounts used to track accrued expenses",prepaidExpenselabel:"Prepaid Expense Accounts:",fixedAssetslabel:"Fixed Asset Accounts:",accruedExpenseslabel:"Accrued Expense Accounts:",prepaidExpenseAccount:"Prepaid Expense Account",fixedAssetsAccount:"Fixed Asset Account",accruedExpensesAccount:"Accrued Expense Account"},common:{label:{bankAccountLabel:"Bank Accounts:",expenseCategoriesLabel:"Expense Categories:"}},filing1099Section:{subHeading:"Form 1099 is a tax form filed by businesses to report annual payments of $600 or more to vendors or independent contractors.",bankAccountTitle:"Bank Accounts",bankAccountSubTitle:"Select the bank accounts used to pay vendors",expenseCategoriesSubTitle:"Select the expense categories to filter eligible payment types",infoTextBankAccount:"To fetch all payments made to vendors",infoTextGlAccount:"To filter the eligible payments",allExpenseTypes:"All Expense Types",all1099Types:"All 1099 Types",allBoxes:"All Boxes"},placeholder:{incomePlaceholder:"Select Income Account",expensePlaceholder:"Select Expense Account",accountPlaceholders:"Select accounts",categoryPlaceholder:"Select Category",boxPlaceholder:"Select box"},tooltip:'The "__account__" recommendation is __based__',noOptions:{establishQBO:"Kindly establish the accounts in QuickBooks.",noTypesFound:"No type found!",noBoxTypesFound:"No box type found!"},capitalizationSection:{heading:"Capitalization Thresholds",headingSubtitle:"Thresholds are auto-calculated nightly. Set a user override to use your own value instead.",onboardingPopup:{titles:{prepaid:"Prepaid Expense Thresholds Identified",fixed_asset:"Fixed Asset Thresholds Identified"},descriptions:{prepaid:"Set a capitalization threshold for __accountName__. Transactions below the threshold will be expensed directly instead of being capitalized.",fixed_asset:"Set a capitalization threshold for __accountName__. Transactions below the threshold will be expensed rather than capitalized as assets."},maybeLaterButton:"Maybe Later",thresholdPlaceholder:"Enter threshold amount",helpText:"You can always update this later in Settings > Accounting."},globalControls:{title:"Global Threshold Controls",threshold:{description:"Overrides all learned thresholds when set. Clear to use per-account learned values."},maxCeiling:{label:"Max Ceiling",description:"Caps learned thresholds — any account whose learned value exceeds this is clamped. Clear to use system default."}},accountsTable:{subtitle:"Capitalizable Accounts",overrideBanner:"All accounts using user-set threshold: __value__",headers:{threshold:"Threshold",matchStrength:"Match Strength",effectiveThreshold:"Effective Threshold",learnedThreshold:"Learned Threshold",userOverride:"User Override"},classification:{prepaid:"Prepaid"},matchPattern:{LABEL:"Strong",TYPE_ONLY:"Weak"},sourceBadge:{override:"Override",learned:"Learned"},lastUpdated:"Last updated: __date__",empty:{noData:"Accounts will appear here after the nightly analysis runs.",noLearned:"No capitalizable accounts with identified thresholds yet.",noAccounts:"No capitalizable accounts identified yet."}},defaultCurrencySymbol:"$"}},jeSchedules:{scheduleList:{defaultDownloadFileName:"__tenant__ Schedules.xlsx",tableHeaders:{balanceAsOfToday:"Balance as of today",endMonth:"End Month",expenseCategory:"Expense Category",assetId:"Asset ID"},noData:"No Schedules Found",heading:{expenseSchedules:"Expense Schedules",searchPlaceholder:"Search Schedules"},getSchedules:{selectSchedule:"Select Schedule:",getSchedules:"Get Schedules"},scheduleStatus:{draft:"Draft"}},scheduleDetails:{jeSchedule:"JE Schedule",showTransactionTooltip:"Show Transaction",scheduleTransactionsHeader:{vendorName:"Vendor Name",expenseCategory:"Expense Category:"},sequenceSchedule:{header:"Schedule Sequence",notCreated:"Once details are entered, the schedule sequence will be displayed here.",sequenceHeaders:{runningBalance:"Running Balance (as of today)",jeLink:""},accruedSequenceHeader:{jePostingDate:"Accrual Posting Date",runningBalance:"Accrual Balance",jeLink:""},sequenceData:{amountPlaceholder:"0"},postingStatus:{pending:"Pending",unknown:"Unknown",posted:"Posted",canceled:"Canceled",recorded:"Recorded"}},scheduleDetailsSection:{header:"Schedule Details",startMonth:"Start Month:",startMonthPlaceholder:"Select start month",months:"Months:",monthsPlaceholder:"Select month",accumulatedDepreciationCategory:"Accumulated Depreciation Category:",accumulatedDepreciationCategoryPlaceholder:"Select accumulated depreciation category",assetId:"Asset ID:",assetIdPlaceholder:"Add asset ID",postingDate:"Posting Date:",postingDatePlaceholder:"Select posting date",confirmCancelAccrualDescription:"Cancel all the pending accrual schedules. This action cannot be undone.",confirmDeletionDescription:"Are you sure you want to delete this schedule? This action cannot be undone.",confirmDeletionDescriptionNote:"Note - Deleting the schedule will not delete any associated journal entries in QBO.",markAsCompleted:"Mark As Completed",createSchedule:"Create Schedule",scheduleMarkedAsCompleted:"Schedule has been marked as completed",cancelPendingAccrual:"Cancel Pending Accruals",cancelAccrual:"Cancel Accrual",viewRecordedJE:"View Recorded JE",viewPostedJE:"View Posted JE",deleteSchedule:"Delete Schedule"},linkJE:{fetchJE:"Fetch JE",jeLinkURLPlaceholder:"Add Link",jeLink:"JE Link:",linkJE:"Link JE",linkBillExpense:"Link Bill or Expense",viewBillExpense:"View Bill or Expense",jePostingDate:"JE Posting Date:",jeDetails:"JE details will be presented here once you enter the JE link and complete the fetch operation.",transactionFetchError:"There was an error fetching the transaction.",zeniRecommendation:"Based on Zeni GPT recommendation, journal entry posting has been automatically retrieved for the schedule."}},scheduleAccruedDetails:{new:{header:"New Accrued Expenses",new:"new"},labels:{estimatedMonthlyAmount:"Estimated Monthly Amount:",accruedExpenseCategory:"Accrued Expense Category:",startingBalance:"Starting Balance:"},placeholders:{selectVendor:"Search and select vendor",addBalance:"Add Balance",selectAccruedExpenseCat:"Select accrued expense category"}},linkBillExpenseDetails:{tableHeaders:{transactionAttachment:""},title:"Link Bill Or Expense",noBillFound:"No Bill or Expense found for the schedule",linkBill:"Link Bill",additionalBills:"Additional Bills For The Vendor",zeniGPTText:"Based on Zeni GPT recommendation, the bill or expense posting has been automatically retrieved for the schedule."}},vendorReview:{globalReview:{newGlobalMerchant:{tip:"Protip: Verify online domain availability of the vendor name.",recommendationInfoText:"Enter text to fetch recommendation"},globalMerchantList:{navBarTitle:"Global Vendors Review",searchPlaceholder:"Search tenant",confirmationPopup:{title:'Are you sure you want to add "_merchant_name_" in Global vendor list?',description:"Confirm will add the vendor to the global list. This change can’t be reverted back.",merchantNameFallback:"this merchant"},selectPlaceholder:"Select Global Vendor",noDataText:"No global vendors to display yet!",noMatchedDataText:"No global vendors matched your search."}},firstReview:{searchPlaceholder:"Search vendor",viewRecipts:"View receipts",vendorDropdown:{recommendedCustomer:"Recommended Customer",allCustomers:"AllCustomers",fromOldName:'Change name from "__old_name__"',toNewName:' to "__new_name__"'},invoice:"invoice",popupMessages:{netsuiteLinkPopupTitle:'A vendor by name "_vendor_name_" already exists in NetSuite',netsuiteLinkPopupMsgHeader:"Please login to NetSuite and follow the steps given below to merge the vendor",netsuiteLinkPopupSubTitle:"Keep in mind that merging vendor profiles is permanent. You can't undo this later.",netsuiteLinkPopupDescription:"Please note that the related transactions will be migrated within the next 24 hours after the change.",qboLinkPopupMsgHeader:"Please login to QBO and follow the steps given below to merge the vendor",qboLinkPopupSubTitle:"Keep in mind that merging vendor profiles is permanent. You can't undo this later.",qboLinkPopupTitle:'A vendor by name "_vendor_name_" already exists in QBO',zeniUpdatedRecommendationPopupTitle:'Vendor recommendation for "_vendor_name_" is updated from "_old_recommendation_" to "_new_recommendation_".',zeniUpdatedRecommendationPopupMsg:"Zeni AI has updated the recommendation for this vendor name. Click 'Continue' to use updated vendor name or Click 'cancel' & refresh the page to view the updated vendor recommendation.",zeniNewRecommendationPopupTitle:'Vendor recommendation for "_vendor_name_" is updated to "_new_recommendation_".',zeniNewRecommendationPopupMsg:"Zeni AI has provided a recommendation for this vendor name. Click 'Continue' to proceed with the selected vendor name or 'Cancel' to view the newly added recommendation.",zeniNewRecommendationNotAvailablePopupTitle:'Vendor recommendation for "_vendor_name_" is no longer available.',zeniNewRecommendationNotAvailablePopupMsg:"Zeni AI has updated the recommendation for this vendor. Please try again.\n ",redirectToQBO:"Redirect to QBO",mergeInQBOSteppedContent:{step1:{navigateTo:"Navigate to ",andSelectThe:" and Select the ",tab:" tab."},step2:{lineText:"Find and open the vendor profile you want to keep. Then Select ",andCopy:" and copy",display:"Display"},step3:{goBackTo:"Go back to the ",lineText:" tab. Find and open the vendor you don't want to keep. Then select "},step4:{lineText:"Change the display name to make it identical to the vendor you're merging it with."},step5:{andThen:" and then "}},mergeInNetSuiteSteppedContent:{step1:{goTo:"Go to ",lists:"Lists",then:" then ",relationships:"Relationships",then2:" then "},step2:{click:"Click ",next:" next to the ",sourceInfo:" that will be the source "},step3:{onThe:"On the ",page:" page, under ",click:", click "},step4:{onThe:"On the ",mergeVendor:"Merge Vendor",endText:" page, select the target vendor into which you want to merge this source vendor record. "},step5:{text:" Both the source and target vendor records must have the same primary subsidiary to merge the records. "},step6:{click:"Click ",text:" . At the prompt to confirm the action, click "},step7:{onThe:"On the ",duplicateResolution:"Duplicate Resolution Status",text:" page, the merge is queued for process. "},step8:{click:"Click ",processText:" to process the merge or the ",haltText:" link to halt the merge process. "},step9:{the:"The ",text:" column provides the results of the merge. "},step10:{text:"The un-categorized and mis-categorized transactions for the deleted vendor will be migrated within 24 hours after the vendor merge is completed. "}}},rowMoreActions:{markAsEmployee:"Mark as Employee",markAsLocalContractor:"Mark as Local Contractor"},tooltip:{mergeInQBOText:"Updated vendor name already exists in QBO and needs to be merged.",mergeInNetSuiteText:"Updated vendor name already exists in NetSuite and needs to be merged."},overlay:{title:'Add Website for "_vendor_name_"'}}},commentsAndNotifications:{notifications:{texts:{markAsRead:"Mark as Read",markAllAsRead:"Mark all as read"},actionStrings:{comments:{mention:"mentioned you in comment",reply:"replied to your comment",reaction:"reacted to your message",toMessage:"to your message",assign:"assigned you to a task",unassign:"unassigned you from a task",newThread:"created a new thread",resolveComment:"resolved a comment",unResolveComment:"reopened a comment",newActivity:"performed new activity on your message",newRepliesAdded:"replied to a comment",newCommentAdded:"added a comment"},notifications:{create:"created this task.",assign:"assigned this task to you.",overdue:"Due date was __date__",due:"Currently __task_status__ and is due tomorrow.",dueTomorrow:"This task is due tomorrow.",statusUpdate:"Status updated from",activities:"made updates to this task.",delete:"deleted this task.",archive:"archived this task.",newActivity:"performed new activity on this task."}},strings:{notificationSelected:"Notification selected",notificationsSelected:"Notifications selected",newMessage:"You have received a new message"},message:{noNotificationsMessage:"No notifications at this time. You're all caught up."}}},featurePreview:{scheduleDemo:"Schedule a Demo",popups:{home:{title:"Unleash the Power of AI Bookkeeping",text:"Update your books daily, access real-time insights, and receive personalized support from a dedicated team of experts — all on a single platform"},ai_automation:{title:"Unleash the Power of AI Bookkeeping",text:"Update your books daily, access real-time insights, and receive personalized support from a dedicated team of experts — all on a single platform"},reports:{title:"Investor Ready Reports",text:"Generate beautiful PDF reports to forward to investors, bankers, or to build into your board deck. Alternatively, download or share view-only access to your dashboard."},forecast:{title:"Forecasting and Planning",text:"Don't settle for Excel. Accurately forecast your bookings, revenues, workforce, expenses and cash flows by comparing Actuals vs Budgets from a central dashboard."},bills:{title:"The fastest way to pay vendors",text:"Pay domestic and international vendors quickly and automate your accounts payable process end-to-end directly from the dashboard – at no additional cost. "},reimbursements:{title:"Reimburse employees at lightning speed",text:"Embrace the efficiency and future of AI-driven expense reimbursements while boosting employee satisfaction."},vendors:{title:"Stop wondering how you’re spending money",text:"Daily, crystal-clear insights into your Operating Expenses give you an instant view into your cash burn and expenses, including Gross Burn and Net Burn trends."},people:{title:"",text:""},rewards:{title:"",text:""},cards:{title:"",text:""},checking:{title:"Business banking turning transactions into triumphs",text:"Modern checking accounts with a guaranteed yield earned from your first dollar and no hidden fees. Leverage AI to auto categorize your transactions effortlessly."},treasury:{title:"",text:""},accounting:{title:"",text:""},approval_rules:{title:"",text:""},bank_connections:{title:"",text:""},business_verification:{title:"",text:""},company_details:{title:"",text:""},integrations:{title:"",text:""},my_profile:{title:"",text:""},my_bank_connections:{title:"",text:""},notifications:{title:"",text:""},billing:{title:"",text:""},performance:{title:"",text:""},ai_cfo:{title:"",text:""}}},collaboration:{commentOnField:"comment on field",threads:{placeholder:{replyAComment:"Reply to comment...",addANewComment:"Add a new comment..."},tooltip:{resolveComment:"Resolve comment",unResolveComment:"Re-open comment"},badge:{rowNotInReport:"Row not in this report"}}},expenseAutomation:{common:{numbers:{maximumCount:999}},overview:{confidenceScoreDescription:"Higher score means you're close to finish.",auditScoreDescription:"Streamline your month-end close with Zeni AI.",monthEndCloseProgress:"Month-end close progress",targetClose:"Target Close:",daysToClose:"Days to Close:",financialClose:"Financial Close",reviewReport:"Review month-end close report.",insightsCtaMessage:"Improve your confidence score to _minimum_score_ or above to unlock month-end insights",createInsights:"Create _month_name_ Insights",monthEndCloseTrend:"Performance Trend",monthEndCloseTrendNoData:"No data yet!",monthEndCloseTrendNoDataDescription:"Initiate your first month-end close to track performance.",confidenceScoreTooltip:"Indicates overall progress of all month-end close tasks. Higher score means you're closer to finishing the close.",byHumans:"by Humans",progress:"Progress",headerByAI:"By AI",statistics:{accountsAutoReconciled:"Accounts auto-reconciled",transactionsAutoCategorized:"Transactions auto-categorized",humanEfficiency:"Tasks completed by AI Agents",fasterReviews:"Faster reviews",vendorsWithFluctuations:"Vendors with fluctuations"}},confirmationDescription:"Are you sure you want to exit without saving?",dashboardCard:{month_end_insights:"Month end insights"},transactions:{header:{memoReceipt:"Memo | Receipt",receipt:"Receipt",toFrom:"To/From"},searchPlaceholder:"Search by vendor, amount, date, or memo",tabs:{autoCategorized:"Auto-categorized"},transactionGroupFilter:{transactionGroupLabel:"Transaction Group"},subTitles:{review:{item1:{pre:"",bold:"AI Bookkeeper",post:"has recommendations for Payees, Categories, Classes."},item2:{pre:"",bold:"",prefixIconName:"",post:"Review them, select, save your changes, and AI Bookkeeper will learn from your updates."}},autoCategorized:{item1:{pre:"",post:"have auto-categorized the below #number transactions for this month."},item2:{pre:"",bold:"",prefixIconName:"",post:"Feel free to review and make the necessary changes. AI Agents will learn from your updates."}}},allDoneText:{title:"All set!",subTitle:"Task cleared, ready to soar!"},emptyStates:{noSearchResults:{title:"No matching transactions",subTitle:"Try adjusting your search or filters."}},filters:{categoryLabels:{paymentAccountName:"Payment Account Name",paymentAccountType:"Payment Account Type"},amountOperators:{isEqual:"Is equal",inBetween:"In between",placeholder:"Select operator"},filterOptions:{transactionAmountOptions:[{label:"< 100",value:"-10000000<->100"},{label:"100 to 500",value:"100<->500"},{label:"500 to 1K",value:"500<->1000"},{label:"1K to 5K",value:"1000<->5000"},{label:"5K to 10K",value:"5000<->10000"},{label:"10K to 20K",value:"10000<->20000"},{label:"> 20K",value:"20000<->10000000"}],transactionTypeOptions:[{label:"Auto-categorized",value:"autoCategorized"},{label:"Review",value:"review"},{label:"Categorized",value:"categorized"},{label:"Uncategorized",value:"uncategorized"}]},selectPaymentAccountNamePlaceholder:"Select Payment Account Name",searchForPayeePlaceholder:"Search for Payee"},addProject:"Add Project",transactionActivityLog:{noLogsFound:"No Activity logs found",transactionIngested:"Transaction ingested.",aiBookkeeperAdded:"AI Bookkeeper added the",userUpdatedDetails:"Updated the transaction details.",linePrefix:"Line #"},transferDrawer:{debitAccountLabel:"Debit Account:",creditAccountLabel:"Credit Account:",keepExpense:"Keep {transactionType}",convert:"Convert",convertToTransfer:"Convert {transactionType} to Transfer",convertToCreditCard:"Convert {transactionType} to Credit Card Payment",transferDrawerSubtitle:"The current {transactionType} will be deleted and replaced with a transfer entry",creditCardPaymentDrawerSubtitle:"The current {transactionType} will be deleted and replaced with a credit card payment entry",groupHeadingAllAccounts:"All Accounts",noEligibleAccountsDropdownLine2:"Connect an account or keep this as an expense."},transactionTypeDropdown:{multilineNotEligibleTooltip:"Multiline transactions are not eligible for transfer entry."}},jeSchedules:{subTitles:{item1:{pre:"",bold:"",prefixIconName:"",post:"Please review the following journal entries below and correct or post them."},item2:{pre:"",post:"will learn from your update, automate it, and boost accuracy and efficiency to simplify every step."}},allDoneText:{title:"High five!",subTitle:"All schedules reviewed!"},emptyState:{pendingReview:{title:"High five!",subTitle:"All schedules reviewed!"},ongoing:{title:"High five!",subTitle:"No ongoing schedules"},completed:{title:"High five!",subTitle:"No completed schedules"}},scheduleHeaders:{period:"Amortization Period",balance:"Running balance (as of today)",months:"Remaining Months",amountForMonth:"Amount(for this month)",entry:"Entry",monthlyAmount:"Monthly Amount",reversesOn:"Reverses on",reversesOnMatch:"Reverses on match",scheduledAndPosted:"Scheduled + Posted",startMonth:"Start Month",amount:"Amount",memo:"Memo"},scheduleCot:{recommendedMethod:"Recommended method",monthLifeSuffix:"-mo life",methodByType:{prepaid_expenses:"Straight-line amortization",fixed_assets:"Straight-line depreciation",accrued_expenses:"Accrual",deferred_revenue:"Straight-line recognition"},credit:"Credit",debit:"Debit"},oneTimeAccrualType:"Accrual",lifecycleLabel:{prepaid_expenses:"Prepaid Schedule",fixed_assets:"Fixed Asset Schedule",accrued_expenses:"Accrued Schedule",deferred_revenue:"Deferred Revenue Schedule"},tooltipText:{missingVendor:'The vendor "_deleted_vendor_" was deleted from the Journal Entry. Please add the correct vendor and try posting again.',missingCategory:'The category "_deleted_category_" was deleted from the Journal Entry. Please add the correct category and try posting again.',missingDepCategory:'The category "_deleted_dep_category_" was deleted from the Journal Entry. Please add the correct accumulated depreciation category and try posting again.'},resolveErrors:{heading:"This entry could not be posted",vendor_deleted:'Vendor "_deleted_field_" was deleted. Update it in Review.',debit_category_deleted:'Category "_deleted_field_" was deleted. Update it in Review.',credit_category_deleted:'Accumulated depreciation category "_deleted_field_" was deleted. Update it in Review.',qbo_error:"QuickBooks rejected this entry. Try posting again.",qbo_authorization_error:"The QuickBooks connection expired. Reconnect it, then post again.",qbo_invalid_company_status_error:"The QuickBooks subscription is inactive. Resolve it, then post again.",qbo_book_close_date_error:"The books are closed for this date. Reopen the period or move the date."},addDepCategory:"Add Depreciation Category",aiBotEmail:"ai@zeni.ai",botEmail:"bot@zeni.ai",aiAccountant:"AI Accountant ",zeniGPTText:"recommends a new JE schedule. Please review and set it up!",kpiStrip:{aiAccountant:"AI Accountant Created",manual:"Manual Created",schedules:"schedules",total:"Total this close",typeLabels:{fixed_assets:"Fixed Asset",prepaid_expenses:"Prepaid",accrued_expenses:"Accrual",deferred_revenue:"Revenue Accrual"}},typeFilter:{prepaid_expenses:"Prepaid",fixed_assets:"Fixed Asset",accrued_expenses:"Accrual",deferred_revenue:"Deferred Revenue",all:"All"},groups:{createdInsight:"Auto-posted or manually recorded",pendingReviewInsight:"Input requested before posting"},tabs:{schedules:"Review Schedules",actualMatching:"Actual Matching",existingSchedules:"Existing Schedules"},actualMatching:{matchNew:"Match new",undoReversal:"Undo reversal",continueMatch:"Continue match",openBill:"Open bill",openCharge:"Open charge",openTransaction:"Open {type}",kpi:{actualsReceived:"Actuals received ({month})",ofExpected:"of {count} expected",vendorsStillPending:"{count} vendors still pending",vendorStillPending:"1 vendor still pending",autoReversed:"Auto-reversed",cleared:"{amount} cleared",pendingReview:"Pending review",estMinutesToClear:"Est. {minutes} min to clear",variance:"Variance (actual vs accrued)",varianceFooter:"avg {percent} per match · {amount} net"},groups:{reversed:"REVERSED"},groupSubtitles:{reversed:"AI Accountant and Human User · {amount}",pendingReview:"Variance above threshold or ambiguous match · {amount}"},columns:{received:"Received",vendor:"Vendor",type:"Type",service:"Service",reverses:"Reverses",matchTier:"Match tier",reversedBy:"Reversed by",accrued:"Accrued",actual:"Actual",variance:"Variance"},reversedBy:{aiAccountant:"AI Accountant",humanUser:"Human User"},matchTier:{exact:"Exact match",fuzzy:"Fuzzy",aiAccountant:"AI Accountant",manual:"Manual"},reversesCount:"{count} accruals",groupedOpenAccrual:"Open accrual",groupedMenuAria:"Accruals in this match",lifecycle:{pendingReview:"PENDING REVIEW",autoReversed:"AUTO-REVERSED"},emptyState:{title:"No matches this close",subTitle:"Reversed and pending-review accruals for this close will show up here."},matchModal:{title:"Match transactions to accruals",subtitle:"Select one bill or expense line and one or more posted accruals to reverse.",leftTitle:"Transactions",rightTitle:"Accruals",selectedLabel:"selected",leftSearchPlaceholder:"Search bills, expenses, and checks",rightSearchPlaceholder:"Search posted accruals",emptyLeft:"No transactions found",emptyRight:"No posted accruals found",confirm:"Confirm Match",maxAccruals:"You can match up to 50 accruals at once.",conflict:"Could not reverse this accrual",vendorLock:"Only accruals for the selected vendor can be matched.",selectLineHint:"Select a line on this bill",previewEmpty:"Pick at least one transaction and one accrual to preview the match.",accrualJeTitle:"Accrual journal entry being reversed",reversalJeTitle:"Reversal journal entry",reversalJeNote:"One per accrual · mirrors its amount",transactionMatchedTitle:"Transaction matched",columnDate:"Date",columnAccount:"Account",columnDebit:"Debit",columnCredit:"Credit",lastDayOfMonth:"last day",reversesLabel:"_REV Reverses",vsAccrued:"vs. accrued {amount} · variance posts to {account}",accruedExpensesFallback:"Accrued Expenses"},matchDetail:{service:"service",accrued:"Accrued",actual:"Actual",variance:"Variance",accrualJes:"Accrual journal entries",leftovers:"Not reversed",reversalFailed:"Reversal failed",undoFailed:"Undo failed",loadErrorTitle:"Couldn't load this match",loadErrorSubTitle:"Refresh to try again.",reversalJe:"Reversal journal entry",matchedBill:"Matched bill",matchedCharge:"Matched charge",matchedTransaction:"Matched {type}",statusAutoReversed:"Auto-reversed",statusPendingReview:"Pending review",statusManuallyReversed:"Manually reversed"}},newSchedule:{title:"New Schedule",oneTimeAccrualTitle:"New one-time accrual",oneTimeAccrualSubtitle:"Posts directly to the books",recurringTitle:"New recurring schedule",recurringSubtitle:"Posts monthly entries starting {month}",reviewSchedule:"Review schedule",scheduleDetails:{title:"Schedule Details",oneTimeAccrual:"One time accrual",oneTimeAccrualDescription:"Single JE this month",recurringSchedule:"Recurring Schedule"},scheduleType:{title:"Schedule type",subtitle:"What is this schedule spreading?",fixedAssetDescription:"Depreciate a purchase",prepaid:"Prepaid",prepaidDescription:"Amortize a prepayment",accrual:"Accrual",accrualDescription:"Recurring estimate",deferredRevenueDescription:"Recognize over time",deferredRevenue:"Deferred Revenue",fixedAsset:"Fixed Asset"},baseTransaction:{title:"Base Transaction",subtitleFixedAsset:"The purchase being capitalized",subtitlePrepaid:"The prepayment being spread",searchPlaceholder:"Search by vendor, amount, date and memo",noResults:"Nothing matched your search... Try again.",aiAccountantInsight:"AI Accountant spreads {amount} over {months} months ≈ {amountPerMonth}/mo."},fields:{numberOfMonths:"No. of Month",amountPerMonth:"Amount Per Month",sourceOrTrigger:"Source / trigger",addVendor:"Add vendor",selectStartMonth:"Select start month",selectPostingDate:"Select posting date",selectMonths:"Select months",addAccumulatedDepreciationCategory:"Add accumulated depreciation category",addAssetId:"Add asset ID",addSourceOrTrigger:"Add Source / trigger",selectServiceMonth:"Select service month",accrualCategory:"Accrual Category",addAccrualCategory:"Add accrual category",memoPrefix:"Accrue",estimatedMonthlyAmount:"Estimated Monthly Amount",startingBalance:"Starting Balance",addStartingBalance:"Add balance",accumulatedDepreciationCategory:"Accumulated Depreciation Category",serviceMonth:"Service month",postingDate:"Posting Date",addCategory:"Add category",startMonth:"Start Month",addAmount:"Add amount",category:"Category",addClass:"Add class",assetId:"Asset ID",addMemo:"Add memo",vendor:"Vendor",amount:"Amount",class:"Class",memo:"Memo"},oneTimeAccrual:{postAccrual:"Post accrual",reverseNextMonth:"Reverse next month",reverseNextMonthOff:"Off — accrual stays open until a matching bill arrives from this vendor and clears it.",reverseNextMonthOn:"A reversing JE will post on {date} automatically — use this when no matching bill is expected (e.g., estimated bonus, true-up).",reverseNextMonthOnNoServiceMonth:"A reversing JE will post on the 1st of the month after the service month automatically — use this when no matching bill is expected (e.g., estimated bonus, true-up)."},journalEntryPreview:{title:"Journal Entry Preview",debit:"DR",credit:"CR",autoReversesOnBillMatch:"Auto-reverses when a matching bill arrives from {vendor}.",autoReversesOnDate:"Auto-reverses on {date}."},schedulePreview:{title:"Schedule preview",posts:"Posts",postsValue:"{amount} × {months} months",window:"Window",windowValue:"{start} → {end}",totalCommitted:"Total committed",eachEntry:"Each entry",eachEntryValue:"DR {debit} · CR {credit}",autoPostSuffix:" will auto-post each month until the schedule completes.",autoPostPrefix:"AI Accountant",class:"Class"},newButtonLabel:"New"},accrualDetail:{accrualTypeMonthly:"Monthly Accrual",estimatedBy:"Estimated by",editAmount:"Edit amount",statusLabels:{draft:"Pending Review",posting:"Posting",posted:"Posted",posting_blocked:"Posting Blocked",reversing:"Reversing",reversed:"Reversed",reverted:"Reverted"},details:{title:"Accrual Details",servicePeriod:"Service Period",servicePeriodValue:"{month} Service",accrualType:"Accrual Type",liabilityAccount:"Liability Account",autoReversal:"Auto Reversal",reverseNextMonthOption:"Reverse Next Month",onInvoiceMatch:"On Invoice Match",onDate:"On {date}",monthsOfHistoryUsed:"Months of History Used",monthsValue:"{months} months",expenseCategory:"Expense Category",postingDate:"Posting Date",department:"Department",memo:"Memo"},calculationBreakdown:{title:"Calculation Breakdown",calculationMethod:"Calculation Method",weight:"Weight",weightedValue:"Weighted Value",recommendedAccrual:"Recommended Accrual",invoiceAmount:"Invoice Amount",month:"Month"},journalEntryPreview:{title:"Journal Entry Preview",postedTitle:"Posted Journal Entry",reversedTitle:"Reversed Journal Entry",autoReversalEnabled:"Enabled"},billingPattern:{title:"Billing Pattern",avgAmount:"Avg Amount",lastBill:"Last Bill",consistency:"Consistency",billingLag:"Billing lag",monthsTracked:"Months Tracked",percentValue:"{percent}%",serviceMonthMarker:"This service month",noHistoryTitle:"No vendor billing history",noHistoryDescription:"This accrual was entered manually, so there is no vendor profile behind it to chart. The AI Accountant builds one only for the vendors it accrues automatically.",daysValue:"{days} days"},actions:{skipThisMonth:"Skip This Month",approveAndPost:"Approve & Post"},statusStates:{reversed:"Entry reversed"},feedback:{title:"Why skip this accrual?",subtitle:"Tell us why {amount} shouldn't be accrued for {vendor} this month — AI Accountant learns from this.",reasons:{no_activity:"No activity this month",paused:"Vendor paused / off-boarded",too_small:"Not material",need_invoice:"Wait for actual invoice",other_ignore:"Something else"},revert:{title:"Why revert this accrual?",subtitle:"This deletes the {amount} journal entry for {vendor} from the books. AI Accountant learns from the reason.",submit:"Revert Accrual",reasons:{amount_off:"Amount was wrong",wrong_period:"Wrong period",not_accrual:"Shouldn't be accrued",duplicate:"Duplicate",other_revert:"Something else"}},ignoreSchedule:{title:"Why ignore this schedule?",subtitle:"Tell us why this schedule isn't needed — AI Accountant learns from this.",submit:"Ignore Schedule",reasons:{not_needed:"Not needed",wrong_account:"Wrong account",duplicate:"Duplicate",already_handled:"Already handled",other_ignore:"Something else"}},revertSchedule:{title:"Why revert this schedule?",subtitle:"This deletes the posted journal entry from the books and removes the schedule. AI Accountant learns from the reason.",submit:"Revert Schedule",reasons:{amount_off:"Amount was wrong",wrong_period:"Wrong period",duplicate:"Duplicate",created_by_mistake:"Created by mistake",other_revert:"Something else"}},noteLabel:"Add a note (optional)",notePlaceholder:"Anything else we should know?",submit:"Submit Feedback"}},existingSchedules:{downloadCompletedSchedules:"Download Completed Schedules",downloadRange:{title:"Download Completed Schedules",subtitle:"Completed schedules are matched on when they started, not when they finished, so search from before the schedules you are looking for began.",fromLabel:"Started on or after",fromPlaceholder:"Select a month",throughToday:"Includes everything up to today, {today}"},kpi:{ongoingSchedules:"Ongoing schedules",monthlyPosting:"Monthly posting",remainingBalance:"Remaining Balance",toDepreciateAmortize:"to depreciate / amortize",posted:"Posted",typeAbbreviations:{fixed_assets:"Fixed",prepaid_expenses:"Prepaid",deferred_revenue:"Deferred rev",accrued_expenses:"Accrued"}}},searchPlaceholder:"Search for schedules",addCategory:"Add Category"},missingReceipts:{searchPlaceholder:"Search for transactions",subTitles:{pre:"",preLink:"",post:"will do the best to automatically match receipts with the correct transactions. Forward all receipts to {receiptsEmail}",postLink:"{receiptsEmail}"},allDoneText:{subTitle:"All receipts uploaded, like magic!"}},fluxAnalysis:{searchPlaceholder:"Search for vendors",subTitles:{item1:{pre:"",bold:"",prefixIconName:"",post:"Review vendor account transactions for emerging trends and adjust categories and classes to resolve anomalies."},item2:{pre:"Feel free to review and make the necessary changes",post:"will learn from it."}},sectionTitle:{generalExpense:"General Expenses"},reviewedBy:"Reviewed by",remarksBy:"Remarks by",viewVendorDetails:"View Vendor Details",emptyPageTexts:{youDidIt:"You did it!",allReviewed:"All flux reviewed!"},stepsBanner:{collapsedTitle:"Quick steps for Flux Analysis",step1:{title:"Review Variances",description:"Compare vendor-wise spend across months and drill down into categories and classes."},step2:{descriptionPrefix:"Once variances are confirmed,",descriptionSuffix:"select vendors and mark as reviewed."}}},accountRecon:{reconciliation:{headers:{section:{assets:{title:"Assets",subTitle:"Cash and Equivalents"},liabilities:{title:"Liabilities",subTitle:"Credit Cards"}},bankBalance:"Bank Balance",openingBalance:"Opening Balance",closingBalance:"Closing Balance",clearedBalance:"Cleared Balance",matchProgress:"AI Progress",lastReconciled:"Last Reconciled",excludedAccountTitle:"Excluded Accounts"},matchProgressLegend:{byHuman:"by human"},progressBar:{byHumans:"by humans"},stepsBanner:{collapsedTitle:"Quick steps for Bank Reconciliation",step1:{title:"Connect Bank Account",line1AfterIcon:"to add a bank account or",line2:"upload a bank statement."},step2:{title:"Compare Balance",body:'Compare bank statement and cleared balances. Select "Review" if they differ.'},step3:{eyebrow:"Step 3",title:"Review & Update Transactions",body:"Approve AI suggestions to categorize or match entries, and complete any missing fields."},step4:{eyebrow:"Step 4",title:"Reconcile the account",body:'Ensure balances match, then select "Reconcile" to complete reconciliation.'}},menu:{statement:"Account Statement"},statsCards:{autoMatched:"AI Accountant Auto-matched",needsReview:"Needs Review",accountsDone:"Accounts Reconciled",timeSavedByAi:"Time saved by AI Accountant",ofTotalTxn:"of _total_ transactions",acrossAccounts:"across _count_ accounts",ofTotalAccounts:"of _total_ Accounts",hrsSuffix:"hrs"},connectAccountsBanner:{leadNeedConnectedSuffix:"need to be connected.",body:"Connect a data source to start reconciliation. Takes less than 2 min per account.",connectAccounts:"Connect Accounts",dismissAriaLabel:"Dismiss"},status:{reconciled:"Reconciled",reconciledBy:"Reconciled by",reconciledVia:"Reconciled via",reconcileViaQBO:"Reconcile via QBO",balanceSyncInProgress:"Balance sync",statementSyncInProgress:"Statement sync",autoReconInProgress:"Auto-reconciliation",statementParseError:"Statement parse",statementValidationFailed:"Statement validation",statementProcessingFailed:"Statement processing",failed:"failed",isInProgress:"is in progress",booksClosedTooltip:"Books closed. Reopen to reconcile again."},tooltips:{reconciledByLabel:"Reconciled by:",lastUpdatedLabel:"Last updated:",applyingChanges:"Applying changes...",failed:"Could not apply changes",inProgress:"Connection is in progress. Please check back in a few minutes.",balancesNotFound:"Unable to fetch balances for this account.",bankBalanceNotFound:"Unable to fetch bank balance for this account.",clearedBalanceNotFound:"Unable to fetch cleared balance for this account.",reconInProgress:"Reconciliation is in progress. Please check back in a few minutes.",excludeAccount:{title:"Exclude Account"}},drawer:{uploadDropZoneSuffix:"your statement",uploadDropZoneSupportingText:{single_account:"Upload a statement for a single account.",multi_account:"Upload a statement containing multiple accounts."},statementAccountScopeOptions:{single_account:"Single Account",multi_account:"Multiple Accounts"},labels:{lastUpdated:"Last Updated:",lastSync:"Last Sync:"},values:{bank:"Bank",connecting:"Connecting",uploaded:"Uploaded",statementParsing:"Statement sync is in progress"},deleteConfirmation:{heading:"Delete this file?",description:"Deleting the file will affect your reviewed transactions or reconciliation progress."},validationFailed:{heading:"Validation Failed"},fileValidationFailed:{heading:"File Validation failed",description:"We couldn't process your statement. Please check the file and try uploading again."},dateRangeConflict:{alreadyReconciled:{heading:"Date Range Already Reconciled",description:"The statement period overlaps with a period that has already been reconciled"},gap:{heading:"Gap in Reconciliation Period",description:"The statement must start the day after the last reconciled period",expectedStartDate:e=>`Please upload a statement starting ${e}`},lastReconciled:e=>`Last Reconciled: ${e}`,lastReconciledBy:(e,t)=>`Last Reconciled: ${e} by ${t}`},error:{validationFailed:"Validation failed",parsingFailed:"Parsing failed"},excludeFromReconciliation:"Exclude from Reconciliation",excludeConfirmation:{heading:e=>`Exclude "${e}" from Reconciliation?`,description:"This account will be removed from your reconciliation workflow and progress report. Existing data will not be affected, and you can include the account again at any time."},includeForReconciliation:"Include account for Reconciliation",includeConfirmation:{heading:e=>`Include "${e}" for Reconciliation?`,description:"This account will be added back to your reconciliation workflow and progress report."}}},statementProcessing:{steps:["Uploaded file","Reading document structure","Identifying statement type","Extracting account details","Determining opening & closing balances","Verifying statement details","Gathering transactions","Finalizing Reconciliation"],headerTitle:"AI Accountant Reading Statement",stepSubtitles:["Setting up statement analysis and validation","Recognizing transaction layouts and summary sections","Matching format against known bank statement templates","Pulling account number, entity name, and statement period","Locating balance summary from the checking summary table","Cross-checking deposit and withdrawal totals for accuracy","Reading transactions. Extracting dates, amounts, and descriptions","Matching transactions to your ledger and preparing the review"],stepProgressLabel:(e,t)=>`Step ${e} of ${t} completed`,timeRemainingMinutes:e=>`${e} min left`,timeRemainingSeconds:e=>`${e} sec left`,takingLongerThanExpected:"Taking longer than expected...",actionNeeded:"Action needed",continueInBackground:"Continue in Background",accountMapping:{headerSubtitle:e=>`Almost done — assign each of the ${e} cards to a ledger account to finish.`,headerSubtitleAccounts:e=>`Almost done — assign each of the ${e} accounts to a ledger account to finish.`,banner:(e,t)=>`I've extracted all charges from this combined ${e} statement — it covers ${t} cards. Assign each card to a ledger account to file everything. You won't need to upload this file again.`,bannerAccounts:(e,t)=>`I've extracted all charges from this combined ${e} statement — it covers ${t} accounts. Assign each account to a ledger account to file everything. You won't need to upload this file again.`,aiMatched:"AI matched",ledgerAccountLabel:"Ledger account",ledgerAccountPlaceholder:"Select ledger account",overrideWarning:"This account has an ongoing reconciliation. Selecting it will override the existing work.",transactionSummary:(e,t)=>`${e} transactions • ${t} in new charges`,deleteRowAriaLabel:"Remove card mapping",deleteConfirmation:{heading:"Remove this card?",headingAccount:"Remove this account?",description:"The transactions from this card will be excluded from this combined statement, you can still map the remaining cards.",descriptionAccount:"The transactions from this account will be excluded from this combined statement, you can still map the remaining accounts."}},cancelConfirmation:{heading:"Cancel statement parsing?",description:"Your uploaded statement is still being parsed. If you cancel now, the uploaded file and all processing progress will be lost.",continueParsing:"Continue Parsing"}},statementParseInfo:{statementPeriodAndBalances:"Statement period & balances",statementValuesFootnote:"These values are copied directly from the statement.",from:"From:",to:"To:",credits:"Deposits",calculatedValues:"Calculated values",calculatedValuesFootnote:"These values are calculated from transactions in the statement.",extractedTransactions:"Extracted transactions",addTransaction:"Add transaction",totalsDoNotAddUp:"The totals do not add up.",reparseStatement:"Re-parse statement",retryParsing:"Retry Parsing",cancelConfirmation:{heading:"Are you sure?",description:"You have unsaved changes. If you cancel now, your changes will be lost"},reparseConfirmation:{heading:"Restart parsing?",description:"Re-parsing reads the statement again from scratch and replaces your current review. Any edits you've made will be lost.",reparse:"Re-parse"},closingBalanceMismatchConfirmation:{heading:"Closing balance doesn’t match",descriptionBeforeStatementAmount:"The closing balance on your statement is ",forAccountDescriptionBeforeStatementAmount:"For {accountName}, the closing balance on your statement is ",descriptionBetweenAmounts:", but the transactions you’ve added total ",reviewHint:"Please review the transactions and add, remove, or edit any that are incorrect.",reviewTransactions:"Review transactions",continueAnyway:"Continue anyway",descriptionAfterTransactionsAmount:"."},aiSummary:{accountRecognized:"Account recognized",transactionsExtracted:"Transactions extracted",exceptionsDetected:"Exceptions detected",fieldsCaptured:"Fields captured",validated:"Validated",openingDate:"Opening date"}},tabs:{},review:{allDoneText:{title:"High five!",subTitle:"All transactions reviewed!"},header:{match:"Record or Match",amount:"Amount",memo:"Memo"},transactionDirection:{credit:"Credit",debit:"Debit"},matchesCount:"__count__ Matches",matchedFoundCount:"__count__ Matches Found",matchesFoundFullInfo:"for this bank transaction within the last 90 days",bankDetail:"Bank Detail",creditCardDetail:"Credit Card Detail",formLabels:{match:"Match",categorize:"Categorize",selectCard:"Select Card",allBankAccounts:"All bank accounts",allCreditCards:"All credit cards",addCategory:"Add Category",addClass:"Add Class",addMemo:"Add Memo"}},reconcile:{allDoneText:{title:"Ta-da!",subTitle:"No transactions found for reconciliation!"},header:{clearedDate:"Cleared Date",amount:"Amount",memo:"Memo"}},subTitles:{review:{item1:{pre:"",bold:"",prefixIconName:"",post:"Please review these transactions because the general ledger balance doesn't match the bank balance."},item2:{pre:"",post:"suggest updating these transactions to resolve the ledger discrepancies, which will help auto-adjust the variance."}},reconcile:{item1:{pre:"",post:"have reconciled pending transactions and saved 42% of your reconciliation time."},item2:{pre:"",prefixIconName:"",bold:"",post:"It's time to review for discrepancies and select all transactions to bring the variance to zero."}}},titles:{item1:{pre:"",post:"have reconciled your bank transactions and saved 38% of your reconciliation time."},item2:{pre:"",bold:"",prefixIconName:"",post:" It's time to check for discrepancies and review them if there's a difference."}}},recommendationFeedback:{title:"Help me get this right next time.",skipLabel:"Skip Feedback",yourSelection:"Your Selection",reasonPlaceholder:'e.g. "Always put Amazon under Software Subscription, not Office Supplies"',submitHintPrefix:"Press ",submitHintKey:"Enter/Return",submitHintSuffix:" to submit",dimensionLabels:{vendor:"Payee Recommendation",category:"Category Recommendation",class:"Class Recommendation"}}},aiCfo:{pageView:{scopePageTitle:"AI CFO Scope",titleTag:"BETA",hello:"Hello, ",helpText:"How can I help you today?",showMoreSuggestedQuestions:"Show __count__ more..."},questionTemplates:{sampleQuestion1:"Show me last month's Month-end insights",sampleQuestion2:"Show me the runway and projected cash zero date",sampleQuestion3:"Show me the top expenses from past six months"},skillMenu:{examplePrefix:"try:",tip:"Tip: type details after a skill to tailor it — e.g. a period, a filter, or what to focus on."},routines:{title:"Scheduled Tasks",am:"am",pm:"pm",subtitle:"Work that runs on a schedule and emails you the answer. A saved skill, or a one-off you write here.",empty:"You don’t have any scheduled tasks yet.",loading:"Loading scheduled tasks…",loadFailed:"Couldn’t load scheduled tasks. Please try again.",newRoutine:"New scheduled task",capReached:"You’ve reached the limit of __max__ scheduled tasks. Delete one to add another.",everyDayAt:"Every day at __time__",everyWeekAt:"Every __weekday__ at __time__",everyMonthAt:"Every month on the __day__ at __time__",unknownSchedule:"On a schedule this app doesn’t recognise",weekdays:["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],ordinalSuffixes:{one:"st",two:"nd",few:"rd",other:"th"},unknownScheduleHint:"This scheduled task uses a schedule set up elsewhere. You can pause or delete it here, or contact support to change it.",inTimezone:"__schedule__ (__timezone__)",nextRun:"Next __date__",neverRun:"Hasn’t run yet",lastRunSucceeded:"Last run __date__",lastRunSucceededNoDate:"Last run succeeded",lastRunFailedNoDate:"Last run failed",lastRunTimeoutNoDate:"Last run timed out",lastRunFailed:"Last run failed __date__",lastRunTimeout:"Last run timed out __date__",pausedBadge:"Paused",autoPaused:"Paused after repeated failures",adHocBadge:"Prompt",brokenSkill:"The skill this ran was deleted",pause:"Pause",resume:"Resume",pauseRoutine:"Pause __name__",resumeRoutine:"Resume __name__",editRoutine:"Edit __name__",deleteRoutine:"Delete __name__",openThread:"Open conversation",run:"Run now",runRoutine:"Run __name__ now",running:"Running…",runQueued:"Started. The answer appears in the conversation, and is emailed when it finishes.",runFailed:"Couldn’t start this scheduled task. Please try again.",history:"History",hideHistory:"Hide history",historyLoading:"Loading runs…",historyFailed:"Couldn’t load this scheduled task’s runs.",historyEmpty:"No runs yet.",runManual:"Manual",runScheduled:"Automatic",runInFlight:"Running",runSucceeded:"Succeeded",runFailedStatus:"Failed",runTimedOut:"Timed out",runUnknownStatus:"Unknown",runAt:"__date__ at __time__",runAttempt:"Attempt __n__",openRun:"Open",openRunLabel:"Open the conversation for the run on __date__",backToRoutines:"Scheduled Tasks",configuration:"Configuration",enabledLabel:"Status",enabledOn:"Active",enabledOff:"Paused",enabledOnHint:"Runs on its schedule.",enabledOffHint:"Paused — it will not run.",scheduleRow:"Schedule",oneOffSource:"A prompt you wrote",instructionsHeading:"Instructions",showAll:"Show all",showLess:"Show less",runsHeading:"History",successRatio:"__succeeded__ of the last __total__ succeeded",neverRunStatus:"Hasn’t run yet",openRoutine:"Open __name__",openRoutinePage:"Open scheduled task settings",breadcrumbRoot:"Scheduled Tasks",edit:"Edit",runRowLabel:"Run · __when__",newRuns:"__count__ new",scheduledSection:"SCHEDULED",cadenceDaily:"Daily",cadenceWeekly:"Weekly",cadenceMonthly:"Monthly",cadenceCustom:"Custom",showRuns:"Show runs",hideRuns:"Hide runs",panelRuns:"Runs",panelDetails:"Details",panelSkill:"Skill",composerPlaceholder:"What do you want on a schedule?",composerSubmit:"Draft scheduled task",composerExamples:["Summarise last week’s spend and flag anything unusual","Send me the cash position every Monday morning","List invoices over 60 days past due"],deleteConfirm:"Delete scheduled task",deleteConfirmBody:"It stops running and stops emailing you. The skill it runs is not affected.",deleting:"Deleting…",deleteFailed:"Couldn’t delete this scheduled task. Please try again.",saveFailed:"Couldn’t save this scheduled task. Please try again.",nameLabel:"Name",namePlaceholder:"Monday spend review",sourceLabel:"What it runs",sourceSkill:"A saved skill",sourcePrompt:"Something I write here",promptPlaceholder:"Summarise last week’s spend and flag anything unusual.",promptHint:"Runs exactly as written, every time. It won’t appear in the / menu.",skillLabel:"Skill",skillHint:"Pinned to the version you pick, so editing the skill later won’t change what runs.",cadenceLabel:"How often",daily:"Every day",weekly:"Every week",monthly:"Every month",weekdayLabel:"Day of week",dayOfMonthLabel:"Day of month",dayOfMonthHint:"A month that’s too short runs on its last day instead.",hourLabel:"Hour",minuteLabel:"Minute",timeLabel:"At",scheduleLabel:"Schedule",runsSummary:"Runs __schedule__",timezoneLabel:"Timezone",timezonePlaceholder:"Search timezones…",timezoneHint:"The time above is in this timezone.",timezoneInvalid:"That isn’t a timezone we recognise.",skillPlaceholder:"Search skills…",skillUnknown:"Pick a skill from the list.",templateLabel:"Start from a skill",templatePlaceholder:"Optional — search skills…",templateHint:"Copies that skill’s instructions below, where you can edit them. The scheduled task then runs your edited copy, not the skill.",templateLoading:"Loading that skill’s instructions…",templateFailed:"Couldn’t load that skill’s instructions. You can still write your own.",skillInstructionsLabel:"What it will run",skillInstructionsLoading:"Loading…",skillInstructionsFailed:"Couldn’t load this skill’s instructions.",editACopy:"Edit a copy instead",editACopyHint:"Runs the skill as written. To change it for this scheduled task only, edit a copy.",noMatches:"No matches",deliveryNote:"The answer is emailed to you when it finishes.",save:"Save scheduled task",saving:"Saving…"},skills:{subtitle:"Ready-made analyses you can run in a new chat. Zeni's are available to everyone; yours are your company's own.",byZeni:"By Zeni",byTenant:"Your company",empty:"No skills are available yet.",emptyTenant:"Your company hasn’t added any skills yet.",loading:"Loading skills…",loadingPrompt:"Loading this skill’s instructions…",loadFailed:"Couldn’t load skills. Please try again.",detailLoadFailed:"Couldn’t load this skill. Please try again.",back:"All skills",backToSkill:"Back to skill",audienceCurrentPrivate:"Only you can use this skill.",audienceCurrentTenant:"Everyone at your company can use this skill.",publish:"Share with company",unpublish:"Make private",publishing:"Sharing…",unpublishing:"Making private…",publishFailed:"Couldn’t change who can use this. Please try again.",run:"Run skill",runHint:"Runs this skill in a new chat.",instructionsHeading:"What this skill tells the agent",tenantBadge:"Shared",lastUpdated:"Updated __date__",neverUpdated:"Not updated yet",newSkill:"New skill",fork:"Copy to my skills",forkHint:"Starts a new skill of your own from this one.",forkNameSeed:"__name__ copy",deleteConfirm:"Delete this skill?",deleteConfirmBody:"It stops appearing in the / menu for everyone who can run it. Its name becomes available again.",deleting:"Deleting…",deleteFailed:"Couldn’t delete this skill. Please try again.",namePlaceholder:"Cash burn summary",nameHint:"How people find this skill — the / command is set from this name when you save.",nameHandleHint:"Runs as /{handle} — type / then any part of the name.",audienceLabel:"Who can use this",audiencePrivate:"Only me",audiencePrivateHint:"Stays in your own / menu.",audienceTenant:"Everyone at my company",audienceTenantHint:"Appears in every colleague's / menu.",audiencePublishWarning:"Published skills run with the permissions of whoever uses them. Only publish a prompt you would be comfortable running as any colleague.",descriptionPlaceholder:"One line on what this skill does",descriptionHint:"Shown under the name in the / menu.",instructionsLabel:"Instructions",instructionsPlaceholder:"Tell the agent exactly what to do. Be specific about the period, the accounts and the format you want back.",instructionsHint:"The agent receives this verbatim. Written like a brief, not a search query.",charCount:"__count__ characters",create:"Create skill",creating:"Creating…",saveNewVersion:"Save new version",saveFailed:"Couldn’t save this skill. Please try again.",unsavedTitle:"Discard your changes?",unsavedBody:"This skill has edits that haven’t been saved.",keepEditing:"Keep editing",nameRequired:"A name is required.",instructionsRequired:"Instructions are required.",instructionsTooShort:"Instructions need at least __min__ characters.",renameWarning:"Renaming changes the / command. The old one stops working.",historyHeading:"Version history",historyLoading:"Loading history…",historyFailed:"Couldn’t load version history.",historyEmpty:"No earlier versions.",versionLabel:"Version __version__",restore:"Restore",restoreHint:"Brings this version’s instructions back as a new version. Nothing is overwritten.",restoreLoading:"Loading this version…",restoreFailed:"Couldn’t load that version. Please try again.",emptyTenantCta:"Write your first skill, or copy one of Zeni’s."},texts:{generating:"Generating...",artifactFallbackTitle:"Financial visualization",downloadArtifactImage:"Download chart as image",saveToSkill:"Save to Skill",savedToSkill:"Saved — run it with /{command}",saveToSkillFailed:"Couldn't save. Please try again.",createSkillCommandDescription:"Turn this conversation into a reusable skill",createSkillCommandExampleHint:"that compares vendor spend month over month",downloadTableFailed:"Couldn’t download the table. Please try again.",downloadTableTooLarge:"This table is too large to export. Try narrowing the question to a shorter period or fewer categories.",downloadArtifactImageFailed:"Couldn’t download the chart. Please try again.",errorInAnswer:"We couldn’t generate a response at the moment. Please submit question again.",errorInArtifact:"Unable to render visualization. The data is available in the text response above.",creatingCards:"Creating cards...",creatingPolicies:"Creating policies based on your preferences...",cardCreatedSingular:"1 card is created and ready",cardsCreatedPlural:"__count__ cards are created and ready",policyCreatedSingular:"1 policy is created and saved",policiesCreatedPlural:"__count__ policies are created and saved",createdCardsTableRecommendedLimitHeader:"Recommended Limit"},interactiveForm:{noMatches:"No matches",cardPolicy:{limits:{transactionLimitHelperText:"Maximum amount per single transaction",amountPlaceholder:"$0"}},cardsCreation:{step1Title:"Based on your last 3 months of spend, here are the cards. Review and confirm.",step1AddRowPlaceholder:"Add something else",step1ColumnAvgMonthlySpend:"Avg monthly spend",step2Title:"Who should these cards be assigned to? Suggested owners based on past spend.",step2Cta:"Create cards",cardTypeOptions:{virtual:{label:"Virtual card",description:"Issued instantly"}}}},chainOfThoughts:{reasoning:"Thinking"},reason:{show:"Show Reason",hide:"Hide Reason"},tooltips:{likeResponse:"Like",dislikeResponse:"Dislike",chatWithAI:"Chat with AI CFO"},headers:{followUpQuestions:"Follow-up questions to ask next",didYouKnow:"Did you know?",assumptions:"Key Assumptions"},exports:{downloading:"Preparing download",errors:{expired:"This file is no longer available. Ask the question again to regenerate it.",generic:"Could not download the file. Please try again."}},input:{disclaimer:"__agent__ can make mistakes. Check important info.",maxFilesError:"Cannot add __count__ file(s). Maximum __max__ files allowed per message.",fileTooLargeError:"'__fileName__' exceeds the 5MB size limit and was not added.",unsupportedFileTypeError:"'__fileName__' is not a supported file type and was not added.",uploading:"Uploading",uploadPromoTooltip:{title:"Now upload documents",description:"Add a financial document to see key insights and ask questions."},placeholder:"Ask AI CFO a question and get clear answers.",placeholderWithSkills:"Ask a question, or type / to run a Skill.",placeholderWithSkillsAndUpload:"Ask a question, type / for Skills, or attach a file.",placeholderWithUpload:"Ask a question, or attach a file to analyze."},loading:{discoveryTips:{excelExport:"Tip: Ask for any analysis as an Excel file and I'll attach a download.",followUps:"Tip: Ask follow-up questions in the same chat — I keep the conversation's context.",skills:"Tip: Type / in the message box to run Skills like flux analysis and cash forecasts.",uploads:"Tip: Attach a CSV or spreadsheet and I'll analyze it alongside your books."}},menu:{chatHistory:"CHAT HISTORY"},onboarding:{section:{title:"Run your business with confidence.",subtitle:"Built to analyze, explain, and summarize your numbers like a real CFO would."},capabilities:[{title:"Analyze Financials",subtitle:"Profit & loss, balance sheets, and trend detection — no spreadsheets required.",icon:"analyzing"},{title:"Spot Vendor Patterns",subtitle:"Review expenses across vendors and categories. Surface anomalies and overspend.",icon:"vendors"},{title:"Calculate Core Metrics",subtitle:"Runway, burn, margins — calculated from your real books.",icon:"calculator"},{title:"Forecast With Confidence",subtitle:"Auto-generate projections based on historicals. Updated weekly.",icon:"forecast"},{title:"Visualize Key Trends",subtitle:"Bar graphs, line charts, tables — linked to real data for full traceability.",icon:"graph-trend"}],whoIsItFor:{title:"Who's It For",details:["Startup founders without a full-time CFO — but need strategic clarity.","VPs of Finance/Operations who want faster answers, fewer spreadsheets.","Department heads (Sales, Marketing, Eng) who want to own their numbers.","Fractional CFOs managing multiple clients on Zeni.","In-house CFOs using it as a 10x strategic co-pilot."]},footer:{buttonText:"Launch __agent__",scope:"__agent__ Scope",betaText:"This is Beta — and your usage will shape what’s next.",footerText:'By clicking "Launch __agent__" I accept '}}},aiPerformanceDashboard:{tileTitle:"AI Performance",tileSubtitle:"Monitor and analyze the performance of your AI agents.",chartTitle:"Cost and Time Savings Trend",aiCostSavedTile:{title:"Cost Saved",subtitle:"Total reduction in expense."},aiTimeSavedTile:{title:"Time Saved",subtitle:"Manual hours saved by AI."},noPerformanceData:{firstLine:"No tasks performed yet!"},personas:{aiBookkeeper:"AI Bookkeeper Agent",aiCardsAgent:"AI Cards Agent",aiBillsAgent:"AI Bills Agent",aiExpenseAgent:"AI Expenses Agent",aiBankingAgent:"AI Banking Agent",aiAccountantAgent:"AI Accountant Agent",personaTypes:{aiBookkeeper:"bookkeeper",aiCardsAgent:"ai_cards_agent",aiBillsAgent:"ai_bills_agent",aiExpensesAgent:"ai_expenses_agent",aiBankingAgent:"ai_banking_agent",accountant:"accountant",aiCfo:"ai_cfo"}},valueDelivered:{title:"Value Delivered",subtitle:"Measurement of what you get vs. what you pay",zeniSubscriptionPlan:"Zeni Subscription Plan"},annualizedImpact:{title:"Annualized Impact",subtitle:"At this rate annually, you'll save"}},sessionTimeout:{title:"Session ends in",description:"You will be signed out due to inactivity.",descriptionClickPrefix:"Click",descriptionSuffix:"to stay signed in.",signOut:"Sign Out",continueSession:"Continue Session"},aiAccountantCustomer:{table:{bookClose:"Book Close",accuracy:"Accuracy"},actions:{onboard:"Onboard",evaluate:"Evaluate",fullPipeline:"Full Pipeline",retrain:"Retrain",offboard:"Offboard",cancelOnboarding:"Cancel Onboarding"},jobTriggerDialog:{title:"Trigger Job",datesInstruction:"Please provide start and end dates.",singleDescription:"__companyName__. __datesInstruction__",singleDescriptionOffboard:"__companyName__ will be offboarded from AI Accountant."},drawer:{enrollmentDetails:"Enrollment Details",onboarded:"Onboarded",modelAccuracy:"Model Accuracy",noAccuracyData:"No accuracy data available",jobHistory:"Job History",loadingJobs:"Loading jobs...",noJobsFound:"No jobs found",operation:"Operation"},summary:{totalCustomers:"Total Customers",avgAccuracy:"Avg Accuracy"},bulkActions:{menuLabel:"Bulk Actions",selectedCount:"__count__ selected",noCommonOperations:"No actions available for the selected customers",disabledInfo:"The selected customers have no action in common. Narrow your selection to customers in the same state.",bulkDialogDescription:"__count__ customers selected for __action__. Please provide start and end dates.",bulkDialogDescriptionOffboard:"__count__ customers selected for offboarding.",evaluateAllDialogDescription:"__count__ unonboarded customer(s) will be evaluated. Please provide start and end dates."}},cardsShutdown:{bannerDescription:"We're discontinuing our cards product. Here's what's changing, key dates, and how to switch your payments smoothly.",knowMore:"Know More",introBody:"We're discontinuing the Zeni Cards product. Here's what's changing, key dates, and how to switch your payments smoothly.",whatsHappeningTitle:"What's happening",whatsHappeningBodyPrefix:"We've made the decision to discontinue Zeni Cards. Your card will remain active until ",whatsHappeningBodySuffix:", after which all Zeni Cards will be permanently deactivated and no new transactions will be processed.",switchPaymentsTitle:"Switch your vendor payments in minutes",switchPaymentsBodyPrefix:"To simplify the transition, we recommend ",cardSwitcherLinkText:"Knot CardSwitcher,",switchPaymentsBodySuffix:" which can automatically update your saved payment method across hundreds of merchants and subscription providers.",switchPaymentsCoverage:"CardSwitcher works with hundreds of major merchants - including Amazon, Uber, Netflix, Walmart, and most popular subscription and software providers — so you won't need to hunt through each account and update billing details one by one.",whatToDoNowTitle:"What you should do now",whatToDoItem1:"Review recurring payments linked to your Zeni Card",whatToDoItem2:"Move vendor and subscription payments to a new card",whatToDoItem3:"Download any statements you need for your records",needHelpBodyLine1:"Our team is here to help you through the transition.",needHelpBodyPrefix:"Reach us at ",needHelpBodySuffix:" for any assistance."},invoicingOverview:{revenueMetricOverTime:"Revenue - {metric} Over Time",mrrMovement:"MRR Movement",mrrMovementNewSubscriptions:"New Subscriptions",mrrMovementExpansions:"Expansions",mrrMovementNewChange:"New MRR Change",customerMovement:"Customer Movement",customerMovementSubtitle:"All status transitions this month",netCustomerChange:"Net customer change",totalActiveCustomers:"Total active customers",customerChurnRate:"Customer churn rate",revenueByPlan:"Revenue by Plan",noPlanData:"No plan data available.",noRecentSubscriptions:"No recent subscriptions.",kpiActiveSubs:"Active Subs",metricChurnRate:"Churn Rate",tabRecentSubscriptions:"Recent Subscriptions",tabMonthlyMrrBreakdown:"Monthly MRR Breakdown",pillPaused:"Paused",pillResumed:"Resumed",pillReactivated:"Reactivated",alertFailedPayments:"Failed Payments",alertNeedsAction:"Needs action",alertUpcomingInvoices:"Upcoming Invoices",alertNext7Days:"Next 7 days",alertPastDueInvoices:"Past Due Invoices",nrrTitle:"Net Revenue Retention (NRR)",nrrSubtitle:"Trailing 12 months · benchmark for SaaS health",nrrFootnote:"NRR over 112% means existing customers are growing faster than they’re churning — typically a sign of strong product-market fit. Healthy SaaS benchmark is >100%.",grrTitle:"Gross Revenue Retention (GRR)",grrSubtitle:"Excludes expansion · pure retention signal",grrFootnote:"GRR caps at 100% — it strips out upsell to show how much revenue you’d retain without expansion. Best-in-class SaaS sits at 90%+. Below 80% signals a churn problem.",startingArr:"Starting ARR",expansionsArr:"Expansions ARR",contraction:"Contraction",churn:"Churn",endingArr:"Ending ARR",nrr:"NRR",retainedArr:"Retained ARR",grr:"GRR",summaryNewMrr:"New MRR",summaryExpansion:"Expansion",summaryChurnedMrr:"Churned MRR",summaryNetMrrChange:"Net MRR Change",summaryEndingMrr:"Ending MRR",colAutoCollect:"Auto Collect",autoCollectOn:"ON",autoCollectOff:"OFF",cadenceAnnual:"Annual",since:"Since"},invoicingCommon:{zipPlaceholder:"94105",usage:"Usage",pricing:"Pricing",subFamilyCode:"Price Point Code",productCode:"Product Code",columnTarget:"Target",labelBillingPeriod:"Billing Period",labelPricingModel:"Pricing Model",addOns:"Add-ons",oneTimeChargesTab:"One-time Charges",importCsvFile:"Import CSV File",pluralSuffix:"s",description:"Description",subFamilyId:"Price Point ID",itemDetails:"Item Details",name:"Name",externalName:"External Name",unit:"Unit",itemApplicability:"Item Applicability",applicableItems:"Applicable Items",timestamps:"Timestamps",updatedAt:"Updated At",addOn:"Add-on",cancelSubscription:"Cancel Subscription",nameShownOnInvoices:"Name shown on invoices",placeholderPriceZero:"0.00",trialPeriod:"Trial Period",labelFreeQuantity:"Free Quantity",invoiceNotes:"Invoice Notes",invoiceName:"Invoice Name",placeholderAddInvoiceName:"Add invoice name",appendedToInvoiceLineItem:"Appended to invoice line item",addInvoiceNotes:"Add invoice notes",checkmark:"✓",yourCompany:"Your Company",thankYouForYourBusiness:"Thank you for your business.",onReceipt:"On receipt",net:"Net ",newSuffix:"—NEW",invoiceNumber:"Invoice #",poNumberLabel:"PO #",logoAlt:"Logo",taxIdLabel:"Tax ID: ",billedTo:"Billed To",amount2:"Amount (",paymentLinkNoItemizedInvoice:"Payment link — no itemized invoice",qtyLabel:"Qty: ",subtotal:"Subtotal",amountDue:"Amount Due (",signatureAlt:"Signature",currencySymbolEur:"€",currencySymbolGbp:"£",currencySymbolInr:"₹",createCoupon:"Create Coupon",couponDetails:"Coupon Details",couponId:"Coupon ID",couponCodeLabel:"Coupon Code",applyOn:"Apply On",discountType:"Discount Type",maxRedemptions:"Max Redemptions",validFrom:"Valid From",validTill:"Valid Till",dueOnReceipt:"Due on receipt",createInvoice:"Create Invoice",customerDetails:"Customer Details",billingFrequency:"Billing Frequency",openCustomerInNewTab:"Open customer in new tab",openSubscriptionInNewTab:"Open subscription in new tab",openInvoiceInNewTab:"Open invoice in new tab",allocated:"Allocated",refunded:"Refunded",referenceInvoice:"Reference Invoice",subTotal:"Sub Total",noLineItems:"No line items.",creditNote:"Credit Note",preparing:"Preparing…",bankAccountAch:"Bank Account (ACH)",connectViaPlaid:"Connect via Plaid — lower fees, 2–4 day settlement",loading:"Loading…",creditDebitCard:"Credit / Debit Card",cardMethodDescription:"Visa, Mastercard, Amex — instant settlement",cardSetupFailed:"Card setup failed.",failedToSaveCard:"Failed to save card.",expiry:"Expiry",saveCard:"Save Card",newSubscription:"New Subscription",outstanding:"Outstanding",namePlaceholder:"James Johnson",firstNamePlaceholder:"James",lastNamePlaceholder:"Johnson",emailPlaceholder:"billing@acme.com",phonePlaceholder:"(555) 000-0000",companyPlaceholder:"Acme Corp",billingDetails:"Billing Details",vatNumber:"VAT Number",vatNumberPlaceholder:"US-EIN-12-3456789",autoCollectionDescription:"Enabling this automatically charges the customer each billing cycle.",autoCollection:"Auto Collection",netTerms:"Net Terms",selectNetTerm:"Select net term",preferredCurrency:"Preferred Currency",taxability:"Taxability",selectTaxability:"Select taxability",invoiceNotesHint:"Default note to appear on invoices",invoiceNotesPlaceholder:"Default notes to appear on invoices…",addStreetAddress:"Add street address",floorSuiteOffice:"Floor/Suite/Office",city:"City",addCity:"Add city",state:"State",addState:"Add state",addCountry:"Add country",zipCode:"ZIP Code",yourVendor:"Your vendor",createCustomerLabel:"Create Customer",of:" of ",free:" free",code:"Code",redemptions:"Redemptions",slashSeparator:" / ",duration:"Duration",daysPastDue:"Days Past Due",nextRetry:"Next Retry",attempts:"Attempts",line1:"Line 1",line2:"Line 2",recordPayment:"Record Payment",arrowSeparator:" → ",shippingAddress:"Shipping Address",poNumber:"PO Number",poNumber2:"PO number",refunds:"Refunds",gateway:"Gateway",referenceNumber:"Reference Number",subscriptionDetails:"Subscription Details",addShippingAddressButton:"Add shipping address",addBusinessAddressButton:"Add business address",addPoNumber:"Add PO number",shipLine1Placeholder:"123 Main St",shipLine2Placeholder:"Suite 200",cityPlaceholder:"San Francisco",statePlaceholder:"CA",createSubscriptionLabel:"Create Subscription",cardStatus:"Card Status",creditNumber:"Credit Number",dateIssued:"Date Issued",creditedAgainst:"Credited Against",totalCredits:"Total Credits",daySuffix:"d",trial:"Trial",amount:"Amount",all:"All"},invoicingAuditLog:{timeColumnHeader:"Time",actorColumnHeader:"Actor",detailColumnHeader:"Detail",noAuditEntriesMatchSearch:"No audit entries match your search.",noAuditActivityYet:"No audit activity yet.",searchActionTargetActorPlaceholder:"Search action, target, or actor"},invoicingCatalog:{addOnsNoun:"add-ons",oneTimeChargesNoun:"one-time charges",plansNoun:"plans",itemsNoun:"items",addItem:"Add Item",addAddOn:"Add Add-on",addOneTimeCharge:"Add One-time Charge",periodSingular:"1 ${label}",periodPlural:"${period} ${label}s",productColumnHeader:"Product",itemTypeColumnHeader:"Item Type",activePlansKpi:"Active Plans",activeProductsKpi:"Active Products",avgPlanPriceKpi:"Avg Plan Price",noMatchSearch:"No ${tabNoun} match your search.",noItemsYet:"No ${tabNoun} yet.",emptyStateDescription:"Bring in your historical product catalog data by importing your product catalog csv file",emptyStateTitle:"No Product Catalog Yet",searchPlaceholder:"Search ${tabNoun}"},invoicingCatalogDetail:{oneSpace:"1 ",activeSubFamilies:"Active Price points",archivedSubFamilies:"Archived Price points",lowestActiveSubFamilyPrice:"Lowest Price Point Price",priceTiers:"Price / Tiers",catalogItemNotFound:"Catalog item not found.",itemNamePlaceholder:"Item name",externalNamePlaceholder:"External name",addDescriptionPlaceholder:"Add a description",lineItemDescription:"Line Item Description",itemFamily:"Item Family",restrictedPrefix:"Restricted (",itemsSuffix:" items)",subFamilies:"Price points",noSubFamilies:"No Price points.",archivedAt:"Archived At",archiveSubFamily:"Archive price point",archiveSubFamilyBlocked:"Cannot archive while subscriptions reference this price point.",duplicateSubFamily:"Duplicate price point",subscriptionsUseSubFamilyBanner:"{count} subscriptions use this price point. To change pricing, create a new price point."},invoicingCatalogForm:{typeOneTimeCharge:"One-time Charge",trialUnitDay:"Day",periodUnitWeek:"Week",pricingModelFlatFee:"Flat fee",pricingModelPerUnit:"Per unit",pricingModelTiered:"Tiered",pricingModelVolume:"Volume",pricingModelStairstep:"Stairstep",tierTypePerUnit:"Per Unit",tierTypeFlatFee:"Flat Fee",tierTypePackage:"Package",trialEndActivateSubscription:"Activate Subscription",prorationPartialTerm:"Partial Term",prorationFullTerm:"Full Term",applicabilityAll:"All add-ons & charges",applicabilityRestricted:"Restricted — Select applicable items",applicableItemsEmptyPlaceholder:"No add-ons or charges available",selectApplicableItemsPlaceholder:"Select applicable items",validationProductFamilyRequired:"Enter a Product Family name for this catalog item.",validationSubFamilyNameRequired:"Add at least one price point and enter a name for each one.",titleEditCatalogItem:"Edit Catalog Item",titleCreatePlan:"Create Plan",titleCreateOneTimeCharge:"Create One-time Charge",titleCreateAddon:"Create Add-on",sectionPlanAndProductFamilyDetails:"Plan and Product Family Details",productCodeExample:"Optional. Generated from Product Family when left blank.",placeholderAddProductCode:"Add product code",customerFacingName:"Customer facing name",labelProductFamily:"Product Family",placeholderAddProductFamily:"Add product family",labelPricePointName:"Price point name",placeholderAddSubFamilyName:"e.g. Growth Monthly",subFamilyCodeExample:"Optional. Generated from the price point name when left blank.",placeholderAddSubFamilyCode:"Add price point code",forInternalUseOnly:"For internal use only",subFamilyDetailsTitle:"Price Points",pricePointsRequiredHint:"Add at least one price point to create this plan. Add more for different billing frequencies (e.g. monthly, annual) or currencies.",addNewLink:"Add another price point",subFamilyNumberPrefix:"Price Point",removeSubFamilyConfirmation:"Remove this price point?",labelSubFamily:"Price Point",placeholderAddSubFamily:"Add price point",labelAddTiers:"Add Tiers",tierColumnTo:"To (blank for unlimited)",tierColumnPackageSize:"Package size",infinity:"∞",removeTierX:"✕",addTierLink:"Add Tier",hintAddBillingPeriod:"Add billing period",placeholderTrialPeriodExample:"e.g. 14",labelTrialEndAction:"Trial End Action",hintBillingCyclesUnlimited:"Keep it blank for unlimited cycles",placeholderAddBillingCycles:"Add number of billing cycles",labelProrationType:"Proration Type",labelFlags:"Flags",selectFlagsPlaceholder:"Select flags",labelShowDescriptionInQuotes:"Show Description in Quotes",lineItemDescriptionHint:"Shown below the line-item name when invoice descriptions are enabled",subFamilyInvoiceNotesHint:"Shown in the invoice Notes section when this price point is billed",nameShownOnInvoiceLineItem:"Name shown on the invoice line item",sectionAccountingIntegration:"Accounting Integration",skuQboExample:"QBO Product code. Example: BASIC-M",labelSku:"SKU",placeholderAddSku:"Add SKU",placeholderAddAccountingCode:"Add accounting code",placeholderSelectIncomeAccount:"Select income account"},invoicingCouponForm:{enterCouponIdError:"Enter a Coupon ID.",enterCouponNameError:"Enter a name for this coupon.",editCouponTitle:"Edit Coupon",couponIdPlaceholder:"e.g. WELCOME20",namePlaceholder:"e.g. Welcome 20% Off",discountPercentagePlaceholder:"e.g. 20",discountPercentageLabel:"Discount Percentage",discountAmountLabel:"Discount Amount",freeQuantityPlaceholder:"e.g. 1",durationLimitsSectionTitle:"Duration & Limits",durationTypeLabel:"Duration Type",periodPlaceholder:"e.g. 3",periodUnitLabel:"Period Unit",maxRedemptionsPlaceholder:"Add max redemptions",discountsAccountLabel:"Discounts Account",discountsAccountPlaceholder:"Select income account"},invoicingCreateInvoice:{selectPaymentTerm:"Select payment term",net7:"Net 7",net15:"Net 15",net30:"Net 30",net45:"Net 45",net60:"Net 60",selectBillingFrequency:"Select billing frequency",halfYearly:"Half-yearly",annually:"Annually",addAtLeastOneLineItem:"Add at least one line item with a description and unit price.",step1CustomerAndType:"Step 1: Customer and Type",step2InvoiceDetails:"Step 2: Invoice Details",step1Subtitle:"How would you like to create an invoice? Select a customer and choose the invoice type.",step2Subtitle:"Set dates, line items, and additional details.",invoiceJpg:"Invoice.jpg",livePreviewSuffix:" - Live Preview",paymentLink:"Payment link",paymentLinkCalloutText:"A payment link will be generated and sent to the customer — no itemized invoice document is required.",chooseExistingCustomerHint:"Choose an existing customer or create one first",searchOrTypeCustomerName:"Search or type a customer name",pleaseSelectCustomer:"Please select a customer to continue.",invoiceType:"Invoice Type",selectAnInvoiceType:"Select an invoice type",oneTimeInvoiceDescription:"Send a one-time invoice with a built-in payment link.",oneTimeInvoiceTitle:"One-time Invoice",recurringSeriesDescription:"Automatically generate recurring invoices on a set schedule.",recurringSeriesTitle:"Recurring Series",paymentLinkOnlyDescription:"Send only a payment link with a single amount — No itemized invoice.",paymentLinkOnlyTitle:"Payment Link Only",general:"General",setInvoiceDatesHint:"Set the invoice dates and additional details.",selectInvoiceDate:"Select invoice date",paymentTerms:"Payment Terms",usdUsDollar:"USD — US Dollar",soNumber:"SO Number",addSoNumber:"Add SO number",exampleSoNumber:"Example: SO-2026-001",exampleMemo:"Example: thank you for your business",unitPriceLabel:"Unit Price (",useDescriptionAs:"Use description as",addQuantity:"Add quantity",addPrice:"Add price",removeLine:"Remove line",addLine:"Add Line",unitPriceInDollars:"Unit price in dollars"},invoicingCreditDetail:{allocatedAt:"Allocated At",creditNoteNotFound:"Credit note not found.",creditNoteTitlePrefix:"Credit Note ",creditNoteDetails:"Credit Note Details",creditNoteId:"Credit Note ID",creditNoteNumber:"Credit Note Number",priceType:"Price Type",amounts:"Amounts",amountAvailable:"Amount Available",amountAllocated:"Amount Allocated",amountRefunded:"Amount Refunded",allocations:"Allocations",noAllocations:"No allocations.",linkedRefunds:"Linked Refunds"},invoicingCreditList:{noCreditNotesMatchSearch:"No credit notes match your search.",noCreditNotesYet:"No credit notes yet.",createCreditNoteButton:"Create Credit Note",emptyStateDescription:"Bring in your historical credit note data by importing your credit note csv file",emptyStateTitle:"No Credit Notes Yet",searchPlaceholder:"Search by customer or credit note"},invoicingCustomerDetail:{paymentMethodSavedTitle:"Payment method saved",paymentMethodSavedDescription:"The payment method has been added and is now the default. Existing payment methods are kept, and future invoices can be collected automatically.",addPaymentMethod:"Add Payment Method",addPaymentMethodSubtitle:"Securely add a bank account or card to collect invoice payments.",connectStripeNotice:"Connect a Stripe account in Settings › Payment Destination before adding a payment method.",securedByStripeAndPlaid:"Secured by Stripe & Plaid.",countryAustralia:"Australia",countryCanada:"Canada",countryGermany:"Germany",countryFrance:"France",countryUnitedKingdom:"United Kingdom",countryIndia:"India",countryJapan:"Japan",countrySingapore:"Singapore",countryUnitedStates:"United States",netTermsDueImmediately:"Due immediately",createPromotionalCreditsSubtitle:"Add promotional credits to this customer's balance. Credits are applied automatically on the next invoice before tax.",currentPromotionalCreditsBalance:"Current balance",promotionalCreditAmountRequired:"Enter a positive amount.",promotionalCreditDescriptionRequired:"Description is required.",promotionalCreditDescriptionPlaceholder:"e.g. Welcome bonus",promotionalCreditsAddedTitle:"Promotional credits added",promotionalCreditsAddedDescription:"The customer's promotional credit balance has been updated.",customerSince:"Customer Since",sincePrefix:"Since ",lifetimeValue:"Lifetime Value",promotionalCredits:"Promotional Credits",refundableCredits:"Refundable Credits",excessPayments:"Excess Payments",unbilledCharges:"Unbilled Charges",maskedDigitsPrefix:"•••• ",maskedDigitsMiddle:" •••• ",expires:"Expires",customerNotFound:"Customer not found.",taxable:"taxable",netDashPrefix:"Net-",streetAddress:"Street Address",balances:"Balances",connectStripeTooltip:"Connect a Stripe account in Settings › Payment Destination first",paymentMethods:"Payment Methods",connectStripeBefore:"Connect your Stripe account in",settingsPaymentDestination:"Settings › Payment Destination",connectStripeAfter:"to add payment methods.",invoicePaymentDetails:"Invoice payment details:",customerEmailPlaceholder:"customer@email.com",emailPaymentLinkTooltip:"Email the customer a link to add their payment details",collectAchHint:"We will email the customer to provide their ACH details.",paymentLinkSentTo:"Payment link sent to ",copyPaymentLink:"Copy payment link",sendPaymentLinkFailed:"Failed to send payment link.",default:"Default",noPaymentMethodOnFile:"No payment method on file",previewEmailHeading:"Preview email",previewEmailSubtitle:"Edit the subject and message; the preview updates as you type.",previewEmailFrameTitle:"Rendered payment link email preview",previewEmailLoading:"Loading the branded email preview…",previewEmailUnavailable:"The email preview is unavailable right now. You can still send the payment link.",previewEmailFailed:"Could not load the email preview.",previewEmailRetry:"Retry",previewEmailSend:"Send email",previewEmailMessageLabel:"Message",previewEmailSubjectRequired:"Enter an email subject.",previewEmailBodyRequired:"Enter an email message.",sending:"Sending…",noSubscriptions:"No subscriptions.",recentInvoices:"Recent Invoices",noInvoices:"No invoices.",addNoteAboutCustomer:"Add a note about this customer"},invoicingCustomerForm:{validationEnterEmail:"Enter an email for this customer.",customerDetailsDescription:"Primary contact for billing and invoices",customerTypeLabel:"Customer Type",billingAddressSectionDescription:"Enter your company's official billing address for invoicing.",addSecondaryInfoPlaceholder:"Add secondary info (Optional)",addressSecondaryHint:"Example: Address on your driver's license",addBillingAddressButton:"Add billing address",billingSettingsDescription:"Tax IDs, currency, and payment defaults",billingSettingsTitle:"Billing Settings",customerTypeResidential:"Residential",netTermImmediate:"Immediate",taxabilityExempt:"Exempt"},invoicingCustomerList:{noCustomersMatchSearch:"No customers match your search.",noCustomersYet:"No customers yet.",importCustomersDescription:"Bring in your historical customers by importing your customers csv file",noCustomerYetTitle:"No Customer Yet"},invoicingDataImport:{inSync:"In Sync",skippedSuffix:" Skipped",warningsSuffix:" Warnings",newImport:"New Import",chargebeeImportFailed:"Chargebee import failed",chargebeeImportInProgress:"Chargebee import in progress",csvImportFailed:"CSV import failed",csvImportInProgress:"CSV import in progress",viewDetails:"View details",records:"records",bulletSeparator:" • ",lastImportReversible:"Last import is reversible",recordsBulletSeparator:"records • ",rollback:"Rollback",importedModules:"Imported Modules",module:"Module",recordsColumn:"Records",lastImported:"Last Imported",loadingImportStatus:"Loading import status…",noImportedRecords:"No imported records yet. Start a new import to populate this table.",templateProductCatalogPlans:"Product Catalog (Plans)",templateCouponsAndDiscounts:"Coupons & Discounts",chargebeeStepSettingsImportExport:"Chargebee → Settings → Import & Export → Export",chargebeeStepDetailModulesList:"Plans, add-ons, one-time charges, customers, subscriptions, invoices, credit notes",chargebeeStepDetailPickAllTime:'Pick "All time" range. CSV format. Default columns are fine.',chargebeeStepExportModule:"Export the module you want",chargebeeStepDropCsvFiles:"Drop the .CSV files above",capsuleIssuesSuffix:" Issues",capsuleReady:"Ready",scanningCaptionCsv:"Larger exports can take a few minutes — you can leave this page, it keeps running.",scanningCaptionChargebee:"This can take a moment for larger accounts — you can leave this page, it keeps running.",scanningLabelCsv:"Reading your uploaded files…",defaultImportErrorMessage:"Something went wrong during import.",backToDataImport:"Back to Data Import",migrateHeading:"Migrate from Chargebee → Zeni",migrateSubtitle:"Connect Chargebee or drop your CSV exports — we’ll handle the rest.",connectWithChargebee:"Connect with Chargebee",importFromChargebee:"Import from Chargebee",connectedToChargebee:"Connected to {site}",chargebeeConnectedLabel:"Connected to Chargebee",buttonFetchFromChargebee:"Fetch from Chargebee",chargebeeNotConnectedMessage:"Connect Chargebee in Invoicing Settings → Integrations to fetch data automatically.",buttonGoToIntegrations:"Connect Chargebee in Settings",connectPullEverything:"Pull everything automatically — fully linked, no CSV juggling.",connectingToChargebee:"Connecting to Chargebee…",fieldLabelChargebeeSite:"Chargebee site",sitePlaceholderAcme:"acme",fieldHintSiteSubdomain:"The subdomain in your Chargebee URL — e.g. acme in\n acme.chargebee.com.",fieldLabelApiKey:"API key",fieldLabelApiKeySavedSuffix:" (saved)",apiKeyPlaceholderUsingSaved:"Using saved API key",apiKeyPlaceholderLive:"live_xxxxxxxxxxxxxxxx",fieldHintApiKeyReuse:"Leave blank to reuse your saved API key.",fieldHintApiKeyLocation:"Settings → Configure Chargebee → API Keys & Webhooks.",connectReadOnlyAccess:"Read-only access. We never store your billing data without\n confirmation.",dividerOrImportCsv:"or import from CSV instead",downloadBlankTemplateHeader:"Don’t have a Chargebee export yet? Download a blank template",buttonDownloadAllZip:"Download All (Zip)",csvExtensionSuffix:".csv",orExportDirectly:"Or export directly from Chargebee",followStepsBelow:"Follow the steps below",stepDetailLetterSeparator:". ",uploadingExtractingFiles:"Uploading & extracting your files…",dropzoneStrongDropOrUpload:"Drop or upload",dropzoneTitleRest:"your CSV or ZIP exports\n here",dropzoneMetaSupportedFiles:"Chargebee .zip bundles and individual .csv files are both supported",recordsSuffix:" records",afterSkippingPrefix:"After skipping ",issuesRollbackSuffix:" issues · Rollback\n available for 24hrs",filesDetectedSuffix:" files detected",modulesFetchedSuffix:" modules fetched from Chargebee",autoIdentifiedFromHeaders:"Auto-identified from headers",pulledViaChargebeeApi:"Pulled via Chargebee API",needAttentionSuffix:" need attention",buttonSaveContinueLater:"Save & Continue Later",buttonStarting:"Starting…",importRecordsPrefix:"Import ",importRecordsSuffix:" Records",recordsFetchedSuffix:" records fetched",expandIconOpen:"▾",expandIconClosed:"▸",importingFinalizing:"Finalizing…",importingChargebeeData:"Importing your Chargebee Data",rollbackFallback24Hours:"24 hours",doneYouAreOnZeni:"You are on Zeni",doneImportedPrefix:"Imported ",doneRecordsFromChargebeeSuffix:" records from Chargebee",rollbackAvailableUntilPrefix:"Rollback available until ",buttonGoToOverview:"Go to Overview",importFailedHeading:"Import failed",failedMessageCsv:"Your uploaded data is still saved — retry resumes without re-reading your files.",failedMessageChargebee:"Your scanned data is still saved — retry resumes without re-fetching from Chargebee.",buttonRetrying:"Retrying…",buttonRetryImport:"Retry import",diagnosticsTitle:"Import details",diagnosticsSubtitle:"Review skipped records and warnings from this import session.",diagnosticsNotFound:"This import session could not be found.",diagnosticsSection:"Row diagnostics",diagnosticsSummary:"Import summary",diagnosticsSearchPlaceholder:"Search source ID, file, or issue",diagnosticsAllModules:"All modules",diagnosticsAllSeverities:"All severities",diagnosticsAllOutcomes:"All outcomes",diagnosticsErrors:"Errors",diagnosticsWarning:"Warning",diagnosticsSkipped:"Skipped",diagnosticsWarningOutcome:"Imported with warning",diagnosticsSourceRecord:"Source record",diagnosticsRow:"Row",diagnosticsSeverity:"Severity",diagnosticsOutcome:"Outcome",diagnosticsNoIssues:"No row-level issues match these filters.",diagnosticsExpired:"Row-level diagnostics have expired after the 90-day retention period.",diagnosticsFetchFailed:"We could not load row-level diagnostics. Please try again.",diagnosticsDownloadCsv:"Download CSV",diagnosticsLoading:"Loading diagnostics…",diagnosticsJobFailure:"The import job failed",diagnosticsJobFailureHelp:"This is a job-level failure. Any row-level issues found before it stopped are listed below.",diagnosticsChargebeeApi:"Chargebee API",diagnosticsSource:"Import source",diagnosticsCsvUpload:"CSV upload",diagnosticsTotal:"Total records",diagnosticsImporting:"Importing",diagnosticsRolledBack:"Rolled back",diagnosticsScanning:"Scanning",diagnosticsRetainedUntil:"Diagnostics retained until"},invoicingDiscountDetail:{discountsAccountLabel:"Discounts Account",month:"month",limitedSinglePeriod:"Limited · 1 ",limitedMultiPeriodPrefix:"Limited · ",discountNotFound:"Discount not found.",couponNamePlaceholder:"Coupon name",invoiceNotesPlaceholder:"Notes shown on invoices",discountConfiguration:"Discount Configuration",revRecTreatment:"Rev Rec Treatment",restrictedProducts:"Restricted Products",validityAndRedemptions:"Validity & Redemptions",unlimited:"Unlimited"},invoicingDiscountList:{totalDiscounted:"Total Discounted",noDiscountsMatchSearch:"No discounts match your search.",noDiscountsYet:"No discounts yet.",importDiscountsDescription:"Bring in your historical discount coupons data by importing your discount coupon csv file",noDiscountCouponsYet:"No Discount Coupons Yet",searchByNameOrCode:"Search by name or code",discounts:"Discounts"},invoicingDunningDetail:{emailComposerTitle:"Send dunning email",emailComposerDescription:"Review and edit the message, then confirm the exact branded email before sending.",emailCc:"CC (optional)",emailCcHint:"Separate multiple email addresses with commas.",emailCcInvalid:"Enter valid CC email addresses.",emailBody:"Message",emailRecipientRequired:"Enter a valid recipient email address.",emailSubjectRequired:"Enter an email subject.",emailBodyRequired:"Enter an email message.",emailPreview:"Email preview",emailPreviewUpdating:"Updating preview…",emailPreviewLoading:"Loading the branded email preview…",emailPreviewUnavailable:"Edit the subject or message to generate a new preview.",emailPreviewFrameTitle:"Rendered dunning email preview",daysSuffix:" days",dunningCaseNotFound:"Dunning case not found.",dunningTitlePrefix:"Dunning ",caseDetails:"Case Details",caseId:"Case ID",pausedUntil:"Paused until ",lastAttempt:"Last Attempt",pauseReason:"Pause Reason",timeline:"Timeline",noDunningAttempts:"No dunning attempts recorded yet.",retryAttemptPrefix:"Retry attempt #",failedSuffix:" failed"},invoicingDunningList:{activeCases:"Active Cases",atRiskAmount:"At-Risk Amount",recoveryRate:"Recovery Rate",totalCases:"Total Cases",noDunningCasesMatchSearch:"No dunning cases match your search.",noDunningCasesYet:"No dunning cases yet.",importDunningDescription:"Bring in your historical dunning data by importing your dunning coupon csv file",noDunningYet:"No Dunning Yet",searchByCustomerOrInvoice:"Search by customer or invoice"},invoicingInvoiceDetail:{zip:"ZIP",paidOn:"Paid on",taxRate:"Tax Rate",amountApplied:"Amount Applied",attempt:"Attempt",invoiceNotFound:"Invoice not found.",invoiceDocuments:"Invoice Documents",pdfExtension:".pdf",generatedPrefix:"Generated · ",pdfUnavailable:"PDF is not available yet.",amountBreakdown:"Amount Breakdown",subTotalBeforeCredits:"Subtotal (before credits)",creditsApplied:"Credits Applied",amountAdjusted:"Amount Adjusted",amountPaid:"Amount Paid",excessPayment:"Excess Payment",writeOffAmount:"Write Off Amount",noPaymentsApplied:"No payments applied.",issuedCreditNotes:"Issued Credit Notes",noCreditNotes:"No credit notes.",adjustmentCreditNotes:"Adjustment Credit Notes",voidInvoiceDialogTitle:"Void invoice?",voidInvoiceDialogDescription:"Voiding {invoice_number} cannot be undone. The invoice will no longer be collectible.",voidInvoiceDialogDescriptionGeneric:"Voiding this invoice cannot be undone. The invoice will no longer be collectible.",voidInvoiceCreateAdjustmentCreditNote:"Create adjustment credit note",voidInvoiceAdjustmentCreditNoteHelp:"Offsets the invoice balance with a credit note dated today. Use this for backdated invoices to avoid restating a closed accounting period in QuickBooks.",voidInvoiceConfirm:"Void invoice",nextRetry:"Next retry",noDunningAttempts:"No dunning attempts.",additionalDetails:"Additional Details",note:"Note"},invoicingInvoiceList:{totalInvoicedKpiLabel:"Total Invoiced",noInvoicesMatchSearch:"No invoices match your search.",noInvoicesYet:"No invoices yet.",importInvoicesDescription:"Bring in your historical invoices data by importing your invoice csv file",noInvoicesYetTitle:"No Invoices Yet",searchInvoicesPlaceholder:"Search by invoice no. or customer"},invoicingPaymentLink:{linkInvalidOrExpired:"The link is invalid or has expired.",verifyingSecureLink:"Verifying your secure link…",linkCannotBeOpened:"This link can't be opened",askVendorForNewLink:"Please ask your vendor to send a new payment link.",failedToConnectBankAccount:"Failed to connect bank account.",bankConnectionError:"Bank connection error. Please try again.",failedToStartCardSetup:"Failed to start card setup.",youreAllSet:"You're all set",bankAccount:"Bank account",endingIn:"ending in ••••",hasBeenSaved:"has been saved.",canNowCollectInvoicePayments:"can now collect invoice payments from this method.",addYourPaymentDetails:"Add your payment details",companyFallback:"This company",wouldLikeToCollectPaymentMethod:"would like to collect your payment method so future invoices can be paid automatically.",companyNotFinishedSetup:"This company hasn't finished setting up invoice payments yet. Please try again later or contact them directly.",securedByStripePlaid:"Secured by Stripe & Plaid. This link is unique to you.",cardElementNotReady:"Card element not ready",invoiceUnavailable:"Invoice unavailable",invoiceUnavailableDescription:"We couldn't load the invoice for this payment link. Please ask your vendor for a new link.",invoicePaid:"Payment received",invoicePaidDescription:"Thank you. Payment has been received for invoice",invoiceNoLongerPayable:"This invoice can't be paid",invoiceVoidedDescription:"This invoice has been voided. Please contact your vendor if you have questions.",invoicePayment:"Pay invoice",invoiceFrom:"Invoice from",invoiceNumber:"Invoice number",checkoutCanceled:"Payment was canceled. You have not been charged and can try again.",paymentProcessing:"Your payment is processing. This page will update when it is confirmed.",checkoutStartFailed:"We couldn't open secure checkout. Please try again.",openingSecureCheckout:"Opening secure checkout…",payNow:"Pay now",securedByStripe:"Secure one-time payment powered by Stripe. Your payment method won't be saved.",linkExpired:"This payment link has expired",expiredLinkRefreshing:"Sending a fresh secure link to your email…",expiredLinkEmailSent:"Check your email",expiredLinkEmailSentDescription:"A fresh secure link has been sent to the invoice recipient.",expiredLinkRefreshUnavailable:"Secure payment access is unavailable. Please contact your vendor."},invoicingPaymentList:{totalCollected:"Total Collected",noPaymentsMatchSearch:"No payments match your search.",noPaymentsYet:"No payments yet.",importPaymentsDescription:"Bring in your historical payments data by importing your payment csv file",noPaymentsYetTitle:"No Payments Yet",searchByCustomerOrTransaction:"Search by customer or transaction"},invoicingRecordPayment:{paymentMethodDirectDebit:"Direct Debit",paymentMethodApplePay:"Apple Pay",paymentMethodGooglePay:"Google Pay",paymentMethodAchCredit:"ACH Credit",paymentMethodSepaCredit:"SEPA Credit",gatewayBraintree:"Braintree",gatewayAdyen:"Adyen",gatewayRazorpay:"Razorpay",placeholderSelectInvoice:"Select invoice (optional)",unallocatedPaymentHint:"Leave invoice unselected to record an unallocated payment.",validationAmountExceedsDue:"Payment amount cannot exceed the amount due.",validationSelectCustomer:"Select a customer for this payment.",validationSelectPaymentMethod:"Select a payment method.",validationEnterValidAmount:"Enter a valid payment amount.",placeholderAddCustomer:"Add customer ID or name",placeholderSelectPaymentMethod:"Select payment method",placeholderSelectGateway:"Select gateway",sectionReference:"Reference",placeholderAddTransactionId:"Add transaction ID",placeholderAddReferenceNumber:"Add reference number",labelInvoiceToLink:"Invoice to Link",placeholderAddInvoiceToLink:"Add invoice to link",placeholderCommentInternalNote:"Internal note about this payment"},invoicingIssueCreditNote:{validationSelectLineItem:"Select at least one line item to credit.",validationSelectReason:"Select a reason for this credit note.",validationEnterValidAmount:"Enter a valid credit amount for each selected line.",validationExceedsAmountDue:"Credit total cannot exceed the invoice amount due.",sectionCreditDetails:"Credit Details",sectionLineItems:"Line Items to Credit",labelCreditTotal:"Credit Total",columnInclude:"Include",columnLineTotal:"Line Total",reasonServiceCredit:"Service credit",reasonBillingError:"Billing error",reasonDuplicateCharge:"Duplicate charge",reasonPricingCorrection:"Pricing correction",reasonGoodwill:"Goodwill"},invoicingOnboarding:{promoText:"Get paid faster with Zeni Invoicing.",promoText2:"Create branded invoices, automate recurring billing and dunning, and collect payments — all in one place.",setupPendingText:"Zeni Invoicing set up is pending, please check with your admin.",getStartedButton:"Setup Invoices",termsPrefix:'By clicking "Setup Invoices" you agree to the ',termsAgreement:"Zeni Invoices Agreement",termsSuffix:". ✌🏻",item1:"Professional branded invoices",item2:"Automated recurring billing",item3:"Smart dunning & payment recovery",item4:"Real-time revenue analytics",trustBanner:{title:"Zeni Invoices is trusted by Matic Robotics and 602+ growing companies",subtitle:"Create professional invoices, automate reminders, and reduce overdue payments with intelligent collections powered by Zeni AI."},footer:{title:"Finish setting up Invoicing",subtitle:"Review your settings, then click Enable Invoicing to start using Zeni Invoicing.",enableInvoicingButton:"Enable Invoicing",pendingPrefix:"Still to do:",pendingQbo:"Configure QuickBooks"}},invoicingSettings:{paymentTermsPlaceholder:"30",paymentDestinationSectionSubtitle:"Connect a Stripe account to collect invoice payments and receive payouts.",invoiceBrandingSectionSubtitle:"Configure company details, logo, and how invoices appear to customers.",firstRetryEmailBody:"Hi {{customer_name}},\n\nWe were unable to process your payment of {{amount}} for {{subscription_name}}. We'll retry your payment shortly.\n\nPlease ensure your payment method is up to date.",firstRetryTemplateName:"First Retry",firstRetryEmailSubject:"Action required: Payment failed for your subscription",secondRetryEmailBody:"Hi {{customer_name}},\n\nThis is a reminder that your payment of {{amount}} is still outstanding. We've attempted to charge your card multiple times without success.\n\nPlease update your payment details to avoid service interruption.",secondRetryTemplateName:"Second Retry",secondRetryEmailSubject:"Reminder: Please update your payment method",finalNoticeEmailBody:"Hi {{customer_name}},\n\nDespite multiple attempts, we have been unable to collect your payment of {{amount}}. Your account will be suspended if payment is not received within 7 days.\n\nPlease take immediate action to update your billing information.",finalNoticeTemplateName:"Final Notice",finalNoticeEmailSubject:"Final notice: Your account is at risk of suspension",accountSuspensionEmailBody:"Hi {{customer_name}},\n\nYour account has been suspended due to non-payment of {{amount}}. All services have been paused.\n\nTo reactivate your account, please settle the outstanding balance. Contact support if you need assistance.",accountSuspensionTemplateName:"Account Suspension",accountSuspensionEmailSubject:"Your account has been suspended due to non-payment",onOptionLabel:"On",previewLineItemProfessionalServices:"Professional services — March",previewLineItemOnboardingSetup:"Onboarding & setup",logoInvalidImageTypeError:"Please choose a PNG, JPG, SVG, or WEBP image.",logoTooLargeError:"Logo must be 2 MB or smaller.",connectStripeDialogTitle:"Connect your Stripe account",connectStripeDialogDescription:"Paste the API keys from your Stripe account to start collecting payments. We use your secret key server-side and your publishable key for in-browser card capture.",secretKeyLabel:"Secret key",secretKeyPlaceholder:"sk_live_… or rk_live_…",publishableKeyLabel:"Publishable key",publishableKeyPlaceholder:"pk_live_…",webhookSigningSecretLabel:"Webhook signing secret",webhookSecretPlaceholder:"whsec_…",stripeWebhookUrlLabel:"Webhook endpoint",stripeWebhookSetupDescription:"In your Stripe Dashboard, create a webhook event destination with these settings:",stripeWebhookAccountInstruction:"Event source: Your account",stripeWebhookPayloadInstruction:"Payload style: Snapshot",stripeWebhookEventsInstruction:"Events: All events",stripeWebhookUrlInstruction:"Paste the webhook endpoint shown below.",stripeWebhookSecretInstruction:"Create the destination, reveal its signing secret, and paste the whsec_… value into the Webhook signing secret field below.",quickbooksIntegrationDescription:"Read and write ledger of record. Invoices, expenses, GL, chart of accounts, journal entries.",stripeIntegrationDescription:"Payment processing — charges, refunds, payouts, disputes, MRR.",chargebeeIntegrationDescription:"Subscription analytics — MRR, ARR, churn, active subscriptions.",stripeConnectedHeading:"Stripe Connected",yourStripeAccountFallback:"Your Stripe account",stripeAccountCardTitle:"Stripe account",stripeAccountIdLabel:"Account ID",payoutBankLabel:"Payout bank account",defaultCurrencyLabel:"Default currency",payoutsEnabledLabel:"Payouts enabled",payoutsDisabledLabel:"Payouts disabled",stripePayoutNote:"Payouts are deposited to the bank account configured in your Stripe payout settings.",manageStripePayoutsLinkLabel:"Manage payouts in Stripe",disconnectingButtonLabel:"Disconnecting…",disconnectStripeButtonLabel:"Disconnect Stripe account",noPaymentDestinationHeading:"No payment destination connected",noPaymentDestinationHelper:"Connect a Stripe account to start collecting payments. Your payout account is where invoice payments will be deposited.",connectingButtonLabel:"Connecting…",connectStripeButtonLabel:"Connect Stripe Account",livePreviewLabel:"Live preview",defaultInvoicePrefix:"INV",previewInvoiceNumberSuffix:"-0001",companyNameLabel:"Company name",billingEmailLabel:"Billing email",taxIdEinLabel:"Tax ID / EIN",timezoneLabel:"Timezone",timezonePlaceholder:"America/Los_Angeles",businessAddressLabel:"Business address",brandingTitle:"Branding",uploadLogoLabel:"Upload logo",logoPreviewAlt:"Logo preview",currentLogoText:"Current logo",removeLogoAriaLabel:"Remove logo",logoFormatsHint:"PNG, JPG, SVG or WEBP · max 2 MB",pasteLogoUrlLabel:"Or paste your logo URL",logoUrlPlaceholder:"https://…/logo.png",accentColorLabel:"Accent color",othersTitle:"Others",invoicePrefixLabel:"Invoice prefix",dateFormatLabel:"Date format",netTermDaysLabel:"Net term days",paymentTermsLabel:"Payment terms",defaultMemoLabel:"Default memo",invoiceFooterTextHint:"Leave blank to hide the footer line.",invoiceFooterTextLabel:"Invoice footer text",showTaxIdOnInvoices:"Show tax ID on invoices",showServicePeriods:"Show service periods",dunningScheduleTitle:"Dunning Schedule",dunningScheduleSubtitle:"Configure the sequence of actions taken when a payment fails",stepColumnHeader:"Step #",stepColumnHelp:"The order in which each dunning reminder runs.",daysAfterDueColumnHeader:"Days After Due",daysAfterDueColumnHelp:"Days after the invoice due date before this step runs.",actionColumnHelp:"What happens at this step (e.g. email the customer).",emailTemplateColumnHeader:"Email Template",generalDunningSettingsTitle:"General Dunning Settings",autoCollectionLabel:"Auto collection",maxRetryAttemptsLabel:"Max retry attempts",retryIntervalDaysLabel:"Retry interval (days)",saveDunningSettingsButtonLabel:"Save Dunning Settings",emailTemplatesTitle:"Email Templates",emailTemplatesSubtitle:"Customize the emails sent at each dunning step",escalationCapsuleLabel:"Escalation",subjectLineLabel:"Subject line",bodyLabel:"Body",qboSettingsPageTitle:"QBO Configuration",qboEnableSyncLabel:"Enable QuickBooks sync",qboEnableSyncDescription:"Sync invoices, payments, credit notes, and customers to QuickBooks Online.",qboAccountMappingsSectionTitle:"Account Mappings",qboAccountMappingsSectionDescription:"Choose which QuickBooks accounts each invoicing amount posts to.",qboCustomerMatchingSectionTitle:"Customer Matching",qboCustomerMatchingSectionDescription:"Customers are matched to existing QuickBooks records by email first, then by company name. Customers imported with a QuickBooks ID keep their existing link.",qboCustomerMatchingLabel:"When a customer syncs",qboBehaviorSectionTitle:"Sync Behavior",qboAutoCreateItemsLabel:"Auto-create items",qboAutoCreateItemsDescription:"Create missing QuickBooks items automatically when invoices sync.",qboTrackingCategoriesLabel:"Tracking categories",qboTrackingCategoriesDescription:"Tag synced transactions with QuickBooks classes.",qboClosedPeriodVoidLabel:"Closed-period voids as credit memos",qboClosedPeriodVoidDescription:"Record voids that fall in a closed accounting period as credit memos instead.",qboBackfillSectionTitle:"History Backfill",qboSyncStartDateLabel:"Sync start date",qboBackfillButtonLabel:"Backfill history",qboBackfillingButtonLabel:"Backfilling…",qboBackfillHint:"Re-queue invoicing records created on or after the sync start date.",qboBackfillRequiresSyncHint:"Enable and save QuickBooks sync to run a backfill.",qboSyncHealthSectionTitle:"Sync Health",qboSyncHealthEmptyLabel:"No sync activity yet.",qboFailedTasksTitle:"Failed syncs",qboFailedTaskAttemptsLabel:"{attempts} attempts",qboSaveButtonLabel:"Save QuickBooks Settings"},invoicingSubscriptionDetail:{changeTermEndTitle:"Change term end",changeTermEndDateLabel:"New term end date",pauseSubscriptionDateLabel:"Resume date",pauseSubscriptionHint:"Leave blank to pause without a resume date.",cancelSubscriptionMessage:"Cancel this subscription immediately? Use “Set non-renewing” to cancel at end of term instead.",cancelCommentPlaceholder:"Add any extra context (optional)",everyUnit:"Every ${unit}",everyPeriodUnits:"Every ${period} ${unit}s",charge:"Charge",viewInvoices:"View Invoices",reactivate:"Reactivate",cadenceCurrencySubtitle:'${billingCadence(subscription)} · ${currency ?? "USD"}',billingCycle:"Billing Cycle",unitPrice:"Unit Price",couponNumber:"Coupon #",appliedUsed:"Applied/Used",subscriptionNotFound:"Subscription not found.",cancellation:"Cancellation",cancelledOn:"Cancelled on",trialStart:"Trial start",trialEnd:"Trial end",daysRemaining:"Days remaining",planItemPrice:"Plan Item Price",currentTerm:"Current term",nextBilling:"Next billing",billingPeriod:"Billing period",dueInvoices:"Due invoices",totalDues:"Total dues",remainingCycles:"Remaining cycles",scheduledChanges:"Scheduled changes",setupFeeOneTime:"Setup fee (one-time)",startedDate:"Started Date",activationDate:"Activation Date",updatedDate:"Updated Date",dueSince:"Due Since",autoCollectionCount:"Auto Collection Count",subscriptionItems:"Subscription Items",noSubscriptionItems:"No subscription items.",noAddOns:"No add-ons.",coupons:"Coupons",noCoupons:"No coupons.",contractTerm:"Contract Term",contractId:"Contract ID",active:"active",contractPeriod:"Contract Period",actionAtTermEnd:"Action at term end",renew:"renew",cancelBeforeNoticePeriod:"Cancel before notice period",totalContractValue:"Total contract value"},invoicingSubscriptionForm:{billingFrequencyHalfYearly:"Half-Yearly",selectCustomerValidation:"Select a customer for this subscription.",selectPlanValidation:"Select a plan for this subscription.",editSubscriptionTitle:"Edit Subscription",subscriptionDetailsDescription:"Add details to create a new subscription.",planQuantityLabel:"Quantity",billingCyclesPlaceholder:"Renews forever",billingCyclesHint:"Paid invoices including the first one. Leave blank to renew forever.",startDateAfterTrialEndValidation:"Trial end date must be later than the start date.",addonsDescription:"Recurring add-ons billed on the same cycle.",noAddonsAvailable:"No add-ons available",selectAddonsPlaceholder:"Select add-ons",oneTimeChargesDescription:"Billed once on the first invoice.",oneTimeChargesTitle:"One Time Charges",noChargesAvailable:"No charges available",selectOneTimeChargesPlaceholder:"Select one time charges",referencesSchedulesDescription:"Trial, PO and coupon details.",referencesSchedulesTitle:"References & Schedules",setupFeeLabel:"Setup Fee",trialEndDateLabel:"Trial End Date",noCouponPlaceholder:"No coupon",shippingAddressDescription:"Optional address for shippable plans.",shipCountryLabel:"Country (ISO)",shipZipLabel:"ZIP / Postal"},invoicingSubscriptionList:{perPrefix:"Per ",everyPrefix:"Every ",noSubscriptionsMatchSearch:"No subscriptions match your search.",noSubscriptionsYet:"No subscriptions yet.",emptyStateDescription:"Bring in your historical subscription data by importing your subscriptions csv file",emptyStateTitle:"No Subscriptions Yet",searchPlaceholder:"Search by customer or plan"},invoicingTransactionDetail:{capture:"Capture",viewInvoice:"View Invoice",viewSubscription:"View Subscription",viewCustomer:"View Customer",unusedAmount:"Unused Amount",capturableAmount:"Capturable Amount",applied:"Applied",transactionNotFound:"Transaction not found.",transactionTitlePrefix:"Transaction ",transactionDetails:"Transaction Details",settledAt:"Settled At",refundedTransaction:"Refunded Transaction",customerAndSubscription:"Customer & Subscription",paymentMethodAndGateway:"Payment Method & Gateway",paymentSourceId:"Payment Source ID",gatewayAccount:"Gateway Account",idAtGateway:"ID at Gateway",security:"Security",threeDSecure:"3-D Secure",fraudFlag:"Fraud Flag",none:"None",fraudReason:"Fraud Reason",errorDetails:"Error Details",errorCode:"Error Code",errorMessage:"Error Message",linkedInvoices:"Linked Invoices",noLinkedInvoices:"No linked invoices.",linkedCreditNotes:"Linked Credit Notes",noLinkedCreditNotes:"No linked credit notes.",noRefunds:"No refunds."}},ALL_SUPPORTED_LOCALES=["en-US","en-IN","en"],toSupportedLocaleStrict=e=>stringToUnionStrict(e,ALL_SUPPORTED_LOCALES),localizedStringsMap={en:zeniStrings,"en-US":zeniStrings,"en-IN":zeniStrings};class AppLocale{getAppLocaleID(){return this.#e}getLocalizedStrings(){return localizedStringsMap[this.#e]}updateAppLocaleID(e){if(null==localizedStringsMap[e])throw Error(`strings are not available in ${e}`);updateZeniDateLocaleID(e),this.updateLibsLocale(e),this.#e=e,console.log(`Set the locale to ${this.#e}`)}currencyFormatter(e=0,t="standard"){switch(this.getAppLocaleID()){case"en-IN":return Intl.NumberFormat(this.getAppLocaleID(),{maximumFractionDigits:e,minimumFractionDigits:0,style:"currency",currency:"INR",currencySign:t});case"en-US":case"en":return Intl.NumberFormat("en-US",{maximumFractionDigits:e,minimumFractionDigits:0,style:"currency",currency:"USD",currencySign:t})}}numberFormatter(e=0){switch(this.getAppLocaleID()){case"en-IN":return Intl.NumberFormat(this.getAppLocaleID(),{maximumFractionDigits:e,minimumFractionDigits:0});case"en-US":case"en":return Intl.NumberFormat("en-US",{maximumFractionDigits:e,minimumFractionDigits:0})}}updateLibsLocale(e){numeral.locale(e.toLowerCase())}static registerNumeralForEnINLocale(){null==numeral.locales["en-in"]&&numeral.register("locale","en-in",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){const t=e%10;return 1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"₹"}})}static registerNumeralForEnUSLocale(){null==numeral.locales["en-us"]&&numeral.register("locale","en-us",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){const t=e%10;return 1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}})}#e="en";static#t=new AppLocale;static instance(){return this.registerNumeralForEnINLocale(),this.registerNumeralForEnUSLocale(),this.#t}}const appLocale=AppLocale.instance(),getWindowSize=e=>e<600?"small":e>=600&&e<905?"medium-compact":e>=905&&e<1240?"medium-regular":e>=1240&&e<1440?"large":e>=1440&&e<1920?"extra-large":e>=1920?"ultra-large":(console.warn("this can't happen!"),"medium-regular"),WindowSizeContext=React__default.createContext(getWindowSize(window.innerWidth)),useWindowSizeContext=()=>useContext(WindowSizeContext),WindowSizeProvider=e=>{const[t,n]=useState(e.fixedWindowSize??getWindowSize(window.innerWidth));return useEffect(()=>{const o=()=>{const o=getWindowSize(window.innerWidth);null==e.fixedWindowSize&&null!=t&&t!=o&&n(o)};return window.addEventListener("resize",o),()=>{window.removeEventListener("resize",o)}},[e.fixedWindowSize,t]),/* @__PURE__ */jsxRuntimeExports.jsx(WindowSizeContext.Provider,{value:t,children:e.children})},makeResponseSize=(e,t,n,o,i,r)=>({small:e,"medium-compact":t,"medium-regular":n??t,large:o??n??t,"extra-large":i??o??n??t,"ultra-large":r??i??o??n??t});class ResponsiveSized{constructor(e,t,n,o,i,r){this._size=makeResponseSize(e,t,n,o,i,r)}value(e="medium-regular"){switch(e){case"small":return this._size.small;case"medium-compact":return this._size["medium-compact"];case"medium-regular":return this._size["medium-regular"];case"large":return this._size.large;case"extra-large":return this._size["extra-large"];case"ultra-large":return this._size["ultra-large"]}}valuePx(e="medium-regular"){return`${this.value(e)}px`}valuePercentage(e="medium-regular"){return`${this.value(e)}%`}add(e){return new ResponsiveSized(this._size.small+e._size.small,this._size["medium-compact"]+e._size["medium-compact"],this._size["medium-regular"]+e._size["medium-regular"],this._size.large+e._size.large,this._size["extra-large"]+e._size["extra-large"],this._size["ultra-large"]+e._size["ultra-large"])}subtract(e){return new ResponsiveSized(this._size.small-e._size.small,this._size["medium-compact"]-e._size["medium-compact"],this._size["medium-regular"]-e._size["medium-regular"],this._size.large-e._size.large,this._size["extra-large"]-e._size["extra-large"],this._size["ultra-large"]-e._size["ultra-large"])}_size}const isMobileOrTabletView=e=>"small"===e||"medium-compact"===e,isMobilePhoneScreen=e=>"small"===e;var Colors=/* @__PURE__ */(e=>(e.brandColorOnyx="#162324",e.brandColorPearl="#FAFAFA",e.brandColorSapphire="#366170",e.brandColorSapphireDark="#26454F",e.brandColorSapphireLight="#D2E3E9",e.brandColorJade="#97C3B9",e.brandColorJadeDark="#508B7E",e.brandColorJadeLight="#D5E7E3",e.brandColorOpal="#C9ABC7",e.brandColorOpalDark="#855682",e.brandColorOpalLight="#E5D7E4",e.brandColorGold="#EEBA7D",e.brandColorGoldDark="#C27419",e.brandColorGoldLight="#F7E0C4",e.brandColorRuby="#AD584A",e.brandColorRubyDark="#9A4E42",e.brandColorRubyLight="#EBD4D1",e.primaryDark="#FAFAFA",e.primaryLight="#162324",e.backgroundThemeLight="#F3F7F7",e.backgroundThemeDark="#1B1C1C",e.championLight="#4B5253",e.championDark="#D4DBDB",e.heroLight="#757D7E",e.heroDark="#AAB4B5",e.neutralGrey1Light="#A6B0B1",e.neutralGrey1Dark="#727979",e.neutralGrey2Light="#D4DCDD",e.neutralGrey2Dark="#545B5C",e.neutralGrey3Light="#E9F0F0",e.neutralGrey3Dark="#3E4343",e.neutralGrey4Light="#FAFCFC",e.neutralGrey4Dark="#202222",e.neutralGrey5Light="#FFFFFF",e.neutralGrey5Dark="#2C2F2F",e.topExCustomColor="#90EE7D40",e.offerColor="#EF7F56",e.comingSoon="#5EBBF5",e.badgeBackground="#E9F0F033",e.dropShadowNormalLight="rgba(166, 177, 174, 0.24)",e.dropShadowNormalDark="rgba(0, 0, 0, 0.24)",e.dropShadowHoverLight="rgba(166, 177, 174, 0.8)",e.blackColor="#000000",e.billPayPromoColor="#8D6C9F",e.billPayPromoColorHover="rgba(238, 186, 125, 0.4)",e.billPayPromoBorderColorLight="#FBD1A0",e.billPayPromoBorderColorDark="#714B1E",e.billPayPromoBackGroundColorLight="#FFFBF5",e.reimbursementPromoColor="#5DB59A",e.reimbursementPromoColorHover="rgba(93, 181, 154, 0.4)",e.reimbursementPromoBorderColorLight="#CCE8DF",e.reimbursementPromoBorderColorDark="#545D5B",e.reimbursementPromoBackGroundColorLight="#EDFFF8",e.primaryWhite="#FEFEFE",e.rewardsPromoColor1="#397C93",e.rewardsPromoColor2="#065773",e.zeniAccountsPromoBackgroundColor="#D0E7E2",e.zeniAccountsPromoBackgroundColorLight="#D0E7E250",e.zeniAccountsPromoBackgroundColorDark="#3E434350",e.zeniAccountsPromoNavigationDotHoverColorLight="#36617032",e.zeniAccountsPromoNavigationDotHoverColorDark="#97C3B932",e.zeniAccountsPromoCardTitleLight="#4B4F53",e.chargeCardsGradientColor1="#ECECEC",e.chargeCardsGradientColor2="#626565",e.chargeCardsGradientColor3="#A8B1B1",e.chargeCardsGradientColor4="#444A4A",e.chargeCardBoxShadow1="rgba(132, 134, 137, 0.80)",e.chargeCardBoxShadow2="rgba(0, 0, 0, 0.35)",e.chargeCardBackgroundShadowLight="rgba(166,172,177,0.7)",e.chargeCardBackgroundShadowDark="rgba(0,0,0,0.8)",e.issueChargeCardBackgroundShadowLight="rgba(166,172,177,0.25)",e.issueChargeCardBackgroundShadowDark="rgba(0,0,0,0.25)",e.physicalCardBoxShadow="#68AAA0",e.chargeCardFaded="rgba(166, 176, 177, 0.65)",e.phoneSignalColor="#3C3C432E",e.batteryBorderColor="#3c3c4399",e.physicalCardBlueColor1="#eaeff8",e.physicalCardBlueColor2="#bdd4ee",e.physicalCardYellowColor1="#ffe9c6",e.physicalCardYellowColor2="#fff8ec",e.plaidVerificationBackground="rgb(213, 231, 227, 0.5)",e.tagDefaultBgLight="#ECEFF3",e.tagDefaultColorLight="#667085",e.tagDefaultBgDark="#1C2128",e.tagDefaultColorDark="#8C97A4",e.tagWarningBgLight="#FFF4E5",e.tagWarningColorLight="#C08A2E",e.tagWarningBgDark="#2A2416",e.tagWarningColorDark="#E6C27A",e.tagInfoBgLight="#E0EDFF",e.tagInfoColorLight="#1D62C0",e.tagInfoBgDark="#0E1E35",e.tagInfoColorDark="#7EB3F5",e.tagSuccessBgLight="#E8F5EE",e.tagSuccessColorLight="#3A8F5B",e.tagSuccessBgDark="#11241B",e.tagSuccessColorDark="#7FD9A6",e.tagAttentionBgLight="#FDEFF2",e.tagAttentionColorLight="#C23A57",e.tagAttentionBgDark="#2A1419",e.tagAttentionColorDark="#F29BB0",e.success="#36B37E",e.successDark="#1B806A",e.successLight="#D8FBDE",e.alert="#F0BC02",e.alertDark="#AC7F01",e.alertLight="#FEF7CB",e.important="#EB535D",e.importantDark="#A92949",e.importantLight="#FEE6DD",e.info="#1192E8",e.infoDark="#0855A7",e.infoLight="#CEF6FD",e.link="#4589FF",e.linkLight="#D9ECFF",e.linkDark="#224EB7",e.linkLighter="#D9ECFFAF",e.graphColor01="#EE7D7D",e.graphColor01Light="#F8C9C9",e.graphColor01Dark="#D81C1C",e.graphColor02="#EE7D90",e.graphColor02Light="#F8C9D1",e.graphColor02Dark="#D81C3C",e.graphColor03="#EE7DA3",e.graphColor03Light="#F8C9D9",e.graphColor03Dark="#D81C5B",e.graphColor04="#EE7DB5",e.graphColor04Light="#F8C9E0",e.graphColor04Dark="#D81C7A",e.graphColor05="#EE7DC8",e.graphColor05Light="#F8C9E8",e.graphColor05Dark="#D81C9A",e.graphColor06="#EE7DDB",e.graphColor06Light="#F8C9F0",e.graphColor06Dark="#D81CB9",e.graphColor07="#EE7DEE",e.graphColor07Light="#F8C9F8",e.graphColor07Dark="#D81CD8",e.graphColor08="#DB7DEE",e.graphColor08Light="#F0C9F8",e.graphColor08Dark="#B91CD8",e.graphColor09="#C87DEE",e.graphColor09Light="#E8C9F8",e.graphColor09Dark="#9A1CD8",e.graphColor10="#B67DEE",e.graphColor10Light="#E0C9F8",e.graphColor10Dark="#7A1CD8",e.graphColor11="#A37DEE",e.graphColor11Light="#D9C9F8",e.graphColor11Dark="#5B1CD8",e.graphColor12="#907DEE",e.graphColor12Light="#D1C9F8",e.graphColor12Dark="#3C1CD8",e.graphColor13="#7D7DEE",e.graphColor13Light="#C9C9F8",e.graphColor13Dark="#1C1CD8",e.graphColor14="#7D90EE",e.graphColor14Light="#C9D1F8",e.graphColor14Dark="#1C3CD8",e.graphColor15="#7DA3EE",e.graphColor15Light="#C9D9F8",e.graphColor15Dark="#1C5BD8",e.graphColor16="#7DB6EE",e.graphColor16Light="#C9E0F8",e.graphColor16Dark="#1C7AD8",e.graphColor17="#7DC8EE",e.graphColor17Light="#C9E8F8",e.graphColor17Dark="#1C9AD8",e.graphColor18="#7DDBEE",e.graphColor18Light="#C9F0F8",e.graphColor18Dark="#1CB9D8",e.graphColor19="#7DEEEE",e.graphColor19Light="#C9F8F8",e.graphColor19Dark="#1CD8D8",e.graphColor20="#7DEEDB",e.graphColor20Light="#C9F8F0",e.graphColor20Dark="#1CD8B9",e.graphColor21="#7DEEC8",e.graphColor21Light="#C9F8E8",e.graphColor21Dark="#1CD89A",e.graphColor22="#7DEEB5",e.graphColor22Light="#C9F8E0",e.graphColor22Dark="#1CD87A",e.graphColor23="#7DEEA3",e.graphColor23Light="#C9F8D9",e.graphColor23Dark="#1CD85B",e.graphColor24="#7DEE90",e.graphColor24Light="#C9F8D1",e.graphColor24Dark="#1CD83C",e.graphColor25="#7DEE7D",e.graphColor25Light="#C9F8C9",e.graphColor25Dark="#1CD81C",e.graphColor26="#90EE7D",e.graphColor26Light="#D1F8C9",e.graphColor26Dark="#3CD81C",e.graphColor27="#A3EE7D",e.graphColor27Light="#D9F8C9",e.graphColor27Dark="#5BD81C",e.graphColor28="#B5EE7D",e.graphColor28Light="#E0F8C9",e.graphColor28Dark="#7AD81C",e.graphColor29="#C8EE7D",e.graphColor29Light="#E8F8C9",e.graphColor29Dark="#9AD81C",e.graphColor30="#DBEE7D",e.graphColor30Light="#F0F8C9",e.graphColor30Dark="#B9D81C",e.graphColor31="#EEEE7D",e.graphColor31Light="#F8F8C9",e.graphColor31Dark="#D8D81C",e.graphColor32="#EEDB7D",e.graphColor32Light="#F8F0C9",e.graphColor32Dark="#D8B91C",e.graphColor33="#EEC87D",e.graphColor33Light="#F8E8C9",e.graphColor33Dark="#D89A1C",e.graphColor34="#EEB57D",e.graphColor34Light="#F8E0C9",e.graphColor34Dark="#D87A1C",e.graphColor35="#EEA37D",e.graphColor35Light="#F8D9C9",e.graphColor35Dark="#D85B1C",e.graphColor36="#EE907D",e.graphColor36Light="#F8D1C9",e.graphColor36Dark="#D83C1C",e.overlayLight="rgba(0, 0, 0, 0.40)",e.overlayDark="rgba(0, 0, 0, 0.75)",e.overlayBackgroundBlack="rgba(0, 0, 0, 0.50)",e.playButtonBackGroundColorLight="#16232466",e.playButtonBackGroundColorDark="#16232466",e.backgroundGradient1Light="rgba(54, 97, 112, 0.20)",e.backgroundGradient1Dark="rgba(151, 195, 185, 0.20)",e.backgroundGradient2Light="rgba(255, 255, 255, 0.20)",e.backgroundGradient2Dark="rgba(0, 0, 0, 0.20)",e.backgroundGradient3Light="rgba(212, 220, 221, 1)",e.boxShadowElevation="rgba(166, 172, 177, 0.24)",e.Elevation1Light="0px 1px 2px 0px rgba(166, 172, 177, 0.25)",e.Elevation2Light="0px 2px 8px 0px rgba(166, 172, 177, 0.8)",e.Elevation3Light="1px 3px 24px 0px rgba(166, 172, 177, 0.8)",e.Elevation1Dark="0px 1px 2px 0px rgba(0, 0, 0, 0.25)",e.Elevation2Dark="0px 2px 8px 0px rgba(0, 0, 0, 0.8)",e.Elevation3Dark="1px 3px 24px 0px rgba(0, 0, 0, 0.8)",e.scrollbarBoxShadow="rgba(0, 0, 0, 0.1)",e.drawerBackground="rgba(0, 0, 0, 0.7)",e.modalBackground="rgba(0, 0, 0, 0.64)",e.whiteGradient="rgba(255, 255, 255, 0)",e.whiteGradientDark="rgba(255, 255, 255, 0.1)",e.whiteGradientLight="rgba(255, 255, 255, 0.9)",e.runwayRed="#eb535d",e.runwayYellow="#e8aa0b",e.runwayGreen="#51c571",e.optionBorderLight="#E9ECF0",e.selectMenuItem="#1d1f20",e.aiCfoGradient1="#6D3FD8",e.aiCfoGradient2="#BD54CF",e.aiCfoGradient3="#CF6CC9",e.aiCfoGradient4="#EE609C",e.aiVibrantPurple="#7135FF",e.aiCfoLinearGradient="linear-gradient(315deg, #6D3FD8 34.09%, #BD54CF 43.64%, #CF6CC9 50%, #EE609C 56.36%, #EE609C 65.91%)",e.aiCalloutBorderGradient="linear-gradient(315deg, #6D3FD8 31.79%, #BD54CF 42.72%, #CF6CC9 50%, #EE609C 57.28%, #EE609C 68.21%)",e.aiShimmerTextGradient="linear-gradient(90deg, #EE609C 25%, #6D3FD8 50%, #EE609C 75%)",e.aiChainOfThoughtLinearGradient="linear-gradient(322.09deg, #6D3FD8 7.71%, #BD54CF 30.79%, #CF6CC9 54.3%, #EE609C 78.68%, #EE609C 98.27%);",e.aiChainOfThoughtBackgroundGradient="linear-gradient(296.16deg, #6D3FD8b3 20.44%, #BD54CFb3 40.68%, #CF6CC9b3 54.18%, #EE609Cb3 67.68%, #EE609Cb3 87.92%)",e.aiCfoScrollAreaFadeGradientLight="linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #FFFFFF 100%)",e.aiCfoScrollAreaFadeGradientDark="linear-gradient(180deg, rgba(0,0,0, 0) 0%, #2C2F2F 100%)",e.receiptAgentLinearGradient="linear-gradient(315deg, #6D3FD8 31.79%, #BD54CF 42.72%, #CF6CC9 50%, #EE609C 57.28%,#EE609C 68.21%)",e.aiParsingBorderConicGradient="conic-gradient(\n from var(--ai-conic-from) at 50% 50%,\n #EE609C 0deg,\n #CF6CC9 45deg,\n #7135FF 90deg,\n #CF6CC9 135deg,\n #EE609C 180deg,\n #CF6CC9 225deg,\n #7135FF 270deg,\n #CF6CC9 315deg,\n #EE609C 360deg\n )",e.aiCapsuleSurfaceLight="linear-gradient(90deg, rgba(255, 255, 255, 0.88) 0%, rgba(255, 255, 255, 0.88) 100%), linear-gradient(315deg, #6D3FD8 31.79%, #BD54CF 42.72%, #CF6CC9 50%, #EE609C 57.28%,#EE609C 68.21%)",e.aiCapsuleBorderLight="#D6C9F4",e.aiTooltipBorderGradient="linear-gradient(180deg, #EE609C 0%, #EB61A0 14%, #EE609C 27%, #CF6CC9 45%, #B85ED7 64%, #A050E4 73%, #7135FF 100%)",e.gradientMask="linear-gradient(#FFFFFF 0 0) content-box, linear-gradient(#FFFFFF 0 0)",e.promoCardGradient1="linear-gradient(\n 261.58deg,\n rgba(255, 255, 255, 0) 2.24%,\n rgba(255, 255, 255, 0.2) 49.28%,\n rgba(255, 255, 255, 0) 94.54%\n )",e.promoCardGradient2="linear-gradient(\n 257.68deg,\n rgba(255, 255, 255, 0) 24.71%,\n rgba(255, 255, 255, 0.3) 44.88%,\n rgba(255, 255, 255, 0) 64.29%\n )",e.promoCardGradient1Strong="linear-gradient(\n 261.58deg,\n rgba(255, 255, 255, 0) 2.24%,\n rgba(255, 255, 255, 0.4) 49.28%,\n rgba(255, 255, 255, 0) 94.54%\n )",e.promoCardGradient2Strong="linear-gradient(\n 257.68deg,\n rgba(255, 255, 255, 0) 24.71%,\n rgba(255, 255, 255, 0.6) 44.88%,\n rgba(255, 255, 255, 0) 64.29%\n )",e.taskInProgressbackgroundLight="rgba(233, 240, 240, 0.5)",e.taskInReviewLabelColor="#0A6FDB",e.taskInReviewbackgroundColor="#E6FAFE",e.taskInHoldLabelColor="#CD3259",e))(Colors||{}),BoxShadow=/* @__PURE__ */(e=>(e.dropdownMenu="0 4px 16px rgba(0, 0, 0, 0.12)",e))(BoxShadow||{});const sp=[0,4,8,16,24,32,40,48,56,64,72,80,100];var Space=/* @__PURE__ */(e=>(e.sp0="0px",e.sp1="4px",e.sp2="8px",e.sp3="16px",e.sp4="24px",e.sp5="32px",e.sp6="40px",e.sp7="48px",e.sp8="56px",e.sp9="64px",e.sp10="72px",e.sp11="80px",e.sp12="100px",e))(Space||{}),BorderStroke=/* @__PURE__ */(e=>(e.hairline="1px",e.regular="2px",e))(BorderStroke||{});const OriginalFont="Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif",fonts={Original:OriginalFont,Roboto:"Roboto",Manrope:"Manrope","PT Mono":"PT Mono"},customFontSizes={chargeCard:17.8},customCountCapsulePadding={padding:"0px 5.5px"};var FontWeight=/* @__PURE__ */(e=>(e[e.thin=100]="thin",e[e.extraLight=200]="extraLight",e[e.light=300]="light",e[e.regular=400]="regular",e[e.medium=500]="medium",e[e.semiBold=600]="semiBold",e[e.bold=700]="bold",e[e.extraBold=800]="extraBold",e[e.superBold=900]="superBold",e))(FontWeight||{}),FontStyle=/* @__PURE__ */(e=>(e.normal="normal",e.italic="italic",e))(FontStyle||{});const textTransform={uppercase:"uppercase",none:""};class TextStyle{_fontSize;_fontWeight;_lineHeight;_letterSpacing;_fontFamily;_textTransform;constructor(e,t,n,o="normal",i="Original",r="none"){this._fontSize=e,this._fontWeight=t,this._lineHeight=n,this._letterSpacing=o,this._fontFamily=i,this._textTransform=r}get fontFamily(){return fonts[this._fontFamily]}get fontSize(){return`${this._fontSize}px`}get fontSizeValue(){return this._fontSize}get fontWeight(){return this._fontWeight}get lineHeight(){return"auto"===this._lineHeight?"auto":`${this._lineHeight}px`}get lineHeightValue(){return"auto"===this._lineHeight?1.5*this._fontSize:this._lineHeight}get letterSpacing(){return"number"==typeof this._letterSpacing?`${this._letterSpacing}px`:this._letterSpacing}get textTransform(){return"none"===this._textTransform?"":textTransform[this._textTransform]}get css(){let e="";return"none"!==this._textTransform&&(e+=`text-transform: ${textTransform[this._textTransform]};`),`\n font-family: ${fonts[this._fontFamily]};\n font-size: ${this._fontSize}px;\n font-weight: ${this._fontWeight};\n line-height: ${"auto"===this._lineHeight?"auto":`${this._lineHeight}px`};\n letter-spacing: ${"number"==typeof this._letterSpacing?`${this._letterSpacing}px`:this._letterSpacing};\n ${e}\n `}get cssObject(){const e={fontFamily:fonts[this._fontFamily],fontSize:`${this._fontSize}px`,fontWeight:this._fontWeight,lineHeight:"auto"===this._lineHeight?"auto":`${this._lineHeight}px`,letterSpacing:"number"==typeof this._letterSpacing?`${this._letterSpacing}px`:this._letterSpacing};return"none"!==this._textTransform&&(e.textTransform=textTransform[this._textTransform]),e}get cssPartialObject(){const e=this.cssObject;return t=>{const n={};return t.forEach(t=>{n[t]=e[t]}),n}}}const eyebrowSuperSmall={eyebrowSuperSmallMedium:new TextStyle(8,500,12,.32,"Manrope","uppercase")},eyebrowExtraSmall={eyebrowExtraSmallMedium:new TextStyle(10,500,15,.4,"Manrope","uppercase")},eyebrowSmall={eyebrowSmallExtraLight:new TextStyle(12,200,18,.48,"Manrope","uppercase"),eyebrowSmallLight:new TextStyle(12,300,18,.48,"Manrope","uppercase"),eyebrowSmallRegular:new TextStyle(12,400,18,.48,"Manrope","uppercase"),eyebrowSmallMedium:new TextStyle(12,500,18,.48,"Manrope","uppercase"),eyebrowSmallSemiBold:new TextStyle(12,600,18,.48,"Manrope","uppercase"),eyebrowSmallBold:new TextStyle(12,700,18,.48,"Manrope","uppercase"),eyebrowSmallExtraBold:new TextStyle(12,800,18,.48,"Manrope","uppercase")},eyebrowStandard={eyebrowStandardExtraLight:new TextStyle(16,200,24,.64,"Manrope","uppercase"),eyebrowStandardLight:new TextStyle(16,300,24,.64,"Manrope","uppercase"),eyebrowStandardRegular:new TextStyle(16,400,24,.64,"Manrope","uppercase"),eyebrowStandardMedium:new TextStyle(16,500,24,.64,"Manrope","uppercase"),eyebrowStandardSemiBold:new TextStyle(16,600,24,.64,"Manrope","uppercase"),eyebrowStandardBold:new TextStyle(16,700,24,.64,"Manrope","uppercase"),eyebrowStandardExtraBold:new TextStyle(16,800,24,.64,"Manrope","uppercase")},eyebrowLarge={eyebrowLargeExtraLight:new TextStyle(22,200,33,.88,"Manrope","uppercase"),eyebrowLargeLight:new TextStyle(22,300,33,.88,"Manrope","uppercase"),eyebrowLargeRegular:new TextStyle(22,400,33,.88,"Manrope","uppercase"),eyebrowLargeMedium:new TextStyle(22,500,33,.88,"Manrope","uppercase"),eyebrowLargeSemiBold:new TextStyle(22,600,33,.88,"Manrope","uppercase"),eyebrowLargeBold:new TextStyle(22,700,33,.88,"Manrope","uppercase"),eyebrowLargeExtraBold:new TextStyle(22,800,33,.88,"Manrope")},extraTiny={extraTinyExtraLight:new TextStyle(5,100,"auto","normal","Manrope"),extraTinyLight:new TextStyle(5,300,"auto","normal","Manrope"),extraTinyRegular:new TextStyle(5,400,"auto","normal","Manrope"),extraTinyMedium:new TextStyle(5,500,"auto","normal","Manrope"),extraTinySemiBold:new TextStyle(5,700,"auto","normal","Manrope"),extraTinyBold:new TextStyle(5,700,"auto","normal","Manrope"),extraTinyExtraBold:new TextStyle(5,900,"auto","normal","Manrope")},tiny={tinyExtraLight:new TextStyle(8,100,"auto","normal","Manrope"),tinyLight:new TextStyle(8,300,"auto","normal","Manrope"),tinyRegular:new TextStyle(8,400,"auto","normal","Manrope"),tinyMedium:new TextStyle(8,500,"auto","normal","Manrope"),tinySemiBold:new TextStyle(8,700,"auto","normal","Manrope"),tinyBold:new TextStyle(8,700,"auto","normal","Manrope"),tinyExtraBold:new TextStyle(8,900,"auto","normal","Manrope")},superSmall={superSmallExtraLight:new TextStyle(10,100,"auto","normal","Manrope"),superSmallLight:new TextStyle(10,300,"auto","normal","Manrope"),superSmallRegular:new TextStyle(10,400,"auto","normal","Manrope"),superSmallMedium:new TextStyle(10,500,"auto","normal","Manrope"),superSmallSemiBold:new TextStyle(10,700,"auto","normal","Manrope"),superSmallBold:new TextStyle(10,700,"auto","normal","Manrope"),superSmallExtraBold:new TextStyle(10,900,"auto","normal","Manrope")},extraSmall={extraSmallExtraLight:new TextStyle(11,100,"auto","normal","Manrope"),extraSmallLight:new TextStyle(11,300,"auto","normal","Manrope"),extraSmallRegular:new TextStyle(11,400,"auto","normal","Manrope"),extraSmallMedium:new TextStyle(11,500,"auto","normal","Manrope"),extraSmallSemiBold:new TextStyle(11,600,"auto","normal","Manrope"),extraSmallBold:new TextStyle(11,700,"auto","normal","Manrope"),extraSmallExtraBold:new TextStyle(11,900,"auto","normal","Manrope")},small={smallExtraLight:new TextStyle(12,100,"auto","normal","Manrope"),smallLight:new TextStyle(12,300,"auto","normal","Manrope"),smallRegular:new TextStyle(12,400,"auto","normal","Manrope"),smallMedium:new TextStyle(12,500,"auto","normal","Manrope"),smallSemiBold:new TextStyle(12,600,"auto","normal","Manrope"),smallBold:new TextStyle(12,700,"auto","normal","Manrope"),smallExtraBold:new TextStyle(12,900,"auto","normal","Manrope")},standard$2={standardExtraLight:new TextStyle(14,100,"auto","normal","Manrope"),standardLight:new TextStyle(14,300,"auto","normal","Manrope"),standardRegular:new TextStyle(14,400,"auto","normal","Manrope"),standardMedium:new TextStyle(14,500,"auto","normal","Manrope"),standardSemiBold:new TextStyle(14,600,"auto","normal","Manrope"),standardBold:new TextStyle(14,700,"auto","normal","Manrope"),standardExtraBold:new TextStyle(14,900,"auto","normal","Manrope")},large={largeExtraLight:new TextStyle(16,200,"auto","normal","Manrope"),largeLight:new TextStyle(16,300,"auto","normal","Manrope"),largeRegular:new TextStyle(16,400,"auto","normal","Manrope"),largeMedium:new TextStyle(16,500,"auto","normal","Manrope"),largeSemiBold:new TextStyle(16,600,"auto","normal","Manrope"),largeBold:new TextStyle(16,700,"auto","normal","Manrope"),largeExtraBold:new TextStyle(16,800,"auto","normal","Manrope")},extraLarge={extraLargeExtraLight:new TextStyle(18,200,"auto","normal","Manrope"),extraLargeLight:new TextStyle(18,300,"auto","normal","Manrope"),extraLargeRegular:new TextStyle(18,400,"auto","normal","Manrope"),extraLargeMedium:new TextStyle(18,500,"auto","normal","Manrope"),extraLargeSemiBold:new TextStyle(18,600,"auto","normal","Manrope"),extraLargeBold:new TextStyle(18,700,"auto","normal","Manrope"),extraLargeExtraBold:new TextStyle(18,800,"auto","normal","Manrope")},h7={h7ExtraLight:new TextStyle(20,200,"auto","normal","Manrope"),h7Light:new TextStyle(20,300,"auto","normal","Manrope"),h7Regular:new TextStyle(20,400,"auto","normal","Manrope"),h7Medium:new TextStyle(20,500,"auto","normal","Manrope"),h7SemiBold:new TextStyle(20,600,"auto","normal","Manrope"),h7Bold:new TextStyle(20,700,"auto","normal","Manrope"),h7ExtraBold:new TextStyle(20,800,"auto","normal","Manrope")},h6={h6ExtraLight:new TextStyle(24,200,"auto","normal","Manrope"),h6Light:new TextStyle(24,300,"auto","normal","Manrope"),h6Regular:new TextStyle(24,400,"auto","normal","Manrope"),h6Medium:new TextStyle(24,500,"auto","normal","Manrope"),h6SemiBold:new TextStyle(24,600,"auto","normal","Manrope"),h6Bold:new TextStyle(24,700,"auto","normal","Manrope"),h6ExtraBold:new TextStyle(24,800,"auto","normal","Manrope")},h5={h5ExtraLight:new TextStyle(32,200,"auto","normal","Manrope"),h5Light:new TextStyle(32,300,"auto","normal","Manrope"),h5Regular:new TextStyle(32,400,"auto","normal","Manrope"),h5Medium:new TextStyle(32,500,"auto","normal","Manrope"),h5SemiBold:new TextStyle(32,600,"auto","normal","Manrope"),h5Bold:new TextStyle(32,700,"auto","normal","Manrope"),h5ExtraBold:new TextStyle(32,800,"auto","normal","Manrope")},h4={h4ExtraLight:new TextStyle(36,200,"auto","normal","Manrope"),h4Light:new TextStyle(36,300,"auto","normal","Manrope"),h4Regular:new TextStyle(36,400,"auto","normal","Manrope"),h4Medium:new TextStyle(36,500,"auto","normal","Manrope"),h4SemiBold:new TextStyle(36,600,"auto","normal","Manrope"),h4Bold:new TextStyle(36,700,"auto","normal","Manrope"),h4ExtraBold:new TextStyle(36,800,"auto","normal","Manrope")},h3={h3ExtraLight:new TextStyle(40,200,"auto","normal","Manrope"),h3Light:new TextStyle(40,300,"auto","normal","Manrope"),h3Regular:new TextStyle(40,400,"auto","normal","Manrope"),h3Medium:new TextStyle(40,500,"auto","normal","Manrope"),h3SemiBold:new TextStyle(40,600,"auto","normal","Manrope"),h3Bold:new TextStyle(40,700,"auto","normal","Manrope"),h3ExtraBold:new TextStyle(40,800,"auto","normal","Manrope")},h2={h2ExtraLight:new TextStyle(48,200,"auto","normal","Manrope"),h2Light:new TextStyle(48,300,"auto","normal","Manrope"),h2Regular:new TextStyle(48,400,"auto","normal","Manrope"),h2Medium:new TextStyle(48,500,"auto","normal","Manrope"),h2SemiBold:new TextStyle(48,600,"auto","normal","Manrope"),h2Bold:new TextStyle(48,700,"auto","normal","Manrope"),h2ExtraBold:new TextStyle(48,800,"auto","normal","Manrope")},h1={h1ExtraLight:new TextStyle(56,200,"auto","normal","Manrope"),h1Light:new TextStyle(56,300,"auto","normal","Manrope"),h1Regular:new TextStyle(56,400,"auto","normal","Manrope"),h1Medium:new TextStyle(56,500,"auto","normal","Manrope"),h1SemiBold:new TextStyle(56,600,"auto","normal","Manrope"),h1Bold:new TextStyle(56,700,"auto","normal","Manrope"),h1ExtraBold:new TextStyle(56,800,"auto","normal","Manrope")},_textStyles={...eyebrowSuperSmall,...eyebrowExtraSmall,...eyebrowSmall,...eyebrowStandard,...eyebrowLarge,...extraTiny,...tiny,...superSmall,...extraSmall,...small,...standard$2,...large,...extraLarge,...h7,...h6,...h5,...h4,...h3,...h2,...h1,chargeCardNumberText:new TextStyle(24,400,31.2,"normal","PT Mono"),businessCardText:new TextStyle(customFontSizes.chargeCard,400,22.5,"normal","Roboto"),accountsPromoHighlightText:new TextStyle(40,300,40,"normal","Manrope")},textStyles=_textStyles,StyledText$q=styled$2.div`
|
|
1
|
+
var __typeError=e=>{throw TypeError(e)},__accessCheck=(e,t,n)=>t.has(e)||__typeError("Cannot "+n),__privateGet=(e,t,n)=>(__accessCheck(e,t,"read from private field"),n?n.call(e):t.get(e)),__privateAdd=(e,t,n)=>t.has(e)?__typeError("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),__privateSet=(e,t,n,o)=>(__accessCheck(e,t,"write to private field"),o?o.call(e,n):t.set(e,n),n),__privateMethod=(e,t,n)=>(__accessCheck(e,t,"access private method"),n),__privateWrapper=(e,t,n,o)=>({set _(o){__privateSet(e,t,o,n)},get _(){return __privateGet(e,t,o)}}),_fakeWorkerId,_isWorkerDisabled,_workerPorts,_PDFWorker_instances,resolve_fn,_PDFWorker_static,mainThreadWorkerMessageHandler_get;import*as React from"react";import React__default,{Component,createElement,createContext,useContext,useState,useEffect,useRef,useCallback,isValidElement as isValidElement$1,cloneElement,Children,memo as memo$c,forwardRef,useMemo,useLayoutEffect,useReducer,useImperativeHandle,Fragment,PureComponent,createRef,Suspense,lazy,Profiler,useId as useId$1,useSyncExternalStore}from"react";import styled$2 from"@emotion/styled";import{stringToUnionStrict,updateZeniDateLocaleID,dateLocal,dateNow,isZeniSignedInUser,stringToUnion,isInfiniteRunway,hasInvestorBankerLevelAccess,isCalculatedBalanceType,SUPPORTED_TRANSACTION_LINE_ATTACHMENT_FILE_TYPES,toContentType,getYearsList,ALL_AI_CFO_CHARTS_TYPES,NEW_INTERNATIONAL_METHOD_SUBTEXT,getVendorCriteria,getDepartmentCriteria,getAmountCriteria,toUserRoleType,zeniDate,hasEmployeeLevelAccess,isAwaitingMarkAsPaid,checkIfLowBalance,getActualPaymentDate,isPaymentMethodOutsideZeni,getFormattedAddress,toSupportedFileTypeStrict,mapFileEntityToAttachment,mapFilePayloadToFile,uploadFile,defaultVendorCurrency,LOCAL_CURRENCY_INTERNATIONAL_METHOD_SUBTEXT,filterDays,holidaysFormatted,getPreviousNthWorkingDay,getNextNthWorkingDay,isHolidayToday,getInternationalSubConfigCodeKey,SWIFT_OUR_INTERNATIONAL_METHOD_SUBTEXT,isVerifiedPaymentAccountProviderStatusCode,isVerifiedStatusCode,PAYMENT_BUSINESS_DAYS,toRecurringBillFrequency,isColumnYTDSpend,toAmount,toScheduleSubTabType,getFirstControllerEmail,getFirstControllerId,hasBillPayAccess,hasAdminLevelAccess,hasReimbursementAccess,hasZeniAccountsAccess,isCardsProductEnabledOnCompany,hasChargeCardAccess,hasTreasuryAccess,hasAnyCompanyRole,isFinOpsUserRoleType,toZeniUrl,defaultCustomerCurrency,formatZeniDate,TOP_EX_TIME_PERIODS,hasChargeCardAdminLevelAccess,hasReimbursementUserAccess,DEFAULT_REFERRER_AMOUNT,dateFromYearMonthDate,toMonth,isSettingsVisible,isMyBankConnectionsTabVisible,isIntegrationsTabVisible,isCompanyDetailsTabVisible,isBusinessVerificationTabVisible,isBillingTabVisible,isApprovalRulesTabVisible,isAccountingTabVisible,hasBillPayAccessible,hasReimbursementAccessible,hasChargeCardAccessible,isTenantBookkeepingEnabled,isTenantCardsOnly,isTenantBankingOnly,addPeriod,getStartOfAndEndOfTimeframeForFY,subtractPeriod,toTransactionTypeStrict,isVendorTransaction,isDashboardClassesViewReport,toTimeframeTick,getTimeframeTickTag,isOpexByVendorIDNotSpecifiedVendor,isPAndLClassesViewReport,isBalanceSheetClassesViewReport,isPAndLProjectViewReport,isDashboardProjectViewReport,isBalanceSheetProjectViewReport,isAgingReport,isOpExByVendorReport,isCashFlowProjectViewReport,isCashFlowClassesViewReport,isPAndLReport,isDashboardReport,isCashFlowOrBalanceSheetReport,isFluxAnalysisOpExReport,isAccountReconReport,isGroupedBalanceSheetReport,isGroupedCashFlowReport,isIncompleteMonthPresentInTimeframeTick,isNetBurnOrIncomeClassesViewSectionID,isNetBurnOrIncomeClassesViewCalculatedSectionID,isNetBurnOrIncomeReportViewSectionID,isNetBurnOrIncomeReportViewCalculatedSectionID,isRevenueClassesViewSectionID,isRevenueClassesViewCalculatedSectionID,isRevenueSectionID,isRevenueCalculatedSectionID,reduceAllFetchState,getFYQuarterAndYear,getLastMonthOfFYQuarter,getActualPeriodOfFYQtr,toQuarter,getLastMonthOfFYYear,getActualPeriodOfFY,isBalanceSheetReport,isCashFlowReport,isBalanceSheetReportViewSectionID,isBalanceSheetReportViewCalculatedSectionID,isCashFlowReportViewCalculatedSectionID,isCashFlowReportViewSectionID,isCashFlowReportViewCalculatedSectionType1ID,isPandLReportViewSectionID,isPandLReportViewCalculatedSectionID,getEmptyHorizontalSectionBalancesSlice,aggregateHorizontalDescendantBalances,isCustomerTransaction,isTransferTransaction,toJournalEntrySortKey,isVendorTransactionWithCustomer,getChangedLineItemCountFromLocalData,toAttachment,hasZeniRoleOrCompanyOfficerAccess,COMPANY_ONBOARDING_INDUSTRY_TYPE_CODES,getCompanyOnboardingSubIndustryCodesForIndustry,COMPANY_SOURCE_OF_FUNDS_CODES,COMPANY_TRANSACTION_VOLUME_CODES,COMPANY_US_NEXUS_TYPE_CODES,COMPANY_PURPOSE_OF_ACCOUNT_CODES,getFYMonths,isCompanyPassportDataToBeSaved,toOutsideZeniPaymentModeType,checkIfCreatorIsApprover,hasBillPayAdminLevelAccess,hasOnlyBillPayAccess,toUserRoleTypeStrict,isNonZeniRole,NOTIFICATION_MODES,REMINDER_NOTIFICATION_TYPES,toNotificationFrequency,isMonthEndNotificationsSectionVisibleOnSettingsPage,isRemindersSectionVisibleOnSettingsPage,hasReimbursementAdminLevelAccess,isBulkProcessing,detectRuleOverlap,reduceAnyFetchState,toReimbursementTypeCode,getBusinessDayOfDate,PAYMENT_HISTORY_FILTER_CATEGORIES,TASK_LIST_FILTER_CATEGORIES,REIMBURSEMENT_FILTER_CATEGORIES_RESTRICTED,REIMBURSEMENT_FILTER_CATEGORIES,hideCreatedByFilter,BILL_PAY_FILTER_CATEGORIES,getBillListUniqueType,getRemiListUniqueType,allTaskPriority,allTaskStatus,toVendorDetailTabsType,toVendorSpendTrendFilterTabsTypeStrict,hasAnyFinOpRole,hasZeniAccountsAdminLevelAccess,getProductSettingsString,hasFullOrAdminLevelAccess,isVendorsTabVisible,DEFAULT_SESSION_CONFIG,toCOABalanceTimeframe,getOpexVendorTimeframeKey,toVendorFirstReviewViewColumnKeyType,toZeniUrlWithoutBaseURL,toVendorGlobalReviewColumnSortKeyType,getThirdPartyIdFromTransactionId,ALL_ONE_TIME_ACCRUAL_IGNORE_REASONS,ALL_JE_SCHEDULE_REVERT_REASONS,ALL_JE_SCHEDULE_IGNORE_REASONS,ALL_ONE_TIME_ACCRUAL_REVERT_REASONS,toScheduleDaysOfMonth,getQBOUrlForLink,anyCardOnHold,attachmentFilePathToAttachment,getZeniDateFromPeriod,getUserName,getPaymentStatusDisplayText,CARD_POLICY_LIMIT_ROW_ID_TRANSACTION as CARD_POLICY_LIMIT_ROW_ID_TRANSACTION$1,CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT as CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT$1,TASK_LIST_GROUP_BY_CATEGORIES,toTaskListGroupByKeyTypeStrict,toPriorityCodeType,convertHHMMStrToMinutes,toTaskStatusCodeType,toDueDateGroupKeyType,ALL_TASK_LIST_TABS,SEMI_WEEKLY_REQUIRED_DAYS_COUNT,ALL_WEEK_DAYS,getMinAllowedEndDate as getMinAllowedEndDate$1,uploadFiles,sortSubtasks,getRecurringEndDateFromCount,toRecurringFrequency,hasSuperAdminLevelAccess,hasBookKeepingAdminLevelAccess,StatusTypes,toReferralListViewSortKeyType,AmountStatusTypes,toNotificationSubTabTypeStrict,toNotificationTabTypeStrict,isBillConditionallyValid,TIME_SERIES_DURATIONS,convertToTimeSeriesSelectionRange,toTimeSeriesDuration,shouldDefaultAdjustmentCreditNote,buildVoidInvoiceSubmitBody,entityToInvoicingCustomerFormLocalData,toInvoicingSubscriptionQuantity,INVOICING_CATALOG_TIER_TYPE_VALUES,INVOICING_CATALOG_PRORATION_VALUES,INVOICING_CATALOG_PRICING_MODEL_VALUES,INVOICING_CATALOG_APPLICABILITY_VALUES,blankInvoicingCatalogSubFamily,blankInvoicingCatalogTier,isTieredCatalogPricingModel,toInvoicingDunningAction,entityToInvoicingBrandingFormLocalData,invoicingAccountsForQboAccountTypes,entityToInvoicingSubscriptionFormLocalData,getLowestInvoicingPlanPricePointAmount,entityToInvoicingCatalogItemFormLocalData,isInvoicingEntityLinkable,TRANSACTION_FILTER_CATEGORIES,toExpenseAutomationTransactionsTabKey,toReconciliationTabsType,isReviewTransactionBillPaymentType,isReviewTransactionExpenseType,isReviewTransactionCreditCardPaymentType,isReviewTransactionBankTransferType,isReviewTransactionDepositType,isReviewTransactionCreditCardCreditType,getJEScheduleRowType,isAccruedScheduleRow,isOneTimeAccrualRow,isAiAccountantSchedule,isExistingTabRow,isPendingReviewRow,toScheduleTypesType,toExpenseAutomationMissingReceiptsSortKey,mapAttachmentFileToAttachmentFilePayload,SUPPORTED_ATTACHMENT_FILE_TYPES,toSupportedAttachmentFileType,getAttachmentFileIdByFileName,toTransactionsSortKey,MAX_SELECTION_LIMIT,isAnyItemWithUncategorizedExpenseAccount,checkIfAllLineItemsAreCategoryClassFilled,TRANSACTION_GROUPS,toBulkUploadSortKey,BULK_UPLOAD_BAR_COMPLETE_HOLD_MS,getLineItemsByTransactionIdsFromLocalData,toReconciliationAccountSource,uploadAccountStatementIntoDocumentAI,toAccountType,hasTreasuryAdminLevelAccess,getNextTransferDate}from"@zeniai/client-epic-state";import{Global as Global$1,ThemeContext as ThemeContext$2,keyframes,css as css$2,jsx,CacheProvider,useTheme as useTheme$4}from"@emotion/react";import{Event as Event$1}from"@zeniai/client-analytics";import*as ReactDOM from"react-dom";import ReactDOM__default,{createPortal,findDOMNode}from"react-dom";import{useThreads,useUserThreads_experimental,RoomProvider,useCreateComment,useUser,useCreateThread,LiveblocksProvider,ClientSideSuspense,useRoom}from"@liveblocks/react";import{useOverrides,Comment as Comment$1,Thread,Composer as Composer$1}from"@liveblocks/react-ui";import{Timestamp as Timestamp$1,Comment}from"@liveblocks/react-ui/primitives";var commonjsGlobal$1="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var jsxRuntime={exports:{}},reactJsxRuntime_production_min={},hasRequiredReactJsxRuntime_production_min;function requireReactJsxRuntime_production_min(){if(hasRequiredReactJsxRuntime_production_min)return reactJsxRuntime_production_min;hasRequiredReactJsxRuntime_production_min=1;var e=React__default,t=/* @__PURE__ */Symbol.for("react.element"),n=/* @__PURE__ */Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,i=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,r={key:!0,ref:!0,__self:!0,__source:!0};function a(e,n,a){var s,l={},c=null,d=null;for(s in void 0!==a&&(c=""+a),void 0!==n.key&&(c=""+n.key),void 0!==n.ref&&(d=n.ref),n)o.call(n,s)&&!r.hasOwnProperty(s)&&(l[s]=n[s]);if(e&&e.defaultProps)for(s in n=e.defaultProps)void 0===l[s]&&(l[s]=n[s]);return{$$typeof:t,type:e,key:c,ref:d,props:l,_owner:i.current}}return reactJsxRuntime_production_min.Fragment=n,reactJsxRuntime_production_min.jsx=a,reactJsxRuntime_production_min.jsxs=a,reactJsxRuntime_production_min}var reactJsxRuntime_development={},hasRequiredReactJsxRuntime_development,hasRequiredJsxRuntime;function requireReactJsxRuntime_development(){return hasRequiredReactJsxRuntime_development||(hasRequiredReactJsxRuntime_development=1,"production"!==process.env.NODE_ENV&&function(){var e=React__default,t=/* @__PURE__ */Symbol.for("react.element"),n=/* @__PURE__ */Symbol.for("react.portal"),o=/* @__PURE__ */Symbol.for("react.fragment"),i=/* @__PURE__ */Symbol.for("react.strict_mode"),r=/* @__PURE__ */Symbol.for("react.profiler"),a=/* @__PURE__ */Symbol.for("react.provider"),s=/* @__PURE__ */Symbol.for("react.context"),l=/* @__PURE__ */Symbol.for("react.forward_ref"),c=/* @__PURE__ */Symbol.for("react.suspense"),d=/* @__PURE__ */Symbol.for("react.suspense_list"),p=/* @__PURE__ */Symbol.for("react.memo"),u=/* @__PURE__ */Symbol.for("react.lazy"),m=/* @__PURE__ */Symbol.for("react.offscreen"),h=Symbol.iterator;var g=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function x(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];!function(e,t,n){var o=g.ReactDebugCurrentFrame.getStackAddendum();""!==o&&(t+="%s",n=n.concat([o]));var i=n.map(function(e){return String(e)});i.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,i)}("error",e,n)}var f;function y(e){return e.displayName||"Context"}function S(e){if(null==e)return null;if("number"==typeof e.tag&&x("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),"function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case o:return"Fragment";case n:return"Portal";case r:return"Profiler";case i:return"StrictMode";case c:return"Suspense";case d:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case s:return y(e)+".Consumer";case a:return y(e._context)+".Provider";case l:return function(e,t,n){var o=e.displayName;if(o)return o;var i=t.displayName||t.name||"";return""!==i?n+"("+i+")":n}(e,e.render,"ForwardRef");case p:var t=e.displayName||null;return null!==t?t:S(e.type)||"Memo";case u:var m=e,h=m._payload,g=m._init;try{return S(g(h))}catch(f){return null}}return null}f=/* @__PURE__ */Symbol.for("react.module.reference");var C,$,b,v,E,w,R,A=Object.assign,j=0;function T(){}T.__reactDisabledLog=!0;var I,k=g.ReactCurrentDispatcher;function L(e,t,n){if(void 0===I)try{throw Error()}catch(i){var o=i.stack.trim().match(/\n( *(at )?)/);I=o&&o[1]||""}return"\n"+I+e}var D,_=!1,P="function"==typeof WeakMap?WeakMap:Map;function B(e,t){if(!e||_)return"";var n,o=D.get(e);if(void 0!==o)return o;_=!0;var i,r=Error.prepareStackTrace;Error.prepareStackTrace=void 0,i=k.current,k.current=null,function(){if(0===j){C=console.log,$=console.info,b=console.warn,v=console.error,E=console.group,w=console.groupCollapsed,R=console.groupEnd;var e={configurable:!0,enumerable:!0,value:T,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}j++}();try{if(t){var a=function(){throw Error()};if(Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(a,[])}catch(h){n=h}Reflect.construct(e,[],a)}else{try{a.call()}catch(h){n=h}e.call(a.prototype)}}else{try{throw Error()}catch(h){n=h}e()}}catch(g){if(g&&n&&"string"==typeof g.stack){for(var s=g.stack.split("\n"),l=n.stack.split("\n"),c=s.length-1,d=l.length-1;c>=1&&d>=0&&s[c]!==l[d];)d--;for(;c>=1&&d>=0;c--,d--)if(s[c]!==l[d]){if(1!==c||1!==d)do{if(c--,--d<0||s[c]!==l[d]){var p="\n"+s[c].replace(" at new "," at ");return e.displayName&&p.includes("<anonymous>")&&(p=p.replace("<anonymous>",e.displayName)),"function"==typeof e&&D.set(e,p),p}}while(c>=1&&d>=0);break}}}finally{_=!1,k.current=i,function(){if(0===--j){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:A({},e,{value:C}),info:A({},e,{value:$}),warn:A({},e,{value:b}),error:A({},e,{value:v}),group:A({},e,{value:E}),groupCollapsed:A({},e,{value:w}),groupEnd:A({},e,{value:R})})}j<0&&x("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}(),Error.prepareStackTrace=r}var u=e?e.displayName||e.name:"",m=u?L(u):"";return"function"==typeof e&&D.set(e,m),m}function M(e,t,n){if(null==e)return"";if("function"==typeof e)return B(e,!(!(o=e.prototype)||!o.isReactComponent));var o;if("string"==typeof e)return L(e);switch(e){case c:return L("Suspense");case d:return L("SuspenseList")}if("object"==typeof e)switch(e.$$typeof){case l:return B(e.render,!1);case p:return M(e.type,t,n);case u:var i=e,r=i._payload,a=i._init;try{return M(a(r),t,n)}catch(s){}}return""}D=new P;var O=Object.prototype.hasOwnProperty,F={},N=g.ReactDebugCurrentFrame;function z(e){if(e){var t=e._owner,n=M(e.type,e._source,t?t.type:null);N.setExtraStackFrame(n)}else N.setExtraStackFrame(null)}var H=Array.isArray;function V(e){return H(e)}function W(e){return""+e}function U(e){if(function(e){try{return W(e),!1}catch(t){return!0}}(e))return x("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",function(e){return"function"==typeof Symbol&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object"}(e)),W(e)}var G,q,Q=g.ReactCurrentOwner,Y={key:!0,ref:!0,__self:!0,__source:!0};function K(e,n,o,i,r){var a,s={},l=null,c=null;for(a in void 0!==o&&(U(o),l=""+o),function(e){if(O.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return void 0!==e.key}(n)&&(U(n.key),l=""+n.key),function(e){if(O.call(e,"ref")){var t=Object.getOwnPropertyDescriptor(e,"ref").get;if(t&&t.isReactWarning)return!1}return void 0!==e.ref}(n)&&(c=n.ref,function(e){"string"==typeof e.ref&&Q.current}(n)),n)O.call(n,a)&&!Y.hasOwnProperty(a)&&(s[a]=n[a]);if(e&&e.defaultProps){var d=e.defaultProps;for(a in d)void 0===s[a]&&(s[a]=d[a])}if(l||c){var p="function"==typeof e?e.displayName||e.name||"Unknown":e;l&&function(e,t){var n=function(){G||(G=!0,x("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",t))};n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}(s,p),c&&function(e,t){var n=function(){q||(q=!0,x("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",t))};n.isReactWarning=!0,Object.defineProperty(e,"ref",{get:n,configurable:!0})}(s,p)}return function(e,n,o,i,r,a,s){var l={$$typeof:t,type:e,key:n,ref:o,props:s,_owner:a,_store:{}};return Object.defineProperty(l._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(l,"_self",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.defineProperty(l,"_source",{configurable:!1,enumerable:!1,writable:!1,value:r}),Object.freeze&&(Object.freeze(l.props),Object.freeze(l)),l}(e,l,c,r,i,Q.current,s)}var Z,X=g.ReactCurrentOwner,J=g.ReactDebugCurrentFrame;function ee(e){if(e){var t=e._owner,n=M(e.type,e._source,t?t.type:null);J.setExtraStackFrame(n)}else J.setExtraStackFrame(null)}function te(e){return"object"==typeof e&&null!==e&&e.$$typeof===t}function ne(){if(X.current){var e=S(X.current.type);if(e)return"\n\nCheck the render method of `"+e+"`."}return""}Z=!1;var oe={};function ie(e,t){if(e._store&&!e._store.validated&&null==e.key){e._store.validated=!0;var n=function(e){var t=ne();if(!t){var n="string"==typeof e?e:e.displayName||e.name;n&&(t="\n\nCheck the top-level render call using <"+n+">.")}return t}(t);if(!oe[n]){oe[n]=!0;var o="";e&&e._owner&&e._owner!==X.current&&(o=" It was passed a child from "+S(e._owner.type)+"."),ee(e),x('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,o),ee(null)}}}function re(e,t){if("object"==typeof e)if(V(e))for(var n=0;n<e.length;n++){var o=e[n];te(o)&&ie(o,t)}else if(te(e))e._store&&(e._store.validated=!0);else if(e){var i=function(e){if(null===e||"object"!=typeof e)return null;var t=h&&e[h]||e["@@iterator"];return"function"==typeof t?t:null}(e);if("function"==typeof i&&i!==e.entries)for(var r,a=i.call(e);!(r=a.next()).done;)te(r.value)&&ie(r.value,t)}}function ae(e){var t,n=e.type;if(null!=n&&"string"!=typeof n){if("function"==typeof n)t=n.propTypes;else{if("object"!=typeof n||n.$$typeof!==l&&n.$$typeof!==p)return;t=n.propTypes}if(t){var o=S(n);!function(e,t,n,o,i){var r=Function.call.bind(O);for(var a in e)if(r(e,a)){var s=void 0;try{if("function"!=typeof e[a]){var l=Error((o||"React class")+": "+n+" type `"+a+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[a]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw l.name="Invariant Violation",l}s=e[a](t,a,o,n,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(c){s=c}!s||s instanceof Error||(z(i),x("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",o||"React class",n,a,typeof s),z(null)),s instanceof Error&&!(s.message in F)&&(F[s.message]=!0,z(i),x("Failed %s type: %s",n,s.message),z(null))}}(t,e.props,"prop",o,e)}else if(void 0!==n.PropTypes&&!Z){Z=!0,x("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",S(n)||"Unknown")}"function"!=typeof n.getDefaultProps||n.getDefaultProps.isReactClassApproved||x("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}var se={};function le(e,n,h,g,y,C){var $=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===r||e===i||e===c||e===d||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===u||e.$$typeof===p||e.$$typeof===a||e.$$typeof===s||e.$$typeof===l||e.$$typeof===f||void 0!==e.getModuleId)}(e);if(!$){var b="";(void 0===e||"object"==typeof e&&null!==e&&0===Object.keys(e).length)&&(b+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var v;b+=ne(),null===e?v="null":V(e)?v="array":void 0!==e&&e.$$typeof===t?(v="<"+(S(e.type)||"Unknown")+" />",b=" Did you accidentally export a JSX literal instead of a component?"):v=typeof e,x("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",v,b)}var E=K(e,n,h,y,C);if(null==E)return E;if($){var w=n.children;if(void 0!==w)if(g)if(V(w)){for(var R=0;R<w.length;R++)re(w[R],e);Object.freeze&&Object.freeze(w)}else x("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else re(w,e)}if(O.call(n,"key")){var A=S(e),j=Object.keys(n).filter(function(e){return"key"!==e}),T=j.length>0?"{key: someKey, "+j.join(": ..., ")+": ...}":"{key: someKey}";if(!se[A+T])x('A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />',T,A,j.length>0?"{"+j.join(": ..., ")+": ...}":"{}",A),se[A+T]=!0}return e===o?function(e){for(var t=Object.keys(e.props),n=0;n<t.length;n++){var o=t[n];if("children"!==o&&"key"!==o){ee(e),x("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",o),ee(null);break}}null!==e.ref&&(ee(e),x("Invalid attribute `ref` supplied to `React.Fragment`."),ee(null))}(E):ae(E),E}var ce=function(e,t,n){return le(e,t,n,!1)},de=function(e,t,n){return le(e,t,n,!0)};reactJsxRuntime_development.Fragment=o,reactJsxRuntime_development.jsx=ce,reactJsxRuntime_development.jsxs=de}()),reactJsxRuntime_development}function requireJsxRuntime(){return hasRequiredJsxRuntime||(hasRequiredJsxRuntime=1,"production"===process.env.NODE_ENV?jsxRuntime.exports=requireReactJsxRuntime_production_min():jsxRuntime.exports=requireReactJsxRuntime_development()),jsxRuntime.exports}var jsxRuntimeExports=requireJsxRuntime();const ErrorBoundaryContext=createContext(null),initialState$2={didCatch:!1,error:null};let ErrorBoundary$1=class extends Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=initialState$2}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){const{error:e}=this.state;if(null!==e){for(var t,n,o=arguments.length,i=new Array(o),r=0;r<o;r++)i[r]=arguments[r];null===(t=(n=this.props).onReset)||void 0===t||t.call(n,{args:i,reason:"imperative-api"}),this.setState(initialState$2)}}componentDidCatch(e,t){var n,o;null===(n=(o=this.props).onError)||void 0===n||n.call(o,e,t)}componentDidUpdate(e,t){const{didCatch:n}=this.state,{resetKeys:o}=this.props;var i,r;n&&null!==t.error&&hasArrayChanged(e.resetKeys,o)&&(null===(i=(r=this.props).onReset)||void 0===i||i.call(r,{next:o,prev:e.resetKeys,reason:"keys"}),this.setState(initialState$2))}render(){const{children:e,fallbackRender:t,FallbackComponent:n,fallback:o}=this.props,{didCatch:i,error:r}=this.state;let a=e;if(i){const e={error:r,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)a=t(e);else if(n)a=createElement(n,e);else{if(void 0===o)throw r;a=o}}return createElement(ErrorBoundaryContext.Provider,{value:{didCatch:i,error:r,resetErrorBoundary:this.resetErrorBoundary}},a)}};function hasArrayChanged(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some((e,n)=>!Object.is(e,t[n]))}var numeral$2={exports:{}},numeral$1=numeral$2.exports,hasRequiredNumeral;function requireNumeral(){return hasRequiredNumeral||(hasRequiredNumeral=1,t=numeral$1,n=function(){var e,t,n,o,i,r={},a={},s={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},l={currentLocale:s.currentLocale,zeroFormat:s.zeroFormat,nullFormat:s.nullFormat,defaultFormat:s.defaultFormat,scalePercentBy100:s.scalePercentBy100};function c(e,t){this._input=e,this._value=t}return(e=function(n){var o,i,a,s;if(e.isNumeral(n))o=n.value();else if(0===n||void 0===n)o=0;else if(null===n||t.isNaN(n))o=null;else if("string"==typeof n)if(l.zeroFormat&&n===l.zeroFormat)o=0;else if(l.nullFormat&&n===l.nullFormat||!n.replace(/[^0-9]+/g,"").length)o=null;else{for(i in r)if((s="function"==typeof r[i].regexps.unformat?r[i].regexps.unformat():r[i].regexps.unformat)&&n.match(s)){a=r[i].unformat;break}o=(a=a||e._.stringToNumber)(n)}else o=Number(n)||null;return new c(n,o)}).version="2.0.6",e.isNumeral=function(e){return e instanceof c},e._=t={numberToFormat:function(t,n,o){var i,r,s,l,c,d,p,u,m=a[e.options.currentLocale],h=!1,g=!1,x="",f=1e12,y=1e9,S=1e6,C="",$=!1;if(t=t||0,s=Math.abs(t),e._.includes(n,"(")?(h=!0,n=n.replace(/[\(|\)]/g,"")):(e._.includes(n,"+")||e._.includes(n,"-"))&&(d=e._.includes(n,"+")?n.indexOf("+"):t<0?n.indexOf("-"):-1,n=n.replace(/[\+|\-]/g,"")),e._.includes(n,"a")&&(r=!!(r=n.match(/a(k|m|b|t)?/))&&r[1],e._.includes(n," a")&&(x=" "),n=n.replace(new RegExp(x+"a[kmbt]?"),""),s>=f&&!r||"t"===r?(x+=m.abbreviations.trillion,t/=f):s<f&&s>=y&&!r||"b"===r?(x+=m.abbreviations.billion,t/=y):s<y&&s>=S&&!r||"m"===r?(x+=m.abbreviations.million,t/=S):(s<S&&s>=1e3&&!r||"k"===r)&&(x+=m.abbreviations.thousand,t/=1e3)),e._.includes(n,"[.]")&&(g=!0,n=n.replace("[.]",".")),l=t.toString().split(".")[0],c=n.split(".")[1],p=n.indexOf(","),i=(n.split(".")[0].split(",")[0].match(/0/g)||[]).length,c?(e._.includes(c,"[")?(c=(c=c.replace("]","")).split("["),C=e._.toFixed(t,c[0].length+c[1].length,o,c[1].length)):C=e._.toFixed(t,c.length,o),l=C.split(".")[0],C=e._.includes(C,".")?m.delimiters.decimal+C.split(".")[1]:"",g&&0===Number(C.slice(1))&&(C="")):l=e._.toFixed(t,0,o),x&&!r&&Number(l)>=1e3&&x!==m.abbreviations.trillion)switch(l=String(Number(l)/1e3),x){case m.abbreviations.thousand:x=m.abbreviations.million;break;case m.abbreviations.million:x=m.abbreviations.billion;break;case m.abbreviations.billion:x=m.abbreviations.trillion}if(e._.includes(l,"-")&&(l=l.slice(1),$=!0),l.length<i)for(var b=i-l.length;b>0;b--)l="0"+l;return p>-1&&(l=l.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+m.delimiters.thousands)),0===n.indexOf(".")&&(l=""),u=l+C+(x||""),h?u=(h&&$?"(":"")+u+(h&&$?")":""):d>=0?u=0===d?($?"-":"+")+u:u+($?"-":"+"):$&&(u="-"+u),u},stringToNumber:function(e){var t,n,o,i=a[l.currentLocale],r=e,s={thousand:3,million:6,billion:9,trillion:12};if(l.zeroFormat&&e===l.zeroFormat)n=0;else if(l.nullFormat&&e===l.nullFormat||!e.replace(/[^0-9]+/g,"").length)n=null;else{for(t in n=1,"."!==i.delimiters.decimal&&(e=e.replace(/\./g,"").replace(i.delimiters.decimal,".")),s)if(o=new RegExp("[^a-zA-Z]"+i.abbreviations[t]+"(?:\\)|(\\"+i.currency.symbol+")?(?:\\))?)?$"),r.match(o)){n*=Math.pow(10,s[t]);break}n*=(e.split("-").length+Math.min(e.split("(").length-1,e.split(")").length-1))%2?1:-1,e=e.replace(/[^0-9\.]+/g,""),n*=Number(e)}return n},isNaN:function(e){return"number"==typeof e&&isNaN(e)},includes:function(e,t){return-1!==e.indexOf(t)},insert:function(e,t,n){return e.slice(0,n)+t+e.slice(n)},reduce:function(e,t){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof t)throw new TypeError(t+" is not a function");var n,o=Object(e),i=o.length>>>0,r=0;if(3===arguments.length)n=arguments[2];else{for(;r<i&&!(r in o);)r++;if(r>=i)throw new TypeError("Reduce of empty array with no initial value");n=o[r++]}for(;r<i;r++)r in o&&(n=t(n,o[r],r,o));return n},multiplier:function(e){var t=e.toString().split(".");return t.length<2?1:Math.pow(10,t[1].length)},correctionFactor:function(){return Array.prototype.slice.call(arguments).reduce(function(e,n){var o=t.multiplier(n);return e>o?e:o},1)},toFixed:function(e,t,n,o){var i,r,a,s,l=e.toString().split("."),c=t-(o||0);return i=2===l.length?Math.min(Math.max(l[1].length,c),t):c,a=Math.pow(10,i),s=(n(e+"e+"+i)/a).toFixed(i),o>t-i&&(r=new RegExp("\\.?0{1,"+(o-(t-i))+"}$"),s=s.replace(r,"")),s}},e.options=l,e.formats=r,e.locales=a,e.locale=function(e){return e&&(l.currentLocale=e.toLowerCase()),l.currentLocale},e.localeData=function(e){if(!e)return a[l.currentLocale];if(e=e.toLowerCase(),!a[e])throw new Error("Unknown locale : "+e);return a[e]},e.reset=function(){for(var e in s)l[e]=s[e]},e.zeroFormat=function(e){l.zeroFormat="string"==typeof e?e:null},e.nullFormat=function(e){l.nullFormat="string"==typeof e?e:null},e.defaultFormat=function(e){l.defaultFormat="string"==typeof e?e:"0.0"},e.register=function(e,t,n){if(t=t.toLowerCase(),this[e+"s"][t])throw new TypeError(t+" "+e+" already registered.");return this[e+"s"][t]=n,n},e.validate=function(t,n){var o,i,r,a,s,l,c,d;if("string"!=typeof t&&(t+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",t)),(t=t.trim()).match(/^\d+$/))return!0;if(""===t)return!1;try{c=e.localeData(n)}catch(p){c=e.localeData(e.locale())}return r=c.currency.symbol,s=c.abbreviations,o=c.delimiters.decimal,i="."===c.delimiters.thousands?"\\.":c.delimiters.thousands,!(null!==(d=t.match(/^[^\d]+/))&&(t=t.substr(1),d[0]!==r)||null!==(d=t.match(/[^\d]+$/))&&(t=t.slice(0,-1),d[0]!==s.thousand&&d[0]!==s.million&&d[0]!==s.billion&&d[0]!==s.trillion)||(l=new RegExp(i+"{2}"),t.match(/[^\d.,]/g)||(a=t.split(o)).length>2||(a.length<2?!a[0].match(/^\d+.*\d$/)||a[0].match(l):1===a[0].length?!a[0].match(/^\d+$/)||a[0].match(l)||!a[1].match(/^\d+$/):!a[0].match(/^\d+.*\d$/)||a[0].match(l)||!a[1].match(/^\d+$/))))},e.fn=c.prototype={clone:function(){return e(this)},format:function(t,n){var o,i,a,s=this._value,c=t||l.defaultFormat;if(n=n||Math.round,0===s&&null!==l.zeroFormat)i=l.zeroFormat;else if(null===s&&null!==l.nullFormat)i=l.nullFormat;else{for(o in r)if(c.match(r[o].regexps.format)){a=r[o].format;break}i=(a=a||e._.numberToFormat)(s,c,n)}return i},value:function(){return this._value},input:function(){return this._input},set:function(e){return this._value=Number(e),this},add:function(e){var n=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([this._value,e],function(e,t,o,i){return e+Math.round(n*t)},0)/n,this},subtract:function(e){var n=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([e],function(e,t,o,i){return e-Math.round(n*t)},Math.round(this._value*n))/n,this},multiply:function(e){return this._value=t.reduce([this._value,e],function(e,n,o,i){var r=t.correctionFactor(e,n);return Math.round(e*r)*Math.round(n*r)/Math.round(r*r)},1),this},divide:function(e){return this._value=t.reduce([this._value,e],function(e,n,o,i){var r=t.correctionFactor(e,n);return Math.round(e*r)/Math.round(n*r)}),this},difference:function(t){return Math.abs(e(this._value).subtract(t).value())}},e.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}}),e.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(t,n,o){var i,r=e._.includes(n," BPS")?" ":"";return t*=1e4,n=n.replace(/\s?BPS/,""),i=e._.numberToFormat(t,n,o),e._.includes(i,")")?((i=i.split("")).splice(-1,0,r+"BPS"),i=i.join("")):i=i+r+"BPS",i},unformat:function(t){return+(1e-4*e._.stringToNumber(t)).toFixed(15)}}),o={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},i="("+(i=(n={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}).suffixes.concat(o.suffixes.filter(function(e){return n.suffixes.indexOf(e)<0})).join("|")).replace("B","B(?!PS)")+")",e.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(i)},format:function(t,i,r){var a,s,l,c=e._.includes(i,"ib")?o:n,d=e._.includes(i," b")||e._.includes(i," ib")?" ":"";for(i=i.replace(/\s?i?b/,""),a=0;a<=c.suffixes.length;a++)if(s=Math.pow(c.base,a),l=Math.pow(c.base,a+1),null===t||0===t||t>=s&&t<l){d+=c.suffixes[a],s>0&&(t/=s);break}return e._.numberToFormat(t,i,r)+d},unformat:function(t){var i,r,a=e._.stringToNumber(t);if(a){for(i=n.suffixes.length-1;i>=0;i--){if(e._.includes(t,n.suffixes[i])){r=Math.pow(n.base,i);break}if(e._.includes(t,o.suffixes[i])){r=Math.pow(o.base,i);break}}a*=r||1}return a}}),e.register("format","currency",{regexps:{format:/(\$)/},format:function(t,n,o){var i,r,a=e.locales[e.options.currentLocale],s={before:n.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:n.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(n=n.replace(/\s?\$\s?/,""),i=e._.numberToFormat(t,n,o),t>=0?(s.before=s.before.replace(/[\-\(]/,""),s.after=s.after.replace(/[\-\)]/,"")):t<0&&!e._.includes(s.before,"-")&&!e._.includes(s.before,"(")&&(s.before="-"+s.before),r=0;r<s.before.length;r++)switch(s.before[r]){case"$":i=e._.insert(i,a.currency.symbol,r);break;case" ":i=e._.insert(i," ",r+a.currency.symbol.length-1)}for(r=s.after.length-1;r>=0;r--)switch(s.after[r]){case"$":i=r===s.after.length-1?i+a.currency.symbol:e._.insert(i,a.currency.symbol,-(s.after.length-(1+r)));break;case" ":i=r===s.after.length-1?i+" ":e._.insert(i," ",-(s.after.length-(1+r)+a.currency.symbol.length-1))}return i}}),e.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(t,n,o){var i=("number"!=typeof t||e._.isNaN(t)?"0e+0":t.toExponential()).split("e");return n=n.replace(/e[\+|\-]{1}0/,""),e._.numberToFormat(Number(i[0]),n,o)+"e"+i[1]},unformat:function(t){var n=e._.includes(t,"e+")?t.split("e+"):t.split("e-"),o=Number(n[0]),i=Number(n[1]);return i=e._.includes(t,"e-")?i*=-1:i,e._.reduce([o,Math.pow(10,i)],function(t,n,o,i){var r=e._.correctionFactor(t,n);return t*r*(n*r)/(r*r)},1)}}),e.register("format","ordinal",{regexps:{format:/(o)/},format:function(t,n,o){var i=e.locales[e.options.currentLocale],r=e._.includes(n," o")?" ":"";return n=n.replace(/\s?o/,""),r+=i.ordinal(t),e._.numberToFormat(t,n,o)+r}}),e.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(t,n,o){var i,r=e._.includes(n," %")?" ":"";return e.options.scalePercentBy100&&(t*=100),n=n.replace(/\s?\%/,""),i=e._.numberToFormat(t,n,o),e._.includes(i,")")?((i=i.split("")).splice(-1,0,r+"%"),i=i.join("")):i=i+r+"%",i},unformat:function(t){var n=e._.stringToNumber(t);return e.options.scalePercentBy100?.01*n:n}}),e.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(e,t,n){var o=Math.floor(e/60/60),i=Math.floor((e-60*o*60)/60),r=Math.round(e-60*o*60-60*i);return o+":"+(i<10?"0"+i:i)+":"+(r<10?"0"+r:r)},unformat:function(e){var t=e.split(":"),n=0;return 3===t.length?(n+=60*Number(t[0])*60,n+=60*Number(t[1]),n+=Number(t[2])):2===t.length&&(n+=60*Number(t[0]),n+=Number(t[1])),Number(n)}}),e},(e=numeral$2).exports?e.exports=n():t.numeral=n()),numeral$2.exports;var e,t,n}var numeralExports=requireNumeral();const numeral=/* @__PURE__ */getDefaultExportFromCjs(numeralExports),zeniStrings={appName:"Zeni",card:{cashZero:"Cash Zero",yrs:"yrs",time:"time",underReview:"(Under Review)"},common:{skip:"Skip",remove:"Remove",save:"Save",submit:"Submit",send:"Send",back:"Back",close:"Close",download:"Download",search:"Search",update:"Update",copy:"Copy",upload:"Upload",apply:"Apply",clear:"Clear",done:"Done",all:"All",as:"as",in:"In",by:"by",custom:"Custom",zeniIncText:"© Zeni Inc. __year__",zeniInc:"Zeni Inc.",optional:"Optional",required:"Required",asOf:"as of",add:"Add",edit:"Edit",more:"More",delete:"Delete",gotIt:"Got it",deleted:"Deleted",sent:"Sent",yes:"Yes",no:"No",to:"to",of:"of",and:"and",review:"Review",due:"due",loading:"loading",others:"others",other:"other",reacted:"Reacted",found:"Found",failed:"Failed",post:"Post",ignore:"Ignore",create:"Create",resolve:"Resolve",for:"For",kb:"KB",mb:"MB",join:"Join",from:"from",on:"on",new:"New",chat:"Chat",collapseAll:"Collapse All",expandAll:"Expand All",rename:"Rename",reset:"Reset",resets:"resets",resetsCap:"Resets",updates:"updates",show:"Show",view:"View",numbers:{maximumCount:99,maximumUserAvatarCount:9,maximumUserCount:9},cc:"cc",host:"host",attendees:"attendees",scheduleTypes:{prepaid_expenses:"Prepaid",fixed_assets:"Fixed Asset",accrued_expenses:"Accrual",deferred_revenue:"Deferred Revenue"},texts:{action:"Action",assetId:"Asset ID",deferredRevenue:"Deferred Revenue",duplicate:"Duplicate",expenseCategory:"Expense Category",invoiceAmount:"Invoice Amount",lifecycle:"Lifecycle",notNeeded:"Not needed",period:"Period",postingDate:"Posting Date",revert:"Revert",serviceMonth:"Service month",somethingElse:"Something else",zeroDollarDecimalPlaceholder:"$0.00",zeroDollarPlaceholder:"$0",zeni:"Zeni",ai:"AI",aiAgents:"AI Agents",table:"Table",chart:"Chart",chargebee:"Chargebee",confirmAction:"Confirm action",zeniAI:"Zeni AI",zeniTeam:"Zeni Team",unreview:"Unreview",searchShortcutCmd:"Cmd + K",searchShortcutCtrl:"Ctrl + K",reload:"Reload",goHome:"Go Home",refresh:"Refresh",filter:"Filter",name:"Name",select:"Select",selectReason:"Select reason",goBack:"Go Back",minimize:"Minimize",maximize:"Maximize",closed:"Closed",customer:"Customer",frequency:"Frequency",startDate:"Start Date",endDate:"End Date",total:"Total",totalAmount:"Total Amount",addComment:"Add Comment",addMore:"Add More",clearAll:"Clear All",noData:"No Data",remaining:" Remaining",limit:"Limit",perMonth:"Per Month",limitReset:"Limit Resets:",spent:"Spent",user:"User",anonymousUser:"Anonymous User",tasks:"Tasks",comment:"Comment",comments:"Comments",read:"Read",unread:"Unread",mention:"Mention",mentions:"@Mentions",recommendedVendor:"Recommended Vendor",recommendedCategory:"Recommended Category",recommendedClass:"Recommended Class",alternateVendor:"Alternative Vendor",alternateCategory:"Alternative Category",alternateClass:"Alternative Class",primaryRecommendation:"Primary Recommendation",alternateRecommendation:"Alternative Recommendation",thoughtProcess:"Thought Process",insured:"Insured",monthInsightSent:"Insights Sent",subject:"Subject",refer:"Refer",copy:"copy",copied:"copied",invite:"invite",issue:"Issue",issues:"Issues",item:"Item",items:"Items",status:"Status",reviewStatus:"Review Status",priority:"Priority",tag:"Tag",groupName:"Group Name",dueDate:"Due Date",assignee:"Assignee",createdBy:"Created By",reply:"Reply",replies:"Replies",hideReply:"Hide reply",hideReplies:"Hide replies",noReply:"No replies",open:"Open",resolved:"Resolved",payment:"payment",payments:"payments",deposits:"deposits",these:"these",this_:"this",bill:"bill",bills:"bills",report:"report",reports:"reports",they:"they",it:"it",have:"have",has:"has",are:"are",is:"is",do_:"do",does:"does",maxLimit:"(Max limit reached)",or:"or",bankAccount:"Bank Account",expenseCategories:"Expense Categories",owner:"Owner",category:"Category",class:"Class",complete:"complete",saved:"saved",vendor:"Vendor",paymentAccount:"Payment Account",transaction:"Transaction",transactions:"Transactions",date:"Date",receipts:"Receipts",amount:"Amount",transactionType:"Type",review:"Review",expense:"Expense",type:"Type",box:"Box",type1099:"1099 Type",maxLimitReached:"Max limit reached",undo:"Undo",ein:"ein",ssn:"ssn",confidence:"Confidence",high:"High",medium:"Medium",low:"Low",current:"Current",previous:"Previous",score:"Score",moreActions:"More Actions",filters:"Filters",excluded:"Excluded",account:"Account",accountAlreadyExists:"Account already exists.",accountDetails:"Account Details",accountName:"Account Name",accounts:"Accounts",accountsPayable:"Accounts Payable",accountsReceivable:"Accounts Receivable",accruedExpenseCategory:"Accrued Expense Category",accruedExpenses:"Accrued Expenses",accumulatedDepreciationCategory:"Accumulated Depreciation Category",ach:"ACH",achDetails:"ACH Details",actionRequired:"Action Required",actions:"Actions",activity:"Activity",actual:"Actual",add:"Add ",addAccount:"Add account",addAmount:"Add amount",addBankAccount:"Add Bank Account",addCategory:"Add category",addCategory2:"Add Category",addClass:"Add class",addClass2:"Add Class",addCustomAddress:"Add Custom Address",addCustomer:"Add Customer",addDescription:"Add description",addEinOrSsn:"Add EIN/SSN",addEmail:"Add email",addFilter:"Add Filter",addFullName:"Add full name",addFundsFrom:"Add Funds From",addMailingAddress:"Add Mailing Address",addMemo:"Add memo",addMemo2:"Add Memo",addOfficer:"Add Officer",addPayee:"Add Payee",addPlan:"Add Plan",addPricePoint:"Add price point",addReasonOptional:"Add reason (optional)",addRejectionReasonRequired:"Add rejection reason (required)",addRule:"Add Rule",addSuite:"Add suite",addVendor:"Add Vendor",addZipCode:"Add ZIP code",addons:"Addons",address:"Address",admin:"Admin",aiBookkeeping:"AI Bookkeeping",aiCfo:"AI CFO",allApprovals:"All Approvals",allCategories:"All Categories",allClass:"All Class",allSchedulesReviewed:"All schedules reviewed!",allTypes:"All Types",allVendors:"All Vendors",amountDue:"Amount Due",analyzing:"Analyzing",and:" and ",anotherTransfer:"Another Transfer",apAnalyst:"AP Analyst",approvals:"Approvals",archive:"Archive",arr:"ARR",asOf:"As of",askAiCfo:"Ask AI CFO",askAiCfoAQuestionAndGetClear:"Ask AI CFO a question and get clear answers.",assets:"Assets",auditLog:"Audit Log",automateCashManagement:"Automate Cash Management",available:"Available",awaitingAllApproval:"Awaiting All Approval",awaitingAllApprovals:"Awaiting All Approvals",awaitingMyApproval:"Awaiting My Approval",backSide:"Back Side",balanceSheet:"Balance Sheet",balanceUnavailable:"Balance unavailable!",bankConnection:"Bank Connection",bankNameIsRequiredForAccount:"Bank Name is required for account.",bankTransfer:"Bank Transfer",basedOnZeniGptRecommendation:"Based on Zeni GPT recommendation",between:"Between",bill2:"Bill",billPayment:"Bill Payment",billing:"Billing",billingAddress:"Billing Address",billingCycles:"Billing Cycles",bold:"Bold",bookkeeping:"Bookkeeping",bulletList:"Bullet List",business:"Business",businessChecking:"Business Checking",businessDays:"business days",businessDetails:"Business Details",businessVerification:"Business Verification",businessVerificationDetails:"Business Verification Details",by:"By",byAi:"by AI",byClickingTransferIAuthorizeZeniToInitiate:'By clicking "Transfer," I authorize Zeni to initiate the transfer.',byRejectingThisPaymentTheApprovalProcessWill:"By rejecting this payment the approval process will not move forward and no payments will be issued. Help your team understand why this bill should not be paid.",cancelCase:"Cancel Case",cancelSubscription:"Cancel subscription",canceled:"Canceled",capitalizationThreshold:"Capitalization Threshold",card:"Card",cardNumber:"Card Number",cash:"Cash",cashAndEquivalents:"Cash and Equivalents",cashBalance:"Cash Balance",cashFlowFromOperatingActivities:"Cash Flow from Operating Activities",cashFlowStatement:"Cash Flow Statement",cashIn:"Cash In",cashOut:"Cash Out",cashback:"Cashback",cashbackPercentCashback:"__cashback__% Cashback",change:"Change",changeNameFromOldName:'Change name from "__old_name__"',changePercent:"Change %",check:"Check",checkYourBankStatementForA3Letter:'Check your bank statement for a 3-letter code after "#" symbol in "ZENI ACCTVERIFY" transaction.',churnProbability:"Churn Probability",churned:"Churned",clearFilter:"Clear filter",click:"Click ",click2:"Click ",cockpit:"Cockpit",collectFrom:"Collect from",companyDetails:"Company Details",companyName:"Company Name",companyOfficer:"Company Officer",companySettings:"Company Settings",compareSameMonthLastYear:"Compare same month last year $",compareSamePeriodLastYear:"Compare same period last year $",compareSamePeriodLastYearPercent:"Compare same period last year %",compareSameQuarterLastYearPercent:"Compare same quarter last year %",completed:"Completed",confirmChargebeeId:"Confirm Chargebee ID",confirmDeletion:"Confirm Deletion",confirmHubspotId:"Confirm Hubspot ID",congratulationsYouHaveSuccessfullyEstablishedAConnectionWith:"Congratulations! You have successfully established a connection with QuickBooks.",connectBankAccount:"Connect bank account",connectQuickBooks:"Connect QuickBooks",connectToQbo:"Connect to QBO",connectYourBank:"Connect your Bank",connectYourLedger:"Connect your ledger",contact:"Contact",controller:"Controller",cos:"COS",country:"Country",coupon:"Coupon",createAndManageReusableSpendControlPolicies:"Create and manage reusable spend control policies",createGroup:"Create Group",createPolicy:"Create Policy",createPromotionalCredits:"Create Promotional Credits",createRule:"Create Rule",created:"Created",createdAt:"Created At",createdBy2:"Created by",createdDate:"Created Date",creationDate:"Creation Date",credit:"Credit",credit2:"credit",creditCard:"Credit Card",creditCardCredit:"Credit Card Credit",creditCardPayment:"Credit Card Payment",creditCards:"Credit Cards",creditLimit:"Credit Limit",creditNotes:"Credit Notes",csManager:"CS Manager",csat:"CSAT",currency:"Currency",customerCreation:"Customer Creation",customers:"Customers",cvc:"CVC",dataImport:"Data Import",daysDays:"{days} days",debit:"Debit",debit2:"debit",debitCards:"Debit Cards",department:"Department",deposit:"Deposit",description:"description",description2:"Description",details:"Details",discardChanges:"Discard Changes",discount:"Discount",documentsAreEncryptedAndStoredWithSoc2:"Documents are encrypted and stored with SOC 2 Type II compliance.",domesticWire:"Domestic Wire",domesticWireDetails:"Domestic Wire Details",downloadPdf:"Download PDF",downloading:"Downloading...",drafts:"Drafts",dragAndDropOrClick:"Drag & Drop or Click",dropOrClickHereToUpload:"Drop or click here to upload",dueDate2:"Due date",dunning:"Dunning",duplicateEmail:"Duplicate email",eachLineMustHaveACategoryAndAmount:"Each line must have a category and amount",eachLineMustHaveACategoryClassAnd:"Each line must have a category, class and amount",editAddress:"Edit Address",editAndReSubmit:"Edit & Re-Submit",editBill:"Edit Bill",editCustomer:"Edit Customer",enableAccounts:"Enable Accounts",enableCards:"Enable Cards",enterAmount:"Enter amount",enterAnAmountGreaterThan0:"Enter an amount greater than $0",enterBusinessDetailsToCompleteVerification:"Enter business details to complete verification.",enterBusinessDetailsToCompleteVerificationTheKyb:"Enter business details to complete verification.\n The KYB info is required to comply with financial regulations and uphold the security of our customers.",enterProofOfIdentityToCompleteVerification:"Enter proof of identity to complete verification.",enterProofOfIdentityToCompleteVerificationThe:"Enter proof of identity to complete verification.\n The KYC info is required to comply with the Bank Secrecy Act and Anti-Money Laundering regulations.",equity:"Equity",evaluateAll:"Evaluate All",exclude:"Exclude",expenseAccounts:"Expense Accounts",expenses:"Expenses",expensesOpexCogs:"Expenses(Opex + Cogs)",expired:"Expired",externalId:"External ID",externalServicesExposure:"External Services Exposure",failureReason:"Failure Reason",fdicInsured:"FDIC Insured",fees:"+ Fees",fetchingYourDataFromChargebee:"Fetching your data from Chargebee…",fieldsMarkedWithTheZeniAiSparkleWere:"Fields marked with the Zeni AI sparkle were autofilled from your uploaded document.",filterBy:"Filter By",financingActivities:"Financing Activities",firstName:"First Name",fixedAsset:"Fixed Asset",fixedAssets:"Fixed Assets",flexible:"Flexible",for:"For ",forAllBillsInThisSeries:"For all bills in this series",forecast:"Forecast",freeUnlimited:"FREE Unlimited",from:"From",from2:" from ",frontSide:"Front Side",getStarted:"Get Started",getYourCard:"Get Your Card",gotIt:"Got It",greaterThan:"Greater than",grossBurn:"Gross Burn",grossMargin:"Gross Margin",group:"Group",groupCreation:"Group Creation",hide:"Hide",highFive:"High five!",httpsOrOrWwwChaseCom:"https://www.chase.com",httpsOrOrWwwSipcOrg:"https://www.sipc.org",httpsOrOrWwwZeniAiOrLegal:"https://www.zeni.ai/legal/cards",httpsOrOrWwwZeniAiOrPrivacy:"https://www.zeni.ai/privacy-policy",httpsOrOrWwwZeniAiOrTerms:"https://www.zeni.ai/terms",hubspotId:"Hubspot ID",ifSubmittedBillsAreUsingThisAccountThey:"If submitted bills are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new bills.",ifThereAreAnyChargesYouCanEither:"If there are any charges, you can either generate an invoice immediately, or add it to unbilled charges and invoice them later.",imported:"Imported",inProgress:"In Progress",income:"Income",indent:"Indent",initiatedBy:"Initiated By",insuredFunds:"Insured Funds",internalDescription:"Internal Description",internationalWire:"International Wire",internationalWireDetails:"International Wire Details",introducing:"Introducing",introducing2:"INTRODUCING",invalidAccountNumber:"Invalid account number",invalidEmail:"Invalid email",invalidRoutingNumber:"Invalid routing number",investingActivities:"Investing Activities",invite2:"Invite",invitePeople:"Invite People",inviteViaEmail:"Invite via Email",invoice:"Invoice",invoiceBranding:"Invoice Branding",invoiceDate:"Invoice Date",invoiceNumber:"Invoice Number",invoiceSummary:"Invoice Summary",invoices:"Invoices",invoicing:"Invoicing",issueCredit:"Issue Credit",issueCreditNote:"Issue Credit Note",italic:"Italic",jePostingDate:"JE Posting Date",jeSchedules:"JE Schedules",keepEditing:"Keep Editing",keepInMindThatMergingVendorProfilesIs:"Keep in mind that merging vendor profiles is permanent. You can't undo this later.",last12Months:"Last 12 Months",last30Days:"Last 30 Days",last3Months:"Last 3 Months",last6Months:"Last 6 Months",last90Days:"Last 90 Days",lastMonth:"Last Month",lastName:"Last Name",lastReportSent:"Last Report Sent",lastSync:"Last Sync",lastTraining:"Last Training",lastUpdated:"Last Updated",lastUpdated2:"Last updated",lastUpdatedBy:"Last Updated By",lastWeek:"Last Week",lastYear:"Last Year",lastYear2:"Last Year - ",learnMore:"Learn More",legalName:"Legal Name",lessThan:"Less than",liabilities:"Liabilities",lineItems:"Line Items",link:"Link",linkBankAccount:"Link Bank Account",linkedAccount:"Linked Account",live:"Live",loading:"Loading...",loading2:"Loading",lock:"Lock",logout:"Logout",mailingAddress:"Mailing Address",mailingDetails:"Mailing Details",maintainBalanceIn:"Maintain Balance In",manageYourBusinessVerificationBankDetailsToMake:"Manage your business verification, bank details to make Zeni work better for you.",manager:"Manager",managerOfManager:"Manager of Manager",manual:"Manual",matched:"Matched",maximumAmountPerSingleTransaction:"Maximum amount per single transaction",memo:"Memo",merchant:"Merchant",merge:"Merge",method:"Method",mileage:"Mileage",monthly:"Monthly",months:"Months",moreActions2:"More actions",moveMoney:"Move Money",mrr:"MRR",needsToCompleteTheirProfileBeforeTheCard:" needs to complete their profile before the card can be shipped.",needsToCompleteTheirProfileToAccessThis:" needs to complete their profile to access this card.",net15:"Net-15",net30:"Net-30",net45:"Net-45",net60:"Net-60",netBurn:"Net Burn",netCashFlow:"Net Cash Flow",netIncome:"Net Income",netIncomeOrBurn:"Net Income / Burn",netRevenue:"Net Revenue",new:"NEW",newBill:"New Bill",newCustomer:"New Customer",newReimbursement:"New Reimbursement",nextBilling:"Next Billing",noAccountsFound:"No accounts found!",noCustomersFound:"No customers found",noEligibleAccountsAvailable:"No eligible accounts available.",noStatementsFound:"No Statements found",noVendorsMatchedYourSearch:"No vendors matched your search.",noVendorsToDisplayYet:"No vendors to display yet!",notSet:"Not set",notify:"Notify",nps:"NPS",ofEveryMonth:"of every month",off:"Off",offboarded:"Offboarded",offline:"Offline",ok:"OK",okay:"Okay",onThe:"On the ",onboarding:"Onboarding",ongoing:"Ongoing",openInFullView:"Open in full view",openInSidePanel:"Open in side panel",operatingActivities:"Operating Activities",operatingExpenses:"Operating Expenses",operatingExpensesOpex:"Operating Expenses (OPEX)",or2:"OR",orUseCreditCardInstead3PercentFee:"Or, use credit card instead (3% fee)",other:"Other",outdent:"Outdent",overview:"Overview",paid:"Paid",parent:"Parent",passport:"Passport",pause:"Pause",pauseSubscription:"Pause subscription",pay:"Pay",payee:"Payee",payment2:"Payment",paymentDate:"Payment Date",paymentDestination:"Payment Destination",paymentDetails:"Payment Details",paymentMethod:"Payment Method",paymentOrDeposit:"Payment/Deposit",paymentStatus:"Payment Status",paymentType:"Payment Type",payments2:"Payments",payroll:"Payroll",people:"People",periodRange:"Period Range",periodTotal:"Period Total",periodsColumnsSelected:"periods + columns selected",personalIdIsRequiredForProductType:"Personal ID is required for _product_type_.",phone:"Phone",phoneIsRequiredForProductType:"Phone is required for _product_type_",physical:"Physical",pickDate:"Pick date",plan:"Plan",planHigherLimit:"Plan Higher Limit",planLowerLimit:"Plan Lower Limit",plans:"Plans",pleaseSelectACategory:"Please select a category",pleaseWaitUntilTheProcessIsCompleteBefore:"Please wait until the process is complete before making any further changes.",portfolioAllocation:"Portfolio Allocation",prepaidExpense:"Prepaid Expense",prepaidExpenses:"Prepaid Expenses",preparer:"Preparer",preview:"Preview",price:"Price",privacyPolicy:"Privacy Policy",private:"Private",productName:"Product Name",productVerticals:"Product Verticals",profitAndLoss:"Profit & Loss",project:"Project",projects:"Projects",q:"Q",qbo:"QBO",qty:"Qty",quarterly:"Quarterly",quarters:"Quarters",reUploadStatement:"Re-upload Statement",readyToUseBalance:"Ready to use balance",realmId:"Realm ID",reason:"Reason",receipt:"receipt",receipts2:"receipts",receiptsTo:"receipts to",recommendedLimit:"Recommended limit",recurring:"Recurring",redo:"Redo",refund:"Refund",regenerate:"Regenerate",reimbursement:"Reimbursement",rejected:"Rejected",remaining2:"remaining",renewalDate:"Renewal Date",rentalIncome:"Rental Income",replace:"Replace",reportWithAccounts:"Report with accounts",reports2:"Reports",require:"Require",requireAReceiptAboveThisAmount:"Require a receipt above this amount",requireReceipt:"Require Receipt",requiredFoundationForBothAiAgents:"Required foundation for both AI Agents",resendInvite:"Resend Invite",resetRealmId:"Reset realm ID",resetToDefault:"Reset to default",resolveCase:"Resolve Case",resume:"Resume",resumeDunning:"Resume Dunning",retain:"Retain",retryNow:"Retry Now",retryPayment:"Retry Payment",returned:"Returned",revenue:"Revenue",revenues:"Revenues",reviewAndConfirm:"Review & Confirm",reviewVendor:"Review Vendor",reviewer:"Reviewer",rewards:"Rewards",role:"Role",rolling12MonthsAverage:"Rolling 12 months Average",rolling12MonthsTotal:"Rolling 12 months Total",runway:"Runway",sameMonthLastYearSamePeriodLastYear:"Same month last year - -same_period_last_year-",sameQuarterLastYearSamePeriodLastYear:"Same quarter last year - -same_period_last_year-",saveAccount:"Save Account",saveChanges:"Save Changes",saveDetails:"Save Details",saving:"Saving…",savings:"Savings",scheduleBill:"Schedule Bill",scheduleCategory:"Schedule Category",scheduleCreationDate:"Schedule Creation Date",scheduleDemo:"Schedule Demo",scheduled:"Scheduled",searchByNameOrEmail:"Search by name or email",searchForSchedules:"Search for schedules",securelyAddYourPreferredPaymentMethodToActivate:"Securely add your preferred payment method to activate your account.",select2:"Select...",selectAccount:"Select Account",selectAccount2:"Select account",selectAccountToTransferBetweenAccounts:"Select account to transfer between accounts",selectApproverS:"Select approver(s)",selectCategory:"Select category",selectClass:"Select class",selectCountry:"Select country",selectCustomer:"Select customer",selectDocument:"Select Document",selectDueDate:"Select due date",selectFileOrDropHere:"Select file or drop here",selectMethod:"Select method",selectPlan:"Select plan",selectSource:"Select source",selectStartDate:"Select start date",selectType:"Select type",selected:" selected",selectedCategoryWasDeletedInQuickBooksPleaseSelect:"Selected category was deleted in QuickBooks. Please select an active one.",selectedClassWasDeletedInQuickBooksPleaseSelect:"Selected class was deleted in QuickBooks. Please select an active one.",sendEmail:"Send email",sendInvite:"Send Invite",sendMoney:"Send Money",sendReminder:"Send Reminder",setUpPayment:"Set up Payment",settings:"Settings",setupAchPayments:"Setup ACH Payments",setupPayment:"Setup Payment",showDescriptionInInvoices:"Show Description in Invoices",showYieldCalculator:"Show Yield Calculator",showing:"Showing",signInSecurelyViaPlaid:"Sign in securely via Plaid",signUpForFree:"Sign Up for FREE",siteDefault:"Site Default",routines:"Scheduled",skills:"Skills",skipGoToMyDashboard:"Skip — go to my dashboard",snooze:"Snooze",somethingWentWrong:"Something went wrong.",sorryWeCouldnTFindAnyResults:"Sorry! We couldn't find any results.",source:"Source",sourceAccount:"Source Account",spendManagementListViewInnerElementType:"Spend management list view inner element type",startMonth:"Start Month",startVerification:"Start Verification",stateId:"State ID",statements:"Statements",step1:"Step 1",step2:"Step 2",strict:"Strict",subscription:"Subscription",subscriptionDate:"Subscription Date",subscriptions:"Subscriptions",subsidiary:"Subsidiary",summary:"Summary",switchNow:"Switch Now",taDa:"Ta-da!",tags:"Tags",task:"Task",tax:"Tax",taxClassification:"Tax Classification",taxLead:"Tax Lead",taxStatus:"Tax Status",taxable:"Taxable",termEnd:"Term End",termsOfService:"terms of service",theCategoryUpdateRecommendationIsBased:'The "category" update recommendation is __based__',theClassUpdateRecommendationIsBased:'The "class" update recommendation is __based__',theUltimate:"The Ultimate",then:" then ",thisIsTheAmountYouLlEarnOn:"This is the amount you'll earn on your funds on an annualized basis.",thisMonth:"This Month",thisProcessMayTake23Min:"This process may take 2-3 min",thisProcessMayTakeAFewSeconds:"This process may take a few seconds.",thisWeek:"This Week",thisYear:"This Year",timeSpent:"Time Spent",tin:"TIN",to:"To",to2:" to ",toGetStartedPleaseLinkYourPaymentMethod:"To get started, please link your payment method and enter company billing address.",toNewName:' to "__new_name__"',toSetUpYourDashboardWeMustConnect:"To set up your dashboard, we must connect with your QuickBooks account.",totalLiabilitiesAndEquity:"Total Liabilities & Equity",totalMrr:"Total MRR",totalPayable:"Total Payable",transactionDate:"Transaction Date",transactionId:"Transaction ID",transactionLimit:"Transaction Limit",transactionType2:"Transaction Type",transfer:"Transfer",transferBetweenAccounts:"Transfer Between Accounts",transferFrom:"Transfer From",transferTo:"Transfer To",transferredFundsTypicallyTake12BusinessDays:"Transferred funds typically take 1-2 business days to show in the account.",typeAndSelectVendor:"Type and select vendor",unableToConnectQuickbooksPleaseTryAgain:"Unable to connect quickbooks. Please try again.",unarchive:"Unarchive",uncategorizedExpenses:"Uncategorized Expenses",underline:"Underline",understood:"Understood",unitAmount:"Unit Amount",unknown:"Unknown",unleashThePowerOfAiBookkeeping:"Unleash the Power of AI Bookkeeping",unlock:"Unlock",unlockAchSameDayWithZeniChecking:"Unlock ACH Same Day with Zeni Checking",unsnooze:"Unsnooze",unsupportedFiletype:"Unsupported Filetype",upTo:"Up to",updatePlan:"Update Plan",updateRealmId:"Update realm ID",updateSpendLimit:"Update spend limit",updateTo:"Update to",updateYourBooksDailyAccessRealTimeInsights:"Update your books daily, access real-time insights, and receive personalized support from a dedicated team of experts — all on a single platform",upgradeStatus:"Upgrade Status",uploadAPolicyDocumentToExtractAndCreate:"Upload a policy document to extract and create a new policy.",uploadDocument:"Upload document",uploadStatement:"Upload Statement",uploading:"Uploading...",userNeedsToCompleteTheirProfileBeforeThe:"__user__ needs to complete their profile\n before the card can be shipped",userNeedsToCompleteTheirProfileToAccess:"__user__ needs to complete their profile\n to access this card",utilization:"Utilization",v1099Details:"1099 Details",v1099Filing:"1099 Filing",v175PercentCashback:"1.75% cashback",v25m:"> 2.5M",v500k:"$500K",variance:"Variance",vendorOwner:"Vendor Owner",verifyBusiness:"Verify Business",verifyIdentity:"Verify Identity",verifyYourIdentity:"Verify your identity",viewDetails:"View Details",virtual:"Virtual",visibility:"Visibility",voidInvoice:"Void Invoice",warnings:"Warnings",weekly:"Weekly",wholesaleTrade:"Wholesale Trade",wire:"Wire",wireTransfer:"Wire Transfer",workflows:"Workflows",year:"Year",yearToDateLastYearTotal:"Year to Date last year Total",yearToDateTotal:"Year to Date Total",yearly:"Yearly",years:"Years",youCanUseAWireTransferIfYou:"You can use a wire transfer if you want to transfer the entire amount at once. ",youNeedToCompleteYourProfileBeforeThe:"You need to complete your profile before the card can be shipped.",youNeedToCompleteYourProfileToAccess:"You need to complete your profile to access this card.",youVeTransferred:"You’ve transferred ",yourAccountNumbersDonTMatch:"Your account numbers don’t match!",ytdLastYearTotal:"YTD last year Total",ytdSpend:"YTD Spend",ytdTotal:"YTD Total",zeniAIIcon:"zeniAIIcon",zeniCardsIsShuttingDown:"Zeni Cards is shutting down",zeniTermsOfService:"Zeni Terms of Service"},labels:{sourceAccount:"Source Account:",paymentMethod:"Payment Method:",paymentDate:"Payment Date:",sendPaymentTo:"Send Payment To:",name:"Name:",cvv:"CVV:",expiryDate:"Expiry Date:",dateOfBirth:"Date of Birth:",dob:"DOB:",pin:"PIN:",phone:"Phone:",mailingAddress:"Mailing Address:",address:"Address:",email:"Email:",total:"Total:",subject:"Subject:",invoiceAmount:"Invoice Amount:",websiteURL:"Website URL:",firstName:"First Name:",lastName:"Last Name:",category:"Category:",class:"Class:",amount:"Amount:",payee:"Payee:",date:"Date:",memo:"Memo:",companyName:"Company Name:",cardName:"Card Name:",department:"Department:",limit:"Limit:",mergedTo:"Merged to:",vendor:"Vendor:",transferFrom:"Transfer From:",transferTo:"Transfer To:",products:"Products:",legalName:"Legal Name:",taxClassification:"Tax Classification:",accountNickname:"Account Nickname:",accountNumber:"Account Number:",accountType:"Account Type:",annualYieldEarned:"Annual Yield Earned:",balanceDue:"Balance Due:",billDate:"Bill Date:",certificateOfIncorporation:"Certificate of Incorporation:",confirmAccountNumber:"Confirm Account Number:",country:"Country:",coupon:"Coupon:",currentAverageYield:"Current Average Yield:",customer:"Customer:",depositedTo:"Deposited To:",description:"Description:",dueDate:"Due Date:",einDocument:"EIN Document:",industry:"Industry:",invoiceDate:"Invoice Date:",invoiceNo:"Invoice No.:",owner:"Owner:",paymentArrived:"Payment arrived:",paymentCurrency:"Payment Currency:",period:"Period:",planLowerLimit:"Plan Lower Limit:",project:"Project:",recurringAddons:"Recurring Addons:",scheduledDate:"Scheduled Date:",sendTo:"Send To:",sortBy:"Sort By:",stateOfIncorporation:"State of Incorporation:",status:"Status:",subtotal:"Subtotal:",transactionDate:"Transaction Date:",type:"Type:",typeOfIncorporation:"Type of Incorporation:",website:"Website:"},timeStrings:{hour:"hour",hours:"hours",minutes:"minutes",minute:"minute",day:"day",days:"days",justNow:"Just Now",minAgo:"min ago",minsAgo:"mins ago",hrAgo:"hr ago",hrsAgo:"hrs ago",yearAgo:"year ago",monthAgo:"month ago",weekAgo:"week ago",dayAgo:"day ago",secondAgo:"second ago",yearsAgo:"years ago",monthsAgo:"months ago",weeksAgo:"weeks ago",daysAgo:"days ago",secondsAgo:"seconds ago",today:"Today",upcoming:"Upcoming",overdue:"Overdue",this_week:"This week",this_month:"This month",yesterday:"Yesterday",last_7_days_this_month:"Last 7 Days",earlier_this_month:"Earlier this Month",month:"Month",weeks:"weeks",week:"week"},placeholder:{firstNamePlaceholder:"First name",lastNamePlaceholder:"Last name",namePlaceholder:"Add name",frequencyPlaceholder:"Select frequency",endDatePlaceholder:"Select end date",productsPlaceholder:"Select products",datePlaceholder:"Select date",phonePlaceholder:"Add phone",dobPlaceholder:"Add date of birth",addressPlaceholder:"Add address"},errorMessage:{nameError:"Name is required for _product_type_",somethingWentWrong:"Something went wrong!",invalidPhoneNumber:"Invalid phone number",somethingWentWrongPleaseTryAgain:"Something went wrong. Please try again."},sectionTitles:{newVendor:"New Vendor",editVendor:"Edit Vendor",vendorDetails:"Vendor Details"},headers:{tenants:"Tenants",vendors:"Vendors",requestedVendor:"Requested Vendor",originalVendor:"Original Vendor",recommended:"Recommended",sortBy:"Sort By",notes:"Notes",notifications:"Notifications",globalComment:"Global Comment",bills:"Bills",reimbursements:"Reimbursements",auditScore:"Audit Score",confidenceScore:"Confidence Score",jeSchedules:"Journal Entries",fluxAnalysis:"Flux Analysis",insights:"Insights",reconciliation:"Reconciliation",billingAddress:"Add Company Billing Address",billingAddressSubText:"Enter your company’s official billing address for invoicing."},numberFormat:{toTwoDecimal:"0,0.[00]",roundedOff:"0,0"},strings:{asterisk:"*",commaSpace:", ",doubleAsterisk:"**",ellipsis:"...",maskedDigits:"••••",one:"1",spacedMiddleDot:" · ",zero:"0",aboutField:"About",dot:".",dividerDot:"•",middleDot:"·",leftArrow:"←",rightArrow:"→",hyphen:"-",plus:"+",colon:":",empty:"",space:" ",comma:",",slash:"/",apostrophes:"'s",questionMark:"?",underscore:"_",openingBrace:"(",closingBrace:")",pipe:"|",atTheRate:"@",newLine:"\n",spaceWithEscape:"\\s",backspace:"/",hash:"#",percentage:"%",emDash:"—",invalidTooltipDataMessage:"Invalid data provided for {variant} tooltip variant"},tooltips:{editName:"Edit name",addW9:"Add W9",viewW9:"View W9",viewReceipt:"View Receipt",viewReceipts:"View Receipts",addReceipt:"Add Receipt",addMissingReceipt:"Add Missing Receipt"},datePicker:{businessDay:"BD"},fileElementPicker:{formatNotSupported:"Format not supported, please re-upload",sizeLimit:"Size limit exceeded (Max 10 MB), please re-upload"},documents:{formatJPGText10MB:"Format: JPG or JPEG. Size: 10 MB or less.",formatImageText10MB:"Format: JPG or PNG. Size: 10 MB or less.",formatDocumentText10MB:"Format: JPG, PNG or PDF. Size: 10 MB or less",formatDocumentMax10MB:"PDF, JPG or PNG (Max 10 MB)",attachFile:"Attach File",formatImageAndDocumentAttachments:"Format: JPG, PNG, Excel or PDF.",attachmentFileSize700KB:"Size 700Kb or less",singleFileUploadSizeErrorMessage:"File size exceeds the maximum limit. Please upload a file under __maxFileSize__",multipleFileUploadSizeErrorMessage:"One or more files exceed the maximum limit. Please upload files under __maxFileSize__ each"},snackBar:{success:"Success",error:"Error",common:{success:"Details updated successfully.",failed:"Something went wrong! Please try again.",notification:""},billing_address_view:{success:"Billing Address saved successfully.",failed:"Couldn't save Billing Address. Please try again.",notification:""},product_services_update:{success:"Product services updated successfully.",failed:"Couldn't update product services. Please try again.",notification:""},qbo_realm_id_update:{success:"QBO realm ID updated successfully.",failed:"Couldn't update the QBO realm ID. Please try again.",notification:""},task_activities_toast_notification:{success:"",failed:"",notification:"_message_text_"},task_created_toast_notification:{success:"",failed:"",notification:""},task_assigned_toast_notification:{success:"",failed:"",notification:"New Task is assigned to you."},task_due_tomorrow_toast_notification:{success:"",failed:"",notification:"_task_name_ is due tomorrow and currently is in _status_name_ status."},task_deleted_toast_notification:{success:"",failed:"",notification:"_task_name_ was deleted."},task_archived_toast_notification:{success:"",failed:"",notification:"_task_name_ was archived."},task_overdue_toast_notification:{success:"",failed:"",notification:"_task_name_ is overdue."},task_overdue_toast_notification_creator:{success:"",failed:"",notification:"_task_name_ is overdue."},task_notification_count:{success:"",failed:"",notification:"You have _notification_count_ new notifications"},create_card_setup:{success:"Setup intent created",failed:"_api-error_.",notification:""},confirm_card_setup:{success:"Card setup intent confirmed",failed:"_api-error_.",notification:""},add_card_payment_source:{success:"Card linked successfully",failed:"_api-error_.",notification:""},fetch_payment_sources:{success:"Fetch Payment Sources",failed:"_api-error_.",notification:""},create_tag:{success:"Create Tag",failed:"_api-error_.",notification:""},je_bill_link:{success:"Bill/Expense linked for _schedule_name",failed:"_api-error_.",notification:""},delete_tag:{success:"Delete Tag",failed:"_api-error_.",notification:""},real_time_approver_added:{success:"_approvers-added_ have been added as new approver(s).",failed:"_api-error_.",notification:""},receipts_upload:{success:"Receipt(s) uploaded",failed:"_api-error_.",notification:""},receipts_bulk_match:{success:"_matched_ out of _total_ Receipts Matched",failed:"",notification:""},receipt_match:{success:"1 Receipt matched",failed:"Failed to match receipt. Please try again.",notification:""},transactionDetails_updatingPastTransactions:{success:"Updating past transactions",failed:"",notification:""},transactionDetails_transactionUpdated:{success:"Transaction updated successfully",failed:"",notification:""},transactions_categorized_updated_failed:{success:"_transactions_count_ Transactions categorized.",failed:"_transactions_count_ Transactions failed.",notification:"_transactions_count_ Transactions updated."},transaction_categorized_updated_failed:{success:"_transactions_count_ Transaction categorized.",failed:"_transactions_count_ Transaction failed.",notification:"_transactions_count_ Transaction updated."},transactionsCategorized_transactionsUpdated:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transactions updated."},transactionsCategorized_transactionUpdated:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transaction updated."},transactionCategorized_transactionsUpdated:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transactions updated."},transactionCategorized_transactionUpdated:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transaction updated."},transactionsCategorized_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _failed_count_ Transactions failed."},transactionsCategorized_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _failed_count_ Transaction failed."},transactionCategorized_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n_failed_count_ Transactions failed."},transactionCategorized_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n_failed_count_ Transaction failed."},transactionsUpdated_transactionsFailed:{success:"",failed:"",notification:"_updated_count_ Transactions updated.\n _failed_count_ Transactions failed."},transactionsUpdated_transactionFailed:{success:"",failed:"",notification:"_updated_count_ Transactions updated.\n _failed_count_ Transaction failed."},transactionUpdated_transactionsFailed:{success:"",failed:"",notification:"_updated_count_ Transaction updated.\n _failed_count_ Transactions failed."},transactionUpdated_transactionFailed:{success:"",failed:"",notification:"_updated_count_ Transaction updated.\n _failed_count_ Transaction failed."},transactionsCategorized_transactionsUpdated_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transactions updated.\n _failed_count_ Transactions failed."},transactionsCategorized_transactionsUpdated_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transactions updated.\n _failed_count_ Transaction failed."},transactionsCategorized_transactionUpdated_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transaction updated.\n _failed_count_ Transactions failed."},transactionCategorized_transactionsUpdated_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transactions updated.\n _failed_count_ Transactions failed."},transactionsCategorized_transactionUpdated_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transactions categorized.\n _updated_count_ Transaction updated.\n _failed_count_ Transaction failed."},transactionCategorized_transactionsUpdated_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transactions updated.\n _failed_count_ Transaction failed."},transactionCategorized_transactionUpdated_transactionsFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transaction updated.\n _failed_count_ Transactions failed."},transactionCategorized_transactionUpdated_transactionFailed:{success:"",failed:"",notification:"_categorized_count_ Transaction categorized.\n _updated_count_ Transaction updated.\n _failed_count_ Transaction failed."},people_invite_people:{success:"Invitation sent",failed:"",notification:""},people_invite_multiple_people:{success:"Users invited",failed:"",notification:""},people_update_person:{success:"User info changed",failed:"",notification:""},people_delete_person:{success:"User deleted",failed:"",notification:""},reimbursement_updated:{success:"Reimbursement saved",failed:"_api-error_.",notification:""},reimbursement_approved:{success:"Reimbursement approved",failed:"_api-error_.",notification:""},reimbursement_rejected:{success:"Reimbursement rejected",failed:"_api-error_.",notification:""},reimbursement_sent_for_approval:{success:"Reimbursement sent for approval",failed:"_api-error_.",notification:""},reimbursement_deleted:{success:"Reimbursement deleted",failed:"_api-error_.",notification:""},reimbursement_cancelled:{success:"Reimbursement canceled",failed:"_api-error_.",notification:""},reimbursement_cancelled_deleted:{success:"Reimbursement canceled and deleted",failed:"_api-error_.",notification:""},reimbursement_bulk_submit:{success:"_count_ _report_ will be _action_. You'll be notified once it's done.",failed:"_api-error_.",notification:""},reimbursement_bulk_processed:{success:"_report_ _has_ been _action_. The page will refresh now to reflect updates.",failed:"_api-error_.",notification:""},save_reconcile_for_later:{success:"Reconciliation saved",failed:"Reconciliation not saved. Please try again!",notification:""},reconcile:{success:"_reconcile_account_ reconciliation in progress.",failed:"Reconciliation failed for _reconcile_account_",notification:""},exclude_transaction:{success:"Transaction excluded",failed:"Transaction exclusion failed",notification:""},account_added:{success:"Account added successfully",failed:"",notification:""},issue_charge_card:{success:"New _card_ issued for _user-name_",failed:"",notification:""},issue_charge_cards:{success:"New cards issued",failed:"Couldn't create cards. _api-error_.",notification:""},charge_card_auto_pay_enable:{success:"Early payment enabled",failed:"",notification:""},charge_card_auto_pay_disable:{success:"Early payment disabled",failed:"",notification:""},business_verification_save:{success:"Business Verification Details saved successfully.",failed:"Couldn't save Business Verification Details. Please try again.",notification:""},business_verification_submit:{success:"Business Verification Details submitted successfully.",failed:"Couldn't submit Business Verification Details. Please try again.",notification:""},business_verification_from_bills_submit:{success:"Verified successfully.",failed:"Couldn't submit Business Verification Details. Please try again.",notification:""},plaid_connection:{success:"",failed:"Something went wrong! Please try again.",notification:""},bill_pay_setup:{success:"",failed:"Failed to load Bill Pay Setup Details! Please try again.",notification:""},zeni_accounts_setup:{success:"",failed:"Failed to load Zeni Accounts Setup Details! Please try again.",notification:""},bill_pay_approval_create:{success:"Approval Rule created successfully.",failed:"Couldn't create Approval Rule! Please try again.",notification:""},bill_pay_duplicate_approval_create:{success:"Approval Rule created successfully.",failed:"_api-error_",notification:""},bill_pay_approval_update:{success:"Approval Rule updated successfully.",failed:"Couldn't update Approval Rule! Please try again.",notification:""},update_zeni_account_nickname:{success:"Zeni Account nickname updated successfully",failed:"_api-error_.",notification:""},create_checking_account:{success:"New Business Account Added",failed:"_api-error_.",notification:""},deposit_check:{success:"Check Deposit Successful",failed:"_api-error_.",notification:""},bill_pay_duplicate_approval_update:{success:"Approval Rule updated successfully.",failed:"_api-error_",notification:""},bill_pay_approval_delete:{success:"Approval Rule deleted successfully.",failed:"Couldn't delete Approval Rule! Please try again.",notification:""},bill_pay_approval_reorder:{success:"Approval rules reordered.",failed:"Couldn't reorder Approval Rules. Please try again.",notification:""},reimbursement_setup:{success:"",failed:"Failed to load Reimbursements Setup Details! Please try again.",notification:""},reimbursement_approval_create:{success:"Approval Rule created successfully.",failed:"Couldn't create Approval Rule! Please try again.",notification:""},reimbursement_duplicate_approval_create:{success:"Approval Rule created successfully.",failed:"_api-error_",notification:""},reimbursement_approval_update:{success:"Approval Rule updated successfully.",failed:"Couldn't update Approval Rule! Please try again.",notification:""},reimbursement_duplicate_approval_update:{success:"Approval Rule updated successfully.",failed:"_api-error_",notification:""},reimbursement_approval_delete:{success:"Approval Rule deleted successfully.",failed:"Couldn't delete Approval Rule! Please try again.",notification:""},reimbursement_approval_reorder:{success:"Approval rules reordered.",failed:"Couldn't reorder Approval Rules. Please try again.",notification:""},reimbursement_create_mileage:{success:"Mileage rate added successfully.",failed:"_api-error_.",notification:""},reimbursement_update_mileage:{success:"Mileage rate updated successfully.",failed:"_api-error_.",notification:""},reimbursement_accept_term:{success:"",failed:"_api-error_.",notification:""},reimbursement_accept_employee_term:{success:"",failed:"_api-error_.",notification:""},cockpit_month_end_email_sent:{success:"Zeni Insights sent successfully for _company-name_.",failed:"",notification:""},cockpit_month_end_email_save:{success:"Zeni Insights saved successfully for _company-name_.",failed:"",notification:""},cockpit_month_end_email_attachment_upload:{success:"",failed:"Sorry, the file you uploaded is too large. Maximum file size allowed is 700KB",notification:""},audit_score_updated:{success:"Audit Score updated",failed:"",notification:""},create_bank_account_ach:{success:"ACH account added successfully.",failed:"",notification:""},unlink_deposit_account:{success:"",failed:"_api-error_.",notification:""},create_bank_account_wire:{success:"_wire-type_ wire account added successfully.",failed:"",notification:""},create_bank_account_international:{success:"_wire-type_ wire account added successfully.",failed:"",notification:""},bill_pay_updated:{success:"Bill saved",failed:"_api-error_.",notification:""},bill_pay_deleted:{success:"Bill deleted",failed:"_api-error_.",notification:""},bill_pay_bulk_submit:{success:"_count_ _bill_ will be _action_. You'll be notified once it's done.",failed:"_api-error_.",notification:""},bill_pay_bulk_processed:{success:"_bill_ _has_ been _action_. The page will refresh now to reflect updates.",failed:"_api-error_.",notification:""},bill_pay_cancelled_deleted:{success:"Bill canceled and deleted",failed:"_api-error_.",notification:""},bill_pay_cancelled:{success:"Bill canceled",failed:"_api-error_.",notification:""},bill_pay_approved:{success:"Bill approved",failed:"_api-error_.",notification:""},bill_pay_rejected:{success:"Bill rejected",failed:"_api-error_.",notification:""},bill_pay_sent_for_approval:{success:"Bill sent for approval",failed:"_api-error_.",notification:""},bill_pay_accept_term:{success:"",failed:"_api-error_.",notification:""},bill_pay_refund:{success:"Refund process initiated",failed:"_api-error_.",notification:""},bill_pay_retry:{success:"Payment retried",failed:"_api-error_.",notification:""},bill_pay_marked_as_paid:{success:"Bill marked as paid",failed:"_api-error_.",notification:""},update_vendor:{success:"Vendor updated successfully.",failed:"_api-error_.",notification:""},data_refresh_update:{success:"Data refreshed",failed:"_api-error_.",notification:""},delete_bank_account:{success:"Bank account deleted successfully.",failed:"_api-error_.",notification:""},update_debit_card_pin_attempt:{success:"PIN changed successfully",failed:"_api-error_.",notification:""},set_debit_card_pin:{success:"PIN set successfully",failed:"_api-error_.",notification:""},create_bank_account:{success:"",failed:"_api-error_.",notification:""},send_email_magic_link_to_user:{success:"",failed:"_api-error_.",notification:""},qbo_connection_already_linked:{success:"",failed:"This QuickBooks company is already connected to another active tenant.",notification:""},qbo_connection_failed:{success:"",failed:"Unable to connect QuickBooks. Please try again.",notification:""},accounting_projects_qbo_reconnect_failed:{success:"",failed:"Couldn't reconnect QuickBooks. Try again.",notification:""},complete_profile_done:{success:"Profile details saved.",failed:"_api-error_.",notification:""},zeni_account_accept_term:{success:"",failed:"_api-error_.",notification:""},transfer_money:{success:"",failed:"_api-error_.",notification:""},create_vendor:{success:"Vendor created successfully.",failed:"_api-error_.",notification:""},onboarding_customer_view:{success:"Onboarding Business Details fetched successfully.",failed:"Couldn't fetch Onboarding Business Details. Please try again.",notification:""},onboarding_customer_view_complete:{success:"Onboarding status updated successfully.",failed:"Couldn't update Onboarding status. Please try again.",notification:""},onboarding_customer_identity_verification_save:{success:"Onboarding Identity Details saved successfully.",failed:"Couldn't save Onboarding Identity Details. Please try again.",notification:""},onboarding_customer_identity_verification_submit:{success:"Onboarding Identity Details submitted successfully.",failed:"Couldn't submit Onboarding Identity Details. Please try again.",notification:""},onboarding_customer_business_verification_save:{success:"Onboarding Business Details saved successfully.",failed:"Couldn't save Onboarding Business Details. Please try again.",notification:""},onboarding_customer_business_verification_submit:{success:"Onboarding Business Details submitted successfully.",failed:"Couldn't submit Onboarding Business Details. Please try again.",notification:""},retry_bank_account_connection:{success:"Bank account connection completed successfully.",failed:"Bank account connection failed.",notification:""},dashboard_invite_sent:{success:"Dashboard invite sent to _user-name_ for _company-name_ successfully.",failed:"Dashboard invite failed",notification:""},onboarding_info_saved:{success:"Saved successfully",failed:"Save failed",notification:""},approve_original_merchant:{success:'Review request for "_merchant_name_" is approved successfully.',failed:"_api-error_.",notification:""},approve_global_merchant:{success:'Review request for "_original_merchant_name_" to "_approved_merchant_name_" is approved successfully.',failed:"_api-error_.",notification:""},reject_global_merchant:{success:'Vendor "_merchant_name_" review rejected',failed:"_api-error_.",notification:""},create_global_merchant:{success:'Vendor "_global_merchant_name_" successfully added to global list.',failed:"_api-error_.",notification:""},fetch_global_merchant_no_recommendation:{success:'There are no recommendations for the name "_global_merchant_name_".',failed:"_api-error_.",notification:""},save_vendor_sent_for_review:{success:'Vendor "_vendor_name_" sent for the review.',failed:"_api-error_.",notification:""},save_vendor_renamed:{success:'Vendor "_old_vendor_name_" renamed to "_updated_vendor_name_."',failed:"_api-error_.",notification:""},save_vendor_marked_as_employee:{success:"Marked as employee",failed:"_api-error_.",notification:""},save_vendor_marked_as_local_contractor:{success:"Marked as local contractor",failed:"_api-error_.",notification:""},charge_card_setup:{success:"",failed:"Failed to load Cards Setup Details! Please try again.",notification:""},charge_card_receipt_upload:{success:"Card receipt uploaded",failed:"_api-error_.",notification:""},charge_card_resend_invite:{success:"Card invite resent",failed:"_api-error_.",notification:""},charge_card_revoke_invite:{success:"Card invite revoked",failed:"_api-error_.",notification:""},card_policy_created:{success:"New policy created",failed:"_api-error_.",notification:""},card_policy_updated:{success:"Policy updated",failed:"_api-error_.",notification:""},card_policy_deleted:{success:"Policy deleted",failed:"_api-error_.",notification:""},charge_card_update_limit:{success:"Card limit updated to _amount_",failed:"Limit updation failed with _api-error_.",notification:""},charge_cards_update_limit:{success:"Limit updated for _number_of_cards_",failed:"Limit updation failed with _api-error_.",notification:""},update_charge_card_name:{success:'Card _masked_card_number_ renamed to "_new_card_name_"',failed:"Card name updation failed with _api-error_.",notification:""},update_charge_card_name_card_user:{success:'Card renamed to "_new_card_name_"',failed:"Card name updation failed with _api-error_.",notification:""},lock_charge_card:{success:"Card _masked_card_number_ locked",failed:"Card lock failed with _api-error_.",notification:""},lock_charge_card_card_user:{success:"Card locked",failed:"Card lock failed with _api-error_.",notification:""},unlock_charge_card:{success:"Card _masked_card_number_ unlocked",failed:"Card unlock failed with _api-error_.",notification:""},unlock_charge_card_card_user:{success:"Card unlocked",failed:"Card unlock failed with _api-error_.",notification:""},close_charge_card:{success:"Card _masked_card_number_ closed",failed:"Card close failed with _api-error_.",notification:""},unlock_charge_cards:{success:"_number_of_cards_ unlocked",failed:"Cards unlock failed with _api-error_.",notification:""},lock_charge_cards:{success:"_number_of_cards_ locked",failed:"Cards lock failed with _api-error_.",notification:""},close_charge_cards:{success:"_number_of_cards_ closed",failed:"Cards close failed with _api-error_.",notification:""},revoke_invite_charge_cards:{success:"Invite revoked for _number_of_cards_",failed:"Invite revoke failed with _api-error_.",notification:""},create_schedule:{success:'Schedule created for "_vendor_name_"',failed:"Schedule creation failed with _api-error_.",notification:""},save_schedule:{success:'Schedule saved for "_vendor_name_"',failed:"Save schedule failed with _api-error_.",notification:""},je_posted:{success:"JE Posted",failed:"JE Posting failed with _api-error_.",notification:""},actual_matching_match_and_reverse:{success:"Reversed _count_ accruals from _vendor_name_",failed:"Could not reverse accruals from _vendor_name_",notification:"Reversed _count_ accruals from _vendor_name_. Some could not be reversed."},actual_matching_undo_reversal:{success:"Undid _count_ reversal(s) for _vendor_name_",failed:"Could not undo reversal(s) for _vendor_name_",notification:"Undid _count_ reversal(s) for _vendor_name_. Some could not be undone."},ignore_schedule:{success:"Schedule Ignored",failed:"Schedule Ignore failed with _api-error_.",notification:""},revert_schedule:{success:"Schedule reverted",failed:"Revert failed with _api-error_.",notification:""},ignore_accrual:{success:"Accrual skipped",failed:"Skip accrual failed with _api-error_.",notification:""},revert_accrual:{success:"Accrual reverted",failed:"Revert accrual failed with _api-error_.",notification:""},delete_schedule:{success:'Schedule deleted for "_vendor_name_"',failed:"Delete schedule failed with _api-error_.",notification:""},mark_as_complete_schedule:{success:'Schedule marked as completed for "_vendor_name_"',failed:"Mark as complete schedule failed with _api-error_.",notification:""},cancel_journal_entry:{success:"Accrual Canceled",failed:"Accrual Cancel failed with _api-error_.",notification:""},charge_card_accept_term:{success:"",failed:"_api-error_.",notification:""},charge_card_express_interest:{success:"Interest expressed successfully",failed:"_api-error_.",notification:""},save_task_detail:{success:"",failed:"_api-error_.",notification:""},fetch_task_detail:{success:"Task details fetched successfully.",failed:"_api-error_.",notification:""},delete_task:{success:"",failed:"_api-error_.",notification:""},archive_task:{success:"",failed:"_api-error_.",notification:""},snooze_task:{success:"Task snoozed until _snoozed_until_",failed:"_api-error_.",notification:""},unsnooze_task:{success:"Task unsnoozed",failed:"_api-error_.",notification:""},update_charge_card:{success:"",failed:"_api-error_.",notification:""},notification_settings_saved:{success:"Notification Settings Saved",failed:"_api-error_.",notification:""},referral_invite_sent:{success:"Referral Invite Sent",failed:"_api-error_.",notification:""},notification_mark_as_read:{success:"Notifications marked as read successfully.",failed:"Something went wrong! Please try again.",notification:""},settings_accounting_accounts_updated:{success:"Accounts saved",failed:"",notification:""},task_group_creation_success:{success:"Task group created successfully",failed:"Task group creation failed",notification:""},task_group_deletion_success:{success:"Task group deleted successfully",failed:"Task group deletion failed",notification:""},task_group_update_success:{success:"Task group updated successfully",failed:"Task group update failed",notification:""},primary_funding_account_updated:{success:"Bank account updated for _productType_.",failed:"",notification:""},task_time_spent_validation:{success:"",failed:"Time can't exceed 99h 59m",notification:""},missing_receipts_attachment:{success:"",failed:"Failed to upload attachment__message__ please try again!",notification:""},flux_analysis_reviewed:{success:"_vendors_count_ _vendor_ reviewed",failed:"_api-error_.",notification:""},flux_analysis_unreviewed:{success:"_vendors_count_ _vendor_ unreviewed",failed:"_api-error_.",notification:""},express_pay_submit:{success:"Payment scheduled",failed:"_api-error_.",notification:""},recon_transaction_categorize:{success:"Transaction reviewed",failed:"_api-error_.",notification:""},recon_transaction_match:{success:"Transaction matched",failed:"_api-error_.",notification:""},ai_cfo_create_session_and_submit:{success:"",failed:"Something went wrong, please try again!",notification:""},ai_cfo_chat_session_deleted:{success:"Chat session deleted successfully",failed:"_api-error_.",notification:""},treasury_setup:{success:"",failed:"Failed to load Treasury Setup Details! Please try again.",notification:""},treasury_accept_term:{success:"Treasury Terms accepted successfully.",failed:"Failed to accept terms. Please try again.",notification:""},treasury_transfer_money:{success:"Transfer initiated.",failed:"Transfer failed. Please try again.",notification:""},treasury_transfer_money_failed:{success:"",failed:"Transfer failed. Please try again.",notification:""},auto_transfer_rule_create:{success:"Auto transfer rule created successfully.",failed:"_api-error_.",notification:""},auto_transfer_rule_update:{success:"Auto transfer rule updated successfully.",failed:"_api-error_.",notification:""},auto_transfer_rule_delete:{success:"Rule deleted.",failed:"_api-error_.",notification:""},auto_transfer_rule_pause:{success:'Rule paused "__ruleName__"',failed:"_api-error_.",notification:""},auto_transfer_rule_resume:{success:'Rule resumed "__ruleName__"',failed:"_api-error_.",notification:""},treasury_update_portfolio_allocation:{success:"Portfolio allocation updated.",failed:"Portfolio allocation update failed. Please try again!",notification:""},reports_resync:{success:"",failed:"Something went wrong. Please try again.",notification:"No new data available."},invalid_phone_number:{success:"",failed:"Invalid phone number",notification:""},create_transfer_entry:{success:"Expense deleted.\nTransfer created.",failed:"Unable to create transfer. Please try again.",notification:""},accounting_classes_enabled_update:{success:"Accounting Classes setting updated.",failed:"Couldn't update Accounting Classes setting. Please try again.",notification:""},accounting_projects_enabled_update:{success:"Projects setting updated.",failed:"Couldn't update Projects setting. Please try again.",notification:""},accounting_projects_qbo_not_enabled:{success:"",failed:"Please enable projects in QBO before enabling in the Zeni dashboard!",notification:""},capitalization_threshold_update:{success:"Capitalization threshold updated.",failed:"Couldn't update capitalization threshold. Please try again.",notification:""},account_excluded_from_reconciliation:{success:"_account-name_ excluded",failed:"Account exclusion failed",notification:""},account_included_in_reconciliation:{success:"_account-name_ included",failed:"Account inclusion failed",notification:""},confirm_statement_mapping:{success:"",failed:"Couldn't confirm account mapping. Please try again.",notification:""},statement_parsing_in_progress:{success:"_account_name_ parsing in progress",failed:"",notification:""},statement_parsing_complete:{success:"_account_name_ parsing complete. Review _transaction_count_ transactions",failed:"",notification:""},ai_accountant_trigger_job:{success:"AI Accountant job triggered",failed:"Couldn't trigger the job. __reason__",notification:""},credit_agent_update_profile:{success:"Card profile updated successfully.",failed:"Couldn't update card profile. Please try again.",notification:""},credit_agent_save_macro:{success:"Credit agent prompt saved.",failed:"Couldn't save prompt. Please try again.",notification:""},credit_agent_schedule_cron:{success:"Credit score analysis started.",failed:"Couldn't start analysis. Please try again.",notification:""},oauth_consent_approve:{success:"",failed:"OAuth authorization failed. __reason__",notification:""},oauth_consent_invalid_request:{success:"",failed:"Invalid OAuth request. __reason__",notification:""},create_sub_task:{success:"Subtask created successfully",failed:"Subtask creation failed",notification:""},invoicing_dunning_case_resolved:{success:"Dunning case resolved.",failed:"_api-error_.",notification:""},invoicing_dunning_retry:{success:"Payment retry started.",failed:"_api-error_.",notification:""},invoicing_dunning_cancel:{success:"Dunning case cancelled.",failed:"_api-error_.",notification:""},invoicing_dunning_settings_save:{success:"Dunning settings saved.",failed:"_api-error_.",notification:""},invoicing_qbo_backfill:{success:"QuickBooks backfill started.",failed:"_api-error_.",notification:""},invoicing_qbo_sync_health_retry:{success:"Sync task retried.",failed:"_api-error_.",notification:""},invoicing_qbo_settings_save:{success:"QuickBooks settings saved.",failed:"_api-error_.",notification:""},invoicing_branding_save:{success:"Branding settings saved.",failed:"_api-error_.",notification:""},invoicing_discount_archive:{success:"Discount archived.",failed:"_api-error_.",notification:""},invoicing_discount_unarchive:{success:"Discount unarchived.",failed:"_api-error_.",notification:""},invoicing_discount_delete:{success:"Discount deleted.",failed:"_api-error_.",notification:""},invoicing_invoice_reminder_sent:{success:"Reminder sent.",failed:"_api-error_.",notification:""},invoicing_invoice_regenerated:{success:"Invoice regenerated.",failed:"_api-error_.",notification:""},invoicing_invoice_voided:{success:"Invoice voided.",failed:"_api-error_.",notification:""},invoicing_catalog_item_saved:{success:"Product saved.",failed:"_api-error_.",notification:""},invoicing_customer_saved:{success:"Customer saved.",failed:"_api-error_.",notification:""},invoicing_subscription_saved:{success:"Subscription saved.",failed:"_api-error_.",notification:""},invoicing_coupon_saved:{success:"Coupon saved.",failed:"_api-error_.",notification:""},invoicing_invoice_saved:{success:"Invoice saved.",failed:"_api-error_.",notification:""},invoicing_subscription_activated:{success:"Subscription activated.",failed:"_api-error_.",notification:""},invoicing_subscription_cancellation_removed:{success:"Scheduled cancellation removed.",failed:"_api-error_.",notification:""},invoicing_subscription_cancelled:{success:"Subscription cancelled.",failed:"_api-error_.",notification:""},invoicing_subscription_non_renewing:{success:"Subscription set to non-renewing.",failed:"_api-error_.",notification:""},invoicing_subscription_paused:{success:"Subscription paused.",failed:"_api-error_.",notification:""},invoicing_subscription_reactivated:{success:"Subscription reactivated.",failed:"_api-error_.",notification:""},invoicing_subscription_resumed:{success:"Subscription resumed.",failed:"_api-error_.",notification:""},invoicing_subscription_term_end_changed:{success:"Term end updated.",failed:"_api-error_.",notification:""},invoicing_credit_note_saved:{success:"Credit note issued.",failed:"_api-error_.",notification:""},invoicing_payment_recorded:{success:"Payment recorded.",failed:"_api-error_.",notification:""}},currency:{currencyCode:"USD",currencySymbol:"$",currency:"United States Dollar",countryCode:"US"},format:{ssnFormat:"###-##-####",tinFormat:"##-#######"},status:{pending:"Pending",reviewed:"Reviewed"},cancel:"Cancel",confirm:"Confirm",continue:"Continue",proceed:"Proceed",next:"Next",noText:"--",privacy:"Zeni Privacy Policy",terms:"Terms and Conditions",privacyPolicyUrl:"https://www.zeni.ai/legal/privacy-policy",termsUrl:"https://www.zeni.ai/legal/terms-of-service",footer:{approve:"Approve",reject:"Reject",resubmit:"Resubmit",continueAnyway:"Continue Anyway",inReview:"In Review",sentForReview:"Sent for Review",linkCard:"Link Card",markAsUnReviewed:"Mark as Unreviewed",markAsReviewed:"Mark as Reviewed",saveForLater:"Save for Later",reconcile:"Reconcile",noThanks:"No, Thanks",letsGetStarted:"Let's Get Started"},completeText:"Complete",incompleteText:"Incomplete",notInitiatedText:"Not Initiated",pendingReviewText:"Pending Review",pendingVerificationText:"Pending Verification",retry:"Retry",verified:"Verified",validation:{emailAddressRequired:"Email address required",invalidEmailAddress:"Invalid email address",invalidUrlAddress:"Invalid URL"},needHelp:{text:"Need Help",hoverPrefix:"Experiencing issues?",hoverSuffix:" Schedule a call"},confirmationPopup:{discardTitle:"Discard unsaved changes?",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",discard:"Discard",areYouSureYouWantToRemove:"Are you sure you want to remove?",areYouSureYouWantToDeleteThis:"Are you sure you want to delete this bank account?",areYouSureYouWantToOverwriteThe:"Are you sure you want to overwrite the data?",previewEmail:"Preview email?",areYouSure:"Are you sure?"},via:"via",cockpit:"cockpit",analytics:"Analytics",filters:{noOptions:"No Options",noMatchesFound:"No Matches Found",userProfileAltText:"Failed to load"},updated:"Updated",hoursAgo:"hours ago",minutesAgo:"a few minutes ago",noMatches:"Nothing matched your search. Please try again!",noReport:"No _item-name_ to display yet!",reloadPage:{label:"Something went wrong, please try again!"},settings:{title:{accounting:"Accounting",approvalRules:"Approval Rules",bankConnections:"Bank Connections",integrations:"Integrations",myProfile:"My Profile",myBankConnections:"My Bank Connections"},subtitle:{myProfile:"Profile Details"},label:{primary:"Primary",billPay:"Bill Pay",noManager:"No Manager"},infoText:{accounting:"Quick access to manage the company's accounting-related settings",approvalRules:"Quick access to manage the multi-level approval rules for bills & reimbursements to make Zeni work better for you",businessVerification:"Financial regulations require Zeni to collect both identity & company details to verify your business",companyDetails:"Quick access to manage the company's detailed information"},bankConnectionHeader:{productType:"Products",primaryAccount:"Primary Account",linkAccount:"QBO Linked Account",balance:"Balance"},bankConnectionListHeader:{other:"Other Connections"},productNameByType:{bill_pay:"Bill Pay",reimbursement:"Reimbursements",zeni_accounts:"Checking",zeni_treasury:"Treasury",charge_cards:"Cards"},otherAccount:{subTitle:"Not assigned",subTitleSmall:"not assigned",remove:"Remove Connection"},notifications:{sectionTitle:{reminders:"Reminders",monthEndInsights:"Month-end Insights"},frequency:{biWeekly:"Bi-Weekly"},mode:{email:"Email",dashboard:"Dashboard"},taskNotifications:{sectionTitle:"Task Notifications",groupCount:"({active}/{total})",channelLabels:{slack:"Slack"},frequencyLabels:{instant:"Instant",daily:"Daily"},expandGroupAriaLabel:"Expand {group}",collapseGroupAriaLabel:"Collapse {group}"},reminders:{missingReceiptNotification:"Receipts:",uncategorizedTransactionNotification:"Uncategorized Transactions:",pendingBillApprovalNotification:"Bill Approvals:",pendingReimbursementApprovalNotification:"Reimbursement Approvals:"},monthEndInsights:{labels:{notifyMe:"Notify Me:",notifyOthers:"Notify Others:"},userFieldPlaceholder:"Who should receive this email?",stopReceivingEmailsText:"To stop receiving this email, reach out to",stopReceivingMonthEndInsightsSubject:"Stop Month End Insights"},reminderFrequencyOptions:[{label:"Daily",value:"daily"},{label:"Weekly",value:"weekly"},{label:"Bi-weekly",value:"bi-weekly"},{label:"Monthly",value:"monthly"}]},integrations:{aiAgents:{accountant:{tagline:"Day-to-day books",description:"Runs your books continuously — categorizes transactions, reconciles bank and card feeds, drafts journal entries, and manages AP/AR aging without manual intervention.",tags:["Auto categorization","Reconciliation","Receipt matching","Journal entries","Bill drafting","AP/AR aging","Flux analysis"]},cfo:{tagline:"Strategic finance",description:"Answers any financial question in real time — builds forecasts, surfaces weekly and monthly insights, analyzes vendor exposure, and tracks collections and cash position.",tags:["Any financial question","Forecasting","Monthly insights","Spend analysis","Vendor exposure","Collections"]}},progress:{headlineTemplate:"{connected} of {total} areas connected — your AI agents are running at {coverage}% coverage",description:"{total} areas need attention. Each connection unlocks new AI capabilities — the more you connect, the less manual work for your team."},tabs:{ledger:{title:"Ledger",pillTitle:"Ledger",description:"Connect your ledger and watch your AI team go to work."},banks:{title:"Banks and corporate cards",pillTitle:"Banks and cards",description:"Connect any accounts you have access to."},revenue:{title:"Revenue and payments",pillTitle:"Revenue & payments",description:"Connect any tools you use — mix and match as needed."},payroll:{title:"Payroll and HR",pillTitle:"Payroll and HR",description:"People costs and headcount intelligence."},email:{title:"Email and calendar",pillTitle:"Email and calendar",description:"Financial context that lives outside your ledger."}},badges:{connected:"Connected",notConnected:"Not Connected",comingSoon:"Coming Soon",active:"Active",inactive:"Inactive"},aiCapabilityHeader:{heading:"What your AI Agents can see",subheadingConnected:"{{areasConnected}} connected — connect more areas to unlock full AI capability.",subheadingEmpty:"Connect any area to unlock AI capabilities.",footnote:"Connect what you use — you do not need all five areas for AI Agents to deliver value."},recommended:{first:"Recommended first",second:"Recommended second",third:"Recommended third",fourth:"Recommended fourth",fallback:"Recommended next"},aiBenefits:{ledger:{accountant:"AI Accountant runs your books continuously, no manual work.",cfo:"AI CFO grounds every answer in your live general ledger."},banks:{accountant:"AI Accountant does faster close through automatic reconciliation.",cfo:"AI CFO answers with real time precision."},revenue:{accountant:"AI Accountant drafts revenue JEs and matches invoices automatically.",cfo:"AI CFO tracks MRR, churn, and ARR in real time."},payroll:{accountant:"AI Accountant handles payroll journal entries automatically.",cfo:"AI CFO tracks headcount cost in real time."},email:{accountant:"AI Accountant handles every emailed receipt, invoice, and itinerary.",cfo:"AI CFO catches commitments and gaps before the close.",accountantBullets:[{iconKey:"receipt-email",text:"Receipts matched and auto-drafted JEs"},{iconKey:"calendar",text:"Calendar context on every expense"},{iconKey:"bills",text:"Vendor invoices ingested and journalized"},{iconKey:"reimbursements",text:"Travel expenses built automatically"}],cfoBullets:[{iconKey:"notification",text:"Subscription renewal radar"},{iconKey:"search",text:"Pre close gap detection"}]},unlocksAccountantCta:"What it unlocks for AI Accountant",unlocksCfoCta:"What it unlocks for AI CFO",unlocksCombinedCta:"What it unlocks for AI Accountant + AI CFO"},plaidCard:{title:"Bank accounts and credit cards",subtitle:"Connected via Plaid — covers checking, savings, and all major credit cards.",worksWithLabel:"Works with",worksWithInstitutions:["Chase","Wells Fargo","Bank of America","Amex","Citi","Capital One","+12,000 more"],accountMaskSuffix:" · Connected via Plaid",addAccountButton:"Add account or card",loadingState:"Loading your bank accounts…",emptyStateNotConnected:"Connect your first bank account to get started.",connectButton:"Connect via Plaid"},corporateSpend:{heading:"Corporate spend platforms",subtitle:"Native direct connections — richer than Plaid because receipts are already matched, spend is pre-categorized, and employee analytics are included.",directConnectionNote:"Direct connection — not via Plaid"},emailCard:{title:"Connect your inbox and calendar",subtitle:"Read only — receipts and invoices only — nothing stored."},actions:{configure:"Configure",connect:"Connect",disconnect:"Disconnect",notifyMe:"Notify Me",notifyMeQueued:"We'll notify you",reconnect:"Reconnect"},disconnectDialog:{title:"Disconnect {connectorName}",description:"Are you sure you want to disconnect {connectorName}? Zeni will no longer be able to query your {connectorName} data through AI CFO chat. You can reconnect at any time.",disconnecting:"Disconnecting..."},comingSoonFooter:"Coming soon",cards:{quickbooks:{name:"QuickBooks Online",description:"Read and write ledger of record. Invoices, expenses, GL, chart of accounts, journal entries.",capability:"Activates AI Accountant auto categorization, reconciliation, and the full journal entry engine — gives AI CFO its financial foundation for every answer and forecast.",footerText:"Takes about 2 mins",refreshTooltip:"Sync QuickBooks changes to your dashboard"},netsuite:{name:"NetSuite",description:"Enterprise ERP — multi entity consolidation, advanced revenue recognition, GL across subsidiaries.",capability:"Enables both AI Agents to operate across subsidiaries with consolidated close and multi entity reporting.",footerText:"For multi-entity companies"},plaid:{name:"Plaid",description:"Bank account connections — cash balances, real-time transactions, statement-level history.",capability:"Feeds AI Accountant the daily cash and card activity that powers reconciliation, missing-receipt detection, and live balance views for AI CFO.",footerText:"Takes about 1 min"},brex:{name:"Brex",description:"Corporate card and spend management — real time transactions, receipts, spend controls, and employee analytics.",capability:"AI Accountant gets receipt data already attached and spend categorized at source — significantly higher reconciliation accuracy than a bank feed alone."},ramp:{name:"Ramp",description:"Corporate card and spend management — real time transactions, receipt matching, vendor management, and savings insights.",capability:"AI Accountant accesses Ramp's already categorized spend and matched receipts — fewer corrections, cleaner journal entries, faster close."},chargebee:{description:"Subscription analytics — MRR, ARR, churn, active subscriptions.",capability:"AI Accountant handles subscription revenue journal entries each month — AI CFO gains full ARR waterfall for churn analysis and forecasting.",dialog:{title:"Connect ChargeBee",description:"Enter your ChargeBee site and API key to connect. You can find your API key in ChargeBee under Settings › Configure ChargeBee › API Keys.",siteLabel:"Site / Subdomain",sitePlaceholder:"your-site",siteHintPrefix:"The subdomain of your ChargeBee URL: ",siteHintSuffix:".chargebee.com",apiKeyLabel:"API Key",apiKeyPlaceholder:"Enter your API key",readOnlyRecommendation:"We recommend using a read-only API key — Zeni only needs read access to your subscription data. In ChargeBee, select “Read-Only Key” when creating the key."}},stripe:{name:"Stripe",description:"Payment processing — charges, refunds, payouts, disputes, MRR.",capability:"AI Accountant reconciles every payment and handles all related journal entries — AI CFO tracks real time MRR and payment trends.",dialog:{title:"Connect Stripe",description:"Enter a Stripe restricted API key. Create one in Stripe under Developers › API keys › Create restricted key. Grant read-only access to Charges, Refunds, Disputes, Payouts, and Balance.",apiKeyLabel:"Restricted API Key",apiKeyPlaceholder:"rk_live_...",readOnlyRecommendation:"We recommend a restricted key with read-only scopes only — Zeni never needs write access to your Stripe account."}},mercury:{name:"Mercury",description:"Business banking — account balances, transactions, statements.",capability:"Feeds AI Accountant daily Mercury cash and card activity for reconciliation and gives AI CFO live cash balances across accounts.",dialog:{title:"Connect Mercury",description:"Enter a Mercury API token. Create one in Mercury under Settings › Tokens & API › New token. Grant read-only access to Accounts and Transactions.",apiKeyLabel:"API Token",apiKeyPlaceholder:"secret-token-...",readOnlyRecommendation:"We recommend a read-only token — Zeni never needs write access to your Mercury accounts."}},paypal:{name:"PayPal",description:"Online payments — balance, transaction history, payouts.",capability:"Lets AI CFO see PayPal collected revenue, refunds, and payouts alongside Stripe and bank cash.",dialog:{title:"Connect PayPal",description:"Enter your PayPal REST API client ID and secret. Create them in the PayPal Developer dashboard under Apps & Credentials › Live › Create App. Enable Transaction Search, Invoicing, Subscriptions, and Disputes Read on the app.",clientIdLabel:"Client ID",clientIdPlaceholder:"AeA1...",clientSecretLabel:"Secret",clientSecretPlaceholder:"Enter your client secret",readOnlyRecommendation:"Zeni only needs read access to your PayPal data — leave write features (e.g. Payments) disabled on the app you create."}},hubspot:{name:"HubSpot",description:"CRM and sales pipeline — deals, contacts, close rates, forecasting.",capability:"AI CFO connects pipeline to actuals for precise revenue forecasts and close rate analysis."},billDotCom:{name:"Bill.com",description:"AP and AR workflows — vendor bills, customer invoices, payments, approvals.",capability:"AI Accountant drafts bills, handles all AP and AR journal entries, and tracks aging — AI CFO surfaces vendor insights and cash flow forecasts."},gusto:{name:"Gusto",description:"Payroll, benefits, contractor pay — runs, taxes, and headcount.",capability:"Gives AI Accountant payroll-aware journal entries and lets AI CFO break down compensation by team and role."},rippling:{name:"Rippling",description:"HRIS, payroll, and IT — unified people data.",capability:"Lets AI CFO trace headcount, role, and comp changes through the financial picture — no manual spreadsheets."},moreProviders:{name:"More providers",description:"ADP, Paychex, Justworks and others — tell us what you use.",requestButtonLabel:"Request"},gmail:{name:"Gmail",description:"Email context — invoice attachments, vendor threads, payment confirmations.",capability:"Feeds AI Accountant the supporting docs sitting in inbox threads — receipts, bills, and payment confirmations land in the ledger automatically."},outlook:{name:"Microsoft 365",description:"Outlook — Exchange — Microsoft Calendar",capability:"AI Accountant reads receipt emails to match transactions and determine the right accounting treatment, then drafts the correct journal entry without anyone asking."}},connectorTooltips:{accountantSectionLabel:"AI Accountant",cfoSectionLabel:"AI CFO",quickbooks:{heading:"What you unlock by connecting QuickBooks",accountantBullets:["Auto-categorizes every transaction into your chart of accounts.","Reconciles bank, card, and ledger lines end-to-end.","Drafts the journal entries that close your books."],cfoBullets:["Grounds every forecast and answer in your live ledger.","Powers cash, burn, and runway in the dashboard."]},netsuite:{heading:"What you will unlock by connecting NetSuite",accountantBullets:["Consolidates close across every subsidiary in your structure.","Drafts multi-entity GL with intercompany eliminations.","Handles advanced revenue recognition schedules."],cfoBullets:["Rolls cash, burn, and runway up across all subsidiaries.","Forecasts respect entity-level transfer pricing and FX."]},plaid:{heading:"What you unlock by connecting banks & cards",accountantBullets:["Live bank and card feeds give AI Accountant everything it needs to automatically reconcile every transaction the moment it lands.","No waiting for exports, no manual matching at month end.","Each account connected means more transactions reconciled automatically and a close that takes days instead of weeks."],cfoBullets:["Every connected account gives AI CFO live cash position, accurate burn rate, and runway answers based on what is actually in the bank right now and not last month's close.","The richer your data, the more precise every answer becomes."]},brex:{heading:"What you unlock by connecting Brex",accountantBullets:["Receipts arrive pre-attached — no chasing employees at month end.","Spend is categorized at source, with merchant and policy context.","Reconciliation accuracy lifts significantly vs. a bank feed alone."],cfoBullets:["Burn drilldowns by department, employee, and vendor.","Live policy-violation flags surface in the cash review."]},ramp:{heading:"What you unlock by connecting Ramp",accountantBullets:["Matched receipts and pre-categorized spend arrive ready to post.","Vendor management context cleans up duplicates and renames.","Fewer corrections in the close — journal entries land cleaner."],cfoBullets:["Vendor-level spend forecasts with renewal and contract dates.","Savings insights flow into the runway model automatically."]},mercury:{heading:"What you unlock by connecting Mercury",accountantBullets:["Direct Mercury feed gives AI Accountant transaction details without Plaid latency.","Wires, ACH, and card spend reconcile against the ledger automatically."],cfoBullets:["Live operating cash, runway, and reserve balances in the dashboard.","Treasury yield surfaces in cash position views."]},stripe:{heading:"What you unlock by connecting Stripe",accountantBullets:["Reconciles every charge, refund, payout, and dispute end-to-end.","Posts the fee and Stripe-balance journal entries for you.","Handles foreign-currency settlements and FX gain/loss."],cfoBullets:["Live MRR and payment-trend telemetry in the dashboard.","Dispute and refund signal feeds churn and risk forecasts."]},paypal:{heading:"What you unlock by connecting PayPal",accountantBullets:["PayPal sales, refunds, and fees post to the ledger automatically.","Multi-currency conversions are matched and journaled per ASC 830."],cfoBullets:["PayPal-driven revenue and refunds flow into MRR and churn metrics.","Held-funds visibility in the cash position view."]},hubspot:{heading:"What you unlock by connecting Hubspot",accountantBullets:[],cfoBullets:["Live MRR and payment-trend telemetry in the dashboard.","Dispute and refund signal feeds churn and risk forecasts."]},chargebee:{heading:"What you unlock by connecting Chargebee",accountantBullets:["Monthly subscription revenue journal entries posted automatically.","Deferred revenue + accrual schedules drafted from your billing data.","Refunds, credits, and proration handled per ASC 606."],cfoBullets:["Full ARR waterfall — new, expansion, contraction, churn.","Cohort churn and forecast scenarios in the dashboard."]},billDotCom:{heading:"What you unlock by connecting Bill.com",accountantBullets:["Monthly subscription revenue journal entries posted automatically.","Deferred revenue + accrual schedules drafted from your billing data.","Refunds, credits, and proration handled per ASC 606."],cfoBullets:["Full ARR waterfall — new, expansion, contraction, churn.","Cohort churn and forecast scenarios in the dashboard."]},gusto:{heading:"What you unlock by connecting Gusto",accountantBullets:["Every pay run drafts journal entries across salaries, benefits, taxes, and contractor payments.","Tax filings and benefits accruals land in the ledger every period."],cfoBullets:["Fully-loaded cost per head by department, live.","Headcount spend vs. budget answers without spreadsheets."]},rippling:{heading:"What you unlock by connecting Rippling",accountantBullets:["Payroll, benefits, and contractor payments post journal entries automatically.","Stock-comp and equity events flow into the ledger as configured."],cfoBullets:["Fully-loaded comp visibility by department, role, and location.","Headcount-driven runway scenarios update in real time."]},gmail:{heading:"What you unlock by connecting Gmail",accountantBullets:["Receipts to JEs — reads receipt emails, matches them to transactions, drafts the journal entry.","Calendar context cross-checks client, event, and business purpose on every expense.","Invoice attachments are detected, parsed into Bills, and journaled on arrival.","Travel reports are built automatically from flight and hotel confirmations."],cfoBullets:["Renewal radar surfaces upcoming renewals and pricing changes before charges hit.","Pre-close gap scan catches unreconciled invoices and receipts before month end."]},outlook:{heading:"What you unlock by connecting Outlook",accountantBullets:["Reads receipt emails to match transactions and draft the right journal entry.","Detects invoice attachments and posts them straight into AP.","Builds travel reports from flight and hotel confirmations."],cfoBullets:["Renewal radar surfaces upcoming renewals and pricing changes before charges hit.","Pre-close gap scan catches unreconciled invoices and receipts before month end."]}},areaTooltips:{ledger:{heading:"What you unlock by connecting your ledger",accountantBullets:["Categorizes every transaction into your chart of accounts.","Reconciles bank, card, and GL lines and drafts journal entries."],cfoBullets:["Grounds every forecast and answer in your live ledger.","Powers cash, burn, and runway in the dashboard."]},banks:{heading:"What you unlock by connecting banks & cards",accountantBullets:["Live bank and card feeds give AI Accountant everything it needs to automatically reconcile every transaction the moment it lands. No waiting for exports, no manual matching at month end. Each account connected means more transactions reconciled automatically and a close that takes days instead of weeks."],cfoBullets:["Every connected account gives AI CFO live cash position, accurate burn rate, and runway answers based on what is actually in the bank right now and not last month's close. The richer your data, the more precise every answer becomes."]},revenue:{heading:"What you unlock by connecting revenue & payments",accountantBullets:["Charges, refunds, payouts, and disputes reconcile end-to-end.","Subscription billing posts revenue and deferred-revenue schedules per ASC 606."],cfoBullets:["Full ARR waterfall — new, expansion, contraction, churn.","Live MRR and payment-trend telemetry in the dashboard."]},payroll:{heading:"What you unlock by connecting payroll & HR tools",accountantBullets:["Every pay run generates journal entries across salaries, benefits, taxes, and contractor payments. AI Accountant reads your payroll data and automatically drafts, schedules, and maintains all of these every period — so your books reflect payroll costs accurately without anyone entering a line item."],cfoBullets:['With payroll connected, AI CFO can answer "what is our fully loaded cost per head by department?" and "how does headcount spend compare to budget?" with live data and not a spreadsheet someone pulled last week.']},email:{heading:"What you unlock by connecting email & calendar tools",accountantBullets:[{title:"Receipts to JEs",body:"Reads receipt emails, matches them to transactions, drafts the right journal entry."},{title:"Calendar",body:"When a receipt arrives, cross-checks your calendar to prefill client, event, and business purpose on every expense."},{title:"Invoices auto-posted",body:"Detects invoice attachments, parses them into Bills, and posts the journal entry on arrival right away."},{title:"Travel reports built",body:"Reconciles flight and hotel confirmations to build full travel reports — name, dates, purpose prefilled."}],cfoBullets:[{title:"Renewal radar",body:"Surfaces renewal and pricing-change emails before charges hit your card."},{title:"Pre-close gap scan",body:"Scans for unreconciled invoices and receipts before month end — gaps land pre-close, not after."}]}}}},copyToClipBoard:{copied:"Copied"},aiAgentsActivatingPage:{navTitle:"AI Agents are activating",stepCounter:"Step {current} of {total}",sidebar:{connectLedger:"Connect Ledger",connectLedgerSubtitle:"Quickbooks or Netsuite",connectDataSource:"Connect Data Sources",connectDataSourceSubtitle:"Bank, revenue, payroll and more...",setUpBilling:"Set up billing",setUpBillingSubtitle:"Your zeni subscription",verify:"Verify",verifySubtitle:"Unlock your finance stack"},ledgerSection:{title:"QBO connected. Your AI team is reading your books.",subtitle:"Your finance graph and personalized AI models are being built. Here's what's happening right now.",readyInLabel:"Will be ready in 2 hrs",workingPillLabel:"Working",buildingPillLabel:"Building",readingCountsSubtitle:"Reading __transactionCount__ transactions and __glAccountCount__ GL accounts.",rows:[{title:"Reading chart of accounts and transactions",subtitle:"Reading your chart of accounts and transactions."},{title:"Building your company's finance graph",subtitle:"Finance graph built — vendors, accounts, and cash flow patterns mapped."},{title:"Configuring reconciliation and flux analysis",subtitle:"Reconciliation engine configured and flux analysis running."},{title:"AI CFO financial foundation established",subtitle:"AI CFO financial foundation established — ready to answer questions."}]},backgroundSection:{title:"Deeper AI work running in the background",subtitle:"No action required!",readyInLabel:"Will be ready in 2-4 hrs",startingPillLabel:"Starting",rows:[{title:"Fine-tuning LLM models for {tenantName}",subtitle:"Personalizing to your vendors, accounts, and transaction patterns — informed by 1,000+ Zeni customers and $20B in transactions."},{title:"Configuring RAG-based financial knowledge graph",subtitle:"Building a retrieval layer over your entire financial history — directly improves AI Accountant's transaction categorization accuracy."},{title:"Creating personalized financial context for {tenantName}",subtitle:"Your AI Agents will know your industry, seasonality, vendor relationships, and close patterns before you ask a single question."}]},footerButtonLabel:"Continue to connect more sources"},monthsByIndex:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},oauthConsent:{invalidRequestTitle:"Invalid Authorization Request",authorizeTitle:"Authorize __clientName__",accessSubtitle:"wants to access your Zeni financial data.",signedOutHeadlineSuffix:"wants to access your Zeni financial data",signInToContinue:"Sign in to continue",signIn:"Sign In",signedInAs:"Signed in as __email__",permissionsLabel:"This will allow __clientName__ to:",permissionReadFinancials:"Read your financial data and reports",permissionAccessTransactions:"Access transaction and account information",permissionQueryAi:"Query your Zeni AI assistant on your behalf",selectCompany:"Select a company",company:"Company",allow:"Allow",deny:"Deny"}},download:{errorMessages:{fileDownloadError:"Download __feature__ Failed with"},defaultFileName:"Report.xlsx"},balanceCard:{cashBalanceSectionTitle:"Total Cash Balance",cardBalanceSectionTitle:"Total Card Balance",comparedTo:"compared to",noBalanceText:"No balance data to display yet!"},insightsCard:{vs:"vs",askSomethingElse:"Ask something else?",no_data:{label:"Cash, Opex, Revenue, COS, and Cash In Cash Out Insights, will appear once you have sufficient financial activity. Stay tuned! 💸"}},timeframe:{day:"Days",week:"Weeks",free_range:"Time period"},compareSwitchLabel:"Compare",compareMode:{compare_mode_percent:"Percentage"},chartCard:{no_data_available:"No data available!",no_data_available_for:"No data available for",forecast_dropdown:{forecast_source:"Via Quickbooks",forecast_invalid_issue:"This period is not in the time frame of the actuals. Please view it via the Forecast tab."},netBurnOrIncome:{expenses:"OPEX",no_data_available:"A minimum of one-month data is required!"},netBurnOrIncomeCalculator:{title:"Burn Rate Calculator",accounting_method:{label:"Configure Burn Rate, Runway, and Cash Zero date based on below options:",ebitda:"EBITDA"},time_span_id_for_average:{label:"Further configure Burn Rate, Runway, and Cash Zero date based on below options:",last_month:"Last month",last_completed_month:"Last completed month",average_of_last_2_months:"Average of last 2 completed months",average_of_last_3_months:"Average of last 3 completed months",under_review_last_month_label:"(Including Under Review)"}},no_data:{revenue:"No revenues to display yet, but thrift is a great revenue. Fight On!🤘",cash_in_cash_out:"No cash in cash out to display yet!",cash_position:"No cash position to display yet!",net_burn_or_income:"No net burn to display yet!",operating_expenses:"No operating expenses to display yet!",top_expenses:{this_week_to_date:"No expenses this week 🤷",last_week:"No expenses last week 🤷",this_month_to_date:"No expenses this month 🤷",last_month:"No expenses last month 🤷",last_3_months:"No expenses last 3 months 🤷",last_6_months:"No expenses last 6 months 🤷",last_12_months:"No expenses last 12 months 🤷",this_year_to_date:"No expenses this year 🤷",last_year:"No expenses last year 🤷"},aging_report:"No data to display yet!"}},drawerMenus:{home:"Home",users_and_roles:"Users & Roles",storybooks:"Storybooks",new_chat:"New Chat",explore:"Explore",search_chats:"Search Chats",command_center:"AI Close",task_checklist:"Task Checklist",reconciliation:"Reconciliations",invoicing_settings_quickbooks:"QBO Configuration"},drawerMenuSubtitles:{rewards:"Earn up to __reward-amount__ per referral"},drawerGroups:{finance:"Finance",spend_management:"Spend Management",ai_intelligence:"AI Intelligence",close_management:"Your AI Agents",banking:"Banking",administration:"Administration",personal_settings:"Personal Settings",ai_cfo:"",invoicing_setup:"Setup"},dashboardDropDownList:{menuOption:{logout:{value:"logout"},my_profile:{value:"my_profile"},referrals:{label:"Referrals",value:"referrals",referralSubText:{earn:"Earn up to __reward-amount__",suffix:" for every new company you refer to Zeni"}}}},transactionType:{creditMemo:"Credit Memo",salesReceipt:"Sales Receipt",vendorCredit:"Vendor Credit",journalEntry:"Journal Entry"},signIn:{heading:"Welcome to Zeni",confirmationLinkSent:"Sign-in link sent",message:"Your financial dashboard is just one step away. Get started.",autoLogoutHeading:"You've been logged out",autoLogoutMessagePrefix:"For your security, this session expired after ",autoLogoutMessageSuffix:" of inactivity.",signInSecurelyMessage:"Choose an account to sign in securely",signInGoogleButton:"Sign In With Google",signInMicrosoftButton:"Sign In With Microsoft",termsPrivacyFinePrintPart:"By creating an account on Zeni, you confirm that you ",agreeWith:"agree with our ",privacyPolicy:"privacy policy",signInError:"Couldn’t sign-in to your account.\nPlease try again.",signInAuthError:"Authorization failed, and sign-in is restricted.\nPlease try and authorize again.",emailNotFoundPopup:{title:"If an account exists for this email,\nwe've sent you a sign-in link.",subtitleLine1:"Didn't receive an email?",subtitleLine2:"It may take minutes for email to arrive.",checkSpam:"Check your spam or junk folder",confirmEmail:"Make sure you entered the correct email address",checkAccess:"Check your Zeni Admin for access",contactZeni:"If you're onboarding, reach out to our sales executives."},magicLinkSent:{primaryMessage:"A secure sign in link has been sent to __email__ to access the dashboard.",secondaryMessage:"If you can't see the email, check your spam/junk folder.",resendLinkCountdown:"Resend Link in __seconds__s",resendLink:"Resend Link",attemptsRemaining:"(__remaining__/__total__) attempt(s) remaining",resendLimitExceededRedirecting:"Resend Limit exceeded. Redirecting you in __seconds__s"},workEmailExample:"name@workemail.com",magicLinkExpired:"Your sign-in link has expired. Please try again.",magicLinkExpiredHeading:"This sign-in link has expired",magicLinkAlreadyUsedHeading:"This sign-in link has already been used",magicLinkAlreadyUsedMessage:"For security reasons, sign-in links can only be used once.",requestNewLink:"Request a new link",workEmailLink:"Sign in using email",workEmailSubText:"For users without Google/Microsoft access.",googleOrMicrosoftLink:"Sign in using Google or Microsoft",continueAs:"Continue as"},billPayPromoCard:{aipoweredInvoice:{prefix:"AI-powered invoice processing helps create bills in seconds."},multiLevelApproval:{prefix:"Multi-level approval flows allows you to stay in control of payments."},financeTeam:{prefix:"Fully managed by your expert Zeni Finance Team."},fastestWay:{prefix:"Fastest way to pay your vendors and contractors, 100% free"}},reimbursementPromoCard:{aiPowered:{prefix:"AI powered receipts processing helps you create reports in seconds."},multiLevel:{prefix:"Multi-level approval flows allow you to stay in control of payments."},reimburse:{prefix:"Reimburse employees at lightning speed, absolutely free"}},treasuryPromoCard:{introModal:{dontShowAgain:"Don't show this again",remindMeLater:"Remind me later"},watchVideo:{prefix:"Watch how Zeni Treasury helps you earn more."},highYield:{title:"Earn yields upto",prefix:"Put your idle cash to work and earn\n more than a standard checking account."},sipcInsured:{title:"SIPC coverage upto",prefix:"SIPC protection ensures your assets\n remain secure."},sameDayLiquidity:{title:"High liquidity",prefix:"Accelerate treasury settlements\n with same day transfers."},autoTransfers:{title:"Auto transfers",prefix:"Automatically move funds between\n accounts to optimize liquidity and returns."}},reportTitleById:{card_balance:"Card Balance",net_burn_or_income:{net_burn:"Net Burn",income:"Income"},cash_position:"Cash Position",cash_in_cash_out:"Cash In, Cash Out",top_expenses:"Top Expenses"},zeniAccountsPromoCard:{title:"Business Banking",keepInterest:{header:"Earn interest",prefixDashboard:"On your cash balance of\n <amount> per year",prefixCashBalance:"Keep the interest earned\n on your cash",footer:"* Upto <interest>% APY on total available cash "},protectCash:{prefix:"Up to <amount> in FDIC insurance\n to protect your cash",headerAnimationData:["$250K"]},noHiddenFees:{prefix:"No hidden or monthly fees,\n just great banking",headerAnimationData:["$0","$10","$20","$25","$30","$40","$50"]},freeWire:{prefix:"Free Domestic and\n International Wires",headerAnimationData:["$15","$0"]},expertSupport:{header:"Expert financial support",prefix:"Dedicated, expert support that\n helps you reduce costs",headerAnimationData:["+2"]}},reportViewSelector:{classes:{label:"Classes",dropdownLabel:"View By Classes"},accountGroups:{label:"Account Groups",dropdownLabel:"View By Account Groups"},accounts:{dropdownLabel:"View by Accounts"},projects:{dropdownLabel:"View By Projects",searchPlaceholder:"Search projects",allProjects:"Select all"},generatingReportByClass:"Generating report by Class",generatingReportByProject:"Generating report by Project"},timeframeSwitcherLabels:{free_range:"Free Range"},reports:{title:"Financial Reports",bookCloseInfoStar:"Under Review - ",bookCloseIncompleteInfoStar:"In Progress - ",bookCloseUnderReviewInfoMonth:"The current month is under review by the Zeni Finance Team. The 'Under Review' tag will be removed once a detailed review is complete.",bookCloseIncompleteInfoMonth:"This month is currently in progress and the transactions are being processed daily. Zeni team will review the financials and close the books after the end of the month.",bookCloseUnderReviewInfoQuarter:"The current quarter is under review by the Zeni Finance Team. The 'Under Review' tag will be removed once a detailed review is complete.",bookCloseIncompleteInfoQuarter:"This quarter is currently in progress and the transactions are being processed daily. Zeni team will review the financials and close the books after the end of the quarter.",bookCloseUnderReviewInfoYear:"The current year is under review by the Zeni Finance Team. The 'Under Review' tag will be removed once a detailed review is complete.",bookCloseIncompleteInfoYear:"This year is currently in progress and the transactions are being processed daily. Zeni team will review the financials and close the books after the end of the year.",bookCloseTagUnderReview:"Under Review",periodRangeCalendarTitle:"Period range",periodRangeCalendarHint:"Click a period to start, then another to complete the range. Click the same period twice for one month.",periodRangeChartDisplayLimitNote:"The chart can display up to {count} {timeframe} of available history.",horizontalClassLayoutSwitch:"Horizontal",forecast:{actualInParen:"(Actual)",forecastInParen:"(Forecast)",changePercentInParen:"(Change %)",vsActual:"Vs. Actual"},detail:{netBurnOrIncome:{avgNetBurnTitle:"Avg Net Burn in",avgNetIncomeTitle:"Avg Net Income in",avgNetBurnDesc:"This is your average net operating burn rate for the past three completed months",avgNetIncomeDesc:"This is your average net operating income for the past three completed months"},topEx:{insightLabel:"In Total Spending"}},sections:{cos:"Cost of Sales (COS)",cogs:"Cost of Sales",grossProfit:"Gross Profit",earningsBeforeInterestAndTax:"Earnings Before Interest & Tax",otherIncome:"Other Income",otherExpenses:"Other Expenses",netOtherIncome:"Net Other Income",netOperatingIncome:"Net Operating Income"},balanceSheet:{totalAssets:"Total Assets",totalLiabilities:"Total Liabilities",totalEquity:"Total Equity",totalCurrentAssets:"Total Current Assets",totalNonCurrentAssets:"Total Non-Current Assets",totalCurrentLiabilities:"Total Current Liabilities",totalNonCurrentLiabilities:"Total Non-Current Liabilities",otherCurrentAssets:"Other Current Assets",otherAssets:"Investments or Other Non-Current Assets",otherCurrentLiabilities:"Other Current Liabilities",longTermLiabilities:"Long Term Liabilities",title:"Balance Sheet"},cashFlow:{title:"Cash Flow",longTitle:"Cash Flow Statement",operatingActivities:"Operating Activities",operatingActivitiesNetIncome:"Net Income",operatingActivitiesAdjustments:"Adjustments",operatingActivitiesTotal:"Cash Flow from Operating Activities",investingActivities:"Investing Activities",investingActivitiesTotal:"Cash Flow from Investing Activities",financingActivities:"Financing Activities",financingActivitiesTotal:"Cash Flow from Financing Activities",changeInCashAndEquivalents:"Change in Cash & Equivalents",cashAndEquivalentsOpeningBalance:"Cash & Equivalents, Opening Balance",cashAndEquivalentsClosingBalance:"Cash & Equivalents, Closing Balance"},trend:{income:"Income Trend",expense:"Spend Trend"},aging:{apAging:{apAging:"AP Aging",searchPlaceholder:"Search Vendors"},arAging:{arAging:"AR Aging",searchPlaceholder:"Search Customers",totalReceivable:"Total Receivable"},agingDetail:{noDataText:"No invoices found",header:{daysPastDue:"Past Due Days",balance:"Balance Due",invoiceNumber:"Bill Number"}},apAgingDetail:{dateLabel:"AP Aging as of"},arAgingDetail:{dateLabel:"AR Aging as of"},preComputedDurationOptions:[{label:"Last Month",value:"month"},{label:"Last Quarter",value:"quarter"}],duration:{"due_1-30_days":"1 - 30 Days","due_31-60_days":"31 - 60 Days","due_61-90_days":"61 - 90 Days",due_over_90_days:"90+ Days"}},doubleStarred:"**",starred:"*"},transactionList:{fetching:"Fetching ...",loadNextMonthPrefix:"Load next month",loadPreviousMonthPrefix:"Load previous month",loadNextQuarterPrefix:"Load next quarter",loadPreviousQuarterPrefix:"Load previous quarter",loadNextYearPrefix:"Load next year",loadPreviousYearPrefix:"Load previous year",loadPreviousPrefix:"Load previous",loadNextPrefix:"Load next",monthsSuffix:"months",noTransactionsFoundForPrefix:"No transactions found for",noTransactionsFoundForPeriodPrefix:"No transactions found for period"},uncategorizedTransactionList:{income:{title:"Uncategorized Income"},missingReceipt:{missingReceiptMinAmount:{amount:75},bulkUpload:{bulkUpload:"Bulk Upload",dragAndDropReceipts:"Drag and drop receipts here",dropYourFilesHere:"Drop your files here.",orBrowseFiles:"or browse files",uploadingReceipts:"Uploading __count__ __receiptWord__...",autoMatchingReceipts:"Auto-matching __count__ __receiptWord__...",autoMatchingReceiptsGeneric:"Auto-matching receipts...",unmatched:"Unmatched",missing:"Missing",pastUnmatchedReceipts:"__count__ past unmatched receipts",possibleMatches:"__count__ Possible matches",possibleMatch:"1 Possible match",noPossibleMatch:"No possible match",noMatchFound:"No match found. We will check for future transactions.",retryMessage:"The Receipt Agent will continue attempting to match these receipts for the next 7 days.",searchByVendorDateAmount:"Search by vendor, date, or amount",orSearchManually:"Or, search manually",searchManually:"Search manually",maxFilesAllowed:"Maximum __max__ files allowed",invalidFileType:"Only PDF, JPG, and PNG files are accepted",unmatchedReceipts:"__count__ unmatched receipts",bulkUploadReceipts:"Bulk Upload Receipts",confirmMatch:"Confirm Match",matchingComplete:"Receipt matching complete! __matched__ matched, __unmatched__ unmatched.",noAutoMatchedReceipts:"No auto-matched receipts",allReceiptsMatched:"All receipts have been matched",overrideMatch:"Override Match",matchedTo:"Matched to",fileCount:"__count__ files selected",noPreview:"No preview",auditTrail:"Audit Trail",statusRetrying:"Retrying",retryingDescription:"Agent is retrying to find a match",expiredDescription:"Retry period expired — no match found",emailBannerUploadLead:"Upload or email ",emailBannerAiTail:" will instantly auto-match"}}},miscategorizedTransactionList:{income:{title:"Miscategorized Income"},expense:{title:"Miscategorized Expenses"}},transactionDetail:{deleteConfirmation:{title:"Are you sure you want to delete this receipt?"},notCategorizedTooltipText:"This transaction must be assigned a category before it can be reviewed.",recommendationBanner:{uniqueName:"recommendation.banner",zeniRecommends:"Zeni recommends",retainOr:"or retain",fieldNames:{category:"banner.recommendation.category",class:"banner.recommendation.class"},updateAll:{preface:'Update category and class for all similar "',midText:'" transactions post the book close date of '},tooltip:{category:'The "category" update recommendation is __based__',class:'The "class" update recommendation is __based__'}},header:{billNumber:"Bill No.:",receivedTag:"Received"},lineItems:{allProjects:"All Projects",totalCredits:"Total Credit",totalDebits:"Total Debit",uncategorized:"uncategorized",miscategorized:"miscategorized",uncategorizedCredit:"Uncategorized Credit",uncategorizedDebit:"Uncategorized Debit",miscategorizedCredit:"Miscategorized Credit",miscategorizedDebit:"Miscategorized Debit",postingTypeUncategorizedCredit:"uncategorizedCredit",postingTypeUncategorizedDebit:"uncategorizedDebit",postingTypeMiscategorizedCredit:"miscategorizedCredit",postingTypeMiscategorizedDebit:"miscategorizedDebit",descriptionPlaceholder:"Add description here",classControl:"class",categoryControl:"category",allClasses:"All Classes",recommendedClasses:"Recommended Classes",categories:"Categories",allCustom:"All __custom__",recommendedCustom:"Recommended __custom__",journalEntryTable:{debitPrefix:"Dr",creditPrefix:"Cr",emptyMessage:"No journal entry lines available.",differenceLabel:"Difference",addLine:"+ Add line item",amountUpdateConfirmationTitle:"Update amount?",amountUpdateConfirmationDescription:"This changes the line item total. Confirm to apply the new amount.",amountUpdatePreviousAmountLabel:"Previous amount",amountUpdateNewAmountLabel:"New amount",validation:{lineNeedsDebitOrCredit:"Every line needs a debit or credit amount.",debitsMustEqualCredits:"Total debits must equal total credits.",eachLineMustHaveNoClass:"Each line must have a category and amount",eachLineMustHave:"Each line must have a category, class and amount"}},transactionLineTable:{emptyMessage:"No transaction lines available.",addLine:"Add line item",validation:{sumMustEqual:"Total amount must be equal to __amount__",eachLineMustHaveNoClass:"Each line must have a category and amount",eachLineMustHave:"Each line must have a category, class and amount"}}},payeeDetails:{allPayees:"All Payees",payeeListPlaceholder:"Select or create payee",editPayeeTooltip:"Click to edit payee"},vendorDetails:{recommendedVendors:"Recommended Vendors",vendorListPlaceholder:"Select or create vendor",fromOldName:'Change name from "__old_name__"',toNewName:' to "__new_name__"',vendorCreation:{discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",placeholders:{vendor:"Add vendor",owner:"Add owner"},vendorDetails:{vendorClassAdditionText:"Choose a default class for this vendor.",vendorCategoryAdditionText:"Choose a default category for this vendor",classGroups:{}},vendorAlreadyExistsErrorMsg:"Vendor already exists."}},footer:{allTransactions:"All transaction of ",willUpdate:" will be updated to ",postBookCloseData:" post the book close date of ",forAllLineItems:"for all line items in this transaction."},transactionLabels:{invoice:{origionalAmount:"Original Amount:"},estimate:{estimateNo:"Estimate No.:",estimateDate:"Estimate Date:"},creditMemo:{creditMemoNo:"Credit Memo No.:"},salesReceipt:{salesReceiptNo:"Sales Receipt No.:",salesReceiptDate:"Sales Receipt Date:"},delayedCredit:{delayedCreditNo:"Delayed Credit No.:",delayedCreditDate:"Delayed Credit Date:"},deposit:{account:"Account:"},refund:{refundReceiptNo:"Refund Receipt No.:",refundReceiptDate:"Refund Receipt Date:",refundFrom:"Refund From:"},receivePayment:{referenceNo:"Reference No.:"},expense:{paymentAc:"Payment Account:"},check:{bankAc:"Bank Account:"},purchaseOrder:{purchaseOrderNo:"Purchase Order No.:",purchaseOrderDate:"Purchase Order Date:"},bill:{billNo:"Bill #"},billPayment:{bankOrCreditAc:"Bank / Credit Account:",referenceNo:"Reference No:"},journalEntry:{journalDate:"Journal Date:",totalDebit:"Total Debit:",totalCredit:"Total Credit:"},productOrService:{productOrService:"Product/Service:",quantity:"Quantity:",rate:"Rate:"},productOrServiceInfo:{amountReceived:{default:"Amount Received:",credit_memo:"Credit Used:",refund:"Amount Refunded:"},balanceDue:{credit_memo:"Credit Remaining:",default:"Balance Due:"}},memoAndAttachment:{emptyMemoContent:"No memo added.",memoPlaceHolder:"Add memo here",attachmentTitle:"Receipt(s)",emptyAttachmentContent:"Drag file here or click to upload"},transfer:{transferFundsFrom:"Transfer Funds From:",transferFundsTo:"Transfer Funds To:"},creditCardPayment:{paidForCreditCard:"Paid for Credit Card:",amountPaid:"Amount Paid:"}},attachments:{uploading:"Uploading file...",deleteAttachment:"Delete Attachment"},transactionDetailPlaceholders:{project:"Add project",name:"Search Vendor or Customer"},errorPopup:{default:{description:"We are sorry, this was unexpected.\nPlease try again later."},error406:{title:"Transaction could not be updated.",descriptionPrefix:"Updates through this transaction didn't go through as\n",descriptionSuffix:" month financials have already been\nclosed. However, we just notified your Zeni team\nso they can help make this change."},error409:{description:"Please refresh this page and try again."},error500:{description:"We just notified your Zeni team, and\nthey are working on a solution."}},vendorBulkUpdateFetchRecommendationsPopUpInfo:{title:"Updating vendor name",applyingVendorName:"Applying vendor name to all the line items",appliedVendorName:"Vendor name applied to all the line items",buildingRecommendations:"Building category & class recommendations",recommendationsBuilt:"Category & class recommendations built successfully",recommendationsBuildFailed:"Category & class recommendations build failed"},updateInProgress:"An update to this transaction is currently in progress.",reachZeniTeam:"Please reach out to your Zeni team to update transactions before the book close date.",updateCategoryClassForSimilar:"Update category and class for all similar",transactionsPostBookCloseDateOf:"transactions post the book close date of"},dashboardAccountingPage:{title:"Connect to QuickBooks",adminInfoText:"To set up your ‘_company-name_’ dashboard, we'll need access to connect to your Quickbooks.",nonAdminInfoText:"To set up your ‘‘_company-name_’ dashboard, please ask your administrator to connect to Quickbooks by logging into Zeni Dashboard."},downloadReport:{statementTypes:{pdf:"PDF",excel:"Excel",csv:"CSV"},defaultFileName:"Financial Report.pdf",reportErrorMessage:"downloadAndSaveReport Failed with",viewReport:"View Report",downloadAs:"Download As",displayColumns:{title:"Display Columns",displayOrderBy:"Display order by"},addColumns:"Add Columns",filterBar:{viewColumnsBy:"View Columns By",viewBy:"View By",displayOrder:"Display Order",reportView:"Report View",columns:"Columns"},reportFormat:"Report Format",dataNotAvailable:"Data not available",orderBy:{ascending_date:"Recent period last",descending_date:"Recent period first"},maxPeriodSelectionAllowed:{pdf:"of 13 (periods + columns) selected"},pdfColumnLimit:{title:"PDF supports up to {maxColumns} columns",description:"You've selected {selection}. Excel has no column limit.",selectionWithAddedColumns:"{periods} and {addedColumns} ({selectedColumns} total)",periods:{month:"{count} months",quarter:"{count} quarters",year:"{count} years"},addedColumn:"1 added column",addedColumns:"{count} added columns",columns:"{count} columns",downloadAsExcel:"Download as Excel"},additionalColumns:{month:{free_range_total:"Period Total",year_to_date_total:"Year to Date Total",year_to_date_last_year_total:"Year to Date last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",this_period_vs_same_period_last_year:"Compare same month last year $",same_period_last_year:"Same month last year - -same_period_last_year-",this_period_vs_last_period:"Compare with previous month $",this_period_vs_last_period_percent:"Compare with previous month %",this_period_vs_same_period_last_year_percent:"Compare same month last year %"},quarter:{free_range_total:"Period Total",year_to_date_total:"Year to Date Total",year_to_date_last_year_total:"Year to Date last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",same_period_last_year:"Same quarter last year - -same_period_last_year-",this_period_vs_last_period:"Compare with previous quarter $",this_period_vs_last_period_percent:"Compare with previous quarter %",this_period_vs_same_period_last_year:"Compare same quarter last year $",this_period_vs_same_period_last_year_percent:"Compare same quarter last year %"},year:{free_range_total:"Period Total",year_to_date_total:"Year to Date Total",year_to_date_last_year_total:"Year to Date last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",this_period_vs_last_period:"Compare with previous year $",this_period_vs_last_period_percent:"Compare with previous year %",this_period_vs_same_period_last_year:"Compare same period last year $",this_period_vs_same_period_last_year_percent:"Compare same period last year %"},labels:{month:{free_range_total:"Period Total",year_to_date_total:"YTD Total",year_to_date_last_year_total:"YTD last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",same_period_last_year:"Same month last year - -same_period_last_year-",this_period_vs_same_period_last_year:"Compare same month last year $",this_period_vs_same_period_last_year_percent:"Compare same month last year %"},quarter:{free_range_total:"Period Total",year_to_date_total:"YTD Total",year_to_date_last_year_total:"YTD last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",same_period_last_year:"Same quarter last year - -same_period_last_year-",this_period_vs_same_period_last_year:"Compare same quarter last year $",this_period_vs_same_period_last_year_percent:"Compare same quarter last year %"},year:{free_range_total:"Period Total",year_to_date_total:"YTD Total",year_to_date_last_year_total:"YTD last year Total",rolling_12_months:"Rolling 12 months Total",rolling_12_months_average:"Rolling 12 months Average",this_period_vs_same_period_last_year:"Compare same period last year $",this_period_vs_same_period_last_year_percent:"Compare same period last year %"}}},fileSwitchDialogue:{pdfLimitation:"PDF can have a maximum of 12 columns",excelNoLimitation:"Excel has no limitations on the number of columns.\nThe period / column selection will reset if you switch to PDF.",switchToExcel:"Switch to Excel",continueWithPDF:"Continue with PDF",unlimitedDateRange:"Pick unlimited date range via Excel"},reportFormats:{summary:{id:"summary",label:"Snapshot",subLabel:"High-level report"},detailed:{id:"detailed",label:"Itemized",subLabelClasses:"Report with classes",subLabelAccountGroups:"Report with account groups"},moreDetailed:{id:"more_detailed",label:"Detailed",subLabelClasses:"Report with classes and accounts",subLabelAccountGroups:"Report with account groups and accounts"}},footer:{downloadExcel:"Download Excel"}},peoplePage:{zeniPeopleTitle:"Zeni People",dropdownPlaceHolderText:"Select Role",emptySearchTextSecondLine:"Please make sure the name or email is correct.",emptyDepartmentPlaceholderText:"Select Department",notApplicable:"Not Applicable",selectManager:"Select manager",rolelabels:{superAdmin:"Super Admin",investorOrBanker:"Investor or Banker",employee:"Employee"},groups:{chargeCard:"Business Cards"},rolesDropdownDescription:{superAdmin:"Full access and can invite or remove people.",employee:"Choose individual product roles below. Admins have full access across that specific product only.",investorOrBanker:"Access to high-level data only and not transaction-level data.",finance:{user:"Users can access all financials, except salary data.",admin:"Admins can access all financials and categorize transactions."},billpay:{user:"Users can create, edit bills and approve if part of the approval rule.",admin:"Admins can view, manage all bills and set up approval rules."},reimbursement:{user:"Users can create and edit their own reimbursements.",admin:"Admins can view, manage all reimbursements and set up approval rules."},accounts:{user:"Users can view account transactions and download statements.",admin:"Admins can move money between Zeni Checking and external accounts."},chargeCard:{user:"Users can request or receive Zeni Cards and view their transactions.",admin:"Admins can Issue cards, set spend limits and manage card specific settings."},treasury:{user:"Users can view transactions and download statements.",admin:"Admins can move money between connected bank accounts and Treasury, and allocate funds to money market mutual funds."}},rootRoleFor:{superAdmin:"For Founders, CFOs and Controllers",employee:"For Employees, Executive Assistants and AP clerks",investorOrBanker:"For Board Members and Investors"},resendInvite:{label:"Resend invite!"},header:{lastSeen:"Last Seen"},invitePage:{editTitle:"Edit Profile",editZeniTitle:"Edit Zeni People",zeniTitle:"Invite Zeni People",user:"Add User",manager:"Manager:",role:"Role:",controllerText:"To add a new department, reach out to your controller ",discardTitle:"Do you want to leave this page?",discardDescription:"You will lose the data you have filled in.",emailSubject:"Request to add a new department.",managerTooltipText:"Manager can review and approve reimbursements for their direct reports.",defaultHelpText:"Enter valid email address.",otherThanZeniMailIDForZeniModeText:"Only Zeni domain is allowed.",zeniMailIDForNormalModeText:"Zeni domain is not allowed.",emailAlreadyExist:"Email entered already exists."},deleteOverlay:{title:"Remove User",description:"Removing ‘_user-name_’ from the organisation will terminate all access to Zeni."},emptyResultsMessage:"To add a new user, click on the ‘Invite People’ button."},informationCard:{howItWorks:"How It Works",thankYou:"Thank You!",youAreAwesome:"You are awesome.",howItWorksSummary:"We are working on unique ways to assist you, so over time, you’ll see new cards in your dashboard.",howItWorksInsight:"We deliver you tailored insights that can help take control of your finances, like what you can do to improve."},autoComplete:{input:{vendor:"Search another vendor",customer:"Search customer",default:"Search for vendor or customer",create:"Create new vendor as ",createRecipient:"Create new recipient as "}},companyPassportCard:{companyOfficer:"Company Officer:",typeOfInc:"Type of Incorporation (Tax Form):"},completeProfile:{title:"Complete your profile",enableTwoFA:"Enable 2FA for your protection!",twoFAEnabled:"2FA via SMS has been setup successfully",phoneSetupText:"Add your phone to set up two-factor authentication",enableTwoFADescription:"You can enable this feature to receive a one-time code via SMS to verify your identity. We never use your phone for marketing or third parties."},dashboardScreen:{input:{placeholder:"Search account, merchant, payee, transaction, etc."}},forecastPromoPage:{pageTitle:"Forecasting & Planning",pageSubTitle:"Zeni will show you the future to help you make better decisions today.",accuratelyText:"Forecast revenue, costs & cashflow",trackText:"Track performance and variances",preciseText:"Budgets across entire business",trustBanner:{title:"Zeni Forecast is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni helps you predict cash flow, align budgets, and make smarter financial decisions."},meetingButton:"Schedule a Meeting",forecastUpload:"If you already have your forecasts ready, please upload them to \n Quickbooks Online Budget Tool so we can showcase it here.✌🏻"},cardPayment:{title:"Link Credit Card",subtitle:"Fees will be charged to this card from your activation date.",terms:{term1:"You accept the ",term2:"Terms & Conditions"},cardBrands:{visa:"Visa",mastercard:"MasterCard",american_express:"American Express",discover:"Discover",jcb:"JCB",diners_club:"Diner's Club",unionpay:"UnionPay",rupay:"Rupay Card",bancontact:"Bancontact",cmr_falabella:"CMR Falabella",tarjeta_naranja:"Tarjeta Naranja",nativa:"Nativa",cencosud:"Cencosud",cabal:"Cabal",argencard:"Argencard",elo:"Elo",hipercard:"Hipercard",carnet:"Carnet",maestro:"Maestro",eftpos_australia:"Eftpos Australia",girocard:"Girocard"}},taskCard:{title:"My Tasks",singleNoteText:"We need your help in completing this task.",multiNoteText:"We need your help in completing these tasks.",expensesText:"Categorize expenses",incomeText:"Categorize income",billsAwaitingApproval:"Bills awaiting approval",reimbursementsAwaitingApproval:"Reimbursements awaiting approval",transactionsText:"Add receipt to transactions",uncategorizedAccountMappingText:"Select Uncategorized Accounts",showAll:"All other tasks"},notFoundPage:{cantFindText:"We can't find the page you are looking for!",pleaseText:"Please ",goBackText:"go back",startOverText:" or start over from ",homePageText:"Home page"},somethingWrongPage:{title:"Something went wrong",subTitle:"Please reload the page and try again."},newUpdateAvailablePage:{title:"New updates available",subTitle:"To experience new updates of this page, please reload it."},statementCloseDay:{statement:"add statement close date",dropdown:{option1:"PickADate",option2:"LastDayOfTheMonth"},lastDate:{text:"Last day of every month"},ordinalText:{lastDate:"close last day of every month",prefix:"close ",suffix:" of every month"}},companyPassport:{quickAccessInfo:"Quick access to the company's detailed information.",zeniOnlyInfo:"Below information is private and visible only to Zeni",protectedContent:"**********",snackBar:{successText:"Company Details updated successfully."},companyInfo:{title:"Company Info",industryPlaceholder:"Select industry",allIndustries:["Artificial Intelligence","Apparel / Goods","Automotive","Developer APIs","Education","Ecommerce","Environment / Sustainability","Finance / Banking","Food & Beverage","Gaming","Hardware","Healthcare","Legal","Media","Productivity","Professional Services / Consulting","Real Estate","Social","Sports"],businessModel:"Business Model:",businessModelPlaceholder:"Select business model",businessModelPlaceholderSmall:"Business model",allBusinessModels:["B2B","B2C","B2B2C","D2C","SaaS","Marketplace/C2C"],fiscalYear:"Fiscal Year:",fiscalYearPlaceholder:"Jan to Dec"},address:{titleAdd:"Add Address",saveAddress:"Save Address",popupAddressConfirmationSave:"Are you sure to change the mailing address?",popupSaveDescription:"The updated mailing address will be regarded as common for all existing wire accounts.",popupCancelDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",poweredBy:"Powered by",street:"Street Address:",streetError:"Street Address is required for __reason__",suite:"Floor/Suite/Office #:",city:"City:",cityError:"City is required for __reason__",state:"State:",stateError:"State is required for __reason__",countryError:"Country is required for __reason__",zipCode:"ZIP Code:",zipCodeError:"ZIP Code is required for __reason__",secondaryInfo:"Secondary Info:",suiteText:"Please add a suite/ unit no. to ensure your shipping info is accurate.",secondaryInfoPlaceholder:"Add secondary info",forPaymentSetup:"payment set up",forBillingSetup:"billing address"},primaryContact:{title:"Primary Contact"},companyIncInfo:{title:"Incorporation Info",incDate:"Incorporation Date:",stateOfIncPlaceholder:"Select state of incorporation",typeOfIncPlaceholder:"Select type of incorporation",stateOfIncPlaceholderSmall:"Select inc state",typeOfIncPlaceholderSmall:"Select inc type",allStatesOfIncorporation:["Alabama","Alaska","American Samoa","Mississippi","Missouri","Montana","Nebraska","Nevada","Maryland","Massachusetts","Michigan","Minnesota","Colorado","Connecticut","Dakota","Delaware","District of Columbia","Florida","Georgia","Guam","Hawaii","Idaho","New Hampshire","New Jersey","New Mexico","California","Louisiana","Maine","Illinois","Arizona","Arkansas","Indiana","Iowa","Kansas","Kentucky","New York","North Carolina","North Dakota","Northern Mariana Islands","Ohio","Oklahoma","Oregon","Orleans","Pennsylvania","Philippine Islands","Puerto Rico","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virgin Islands","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],allTypesOfIncorporation:["C Corporation","S Corporation","Limited Liability Company","Sole Proprietorship","Limited Partnership","Non-profit"]},companyTaxInfo:{title:"Tax Details",taxIdOrEIN:"Tax ID/ EIN:",dunsNumber:"DUNS Number:",naicsCode:"NAICS Code:",sicCode:"SIC Code:",taxIdOrEINPlaceholder:"Add Tax ID/ EIN",dunsNumberPlaceholder:"Add DUNS number",naicsCodePlaceholder:"Add NAICS code",sicCodePlaceholder:"Add SIC code",taxesFiledYears:"Taxes Filed For:",taxesFiledYearsPlaceholder:"Select years",taxStatus:"Tax Status:",taxLead:"Tax Lead:",adminPrivilegeRequired:"Administrator privilege is required to view this information."},companyOfficer:{companyTitle:"Title:",officer:"Officer #"},zeniFinanceTeam:{title:"Zeni Finance Team",controller:"Controller:",scheduleCall:"Schedule a Call:",scheduleCallPlaceholder:"Add calendly/chilipiper/hubspot meeting link",scheduleCallPlaceholderSmall:"Add meeting link",emailUs:"Email Us:",subscriptionPlans:"Subscription Plans:",accountManager:"Account Manager",staffAccountant:"Staff Accountant:",reportsSent:"Reports Sent",planHigherLimit:"Plan Higher Limit:",averageTwoMonthsExpenses:"Average 2 Months Expenses:",planStatus:"Plan Status",addons:"Addons:",notes:"Notes:",schedule:"Schedule"}},transactions:{titles:{miscategorized:"Miscategorized",uncategorized:"Uncategorized"},filters:{equalOperatorValue:"equal"}},cockpit:{errorMessages:{fileDownloadError:"Download cockpit Failed with",auditReportFetchError:"Failed to load"},defaultFileName:"Cockpit Tab - Detail.xlsx",notePlaceholder:"Add note",commentPlaceholder:"Write a reason (required)",lastEdited:"Last edited:",cockpitHeaderSubsidiaryText:"& Subsidiaries",searchplaceholder:"Search customers",businessDay:"Business Day",emptySearchOnFilters:"Filter applied, no tenant found.",emptySearchTextSecondLine:"Please make sure the company name is correct.",searchByName:"Search By Name",userMultiSelectHeaders:{allUsers:"All Users",allUserGroups:"All User Groups",selectedUserGroups:"Selected User Groups",selectedUsers:"Selected Users",selectedControllers:"Selected Controllers",selectedPreparers:"Selected Preparers",selectedReviewers:"Selected Reviewers",selectedAPAnalysts:"Selected AP Analysts",selectedTaxLeads:"Selected Tax Leads"},titles:{management:"Management",portfolio:"Portfolio",audit:"Audit",healthMonitor:"Health Monitor",taskManager:"Task Manager"},creditAgent:{saving:"Saving...",savePrompt:"Save Prompt",downloadReport:"Download Report",failedToSavePrompt:"Failed to save prompt. Please try again.",failedToLoadCardProfiles:"Failed to load card profiles.",noTenantsMatchFilters:"No tenants match your filters.",noCardProfilesYet:"No card profiles yet.",analyzing:"Analyzing…",analyze:"Analyze",addLimit:"+ Add limit",setLimitBeforeApproving:"Set a credit limit before approving",preApprove:"Pre-approve",addReason:"Add reason",inProgress:"In progress…",setCreditLimitFirst:"Set a credit limit first",promptPlaceholder:"e.g. Increase limits for high-growth SaaS companies, or be conservative with companies under 2 years old…",searchPlaceholder:"Search by name or tenant ID...",focusLabel:"Focus",minScoreLabel:"Min score",tenantCountSingular:"tenant",tenantCountPlural:"tenants",tenantCountFound:"found",colCreditScore:"Credit Score",colRecommendedAmount:"Recommended Amount",colRationale:"Rationale",colLastAnalysedOn:"Last Analysed On",composerPlaceholder:"Add a note...",replyComposerPlaceholder:"Reply...",modalPreApproveTitle:"Pre-approve card request",modalApproveTitle:"Approve card request",modalRejectTitle:"Reject card request",modalLockTitle:"Lock card account",modalUnlockTitle:"Unlock card account",modalCardAccessBodySuffix:"will have access to Zeni Cards with a Credit Limit of",modalRejectBodySuffix:"will not get access to Zeni Cards.",modalLockBodySuffix:"'s card account will be locked.",modalUnlockBodySuffix:"'s card account will be unlocked and set back to Active.",modalResetBodySuffix:"'s card status will be reset.",kebabResetToDefault:"Reset to Default",analyseTitle:"Analyse",tenantIdNotAvailable:"Tenant ID not available",moveToInterested:"Move to Interested",creditAgentFallback:"Credit Agent",focusNewOnly:"New only",focusInterested:"Interested",focusActiveOnly:"Active only",notSignedIn:"Not signed in. Please sign in to access the Credit Agent."},review:{header:{miscategorizedTransactions:"Miscategorized Transactions",uncategorizedTransactions:"Uncategorized Transactions",schedules:"Schedules"},reachedZeni:"You have reached Zeni.",errors:{qboLinked:"QBO connection error",bankAccountLinked:"Chargebee connection error",unitVerificationFailed:"Unit verification failed"},selectUncategorizedAccounts:"Select the uncategorized accounts",pendingIssues:"pending issues",getScore:"Get Score",auditReportDrawer:{title:"AuditBot is generating report",reportGeneratedTitle:"Report Generated",reportGeneratedSubtitle:"Please resolve all possible issues and click on the ‘Update Score’ to save the updated report for future",reviewing:"Reviewing",updateScore:"Update Score",issuesFound:"issues found",commentTitle:"Add a reason to bypass the error"},warningsDrawer:{kyb:"KYB",kyc:"KYC",identity:"Identity",issueFound:"issue found"}},management:{header:{satisfaction:"Satisfaction",bookCloseDate:"Book Close Date",reportSent:"Report Sent"},productVerticals:{placeholder:"Select services",options:{cfo:"CFO"}},realmId:{reset:{description:"Are you sure you want to reset the QBO realm ID for {tenantName}?\n\nThe tenant will then be able to connect to any QBO company."},update:{description:"Enter the new QuickBooks realm ID for {tenantName}",caution:"Please be cautious, this will change the QuickBooks realm ID for {tenantName}.",invalidRealmId:"Realm ID must contain digits only.",inputPlaceholder:"New realm ID"}},noPerson:"No people",createMonthInsight:"Create __month__ Insight",editMonthInsight:"Edit __month__ Insight",monthInsightNotReady:"__month__ Insights not ready",monthInsightsCanBeSentFromDashboard:"Send this email from the month close flow on dashboard.",monthInsightsCanBeEditedFromDashboard:"Edit this email from the month close flow on dashboard.",sendMonthInsightsFromDashboardWhenReady:"Send this email from the month close flow on dashboard when insights are ready.",monthEndHistoryUnavailable:"To see history, a minimum of one insight email has to be sent.",customerSatisfaction:{noteLabel:"Please add a comment to save the status",updateNoteLabel:"Please add a comment to save the updated status",customerOptions:{delighted:{name:"Delighted",description:"The customer loves Zeni wants to introduce others to Zeni."},happy:{name:"Happy",description:"The relationship with the customer is good, but Zeni needs to work on tools and Customer Expectations."},complaining:{name:"Complaining",description:"The customer is complaining about quality issues. Customer Success involvement needed."},looking_for_transition:{name:"Looking for transition",description:"The customer is looking to transition off Zeni. Customer notes Pervasive issues. Zeni Executive and Customer Success needed."}},teamOptions:{exceeds_expectations:{name:"Exceeds expectations",description:"Zeni is exceeding expectations. Team is moving timelines up, creating availability and providing exceptional services."},meets_expectations:{name:"Meets expectations",description:"Zeni relationships are working well. Team is meeting timelines. Deliverables have high quality."},improvement_needed:{name:"Improvement needed",description:"Team is in need of training regarding customer classification, team is understaffed."},unsatisfactory:{name:"Unsatisfactory",description:"Team has significant issues with quality, meeting timelines and responding to the customer on a timely basis."}}}},monthEndReport:{sendEmailTo:"Send Email To",addUserForInsights:"Add users you would like to send insights to",reportSentDateInfo:'By sending this email, the "Report Sent Date" in the Cockpit will be updated.',insightsNotAvailable:"No insights available",addEmailAddress:"Add Email Address",addSubject:"Add Subject",agentInsights:{editButtonLabel:"Edit AI Content",doneButtonLabel:"Done Editing",note:"Edits are saved to the draft and are what gets sent. Regenerating replaces them with fresh AI content.",saving:"Saving your edit… Preview and Send unlock once it is saved.",saveFailed:"Your last edit could not be saved. It is shown here but will NOT be sent — try Save Changes again.",regenerateTitle:"Regenerate AI content?",regenerateDescription:"This month's insights were edited. Regenerating replaces every section with fresh AI content and discards those edits.",regenerateConfirm:"Regenerate Anyway",fields:{agent_insights_header:"Headline",agent_insights_section_cfo_perspective:"CFO Perspective",agent_insights_section_what_changed:"What Changed",agent_insights_section_revenue_margin:"Revenue & Margin",agent_insights_section_operating_expenses:"Operating Expenses",agent_insights_section_cash_runway:"Cash & Runway",agent_insights_section_zeni_requests:"Zeni Requests",agent_insights_section_summary:"Summary"}},editorTitle:"Zeni Requests/Updates",editorNote:"Note: This section will remain absent if left empty in the final email sent.",timeStampLabel:"Last Saved:",editorPlaceholder:"Enter some text...",sendMonthInsightsTitle:"Send __month__ Insights",sendEmailButtonLabel:"Send __month__ Insights",sendMonthInsightsDescription:"You are attempting to send the __month__ Insights with an audit score below 75%. Do you want to still want to proceed?",sendAnyway:"Send Anyway",customerRequestSectionTitle:"Customer Requests",customerRequestSectionSubtitle:"Pending requests from last month's insights",auditScoreSectionLoadingTitle:"AuditBot is generating report for __date__",auditScoreSectionSubtitle:"Please ensure the Auditbot score is above 75% to send the month-end insights email",auditScoreCompletedSubtitle:"Please resolve all issues and click on the Update Score to view the latest score.",snippets:"Snippets",lastMonthRequests:"Last Month Requests",lastMonthRequestsSubtitle:"Select the requests to carry forward",issueBypassed:"(Issue bypassed)",editorTextOptions:{normal:"Normal",largeHeading:"Large Heading",smallHeading:"Small Heading",numberedList:"Numbered List"},toolbarPluginTooltip:{list:"List"},templates:{templates:"Templates",templateOptions:{uncategorizedIncomes:"Uncategorized Incomes"}},editorZeniGPTButton:{label:"Improve using Zeni GPT",tooltip:"Enhancing the text may require more than 30 seconds. Your patience is appreciated."}},subscription:{lessBtnText:"Less",header:{avg2MonthExpenses:"Avg 2 Mos. Expenses"}},health:{common:{engagementTypes:{meeting:"Meeting"},labels:{lastEngagements:"Last Engagements",factorsThatIncreaseChurnProbability:"Factors that increase churn probability",factorsThatDecreaseChurnProbability:"Factors that decrease churn probability",increaseChurnProbability:"Increasing churn probability",decreasingChurnProbability:"Decreasing churn probability",contributingFactors:"Contributing Factors"}},header:{lastEngagement:"Last Engagement",dashboardLastSeen:"Dashboard Last Seen"},healthMonitorFiltersHeaderInfoText:{outOf:"out of",customers:"customers"},detailPage:{heading:"'s Health Report",churnProbabilityTexts:{for:"for",dueTo:"due to:",percent:"%"},meterRangePercents:{zeroPercent:"0%",fiftyPercent:"50%",sixtyPercent:"60%",seventyFivePercent:"75%",ninetyPercent:"90%",hundredPercent:"100%"},calculatingProbability:"Calculating Churn Probability %",notApplicable:"NA",tooltipTexts:{manualInputText:"Kindly share the necessary information for calculating the Churn Probability %",externalProductServicesText:"Customer exposure to external accounting services or in-house accounting team.",customerSatisfactionScoreText:"If NPS is not available for this tenant, please enter the CSAT score (1 to 5). To calculate churn probability, it is mandatory to enter at least one of these two scores.",additionalContributingFactorsText:"Please select the additional factors that you want the health monitor to consider when calculating churn probability"},manualInput:{header:"Manual Inputs",placeholders:{addANote:"Add a note(optional)"},labels:{externalProductServices:"External Services Exposure:",additionalContributingFactorsLabel:"Additional Contributing Factors"}},preFilledInput:{header:"Pre-filled",labels:{runway:"Runway:",dashboardLastSeen:"Dashboard Last Seen:",lastReportSent:"Last Report Sent:",countOfReportedIssues:"Count of Reported Issues:",zeniProductServices:"Zeni Product and Services:",daysToRenewal:"Days to Renewal:"}}}},portfolio:{cashUnderManagementText:"Cash under management",expensesAcrossAllCustomersText:"Expenses across all customers",revenuesAcrossAllCustomersText:"Revenues across all customers"},filters:{filterCategories:{management:{statusCode:"Customer Status",customerSatisfaction:"Customer Satisfaction",zeniSatisfaction:"Zeni Satisfaction"},subscription:{statusCode:"Subscription Status",avg2MonthExpenses:"Avg. 2 Mos. Expenses"},aiAccountant:{enrollmentStatus:"Enrollment Status"}}},onboarding:{qboRadioButtonLabels:{zeni_user:"Zeni team will connect to QuickBooks",customer:"Customer will connect to QuickBooks"},qboSetupAutomated:{qboSectionText:"QBO Accounts Available:",typeOfQBOAccount:{essentials:"Essentials",plus:"Plus",advanced:"Advanced"},setupQBO:"Set up QBO"},qboSuccessText:"Congratulations! You have successfully established a connection with QuickBooks.",confirmationPopup:{title:"Send Invite Link to Customer?",subTitle:"Clicking “Yes” will send the invite link to the customer."},header:{enroller:"Enroller"},customer:{customerNameExistInManagementText:"A customer named ‘_company-domain_’ already exists.",customerNameExistInOnboardingText:"Onboarding is already in progress for ‘_company-domain_’",subTitle:"Please follow these steps to create a new customer and send them an onboarding invite.",companyCredentials:"Company Credentials",companyDomain:"Company Domain:",domain:"domain",email:"email",international:"International",primaryContactEmail:"Primary Contact Email:",groupCreationError:"Error creating google group.",emailgroupAPIError:"Sorry, something went wrong please try again.",preOnboardingError:"Pre-onboarding has not yet been done for this tenant!",preOnboardingSaveError:'If pre-onboarding is complete, proceed to "Save".',tryAgainText:"Try Again",completePreOnboardingText:"Complete Pre-onboarding",groupNameWarning:"Group name is required for group creation.",groupEmail:"Group Email",groupEmailWarning:"Group email is required for group creation.",groupDescription:"Group Description",existRealmIdText:"Already have access to Realm ID? Enable customer creation.",customerName:"Customer Name",customerEmail:"Customer Email",customerNameInfoText:"Enter the customer name to send the onboarding invite.",customerEmailInfoText:"Enter the customer email to send the onboarding invite.",companyNameInfoText:"Enter the correct company name to display on the dashboard.",realmIdText:"realm ID",primaryEmailWarning:"The email should match the company domain.",realmIdWarning:"Your realm ID don’t match!",chargebeeIdWarning:"Your chargebee ID don’t match!",hubSpotIdWarning:"Your hubspot ID don’t match!",productsWarning:"Please select product(s).",entity:"Entity",confirmRealmId:"Confirm Realm ID",confirmRealmIdText:"Confirm realm ID",chargebeeId:"Chargebee ID",chargebeeIdText:"chargebee ID",language:"Language",reamlIdTooltip:{firstLine:"How do I find the Realm ID?",secondLine:"RealmID is also called Company ID. You can find it by going to ‘Your Account’ section of your QuickBooks Online Account"}},onboardingUsersPlaceholder:"Onboarding users",goLiveText:"Go Live",goLiveTitle:"You're Almost Done!",goLiveDescription:'Follow these steps once you click "Go Live".',goLiveSteps:{stepOne:"The onboarded customer will be moved to management.",stepTwo:"Search for this customer under the management tab.",stepThree:"Click the customer name to connect to QBO.",stepFour:"Once QBO is connected, you can access the company's dashboard."},connectToQBOTitle:"Connect to Quickbooks",connectToQBODescription:'To set up your "_company-domain_" dashboard, we\'ll need access\nto connect to your Quickbooks.',connectToQBOError:"Unfortunately, you do not have permission to connect.\n To do so, please get in touch with your administrator.",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",customerCreated:"Customer created Successfully",groupCreated:"Group created Successfully",bothCreated:"Group & Customer created Successfully",customerUpdated:"Customer updated Successfully",companyDetailsUpdated:"Company details updated Successfully",onboardingCompleted:"‘_company-name_’ customer moved to the Management tab successfully.",qboErrorText:"Unable to connect quickbooks. Please try again."},taskManager:{header:{taskName:"Task Name"},metrics:{totalTasks:"Total Tasks",openTasks:"Open Tasks",overdueTasks:"Overdue Tasks",closedTasks:"Closed Tasks"}}},dropDowns:{otherOption:"Other -",quickBooks:"QuickBooks",months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],noOptions:{standard:"No options found"},tenantGroups:{aiEnabled:"AI Enabled",allOthers:"All Others"}},subscriptionUpdate:{dropDowns:{labels:{planName:"Plan Name:",nonRecurringAddOns:"Non Recurring Addons:",startDate:"Start Date:"},groups:{recommendedPlan:"Recommended Plan",allPlans:"All Plans"},placeholders:{selectAddOn:"Select addon",selectCoupon:"Select coupon",selectAddAccount:"Add New Account"}},planDetail:{planAmount:"Plan Amount:",billEvery:"Bill Every:",nextBillingAt:"Next Billing On:",nextBillingAmount:"Next Billing Amount:",mrr:"MRR:",title:"Plans & Addons",planUpperLimit:"Plan Upper Limit:",avgMonthlySpend:"Avg. Monthly Spend:",revenueFor:"Revenue For",adminPrivilegeReq:"Administrator privilege is required to edit this information"},planUpdateSummaryDetail:{title:"Confirmation",promotionalCredits:"Promotional Credits:",recurringAddons:"Recurring Addons",appliedCredits:"Applied Credits:"},updatePlan:{applyChanges:{title:"Apply Changes",description:"If there are any charges, you can either generate an invoice immediately, or add it to unbilled charges and invoice them later.",nextRenewal:"On Next Renewal",immediately:"Immediately",applyProRated:"Apply pro-rated credits and charges",proRatedDescription:"If the check box is enabled, pro-rated credits will be applicable to the subscription and a new invoice will be created with the pro-rated charges.",proRatedText1:"* Pro-rated charges won't be applicable, if there is a charge in the billing term (say, monthly to annual)",proRatedText2:"* For PHYSICAL GOODS, disable the checkbox, unless explicitly required."}},addPlan:{invoiceOption:{title:"Invoicing Options",description:"If there are any charges, you can either generate an invoice immediately, or add it to unbilled charges and invoice them later.",invoiceNow:"Invoice now"}},snackBar:{successUpdate:"Plan update successful",errorUpdate:"Plan update failed",successAdd:"Plan added",errorAdd:"Plan add failed",successText:"A confirmation email will be sent shortly."}},dateFormat:{visual:{Dformat:"D",DMMMFormat:"D MMM",DMMMYYFormat:"D MMM YY",DMMMYYYYFormat:"D MMM YYYY",dMMMyyyyFormat:"d MMM yyyy",dSlashMMSlashyyFormat:"d/MM/yy",DdashMMdashYYYYFormat:"D-MM-YYYY",MMMDCommaYYFormat:"MMM D, YY",defaultInput:"MMM d, yyyy",MMMDCommaYYYYformat:"MMM D, YYYY",MMMMYYYYFormat:"MMMM YYYY",DDSlashMMSlashYYYYFormat:"DD/MM/YYYY",MMSlashDSlashYYYYFormat:"MM/D/YYYY",MMMDFormat:"MMM D",MMMDhmmAFormat:"MMM D, h:mm A",MMMCommaYYFormat:"MMM, YY",MMMYYYYFormat:"MMM YYYY",MMMYYFormat:"MMM YY",MMMformat:"MMM",QYYYYformat:"Q YYYY",YYYYformat:"YYYY",MMMCommaYYYYFormat:"MMM, YYYY",MMMMFormat:"MMMM",MMSlashYYYYFormat:"MM/YYYY",MMSpaceSlashYYYYFormat:"MM / YYYY",MMSlashYYFormat:"MM/YY",QYYformat:"Q YY",YYYYDashMMDashDFormat:"YYYY-MM-D",YYYYDashMMFormat:"YYYY-MM",YYYYDashMMDashDDTHHmmssFormat:"YYYY-MM-DDTHH:mm:ss",HHMMFormat:"HH:mm"},analytics:{DDDashMMDashYYYY:"DD-MM-YYYY",MMMYYYYFormat:"MMM YYYY",MMMDDCommaYYYYformat:"MMM DD, YYYY",YYYYFormat:"YYYY",MMSlashDDSlashYYYYFormat:"MM/DD/YYYY",MMMDashDDDashYYYYFormat:"MMM-DD-YYYY",YYYYDashMMDashDDFormat:"YYYY-MM-DD"}},timeFormat:{hmmADashDDMMMCommaYYYY:"h:mm A - DD MMM, YYYY",hhmmAFormat:"hh:mm A",hmmAFormat:"h:mm A",dddCommaHmmAFormat:"ddd, h:mm A"},months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],commonSetUp:{setUp:{setupVerifiedSubTitle:"Manage your business verification, bank details, and multi-level approvals to make Zeni work better for you.",businessVerificationTitle:"Verify Identity & Company Details",businessVerificationSubTitle:"Upload documents to complete proof of identity and business.",businessVerificationAdditionalInfo:"Verification takes up to 24 hours. We'll notify you by email.",cardPolicyHeader:"Add Card Policy",cardPolicyTitle:"View or Create Card Policies",cardPolicySetUpStatus:"Set up",paymentSource:"Payment Source",achSubHeader:"Securely add your preferred payment method to activate your account.",achVerifiedHeader:"ACH Payments",achFailedTitle:"Bank Connection Failed",achSubTitle:"Sign in securely to your bank and start managing your payments right away",fetchBalance:"Fetch balance",fetchingBalance:"Fetching balance...",verifyAccount:"Verify Account",verifyingAccount:"Verifying Account...",getCurrentBalance:"Get Current Balance",fetchBalanceError:"Could not fetch current balance! Please click the refresh icon to display current balance.",verifyAccountError:"Could not verify account! Please try to verify account again.",reLoginLabel:"Re-login required",reLogging:"Re-logging in",reLoginError:"Could not re-login into account! Please try to re-login again.",reLoginMessage:"Login details of this account have expired. Re-login to update the information.",bankAccountLinkingError:"Please link a bank account or credit card to set up payment",linkNewAccount:"Link a new account",addNewCard:"Link new card",connectExternalAccount:"Connect an external bank account",connectNow:"Connect Now",chaseLabel:"Set Zeni as Chase payee",zeniCashAccountLabel:"Zeni Cash Account:",zeniCashAccountPlaceholder:"Select cash account",zeniCashAcoountInfo:"Link your chosen bank account to the correct cash account",setupApprovalHeader:"Setup Approval Rules",createApprovalTitle:"Create Approval Rules",approvalTitle:"View or Create Approval Rules",accountsPlg:{heading:"Elevate your Banking with Zeni Checking",moveMoneyHeading:"Fund Your Zeni Checking to Pay Your Vendors",signUpButtonText:"Sign Up for Free",bulletPoints:{one:"Upto __rate__% APY",two:"Up to __amount__ FDIC insured",three:"Enjoy free wires",four:"Faster payouts"}},cardPolicySubTitle:"Create and manage reusable spend control policies"},businessVerification:{productType:{onboarding:"identity verification",business_verification:"business verification",complete_profile:"complete profile"},documentDetailLine:{checkFront:"Take a clear front photo of your check.",checkBack:"Take a clear back photo of your check.",id:"Take a clear photo of your ID."},takePhotoHeader:"Take A Photo",photoDescription:"Place your document within the frame, then tap “Take a photo” to scan and\n retrieve details.",retakePhoto:"Retake Photo",useThisPhoto:"Use This Photo",takeAPhoto:"Take a Photo",makeSure:"Make sure the lighting is good, and the text is readable.",pleaseMakeSure:"Please make sure the photo appears inside the bleed area.",title:"Financial regulations require Zeni to collect both identity & company details to verify your business.",confirmIdentityDetails:"Confirm Identity Details",confirmIdentityDetailsSubTitle:"Enter business details to complete verification.",confirmIdentityDetailsNewOfficer:"Confirm Identity Details of New Officer",confirmIdentityDetailsTooltip:"The company officer’s SSN is required to comply with the BankSecrecy Act (BSA) and Anti-Money Laundering (AML) regulations.",confirmCompanyDetails:"Confirm Company Details",confirmCompanyDetailsSubTitle:"Enter company details to complete verification.",confirmCompanyDetailsTooltip:"The company details are required to comply with the Financial regulations law and ensure security for all our customers.",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",emailError:"Email is required for _product_type_",phoneErrorForOnboarding:"Please enter a valid phone number",phoneValidationError:"Phone number is not verified",address:"Home Address:",customAddressPlaceholder:"Add custom address",addressError:"Address is required for _product_type_",addressAdditionInfo:"Example: Address on your driver's license",ssnLabel:"Social Security Number (SSN):",nationalityLabel:"Nationality:",nationalityPlaceholder:"Add Nationality",nationalityDescription:"Nationality is required for _product_type_.",companyRoleLabel:"Company Role:",companyRolePlaceholder:"Add company role",companyRolePlaceholderSmall:"Company role",companyLegalNameLabel:"Company Legal Name:",companyLegalNamePlaceholder:"Add legal name of business",companyLegalNameError:"Company legal name is required for _product_type_",companyAddressLabel:"Company Address:",companyAddressPlaceholder:"Add company address",companyAddressError:"Company address is required for _product_type_",registeredAddressLabel:"Registered Address:",registeredAddressPlaceholder:"Add registered address",registeredAddressError:"Registered address is required for _product_type_",companyWebsitePlaceholder:"Add URL",companyWebsiteError:"Website is required for _product_type_",companyTypeOfIncorporationPlaceholder:"Add type of incorporation",companyTypeOfIncorporationError:"Type of Incorporation is required for _product_type_",companyIncDateLabel:"Company Incorporation Date:",companyIncDatePlaceholder:"Select company incorporation date",companyIncDateError:"Company Incorporation Date is required for _product_type_",companyStateOfIncorporationPlaceholder:"Add state of incorporation",companyStateOfIncorporationError:"State of Incorporation is required for _product_type_",countriesOfOperationsLabel:"Countries of Operations:",countriesOfOperationsPlaceholder:"Select countries of operations",countriesOfOperationsAdditionalInfo:"List the countries where you do business or have customers",countriesOfOperationsError:"Countries of Operations is required for _product_type_",companyIndustryPlaceholder:"Add industry",companyIndustryOptions:{retail_consumer_goods:"Retail & Consumer Goods",financial_services:"Financial Services",food_agriculture:"Food & Agriculture",healthcare_pharmaceuticals:"Healthcare & Pharmaceuticals",professional_services:"Professional Services",manufacturing_industrial:"Manufacturing & Industrial",real_estate_construction:"Real Estate & Construction",logistics_transportation:"Logistics & Transportation",business_support_services:"Business Support Services",escort_dating_adult_entertainment:"Escort/Dating/Adult Entertainment"},companyIndustryError:"Industry is required for _product_type_",companyIndustryAdditionalInfo:"Select the primary business activity",companySubIndustryLabel:"Sub-Industry:",companySubIndustryPlaceholder:"Select business activity",companySubIndustryError:"Select primary business activity for _product_type_",companySubIndustryOptions:{retail_consumer_goods:{grocery_stores_supermarkets:"Grocery Stores or Supermarkets",convenience_stores:"Convenience Stores",specialty_food_retailers:"Specialty Food Retailers (Butcher, Bakery, Produce Markets)",gas_stations_retail:"Gas Stations with Retail",general_merchandise_department:"General Merchandise or Department Stores",online_retail_ecommerce:"Online Retail or E-Commerce",subscription_membership:"Subscription and Membership Platforms",direct_to_consumer:"Direct-to-consumer Brands",cannabis:"Cannabis"},financial_services:{banks_credit_unions:"Banks or Credit Unions",fintech_payment_processing:"FinTech or Payment Processing",insurance_providers:"Insurance Providers",investment_advisors_broker:"Investment Advisors or Broker Dealers",lending_mortgage:"Lending or Mortgage Companies",treasury_management:"Treasury Management Platforms",personal_finance_apps:"Personal Finance Apps or AI Assistants",retirement_planning:"Retirement Planning",real_estate_investment:"Real Estate Investment Platforms",money_service_businesses:"Money Service Businesses (MSBs)",cryptocurrency:"Cryptocurrency",debt_collection:"Debt Collection",payday_lending:"Payday Lending",gambling:"Gambling"},food_agriculture:{farms_agricultural:"Farms or Agricultural Producers",food_wholesalers_distributors:"Food Wholesalers or Distributors",restaurants_cafes:"Restaurants or Cafes",bars_nightclubs:"Bars/Nightclubs",catering_services:"Catering Services",farmers_markets:"Farmers Markets",restaurant_tech_pos:"Restaurant Tech & POS Providers"},healthcare_pharmaceuticals:{hospitals_clinics:"Hospitals or Clinics",pharmacies:"Pharmacies",medical_equipment:"Medical Equipment Suppliers",biotechnology:"Biotechnology Firms",home_health:"Home Health Services",healthcare_staffing:"Healthcare Staffing Platforms",wellness_benefits:"Wellness & Benefits Platforms",healthcare_social_assistance:"Healthcare and Social Assistance"},professional_services:{legal_services:"Legal Services",accounting_auditing:"Accounting/Auditing Firms",consulting_firms:"Consulting Firms",marketing_advertising:"Marketing/Advertising Agencies",real_estate_agents_property:"Real Estate Agents/Property Managers",corporate_services_incorporation:"Corporate Services & Incorporation",hr_workforce_management:"HR & Workforce Management Platforms",direct_marketing_telemarketing:"Direct Marketing or Telemarketing",legal_accounting_consulting_programming:"Legal/Accounting/Consulting or Computer Programming"},manufacturing_industrial:{chemical_manufacturing:"Chemical Manufacturing",electronics_hardware:"Electronics/Hardware Manufacturing",automotive_manufacturing:"Automotive Manufacturing",construction_materials:"Construction Materials",textiles_apparel:"Textiles/Apparel",mining:"Mining"},real_estate_construction:{real_estate:"Real Estate",construction:"Construction"},logistics_transportation:{transportation_warehousing:"Transportation or Warehousing"},business_support_services:{business_support_building:"Business Support or Building Services"},escort_dating_adult_entertainment:{escort_services:"Escort Services",dating_adult_entertainment:"Dating or Adult Entertainment"}},companyPrimaryContactNameLabel:"Name of Primary Contact:",companyPrimaryContactNameError:"Name of primary contact is required for _product_type_",companyPrimaryContactEmailLabel:"Email of Primary Contact:",companyPrimaryContactEmailError:"Email of primary contact is required for _product_type_",companyTaxIdLabel:"Tax ID:",companyTaxIdPlaceholder:"Add tax ID",companyTaxIdError:"Tax ID is required for _product_type_",companyOwnershipLabel:"Company Ownership %",companyOwnershipPlaceholder:"Add percentage",companyDescriptionLabel:"Product Description:",companyDescriptionError:"Product description is required for _product_type_",certOfIncopDocumentError:"Certificate of Incorporation is required for _product_type_",einDocumentError:"Company document is required for _product_type_",documentParsingBanner:"Zeni AI is reading your document to autofill details…",addSSNPlaceholder:"Add SSN",dropDocumentPlaceholder:"Drop document here or click to upload",frontDropDocumentPlaceholder:"Front side - Drop document here or click to upload",backDropDocumentPlaceholder:"Back side - Drop document here or click to upload",selectDocumentTypePlaceholder:"Please select document type to upload.",driverLicense:"Driver’s License",incorporationDocument:"Incorporation Document",sourceOfFundsLabel:"Nature of Funds:",sourceOfFundsAdditionalInfo:"Select the primary source of your business funds",sourceOfFundsError:"Source of funds is required for _product_type_",payeeCodePlaceholder:"Enter code",formationDocumentLabel:"Formation Document:",formationDocumentError:"Formation document is required for _product_type_",sendForVerificationButton:"Send for Verification",aiParsingDocument:"Zeni AI is reading your document…",fileNameRequired:"File name is required",deleting:"Deleting...",updatingName:"Updating Name...",selectDocumentOption:{driverLicense:"Driver's License",ssnCard:"SSN Card",w9:"W9",w4:"W4",contract:"Contract",purchaseOrder:"Purchase Order",c1099:"1099-C"},nameDescription:"Name is required for _product_type_.",emailDescription:"Email is required for _product_type_.",dobDescription:"Date of birth is required for _product_type_.",companyRoleDescription:"Company role is required for _product_type_.",companyOwnershipDescription:"Company ownership % is required and is capped to 100% max.",companyOwnershipDescriptionForOnboarding:"Company ownership % is required for identity verification.",ssnDescription:"SSN is required for _product_type_.",allTypesOfRoles:["Founder","CEO / CFO","Chief of Staff / Office Manager / EA","Controller / Finance Manager"],sourceOfFundOptions:{business_revenue:"Business Revenue",investment_proceeds:"Investment Proceeds",sale_of_business:"Sale of Business",sale_of_real_estate:"Sale of Real Estate",rollover:"Rollover",insurance_proceeds:"Insurance Proceeds",legal_settlement:"Legal Settlement",salary:"Salary",inheritance:"Inheritance",gift:"Gift",alimony:"Alimony",gaming_proceeds:"Gaming Proceeds"},companySourceOfFundOptions:{sales_of_goods:"Sales of goods",sales_of_services:"Sales of services",customer_payments:"Customer payments (invoices)",investment_capital:"Investment Capital",business_loans:"Business Loans",owner_contributions:"Owner Contributions",franchise_revenue:"Franchise Revenue",government_contracts_grants:"Government Contracts or Grants",donations_fundraising:"Donations or fundraising",membership_fees_subscriptions:"Membership fees or subscriptions",licensing_royalties:"Licensing or royalties",commission_income:"Commission income",import_export_revenue:"Import/Export revenue",cryptocurrency_activity:"Cryptocurrency related activity",rental_income:"Rental Income"},companySourceOfFundsLabel:"Source of Funds:",companySourceOfFundsAdditionalInfo:"Select how your business earns its revenue",companySourceOfFundsError:"Source of Funds is required for _product_type_",companySourceOfFundsDescriptionError:"Enter details of source of funds",transactionVolumeOptions:{less_than_10000:"Less than $10,000","10000_50000":"$10,000 - $50,000","50001_250000":"$50,001 - $250,000","250001_1000000":"$250,001 - $1,000,000","1000001_2000000":"$1,000,001 - $2,000,000",over_2000000:"Over $2,000,000"},transactionVolumeLabel:"Transaction Volume Expectations:",transactionVolumePlaceholder:"Select range",transactionVolumeAdditionalInfo:"Estimate the total amount your account will process each year",transactionVolumeError:"Transaction Volume Expectations is required for _product_type_",transactionVolumeDescriptionError:"Enter details of expected transaction volume",purposeOfAccountOptions:{retail_sales:"Retail Sales (in-person)",ecommerce_sales:"E-Commerce Sales",cash_heavy_operations:"Cash-Heavy Income and Operations",import_export_trade:"Import/Export Trade Operations",professional_services_not_handling_funds:"Professional Services (not handling funds)",professional_services_handling_funds:"Professional Services (handling funds)",holding_investment_company:"Holding or Investment Company Operations",property_management_real_estate:"Property Management or Real Estate Operations",charitable_nonprofit:"Charitable or Non-Profit Organization Operations",construction_contracting:"Construction and Contracting Operations",commercial_cash_operations:"Commercial Cash Operations",freight_forwarding_logistics:"Freight Forwarding/Logistics Operations",third_party_payment_processing:"Third Party Payment Processing",technology_startup:"Technology Startup Operations",wholesale_distribution:"Wholesale Distribution Operations",franchise_operation:"Franchise Operation Operations",healthcare_provider:"Healthcare Provider Operations",educational_institution:"Educational Institution Operations"},purposeOfAccountLabel:"Purpose of Account:",purposeOfAccountPlaceholder:"Select purpose of account",purposeOfAccountAdditionalInfo:"State how you plan to use this account",purposeOfAccountError:"Purpose of Account is required for _product_type_",purposeOfAccountDescriptionError:"Enter details of purpose of account",regulatedStatusLabel:"Regulated Status:",regulatedStatusAdditionalInfo:'Select "Yes" if a government or financial regulator oversees your business',regulatedStatusError:"Regulated Status is required for _product_type_",regulatedStatusDescriptionPlaceholder:"Add name of regulator",regulatedStatusDescriptionError:"Enter the name of regulator",usNexusLabel:"US Nexus:",usNexusAdditionalInfo:'Select "Yes" if you have employees, customers or bank accounts in the U.S.',usNexusPlaceholder:"Select US nexus types",usNexusOptions:{employees:"Employees",physical_office:"Physical office or facility",banking_relationships:"Banking relationships",customers:"Customers"},usNexusError:"US Nexus is required for _product_type_",usNexusDescriptionPlaceholder:"Add nature of US operations",usNexusTypesError:"Select at least one nature of U.S. operations",descriptionPlaceholder:"Add details",terms:{termsForStripe:'By clicking "Send for Verification," I certify that the information provided for business verification is complete and correct.',term1:'By clicking "Send for Verification," I have read and accepted the ',consent:"Electronic Disclosure and Consent",depositTerms:"Deposit Account Terms and Conditions",cardsTerms:"Cards Terms and Conditions",creditCardsTerms:"Credit Cards Terms and Conditions",debitCardsTerms:"Debit Cards Terms and Conditions",term5:", and I consent to the use of electronic records in connection with this application.",term6:'By clicking "I Agree," I have read and accepted the ',consentUrl:"https://www.zeni.ai/legal/esign",depositUrl:"https://disclosures.thread.bank/terms/zeni/businessdepositaccountagreement.pdf",debitCardsUrl:"https://disclosures.thread.bank/terms/zeni/businessdebitcardholderagreement.pdf"},snackBar:{successReviewText:"Business Verification Details submitted successfully."},protectedSsnText:"••••••••• Provided",protectedSsnTextSmall:"•••••••••",threadText:"Zeni is not a bank. Banking services are provided by Thread Bank; Member FDIC. Deposits are FDIC-insured through Thread Bank; Member FDIC. Your deposits qualify for up to a maximum of __amount__ in FDIC insurance coverage when placed at program banks in the Thread Bank deposit sweep program.",additionalDocumentsOverlay:{title:{ssnCard:"Verify your Social Security Number (SSN) Document"},description:{ssnCard:"To provide you with a more comprehensive payment experience, Zeni has worked with new partners who require your consent with a valid SSN document."},officerInfoLabel:"Confirm Identity Details of"},verifyBusinessDetails:"Step 3: Business Verification",verifyBusinessDetailsWithoutTransfer:"Step 2: Business Verification",verifyBusinessDetailsDescription:"Financial regulations require Zeni to verify your business with additional company details.",submittedTitle:"Portfolio allocation and business details\n submitted for verification!",submittedTitleWithTransfer:"Details are submitted for verification\n and transfer to Treasury is initiated!",submittedDescription:"Verification may take up to 24 hours.\n Once verified, you'll be notified via an email. Thank you for your patience.",submittedDescriptionWithTransfer:'Business verification takes up to 24 hours. Once verified, the transfer of __amount__ from\n "__account__" to "Treasury" will take 1–2 business days. We\'ll notify you by email.',securityMessageTitle:"Uploaded documents are protected with enterprise-grade security!",securityMessageDescription:"All documents are encrypted and securely stored with SOC 2 Type II compliance.",personalIdDescription:"Personal ID is required for _product_type_.",companyIdDescription:"Personal ID is required for _product_type_."},approval:{updatingWithApprovalRulesTooltip:"__entity__ is being updated with latest approval rules. Please try in some time.",approvalRulesUpdatingTooltip:"Approval rules are being updated. Please try again shortly.",deleteApprovalRuleTitle:"Delete approval layer?",deleteApprovalRuleDesc:"You can't undo this action.",newApproval:"New Approval",editApproval:"Edit Approval",followStepsLabel:"Follow Steps:",addStep:"Add Step",notifiersPlaceholder:"Select notifier(s)",firstRuleLowerBoundInfoLabel:"First approval must start from $0.",firstRuleErrorInfoLabel:"Lower bound already exists. Please choose a higher limit.",upperBoundInfoLabel:"To set the upper bound, create new approval.",addApprovalText:"Add Approval",applyToExistingBills:"Apply this rule to existing pending bills and all future bills.",applyToExistingReimbursements:"Apply this rule to existing pending reimbursements and all future reimbursements.",allApprovalRulesTitle:"All Approval Rules",listSubtitle:"Drag to arrange rules. __entity__ are evaluated top to bottom — first match is applied.",fallbackWhenChipText:"No rule matches a bill",createApprovalRuleText:"Create Approval Rule",defaultFallbackBillPayStaticMessage:"Invoices that don't match any rule will be sent to the Vendor Owner for approval. If no Vendor Owner is assigned, they will go to the Super Admin.",defaultFallbackReimbursementStaticMessage:"Reimbursements that don't match any rule will be sent to the submitter's Manager or Manager's Manager for approval. If neither is assigned, they will go to the Super Admin.",separationOfDuties:"Separation of Duties",whenLabel:"When",thenLabel:"Then",moreOptionsLabel:"More options",requireApprovalFromLabel:"Require approval from",amountChip:{isBetween:"is between",isGreaterThan:"is greater than",isLesserThan:"is lesser than"},addRuleSectionSubheading:"Add name and description to start rule creation",setConditionsSectionHeading:"Set Conditions",setConditionsSectionSubheading:"Define when this rule triggers",setApprovalStagesSectionHeading:"Set Approval Stages",setApprovalStagesSectionSubheading:"Define sequential approval steps",nameLabel:"Rule name",namePlaceholder:"e.g. High-value bills",descriptionPlaceholder:"What is this rule for? (optional)",amountComparator:{greater_than:"Is greater than",less_than:"Is less than",range:"custom range"},amountRangeToPlaceholder:"Infinity",amountMissingError:"Approval rule is missing an amount condition; aborting save.",noRequireApprovalStageError:"Add at least one approver to a Require Approval stage before saving.",operatorIsOrIsNot:{is_not:"is not",is:"is"},vendorMultiSelectPlaceholder:"Select vendors",departmentValuesLabel:"Departments",departmentMultiSelectPlaceholder:"Select departments",conditionTypeLabel:"Condition type",conditionTypePlaceholder:"Select condition",conditionType:{amount:"Amount",vendor:"Vendor",department:"Department"},addConditionBtnLabel:"Add Condition",conditionRowAndConnector:"And",removeConditionAriaLabel:"Remove condition",actorKindLabel:"Actor kind",actorKind:{specific_person:"Specific Person",role:"Role"},stageSpecificPersonPlaceholder:"Select person",stageRolePlaceholder:"Select role",stageRoleOption:{manager:"Manager",manager_of_manager:"Manager of Manager",vendor_owner:"Vendor Owner"},addApprovalStageBtnLabel:"Add Approval Stage",removeStageAriaLabel:"Remove stage",dragStageHandleAriaLabel:"Drag stage to reorder",dragRuleHandleAriaLabel:"Drag to reorder approval rule",separationOfDutiesHelper:"Enabling separation of duties prevent bill creators from approving their own requests",overlapBanner:{title:"Partial rule overlap detected",descriptionSingular:"Conditions partially overlap — some bills could match both rules.",descriptionPlural:"Conditions partially overlap with __count__ existing rules — some bills could match more than one rule.",hideDetailsBtn:"Hide Details",showDetailsBtn:"Show Details",ignoreAndProceedBtn:"Ignore & Proceed",editExistingRuleBtn:"Edit Existing Rule",priorityLabel:"Set at Priority #__priority__",duplicateTitle:"Duplicate rule detected",duplicateDescriptionSingular:"All conditions overlap with the existing rule — some bills could match both rules. Check the details below:",duplicateDescriptionPlural:"All conditions overlap with __count__ existing rules — some bills could match more than one rule. Check the details below:",duplicateBlockedMessage:"Duplicate rule can not be created."},inactiveApprover:{singularMessage:"__name__ is inactive.",pluralMessage:"__name__ and __count__ others are inactive.",changeApproverLinkText:"Change the approver to avoid delays."},overlapModal:{title:"Proceed with overlapping rules?",description:"Rules will be evaluated by priority (top to bottom), and the first matching rule will be applied."},nonUsers:{manager:{label:"Manager",subTitle:"If there is no manager, we'll replace with admin(s)."},vendor_owner:{label:"Vendor Owner",subTitle:"If there is no vendor owner, we'll replace with admin(s)."},manager_of_manager:{label:"Manager of Manager",subTitle:"If there is no manager of manager, we'll replace with admin(s)."},admin:{label:"Admin"}}},twoFactorAuthentication:{title:"Verify Phone Number",verifyDeviceTitle:"Verify Your Device",verifyDeviceDescription:"We detected a login attempt from a new device. For enhanced security, please enter the 6-digit code sent to your registered phone.",codeExpiresIn:"Code expires in",codeExpired:"Code expired",phoneNumberPlaceholder:"Add phone number",enterVerificationCode:"Enter the verification code sent to ",confirmPhoneNumber:"Zeni uses your phone number to verify your details and to keep your account secure. We recommend that you use a mobile phone that you access regularly.",codeNotReceived:"Didn’t receive code? ",resend:"Resend",getCode:"Get Code",footerHelperText:"By clicking '<button_text>', you agree to receive text messages for verification and customer interaction purposes.",accessRestricted:"Access Restricted",termsUpdated:"We’ve Updated the Terms & Conditions",description:"Zeni need your admin consent on the updated T&Cs and submission of verified phone number.\n \n However, your access for bills is currently restricted until admin give their consent.",iAgree:"I Agree",verificationInProgress:"Verification in process",verificationFailed:"Business Verification Failed",verifyingDetails:"We are currently verifying your details.",verificationError:"It looks like we will need more information from you to complete the setup. You will be taken to the “Settings” page to complete the verification.",submissionSuccessful:"Submission completed successfully! Verification may take a bit more time. Thank you for your patience.",goToSettings:"Go to Settings",invalidCode:"The code wasn't valid. Please try again.",getOtp:"Get OTP",businessInfoTitle:"Additional Business Information",businessInfoDescription:"We require below details to verify your business.",requireIncDate:"Require incorporation date",requireIndustry:"Require industry",incorrectCode:"Incorrect code entered. Please retry.",accountLockWarning:"One more incorrect attempt will lock your account for 1 hour to keep it secure.",accountLockedTitle:"Verification attempts limit exceeded.",accountLockedSecurityMessage:"For your security, we've paused verification for now.",tryAgainAfter:"You can try again after ",signInViaGoogleOrMicrosoft:", or sign-in via Google or Microsoft",accountLockedContactMessage:"For assistance, please reach us at ",changePhoneNumberHelperText:"Need to update your registered mobile number? Please reach out to us at "},chaseOverlay:{title:"How to add Zeni as payee on Chase Bank?",description:"Authorizing Zeni on your payee list allows Chase Bank to debit funds via ACH from your account. Failure to grant permission will result in automatic blocking of that account.",primaryButtonText:"Watch Video",stepsTitle:"Follow These Steps",chaseVideoUrl:"https://www.chase.com/digital/customer-service/helpful-tips/business-banking/security/ach-debit-block-add-payee",step1:{text1:"Sign-in to Chase Bank",text2:" and navigate to ",text3:" Security",text4:" and select ",text5:"Manage Allowed Payees",text6:" under the ACH Debit."},step2:{text2:" Add Payee",text3:"Two options will appear. Either select Zeni payee from ACH debit report or manually input payee details."},step3:{text1:"Review and select ",text2:"Allow Payee",text3:" for Zeni payee (ACH debit report) or fill in the below details:",payeeIdTitle:"Payee ID: ",payeeIdUnit:"1824863608",payeeIdStripe:"0000004670",payeeNameTitle:"Payee Name: ",amountLimitTitle:"Amount Limit: ",text4:"Add a minimum ",amountLimit:"$1,000,000 ",text5:" or more"}},internationalWire:{subTitle:"Add below business details to enable international transactions",terms1:'By clicking "Submit", you confirm that you agree with the ',privacyPolicy:"privacy policy.",tosUrl:"https://www.nium.com/legal/end-customer-terms"}},spendManagement:{billPay:{addressPageTitleEdit:"Edit Mailing Address",paymentDetails:{feeDetails:"Fee Details",saveDetailsPrompt:"Save these fee details for all future {paymentType} payments.",paymentTypeKey:"{paymentType}",conversionTooltip:"The conversion rate is an estimate that may change by the time your payment is sent. Any gains/losses will be synced to your Foreign Currency Gain/Loss Account.",conversionAmount:"Conversion Amount",conversionRatePrefix:"1.00 = ",feePercent:"% ",plus:"+ ",transactionfee:"Transaction Fee:",wiseVerifyLabel:"Are you the owner of the Wise account? Click here to complete verification",paymentLabels:{achSameDay:"ACH Same Day",offlinePayment:"I won't pay this with Zeni"},internationalPaymentLabels:{our:"with OUR",sha:"with SHA"},offlinePaymentSubText:"Track as offline payment",paymentToAccount:{selectAch:"Select ACH account",selectDomestic:"Select domestic wire account",selectInternational:"Select international wire account",addAch:"Add ACH account",addDomestic:"Add domestic wire account",addInternational:"Add international wire account"},sendAsSha:"Send as SHA - Free",vendorPaysTheFee:"Vendor pays the fee",sendAsOur:"Send as OUR - $15",whySendAsOur:"Why send as OUR?",mostBank:'Most banks automatically send wires coded as "charges shared(SHA)", which means your recipient absorbs any intermediary bank fees.',weGiveYou:'We give you the choice to code the wire as "charges ours (OUR)" instead. When you send as OUR, SWIFT network fees are charged to us, which makes it more likely your recipient will receive the full amount.',ourTooltipIfShaDisabled:"When you send as OUR, SWIFT network fees are charged to us, which makes it more likely your recipient will receive the full amount.",conversionAmountColon:"Conversion Amount:",transactionFee:"+ Transaction Fee:",sameDayAchExtraInfo:{transferLimitExceededHeading:"Transfer Limit Exceeded!",transferLimitExceededText:"Same Day ACH supports transfers up to __amount__.",insufficientBalanceHeading:"Insufficient Balance!",insufficientBalanceText:"Same Day ACH requires 2× the bill amount in your account.",newAtZeni:"You are new to Zeni",newAtZeniText:"Same Day ACH requires 3+ months of activity.",insufficientBalanceError:"ACH Same Day requires 2X the bill amount in the selected withdrawal account"},accountsPromoSection:{signupText:"Sign up for free and enjoy faster payouts.",switchText:"Switch now and enjoy faster payouts.",signupButtonText:"Sign Up",signupHeading:"Unlock ACH Same Day with Zeni Checking",switchHeading:"Unlock ACH Same Day with Zeni Checking"},invoiceAmount:"Invoice Amount",colon:":"},billsByTabs:{billOrganizedInfo:"All your bills are organized in one place here.",searchPlaceHolder:"Search by vendor name or invoice no.",emailInfoTitle:"Add Invoice via Email",emailInfoDescription1:"Forward vendor invoices to this unique email, and we will scan them into your bills drafts for review.",emailInfoDescription2:"Share this unique email with trusted vendors for invoices, and they will appear in your bills drafts.",emailInfoDescription3:"If your company has an AP email, you can auto-forward them to the email below.",noDataTextViaMail:"Create bill drafts by sending your invoices to ",paidVia:"Paid via",invoiceNumber:"Invoice No:",datePaid:"Date Paid:",noDataText:'Click on the "New" button to add new bill',noDataWithFilterText:"No bills matched your search.",headerElementDisplayName:"Spend management list view inner element type"},billPaySetup:{setupTitle:"Bill Pay Setup",setupSubTitle:"To setup bill pay - we require you to confirm your business identity and setup ACH details.",approvalSubTitle:"Bill pay will require approvals based on your bill pay approval rules.",enableBillPay:"Enable Bill Pay",terms:'By clicking "Enable Bill Pay," I authorize Zeni to debit from this bank account to pay for bills scheduled using Zeni Bill Pay.',enableInternationalWireTitle:"Enable International Wire",internationalWireSubTitle:"Guaranteed best exchange rates - Powered by",internationalWireSubTitle2:"Manage global payments effortlessly.",internationalWireFootnote:"You will be redirected to the Wise website to complete setup.",tags:{internationalWirePendingVerification:"Wise Verification Pending",actionRequired:{description:"Click here to re-enable"},verificationPending:{tag:"Verification Pending",description:"Activates in 4-5 days"},verificationFailed:{tag:"Verification Failed",description:"Check your inbox"},nonAdminUser:"Check with admin"},tooltipTexts:{pendingInternationalVerificationText:"Verification process might take 4-5 days.",internationalVerificationFailed:"Reach out to the Zeni team for assistance with reverification."}},billPayPromo:{trustBanner:{title:"Zeni Bill Pay is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni helps you capture invoices, manage approvals effortlessly, and pay vendors on time—every time."},promoText:"The fastest way to pay your vendors and contractors, 100% free.",promoText2:"Manage invoices, approvals, and payments seamlessly in one place.",setupNonAccessableUsersPromoText:"Zeni Bill Pay set up is pending, please check with your admin.",item1:"Free bill payments",item2:"Fully managed by Zeni Finance Team",item3:"Multi-level approval workflows",item4:"AI-powered invoice processing",setupBillPayButton:"Setup Bill Pay",terms:{terms1:'By clicking "Setup Bill Pay", I have read and accepted the ',terms3:". ✌🏻"}},billPayApproval:{amountPerBillLabel:"If amount per bill is between:",amountPerBillGreaterLabel:"If amount per bill is greater than or equal to:"},vendorCreation:{deleteAccountTooltip:"Delete Account",mailingAddressPlaceholder:"Required for wire transfers.",accountsLabel:" Account",areYOuSure:"Are you sure to delete this account?",ifYouSubmit:"If submitted bills are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new bills.",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",addBill:{editVendorConfirmationTitle:"Edit information for Elite Recruitment Solutions",editVendorConfirmationDescription:"You will be taken to the vendor information page for Elite Recruitment Solutions. If the name of this vendor is changed, it will also be updated in all previous bills to this vendor."},placeholders:{owner:"Select owner",tinType:"Select TIN"},vendorDetails:{w9FormTitle:"W-9 form",legalNamePlaceHolder:"Add legal name",taxClassificationPlaceHolder:"Select tax classification",banner:"Zeni has retrieved data from this W9 form and auto-filled the details.",vendorEIN:"EIN",vendorSSN:"SSN",trackPaymentsFor1099:"Track Payments For 1099:",vendorCurrencyAdditionalText:"The vendor will receive payments in this currency",vendorCurrencyHelperText:"The home currency is linked to the vendor's country",vendorClassAdditionText:"Choose a default class for this vendor\nYou can change this for every line item on the bill ",vendorCategoryAdditionText:"Choose a default category for this vendor\nYou can change this for every line item on the bill ",vendorExists:"This is an existing vendor",vendorNew:"This is a new vendor",vendorFindOrCreate:"Find or create a new vendor",vendorEditWarning:"Changing vendor name will also update all previous bills to this vendor",classGroups:{},businessInfo:"Corporations, LLCs; companies that require a W-4",individualInfo:"Sole proprietorship, individuals; anyone who will require a 1099-C",spends:{last30Days:"Last 30 days",last90Days:"Last 90 days"},recommendation:{tooltip:{category:'The "category" update recommendation is __based__',class:'The "class" update recommendation is __based__'}}},vendorContactInfo:{title:"Contact Info",minimumReq:"Minimum one contact required",addContact:"Add Contact"},vendorDocuments:{title:"Documents",addDocument:"Add Document"},wireDetails:{addressErrorInfo:"Address is required",bankRoutingNumber:"Wire Routing Number:",additionalAddressLabel:"Mailing address is required for Wire transfers.",ifYouSubmit:"If submitted bills are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new bills.",domestic:{addWireDetails:"Add Domestic Wire"},international:{addInternationalWireDetails:"Add International Wire",swiftCode:"SWIFT Code (BIC):",addSwiftCode:"Add SWIFT code",iban:"IBAN/Account Number:",addIban:"Add IBAN number",confirmIban:"Confirm IBAN/Account Number:",addConfirmIban:"Confirm IBAN number",invalidSwiftCode:"Please enter valid SWIFT Code",invalidIban:"Invalid IBAN/account number",ibanDontMatch:"Your IBAN/account numbers don’t match!",countryAdditionalInfo:"Vendor country cannot be changed once saved",currencyPlaceholder:"Select currency",currencyAdditionalInfo:"The vendor will be paid in this currency. It cannot be changed once saved",typeOfAccount:"Type of Account:",addSource:"Add Source:",sourceTooltip:"Share the source of account details",sourcePlaceholder:"E.g. via post",colon:":"},areYOuSure:"Are you sure you want to delete this bank account?"},achDetails:{bankRoutingNumber:"Routing Number:",bankName:"Bank Name:",beneficiaryAddress:"Beneficiary Address:",beneficiaryAddressSubLabel:"Use this address as the recipient address for wire transfers.",beneficiaryName:"Recipient/Beneficiary Name:",beneficiaryNameSubLabel:"Use this name as the recipient name for wire transfers.",bankAddress:"Bank Address:",fetchingBankName:"Fetching bank name",confirmedBankAccountNumberPlaceholder:"Re-Enter account number",accountNickName:"Account Nick Name:",addACHDetails:"Add ACH Details",autoFilled:"Auto-filled from invoice",stripeTestRoutingNumber:"110000000",ifYouSubmit:"If submitted bills are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new bills.",areYOuSure:"Are you sure you want to delete this bank account?"},bankAccountCommon:{submitDetails:"Submit Details"},emptyPlaceholderString:"-",colon:":"},billDetails:{createNewVendor:"Create new vendor as __actualVendorName__",tooltip:{category:'The "category" update recommendation is __based__',class:'The "class" update recommendation is __based__'},updateCategoryClassForAllLineItems:"Update category and class for all line items in this bill.",editPageDuplicate:"This invoice number has been used before. Make sure you're not paying twice. ",viewBill:"View Bill #",duplicateBillPayWarning:"This looks like it may be duplicate payment.",duplicateBillPayWarningSubHeading:"Make sure you're not paying twice. ",duplicateInvoiceFound:"Duplicate Invoice Found",issueSyncing:"There's an issue syncing this bill!",accountPeriodClosed:"Since the accounting period is closed, we cannot create or sync this bill with the accounting software.",updateDate:"Please update the date(s) and try again.",banner:"Zeni has retrieved data from this invoice and auto-filled this bill.",setupNewVendorDescription:"Set up this new vendor as you haven’t paid them through Zeni before.",setupNewInternationalVendorDescription:"Set up __vendorName__ as a new vendor, as you paid them in __vendorCurrency__, not __invoiceCurrency__.",setupNewVendor:"Setup New Vendor",addApproverLabel:"Add Approver",addApproverTooltip:"Add additional approvers to this bill. This will not impact the existing rules for other bills.",addApproverForRemiTooltip:"Add additional approvers to this reimbursement. This will not impact the existing rules for other reimbursements.",realTimeApproverRequireLabel:"Require approval",realTimeCommentsPlaceholder:"You can add a note explaining the reason for adding approver(s).",deleteRealTimeStepTooltip:"Remove Step",dragRealTimeStepTooltip:"Drag to reorder",newlyAddedApproverTag:"Newly added",newlyAddedApproverTagHover:"Newly added for this bill",addTitle:"Add Bill",basicInfo:"Basic Info",whoIsItFor:"Who's it For?",noPreviousPayments:"No previous payments to this vendor!",paymentDaysBusinessUnits:"business",fees:"fees",invoiceNo:"Invoice No.",due:"Due:",recentInvoice:"Previous Invoice(s)",whatForTitle:"What For?",vendorName:"Vendor Name:",vendorDropdownPlaceholderText:"Search or type a vendor name",paidOnActualDeposit:"Paid on:",invoiceNumber:"Invoice Number:",billDueDate:"Bill Due Date:",autoUpdateInvoiceDate:"The invoice date is adjusted to the start of the current period since it is from a closed period.",currency:"Currency:",line:"Line",estimatedReceiveDate:"Estimated vendor receive date:",deliveryTimeLabel:"Delivery Time",achDeliveryTime:"(ACH delivery time = _number_of_business_ business days)",addNew:"Add New",billableCategoryErrorText:"Category is not billable category",qboCustomer:"QBO Customer:",billable:"Billable:",billablePlaceholderText:"Select billable",customerPlaceholderText:"Type and select customer",projectPlaceholderText:"Type and select project/customer",total:"Invoice Total",paymentType:"Payment Type:",paymentTimeLine:"Payment Timeline",timeToDeliver:"Delivery Time:",venderReceiveDate:"Vendor Receive Date:",tabsById:{next_business_day:"Next Business Day",arrive_by_due_date:"Arrive by Due Date",issue_on_due_date:"Issue on Due Date",schedule_later:"Schedule Later"},businessDaysText:"_number_of_business_ Business Days",receivingAccount:"Receiving Account:",fromAccount:"From Account:",withdrawFrom:"Withdraw From:",withdrawFromError:"Account verification is pending, please contact your administrator. ",paymentTo:"Send Payment to:",addAccount:"Add Account",reviewChanges:"Review Changes",scheduleAnyways:"Schedule Anyways",sendForApproval:"Send for Approval",internationalText1:"By clicking “Send for Approval”, I agree to NIUM's",internationalTerms:"terms and service",internationalText2:"to transfer funds internationally.",selectVendorBeforeScheduling:"Select a vendor before scheduling payments.",oneLastLook:"One Last Look...",addedByZeni:"Added by Zeni",billActivity:"Bill Activity",approved:"Approved",notified:"Notified",approval:"approval",submittedBy:"Submitted by",draftBy:"Draft by",reportCreatedBy:"Report created by",autoApproveBottomText:"You haven't created any approval rules yet.",autoApprovalBtnText:"Create Approval",autoApproved:"Auto-Approved",waitingForInfo:"Waiting for information",arrived:"Arrived:",desiredPaymentDate:"Desired Payment Date",processing:"Processing...",skipAutofill:"Skip Autofill",skipAutofillInfo:"Or, do it the old-fashioned way.",dropInvoice:"Drop invoice here or click to upload.",dropW9:"Drop W-9 form here or click to upload",uploadFileSizeExceedError:"Upload failed. The document size must be 20 MB or smaller.",uploadError:"There was a problem while uploading your __type__. Please try again.",currencyInfo:"Only US currency bills are allowed!",preparingForPayment:"Preparing for Payment",notApproved:"Not Approved",issueWithBill:"Issue with Bill",attemptFailed:"Attempt Failed",errorProcessing:"Error Processing",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",expand:"Expand",editPopupInformationTitle:"Edit information for ",editConfirmationDescriptionFirstPart:"You will be taken to the vendor information page for ",editConfirmationDescriptionSecondPart:". If the name of this vendor is changed, it will also be updated in all previous bills to this vendor.",overwriteDescription:"By overwriting the data, you will replace the existing row content with the data from the new invoice which you uploaded.",deletedCategoryError:"Selected category was deleted in QuickBooks. Please select an active one.",deletedClassError:"Selected class was deleted in QuickBooks. Please select an active one.",buttons:{editBill:"EditBill",deleteRejectedBill:"Delete Rejected Bill",deleteReturnedBill:"Delete Returned Bill",deleteFailedBill:"Delete Failed Bill",rejectBill:"Reject Bill",approveBill:"Approve Bill",approveAnyways:"Approve Anyways",deleteBill:"Delete Bill",cancel:"Cancel Bill",cancelAndDelete:"Cancel & Delete Bill",refund:"Refund Payment"},toolTips:{editVendor:"Edit Vendor Info",compress:"Hide Vendor Details",chooseNewvendor:"Choose New Vendor",expand:"Show Vendor Details"},cancelBillTitle:"Cancel bill?",cancelAndDeleteBillTitle:"Cancel & Delete bill?",deleteAlertDescription:"Are you sure you want to delete this bill? This action cannot be undone.",cancelAlertDescription:"Are you sure you want to cancel this bill? This action cannot be undone.",cancelAndDeleteAlertDescription:"Are you sure you want to cancel & delete this bill? This action cannot be undone.",noBillAttached:"No bill attached",futurePaymentDateAlert:"Payment Date should be of future.",estimatedArrival:"Estimated arrival: ",rejectBillTitlePrefix:"Reject payment to",rejectBillDescription:"By rejecting this payment the approval process will not move forward and no payments will be issued. Help your team understand why this bill should not be paid.",billAutoApproveInfo:"Because your approval policy for this bill only requires you to approve it, we will automatically approve this bill for payment when you create it.",remiAutoApproveInfo:"Because your approval policy for this reimbursement only requires you to approve it, we will automatically approve this reimbursement for payment when you create it.",vendorEmailPopupText:"Please enter the vendor’s email to proceed",magicLink:{paymentTypeInfoLabel:"We’ll email your vendor to provide their <payment_type> details.",delayedPaymentMessage:{forACHStandard:"The timing seems tight. Consider using same-day ACH or Domestic Wire instead",forNonACHStandard:"The timing seems tight. Zeni will schedule the payment once this bill is approved and the Vendor submits their bank account details."},emailPreview:{title:"Email Preview",subjectLabel:"Subect:",subjectContent:"<company_name> needs your payment details to pay you <amount>",content:"<vendor_name>,\n\n<company_name> wants to pay you <amount> by <bill_due_date> for the attached invoice. To ensure you receive this payment on time, please securely provide your <payment_type> payment details by clicking the link below. <company_name> uses Zeni Bill Pay to pay its vendors securely.",contentNoAttachment:"<vendor_name>,\n\n<company_name> wants to pay you <amount> by <bill_due_date>. To ensure you receive this payment on time, please securely provide your <payment_type> payment details by clicking the link below. <company_name> uses Zeni Bill Pay to pay its vendors securely.",signature:"Thanks,🕊️\n<company_name>'s Finance team",buttonText:"Enter <payment_type> Details"},popUp:{title:"Add Vendor Email",description:"We'll email your vendor to provide their <payment_type> details."},magicLinkScreen:{title:"<tenant_name> wants to pay you",description:"Add your bank account details to get paid by <tenant_name> through Zeni Bill Pay.",encrypted:"Encrypted",successTitle:"Thank you for providing the account details.",successNote:"We are currently working on your payment."}},recurringBill:{recurringCycle:"Recurring Cycle - ",deleteRecurringTitle:"Delete Recurring Bill?",deleteRecurringAlertText:"Deleting this bill will also remove all future instances, leading to the discontinuation of payments to the vendor.",cancelAndDeleteRecurringTitle:"Cancel and Delete Recurring Bill?",cancelAndDeleteRecurringAlertText:"By proceeding, you’re not only canceling the current bill but also removing all future instances, leading to the end of payments to the vendor.",paymentTypeOptions:["One-time Payment","Recurring Payment"],frequencyOptions:[{label:"Weekly",value:"weekly"},{label:"BiWeekly",value:"biweekly"},{label:"Monthly",value:"monthly"},{label:"Quarterly",value:"quarterly"}],requiresApprovalOptions:{current:"For this bill only (Remaining bills in this series will be auto-approved)"},requiresApprovalOptionsSelectedLabels:{current:"For this bill only"},formLabels:{requiresApproval:"Requires Approval"},endDateSelector:{formLabels:{totalPayments:"Total No. Payments"}},paymentCountPrefix:"No. of Payments",paymentSchedule:"Payment Schedule",hidePaymentSchedule:"Hide Payment Schedule",showPaymentSchedule:"Show Payment Schedule",isHoliday:"is a holiday",editRecurringPopup:{title:"Do you want to update?",selectOptions:[{label:"All bills in this series",value:"all"},{label:"This bill only",value:"current"}]}},zeniAssist:{refundTitle:"Confirm Refund",refundDescription:"Are you sure you want to initiate a refund for this bill?\n Refund process will take 1-2 business days.",accountNumber:"Account No.",tooltip:"Zeni Assist",connectToTeamTooltip:"Please connect with the engineering team to resolve this issue."},paymentOutsideZeni:{popUpTitle:"Add payment details",defaultDateInfo:"If not added, the date will default to 1st of this month.",reviewInfo:'Once approved, find this bill in your "Awaiting my Approval" tab to "Mark as Paid."',markAsPaid:"Mark as Paid",paymentModeLabel:"Payment Mode:",selectDate:"Select date ",paymentModeOptions:[{label:"ACH",value:"ach"},{label:"ACH Same Day",value:"ach_same_day"},{label:"Cash",value:"cash"},{label:"Check",value:"check"},{label:"Domestic Wire",value:"us_domestic_wire"},{label:"International Wire",value:"international_wire"},{label:"Other",value:"other"}],banner:{title:'After the bill is approved, it will move to your "Awaiting My Approval" tab.',description:'Once payment is done, you can return to this bill to "Mark as Paid."'}},overwriteTitle:"Are you sure you want to overwrite the data?",hyphenText:"-",dots:"..."},bulkActions:{exceptions:{bookCloseDateDelete:"This bill can't be deleted now as it is from a previous accounting period.",bookCloseDateProcessing:"This bill can't be processed now as it is from a previous accounting period.",processingSelectTogether:'Only bills under "Processing" status can be selected together.',processingWithOthers:'Bills under "Processing" status can’t be selected with others.',cancelProcessing:"Bill payment cannot be canceled as it has been already processed.",cancelRecurring:"Recurring Bill can't be canceled.",deleteRecurring:"Recurring Bill can't be deleted.",noActionRecurring:"Recurring bill can't be canceled or deleted."},duplicateWarning:{title:"An update to this bill is currently in progress.",description:"Please wait until the process is complete before making any further changes."},popUps:{reject:{title:"Reject <_payment_>",description:"By rejecting <_this_> <_payment_>, the approval process will not move forward and no <_payment_> will be issued. Help your team understand why <_this_> <_bill_> should not be paid."},delete:{title:"Delete <_bill_>",descriptionDraft:"Are you sure you want to delete <_this_> <_bill_>? This action cannot be undone.",descriptionRecurring:"Deleting stops current <_payment_> and all the future recurring bill cycles. Help your team understand why?",descriptionOther:"By deleting <_this_> <_bill_>, <_it_> will not move forward and no <_payment_> will be issued. Help your team understand why."},cancel:{title:"Cancel <_bill_>",description:"By cancelling <_this_> <_bill_>, <_it_> will not move forward and no <_payment_> will be issued. Help your team understand why."}},reviewPage:{billsReviewed:{title:"<_bill_> <_has_> been reviewed",description:"<_bill_> <_is_> ready to proceed.",descriptionError:"The selected <_bill_> <_do_> not have the required information to proceed. Please fill in all details and try again."},billsReviewing:{title:"We are reviewing your <_bill_>"},removeOrProceed:"Remove bill or proceed for approval"},totalAmount:"Total amount"},insufficientFunds:{lowBalance:"(Low balance)",lowBalanceIn:"Low balance in __account__",addMoney:"Low balance! Please add money to this account",addOrSwitch:"Low balance! Add money or switch accounts by __date__ to avoid bill payment failure",addOrSwitchInitiateTransfer:"Add money or switch accounts to initiate the transfer.",popUp:{title:"Low Balance",hasLowBalance:" has low balance.",addMoney:"Please add money or switch accounts by ",avoidFailure:" to avoid payment failure."}}},autoTransferRules:{pageTitle:"Auto transfer rules",existingRulesSectionTitle:"Existing rules",pauseConfirmationPopup:{title:"Pause this rule?",description:"Pausing will temporarily stop all transfers until you resume the rule."},deleteConfirmationPopup:{title:"Delete this rule?",description:"Deleting will permanently remove this rule, and all upcoming auto transfers will stop."},existingRuleLabels:{moveFundsFrom:"Move Funds From"},frequencyLabel:"Frequency: {frequency}",nextTransferLabel:"Next Transfer: {nextTransfer}",lowBalanceWarning:"Low balance, add funds or switch accounts before __next_transfer_date__ to avoid transfer failure",ruleTypes:{minimum_balance:{title:"Maintain a Minimum Balance",description:"Auto transfer funds between accounts to maintain a minimum balance."},recurring:{title:"Make a Recurring Transfer",description:"Schedule auto transfers of a fixed amount at regular intervals."},percentage_of_balance:{title:"Distribute Balance by Percentage",description:"Apply percentage-based rules to distribute funds between multiple accounts."}},createRuleDrawer:{amountError:"As daily transfer limit is $100,000, your transfer will be split over multiple days",youCanUse:"You can use a wire transfer if you want to transfer the entire amount at once. ",maintainBalanceIn:"Maintain Balance In:",frequency:"Frequency:",allocate:"Allocate:",allocatePercentTotalExceeded:"Total allocation cannot exceed 100%.",connectAnotherAccount:"Connect Another Account",frequencyInfo:{daily:"Auto transfer every day",weekly:"Auto transfer every 7 days",monthly:"Auto transfer every 30 days"},amountPlaceholder:"$0"},reviewDrawer:{footerDisclaimer:'By clicking "Create Rule", I authorize Zeni to initiate the transactions detailed above for __company_name__.',nextTransfer:"Next Transfer",nextTransferTimeline:"Next Transfer Timeline",maintainMinimumBalanceDescription:'{amount} will be transferred to "{toAccount}" from "{fromAccount}" to maintain a minimum balance.',recurringTransferDescription:'{amount} will be transferred to "{toAccount}" from "{fromAccount}" {frequencyPhrase}.',distributeByPercentageFirstAllocation:'{pct}% of the funds will be transferred to "{label}"',distributeByPercentageAdditionalAllocation:' and {pct}% to "{label}"',distributeByPercentageSourceAndSchedule:' from "{fromAccount}" {frequencyPhrase}.',frequencyPhrase:{daily:"every day",weekly:"every week",monthly:"every month"},summaryPrefix:{daily:"Every day",weekly:"Every week",monthly:"Every month"},minimumBalanceSummary:'{prefix}, funds will be automatically transferred from "{fromAccount}" to "{toAccount}", if the balance is below {amount}.',recurringTransferSummary:'{prefix}, {amount} will be transferred from "{fromAccount}" to "{toAccount}".',distributeByPercentageSummaryFirstAllocation:'{pct}% of the balance in "{fromAccount}" will be transferred to "{label}"',lowBalanceWarning:"Low balance to complete the transfer. Add funds or switch accounts to avoid transfer failure.",dailyTransferLimitSplitWarning:"As daily transfer limit is __dailyLimit__, your transfer will be split over multiple days"}},reimbursement:{reimbursementByTabs:{noDataText:"To add new reimbursements, click on the\n'New Reimbursement' button and get started.",noDataWithFilterText:"No reimbursements matched your search.",reimbursementOrganizedInfo:"All your reimbursement reports are organized in one place here.",searchPlaceHolder:"Search by report name or creator",emailInfoTitle:"Add Receipts via Email",emailInfoDescription1:"Send your receipts to this email, and we'll scan them for review in your reimbursements drafts.",emailInfoDescription2:"If multiple receipts are included in the email, they will be combined into one reimbursement report.",emailInfoDescription3:"For each email you dispatch, we will draft an individual reimbursement report.",noDataTextViaMail:"Create reimbursement drafts by sending your",header:{submitted:"Submitted",paidOn:"Paid On"},reimbursementType:{out_of_pocket:"Out of pocket",titleForBoth:"Both",both:"Out of pocket and Milleage"},tabsById:{draft:"Drafts",pending_approval:"Approvals",scheduled:"Scheduled",paid:"Paid",all:"All",failed:"Failed",cancelled:"Canceled",overdue:"Overdue",rejected:"Rejected",ach:"ACH",wire:"Wire",returned:"Returned",awaitingMyApproval:"Awaiting My Approval",awaitingAllApproval:"Awaiting All Approval",deleted:"Deleted",myDrafts:"My Drafts",awaitingApproval:"Awaiting Approval"},hyphenText:"-",dots:"..."},reimbursementPromo:{item1:"AI-powered receipt capture",item2:"Multi-level approval flow",item3:"Auto-sync of expense data",trustBanner:{title:"Zeni Reimbursements is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni automatically captures receipts, streamlines approvals, and ensures fast, accurate reimbursements."},promoText:"Reimburse employees at lightning speed, absolutely free.",promoText2:"Automate expense tracking, approvals, and reimbursements—all in one place.",employeePendingPromoText:"Reimbursements set up process is pending, please check with your admin.",employeeAcceptPromoText:"The simplest way to apply for reimbursement",setupReimbursementButton:"Setup Reimbursements",createNewReimbursementButton:"Create New Reimbursements",terms:{setupTerms1:'By clicking "Setup Reimbursements", I have read and accepted the ',createTerms1:'By clicking "Create New Reimbursements", you agree to our ',zeniAgreement:"Terms of Service",terms3:". ✌🏻"}},reimbursementSetup:{yourMileage:"Your mileage rate should be the same or higher than ¢ __defaultMileageUnitAmount__ as per IRS guidelines.",setupSubTitle:"To setup reimbursements - we require you to confirm your business identity, set up ACH details and mileage rates.",approvalSubTitle:"Reimbursements will require approvals based on the rules you create.",enableReimbursements:"Enable Reimbursements",terms:'By clicking "Enable Reimbursements," I authorize Zeni to debit from this bank account to repay using Zeni Reimbursements.',mileageHeader:"Setup Mileage Rate",mileageEditTitle:"Edit Mileage Rate",mileageAddTitle:"Add Mileage Rate",mileageSubTitle:"Standard mileage rate you've to set for business-related travel.",perText:"per"},reimbursementApproval:{amountPerRemiLabel:"If amount per reimbursement is between:",amountPerRemiGreaterLabel:"If amount per reimbursement is greater than or equal to:"},reimbursementDetail:{tooltip:{category:'The "category" update recommendation is __based__'},deletedCategoryError:"Selected category was deleted in QuickBooks. Please select an active one.",deletedClassError:"Selected class was deleted in QuickBooks. Please select an active one.",duplicatePopUpInfo:{title:"Preparing For Submission",primaryButtonText:"Review Report",secondaryButtonText:"Submit Anyway",reviewingExpenses:"Reviewing expenses",reviewedAllExpenses:"Reviewed all expenses",detectDuplicates:"Detect duplicates",detectingDuplicates:"Detecting duplicates",duplicateExpensesFound:"Duplicate expense(s) found",failedToSubmit:"Failed to submit, please try again",failedToDetect:"Failed to detect duplicate bills, please try again",noDuplicatesFound:"No duplicates found",submitReport:"Submit report",submittingReport:"Submitting report"},thereSeems:"There seems to be a duplicate expense(s) uploaded in this report.",pleaseFind:"Please find more details below.",thisExpense:"This expense is a duplicate. Make sure you are not submitting again.",thisExpenseReview:"This expense is a duplicate. Please review it before approving.",viewOriginalExpense:"View original expense",accountNameConnector:"XXXX",saveAccountManually:"Save your bank account manually",loginToBank:"Log in securely to your bank to get reimbursement payments ",amountExchangeRateTooltip:"We use Open Exchange Rates to calculate the currency conversion based on real time rates at the time of transaction.",requireReceipt:"Require receipt for a value of $75 or above",missingReceipt:"Missing Receipt",deleteReimbursement:"Delete Reimbursement",missingReceiptDescription:"Transactions of value $75 or above require a receipt.",editReimbursementTitle:"Edit Reimbursement",addReimbursement:"Add Reimbursement",yourBankAccount:"Your Bank Account:",selectBankAccount:"Select bank account",receivePaymentTo:"Receive Payment At",merchant:"Merchant:",merchantPlaceholder:"Select merchant",projectPlaceholder:"Select project/customer",distanceInMiles:"Distance in Miles:",addMerchant:"Add merchant",addDepartment:"Add department",outOfPocketKey:"out_of_pocket",mileageKey:"mileage",outOfPocket:"Out of Pocket",addMiles:"Add miles",reportTitle:"Report Title:",lunchWithClient:"E.g. Lunch with client",whatFor:"What’s It For?",reimbursementType:"Reimbursement Type:",reportStatus:"Report Status",banner:"Zeni has retrieved data from this receipt(s) and auto-filled this report.",discardDescription:"Changes are not automatically saved. Your changes will be lost if you continue.",overwriteDescription:"By overwriting the data, you will replace the existing row content with the data from the new receipt which you uploaded.",uploadLimitTitle:"You have exceeded the file upload size limit",uploadLimitDescription:"Please make sure the size of all receipts should not exceed 32MB. You could either compress the file sizes or upload another report",buttons:{rejectReport:"Reject Report",approveReport:"Approve Report",deleteReport:"Delete Report",resubmit:"Re-Submit",cancelAndDelete:"Cancel & Delete"},deleteDraftTitle:"Delete draft?",deleteReportTitle:"Delete Report?",cancelReportTitle:"Cancel Report?",cancelAndDeleteReportTitle:"Cancel & Delete Report?",deleteAlertDescription:"Are you sure you want to delete this report? This action cannot be undone.",cancelAlertDescription:"Are you sure you want to cancel this report? This action cannot be undone.",cancelAndDeleteAlertDescription:"Are you sure you want to cancel & delete this report? This action cannot be undone.",deleteBankAccountTitle:"Are you sure you want to delete this bank account?",deleteBankAccountDescription:"If submitted reimbursements are using this account, they will get paid on the same. However, you’ll have to select an existing one or add a new account to submit new reimbursements.",noReceiptAttached:"No receipt attached",dropReceipt:{single:"single",multiple:"multiple"},dropReceiptDescription:"Zeni will read the receipt(s) and autofill the reimbursement for you.",reimbursementActivity:"Reimbursement Activity",rejectRemiTitlePrefix:"Reject reimbursement for",rejectRemiDescription:"By rejecting this payment the approval process will not move forward and no payments will be issued. Help your team understand why this bill should not be paid.",overwriteTitle:"Are you sure you want to overwrite the data?",emptyValue:"--"},bulkActions:{exceptions:{processingSelectTogether:'Only reports under "Processing" status can be selected together.',processingWithOthers:'Report(s) under "Processing" status can’t be selected with others.'},duplicateWarning:{title:"An update to this report is currently in progress.",description:"Please wait until the process is complete before making any further changes."},popUps:{reject:{title:"Reject __report__",description:"By rejecting <_this_> <_payment_>, the approval process will not move forward and no <_payment_> will be issued. Help your team understand why <_this_> __report__ should not be paid."},delete:{title:"Delete __report__",descriptionDraft:"Are you sure you want to delete <_this_> __report__? This action cannot be undone.",descriptionOther:"By deleting <_this_> __report__, <_it_> will not move forward and no <_payment_> will be issued. Help your team understand why."},cancel:{title:"Cancel __report__",description:"By cancelling <_this_> __report__, <_it_> will not move forward and no <_payment_> will be issued. Help your team understand why."}},reviewPage:{reportsReviewed:{title:"__report__ <_has_> been reviewed",description:"__report__ <_is_> ready to proceed.",descriptionError:"The selected __report__ <_do_> not have the required information to proceed. Please fill in all details and try again."},reportsReviewing:{title:"We are reviewing your __report__"}},report:"Report"}},commonProgressBar:{newBillProgressStates:["Draft","Approval","Schedule","Payment"],draftProgressStates:["Created","Approval","Schedule","Payment"],scheduleProgressStates:["Created","Approved","Scheduled","Payment"],paidProgressStates:["Created","Approved","Scheduled","Paid"],offlinePaymentStates:["Created","Approved","Schedule","Payment"],alertableStates:["rejected","returned","failed","cancelled","pending_vendor_action"],paymentDatePrefix:"Expected by",newBillProgressBarSubText:"Great! We’ve got your bill.",markedAsPaid:"Marked as Paid"},zeniAccounts:{common:{totalYieldEarned:"Total Yield Earned"},zeniAccountSetUp:{setupSubTitle:"Manage your business verification, bank details to make Zeni work better for you."},zeniAccountsPromo:{promoText1:"Business Banking Reimagined",promoText2:"Smarter business banking with higher returns, stronger protection, and zero hassle.",earnUptoText:"Earn up to __rate__% APY ",insuranceText:"Up to __amount__ in FDIC",noHiddenFee:"No hidden or monthly fees",expertSupport:"24/7 expert support ",setupAccountsButton:"Setup Checking",terms:{terms1:'By clicking "Setup Checking", I have read and accepted the ',terms3:" ✌🏻"},disclaimer:"Zeni is a financial technology company and not a bank. Banking services are provided by Thread Bank; Member FDIC.",iconTexts:{title:"Traditional Banks",unInsuredAmount:"$2.75M",unInsured:"Uninsured",insuredAmount:"$250K",footNote:"Based on an example balance of $3M",yAxisAmounts:["$3M","$2.5M","$2M","$1.5M","$1M","$500K","$0"]},trustBanner:{title:"Zeni Business Checking is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni AI automatically categorizes, matches, and reconciles every transaction, saving finance teams many hours every month."}},zeniAccountList:{noDataText:"To add new account, click on the\n'Add Business Account' button and get started.",totalAvailableBalance:"Available Balance",insuranceInfo:"Up to __amount__ FDIC Insured.",unlinkAccount:"Unlink Account",addFundBtnText:"Add Funds",addAccountText:"Add Business Account",autoTransferRulesColumnHeader:"Auto Transfer Rules",nextTransferOn:"Next transfer on __date__",autoTransferRuleSummary:{minimumBalanceTitle:"Transfer to __destination__ if below __amount__",minimumBalanceSubtitle:"Checks daily · Triggers when balance is below __amount__",recurringTitle:"Transfer __amount__ to __destination__",recurringSubtitle:"Recurring __frequency__ · Next transfer on __date__",percentageTitle:"Transfer __allocations__",percentageAllocation:"__percent__% to __destination__",percentageSubtitle:"Applies on incoming funds · Next transfer on __date__",frequencyLabel:{daily:"daily",weekly:"weekly"},nextTransferPending:"Next transfer pending"},linkExternalAccount:"Link External Account",yieldTooltip:"This is the amount you've earned on your funds since opening your accounts.",insuranceTooltip:"Your accounts are FDIC insured up to __amount__. You are protected by the highest level of FDIC insurance currently available.",balanceTooltip:{base:"Your Available balance does not include processing transactions.",processing:"Processing:",available:"Available:"},createPopUpInfo:{title:"Add a business account",description:"This will create a new business account with its own account number.",placeholder:"Add account nickname"},addFundsPopUpInfo:{title:"Account is now set up.",description:"Add funds to this account. Your balance is covered up to __amount__ by FDIC Insurance, and you will earn up to __rate__% APY. Don't miss our example below to see what you could gain!",primaryButtonText:"Add funds",secondaryButtonText:"Not now"},billPayupPopUpInfo:{title:"Take Me to Bill Pay",description:"You can access bills feature when you want to pay someone.",secondaryButtonText:"Not Now"},tabsById:{zeniAccounts:"Checking",achDetails:"ACH Details",externalAccounts:"External Accounts",wireDetails:"Wire Details"},transferDrawer:{calculator:{sliderTooltipText:"% APY",footerText:{earnUptoText:"Earn up to __rate__% APY",annualYieldEarnedTooltipText:"This is the amount you'll earn on your funds on an annualized basis.",forTotalBalance:"For Total Balance:"},heading:"Your balance is covered up to __amount__ by FDIC Insurance, and you will earn up to __rate__% APY. Don't miss our example below to see what you could gain!"},subTitle:"Transferred funds typically take 1-2 business days to show in the account.",amountError:"Amount is required to transfer between accounts",holiday:"holiday",footNote:'By clicking "Transfer," I authorize Zeni to initiate the transfer.',external:{transferSuccessMsgMidfix2:" The money should arrive within 1-2 business days."},theDaily:"The daily bank transfer limit is __dailyLimit__.",sinceYourDeposit:" Since your deposit exceeds the limit, the amount will be split across multiple days.",splitPaymentTimeline:"Split Payment Timeline",youCanUse:"You can use a wire transfer if you want to transfer the entire amount at once. ",selectYour:"Select your Zeni Checking Account for incoming wire",wireInstruction:"Wire Instructions for __accountName__",backToChecking:"Back to Checking",backToAutoTransferRule:"Back to Auto Transfer Rules",wireTransferDescriptionLine1:"Initiate the wire from your bank using the instructions below. Wires must come from a domestic bank account. Your deposit will show up in Zeni the next business day after you send it.",wireTransferDescriptionLine2:"Your wire will reflect in your account the day after submission. Note that foreign or third-party wires are not accepted at this time.",transferFromError:"Select account to transfer between accounts",transferToError:"Select account to transfer between accounts",amountPlaceholder:"$0"},checkDepositDrawer:{title:"Check Deposit",subTitle:"Deposited check usually take 4-5 business days to appear in your account.",sourceLabel:"Source of Deposit:",sourcePlaceholder:"Type here",footNote:'By clicking "Deposit", I authorize Zeni to initiate the deposit',checkPicLabel:"Check Pictures",picGuides:['Sign the check and write "For mobile deposit at Zeni only" on the back of the check.',"Make sure all account info is clearly visible.","Checks must be issued by a US bank."],transferSuccessMsgPrefix:"We’re reviewing your ",transferSuccessMsgSuffix:" check deposit. The money should arrive within 1 to 2 business days. Please keep the check with you until it clears.",goToAccountBtn:"Go to Account",makeAnotherTransferBtn:"Deposit Another Check",frontSideError:"Front side picture is required for check deposit.",backSideError:"Back side picture is required for check deposit.",amountPlaceholder:"$0"}},zeniAccountDetail:{title:"Zeni Saving",bankLetter:"Bank Letter",bankLetterPdf:"zeni-bank-letter-",viewAll:"View All",transactions:"Recent Transactions",bankLetterTitle:"Zeni - Bank Verification Letter",closeAccountPopUp:{description:"Your remaining balance will be immediately transferred to your Primary checking account, ending with "},editNamePopUp:{title:"Edit nick name",description:"Account nickname"},nullScreenHeading:"Current balance is $0",noTransactionText:"You don't have any transactions yet!"},transactionList:{title:"- Transactions"},moveMoney:{closeAccount:"Close Account",editNickName:"Edit Account Nick Name",accountStatement:"Account Statements",payBills:"Pay Bills",checkDeposit:"Deposit a Check"},statements:{title:"Accounts Statements"},expressPay:{schedulePayment:"Schedule Payment",recipientSectionTitle:"Who’s It For?",recipientName:"Recipient Name:",recipientType:"Recipient Type:",recipientEmail:"Recipient Email:",reciept:"Receipt / Invoice:",placeholders:{recipientName:"Search or type a recipient name",recipientNameMobile:"Type a recipient name"},progressBar:{stateOne:"Recipient Details",stateThree:"Review & Schedule"},phoneNumberPopup:"Users must verify their phone number. We recommend using a phone number that you access frequently."}},activity:{achTraceNumber:"ACH Trace Number:",wireTraceNumber:"Wire Trace Number:"},filters:{enDash:"–",searchPlaceholder:"Search For Vendors",filterCategories:{reimbursements:{receiptDate:"Submitted Date"}},filterOptions:{billAmountOptions:[{label:"< 5K",value:"-10000000<->5000"},{label:"5K to 10K",value:"5000<->10000"},{label:"10K to 20K",value:"10000<->20000"},{label:"> 20K",value:"20000<->10000000"}],reimbursementAmountOptions:[{label:"< 100",value:"-10000000<->100"},{label:"100 to 500",value:"100<->500"},{label:"500 to 1000",value:"500<->1000"},{label:"> 1000",value:"1000<->10000000"}],paymentMethodOptions:[{label:"ACH",value:"ach_standard"},{label:"ACH Same Day",value:"ach_same-day"},{label:"Domestic Wire",value:"wire_us-domestic"},{label:"International Wire",value:"wire_international"},{label:"Offline",value:"outside-zeni_outside-zeni"}],paymentHistoryStatusOptions:[{label:"In Progress",value:"Pending"},{label:"Complete",value:"Sent"},{label:"Failed",value:"Rejected"}],commonStatusOptions:[{label:"Draft",value:"draft"},{label:"Pending Approval",value:"pending_approval"},{label:"Approved",value:"approved"},{label:"Rejected",value:"rejected"},{label:"Scheduled",value:"scheduled"},{label:"Processing",value:"processing"},{label:"Paid",value:"paid"},{label:"Canceled",value:"cancelled"},{label:"Returned",value:"returned"},{label:"Failed",value:"failed"}],billStatusOptions:[{label:"Pending Vendor Action",value:"pending_vendor_action"},{label:"Overdue",value:"overdue"}],billPaymentTypeOptions:[{label:"One-time Payment",value:"one-time"},{label:"Recurring Payment",value:"recurring"}]}},emailInvoiceTooltip:"Email Invoice",emailReceiptTooltip:"Email Receipt",policyTooltip:"Card policy",cardPolicy:{introTooltip:{title:"Cards Policy",description:"Create and manage reusable spend control policies"}},moreMenuOptions:[{label:"Settings",value:"settings"},{label:"Download",value:"download"},{label:"Pay Early",value:"payEarly"},{label:"Statements",value:"statements"},{label:"Payment History",value:"paymentHistory"}],downloads:{defaultDownloadFileName:"Spend Management Transactions.xlsx"},chargeCard:{statements:{title:"Credit Card Statements"},paymentHistory:{autopay:"Autopay",sourceAccountUnknown:"Unknown Account",searchPlaceHolder:"Search payment history...",pageTitle:"Credit Card Payment History",initiatedOn:"Initiated on:",completedOn:"Completed on:",noPaymentHistoryMatchedSearch:"No payment history matched your search.",noPaymentHistoryAvailable:"No payment history found."},common:{expense:"expense",expenses:"expenses",selected:"Selected",reason:{lost:"Lost or stolen",fraud:"Fraud detected"},recurringExpenses:"Recurring Expenses",nextPaymentDate:"Next Payment Date",letUsKnowWhy:"Let Us Know Why"},closeCard:{closeCards:"Close Cards",closeCard:"Close Card",multipleCardsNoRecurringExpenses:"Closing these _number_of_cards_ cards will be a permanent action.",multipleCardsHasRecurringExpenses:"Closing these _number_of_cards_ cards cancel _number_of_recurring_expenses_ recurring",multipleCardsHasRecurringExpensesSuffix:" linked to it. This is a permanent action.",firstCardHasRecurringExpenses:"Closing this card will cancel _number_of_recurring_expenses_ recurring _expense_ linked to it. This is a permanent action.",youNeedToProvideReasonToCloseCard:"You need to provide a reason to close the card"},lockCard:{youNeedToProvideReasonToLockCard:"You need to provide a reason to lock the card",lockCards:"Lock Cards",lockCard:"Lock Card",firstCardNoRecurringExpenses:"Locking this card pauses all expenses through it. You can unlock it anytime to resume.",firstCardHasRecurringExpenses:"Locking this card pauses _number_of_recurring_expenses_ recurring _expense_ linked to it. You can unlock it anytime to resume.",multipleCardsNoRecurringExpenses:"These _number_of_cards_ cards will be locked but can be unlocked later.",multipleCardsHasRecurringExpenses:"These _number_of_cards_ cards will be locked but can be unlocked later, pausing its _number_of_recurring_expenses_ recurring"},cardList:{totalCashback:"Total Cashback",searchPlaceHolder:"Search by owner, card name or department",headerElementDisplayName:"Spend management list view inner element type",noDataWithFilterText:"No cards matched your search.",noDataText:'Click on the "New" button to issue cards.',bulkActions:{exceptionMessages:{closedCardsCannotBeSelected:"Closed cards can't be selected",onlyCardsUnderStatusCanBeSelectedTogether:"Only cards under __status__ status can be selected together",cardAlreadyLocked:"Card is already locked",onlyActiveCardsCanBeLocked:"Only active cards can be locked",cardNotLocked:"Card is not locked",onlyActiveOrInactiveCardsCanBeClosed:"Only active or inactive cards can be closed",onlyActiveOrLockedCardsCanHaveLimitsUpdated:"Only active or locked cards can have limits updated",onlyCardsWithPendingInvitesCanBeRevoked:"Only cards with pending invites can be revoked",cardCannotBeSelectedForAction:"This card cannot be selected for this action"}},header:{cardName:"Card Name",cardType:"Card Type",accountType:"Account Type"},status:{active:"Active",inactive:"Pending Activation",frozen:"Frozen",stolen:"Stolen",lost:"Lost",closed_by_customer:"Closed",suspected_fraud:"Suspected Fraud",request_on_hold:"Pending",locked:"Locked",closed:"Closed"},unassignedCard:"Unassigned Cards: ",slashMonth:"/ Month",tooltip:{business_virtual_credit_card:{cardUser:" needs to complete their profile to access this card.",self:"You need to complete your profile to access this card."},business_physical_credit_card:{cardUser:" needs to complete their profile before the card can be shipped.",self:"You need to complete your profile before the card can be shipped."},business_virtual_debit_card:{cardUser:" needs to complete their profile to access this card.",self:"You need to complete your profile to access this card."},business_physical_debit_card:{cardUser:" needs to complete their profile before the card can be shipped.",self:"You need to complete your profile before the card can be shipped."}},creditCardBalance:"Credit Card Balance",debitCardSpend:"Debit Card Spend",compareToLastMonth:"compared to last month"},cashbackDetail:{totalEarned:"Total Earned",redeemed:"Redeemed",tillDate:"Till Date"},issueCard:{title:"New Card",debitCard:"Debit Card",usersPlaceholder:"Who’s it for?",cardNamePlaceholder:"Add card name",cardholderLabel:"Cardholder: ",cardholdersLabel:"Cardholders: ",connectedAccountLabel:"Connected Account: ",cardNameLabel:"Card Name: ",amountLabel:"Amount: ",frequencyLabel:"Frequency: ",amountExceedError:"Amount exceeds _amount_ limit",amountExceedDebitCardError:"Amount exceeds the max. limit of _amount_",primaryBtnText:"Issue Card",frequencySubLabels:{monthly:"Limit resets every calendar month",quarterly:"Resets every 3 calendar months (Jan, Apr, Jul, Oct)",weekly:"Limit resets every Monday (12 UTC)",yearly:"Limit resets every calendar year"},address:{personal:"Personal",shippingAddressLabel:"Shipping Address:",customAddressText:"Address used to ship the card and won't be saved",personalAddressText:"Address set by _name_ in their personal profile"},addCard:"Add Card",deleteCard:"Delete Card",additionalInfoPhysical:"You can choose only one cardholder",additionalInfoVirtual:"You can choose multiple cardholders",cardLimitWarning:"Card Limit Reached"},cardOnboarding:{title:"Activate Your Card",oneLastStep:"One last step!",sectionTitle:"Personal Details",addressAdditionalInfo:"Physical card will be delivered to this address.",cvvPlaceholder:"Enter CVV",cardIsOnItsWay:"Congratulations! You're all set and your card is on its way",activateYourCard:"Congratulations! You're all set to activate your card",setYourPin:"Congratulations! Your card is activated—set your PIN to start using it",setFourDigitPIN:"Set a four-digit PIN",setFourDigitPinTitle:"Set a 4-digit numeric PIN for your card ending",setPin:"Set PIN",validExpiryDate:"Please ensure you enter a valid expiry date",validCVV:"Please ensure you enter a valid CVV",yourCardWillShipToBelow:"Your card will ship to below address in 7-10 business days",cardShippingAddress:"Card shipping address",creditCardLimit:"Credit card limit:",debitCardLimit:"Debit card limit:"},cardDetails:{cardClosedMessage:"The card is closed and can no longer be used.",cardLockedByAdminMessage:"Your card is locked by an Admin. Contact Admin to unlock it.",cardLockedMessage:"This card is currently locked and can't be used.",existingPin:"Existing PIN:",newPin:"New PIN:",pinAttemptsReached:"PIN attempts reached. Please try again after 24 hours",incorrectCurrentPIN:"Incorrect existing PIN. Please try again.",forgotYourPin:"Forgot your PIN?",callTollFree:"Call the toll-free number on the back of your card to reset it.",moreOptions:{changePin:"Change PIN",updateSpendLimit:"Update Spend Limit",revokeInvite:"Revoke Invite"},singleFileUploadSizeErrorMessage:"File size exceeds the maximum limit. Please upload a file under __maxFileSize__",multipleFileUploadSizeErrorMessage:"One or more files exceed the maximum limit. Please upload files under __maxFileSize__ each",failedToFetchCardWebText:"Failed to load card details. Please click to try again.",failedToFetchCardMobileText:"Failed to load card details. Please tap to try again.",clickTheCardToCopyDetailsText:"Click the card to copy details",clickTheCardToFetchDetailsText:"Click the card to fetch details",adminsCannotAccess:"Admins cannot access card details of another user.",tapCardCopyText:"Tap card > Copy details > Add to wallet",verifyCard:"Verify Card",cardColours:"Card Colors",owner:"Card Owner",transactionListTooltip:"Transactions over $__receiptRequiredAboveAmount__ need receipts, as per policy.",noDataText:"You don’t have any transactions yet!",transactionTable:{emptyTransactions:{title:"Your card is ready!",subTitle:"Use it today and easily track your spendings"},pendingProfileCompletion:{title:"Pending profile completion",subTitle:{business_physical_credit_card:"__user__ needs to complete their profile\n before the card can be shipped",business_virtual_credit_card:"__user__ needs to complete their profile\n to access this card",business_physical_debit_card:"__user__ needs to complete their profile\n before the card can be shipped",business_virtual_debit_card:"__user__ needs to complete their profile\n to access this card"}},pendingActivation:{title:"Pending activation ",subTitle:"__user__ has not activated the card yet"}},cardNumberHideout:"•••• •••• •••• ",cvvHideOut:"•••",cvv:"CVV",expiry:"Valid Thru",cardTheme:"Card Theme",addCardToGoogleWallet:"Add Card to Google Wallet",addCardToAppleWallet:"Add Card to Apple Wallet",openWalletAppOnPhone:"Open Wallet App on Phone",openWalletDescriptionGoogle:'Tap the "+" Add payment card" on your Google Wallet app, select "+ new credit or debit card" to scan the card or enter the details manually',openWalletDescriptionApple:'Tap the "+" button on your wallet app to scan the card or enter the details manually',VerifyCardDescriptionGoogle:"Complete the verification process, and your Zeni Card will be ready to use securely from your Google Wallet.",VerifyCardDescriptionApple:"Complete the verification process, and your Zeni Card will be ready to use securely from your Apple Wallet.",scanNowAndAddToWallet:"Scan now and add to wallet",addToGoogleWallet:"Add to Google Wallet",addToAppleWallet:"Add to Apple Wallet",appleWallet:"Apple Wallet",googleWallet:"Google Wallet",verifyPhoneNumberDescription:"To use this card, users must verify their phone number. We recommend using a phone number that you access frequently.",bannerText:" is yet to complete their profile to access this card.",bannerTextSelf:"You are yet to complete your profile to access this card.",revokeInvite:"Revoke invite",expiryHideOut:"••••"},payEarly:{payNow:"Pay Now",billDueIn:"Bill due in",creditLimitLow:"Credit Limit Low",paymentInitiated:"Payment Initiated",paymentOf:"Payment of",isProcessing:"is processing.",madeOn:"made on",isProcessingAndWillUpdateTheCreditLimitIn23BusinessDays:"is processing and will update the credit limit in 2–3 business days.",isProcessingAndWillResetTheCreditLimitIn23BusinessDays:"is processing and will reset the credit limit in 2–3 business days.",isProcessingAndWillUpdateTheCreditLimitIn1BusinessDay:"is processing and will update the credit limit within 1 business day.",isProcessingAndWillResetTheCreditLimitIn1BusinessDay:"is processing and will reset the credit limit within 1 business day.",theCompanyCreditLimitWillUpdateIn23BusinessDays:"The company’s credit limit will update in 2–3 business days.",transactionsMayBeDeclinedBecauseTheCompanyCreditLimitIsRunningLow:"Transactions may be declined because the company's credit limit is running low. ",transactionsMayBeDeclinedBecauseTheCreditLimitIsRunningLow:"Transactions may be declined because the credit limit is running low.",payEarly:"Pay Early",creditLimitIsLow:"Credit Limit is Low",creditLimitIsRunningLow:"Credit limit is running low.\n Pay now to continue spending.",enableAutoPay:"Enable autopay when credit card balance reaches __autoPayThreshold__% of the limit",earn:"Earn ",whenYouPayViaZeniChecking:" when you pay via Zeni Checking",youvePaid:"You've paid ",theCreditLimitWillResetWithin23BusinessDays:"\nThe credit limit will reset within 2-3 business days.",theCreditLimitWillUpdateWithin23BusinessDays:"\nThe credit limit will update within 2-3 business days.",theCreditLimitWillResetWithin1BusinessDay:"\nThe credit limit will reset within 1 business day.",theCreditLimitWillUpdateWithin1BusinessDay:"\nThe credit limit will update within 1 business day.",goToCards:"Go to Cards",goToPaymentHistory:"Go to Payment History",payCreditCardBalance:"Pay Credit Card Balance",creditLimitReset:"Credit Limit Reset:",creditLimitUpdate:"Credit Limit Update:",business23Days:"(2-3 business days)",byClickingPayNowIAuthorizeZeniToInitiateThePayment:'By clicking "Pay Now" I authorize Zeni to initiate the payment.',bookPayment:"Book Payment",sameDayACH:"Same Day ACH",timeline01BusinessDay:"0-1 business day",timeline23BusinessDays:"2-3 business days",estimatedPaymentCompleteWithTimeline:"Estimated payment complete: __date__ (__timeline__)",estimatedPaymentCompleteWithoutTimeline:"Estimated payment complete: __date__",yourTransactionsMayBeDeclinedBecauseTheCompanyCreditLimitIsRunningLowWeHaveNotifiedYourAdmin:"Your transactions may be declined because the company's credit limit is running low. We have notified your admin.",percentageCashback:"__percentage__% cashback"},renamePopup:{heading:"Rename card",newName:"New name:",placeholder:"Enter new name"},updateSpendLimitPopup:{currentLimit:"Current limit:",slashMonth:"/Month",newLimit:"New Limit:",amountExceedError:"Max limit is _amount_",amountBelowError:"Limit cannot go below spent amount",amountBelowErrorBulk:"Limit cannot be lower than the spent amount on any of the selected cards",maxLimitForCardTypeError:"Max limit for _card_type_ cards is _amount_",unlockSpending:"Unlock spending power!"},addToWallet:{heading:"You are all set.\n Start using your card",subheading:"Add the card to your Apple or Google Wallet"},chargeCardsPromo:{activateCard:"Activate Card",noCardAssigned:{pre:"You haven’t been assigned any cards yet, please reach out to your ",tooltip:"admin",post:" to request a card."},cardAssigned:{singleCreditCard:"Congratulations! __issuing-user__ is inviting you to use __company-name__ credit card, powered by Zeni",singleDebitCard:"Congratulations! __issuing-user__ is inviting you to use __company-name__ debit card, powered by Zeni",selfIssuedSingleCreditCard:"You're invited to use __company-name__ credit card, powered by Zeni",selfIssuedSingleDebitCard:"You're invited to use __company-name__ debit card, powered by Zeni",multipleDebitCreditCards:"You're invited to use __company-name__ debit and credit cards, powered by Zeni",multipleCreditCards:"You're invited to use __company-name__ credit cards, powered by Zeni",multipleDebitCards:"You're invited to use __company-name__ debit cards, powered by Zeni"},promoTextCreditCardPost:"Business Credit Card",promoTextDebitCardPost:"Business Debit Card",promoTextDebitCreditCardPost:"Business Debit and Credit Card",aiPowered:"AI Powered",promoSubText:"Save smart, spend wisely, and simplify your spending with ease.",userPendingPromoText:"Cards set up process is pending, please check with your admin",promoBadgeText:{preApproved:"Exciting news! You have been pre-approved for ",approved:"Congratulations! You have been approved for ",underReview:"We’re reviewing your request and will get back to you shortly.",rejected:"We’ve reviewed your request, but can’t offer a credit line right now.",nonPreApproved:{get:"Get ",scale:"10-20x",higherLimits:"higher limits than other business cards.",doubleStarred:"**"}},trustBanner:{title:"Zeni Business Cards is trusted by Matic Robotics and 602+ growing companies",subtitle:"Zeni AI Cards automatically categorize, match, and reconcile every transaction, saving finance teams many hours every month."},creditLimit:" credit limit.",preApprovedAmount:"$50,000",benefits:{item2:"Smart Automation",item3:"Unified Control",item4:"Unlimited Cards"},dashboard:{title:"AI Business Credit Cards",get:"Get",cashback:"cashback",subTitle1:" __cashback__% ",subTitle2:"10-20x higher limits and expert support",promoCarousel:{preApprovedLimit:{header:"Enjoy a pre-approved limit",prefix:"Unlock 10-20x higher credit limit\n than traditional cards."},creditLimit:{header:"Unlock credit limit upto",prefix:"Higher than\n traditional cards.",headerAnimationData:["10-20x"]},cashback:{header:"Earn cashback upto",prefix:"On all expenses made\n using Zeni Cards."},receiptMatching:{header:"AI receipt matching",prefix:"Automated receipt matching via\n email or SMS, saving time and effort.",email:"receipts@zeni.com",autoMatching:"Auto-matching",companyName:"McDonald's",date:"May 17",amount:"$65"},categorization:{header:"AI-powered categorization",prefix:"Save hours of manual work with\n automated expense categorization.",autoCategorize:"Auto-categorize"},noHiddenFees:{header:"No fees,\n just savings",prefix:"No hidden fees,\n just pure savings",headerAnimationData:["0","1","2","2","3","4","5"]},discoverBenefits:"Discover Benefits"}},setupCardsButton:"Setup Cards",getPreApprovedNow:"Get Pre-Approved Now",terms:{terms1:'By clicking "Setup Cards" I have read and accepted the ',alternateTerm1:'By clicking "Enable Cards" I have read and accepted the ',getPreApprovedNowTerm:'**Subject to approval. By clicking "Get Pre-Approved Now" I have read and accepted the ',cardUserTerm:'By clicking "Let’s Go" I have read and accepted the ',cardAdminTerm:'By clicking "Proceed" I have read and accepted the ',shipMyCardTerm:'By clicking "Ship My Card" I have read and accepted the ',zeniAgreement:"Zeni Accounts Agreement",terms3:" ✌🏻",checkingAccountTerm:"*Linked Zeni Checking account needed.",approvalTerm:"**Subject to approval."},businessDebit:"Business Debit",keyBenefits:"Key Benefits",aIAutomatedCategorization:"AI automated categorization",maximumCVV:"Maximum CVV attempts reached",forAssistance:"For assistance please contact team@zeni.ai",realtimeSpendVisibility:"Realtime spend visibility",cardOnboardingFormTitle:"Provide your date of birth and phone number.",yourCardWillBeShipped:"Your card will be shipped to",shipMyCard:"Ship My Card",enterExpiryDateAnd:'Enter "Expiry Date" and "',toActivateTheCard:'" to activate the card ending ',whatIsCVV:"What is CVV?",receivedYourCard:"Received your card ending with",proceedToActivate:"Proceed to Activate",cvvText:"456",cardNum:"0000 0000 0000 0000",validThru:"VALID THRU",expiryDate:"12/25",cardFooterContent:"This card is issued by Thread Bank, Member FDIC, pursuant to a license from Visa USA Inc.",timeText:"9:41",addToWallet:"Card added to wallet",addAddressSubText:"This address is used to ship the card and won’t be saved.",listPage:{spendSmarter:"SPEND SMARTER",getAccessTo:"GET ACCESS TO",setUpText:"Set up your first\n __cardType__ card today.",promoMultiText:{debit:["__cashBack__% cashback on every purchase","AI powered expense categorization","No hidden fees, just savings","Automatically match your receipts"],credit:["Pre-approved for __creditLimit__","__cashBack__% cashback on every purchase","AI-powered expense categorization","No hidden fees, just savings","Automatically match your receipts"]},promoSubText:{credit:"First AI Business Credit",debit:"First AI Business Debit Card"},createNow:"Create Now",status:{requestRejected:"Request Rejected",requestUnderReview:"Request Under Review",rejectedMessage:"We can't offer a credit line right now.",underReviewMessage:"We're reviewing your request and will get back to you shortly."}}},chargeCardSetUp:{setupTitle:"Card Setup",setupAccountSectionTitle:"Credit Card Payment Source",setupSubTitleNotEnabled:"Bingo! You are all set to enable and use cards.",setupSubTitle:"Manage your business verification, bank details to make Zeni work better for you.",pageName:"Charge Card Setup"},connectedAccount:"Connected Account",aiAccountantMessage:"will instantly auto-match receipts. Email receipts to",cardsAiCfoHero:{headline:"Issue your first card. Start earning 1.75% back today.",subheadline:"Unlimited virtual cards, smart limits, real-time AI controls — all set up for you.\nYou approve before launch. Pick a starting point ↓",composerPlaceholder:"Ask AI CFO about cards…",pageTitle:"AI CFO for Cards",chatHeaderSubtitle:"Designing your cards stack"},cardPolicyAiCfoHero:{headline:"Set up your first policy. Control spend with confidence",subheadline:"Smart rules, dynamic limits, real-time controls — all pre-configured for you.\nReview, customize, and launch in seconds ↓",pageTitle:"AI CFO for Card Policy",chatHeaderSubtitle:"Designing your cards policy",composerPlaceholder:"Ask AI CFO a question and get clear answers."},cardPolicyPage:{title:"Card Policy",createPageTitle:"New Card Policy",manualEmptyStateHeadline:"Or Create Manually",manualEmptyStateSubtext:'Click on the "New" button to create policy.',manualCreatePlaceholder:"Manual policy creation coming soon.",uploadDocumentTitle:"Upload Policy Document",uploadDocumentSubtitle:"Upload a policy document to extract and create a new policy.",uploadDocumentExtractingLabel:"Extracting policy details...",uploadDocumentRemoveAriaLabel:"Remove uploaded policy document",uploadDocumentExtractErrorMessage:"We couldn't read that policy document. Try a different file.",aiCfoUploadDocumentStepTitle:"Upload a policy document to extract and create a new policy.",policyInformationTitle:"Policy Information",modeStrictDescription:"Block transactions that violate policy",modeFlexibleDescription:"Allow but flag violations for review",namePlaceholder:"e.g. Marketing spend policy",descriptionPlaceholder:"Describe the purpose and scope",vendorRestrictionsTitle:"Vendor Restrictions",vendorRestrictionsSubtitle:"Control which vendors can or cannot be used with this policy. Add vendors to the allowed or blocked list.",vendorAllowLabel:"Allow Vendors",vendorRestrictLabel:"Restrict Vendors",vendorSearchPlaceholder:"Search vendors",categoryRestrictionsTitle:"Category Restrictions (MCC Codes)",categoryRestrictionsSubtitle:"Restrict spending by merchant category codes. Block high-risk categories like gambling or cryptocurrency.",categoryAllowLabel:"Allow Category",categoryRestrictLabel:"Restrict Category",categorySearchPlaceholder:"Search categories",applyToCardsTitle:"Apply to Cards",applyToCardsSubtitle:"Select cards to automatically apply this policy after creation.",applyToCardsSearchPlaceholder:"Search by cardholder, last 4 digits or department",applyToCardsEmptySearchResultsLabel:"No cards match your search.",nameRequiredError:"Policy name is required",nameMaxLengthError:"Policy name must be 80 characters or less",createPolicyGenericErrorMessage:"Something went wrong while creating the policy. Please try again.",updatePolicyBtnLabel:"Update Policy",updatePolicyGenericErrorMessage:"Something went wrong while updating the policy. Please try again.",manageSubheader:"Manage Card Policy",editPolicyAriaLabel:"Edit policy",archivePolicyAriaLabel:"Archive policy",cardsCountLabel:e=>`${e} ${1===e?"Card":"Cards"}`,vendorRestrictionsCountLabel:e=>`${e} ${1===e?"Vendor Restriction":"Vendor Restrictions"}`,categoryRestrictionsCountLabel:e=>`${e} ${1===e?"Category Restriction":"Category Restrictions"}`,transactionLimitHelper:"Maximum amount per single transaction"}},treasury:{menuTooltip:{earnUpTo:"Earn up to",description:"yield and maximize your idle cash. "},overviewPage:{transferFunds:"Transfer Funds",editPortfolio:"Edit Portfolio",taxLetter:"Tax Letter",taxLetterFileName:"tax-letter.pdf",noData:"No performance data yet! \nInitiate your first transfer to start earning yield.",insuredFundsTooltip:"Securities in your account are protected up to $500,000. For details, please see www.sipc.org",fundTilesSectionTitle:"Your Treasury Funds",insuredFundsAmount:"Up to $500k SIPC Insured",sevenDayYield:"7-Day Yield",balanceTooltip:{base:"Your available balance does not include processing transactions.",balance:"Total balance:",processing:"Processing transactions:",available:"Available balance:"},fundTile:{sevenDayYieldTooltip:"7-day SEC yield as of November 1, 2025. The SEC yield for a fund is calculated by annualizing its daily income distributions for the previous 7 days. You should consider the investment objectives, risks, charges, and expenses of a fund carefully before investing. This and other information is found in the fund’s prospectus. Please read the prospectus before investing. An investment in a fund is not insured or guaranteed by the Federal Deposit Insurance Corporation or any other government agency. Although a fund seeks to preserve the value of your investment at $1.00 per share, it is possible to lose money by investing in a fund. Yields fluctuate and past performance is no guarantee of future results."}},promoPage:{yieldLabel:" 7-Day Yield",liquidity:" Liquidity",higherReturns:"Higher returns",quickPayments:"Quick payments",heading:"Low Risk, High Reward, Steady Returns",subHeading:"Secure your funds with Zeni Treasury",usps:{sipcInsured:"SIPC Insured",highLiquidity:"High Liquidity",sameDayTransfer:"Same-Day Transfer",autoTransfers:"Auto Transfers"},fundSize:"Fund Size",maturity:"Maturity",expenseRatio:"Expense Ratio",expenseRatioSuffix:"% included in the yield",riskRating:"Risk Rating",composition:"Composition",compositionHeading:"View the fund's asset allocation at a glance.",disclaimer1:"I. 7-day SEC yield as of November 1, 2025. The SEC yield for a fund is calculated by annualizing its daily income distributions for the previous 7 days. You should consider the investment objectives, risks, charges, and expenses of a fund carefully before investing. This and other information is found in the fund’s prospectus. Please read the prospectus before investing. An investment in a fund is not insured or guaranteed by the Federal Deposit Insurance Corporation or any other government agency. Although a fund seeks to preserve the value of your investment at $1.00 per share, it is possible to lose money by investing in a fund. Yields fluctuate and past performance is no guarantee of future results.",disclaimer2:"II. Same-day liquidity is subject to cutoff times (typically 12 PM ET) and transaction limits. Availability is not guaranteed.",disclaimer3:"III. Securities in your account are protected up to $500,000. For details, please see ",disclaimer3Url:"www.sipc.org.",disclaimer4:"IV. This tool is for illustrative purposes only and does not guarantee future performance. Yields are subject to change.",agreementP1:'Investment advisory services are provided by Atomic Invest LLC, an SEC-registered Investment Adviser. Brokerage services provided by Atomic Brokerage LLC, registered broker-dealer and member of FINRA/SIPC. Due to the relationship between Atomic Invest and Atomic Brokerage, there is a conflict of interest as Atomic Invest directs orders to its affiliate. Investments in securities: Not FDIC Insured. Not Bank Guaranteed. May Lose Value. Zeni Inc. has engaged Atomic Invest LLC ("Atomic") to bring you the opportunity to open an investment advisory account. Atomic may pay Zeni Inc. up to 0.85% of assets under management annually, creating a conflict of interest. Disclosures: ',formCrsText:"Form CRS",formCrsLink:"https://reports.adviserinfo.sec.gov/crs/crs_313255.pdf",formAdvText:"Form ADV Part 2A",formAdvLink:"https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=970947",privacyPolicyLink:"https://legal.atomicvest.com/usa.privacy.de3d0277-78f7-4741-9e9f-755f6b4f03ba.pdf",generalDisclosuresText:"General Disclosures",generalDisclosuresLink:"https://legal.atomicvest.com/usa.disclosures.e1dc8c5c-1742-453e-9157-51e09deee88b.pdf",sipcInfoText:"SIPC Info",viewAgreement:"View Agreement",agreementDrawer:{title:"Open your Treasury Account",intro:"Your Agreement with Atomic Invest LLC and Atomic Brokerage LLC By clicking “Enable Treasury,” you agree that:",introBullets:["You are of legal age and have the capacity to enter into this agreement.","You wish to open a brokerage account with Atomic Brokerage LLC, with investment advisory services provided by Atomic Invest LLC.","You confirm that you have been provided with, read, understood, and agree to the agreements, disclosures and policies listed below:"],documents:[{text:"Atomic Invest Form CRS",link:"https://reports.adviserinfo.sec.gov/crs/crs_313255.pdf"},{text:"Atomic Brokerage Form CRS",link:"https://files.brokercheck.finra.org/crs_315263.pdf"},{text:"Atomic Invest LLC Investment Advisory Agreement",link:"https://legal.atomicvest.com/usa.ima.3FhWfWocRJbFt9qCd5vLON-MMdpqYo1z9OLuUV6uTCg=.pdf"},{text:"",hasMultipleLinks:!0,links:[{text:"Atomic Brokerage LLC Account Agreement,",link:"https://legal.atomicvest.com/usa.broker.agreement.9fd3cb75-d1c5-4b75-8bb8-af05138de439.pdf"},{text:" Margin Supplement Agreement",link:"https://legal.atomicvest.com/usa.custodian.margin-agreement.92f22dc6-cfd4-407f-9006-4a2bef95697c.pdf"},{text:" and ",link:""},{text:"Margin Disclosure Statement",link:"https://legal.atomicvest.com/usa.atomic-brokerage.margin-agreement.f234549b-b32a-4078-805a-2a68c48486e6.pdf"}]},{text:"Atomic Cash Sweep Program Terms and Conditions",link:"https://legal.atomicvest.com/usa.broker.sweep-terms-and-conditions.68e22843-5855-452c-9399-4e6092db7344.pdf"},{text:"Atomic Invest General Disclosures",link:"https://legal.atomicvest.com/usa.disclosures.e1dc8c5c-1742-453e-9157-51e09deee88b.pdf"},{text:"Atomic Brokerage General Disclosures",link:"https://legal.atomicvest.com/usa.broker.disclosures.003464f3-f6bd-41c3-bbdf-7050e50b43a2.pdf"},{text:"Atomic Invest Form ADV Part 2A",link:"https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=970947"},{text:"Atomic Invest and Atomic Brokerage Privacy Policy",link:"https://legal.atomicvest.com/usa.privacy.de3d0277-78f7-4741-9e9f-755f6b4f03ba.pdf"}],confirmTitle:"You also confirm:",confirmBullets:["You agree to resolve any disputes with Atomic Invest and Atomic Brokerage through binding arbitration.","You delegate proxy voting authority to Atomic Invest.","You allow Atomic Invest to direct the purchase and sale of investments on your behalf.","You agree that electronic signatures are legally binding and to the electronic delivery of Atomic Invest and Atomic Brokerage account communications, including account statements, trading confirmations, and tax documents.","You agree to the Quarterly Delivery of Trading Confirmations Certification.","You have read, understood, and agree to the Taxpayer Certification, including that you are not subject to back-up withholding and are exempt from FATCA reporting for this account."]},sliderTitle:"Start earning more with Zeni Treasury",sliderEarnLabel:"Earn",sliderPerYear:"/year",sliderTooltipPrefix:"Deposit:",sliderLabel1:"$1.25M",sliderLabel2:"$2.5M",sliderLabel3:"$3.75M",sliderLabel4:"$5M",sliderLabel5:"5M",enableButton:"Enable Treasury",setupButton:"Setup Treasury"},statements:{title:"Treasury Statements"},taxLetter:{title:"Treasury Tax Letter",noTaxLetter:"No Tax Letter found"},transferDrawer:{title:"Transfer to Treasury",stepTitle:"Step 2: Transfer to Treasury",subTitle:"Transferred funds typically take 1-2 business days to show in the account.",transferNow:"Transfer Now",reviewAndConfirm:"Review & Confirm Transfer",backToTreasury:"Back to Treasury",review:{prefix:"Funds will be deposited to ",suffix:"on __date__.",footNote:'By clicking "Transfer," I authorize Zeni to initiate the transfer.',footNoteForVerification:'By clicking "Submit," I authorize Zeni to initiate the transfer of funds.'},calculator:{sliderTooltipText:"Deposit: ",footerText:{annualYieldEarnedTooltipText:"This is the amount you'll earn on your funds on an annualized basis.",forTotalDeposit:"For Total Deposit:"},heading:"Your balance is covered up to __amount__ by SIPC Insurance, and you will earn up to __rate__% APY. Check out the example below to see what you could gain!"},amountPlaceholder:"$0"},setup:{setupPageName:"Zeni Treasury Setup",setupSubTitle:"Manage your portfolio allocation, business verification, bank details.",title:"Funds Transfer",subTitle:"Tailored to match your goals and tolerance.",verificationInProgress:"Business verification takes up to 24 hours. Once verified transfer will take 1–2 business days. We'll notify you by email."},portfolioAllocation:{stepTitle:"Step 1: Portfolio Allocation",editTitle:"Edit Portfolio Allocation",subtextReadOnly:"Based on your preferences, here's the fund distribution tailored to your goals.",subtextSetup:"Please share your preferences, and we'll calculate the fund distribution tailored to your goals.",subtextEdit:"The changes to your portfolio will take effect in 2-3 business days. Funds in Treasury remain invested during this time.",resetButton:"Reset to recommended allocation",changePreferences:"Change preferences",riskLevelLabel:"Risk Level"},promoBanner:{title:"Introducing Treasury",features:{yield:"Up to __yieldPercentage__ yield — 7-Day Yield",insured:"__insuredAmount__ SIPC Insured",liquidity:"High Liquidity, Same-Day Transfer"},disclaimer:"*Same-day liquidity is subject to cutoff times and transaction limits. For full terms and conditions, visit __termsLink__.",termsLink:"Zeni Treasury Terms of Service"}}},taskManagement:{common:{timeSpentPlaceholder:"00h 00m",timeSpentFormat:"##h ##m"},taskList:{tabs:{archived:"Archived",snoozed:"Snoozed",completed:"Completed",deleted:"Deleted",live:"Active"},searchPlaceHolder:"Search task by task name",noDataText:'Click on the "Create" button to add new task',deleteConfirmationMessage:"This action cannot be undone, and all the tasks in group will be moved to “All Other tasks” group.",footer:{taskSelected:"Task Selected",tasksSelected:"Tasks Selected",moveTo:"Move to",ungroup:"Ungroup",assignees:"Assignees",dates:"Dates",undoDelete:"Undo Delete",noTagsAvailable:"No tags available"},taskGroup:{groupNamePlaceholder:"Add group name",deleteTaskGroup:"Delete Task Group?"},newTaskOptions:{groupTemplates:"Group Templates",noTaskGroup:"No tasks or group found!",newTaskOptionText:'Create "__searchText__" as a new task',newGroupOptionText:'Create "__searchText__" as a new group',searchPlaceholder:"Search task or group"},taskGroupMoreOptions:{groupOptions:"Group options",addTask:"Add Task"},groupingFilters:{placeholder:"Select Group by",groupBy:"Group by",no_tag:"No Tags",no_assignee:"No Assignees",completedInfo:"__resolvedTasks__ out of __totalTasks__ tasks completed"}},taskDetail:{taskNamePlaceholder:"Add task name",statusPlaceholder:"Add status",assigneePlaceholder:"Add assignee",dueDatePlaceholder:"Add due date",priorityPlaceholder:"Add priority",tagPlaceholder:"Add tag",taskTypeLabel:"Task Type:",totalNumberOfTasks:"Total No. of Tasks",attachmentTitle:"Files/Attachments",groupLabel:"Group:",taskCommentCreationMessage:"Please create task to add comments",totalTimeSpent:"Total Time Spent",snoozeUntil:"Snooze until...",snoozeLaterToday:"Later today",snoozeTomorrow:"Tomorrow",snoozeThisWeekend:"This weekend",snoozeNextWeek:"Next week",snoozePickDateTime:"Pick date & time",snoozedUntilBanner:"Snoozed until _date_",viewParentTask:"View parent task",visibilityPublic:"Public",visibilityRequired:"Visibility is required",subtasksLabel:"Subtasks",addSubtask:"Add subtask",subtaskNameRequired:"Name is required",subtasksComplete:"_completed_/_total_ Complete",createSubtaskLabel:"Create Subtask",selectGroupPlaceholder:"Select group",defaultGroupName:"All Other Tasks",pressEnterToCreate:"Press Enter to Create",semiWeeklyDaysLabel:"Select two days:",semiWeeklyDaysExactlyTwo:"Please select exactly 2 days.",semiWeeklyDaysShort:{mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri"},recurringDescriptions:{daily:"Every weekday (Mon–Fri), skipping US holidays",weekly:"Every week on the same day (adjusted for holidays)",biweekly:"Every two weeks on the same day (adjusted for holidays)",semiWeeklyEmpty:"Select two days for semi-weekly recurrence",semiWeeklySelected:"Twice a week on _days_, skipping holidays",monthly:"Monthly on the _ordinal_ (shifted to next business day if needed)",quarterly:"Quarterly on the _ordinal_ (shifted to next business day if needed)"},frequencyLabels:{biweekly:"Biweekly",semiWeekly:"Semi-Weekly"},descriptionEditorTooltip:{leftAlign:"Left Align",centerAlign:"Center Align",rightAlign:"Right Align",justifyAlign:"Justify Align"}},quickResponses:{pageTitle:"Quick Responses",pageSubtitle:"Manage your comment templates",newTemplate:"+ New Template",templateNamePlaceholder:"Template name",messageContentPlaceholder:"Message content",nameHeader:"NAME",previewHeader:"PREVIEW",actionsHeader:"ACTIONS",emptyState:"No quick responses yet. Create one to get started.",manageTemplates:"Manage templates"}},address:{},formElements:{dayOfMonthSelector:{placeholder:"00",lastDayOfMonth:"Last day of the month",daysOfMonth:{1:"1st",2:"2nd",3:"3rd",4:"4th",5:"5th",6:"6th",7:"7th",8:"8th",9:"9th",10:"10th",11:"11th",12:"12th",13:"13th",14:"14th",15:"15th",16:"16th",17:"17th",18:"18th",19:"19th",20:"20th",21:"21st",22:"22nd",23:"23rd",24:"24th",25:"25th",26:"26th",27:"27th",28:"28th",lastDayOfMonth:"Last day "}}},rewardsPage:{referAndEarn:"Refer & Earn",deleteReferral:"Delete Invitee",referButton:{copyReferralUrl:"Copy Referral URL",urlCopied:"Referral URL Copied"},header:{invitee_email:"Invitees"},inviteList:{status:{invite_processing:"Invite Processing",invite_sent:"Invite Sent",declined:"Declined",resend_invite:"Resend Invite!"},headerElementDisplayName:"Invite list view inner element type",pageTitle:"My Invitations"},rewardsCard:{rewardsSummaryShort:"Receive up to __reward-amount__ for every new company you refer to Zeni",rewardsSummary:{PLAN_1000:"Refer a new company to Zeni, and you'll both earn up to __reward-amount__ each",PLAN_4000:"Earn up to __reward-amount__ for every new company you refer to Zeni"},copyReferralLink:"Copy Referral Link",bonus:"BONUS"},statisticsCard:{title:"Rewards Statistics",earned:"Total Earnings",pending:"Pending Bonus",pendingReferrals:"Pending Referrals",howItWorks:"How it works",knowMore:"Know more"},drawerPage:{item1:{title:"Share the Love",content:"Introduce your friends to Zeni using your referral link."},item2:{title:"Welcome Aboard",content:"Upon sign up, they become part of the Zeni family."},item3:{title:{PLAN_1000:"Win-Win Rewards",PLAN_4000:"Win Rewards"},content:{PLAN_1000:"Both you and your friend earn up to __reward-amount__ each when they come onboard.",PLAN_4000:"You earn up to __reward-amount__ for every new company that comes onboard."}}},inviteEmailTemplate:{fromEmail:"invite@zeni.ai",title:"is inviting you to join Zeni",content:{PLAN_1000:"Congratulations! You have been recommended by __user-name__ from __company-name__ to join Zeni! Unlock instant financial clarity with AI-powered bookkeeping & expert support, saving your business 70+ hours on average per month. Get started today and earn a generous __reward-amount__ bonus upon successful onboarding!",PLAN_4000:"Congratulations! You have been recommended by __user-name__ from __company-name__ to join Zeni! Unlock instant financial clarity with AI-powered bookkeeping & expert support, saving your business 70+ hours on average per month."},templateTitle:"__user-name__ thinks you’ll love Zeni",subTitle:"Discover the Zeni Advantage",listItems:{item1:{key:"AI-Powered Bookkeeping",title:"Updates your books daily with real-time insights"},item2:{key:"Bill Payments",title:"Multi-level approval flows and no ACH fees"},item3:{key:"Employee Reimbursements",title:"Auto categorization and same-day ACH"},item6:{key:"Comprehensive Financial Services",title:"Fractional CFO, tax, and payroll services available"},item7:{key:"Personalized Support from Experts",title:"Regular check-ins to evaluate your business's financial well-being"}},person1:"Fractional CFO",person4:"Dedicated Team",footer:"Ready to elevate your financial experience?"},form:{invitee:"Invitee",addInvitee:"Add Invitee",counterText:"You could earn up to ",sendEmailTo:{label:"Send To",placeholder:"Add emails",helperText:"Add users, you would like to send emails to",uniqueEmailMessage:"Please enter unique email addresses",invalidEmailMessage:"Please enter valid email address"}}},vendors:{common:{reportTitles:{operating_expenses_by_vendor:"OPEX By Vendor",vendors_tab:"Summary",prepaid_expenses:"Prepaid Expenses",fixed_assets:"Fixed Assets",accrued_expenses:"Accrued Expenses",filing_1099:"1099 Filing"},transactionTabTitles:{spendTransactions:"Spend transactions",allTransactions:"All transactions"},searchPlaceholder:"Try searching for vendors"},opExByVendor:{noResultsFound:"Nothing matched your search. Please try again."},filing1099:{header:{w9:"Form W-9"},download:{nec:"NEC",misc:"MISC",int:"INT",all:"Download All",defaultFileName:"1099-__type__"}}},billingSetupPage:{section:{subTitle:"Set up payment methods and manage how Zeni bills your subscription."}},customerOnboardingPage:{stepCounterLabel:"Step {stepNumber} of {totalSteps}",steps:{link_payment_account:{stepSubText:"Link your bank account or credit card with Zeni",sectionTitle:"Go live with your Zeni Dashboard",sectionSubTitle:"To get started, please link your payment method and enter company billing address."},qbo_connection:{stepSubText:"Help Zeni to pull QBO data for the dashboard.",sectionSubTitle:"To set up your dashboard, we must connect with your QuickBooks account."},company_officer:{sectionSubTitle:"Enter proof of identity to complete verification.\n The KYC info is required to comply with the Bank Secrecy Act and Anti-Money Laundering regulations.",stepSubText:"Enter proof of identity to complete verification."},company_details:{sectionSubTitle:"Enter business details to complete verification.\n The KYB info is required to comply with financial regulations and uphold the security of our customers.",stepSubText:"Enter business details to complete verification."},link_card:{footNote:{text2:"Switch to credit card (3% fee)"},footNoteCard:{text1:"Switch to bank account — save 3% on your fee"}}},navBar:{skipText:"Skip, I will do this later",link_payment_account:{title:"Go live with your Zeni Dashboard!",subTitle:"To setup your Zeni dashboard, please complete the following steps"},qbo_connection:{subTitle:"To set up your dashboard, we must connect with your QuickBooks account."},company_officer:{subTitle:"Enter proof of identity to complete verification.\n The KYC info is required to comply with the Bank Secrecy Act and Anti-Money Laundering regulations."},company_details:{subTitle:"Enter business details to complete verification.\n The KYB info is required to comply with financial regulations and uphold the security of our customers."}},sections:{link_payment_account:{subText:"Log in securely to your bank and start managing your payments right away",smsOptIn:"SMS Opt-in",smsOptOut:"SMS Opt-out",bankVerificationTitle:"Follow these steps to verify bank account",plaidSmsVerification:"An example of Plaid sending an SMS with the verification link",highlightedWords:{depositAmount:"$0.01",plaidSms:"Plaid will then send you a",smsWithALink:"SMS with a link",zeniAccountVerify:"ZENI ACCTVERIFY",smsLink:"link in the SMS"},bankVerification1:{step1:"Within a few days, you'll see a $0.01 deposit from Plaid in your bank account.",step2:"Plaid will then send you an SMS with a link (unless opted out) to complete the verification.",step3:'Check your bank statement for a 3-letter code after "#" symbol in "ZENI ACCTVERIFY" transaction.',step4:'Open the link in the SMS from Plaid or click "Start Verification" below to verify.'},bankVerification2:{step1:"Within a few days, you'll see a $0.01 deposit from Plaid in your bank account",step2:'Check your bank statement for a 3-letter code after "#" symbol in "ZENI ACCTVERIFY" transaction.',step3:'Enter this code by clicking "Start Verification" button below to complete your verification.'},verifyButton:"Verify Bank Account",verificationNotice:{title:"We're verifying your account via Plaid",subTitle:"This may take up to 2 business days.",notificationText:"Once verified, we’ll notify you via email so you can complete the onboarding."}},card_payment_method:{subHeader:"Securely add your preferred payment method to activate your account.",addNewCard:"Link a new card",protectedCardNo:"****"},connectLedger:{introBody:"This is the moment AI Accountant activates. In the first 2 hours it will read your books, detect recurring journal entry patterns, flag variance anomalies, and hand AI CFO the financial foundation it needs to answer any question you ask.",whatHappensHeading:"What happens after you connect?",firstPhase:{title:"First 2 hours",body:"Reads your chart of accounts and every transaction to build a complete finance graph of your company — a structured model of vendors, accounts, cash flows, and relationships that powers every automated report."},secondPhase:{title:"First 2 to 4 hours — your AI gets personal",body:"Zeni builds AI models fine-tuned specifically to {tenantName} — your vendors, your chart of accounts, your accounting patterns. Trained on signals from 1,000+ Zeni customers and over $20B in transactions."},unlocksTooltip:{quickbooks:{heading:"What you unlock by connecting Quickbooks",accountantBullets:["Auto-categorizes every transaction into your chart of accounts.","Reconciles bank, card, and ledger lines end-to-end.","Drafts the journal entries that close your books."],cfoBullets:["Grounds every forecast and answer in your live ledger.","Powers cash, burn, and runway in the dashboard."]},netsuite:{accountantBullets:["Consolidates close across every subsidiary in your structure.","Drafts multi-entity GL with intercompany eliminations.","Handles advanced revenue recognition schedules."],cfoBullets:["Rolls cash, burn, and runway up across all subsidiaries.","Forecasts respect entity-level transfer pricing and FX."]}},pageSubtitle:"Required foundation for both AI Agents"},officerVerification:{introBody:"Upload a government-issued ID below. Zeni AI reads the document and autofills your details automatically — no manual typing required.",aiCallout:{body:"will retrieve data from the document once you upload it and autofill the details."},autofillFooter:"Fields marked with the Zeni AI sparkle were autofilled from your uploaded document."},companyVerification:{introTitle:"Verify your business.",introBody:"Upload your EIN document. Zeni AI extracts all business details automatically — no manual typing required.",aiCallout:{body:"will retrieve data from your EIN document and autofill all business details."},autofillFooter:"Fields marked with the Zeni AI sparkle were autofilled from your uploaded document."},unlockFinancialStack:{pageTitle:"Unlock your financial stack",pageSubtitle:"You can complete verification any time from Company Settings.",introTitle:"Verify once. Unlock two financial products.",introBody:"A quick identity and business check — required for financial compliance and takes about 5 minutes. Your AI Agents are already working. When you use Zeni's own products, every transaction flows natively into AI Accountant with zero gaps — your close literally takes care of itself. Here is what you unlock.",products:{chargeCard:{name:"Zeni Charge Card",body:"On every purchase. No annual fees, no foreign transaction fees, no complexity. Credit based on your financial health — no personal guarantee."},businessChecking:{value:"2.5% APY",body:"FDIC insured up to $3M through Thread Bank sweep network. Interest compounded daily. No minimums, unlimited accounts."},treasury:{value:"Up to 4% APY",body:"Put idle cash to work automatically. Smart allocation across instruments to maximize yield on your operating reserves."},billPay:{body:"Free domestic transfers, free USD international wires, $0 ACH fees. AI auto-fills invoice details and handles all journal entries automatically."},reimbursements:{body:"Unlimited reimbursements with same-day ACH payouts. Supports 160 currencies, multi-level approval workflows, and AI categorization built in."},debitCard:{name:"Zeni Debit Card",body:"Instant cashback on every spend with no minimums. Full AI spend management, real-time controls per employee or department, and zero foreign transaction fees."}},aiActiveCallout:{heading:"AI Accountant and AI CFO are already active.",body:"Zeni AI will read your uploaded documents and autofill all details automatically.",metaPrimary:"Most verifications",metaSecondary:"complete in under 5 mins"},kycStep:{title:"Step 1 — Verify your identity (KYC)",body:"Upload a government-issued ID. Zeni AI reads the document and autofills name, date of birth, and address automatically. Required by the Bank Secrecy Act and Anti-Money Laundering regulations."},kybStep:{title:"Step 2 — Verify your business (KYB)",body:"Upload your EIN document. Zeni AI extracts company legal name, incorporation type, registered address, and Tax ID automatically. Required for financial services compliance.",meta:"Takes about 3 mins"},startVerificationCta:"Start verification"},chrome:{skipLabel:"Skip for now",skipToDashboardDisabledTooltip:"Connect QuickBooks to activate your dashboard",skipToDashboardPendingVerificationTooltip:"Verify your bank account to activate your dashboard",skipToDashboardLoginRequiredTooltip:"Re-login to your bank account to activate your dashboard"},activateSubscription:{pageTitle:"Activate your subscription",pageSubtitle:"Required to activate your Zeni subscription.",ctaLabel:"Continue to connect your ledger",ctaLabelWithoutLedger:"Continue to verify your business"},connectLedgerPage:{ctaLabel:"Continue to activation",pageSubtitle:"Required foundation for both AI Agents"},officerVerifyPage:{pageSubtitle:"Documents are encrypted and stored with SOC 2 Type II compliance.",ctaLabel:"Continue to business verification"},companyVerifyPage:{pageTitle:"Verify your business",pageSubtitle:"Documents are encrypted and stored with SOC 2 Type II compliance.",ctaLabel:"Submit and go to dashboard"},aiAgentsActivating:{demoTenantName:"Pied Piper"},connectDataSources:{pageTitle:"Connect your Data Sources",pageSubtitle:"Connect what you have access to — others on your team can add the rest later.",ctaLabel:"Continue to verification"},setupBilling:{introTitle:"To get started, please link your payment method and enter company billing address.",introBody:"Your AI Agents are already reading your books. Set up billing to keep them running after your trial ends.",includedCard:{heading:"What's always included:",accountantBody:"Runs your books every day, automatically.",cfoBody:"Answers every financial question, always available.",connectionsLabel:"Unlimited data source connections",connectionsBody:"QBO, banks, cards, AR, AP, revenue, payroll, email and more.",financeTeamLabel:"Your dedicated finance team",financeTeamBody:"Controller, Team Lead and Accountant available Monday–Friday."},paymentMethodHeading:"Subscription Payment Method",paymentMethodSubheading:"ACH bank debit — no additional fees"},qbo_connection:{subTitle:"To set up your dashboard, we must connect with your QuickBooks account.",sucessText:"Congratulations! You have successfully established a connection with QuickBooks.",subtitleText:"Accounting & bookkeeping — journal entries, invoices, bills, expenses",requiredText:"Please connect Quickbooks to sync your financial data",errorText:"Unable to connect quickbooks. Please try again."},company_officer:{subTitle:"Enter proof of identity to complete verification."},company_details:{subTitle:"Enter business details to complete verification."}},thankYou:{title:"Thank you for providing the details.",subTitle:"We are currently verifying and working on your Dashboard."},footer:{buttons:{submitText:'By clicking "__action__", I certify that the information provided here is complete and correct.'}},productSuite:{navTitleCFO:"Thank you, we've got your details",navTitle:"Thank you for completing your onboarding steps",updatePaymentDetails:"Update Payment Details",messageBox:{default:"We're now setting up your Quickbooks account and will notify you via email once it's ready.",onlyTax:"Our Tax team will email you with the next steps within 2 business days.",onlyCFO:"Our CFO team will email you with the next steps before your service start date.",onlyPayroll:"Our Payroll team will email you with the next steps within 2 business days.",taxAndPayroll:"Our Tax & Payroll teams will email you with the next steps within 2 business days.",withTax:"Our Tax team will email you within 2 business days.",withPayroll:"Our Payroll team will email you within 2 business days.",withCFO:"Our CFO team will reach out to you before your service start date.",withTaxAndPayroll:"Our Tax & Payroll teams will email you within 2 business days."},sectionTitleCFO:"Explore more solutions tailored for your business",sectionTitle:"Meanwhile, learn more about Zeni products",sectionFooter:"Discover Zeni's product suite",productCard:{cards:[{cardTitle:"Zeni Reimbursements",sectionTitle:"Pay your employees back faster",sectionSubTitle:"Reimburse your employees at lightning speed with AI-powered expense processing at no additional cost."},{cardTitle:"Zeni Bill Payments",sectionTitle:"Pay your bills in seconds",sectionSubTitle:"Speed up domestic and international vendor payments with AI-powered invoice processing at no additional cost."},{cardTitle:"Zeni AI Bookkeeping",sectionTitle:"Simplify your bookkeeping",sectionSubTitle:"Give your business all the financial insights it needs to succeed on a single dashboard."}]}},aiFinanceTeamReady:{title:{prefix:"Your ",highlight:"AI finance",suffix:" team is ready, {firstName}."},agentChip:"Two AI Agents are joining {companyName}'s finance org today.",description:"Connect them to your financial data and they start working immediately — categorizing, reconciling, journalizing, and answering every question your CFO has.",accountantCard:{subtitle:"Runs the books every day. Handles every accounting task automatically.",tasks:{bankReconciliation:{title:"Bank reconciliation",meta:"Chase ••••8992 — 847 transactions matched"},autoCategorization:{title:"Auto categorization",meta:"1,204 transactions — 94% categorized"},journalEntryEngine:{title:"Journal entry engine",meta:"12 recurring JEs detected and scheduled"},fluxAnalysis:{title:"Flux analysis",meta:"AWS +29% vs last month — flagged"},apArAging:{title:"AP and AR aging",meta:"3 invoices 30+ days overdue — surfaced"}},footer:"All of this happens automatically, every day."},cfoCard:{subtitle:"Answers every financial question. Always available, always precise.",chat:{netBurnQuestion:"What is our net burn this month?",netBurnAnswer:{heading:"Net burn is $487K this month",body:"Payroll 61%, software and infrastructure 22%. Up $34K vs last month — new engineering hire Mar 12 and an $18K AWS overage."},revenueQuestion:"Are we on track for Q2 revenue?",revenueAnswer:{heading:"Yes, on track at 94% confidence",body:"$312K closed, $180K in late stage pipeline due this month. Risk: 3 March renewal invoices totalling $42K still outstanding."}},suggestions:{runway:"What's our current runway?",burnByDept:"Show me burn by department",vendorReview:"Which vendors should I review?",closeStatus:"Close status for November"}},trustRow:{soc2:"SOC 2 Type II",bankGrade:"Bank-grade encryption",trusted:"Trusted by 1,500+ finance teams"},cta:"Connect your Finance Team"}},uncategorizedAccountsMapping:{accountingSettings:{heading:"Account Settings",accountingClasses:{title:"Accounting Classes",subTitle:"Track and categorize transactions by class. Turning this off hides class fields and columns across the workspace.",enableConfirmation:{title:"Enable Accounting Classes?",description:"Class fields will appear on transactions, bills, reimbursements, and reports so you can track spending by class."},disableConfirmation:{title:"Disable Accounting Classes?",description:"Class fields and columns will be hidden across the workspace. Existing class assignments on transactions are preserved but won't be visible until you re-enable this setting."}},projects:{subTitle:"Track and categorize transactions by project. Turning this off hides project fields and columns across the workspace."}},uncategorizedSection:{heading:"Uncategorized Accounts",title:"Income & Expense Accounts",subTitle:"Select the accounts used to temporarily track transactions that require clarification.",incomeLabel:"Income Account:",expenseLabel:"Expense Account:",incomeAccount:"Income Account",expenseAccount:"Expense Account"},billsSection:{subTitle:"Select the account used to track charges while using Zeni Bill Pay",bankChargesAndFeesLabel:"Bank Charges & Fees Account:",billPayExpenseAccount:"Bill Pay Expense Account"},reimbursementsSection:{subTitle:"Select the account used to track charges while using Zeni Reimbursements",mileageLabel:"Mileage Account:",reimbursementsExpenseAccount:"Mileage Expense Account"},vendorSection:{prepaidExpenseSubTitle:"Select the accounts used to track prepaid expenses",fixedAssetsSubTitle:"Select the accounts used to track fixed asset expenses",accruedExpensesSubTitle:"Select the accounts used to track accrued expenses",prepaidExpenselabel:"Prepaid Expense Accounts:",fixedAssetslabel:"Fixed Asset Accounts:",accruedExpenseslabel:"Accrued Expense Accounts:",prepaidExpenseAccount:"Prepaid Expense Account",fixedAssetsAccount:"Fixed Asset Account",accruedExpensesAccount:"Accrued Expense Account"},common:{label:{bankAccountLabel:"Bank Accounts:",expenseCategoriesLabel:"Expense Categories:"}},filing1099Section:{subHeading:"Form 1099 is a tax form filed by businesses to report annual payments of $600 or more to vendors or independent contractors.",bankAccountTitle:"Bank Accounts",bankAccountSubTitle:"Select the bank accounts used to pay vendors",expenseCategoriesSubTitle:"Select the expense categories to filter eligible payment types",infoTextBankAccount:"To fetch all payments made to vendors",infoTextGlAccount:"To filter the eligible payments",allExpenseTypes:"All Expense Types",all1099Types:"All 1099 Types",allBoxes:"All Boxes"},placeholder:{incomePlaceholder:"Select Income Account",expensePlaceholder:"Select Expense Account",accountPlaceholders:"Select accounts",categoryPlaceholder:"Select Category",boxPlaceholder:"Select box"},tooltip:'The "__account__" recommendation is __based__',noOptions:{establishQBO:"Kindly establish the accounts in QuickBooks.",noTypesFound:"No type found!",noBoxTypesFound:"No box type found!"},capitalizationSection:{heading:"Capitalization Thresholds",headingSubtitle:"Thresholds are auto-calculated nightly. Set a user override to use your own value instead.",onboardingPopup:{titles:{prepaid:"Prepaid Expense Thresholds Identified",fixed_asset:"Fixed Asset Thresholds Identified"},descriptions:{prepaid:"Set a capitalization threshold for __accountName__. Transactions below the threshold will be expensed directly instead of being capitalized.",fixed_asset:"Set a capitalization threshold for __accountName__. Transactions below the threshold will be expensed rather than capitalized as assets."},maybeLaterButton:"Maybe Later",thresholdPlaceholder:"Enter threshold amount",helpText:"You can always update this later in Settings > Accounting."},globalControls:{title:"Global Threshold Controls",threshold:{description:"Overrides all learned thresholds when set. Clear to use per-account learned values."},maxCeiling:{label:"Max Ceiling",description:"Caps learned thresholds — any account whose learned value exceeds this is clamped. Clear to use system default."}},accountsTable:{subtitle:"Capitalizable Accounts",overrideBanner:"All accounts using user-set threshold: __value__",headers:{threshold:"Threshold",matchStrength:"Match Strength",effectiveThreshold:"Effective Threshold",learnedThreshold:"Learned Threshold",userOverride:"User Override"},classification:{prepaid:"Prepaid"},matchPattern:{LABEL:"Strong",TYPE_ONLY:"Weak"},sourceBadge:{override:"Override",learned:"Learned"},lastUpdated:"Last updated: __date__",empty:{noData:"Accounts will appear here after the nightly analysis runs.",noLearned:"No capitalizable accounts with identified thresholds yet.",noAccounts:"No capitalizable accounts identified yet."}},defaultCurrencySymbol:"$"}},jeSchedules:{scheduleList:{defaultDownloadFileName:"__tenant__ Schedules.xlsx",tableHeaders:{balanceAsOfToday:"Balance as of today",endMonth:"End Month",expenseCategory:"Expense Category",assetId:"Asset ID"},noData:"No Schedules Found",heading:{expenseSchedules:"Expense Schedules",searchPlaceholder:"Search Schedules"},getSchedules:{selectSchedule:"Select Schedule:",getSchedules:"Get Schedules"},scheduleStatus:{draft:"Draft"}},scheduleDetails:{jeSchedule:"JE Schedule",showTransactionTooltip:"Show Transaction",scheduleTransactionsHeader:{vendorName:"Vendor Name",expenseCategory:"Expense Category:"},sequenceSchedule:{header:"Schedule Sequence",notCreated:"Once details are entered, the schedule sequence will be displayed here.",sequenceHeaders:{runningBalance:"Running Balance (as of today)",jeLink:""},accruedSequenceHeader:{jePostingDate:"Accrual Posting Date",runningBalance:"Accrual Balance",jeLink:""},sequenceData:{amountPlaceholder:"0"},postingStatus:{pending:"Pending",unknown:"Unknown",posted:"Posted",canceled:"Canceled",recorded:"Recorded"}},scheduleDetailsSection:{header:"Schedule Details",startMonth:"Start Month:",startMonthPlaceholder:"Select start month",months:"Months:",monthsPlaceholder:"Select month",accumulatedDepreciationCategory:"Accumulated Depreciation Category:",accumulatedDepreciationCategoryPlaceholder:"Select accumulated depreciation category",assetId:"Asset ID:",assetIdPlaceholder:"Add asset ID",postingDate:"Posting Date:",postingDatePlaceholder:"Select posting date",confirmCancelAccrualDescription:"Cancel all the pending accrual schedules. This action cannot be undone.",confirmDeletionDescription:"Are you sure you want to delete this schedule? This action cannot be undone.",confirmDeletionDescriptionNote:"Note - Deleting the schedule will not delete any associated journal entries in QBO.",markAsCompleted:"Mark As Completed",createSchedule:"Create Schedule",scheduleMarkedAsCompleted:"Schedule has been marked as completed",cancelPendingAccrual:"Cancel Pending Accruals",cancelAccrual:"Cancel Accrual",viewRecordedJE:"View Recorded JE",viewPostedJE:"View Posted JE",deleteSchedule:"Delete Schedule"},linkJE:{fetchJE:"Fetch JE",jeLinkURLPlaceholder:"Add Link",jeLink:"JE Link:",linkJE:"Link JE",linkBillExpense:"Link Bill or Expense",viewBillExpense:"View Bill or Expense",jePostingDate:"JE Posting Date:",jeDetails:"JE details will be presented here once you enter the JE link and complete the fetch operation.",transactionFetchError:"There was an error fetching the transaction.",zeniRecommendation:"Based on Zeni GPT recommendation, journal entry posting has been automatically retrieved for the schedule."}},scheduleAccruedDetails:{new:{header:"New Accrued Expenses",new:"new"},labels:{estimatedMonthlyAmount:"Estimated Monthly Amount:",accruedExpenseCategory:"Accrued Expense Category:",startingBalance:"Starting Balance:"},placeholders:{selectVendor:"Search and select vendor",addBalance:"Add Balance",selectAccruedExpenseCat:"Select accrued expense category"}},linkBillExpenseDetails:{tableHeaders:{transactionAttachment:""},title:"Link Bill Or Expense",noBillFound:"No Bill or Expense found for the schedule",linkBill:"Link Bill",additionalBills:"Additional Bills For The Vendor",zeniGPTText:"Based on Zeni GPT recommendation, the bill or expense posting has been automatically retrieved for the schedule."}},vendorReview:{globalReview:{newGlobalMerchant:{tip:"Protip: Verify online domain availability of the vendor name.",recommendationInfoText:"Enter text to fetch recommendation"},globalMerchantList:{navBarTitle:"Global Vendors Review",searchPlaceholder:"Search tenant",confirmationPopup:{title:'Are you sure you want to add "_merchant_name_" in Global vendor list?',description:"Confirm will add the vendor to the global list. This change can’t be reverted back.",merchantNameFallback:"this merchant"},selectPlaceholder:"Select Global Vendor",noDataText:"No global vendors to display yet!",noMatchedDataText:"No global vendors matched your search."}},firstReview:{searchPlaceholder:"Search vendor",viewRecipts:"View receipts",vendorDropdown:{recommendedCustomer:"Recommended Customer",allCustomers:"AllCustomers",fromOldName:'Change name from "__old_name__"',toNewName:' to "__new_name__"'},invoice:"invoice",popupMessages:{netsuiteLinkPopupTitle:'A vendor by name "_vendor_name_" already exists in NetSuite',netsuiteLinkPopupMsgHeader:"Please login to NetSuite and follow the steps given below to merge the vendor",netsuiteLinkPopupSubTitle:"Keep in mind that merging vendor profiles is permanent. You can't undo this later.",netsuiteLinkPopupDescription:"Please note that the related transactions will be migrated within the next 24 hours after the change.",qboLinkPopupMsgHeader:"Please login to QBO and follow the steps given below to merge the vendor",qboLinkPopupSubTitle:"Keep in mind that merging vendor profiles is permanent. You can't undo this later.",qboLinkPopupTitle:'A vendor by name "_vendor_name_" already exists in QBO',zeniUpdatedRecommendationPopupTitle:'Vendor recommendation for "_vendor_name_" is updated from "_old_recommendation_" to "_new_recommendation_".',zeniUpdatedRecommendationPopupMsg:"Zeni AI has updated the recommendation for this vendor name. Click 'Continue' to use updated vendor name or Click 'cancel' & refresh the page to view the updated vendor recommendation.",zeniNewRecommendationPopupTitle:'Vendor recommendation for "_vendor_name_" is updated to "_new_recommendation_".',zeniNewRecommendationPopupMsg:"Zeni AI has provided a recommendation for this vendor name. Click 'Continue' to proceed with the selected vendor name or 'Cancel' to view the newly added recommendation.",zeniNewRecommendationNotAvailablePopupTitle:'Vendor recommendation for "_vendor_name_" is no longer available.',zeniNewRecommendationNotAvailablePopupMsg:"Zeni AI has updated the recommendation for this vendor. Please try again.\n ",redirectToQBO:"Redirect to QBO",mergeInQBOSteppedContent:{step1:{navigateTo:"Navigate to ",andSelectThe:" and Select the ",tab:" tab."},step2:{lineText:"Find and open the vendor profile you want to keep. Then Select ",andCopy:" and copy",display:"Display"},step3:{goBackTo:"Go back to the ",lineText:" tab. Find and open the vendor you don't want to keep. Then select "},step4:{lineText:"Change the display name to make it identical to the vendor you're merging it with."},step5:{andThen:" and then "}},mergeInNetSuiteSteppedContent:{step1:{goTo:"Go to ",lists:"Lists",then:" then ",relationships:"Relationships",then2:" then "},step2:{click:"Click ",next:" next to the ",sourceInfo:" that will be the source "},step3:{onThe:"On the ",page:" page, under ",click:", click "},step4:{onThe:"On the ",mergeVendor:"Merge Vendor",endText:" page, select the target vendor into which you want to merge this source vendor record. "},step5:{text:" Both the source and target vendor records must have the same primary subsidiary to merge the records. "},step6:{click:"Click ",text:" . At the prompt to confirm the action, click "},step7:{onThe:"On the ",duplicateResolution:"Duplicate Resolution Status",text:" page, the merge is queued for process. "},step8:{click:"Click ",processText:" to process the merge or the ",haltText:" link to halt the merge process. "},step9:{the:"The ",text:" column provides the results of the merge. "},step10:{text:"The un-categorized and mis-categorized transactions for the deleted vendor will be migrated within 24 hours after the vendor merge is completed. "}}},rowMoreActions:{markAsEmployee:"Mark as Employee",markAsLocalContractor:"Mark as Local Contractor"},tooltip:{mergeInQBOText:"Updated vendor name already exists in QBO and needs to be merged.",mergeInNetSuiteText:"Updated vendor name already exists in NetSuite and needs to be merged."},overlay:{title:'Add Website for "_vendor_name_"'}}},commentsAndNotifications:{notifications:{texts:{markAsRead:"Mark as Read",markAllAsRead:"Mark all as read"},actionStrings:{comments:{mention:"mentioned you in comment",reply:"replied to your comment",reaction:"reacted to your message",toMessage:"to your message",assign:"assigned you to a task",unassign:"unassigned you from a task",newThread:"created a new thread",resolveComment:"resolved a comment",unResolveComment:"reopened a comment",newActivity:"performed new activity on your message",newRepliesAdded:"replied to a comment",newCommentAdded:"added a comment"},notifications:{create:"created this task.",assign:"assigned this task to you.",overdue:"Due date was __date__",due:"Currently __task_status__ and is due tomorrow.",dueTomorrow:"This task is due tomorrow.",statusUpdate:"Status updated from",activities:"made updates to this task.",delete:"deleted this task.",archive:"archived this task.",newActivity:"performed new activity on this task."}},strings:{notificationSelected:"Notification selected",notificationsSelected:"Notifications selected",newMessage:"You have received a new message"},message:{noNotificationsMessage:"No notifications at this time. You're all caught up."}}},featurePreview:{scheduleDemo:"Schedule a Demo",popups:{home:{title:"Unleash the Power of AI Bookkeeping",text:"Update your books daily, access real-time insights, and receive personalized support from a dedicated team of experts — all on a single platform"},ai_automation:{title:"Unleash the Power of AI Bookkeeping",text:"Update your books daily, access real-time insights, and receive personalized support from a dedicated team of experts — all on a single platform"},reports:{title:"Investor Ready Reports",text:"Generate beautiful PDF reports to forward to investors, bankers, or to build into your board deck. Alternatively, download or share view-only access to your dashboard."},forecast:{title:"Forecasting and Planning",text:"Don't settle for Excel. Accurately forecast your bookings, revenues, workforce, expenses and cash flows by comparing Actuals vs Budgets from a central dashboard."},bills:{title:"The fastest way to pay vendors",text:"Pay domestic and international vendors quickly and automate your accounts payable process end-to-end directly from the dashboard – at no additional cost. "},reimbursements:{title:"Reimburse employees at lightning speed",text:"Embrace the efficiency and future of AI-driven expense reimbursements while boosting employee satisfaction."},vendors:{title:"Stop wondering how you’re spending money",text:"Daily, crystal-clear insights into your Operating Expenses give you an instant view into your cash burn and expenses, including Gross Burn and Net Burn trends."},people:{title:"",text:""},rewards:{title:"",text:""},cards:{title:"",text:""},checking:{title:"Business banking turning transactions into triumphs",text:"Modern checking accounts with a guaranteed yield earned from your first dollar and no hidden fees. Leverage AI to auto categorize your transactions effortlessly."},treasury:{title:"",text:""},accounting:{title:"",text:""},approval_rules:{title:"",text:""},bank_connections:{title:"",text:""},business_verification:{title:"",text:""},company_details:{title:"",text:""},integrations:{title:"",text:""},my_profile:{title:"",text:""},my_bank_connections:{title:"",text:""},notifications:{title:"",text:""},billing:{title:"",text:""},performance:{title:"",text:""},ai_cfo:{title:"",text:""}}},collaboration:{commentOnField:"comment on field",threads:{placeholder:{replyAComment:"Reply to comment...",addANewComment:"Add a new comment..."},tooltip:{resolveComment:"Resolve comment",unResolveComment:"Re-open comment"},badge:{rowNotInReport:"Row not in this report",reportLevel:"Report level"}}},expenseAutomation:{common:{numbers:{maximumCount:999}},overview:{confidenceScoreDescription:"Higher score means you're close to finish.",auditScoreDescription:"Streamline your month-end close with Zeni AI.",monthEndCloseProgress:"Month-end close progress",targetClose:"Target Close:",daysToClose:"Days to Close:",financialClose:"Financial Close",reviewReport:"Review month-end close report.",insightsCtaMessage:"Improve your confidence score to _minimum_score_ or above to unlock month-end insights",createInsights:"Create _month_name_ Insights",monthEndCloseTrend:"Performance Trend",monthEndCloseTrendNoData:"No data yet!",monthEndCloseTrendNoDataDescription:"Initiate your first month-end close to track performance.",confidenceScoreTooltip:"Indicates overall progress of all month-end close tasks. Higher score means you're closer to finishing the close.",byHumans:"by Humans",progress:"Progress",headerByAI:"By AI",statistics:{accountsAutoReconciled:"Accounts auto-reconciled",transactionsAutoCategorized:"Transactions auto-categorized",humanEfficiency:"Tasks completed by AI Agents",fasterReviews:"Faster reviews",vendorsWithFluctuations:"Vendors with fluctuations"}},confirmationDescription:"Are you sure you want to exit without saving?",dashboardCard:{month_end_insights:"Month end insights"},transactions:{header:{memoReceipt:"Memo | Receipt",receipt:"Receipt",toFrom:"To/From"},searchPlaceholder:"Search by vendor, amount, date, or memo",tabs:{autoCategorized:"Auto-categorized"},transactionGroupFilter:{transactionGroupLabel:"Transaction Group"},subTitles:{review:{item1:{pre:"",bold:"AI Bookkeeper",post:"has recommendations for Payees, Categories, Classes."},item2:{pre:"",bold:"",prefixIconName:"",post:"Review them, select, save your changes, and AI Bookkeeper will learn from your updates."}},autoCategorized:{item1:{pre:"",post:"have auto-categorized the below #number transactions for this month."},item2:{pre:"",bold:"",prefixIconName:"",post:"Feel free to review and make the necessary changes. AI Agents will learn from your updates."}}},allDoneText:{title:"All set!",subTitle:"Task cleared, ready to soar!"},emptyStates:{noSearchResults:{title:"No matching transactions",subTitle:"Try adjusting your search or filters."}},filters:{categoryLabels:{paymentAccountName:"Payment Account Name",paymentAccountType:"Payment Account Type"},amountOperators:{isEqual:"Is equal",inBetween:"In between",placeholder:"Select operator"},filterOptions:{transactionAmountOptions:[{label:"< 100",value:"-10000000<->100"},{label:"100 to 500",value:"100<->500"},{label:"500 to 1K",value:"500<->1000"},{label:"1K to 5K",value:"1000<->5000"},{label:"5K to 10K",value:"5000<->10000"},{label:"10K to 20K",value:"10000<->20000"},{label:"> 20K",value:"20000<->10000000"}],transactionTypeOptions:[{label:"Auto-categorized",value:"autoCategorized"},{label:"Review",value:"review"},{label:"Categorized",value:"categorized"},{label:"Uncategorized",value:"uncategorized"}]},selectPaymentAccountNamePlaceholder:"Select Payment Account Name",searchForPayeePlaceholder:"Search for Payee"},addProject:"Add Project",transactionActivityLog:{noLogsFound:"No Activity logs found",transactionIngested:"Transaction ingested.",aiBookkeeperAdded:"AI Bookkeeper added the",userUpdatedDetails:"Updated the transaction details.",linePrefix:"Line #"},transferDrawer:{debitAccountLabel:"Debit Account:",creditAccountLabel:"Credit Account:",keepExpense:"Keep {transactionType}",convert:"Convert",convertToTransfer:"Convert {transactionType} to Transfer",convertToCreditCard:"Convert {transactionType} to Credit Card Payment",transferDrawerSubtitle:"The current {transactionType} will be deleted and replaced with a transfer entry",creditCardPaymentDrawerSubtitle:"The current {transactionType} will be deleted and replaced with a credit card payment entry",groupHeadingAllAccounts:"All Accounts",noEligibleAccountsDropdownLine2:"Connect an account or keep this as an expense."},transactionTypeDropdown:{multilineNotEligibleTooltip:"Multiline transactions are not eligible for transfer entry."}},jeSchedules:{subTitles:{item1:{pre:"",bold:"",prefixIconName:"",post:"Please review the following journal entries below and correct or post them."},item2:{pre:"",post:"will learn from your update, automate it, and boost accuracy and efficiency to simplify every step."}},allDoneText:{title:"High five!",subTitle:"All schedules reviewed!"},emptyState:{pendingReview:{title:"High five!",subTitle:"All schedules reviewed!"},ongoing:{title:"High five!",subTitle:"No ongoing schedules"},completed:{title:"High five!",subTitle:"No completed schedules"}},scheduleHeaders:{period:"Amortization Period",balance:"Running balance (as of today)",months:"Remaining Months",amountForMonth:"Amount(for this month)",entry:"Entry",monthlyAmount:"Monthly Amount",reversesOn:"Reverses on",reversesOnMatch:"Reverses on match",scheduledAndPosted:"Scheduled + Posted",startMonth:"Start Month",amount:"Amount",memo:"Memo"},scheduleCot:{recommendedMethod:"Recommended method",monthLifeSuffix:"-mo life",methodByType:{prepaid_expenses:"Straight-line amortization",fixed_assets:"Straight-line depreciation",accrued_expenses:"Accrual",deferred_revenue:"Straight-line recognition"},credit:"Credit",debit:"Debit"},oneTimeAccrualType:"Accrual",lifecycleLabel:{prepaid_expenses:"Prepaid Schedule",fixed_assets:"Fixed Asset Schedule",accrued_expenses:"Accrued Schedule",deferred_revenue:"Deferred Revenue Schedule"},tooltipText:{missingVendor:'The vendor "_deleted_vendor_" was deleted from the Journal Entry. Please add the correct vendor and try posting again.',missingCategory:'The category "_deleted_category_" was deleted from the Journal Entry. Please add the correct category and try posting again.',missingDepCategory:'The category "_deleted_dep_category_" was deleted from the Journal Entry. Please add the correct accumulated depreciation category and try posting again.'},resolveErrors:{heading:"This entry could not be posted",vendor_deleted:'Vendor "_deleted_field_" was deleted. Update it in Review.',debit_category_deleted:'Category "_deleted_field_" was deleted. Update it in Review.',credit_category_deleted:'Accumulated depreciation category "_deleted_field_" was deleted. Update it in Review.',qbo_error:"QuickBooks rejected this entry. Try posting again.",qbo_authorization_error:"The QuickBooks connection expired. Reconnect it, then post again.",qbo_invalid_company_status_error:"The QuickBooks subscription is inactive. Resolve it, then post again.",qbo_book_close_date_error:"The books are closed for this date. Reopen the period or move the date."},addDepCategory:"Add Depreciation Category",aiBotEmail:"ai@zeni.ai",botEmail:"bot@zeni.ai",aiAccountant:"AI Accountant ",zeniGPTText:"recommends a new JE schedule. Please review and set it up!",kpiStrip:{aiAccountant:"AI Accountant Created",manual:"Manual Created",schedules:"schedules",total:"Total this close",typeLabels:{fixed_assets:"Fixed Asset",prepaid_expenses:"Prepaid",accrued_expenses:"Accrual",deferred_revenue:"Revenue Accrual"}},typeFilter:{prepaid_expenses:"Prepaid",fixed_assets:"Fixed Asset",accrued_expenses:"Accrual",deferred_revenue:"Deferred Revenue",all:"All"},groups:{createdInsight:"Auto-posted or manually recorded",pendingReviewInsight:"Input requested before posting"},tabs:{schedules:"Review Schedules",actualMatching:"Actual Matching",existingSchedules:"Existing Schedules"},actualMatching:{matchNew:"Match new",undoReversal:"Undo reversal",continueMatch:"Continue match",openBill:"Open bill",openCharge:"Open charge",openTransaction:"Open {type}",kpi:{actualsReceived:"Actuals received ({month})",ofExpected:"of {count} expected",vendorsStillPending:"{count} vendors still pending",vendorStillPending:"1 vendor still pending",autoReversed:"Auto-reversed",cleared:"{amount} cleared",pendingReview:"Pending review",estMinutesToClear:"Est. {minutes} min to clear",variance:"Variance (actual vs accrued)",varianceFooter:"avg {percent} per match · {amount} net"},groups:{reversed:"REVERSED"},groupSubtitles:{reversed:"AI Accountant and Human User · {amount}",pendingReview:"Variance above threshold or ambiguous match · {amount}"},columns:{received:"Received",vendor:"Vendor",type:"Type",service:"Service",reverses:"Reverses",matchTier:"Match tier",reversedBy:"Reversed by",accrued:"Accrued",actual:"Actual",variance:"Variance"},reversedBy:{aiAccountant:"AI Accountant",humanUser:"Human User"},matchTier:{exact:"Exact match",fuzzy:"Fuzzy",aiAccountant:"AI Accountant",manual:"Manual"},reversesCount:"{count} accruals",groupedOpenAccrual:"Open accrual",groupedMenuAria:"Accruals in this match",lifecycle:{pendingReview:"PENDING REVIEW",autoReversed:"AUTO-REVERSED"},emptyState:{title:"No matches this close",subTitle:"Reversed and pending-review accruals for this close will show up here."},matchModal:{title:"Match transactions to accruals",subtitle:"Select one bill or expense line and one or more posted accruals to reverse.",leftTitle:"Transactions",rightTitle:"Accruals",selectedLabel:"selected",leftSearchPlaceholder:"Search bills, expenses, and checks",rightSearchPlaceholder:"Search posted accruals",emptyLeft:"No transactions found",emptyRight:"No posted accruals found",confirm:"Confirm Match",maxAccruals:"You can match up to 50 accruals at once.",conflict:"Could not reverse this accrual",vendorLock:"Only accruals for the selected vendor can be matched.",selectLineHint:"Select a line on this bill",previewEmpty:"Pick at least one transaction and one accrual to preview the match.",accrualJeTitle:"Accrual journal entry being reversed",reversalJeTitle:"Reversal journal entry",reversalJeNote:"One per accrual · mirrors its amount",transactionMatchedTitle:"Transaction matched",columnDate:"Date",columnAccount:"Account",columnDebit:"Debit",columnCredit:"Credit",lastDayOfMonth:"last day",reversesLabel:"_REV Reverses",vsAccrued:"vs. accrued {amount} · variance posts to {account}",accruedExpensesFallback:"Accrued Expenses"},matchDetail:{service:"service",accrued:"Accrued",actual:"Actual",variance:"Variance",accrualJes:"Accrual journal entries",leftovers:"Not reversed",reversalFailed:"Reversal failed",undoFailed:"Undo failed",loadErrorTitle:"Couldn't load this match",loadErrorSubTitle:"Refresh to try again.",reversalJe:"Reversal journal entry",matchedBill:"Matched bill",matchedCharge:"Matched charge",matchedTransaction:"Matched {type}",statusAutoReversed:"Auto-reversed",statusPendingReview:"Pending review",statusManuallyReversed:"Manually reversed"}},newSchedule:{title:"New Schedule",oneTimeAccrualTitle:"New one-time accrual",oneTimeAccrualSubtitle:"Posts directly to the books",recurringTitle:"New recurring schedule",recurringSubtitle:"Posts monthly entries starting {month}",reviewSchedule:"Review schedule",scheduleDetails:{title:"Schedule Details",oneTimeAccrual:"One time accrual",oneTimeAccrualDescription:"Single JE this month",recurringSchedule:"Recurring Schedule"},scheduleType:{title:"Schedule type",subtitle:"What is this schedule spreading?",fixedAssetDescription:"Depreciate a purchase",prepaid:"Prepaid",prepaidDescription:"Amortize a prepayment",accrual:"Accrual",accrualDescription:"Recurring estimate",deferredRevenueDescription:"Recognize over time",deferredRevenue:"Deferred Revenue",fixedAsset:"Fixed Asset"},baseTransaction:{title:"Base Transaction",subtitleFixedAsset:"The purchase being capitalized",subtitlePrepaid:"The prepayment being spread",searchPlaceholder:"Search by vendor, amount, date and memo",noResults:"Nothing matched your search... Try again.",aiAccountantInsight:"AI Accountant spreads {amount} over {months} months ≈ {amountPerMonth}/mo."},fields:{numberOfMonths:"No. of Month",amountPerMonth:"Amount Per Month",sourceOrTrigger:"Source / trigger",addVendor:"Add vendor",selectStartMonth:"Select start month",selectPostingDate:"Select posting date",selectMonths:"Select months",addAccumulatedDepreciationCategory:"Add accumulated depreciation category",addAssetId:"Add asset ID",addSourceOrTrigger:"Add Source / trigger",selectServiceMonth:"Select service month",accrualCategory:"Accrual Category",addAccrualCategory:"Add accrual category",memoPrefix:"Accrue",estimatedMonthlyAmount:"Estimated Monthly Amount",startingBalance:"Starting Balance",addStartingBalance:"Add balance",accumulatedDepreciationCategory:"Accumulated Depreciation Category",serviceMonth:"Service month",postingDate:"Posting Date",addCategory:"Add category",startMonth:"Start Month",addAmount:"Add amount",category:"Category",addClass:"Add class",assetId:"Asset ID",addMemo:"Add memo",vendor:"Vendor",amount:"Amount",class:"Class",memo:"Memo"},oneTimeAccrual:{postAccrual:"Post accrual",reverseNextMonth:"Reverse next month",reverseNextMonthOff:"Off — accrual stays open until a matching bill arrives from this vendor and clears it.",reverseNextMonthOn:"A reversing JE will post on {date} automatically — use this when no matching bill is expected (e.g., estimated bonus, true-up).",reverseNextMonthOnNoServiceMonth:"A reversing JE will post on the 1st of the month after the service month automatically — use this when no matching bill is expected (e.g., estimated bonus, true-up)."},journalEntryPreview:{title:"Journal Entry Preview",debit:"DR",credit:"CR",autoReversesOnBillMatch:"Auto-reverses when a matching bill arrives from {vendor}.",autoReversesOnDate:"Auto-reverses on {date}."},schedulePreview:{title:"Schedule preview",posts:"Posts",postsValue:"{amount} × {months} months",window:"Window",windowValue:"{start} → {end}",totalCommitted:"Total committed",eachEntry:"Each entry",eachEntryValue:"DR {debit} · CR {credit}",autoPostSuffix:" will auto-post each month until the schedule completes.",autoPostPrefix:"AI Accountant",class:"Class"},newButtonLabel:"New"},accrualDetail:{accrualTypeMonthly:"Monthly Accrual",estimatedBy:"Estimated by",editAmount:"Edit amount",statusLabels:{draft:"Pending Review",posting:"Posting",posted:"Posted",posting_blocked:"Posting Blocked",reversing:"Reversing",reversed:"Reversed",reverted:"Reverted"},details:{title:"Accrual Details",servicePeriod:"Service Period",servicePeriodValue:"{month} Service",accrualType:"Accrual Type",liabilityAccount:"Liability Account",autoReversal:"Auto Reversal",reverseNextMonthOption:"Reverse Next Month",onInvoiceMatch:"On Invoice Match",onDate:"On {date}",monthsOfHistoryUsed:"Months of History Used",monthsValue:"{months} months",expenseCategory:"Expense Category",postingDate:"Posting Date",department:"Department",memo:"Memo"},calculationBreakdown:{title:"Calculation Breakdown",calculationMethod:"Calculation Method",weight:"Weight",weightedValue:"Weighted Value",recommendedAccrual:"Recommended Accrual",invoiceAmount:"Invoice Amount",month:"Month"},journalEntryPreview:{title:"Journal Entry Preview",postedTitle:"Posted Journal Entry",reversedTitle:"Reversed Journal Entry",autoReversalEnabled:"Enabled"},billingPattern:{title:"Billing Pattern",avgAmount:"Avg Amount",lastBill:"Last Bill",consistency:"Consistency",billingLag:"Billing lag",monthsTracked:"Months Tracked",percentValue:"{percent}%",serviceMonthMarker:"This service month",noHistoryTitle:"No vendor billing history",noHistoryDescription:"This accrual was entered manually, so there is no vendor profile behind it to chart. The AI Accountant builds one only for the vendors it accrues automatically.",daysValue:"{days} days"},actions:{skipThisMonth:"Skip This Month",approveAndPost:"Approve & Post"},statusStates:{reversed:"Entry reversed"},feedback:{title:"Why skip this accrual?",subtitle:"Tell us why {amount} shouldn't be accrued for {vendor} this month — AI Accountant learns from this.",reasons:{no_activity:"No activity this month",paused:"Vendor paused / off-boarded",too_small:"Not material",need_invoice:"Wait for actual invoice",other_ignore:"Something else"},revert:{title:"Why revert this accrual?",subtitle:"This deletes the {amount} journal entry for {vendor} from the books. AI Accountant learns from the reason.",submit:"Revert Accrual",reasons:{amount_off:"Amount was wrong",wrong_period:"Wrong period",not_accrual:"Shouldn't be accrued",duplicate:"Duplicate",other_revert:"Something else"}},ignoreSchedule:{title:"Why ignore this schedule?",subtitle:"Tell us why this schedule isn't needed — AI Accountant learns from this.",submit:"Ignore Schedule",reasons:{not_needed:"Not needed",wrong_account:"Wrong account",duplicate:"Duplicate",already_handled:"Already handled",other_ignore:"Something else"}},revertSchedule:{title:"Why revert this schedule?",subtitle:"This deletes the posted journal entry from the books and removes the schedule. AI Accountant learns from the reason.",submit:"Revert Schedule",reasons:{amount_off:"Amount was wrong",wrong_period:"Wrong period",duplicate:"Duplicate",created_by_mistake:"Created by mistake",other_revert:"Something else"}},noteLabel:"Add a note (optional)",notePlaceholder:"Anything else we should know?",submit:"Submit Feedback"}},existingSchedules:{downloadCompletedSchedules:"Download Completed Schedules",downloadRange:{title:"Download Completed Schedules",subtitle:"Completed schedules are matched on when they started, not when they finished, so search from before the schedules you are looking for began.",fromLabel:"Started on or after",fromPlaceholder:"Select a month",throughToday:"Includes everything up to today, {today}"},kpi:{ongoingSchedules:"Ongoing schedules",monthlyPosting:"Monthly posting",remainingBalance:"Remaining Balance",toDepreciateAmortize:"to depreciate / amortize",posted:"Posted",typeAbbreviations:{fixed_assets:"Fixed",prepaid_expenses:"Prepaid",deferred_revenue:"Deferred rev",accrued_expenses:"Accrued"}}},searchPlaceholder:"Search for schedules",addCategory:"Add Category"},missingReceipts:{searchPlaceholder:"Search for transactions",subTitles:{pre:"",preLink:"",post:"will do the best to automatically match receipts with the correct transactions. Forward all receipts to {receiptsEmail}",postLink:"{receiptsEmail}"},allDoneText:{subTitle:"All receipts uploaded, like magic!"}},fluxAnalysis:{searchPlaceholder:"Search for vendors",subTitles:{item1:{pre:"",bold:"",prefixIconName:"",post:"Review vendor account transactions for emerging trends and adjust categories and classes to resolve anomalies."},item2:{pre:"Feel free to review and make the necessary changes",post:"will learn from it."}},sectionTitle:{generalExpense:"General Expenses"},reviewedBy:"Reviewed by",remarksBy:"Remarks by",viewVendorDetails:"View Vendor Details",emptyPageTexts:{youDidIt:"You did it!",allReviewed:"All flux reviewed!"},stepsBanner:{collapsedTitle:"Quick steps for Flux Analysis",step1:{title:"Review Variances",description:"Compare vendor-wise spend across months and drill down into categories and classes."},step2:{descriptionPrefix:"Once variances are confirmed,",descriptionSuffix:"select vendors and mark as reviewed."}}},accountRecon:{reconciliation:{headers:{section:{assets:{title:"Assets",subTitle:"Cash and Equivalents"},liabilities:{title:"Liabilities",subTitle:"Credit Cards"}},bankBalance:"Bank Balance",openingBalance:"Opening Balance",closingBalance:"Closing Balance",clearedBalance:"Cleared Balance",matchProgress:"AI Progress",lastReconciled:"Last Reconciled",excludedAccountTitle:"Excluded Accounts"},matchProgressLegend:{byHuman:"by human"},progressBar:{byHumans:"by humans"},stepsBanner:{collapsedTitle:"Quick steps for Bank Reconciliation",step1:{title:"Connect Bank Account",line1AfterIcon:"to add a bank account or",line2:"upload a bank statement."},step2:{title:"Compare Balance",body:'Compare bank statement and cleared balances. Select "Review" if they differ.'},step3:{eyebrow:"Step 3",title:"Review & Update Transactions",body:"Approve AI suggestions to categorize or match entries, and complete any missing fields."},step4:{eyebrow:"Step 4",title:"Reconcile the account",body:'Ensure balances match, then select "Reconcile" to complete reconciliation.'}},menu:{statement:"Account Statement"},statsCards:{autoMatched:"AI Accountant Auto-matched",needsReview:"Needs Review",accountsDone:"Accounts Reconciled",timeSavedByAi:"Time saved by AI Accountant",ofTotalTxn:"of _total_ transactions",acrossAccounts:"across _count_ accounts",ofTotalAccounts:"of _total_ Accounts",hrsSuffix:"hrs"},connectAccountsBanner:{leadNeedConnectedSuffix:"need to be connected.",body:"Connect a data source to start reconciliation. Takes less than 2 min per account.",connectAccounts:"Connect Accounts",dismissAriaLabel:"Dismiss"},status:{reconciled:"Reconciled",reconciledBy:"Reconciled by",reconciledVia:"Reconciled via",reconcileViaQBO:"Reconcile via QBO",balanceSyncInProgress:"Balance sync",statementSyncInProgress:"Statement sync",autoReconInProgress:"Auto-reconciliation",statementParseError:"Statement parse",statementValidationFailed:"Statement validation",statementProcessingFailed:"Statement processing",failed:"failed",isInProgress:"is in progress",booksClosedTooltip:"Books closed. Reopen to reconcile again."},tooltips:{reconciledByLabel:"Reconciled by:",lastUpdatedLabel:"Last updated:",applyingChanges:"Applying changes...",failed:"Could not apply changes",inProgress:"Connection is in progress. Please check back in a few minutes.",balancesNotFound:"Unable to fetch balances for this account.",bankBalanceNotFound:"Unable to fetch bank balance for this account.",clearedBalanceNotFound:"Unable to fetch cleared balance for this account.",reconInProgress:"Reconciliation is in progress. Please check back in a few minutes.",excludeAccount:{title:"Exclude Account"}},drawer:{uploadDropZoneSuffix:"your statement",uploadDropZoneSupportingText:{single_account:"Upload a statement for a single account.",multi_account:"Upload a statement containing multiple accounts."},statementAccountScopeOptions:{single_account:"Single Account",multi_account:"Multiple Accounts"},labels:{lastUpdated:"Last Updated:",lastSync:"Last Sync:"},values:{bank:"Bank",connecting:"Connecting",uploaded:"Uploaded",statementParsing:"Statement sync is in progress"},deleteConfirmation:{heading:"Delete this file?",description:"Deleting the file will affect your reviewed transactions or reconciliation progress."},validationFailed:{heading:"Validation Failed"},fileValidationFailed:{heading:"File Validation failed",description:"We couldn't process your statement. Please check the file and try uploading again."},dateRangeConflict:{alreadyReconciled:{heading:"Date Range Already Reconciled",description:"The statement period overlaps with a period that has already been reconciled"},gap:{heading:"Gap in Reconciliation Period",description:"The statement must start the day after the last reconciled period",expectedStartDate:e=>`Please upload a statement starting ${e}`},lastReconciled:e=>`Last Reconciled: ${e}`,lastReconciledBy:(e,t)=>`Last Reconciled: ${e} by ${t}`},error:{validationFailed:"Validation failed",parsingFailed:"Parsing failed"},excludeFromReconciliation:"Exclude from Reconciliation",excludeConfirmation:{heading:e=>`Exclude "${e}" from Reconciliation?`,description:"This account will be removed from your reconciliation workflow and progress report. Existing data will not be affected, and you can include the account again at any time."},includeForReconciliation:"Include account for Reconciliation",includeConfirmation:{heading:e=>`Include "${e}" for Reconciliation?`,description:"This account will be added back to your reconciliation workflow and progress report."}}},statementProcessing:{steps:["Uploaded file","Reading document structure","Identifying statement type","Extracting account details","Determining opening & closing balances","Verifying statement details","Gathering transactions","Finalizing Reconciliation"],headerTitle:"AI Accountant Reading Statement",stepSubtitles:["Setting up statement analysis and validation","Recognizing transaction layouts and summary sections","Matching format against known bank statement templates","Pulling account number, entity name, and statement period","Locating balance summary from the checking summary table","Cross-checking deposit and withdrawal totals for accuracy","Reading transactions. Extracting dates, amounts, and descriptions","Matching transactions to your ledger and preparing the review"],stepProgressLabel:(e,t)=>`Step ${e} of ${t} completed`,timeRemainingMinutes:e=>`${e} min left`,timeRemainingSeconds:e=>`${e} sec left`,takingLongerThanExpected:"Taking longer than expected...",actionNeeded:"Action needed",continueInBackground:"Continue in Background",accountMapping:{headerSubtitle:e=>`Almost done — assign each of the ${e} cards to a ledger account to finish.`,headerSubtitleAccounts:e=>`Almost done — assign each of the ${e} accounts to a ledger account to finish.`,banner:(e,t)=>`I've extracted all charges from this combined ${e} statement — it covers ${t} cards. Assign each card to a ledger account to file everything. You won't need to upload this file again.`,bannerAccounts:(e,t)=>`I've extracted all charges from this combined ${e} statement — it covers ${t} accounts. Assign each account to a ledger account to file everything. You won't need to upload this file again.`,aiMatched:"AI matched",ledgerAccountLabel:"Ledger account",ledgerAccountPlaceholder:"Select ledger account",overrideWarning:"This account has an ongoing reconciliation. Selecting it will override the existing work.",transactionSummary:(e,t)=>`${e} transactions • ${t} in new charges`,deleteRowAriaLabel:"Remove card mapping",deleteConfirmation:{heading:"Remove this card?",headingAccount:"Remove this account?",description:"The transactions from this card will be excluded from this combined statement, you can still map the remaining cards.",descriptionAccount:"The transactions from this account will be excluded from this combined statement, you can still map the remaining accounts."}},cancelConfirmation:{heading:"Cancel statement parsing?",description:"Your uploaded statement is still being parsed. If you cancel now, the uploaded file and all processing progress will be lost.",continueParsing:"Continue Parsing"}},statementParseInfo:{statementPeriodAndBalances:"Statement period & balances",statementValuesFootnote:"These values are copied directly from the statement.",from:"From:",to:"To:",credits:"Deposits",calculatedValues:"Calculated values",calculatedValuesFootnote:"These values are calculated from transactions in the statement.",extractedTransactions:"Extracted transactions",addTransaction:"Add transaction",totalsDoNotAddUp:"The totals do not add up.",reparseStatement:"Re-parse statement",retryParsing:"Retry Parsing",cancelConfirmation:{heading:"Are you sure?",description:"You have unsaved changes. If you cancel now, your changes will be lost"},reparseConfirmation:{heading:"Restart parsing?",description:"Re-parsing reads the statement again from scratch and replaces your current review. Any edits you've made will be lost.",reparse:"Re-parse"},closingBalanceMismatchConfirmation:{heading:"Closing balance doesn’t match",descriptionBeforeStatementAmount:"The closing balance on your statement is ",forAccountDescriptionBeforeStatementAmount:"For {accountName}, the closing balance on your statement is ",descriptionBetweenAmounts:", but the transactions you’ve added total ",reviewHint:"Please review the transactions and add, remove, or edit any that are incorrect.",reviewTransactions:"Review transactions",continueAnyway:"Continue anyway",descriptionAfterTransactionsAmount:"."},aiSummary:{accountRecognized:"Account recognized",transactionsExtracted:"Transactions extracted",exceptionsDetected:"Exceptions detected",fieldsCaptured:"Fields captured",validated:"Validated",openingDate:"Opening date"}},tabs:{},review:{allDoneText:{title:"High five!",subTitle:"All transactions reviewed!"},header:{match:"Record or Match",amount:"Amount",memo:"Memo"},transactionDirection:{credit:"Credit",debit:"Debit"},matchesCount:"__count__ Matches",matchedFoundCount:"__count__ Matches Found",matchesFoundFullInfo:"for this bank transaction within the last 90 days",bankDetail:"Bank Detail",creditCardDetail:"Credit Card Detail",formLabels:{match:"Match",categorize:"Categorize",selectCard:"Select Card",allBankAccounts:"All bank accounts",allCreditCards:"All credit cards",addCategory:"Add Category",addClass:"Add Class",addMemo:"Add Memo"}},reconcile:{allDoneText:{title:"Ta-da!",subTitle:"No transactions found for reconciliation!"},header:{clearedDate:"Cleared Date",amount:"Amount",memo:"Memo"}},subTitles:{review:{item1:{pre:"",bold:"",prefixIconName:"",post:"Please review these transactions because the general ledger balance doesn't match the bank balance."},item2:{pre:"",post:"suggest updating these transactions to resolve the ledger discrepancies, which will help auto-adjust the variance."}},reconcile:{item1:{pre:"",post:"have reconciled pending transactions and saved 42% of your reconciliation time."},item2:{pre:"",prefixIconName:"",bold:"",post:"It's time to review for discrepancies and select all transactions to bring the variance to zero."}}},titles:{item1:{pre:"",post:"have reconciled your bank transactions and saved 38% of your reconciliation time."},item2:{pre:"",bold:"",prefixIconName:"",post:" It's time to check for discrepancies and review them if there's a difference."}}},recommendationFeedback:{title:"Help me get this right next time.",skipLabel:"Skip Feedback",yourSelection:"Your Selection",reasonPlaceholder:'e.g. "Always put Amazon under Software Subscription, not Office Supplies"',submitHintPrefix:"Press ",submitHintKey:"Enter/Return",submitHintSuffix:" to submit",dimensionLabels:{vendor:"Payee Recommendation",category:"Category Recommendation",class:"Class Recommendation"}}},aiCfo:{pageView:{scopePageTitle:"AI CFO Scope",titleTag:"BETA",hello:"Hello, ",helpText:"How can I help you today?",showMoreSuggestedQuestions:"Show __count__ more..."},questionTemplates:{sampleQuestion1:"Show me last month's Month-end insights",sampleQuestion2:"Show me the runway and projected cash zero date",sampleQuestion3:"Show me the top expenses from past six months"},skillMenu:{examplePrefix:"try:",tip:"Tip: type details after a skill to tailor it — e.g. a period, a filter, or what to focus on."},routines:{title:"Scheduled Tasks",am:"am",pm:"pm",subtitle:"Work that runs on a schedule and emails you the answer. A saved skill, or a one-off you write here.",empty:"You don’t have any scheduled tasks yet.",loading:"Loading scheduled tasks…",loadFailed:"Couldn’t load scheduled tasks. Please try again.",newRoutine:"New scheduled task",capReached:"You’ve reached the limit of __max__ scheduled tasks. Delete one to add another.",everyDayAt:"Every day at __time__",everyWeekAt:"Every __weekday__ at __time__",everyMonthAt:"Every month on the __day__ at __time__",unknownSchedule:"On a schedule this app doesn’t recognise",weekdays:["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],ordinalSuffixes:{one:"st",two:"nd",few:"rd",other:"th"},unknownScheduleHint:"This scheduled task uses a schedule set up elsewhere. You can pause or delete it here, or contact support to change it.",inTimezone:"__schedule__ (__timezone__)",nextRun:"Next __date__",neverRun:"Hasn’t run yet",lastRunSucceeded:"Last run __date__",lastRunSucceededNoDate:"Last run succeeded",lastRunFailedNoDate:"Last run failed",lastRunTimeoutNoDate:"Last run timed out",lastRunFailed:"Last run failed __date__",lastRunTimeout:"Last run timed out __date__",pausedBadge:"Paused",autoPaused:"Paused after repeated failures",adHocBadge:"Prompt",brokenSkill:"The skill this ran was deleted",pause:"Pause",resume:"Resume",pauseRoutine:"Pause __name__",resumeRoutine:"Resume __name__",editRoutine:"Edit __name__",deleteRoutine:"Delete __name__",openThread:"Open conversation",run:"Run now",runRoutine:"Run __name__ now",running:"Running…",runQueued:"Started. The answer appears in the conversation, and is emailed when it finishes.",runFailed:"Couldn’t start this scheduled task. Please try again.",history:"History",hideHistory:"Hide history",historyLoading:"Loading runs…",historyFailed:"Couldn’t load this scheduled task’s runs.",historyEmpty:"No runs yet.",runManual:"Manual",runScheduled:"Automatic",runInFlight:"Running",runSucceeded:"Succeeded",runFailedStatus:"Failed",runTimedOut:"Timed out",runUnknownStatus:"Unknown",runAt:"__date__ at __time__",runAttempt:"Attempt __n__",openRun:"Open",openRunLabel:"Open the conversation for the run on __date__",backToRoutines:"Scheduled Tasks",configuration:"Configuration",enabledLabel:"Status",enabledOn:"Active",enabledOff:"Paused",enabledOnHint:"Runs on its schedule.",enabledOffHint:"Paused — it will not run.",scheduleRow:"Schedule",oneOffSource:"A prompt you wrote",instructionsHeading:"Instructions",showAll:"Show all",showLess:"Show less",runsHeading:"History",successRatio:"__succeeded__ of the last __total__ succeeded",neverRunStatus:"Hasn’t run yet",openRoutine:"Open __name__",openRoutinePage:"Open scheduled task settings",breadcrumbRoot:"Scheduled Tasks",edit:"Edit",runRowLabel:"Run · __when__",newRuns:"__count__ new",scheduledSection:"SCHEDULED",cadenceDaily:"Daily",cadenceWeekly:"Weekly",cadenceMonthly:"Monthly",cadenceCustom:"Custom",showRuns:"Show runs",hideRuns:"Hide runs",panelRuns:"Runs",panelDetails:"Details",panelSkill:"Skill",composerPlaceholder:"What do you want on a schedule?",composerSubmit:"Draft scheduled task",composerExamples:["Summarise last week’s spend and flag anything unusual","Send me the cash position every Monday morning","List invoices over 60 days past due"],deleteConfirm:"Delete scheduled task",deleteConfirmBody:"It stops running and stops emailing you. The skill it runs is not affected.",deleting:"Deleting…",deleteFailed:"Couldn’t delete this scheduled task. Please try again.",saveFailed:"Couldn’t save this scheduled task. Please try again.",nameLabel:"Name",namePlaceholder:"Monday spend review",sourceLabel:"What it runs",sourceSkill:"A saved skill",sourcePrompt:"Something I write here",promptPlaceholder:"Summarise last week’s spend and flag anything unusual.",promptHint:"Runs exactly as written, every time. It won’t appear in the / menu.",skillLabel:"Skill",skillHint:"Pinned to the version you pick, so editing the skill later won’t change what runs.",cadenceLabel:"How often",daily:"Every day",weekly:"Every week",monthly:"Every month",weekdayLabel:"Day of week",dayOfMonthLabel:"Day of month",dayOfMonthHint:"A month that’s too short runs on its last day instead.",hourLabel:"Hour",minuteLabel:"Minute",timeLabel:"At",scheduleLabel:"Schedule",runsSummary:"Runs __schedule__",timezoneLabel:"Timezone",timezonePlaceholder:"Search timezones…",timezoneHint:"The time above is in this timezone.",timezoneInvalid:"That isn’t a timezone we recognise.",skillPlaceholder:"Search skills…",skillUnknown:"Pick a skill from the list.",templateLabel:"Start from a skill",templatePlaceholder:"Optional — search skills…",templateHint:"Copies that skill’s instructions below, where you can edit them. The scheduled task then runs your edited copy, not the skill.",templateLoading:"Loading that skill’s instructions…",templateFailed:"Couldn’t load that skill’s instructions. You can still write your own.",skillInstructionsLabel:"What it will run",skillInstructionsLoading:"Loading…",skillInstructionsFailed:"Couldn’t load this skill’s instructions.",editACopy:"Edit a copy instead",editACopyHint:"Runs the skill as written. To change it for this scheduled task only, edit a copy.",noMatches:"No matches",deliveryNote:"The answer is emailed to you when it finishes.",save:"Save scheduled task",saving:"Saving…"},skills:{subtitle:"Ready-made analyses you can run in a new chat. Zeni's are available to everyone; yours are your company's own.",byZeni:"By Zeni",byTenant:"Your company",empty:"No skills are available yet.",emptyTenant:"Your company hasn’t added any skills yet.",loading:"Loading skills…",loadingPrompt:"Loading this skill’s instructions…",loadFailed:"Couldn’t load skills. Please try again.",detailLoadFailed:"Couldn’t load this skill. Please try again.",back:"All skills",backToSkill:"Back to skill",audienceCurrentPrivate:"Only you can use this skill.",audienceCurrentTenant:"Everyone at your company can use this skill.",publish:"Share with company",unpublish:"Make private",publishing:"Sharing…",unpublishing:"Making private…",publishFailed:"Couldn’t change who can use this. Please try again.",run:"Run skill",runHint:"Runs this skill in a new chat.",instructionsHeading:"What this skill tells the agent",tenantBadge:"Shared",lastUpdated:"Updated __date__",neverUpdated:"Not updated yet",newSkill:"New skill",fork:"Copy to my skills",forkHint:"Starts a new skill of your own from this one.",forkNameSeed:"__name__ copy",deleteConfirm:"Delete this skill?",deleteConfirmBody:"It stops appearing in the / menu for everyone who can run it. Its name becomes available again.",deleting:"Deleting…",deleteFailed:"Couldn’t delete this skill. Please try again.",namePlaceholder:"Cash burn summary",nameHint:"How people find this skill — the / command is set from this name when you save.",nameHandleHint:"Runs as /{handle} — type / then any part of the name.",audienceLabel:"Who can use this",audiencePrivate:"Only me",audiencePrivateHint:"Stays in your own / menu.",audienceTenant:"Everyone at my company",audienceTenantHint:"Appears in every colleague's / menu.",audiencePublishWarning:"Published skills run with the permissions of whoever uses them. Only publish a prompt you would be comfortable running as any colleague.",descriptionPlaceholder:"One line on what this skill does",descriptionHint:"Shown under the name in the / menu.",instructionsLabel:"Instructions",instructionsPlaceholder:"Tell the agent exactly what to do. Be specific about the period, the accounts and the format you want back.",instructionsHint:"The agent receives this verbatim. Written like a brief, not a search query.",charCount:"__count__ characters",create:"Create skill",creating:"Creating…",saveNewVersion:"Save new version",saveFailed:"Couldn’t save this skill. Please try again.",unsavedTitle:"Discard your changes?",unsavedBody:"This skill has edits that haven’t been saved.",keepEditing:"Keep editing",nameRequired:"A name is required.",instructionsRequired:"Instructions are required.",instructionsTooShort:"Instructions need at least __min__ characters.",renameWarning:"Renaming changes the / command. The old one stops working.",historyHeading:"Version history",historyLoading:"Loading history…",historyFailed:"Couldn’t load version history.",historyEmpty:"No earlier versions.",versionLabel:"Version __version__",restore:"Restore",restoreHint:"Brings this version’s instructions back as a new version. Nothing is overwritten.",restoreLoading:"Loading this version…",restoreFailed:"Couldn’t load that version. Please try again.",emptyTenantCta:"Write your first skill, or copy one of Zeni’s."},texts:{generating:"Generating...",artifactFallbackTitle:"Financial visualization",downloadArtifactImage:"Download chart as image",saveToSkill:"Save to Skill",savedToSkill:"Saved — run it with /{command}",saveToSkillFailed:"Couldn't save. Please try again.",createSkillCommandDescription:"Turn this conversation into a reusable skill",createSkillCommandExampleHint:"that compares vendor spend month over month",downloadTableFailed:"Couldn’t download the table. Please try again.",downloadTableTooLarge:"This table is too large to export. Try narrowing the question to a shorter period or fewer categories.",downloadArtifactImageFailed:"Couldn’t download the chart. Please try again.",errorInAnswer:"We couldn’t generate a response at the moment. Please submit question again.",errorInArtifact:"Unable to render visualization. The data is available in the text response above.",creatingCards:"Creating cards...",creatingPolicies:"Creating policies based on your preferences...",cardCreatedSingular:"1 card is created and ready",cardsCreatedPlural:"__count__ cards are created and ready",policyCreatedSingular:"1 policy is created and saved",policiesCreatedPlural:"__count__ policies are created and saved",createdCardsTableRecommendedLimitHeader:"Recommended Limit"},interactiveForm:{noMatches:"No matches",cardPolicy:{limits:{transactionLimitHelperText:"Maximum amount per single transaction",amountPlaceholder:"$0"}},cardsCreation:{step1Title:"Based on your last 3 months of spend, here are the cards. Review and confirm.",step1AddRowPlaceholder:"Add something else",step1ColumnAvgMonthlySpend:"Avg monthly spend",step2Title:"Who should these cards be assigned to? Suggested owners based on past spend.",step2Cta:"Create cards",cardTypeOptions:{virtual:{label:"Virtual card",description:"Issued instantly"}}}},chainOfThoughts:{reasoning:"Thinking"},reason:{show:"Show Reason",hide:"Hide Reason"},tooltips:{likeResponse:"Like",dislikeResponse:"Dislike",chatWithAI:"Chat with AI CFO"},headers:{followUpQuestions:"Follow-up questions to ask next",didYouKnow:"Did you know?",assumptions:"Key Assumptions"},exports:{downloading:"Preparing download",errors:{expired:"This file is no longer available. Ask the question again to regenerate it.",generic:"Could not download the file. Please try again."}},input:{disclaimer:"__agent__ can make mistakes. Check important info.",maxFilesError:"Cannot add __count__ file(s). Maximum __max__ files allowed per message.",fileTooLargeError:"'__fileName__' exceeds the 5MB size limit and was not added.",unsupportedFileTypeError:"'__fileName__' is not a supported file type and was not added.",uploading:"Uploading",uploadPromoTooltip:{title:"Now upload documents",description:"Add a financial document to see key insights and ask questions."},placeholder:"Ask AI CFO a question and get clear answers.",placeholderWithSkills:"Ask a question, or type / to run a Skill.",placeholderWithSkillsAndUpload:"Ask a question, type / for Skills, or attach a file.",placeholderWithUpload:"Ask a question, or attach a file to analyze."},loading:{discoveryTips:{excelExport:"Tip: Ask for any analysis as an Excel file and I'll attach a download.",followUps:"Tip: Ask follow-up questions in the same chat — I keep the conversation's context.",skills:"Tip: Type / in the message box to run Skills like flux analysis and cash forecasts.",uploads:"Tip: Attach a CSV or spreadsheet and I'll analyze it alongside your books."}},menu:{chatHistory:"CHAT HISTORY"},onboarding:{section:{title:"Run your business with confidence.",subtitle:"Built to analyze, explain, and summarize your numbers like a real CFO would."},capabilities:[{title:"Analyze Financials",subtitle:"Profit & loss, balance sheets, and trend detection — no spreadsheets required.",icon:"analyzing"},{title:"Spot Vendor Patterns",subtitle:"Review expenses across vendors and categories. Surface anomalies and overspend.",icon:"vendors"},{title:"Calculate Core Metrics",subtitle:"Runway, burn, margins — calculated from your real books.",icon:"calculator"},{title:"Forecast With Confidence",subtitle:"Auto-generate projections based on historicals. Updated weekly.",icon:"forecast"},{title:"Visualize Key Trends",subtitle:"Bar graphs, line charts, tables — linked to real data for full traceability.",icon:"graph-trend"}],whoIsItFor:{title:"Who's It For",details:["Startup founders without a full-time CFO — but need strategic clarity.","VPs of Finance/Operations who want faster answers, fewer spreadsheets.","Department heads (Sales, Marketing, Eng) who want to own their numbers.","Fractional CFOs managing multiple clients on Zeni.","In-house CFOs using it as a 10x strategic co-pilot."]},footer:{buttonText:"Launch __agent__",scope:"__agent__ Scope",betaText:"This is Beta — and your usage will shape what’s next.",footerText:'By clicking "Launch __agent__" I accept '}}},aiPerformanceDashboard:{tileTitle:"AI Performance",tileSubtitle:"Monitor and analyze the performance of your AI agents.",chartTitle:"Cost and Time Savings Trend",aiCostSavedTile:{title:"Cost Saved",subtitle:"Total reduction in expense."},aiTimeSavedTile:{title:"Time Saved",subtitle:"Manual hours saved by AI."},noPerformanceData:{firstLine:"No tasks performed yet!"},personas:{aiBookkeeper:"AI Bookkeeper Agent",aiCardsAgent:"AI Cards Agent",aiBillsAgent:"AI Bills Agent",aiExpenseAgent:"AI Expenses Agent",aiBankingAgent:"AI Banking Agent",aiAccountantAgent:"AI Accountant Agent",personaTypes:{aiBookkeeper:"bookkeeper",aiCardsAgent:"ai_cards_agent",aiBillsAgent:"ai_bills_agent",aiExpensesAgent:"ai_expenses_agent",aiBankingAgent:"ai_banking_agent",accountant:"accountant",aiCfo:"ai_cfo"}},valueDelivered:{title:"Value Delivered",subtitle:"Measurement of what you get vs. what you pay",zeniSubscriptionPlan:"Zeni Subscription Plan"},annualizedImpact:{title:"Annualized Impact",subtitle:"At this rate annually, you'll save"}},sessionTimeout:{title:"Session ends in",description:"You will be signed out due to inactivity.",descriptionClickPrefix:"Click",descriptionSuffix:"to stay signed in.",signOut:"Sign Out",continueSession:"Continue Session"},aiAccountantCustomer:{table:{bookClose:"Book Close",accuracy:"Accuracy"},actions:{onboard:"Onboard",evaluate:"Evaluate",fullPipeline:"Full Pipeline",retrain:"Retrain",offboard:"Offboard",cancelOnboarding:"Cancel Onboarding"},jobTriggerDialog:{title:"Trigger Job",datesInstruction:"Please provide start and end dates.",singleDescription:"__companyName__. __datesInstruction__",singleDescriptionOffboard:"__companyName__ will be offboarded from AI Accountant."},drawer:{enrollmentDetails:"Enrollment Details",onboarded:"Onboarded",modelAccuracy:"Model Accuracy",noAccuracyData:"No accuracy data available",jobHistory:"Job History",loadingJobs:"Loading jobs...",noJobsFound:"No jobs found",operation:"Operation"},summary:{totalCustomers:"Total Customers",avgAccuracy:"Avg Accuracy"},bulkActions:{menuLabel:"Bulk Actions",selectedCount:"__count__ selected",noCommonOperations:"No actions available for the selected customers",disabledInfo:"The selected customers have no action in common. Narrow your selection to customers in the same state.",bulkDialogDescription:"__count__ customers selected for __action__. Please provide start and end dates.",bulkDialogDescriptionOffboard:"__count__ customers selected for offboarding.",evaluateAllDialogDescription:"__count__ unonboarded customer(s) will be evaluated. Please provide start and end dates."}},cardsShutdown:{bannerDescription:"We're discontinuing our cards product. Here's what's changing, key dates, and how to switch your payments smoothly.",knowMore:"Know More",introBody:"We're discontinuing the Zeni Cards product. Here's what's changing, key dates, and how to switch your payments smoothly.",whatsHappeningTitle:"What's happening",whatsHappeningBodyPrefix:"We've made the decision to discontinue Zeni Cards. Your card will remain active until ",whatsHappeningBodySuffix:", after which all Zeni Cards will be permanently deactivated and no new transactions will be processed.",switchPaymentsTitle:"Switch your vendor payments in minutes",switchPaymentsBodyPrefix:"To simplify the transition, we recommend ",cardSwitcherLinkText:"Knot CardSwitcher,",switchPaymentsBodySuffix:" which can automatically update your saved payment method across hundreds of merchants and subscription providers.",switchPaymentsCoverage:"CardSwitcher works with hundreds of major merchants - including Amazon, Uber, Netflix, Walmart, and most popular subscription and software providers — so you won't need to hunt through each account and update billing details one by one.",whatToDoNowTitle:"What you should do now",whatToDoItem1:"Review recurring payments linked to your Zeni Card",whatToDoItem2:"Move vendor and subscription payments to a new card",whatToDoItem3:"Download any statements you need for your records",needHelpBodyLine1:"Our team is here to help you through the transition.",needHelpBodyPrefix:"Reach us at ",needHelpBodySuffix:" for any assistance."},invoicingOverview:{revenueMetricOverTime:"Revenue - {metric} Over Time",mrrMovement:"MRR Movement",mrrMovementNewSubscriptions:"New Subscriptions",mrrMovementExpansions:"Expansions",mrrMovementNewChange:"New MRR Change",customerMovement:"Customer Movement",customerMovementSubtitle:"All status transitions this month",netCustomerChange:"Net customer change",totalActiveCustomers:"Total active customers",customerChurnRate:"Customer churn rate",revenueByPlan:"Revenue by Plan",noPlanData:"No plan data available.",noRecentSubscriptions:"No recent subscriptions.",kpiActiveSubs:"Active Subs",metricChurnRate:"Churn Rate",tabRecentSubscriptions:"Recent Subscriptions",tabMonthlyMrrBreakdown:"Monthly MRR Breakdown",pillPaused:"Paused",pillResumed:"Resumed",pillReactivated:"Reactivated",alertFailedPayments:"Failed Payments",alertNeedsAction:"Needs action",alertUpcomingInvoices:"Upcoming Invoices",alertNext7Days:"Next 7 days",alertPastDueInvoices:"Past Due Invoices",nrrTitle:"Net Revenue Retention (NRR)",nrrSubtitle:"Trailing 12 months · benchmark for SaaS health",nrrFootnote:"NRR over 112% means existing customers are growing faster than they’re churning — typically a sign of strong product-market fit. Healthy SaaS benchmark is >100%.",grrTitle:"Gross Revenue Retention (GRR)",grrSubtitle:"Excludes expansion · pure retention signal",grrFootnote:"GRR caps at 100% — it strips out upsell to show how much revenue you’d retain without expansion. Best-in-class SaaS sits at 90%+. Below 80% signals a churn problem.",startingArr:"Starting ARR",expansionsArr:"Expansions ARR",contraction:"Contraction",churn:"Churn",endingArr:"Ending ARR",nrr:"NRR",retainedArr:"Retained ARR",grr:"GRR",summaryNewMrr:"New MRR",summaryExpansion:"Expansion",summaryChurnedMrr:"Churned MRR",summaryNetMrrChange:"Net MRR Change",summaryEndingMrr:"Ending MRR",colAutoCollect:"Auto Collect",autoCollectOn:"ON",autoCollectOff:"OFF",cadenceAnnual:"Annual",since:"Since"},invoicingCommon:{zipPlaceholder:"94105",usage:"Usage",pricing:"Pricing",subFamilyCode:"Price Point Code",productCode:"Product Code",columnTarget:"Target",labelBillingPeriod:"Billing Period",labelPricingModel:"Pricing Model",addOns:"Add-ons",oneTimeChargesTab:"One-time Charges",importCsvFile:"Import CSV File",pluralSuffix:"s",description:"Description",subFamilyId:"Price Point ID",itemDetails:"Item Details",name:"Name",externalName:"External Name",unit:"Unit",itemApplicability:"Item Applicability",applicableItems:"Applicable Items",timestamps:"Timestamps",updatedAt:"Updated At",addOn:"Add-on",cancelSubscription:"Cancel Subscription",nameShownOnInvoices:"Name shown on invoices",placeholderPriceZero:"0.00",trialPeriod:"Trial Period",labelFreeQuantity:"Free Quantity",invoiceNotes:"Invoice Notes",invoiceName:"Invoice Name",placeholderAddInvoiceName:"Add invoice name",appendedToInvoiceLineItem:"Appended to invoice line item",addInvoiceNotes:"Add invoice notes",checkmark:"✓",yourCompany:"Your Company",thankYouForYourBusiness:"Thank you for your business.",onReceipt:"On receipt",net:"Net ",newSuffix:"—NEW",invoiceNumber:"Invoice #",poNumberLabel:"PO #",logoAlt:"Logo",taxIdLabel:"Tax ID: ",billedTo:"Billed To",amount2:"Amount (",paymentLinkNoItemizedInvoice:"Payment link — no itemized invoice",qtyLabel:"Qty: ",subtotal:"Subtotal",amountDue:"Amount Due (",signatureAlt:"Signature",currencySymbolEur:"€",currencySymbolGbp:"£",currencySymbolInr:"₹",createCoupon:"Create Coupon",couponDetails:"Coupon Details",couponId:"Coupon ID",couponCodeLabel:"Coupon Code",applyOn:"Apply On",discountType:"Discount Type",maxRedemptions:"Max Redemptions",validFrom:"Valid From",validTill:"Valid Till",dueOnReceipt:"Due on receipt",createInvoice:"Create Invoice",customerDetails:"Customer Details",billingFrequency:"Billing Frequency",openCustomerInNewTab:"Open customer in new tab",openSubscriptionInNewTab:"Open subscription in new tab",openInvoiceInNewTab:"Open invoice in new tab",allocated:"Allocated",refunded:"Refunded",referenceInvoice:"Reference Invoice",subTotal:"Sub Total",noLineItems:"No line items.",creditNote:"Credit Note",preparing:"Preparing…",bankAccountAch:"Bank Account (ACH)",connectViaPlaid:"Connect via Plaid — lower fees, 2–4 day settlement",loading:"Loading…",creditDebitCard:"Credit / Debit Card",cardMethodDescription:"Visa, Mastercard, Amex — instant settlement",cardSetupFailed:"Card setup failed.",failedToSaveCard:"Failed to save card.",expiry:"Expiry",saveCard:"Save Card",newSubscription:"New Subscription",outstanding:"Outstanding",namePlaceholder:"James Johnson",firstNamePlaceholder:"James",lastNamePlaceholder:"Johnson",emailPlaceholder:"billing@acme.com",phonePlaceholder:"(555) 000-0000",companyPlaceholder:"Acme Corp",billingDetails:"Billing Details",vatNumber:"VAT Number",vatNumberPlaceholder:"US-EIN-12-3456789",autoCollectionDescription:"Enabling this automatically charges the customer each billing cycle.",autoCollection:"Auto Collection",netTerms:"Net Terms",selectNetTerm:"Select net term",preferredCurrency:"Preferred Currency",taxability:"Taxability",selectTaxability:"Select taxability",invoiceNotesHint:"Default note to appear on invoices",invoiceNotesPlaceholder:"Default notes to appear on invoices…",addStreetAddress:"Add street address",floorSuiteOffice:"Floor/Suite/Office",city:"City",addCity:"Add city",state:"State",addState:"Add state",addCountry:"Add country",zipCode:"ZIP Code",yourVendor:"Your vendor",createCustomerLabel:"Create Customer",of:" of ",free:" free",code:"Code",redemptions:"Redemptions",slashSeparator:" / ",duration:"Duration",daysPastDue:"Days Past Due",nextRetry:"Next Retry",attempts:"Attempts",line1:"Line 1",line2:"Line 2",recordPayment:"Record Payment",arrowSeparator:" → ",shippingAddress:"Shipping Address",poNumber:"PO Number",poNumber2:"PO number",refunds:"Refunds",gateway:"Gateway",referenceNumber:"Reference Number",subscriptionDetails:"Subscription Details",addShippingAddressButton:"Add shipping address",addBusinessAddressButton:"Add business address",addPoNumber:"Add PO number",shipLine1Placeholder:"123 Main St",shipLine2Placeholder:"Suite 200",cityPlaceholder:"San Francisco",statePlaceholder:"CA",createSubscriptionLabel:"Create Subscription",cardStatus:"Card Status",creditNumber:"Credit Number",dateIssued:"Date Issued",creditedAgainst:"Credited Against",totalCredits:"Total Credits",daySuffix:"d",trial:"Trial",amount:"Amount",all:"All"},invoicingAuditLog:{timeColumnHeader:"Time",actorColumnHeader:"Actor",detailColumnHeader:"Detail",noAuditEntriesMatchSearch:"No audit entries match your search.",noAuditActivityYet:"No audit activity yet.",searchActionTargetActorPlaceholder:"Search action, target, or actor"},invoicingCatalog:{addOnsNoun:"add-ons",oneTimeChargesNoun:"one-time charges",plansNoun:"plans",itemsNoun:"items",addItem:"Add Item",addAddOn:"Add Add-on",addOneTimeCharge:"Add One-time Charge",periodSingular:"1 ${label}",periodPlural:"${period} ${label}s",productColumnHeader:"Product",itemTypeColumnHeader:"Item Type",activePlansKpi:"Active Plans",activeProductsKpi:"Active Products",avgPlanPriceKpi:"Avg Plan Price",noMatchSearch:"No ${tabNoun} match your search.",noItemsYet:"No ${tabNoun} yet.",emptyStateDescription:"Bring in your historical product catalog data by importing your product catalog csv file",emptyStateTitle:"No Product Catalog Yet",searchPlaceholder:"Search ${tabNoun}"},invoicingCatalogDetail:{oneSpace:"1 ",activeSubFamilies:"Active Price points",archivedSubFamilies:"Archived Price points",lowestActiveSubFamilyPrice:"Lowest Price Point Price",priceTiers:"Price / Tiers",catalogItemNotFound:"Catalog item not found.",itemNamePlaceholder:"Item name",externalNamePlaceholder:"External name",addDescriptionPlaceholder:"Add a description",lineItemDescription:"Line Item Description",itemFamily:"Item Family",restrictedPrefix:"Restricted (",itemsSuffix:" items)",subFamilies:"Price points",noSubFamilies:"No Price points.",archivedAt:"Archived At",archiveSubFamily:"Archive price point",archiveSubFamilyBlocked:"Cannot archive while subscriptions reference this price point.",duplicateSubFamily:"Duplicate price point",subscriptionsUseSubFamilyBanner:"{count} subscriptions use this price point. To change pricing, create a new price point."},invoicingCatalogForm:{typeOneTimeCharge:"One-time Charge",trialUnitDay:"Day",periodUnitWeek:"Week",pricingModelFlatFee:"Flat fee",pricingModelPerUnit:"Per unit",pricingModelTiered:"Tiered",pricingModelVolume:"Volume",pricingModelStairstep:"Stairstep",tierTypePerUnit:"Per Unit",tierTypeFlatFee:"Flat Fee",tierTypePackage:"Package",trialEndActivateSubscription:"Activate Subscription",prorationPartialTerm:"Partial Term",prorationFullTerm:"Full Term",applicabilityAll:"All add-ons & charges",applicabilityRestricted:"Restricted — Select applicable items",applicableItemsEmptyPlaceholder:"No add-ons or charges available",selectApplicableItemsPlaceholder:"Select applicable items",validationProductFamilyRequired:"Enter a Product Family name for this catalog item.",validationSubFamilyNameRequired:"Add at least one price point and enter a name for each one.",titleEditCatalogItem:"Edit Catalog Item",titleCreatePlan:"Create Plan",titleCreateOneTimeCharge:"Create One-time Charge",titleCreateAddon:"Create Add-on",sectionPlanAndProductFamilyDetails:"Plan and Product Family Details",productCodeExample:"Optional. Generated from Product Family when left blank.",placeholderAddProductCode:"Add product code",customerFacingName:"Customer facing name",labelProductFamily:"Product Family",placeholderAddProductFamily:"Add product family",labelPricePointName:"Price point name",placeholderAddSubFamilyName:"e.g. Growth Monthly",subFamilyCodeExample:"Optional. Generated from the price point name when left blank.",placeholderAddSubFamilyCode:"Add price point code",forInternalUseOnly:"For internal use only",subFamilyDetailsTitle:"Price Points",pricePointsRequiredHint:"Add at least one price point to create this plan. Add more for different billing frequencies (e.g. monthly, annual) or currencies.",addNewLink:"Add another price point",subFamilyNumberPrefix:"Price Point",removeSubFamilyConfirmation:"Remove this price point?",labelSubFamily:"Price Point",placeholderAddSubFamily:"Add price point",labelAddTiers:"Add Tiers",tierColumnTo:"To (blank for unlimited)",tierColumnPackageSize:"Package size",infinity:"∞",removeTierX:"✕",addTierLink:"Add Tier",hintAddBillingPeriod:"Add billing period",placeholderTrialPeriodExample:"e.g. 14",labelTrialEndAction:"Trial End Action",hintBillingCyclesUnlimited:"Keep it blank for unlimited cycles",placeholderAddBillingCycles:"Add number of billing cycles",labelProrationType:"Proration Type",labelFlags:"Flags",selectFlagsPlaceholder:"Select flags",labelShowDescriptionInQuotes:"Show Description in Quotes",lineItemDescriptionHint:"Shown below the line-item name when invoice descriptions are enabled",subFamilyInvoiceNotesHint:"Shown in the invoice Notes section when this price point is billed",nameShownOnInvoiceLineItem:"Name shown on the invoice line item",sectionAccountingIntegration:"Accounting Integration",skuQboExample:"QBO Product code. Example: BASIC-M",labelSku:"SKU",placeholderAddSku:"Add SKU",placeholderAddAccountingCode:"Add accounting code",placeholderSelectIncomeAccount:"Select income account"},invoicingCouponForm:{enterCouponIdError:"Enter a Coupon ID.",enterCouponNameError:"Enter a name for this coupon.",editCouponTitle:"Edit Coupon",couponIdPlaceholder:"e.g. WELCOME20",namePlaceholder:"e.g. Welcome 20% Off",discountPercentagePlaceholder:"e.g. 20",discountPercentageLabel:"Discount Percentage",discountAmountLabel:"Discount Amount",freeQuantityPlaceholder:"e.g. 1",durationLimitsSectionTitle:"Duration & Limits",durationTypeLabel:"Duration Type",periodPlaceholder:"e.g. 3",periodUnitLabel:"Period Unit",maxRedemptionsPlaceholder:"Add max redemptions",discountsAccountLabel:"Discounts Account",discountsAccountPlaceholder:"Select income account"},invoicingCreateInvoice:{selectPaymentTerm:"Select payment term",net7:"Net 7",net15:"Net 15",net30:"Net 30",net45:"Net 45",net60:"Net 60",selectBillingFrequency:"Select billing frequency",halfYearly:"Half-yearly",annually:"Annually",addAtLeastOneLineItem:"Add at least one line item with a description and unit price.",step1CustomerAndType:"Step 1: Customer and Type",step2InvoiceDetails:"Step 2: Invoice Details",step1Subtitle:"How would you like to create an invoice? Select a customer and choose the invoice type.",step2Subtitle:"Set dates, line items, and additional details.",invoiceJpg:"Invoice.jpg",livePreviewSuffix:" - Live Preview",paymentLink:"Payment link",paymentLinkCalloutText:"A payment link will be generated and sent to the customer — no itemized invoice document is required.",chooseExistingCustomerHint:"Choose an existing customer or create one first",searchOrTypeCustomerName:"Search or type a customer name",pleaseSelectCustomer:"Please select a customer to continue.",invoiceType:"Invoice Type",selectAnInvoiceType:"Select an invoice type",oneTimeInvoiceDescription:"Send a one-time invoice with a built-in payment link.",oneTimeInvoiceTitle:"One-time Invoice",recurringSeriesDescription:"Automatically generate recurring invoices on a set schedule.",recurringSeriesTitle:"Recurring Series",paymentLinkOnlyDescription:"Send only a payment link with a single amount — No itemized invoice.",paymentLinkOnlyTitle:"Payment Link Only",general:"General",setInvoiceDatesHint:"Set the invoice dates and additional details.",selectInvoiceDate:"Select invoice date",paymentTerms:"Payment Terms",usdUsDollar:"USD — US Dollar",soNumber:"SO Number",addSoNumber:"Add SO number",exampleSoNumber:"Example: SO-2026-001",exampleMemo:"Example: thank you for your business",unitPriceLabel:"Unit Price (",useDescriptionAs:"Use description as",addQuantity:"Add quantity",addPrice:"Add price",removeLine:"Remove line",addLine:"Add Line",unitPriceInDollars:"Unit price in dollars"},invoicingCreditDetail:{allocatedAt:"Allocated At",creditNoteNotFound:"Credit note not found.",creditNoteTitlePrefix:"Credit Note ",creditNoteDetails:"Credit Note Details",creditNoteId:"Credit Note ID",creditNoteNumber:"Credit Note Number",priceType:"Price Type",amounts:"Amounts",amountAvailable:"Amount Available",amountAllocated:"Amount Allocated",amountRefunded:"Amount Refunded",allocations:"Allocations",noAllocations:"No allocations.",linkedRefunds:"Linked Refunds"},invoicingCreditList:{noCreditNotesMatchSearch:"No credit notes match your search.",noCreditNotesYet:"No credit notes yet.",createCreditNoteButton:"Create Credit Note",emptyStateDescription:"Bring in your historical credit note data by importing your credit note csv file",emptyStateTitle:"No Credit Notes Yet",searchPlaceholder:"Search by customer or credit note"},invoicingCustomerDetail:{paymentMethodSavedTitle:"Payment method saved",paymentMethodSavedDescription:"The payment method has been added and is now the default. Existing payment methods are kept, and future invoices can be collected automatically.",addPaymentMethod:"Add Payment Method",addPaymentMethodSubtitle:"Securely add a bank account or card to collect invoice payments.",connectStripeNotice:"Connect a Stripe account in Settings › Payment Destination before adding a payment method.",securedByStripeAndPlaid:"Secured by Stripe & Plaid.",countryAustralia:"Australia",countryCanada:"Canada",countryGermany:"Germany",countryFrance:"France",countryUnitedKingdom:"United Kingdom",countryIndia:"India",countryJapan:"Japan",countrySingapore:"Singapore",countryUnitedStates:"United States",netTermsDueImmediately:"Due immediately",createPromotionalCreditsSubtitle:"Add promotional credits to this customer's balance. Credits are applied automatically on the next invoice before tax.",currentPromotionalCreditsBalance:"Current balance",promotionalCreditAmountRequired:"Enter a positive amount.",promotionalCreditDescriptionRequired:"Description is required.",promotionalCreditDescriptionPlaceholder:"e.g. Welcome bonus",promotionalCreditsAddedTitle:"Promotional credits added",promotionalCreditsAddedDescription:"The customer's promotional credit balance has been updated.",customerSince:"Customer Since",sincePrefix:"Since ",lifetimeValue:"Lifetime Value",promotionalCredits:"Promotional Credits",refundableCredits:"Refundable Credits",excessPayments:"Excess Payments",unbilledCharges:"Unbilled Charges",maskedDigitsPrefix:"•••• ",maskedDigitsMiddle:" •••• ",expires:"Expires",customerNotFound:"Customer not found.",taxable:"taxable",netDashPrefix:"Net-",streetAddress:"Street Address",balances:"Balances",connectStripeTooltip:"Connect a Stripe account in Settings › Payment Destination first",paymentMethods:"Payment Methods",connectStripeBefore:"Connect your Stripe account in",settingsPaymentDestination:"Settings › Payment Destination",connectStripeAfter:"to add payment methods.",invoicePaymentDetails:"Invoice payment details:",customerEmailPlaceholder:"customer@email.com",emailPaymentLinkTooltip:"Email the customer a link to add their payment details",collectAchHint:"We will email the customer to provide their ACH details.",paymentLinkSentTo:"Payment link sent to ",copyPaymentLink:"Copy payment link",sendPaymentLinkFailed:"Failed to send payment link.",default:"Default",noPaymentMethodOnFile:"No payment method on file",previewEmailHeading:"Preview email",previewEmailSubtitle:"Edit the subject and message; the preview updates as you type.",previewEmailFrameTitle:"Rendered payment link email preview",previewEmailLoading:"Loading the branded email preview…",previewEmailUnavailable:"The email preview is unavailable right now. You can still send the payment link.",previewEmailFailed:"Could not load the email preview.",previewEmailRetry:"Retry",previewEmailSend:"Send email",previewEmailMessageLabel:"Message",previewEmailSubjectRequired:"Enter an email subject.",previewEmailBodyRequired:"Enter an email message.",sending:"Sending…",noSubscriptions:"No subscriptions.",recentInvoices:"Recent Invoices",noInvoices:"No invoices.",addNoteAboutCustomer:"Add a note about this customer"},invoicingCustomerForm:{validationEnterEmail:"Enter an email for this customer.",customerDetailsDescription:"Primary contact for billing and invoices",customerTypeLabel:"Customer Type",billingAddressSectionDescription:"Enter your company's official billing address for invoicing.",addSecondaryInfoPlaceholder:"Add secondary info (Optional)",addressSecondaryHint:"Example: Address on your driver's license",addBillingAddressButton:"Add billing address",billingSettingsDescription:"Tax IDs, currency, and payment defaults",billingSettingsTitle:"Billing Settings",customerTypeResidential:"Residential",netTermImmediate:"Immediate",taxabilityExempt:"Exempt"},invoicingCustomerList:{noCustomersMatchSearch:"No customers match your search.",noCustomersYet:"No customers yet.",importCustomersDescription:"Bring in your historical customers by importing your customers csv file",noCustomerYetTitle:"No Customer Yet"},invoicingDataImport:{inSync:"In Sync",skippedSuffix:" Skipped",warningsSuffix:" Warnings",newImport:"New Import",chargebeeImportFailed:"Chargebee import failed",chargebeeImportInProgress:"Chargebee import in progress",csvImportFailed:"CSV import failed",csvImportInProgress:"CSV import in progress",viewDetails:"View details",records:"records",bulletSeparator:" • ",lastImportReversible:"Last import is reversible",recordsBulletSeparator:"records • ",rollback:"Rollback",importedModules:"Imported Modules",module:"Module",recordsColumn:"Records",lastImported:"Last Imported",loadingImportStatus:"Loading import status…",noImportedRecords:"No imported records yet. Start a new import to populate this table.",templateProductCatalogPlans:"Product Catalog (Plans)",templateCouponsAndDiscounts:"Coupons & Discounts",chargebeeStepSettingsImportExport:"Chargebee → Settings → Import & Export → Export",chargebeeStepDetailModulesList:"Plans, add-ons, one-time charges, customers, subscriptions, invoices, credit notes",chargebeeStepDetailPickAllTime:'Pick "All time" range. CSV format. Default columns are fine.',chargebeeStepExportModule:"Export the module you want",chargebeeStepDropCsvFiles:"Drop the .CSV files above",capsuleIssuesSuffix:" Issues",capsuleReady:"Ready",scanningCaptionCsv:"Larger exports can take a few minutes — you can leave this page, it keeps running.",scanningCaptionChargebee:"This can take a moment for larger accounts — you can leave this page, it keeps running.",scanningLabelCsv:"Reading your uploaded files…",defaultImportErrorMessage:"Something went wrong during import.",backToDataImport:"Back to Data Import",migrateHeading:"Migrate from Chargebee → Zeni",migrateSubtitle:"Connect Chargebee or drop your CSV exports — we’ll handle the rest.",connectWithChargebee:"Connect with Chargebee",importFromChargebee:"Import from Chargebee",connectedToChargebee:"Connected to {site}",chargebeeConnectedLabel:"Connected to Chargebee",buttonFetchFromChargebee:"Fetch from Chargebee",chargebeeNotConnectedMessage:"Connect Chargebee in Invoicing Settings → Integrations to fetch data automatically.",buttonGoToIntegrations:"Connect Chargebee in Settings",connectPullEverything:"Pull everything automatically — fully linked, no CSV juggling.",connectingToChargebee:"Connecting to Chargebee…",fieldLabelChargebeeSite:"Chargebee site",sitePlaceholderAcme:"acme",fieldHintSiteSubdomain:"The subdomain in your Chargebee URL — e.g. acme in\n acme.chargebee.com.",fieldLabelApiKey:"API key",fieldLabelApiKeySavedSuffix:" (saved)",apiKeyPlaceholderUsingSaved:"Using saved API key",apiKeyPlaceholderLive:"live_xxxxxxxxxxxxxxxx",fieldHintApiKeyReuse:"Leave blank to reuse your saved API key.",fieldHintApiKeyLocation:"Settings → Configure Chargebee → API Keys & Webhooks.",connectReadOnlyAccess:"Read-only access. We never store your billing data without\n confirmation.",dividerOrImportCsv:"or import from CSV instead",downloadBlankTemplateHeader:"Don’t have a Chargebee export yet? Download a blank template",buttonDownloadAllZip:"Download All (Zip)",csvExtensionSuffix:".csv",orExportDirectly:"Or export directly from Chargebee",followStepsBelow:"Follow the steps below",stepDetailLetterSeparator:". ",uploadingExtractingFiles:"Uploading & extracting your files…",dropzoneStrongDropOrUpload:"Drop or upload",dropzoneTitleRest:"your CSV or ZIP exports\n here",dropzoneMetaSupportedFiles:"Chargebee .zip bundles and individual .csv files are both supported",recordsSuffix:" records",afterSkippingPrefix:"After skipping ",issuesRollbackSuffix:" issues · Rollback\n available for 24hrs",filesDetectedSuffix:" files detected",modulesFetchedSuffix:" modules fetched from Chargebee",autoIdentifiedFromHeaders:"Auto-identified from headers",pulledViaChargebeeApi:"Pulled via Chargebee API",needAttentionSuffix:" need attention",buttonSaveContinueLater:"Save & Continue Later",buttonStarting:"Starting…",importRecordsPrefix:"Import ",importRecordsSuffix:" Records",recordsFetchedSuffix:" records fetched",expandIconOpen:"▾",expandIconClosed:"▸",importingFinalizing:"Finalizing…",importingChargebeeData:"Importing your Chargebee Data",rollbackFallback24Hours:"24 hours",doneYouAreOnZeni:"You are on Zeni",doneImportedPrefix:"Imported ",doneRecordsFromChargebeeSuffix:" records from Chargebee",rollbackAvailableUntilPrefix:"Rollback available until ",buttonGoToOverview:"Go to Overview",importFailedHeading:"Import failed",failedMessageCsv:"Your uploaded data is still saved — retry resumes without re-reading your files.",failedMessageChargebee:"Your scanned data is still saved — retry resumes without re-fetching from Chargebee.",buttonRetrying:"Retrying…",buttonRetryImport:"Retry import",diagnosticsTitle:"Import details",diagnosticsSubtitle:"Review skipped records and warnings from this import session.",diagnosticsNotFound:"This import session could not be found.",diagnosticsSection:"Row diagnostics",diagnosticsSummary:"Import summary",diagnosticsSearchPlaceholder:"Search source ID, file, or issue",diagnosticsAllModules:"All modules",diagnosticsAllSeverities:"All severities",diagnosticsAllOutcomes:"All outcomes",diagnosticsErrors:"Errors",diagnosticsWarning:"Warning",diagnosticsSkipped:"Skipped",diagnosticsWarningOutcome:"Imported with warning",diagnosticsSourceRecord:"Source record",diagnosticsRow:"Row",diagnosticsSeverity:"Severity",diagnosticsOutcome:"Outcome",diagnosticsNoIssues:"No row-level issues match these filters.",diagnosticsExpired:"Row-level diagnostics have expired after the 90-day retention period.",diagnosticsFetchFailed:"We could not load row-level diagnostics. Please try again.",diagnosticsDownloadCsv:"Download CSV",diagnosticsLoading:"Loading diagnostics…",diagnosticsJobFailure:"The import job failed",diagnosticsJobFailureHelp:"This is a job-level failure. Any row-level issues found before it stopped are listed below.",diagnosticsChargebeeApi:"Chargebee API",diagnosticsSource:"Import source",diagnosticsCsvUpload:"CSV upload",diagnosticsTotal:"Total records",diagnosticsImporting:"Importing",diagnosticsRolledBack:"Rolled back",diagnosticsScanning:"Scanning",diagnosticsRetainedUntil:"Diagnostics retained until"},invoicingDiscountDetail:{discountsAccountLabel:"Discounts Account",month:"month",limitedSinglePeriod:"Limited · 1 ",limitedMultiPeriodPrefix:"Limited · ",discountNotFound:"Discount not found.",couponNamePlaceholder:"Coupon name",invoiceNotesPlaceholder:"Notes shown on invoices",discountConfiguration:"Discount Configuration",revRecTreatment:"Rev Rec Treatment",restrictedProducts:"Restricted Products",validityAndRedemptions:"Validity & Redemptions",unlimited:"Unlimited"},invoicingDiscountList:{totalDiscounted:"Total Discounted",noDiscountsMatchSearch:"No discounts match your search.",noDiscountsYet:"No discounts yet.",importDiscountsDescription:"Bring in your historical discount coupons data by importing your discount coupon csv file",noDiscountCouponsYet:"No Discount Coupons Yet",searchByNameOrCode:"Search by name or code",discounts:"Discounts"},invoicingDunningDetail:{emailComposerTitle:"Send dunning email",emailComposerDescription:"Review and edit the message, then confirm the exact branded email before sending.",emailCc:"CC (optional)",emailCcHint:"Separate multiple email addresses with commas.",emailCcInvalid:"Enter valid CC email addresses.",emailBody:"Message",emailRecipientRequired:"Enter a valid recipient email address.",emailSubjectRequired:"Enter an email subject.",emailBodyRequired:"Enter an email message.",emailPreview:"Email preview",emailPreviewUpdating:"Updating preview…",emailPreviewLoading:"Loading the branded email preview…",emailPreviewUnavailable:"Edit the subject or message to generate a new preview.",emailPreviewFrameTitle:"Rendered dunning email preview",daysSuffix:" days",dunningCaseNotFound:"Dunning case not found.",dunningTitlePrefix:"Dunning ",caseDetails:"Case Details",caseId:"Case ID",pausedUntil:"Paused until ",lastAttempt:"Last Attempt",pauseReason:"Pause Reason",timeline:"Timeline",noDunningAttempts:"No dunning attempts recorded yet.",retryAttemptPrefix:"Retry attempt #",failedSuffix:" failed"},invoicingDunningList:{activeCases:"Active Cases",atRiskAmount:"At-Risk Amount",recoveryRate:"Recovery Rate",totalCases:"Total Cases",noDunningCasesMatchSearch:"No dunning cases match your search.",noDunningCasesYet:"No dunning cases yet.",importDunningDescription:"Bring in your historical dunning data by importing your dunning coupon csv file",noDunningYet:"No Dunning Yet",searchByCustomerOrInvoice:"Search by customer or invoice"},invoicingInvoiceDetail:{zip:"ZIP",paidOn:"Paid on",taxRate:"Tax Rate",amountApplied:"Amount Applied",attempt:"Attempt",invoiceNotFound:"Invoice not found.",invoiceDocuments:"Invoice Documents",pdfExtension:".pdf",generatedPrefix:"Generated · ",pdfUnavailable:"PDF is not available yet.",amountBreakdown:"Amount Breakdown",subTotalBeforeCredits:"Subtotal (before credits)",creditsApplied:"Credits Applied",amountAdjusted:"Amount Adjusted",amountPaid:"Amount Paid",excessPayment:"Excess Payment",writeOffAmount:"Write Off Amount",noPaymentsApplied:"No payments applied.",issuedCreditNotes:"Issued Credit Notes",noCreditNotes:"No credit notes.",adjustmentCreditNotes:"Adjustment Credit Notes",voidInvoiceDialogTitle:"Void invoice?",voidInvoiceDialogDescription:"Voiding {invoice_number} cannot be undone. The invoice will no longer be collectible.",voidInvoiceDialogDescriptionGeneric:"Voiding this invoice cannot be undone. The invoice will no longer be collectible.",voidInvoiceCreateAdjustmentCreditNote:"Create adjustment credit note",voidInvoiceAdjustmentCreditNoteHelp:"Offsets the invoice balance with a credit note dated today. Use this for backdated invoices to avoid restating a closed accounting period in QuickBooks.",voidInvoiceConfirm:"Void invoice",nextRetry:"Next retry",noDunningAttempts:"No dunning attempts.",additionalDetails:"Additional Details",note:"Note"},invoicingInvoiceList:{totalInvoicedKpiLabel:"Total Invoiced",noInvoicesMatchSearch:"No invoices match your search.",noInvoicesYet:"No invoices yet.",importInvoicesDescription:"Bring in your historical invoices data by importing your invoice csv file",noInvoicesYetTitle:"No Invoices Yet",searchInvoicesPlaceholder:"Search by invoice no. or customer"},invoicingPaymentLink:{linkInvalidOrExpired:"The link is invalid or has expired.",verifyingSecureLink:"Verifying your secure link…",linkCannotBeOpened:"This link can't be opened",askVendorForNewLink:"Please ask your vendor to send a new payment link.",failedToConnectBankAccount:"Failed to connect bank account.",bankConnectionError:"Bank connection error. Please try again.",failedToStartCardSetup:"Failed to start card setup.",youreAllSet:"You're all set",bankAccount:"Bank account",endingIn:"ending in ••••",hasBeenSaved:"has been saved.",canNowCollectInvoicePayments:"can now collect invoice payments from this method.",addYourPaymentDetails:"Add your payment details",companyFallback:"This company",wouldLikeToCollectPaymentMethod:"would like to collect your payment method so future invoices can be paid automatically.",companyNotFinishedSetup:"This company hasn't finished setting up invoice payments yet. Please try again later or contact them directly.",securedByStripePlaid:"Secured by Stripe & Plaid. This link is unique to you.",cardElementNotReady:"Card element not ready",invoiceUnavailable:"Invoice unavailable",invoiceUnavailableDescription:"We couldn't load the invoice for this payment link. Please ask your vendor for a new link.",invoicePaid:"Payment received",invoicePaidDescription:"Thank you. Payment has been received for invoice",invoiceNoLongerPayable:"This invoice can't be paid",invoiceVoidedDescription:"This invoice has been voided. Please contact your vendor if you have questions.",invoicePayment:"Pay invoice",invoiceFrom:"Invoice from",invoiceNumber:"Invoice number",checkoutCanceled:"Payment was canceled. You have not been charged and can try again.",paymentProcessing:"Your payment is processing. This page will update when it is confirmed.",checkoutStartFailed:"We couldn't open secure checkout. Please try again.",openingSecureCheckout:"Opening secure checkout…",payNow:"Pay now",securedByStripe:"Secure one-time payment powered by Stripe. Your payment method won't be saved.",linkExpired:"This payment link has expired",expiredLinkRefreshing:"Sending a fresh secure link to your email…",expiredLinkEmailSent:"Check your email",expiredLinkEmailSentDescription:"A fresh secure link has been sent to the invoice recipient.",expiredLinkRefreshUnavailable:"Secure payment access is unavailable. Please contact your vendor."},invoicingPaymentList:{totalCollected:"Total Collected",noPaymentsMatchSearch:"No payments match your search.",noPaymentsYet:"No payments yet.",importPaymentsDescription:"Bring in your historical payments data by importing your payment csv file",noPaymentsYetTitle:"No Payments Yet",searchByCustomerOrTransaction:"Search by customer or transaction"},invoicingRecordPayment:{paymentMethodDirectDebit:"Direct Debit",paymentMethodApplePay:"Apple Pay",paymentMethodGooglePay:"Google Pay",paymentMethodAchCredit:"ACH Credit",paymentMethodSepaCredit:"SEPA Credit",gatewayBraintree:"Braintree",gatewayAdyen:"Adyen",gatewayRazorpay:"Razorpay",placeholderSelectInvoice:"Select invoice (optional)",unallocatedPaymentHint:"Leave invoice unselected to record an unallocated payment.",validationAmountExceedsDue:"Payment amount cannot exceed the amount due.",validationSelectCustomer:"Select a customer for this payment.",validationSelectPaymentMethod:"Select a payment method.",validationEnterValidAmount:"Enter a valid payment amount.",placeholderAddCustomer:"Add customer ID or name",placeholderSelectPaymentMethod:"Select payment method",placeholderSelectGateway:"Select gateway",sectionReference:"Reference",placeholderAddTransactionId:"Add transaction ID",placeholderAddReferenceNumber:"Add reference number",labelInvoiceToLink:"Invoice to Link",placeholderAddInvoiceToLink:"Add invoice to link",placeholderCommentInternalNote:"Internal note about this payment"},invoicingIssueCreditNote:{validationSelectLineItem:"Select at least one line item to credit.",validationSelectReason:"Select a reason for this credit note.",validationEnterValidAmount:"Enter a valid credit amount for each selected line.",validationExceedsAmountDue:"Credit total cannot exceed the invoice amount due.",sectionCreditDetails:"Credit Details",sectionLineItems:"Line Items to Credit",labelCreditTotal:"Credit Total",columnInclude:"Include",columnLineTotal:"Line Total",reasonServiceCredit:"Service credit",reasonBillingError:"Billing error",reasonDuplicateCharge:"Duplicate charge",reasonPricingCorrection:"Pricing correction",reasonGoodwill:"Goodwill"},invoicingOnboarding:{promoText:"Get paid faster with Zeni Invoicing.",promoText2:"Create branded invoices, automate recurring billing and dunning, and collect payments — all in one place.",setupPendingText:"Zeni Invoicing set up is pending, please check with your admin.",getStartedButton:"Setup Invoices",termsPrefix:'By clicking "Setup Invoices" you agree to the ',termsAgreement:"Zeni Invoices Agreement",termsSuffix:". ✌🏻",item1:"Professional branded invoices",item2:"Automated recurring billing",item3:"Smart dunning & payment recovery",item4:"Real-time revenue analytics",trustBanner:{title:"Zeni Invoices is trusted by Matic Robotics and 602+ growing companies",subtitle:"Create professional invoices, automate reminders, and reduce overdue payments with intelligent collections powered by Zeni AI."},footer:{title:"Finish setting up Invoicing",subtitle:"Review your settings, then click Enable Invoicing to start using Zeni Invoicing.",enableInvoicingButton:"Enable Invoicing",pendingPrefix:"Still to do:",pendingQbo:"Configure QuickBooks"}},invoicingSettings:{paymentTermsPlaceholder:"30",paymentDestinationSectionSubtitle:"Connect a Stripe account to collect invoice payments and receive payouts.",invoiceBrandingSectionSubtitle:"Configure company details, logo, and how invoices appear to customers.",firstRetryEmailBody:"Hi {{customer_name}},\n\nWe were unable to process your payment of {{amount}} for {{subscription_name}}. We'll retry your payment shortly.\n\nPlease ensure your payment method is up to date.",firstRetryTemplateName:"First Retry",firstRetryEmailSubject:"Action required: Payment failed for your subscription",secondRetryEmailBody:"Hi {{customer_name}},\n\nThis is a reminder that your payment of {{amount}} is still outstanding. We've attempted to charge your card multiple times without success.\n\nPlease update your payment details to avoid service interruption.",secondRetryTemplateName:"Second Retry",secondRetryEmailSubject:"Reminder: Please update your payment method",finalNoticeEmailBody:"Hi {{customer_name}},\n\nDespite multiple attempts, we have been unable to collect your payment of {{amount}}. Your account will be suspended if payment is not received within 7 days.\n\nPlease take immediate action to update your billing information.",finalNoticeTemplateName:"Final Notice",finalNoticeEmailSubject:"Final notice: Your account is at risk of suspension",accountSuspensionEmailBody:"Hi {{customer_name}},\n\nYour account has been suspended due to non-payment of {{amount}}. All services have been paused.\n\nTo reactivate your account, please settle the outstanding balance. Contact support if you need assistance.",accountSuspensionTemplateName:"Account Suspension",accountSuspensionEmailSubject:"Your account has been suspended due to non-payment",onOptionLabel:"On",previewLineItemProfessionalServices:"Professional services — March",previewLineItemOnboardingSetup:"Onboarding & setup",logoInvalidImageTypeError:"Please choose a PNG, JPG, SVG, or WEBP image.",logoTooLargeError:"Logo must be 2 MB or smaller.",connectStripeDialogTitle:"Connect your Stripe account",connectStripeDialogDescription:"Paste the API keys from your Stripe account to start collecting payments. We use your secret key server-side and your publishable key for in-browser card capture.",secretKeyLabel:"Secret key",secretKeyPlaceholder:"sk_live_… or rk_live_…",publishableKeyLabel:"Publishable key",publishableKeyPlaceholder:"pk_live_…",webhookSigningSecretLabel:"Webhook signing secret",webhookSecretPlaceholder:"whsec_…",stripeWebhookUrlLabel:"Webhook endpoint",stripeWebhookSetupDescription:"In your Stripe Dashboard, create a webhook event destination with these settings:",stripeWebhookAccountInstruction:"Event source: Your account",stripeWebhookPayloadInstruction:"Payload style: Snapshot",stripeWebhookEventsInstruction:"Events: All events",stripeWebhookUrlInstruction:"Paste the webhook endpoint shown below.",stripeWebhookSecretInstruction:"Create the destination, reveal its signing secret, and paste the whsec_… value into the Webhook signing secret field below.",quickbooksIntegrationDescription:"Read and write ledger of record. Invoices, expenses, GL, chart of accounts, journal entries.",stripeIntegrationDescription:"Payment processing — charges, refunds, payouts, disputes, MRR.",chargebeeIntegrationDescription:"Subscription analytics — MRR, ARR, churn, active subscriptions.",stripeConnectedHeading:"Stripe Connected",yourStripeAccountFallback:"Your Stripe account",stripeAccountCardTitle:"Stripe account",stripeAccountIdLabel:"Account ID",payoutBankLabel:"Payout bank account",defaultCurrencyLabel:"Default currency",payoutsEnabledLabel:"Payouts enabled",payoutsDisabledLabel:"Payouts disabled",stripePayoutNote:"Payouts are deposited to the bank account configured in your Stripe payout settings.",manageStripePayoutsLinkLabel:"Manage payouts in Stripe",disconnectingButtonLabel:"Disconnecting…",disconnectStripeButtonLabel:"Disconnect Stripe account",noPaymentDestinationHeading:"No payment destination connected",noPaymentDestinationHelper:"Connect a Stripe account to start collecting payments. Your payout account is where invoice payments will be deposited.",connectingButtonLabel:"Connecting…",connectStripeButtonLabel:"Connect Stripe Account",livePreviewLabel:"Live preview",defaultInvoicePrefix:"INV",previewInvoiceNumberSuffix:"-0001",companyNameLabel:"Company name",billingEmailLabel:"Billing email",taxIdEinLabel:"Tax ID / EIN",timezoneLabel:"Timezone",timezonePlaceholder:"America/Los_Angeles",businessAddressLabel:"Business address",brandingTitle:"Branding",uploadLogoLabel:"Upload logo",logoPreviewAlt:"Logo preview",currentLogoText:"Current logo",removeLogoAriaLabel:"Remove logo",logoFormatsHint:"PNG, JPG, SVG or WEBP · max 2 MB",pasteLogoUrlLabel:"Or paste your logo URL",logoUrlPlaceholder:"https://…/logo.png",accentColorLabel:"Accent color",othersTitle:"Others",invoicePrefixLabel:"Invoice prefix",dateFormatLabel:"Date format",netTermDaysLabel:"Net term days",paymentTermsLabel:"Payment terms",defaultMemoLabel:"Default memo",invoiceFooterTextHint:"Leave blank to hide the footer line.",invoiceFooterTextLabel:"Invoice footer text",showTaxIdOnInvoices:"Show tax ID on invoices",showServicePeriods:"Show service periods",dunningScheduleTitle:"Dunning Schedule",dunningScheduleSubtitle:"Configure the sequence of actions taken when a payment fails",stepColumnHeader:"Step #",stepColumnHelp:"The order in which each dunning reminder runs.",daysAfterDueColumnHeader:"Days After Due",daysAfterDueColumnHelp:"Days after the invoice due date before this step runs.",actionColumnHelp:"What happens at this step (e.g. email the customer).",emailTemplateColumnHeader:"Email Template",generalDunningSettingsTitle:"General Dunning Settings",autoCollectionLabel:"Auto collection",maxRetryAttemptsLabel:"Max retry attempts",retryIntervalDaysLabel:"Retry interval (days)",saveDunningSettingsButtonLabel:"Save Dunning Settings",emailTemplatesTitle:"Email Templates",emailTemplatesSubtitle:"Customize the emails sent at each dunning step",escalationCapsuleLabel:"Escalation",subjectLineLabel:"Subject line",bodyLabel:"Body",qboSettingsPageTitle:"QBO Configuration",qboEnableSyncLabel:"Enable QuickBooks sync",qboEnableSyncDescription:"Sync invoices, payments, credit notes, and customers to QuickBooks Online.",qboAccountMappingsSectionTitle:"Account Mappings",qboAccountMappingsSectionDescription:"Choose which QuickBooks accounts each invoicing amount posts to.",qboCustomerMatchingSectionTitle:"Customer Matching",qboCustomerMatchingSectionDescription:"Customers are matched to existing QuickBooks records by email first, then by company name. Customers imported with a QuickBooks ID keep their existing link.",qboCustomerMatchingLabel:"When a customer syncs",qboBehaviorSectionTitle:"Sync Behavior",qboAutoCreateItemsLabel:"Auto-create items",qboAutoCreateItemsDescription:"Create missing QuickBooks items automatically when invoices sync.",qboTrackingCategoriesLabel:"Tracking categories",qboTrackingCategoriesDescription:"Tag synced transactions with QuickBooks classes.",qboClosedPeriodVoidLabel:"Closed-period voids as credit memos",qboClosedPeriodVoidDescription:"Record voids that fall in a closed accounting period as credit memos instead.",qboBackfillSectionTitle:"History Backfill",qboSyncStartDateLabel:"Sync start date",qboBackfillButtonLabel:"Backfill history",qboBackfillingButtonLabel:"Backfilling…",qboBackfillHint:"Re-queue invoicing records created on or after the sync start date.",qboBackfillRequiresSyncHint:"Enable and save QuickBooks sync to run a backfill.",qboSyncHealthSectionTitle:"Sync Health",qboSyncHealthEmptyLabel:"No sync activity yet.",qboFailedTasksTitle:"Failed syncs",qboFailedTaskAttemptsLabel:"{attempts} attempts",qboSaveButtonLabel:"Save QuickBooks Settings"},invoicingSubscriptionDetail:{changeTermEndTitle:"Change term end",changeTermEndDateLabel:"New term end date",pauseSubscriptionDateLabel:"Resume date",pauseSubscriptionHint:"Leave blank to pause without a resume date.",cancelSubscriptionMessage:"Cancel this subscription immediately? Use “Set non-renewing” to cancel at end of term instead.",cancelCommentPlaceholder:"Add any extra context (optional)",everyUnit:"Every ${unit}",everyPeriodUnits:"Every ${period} ${unit}s",charge:"Charge",viewInvoices:"View Invoices",reactivate:"Reactivate",cadenceCurrencySubtitle:'${billingCadence(subscription)} · ${currency ?? "USD"}',billingCycle:"Billing Cycle",unitPrice:"Unit Price",couponNumber:"Coupon #",appliedUsed:"Applied/Used",subscriptionNotFound:"Subscription not found.",cancellation:"Cancellation",cancelledOn:"Cancelled on",trialStart:"Trial start",trialEnd:"Trial end",daysRemaining:"Days remaining",planItemPrice:"Plan Item Price",currentTerm:"Current term",nextBilling:"Next billing",billingPeriod:"Billing period",dueInvoices:"Due invoices",totalDues:"Total dues",remainingCycles:"Remaining cycles",scheduledChanges:"Scheduled changes",setupFeeOneTime:"Setup fee (one-time)",startedDate:"Started Date",activationDate:"Activation Date",updatedDate:"Updated Date",dueSince:"Due Since",autoCollectionCount:"Auto Collection Count",subscriptionItems:"Subscription Items",noSubscriptionItems:"No subscription items.",noAddOns:"No add-ons.",coupons:"Coupons",noCoupons:"No coupons.",contractTerm:"Contract Term",contractId:"Contract ID",active:"active",contractPeriod:"Contract Period",actionAtTermEnd:"Action at term end",renew:"renew",cancelBeforeNoticePeriod:"Cancel before notice period",totalContractValue:"Total contract value"},invoicingSubscriptionForm:{billingFrequencyHalfYearly:"Half-Yearly",selectCustomerValidation:"Select a customer for this subscription.",selectPlanValidation:"Select a plan for this subscription.",editSubscriptionTitle:"Edit Subscription",subscriptionDetailsDescription:"Add details to create a new subscription.",planQuantityLabel:"Quantity",billingCyclesPlaceholder:"Renews forever",billingCyclesHint:"Paid invoices including the first one. Leave blank to renew forever.",startDateAfterTrialEndValidation:"Trial end date must be later than the start date.",addonsDescription:"Recurring add-ons billed on the same cycle.",noAddonsAvailable:"No add-ons available",selectAddonsPlaceholder:"Select add-ons",oneTimeChargesDescription:"Billed once on the first invoice.",oneTimeChargesTitle:"One Time Charges",noChargesAvailable:"No charges available",selectOneTimeChargesPlaceholder:"Select one time charges",referencesSchedulesDescription:"Trial, PO and coupon details.",referencesSchedulesTitle:"References & Schedules",setupFeeLabel:"Setup Fee",trialEndDateLabel:"Trial End Date",noCouponPlaceholder:"No coupon",shippingAddressDescription:"Optional address for shippable plans.",shipCountryLabel:"Country (ISO)",shipZipLabel:"ZIP / Postal"},invoicingSubscriptionList:{perPrefix:"Per ",everyPrefix:"Every ",noSubscriptionsMatchSearch:"No subscriptions match your search.",noSubscriptionsYet:"No subscriptions yet.",emptyStateDescription:"Bring in your historical subscription data by importing your subscriptions csv file",emptyStateTitle:"No Subscriptions Yet",searchPlaceholder:"Search by customer or plan"},invoicingTransactionDetail:{capture:"Capture",viewInvoice:"View Invoice",viewSubscription:"View Subscription",viewCustomer:"View Customer",unusedAmount:"Unused Amount",capturableAmount:"Capturable Amount",applied:"Applied",transactionNotFound:"Transaction not found.",transactionTitlePrefix:"Transaction ",transactionDetails:"Transaction Details",settledAt:"Settled At",refundedTransaction:"Refunded Transaction",customerAndSubscription:"Customer & Subscription",paymentMethodAndGateway:"Payment Method & Gateway",paymentSourceId:"Payment Source ID",gatewayAccount:"Gateway Account",idAtGateway:"ID at Gateway",security:"Security",threeDSecure:"3-D Secure",fraudFlag:"Fraud Flag",none:"None",fraudReason:"Fraud Reason",errorDetails:"Error Details",errorCode:"Error Code",errorMessage:"Error Message",linkedInvoices:"Linked Invoices",noLinkedInvoices:"No linked invoices.",linkedCreditNotes:"Linked Credit Notes",noLinkedCreditNotes:"No linked credit notes.",noRefunds:"No refunds."}},ALL_SUPPORTED_LOCALES=["en-US","en-IN","en"],toSupportedLocaleStrict=e=>stringToUnionStrict(e,ALL_SUPPORTED_LOCALES),localizedStringsMap={en:zeniStrings,"en-US":zeniStrings,"en-IN":zeniStrings};class AppLocale{getAppLocaleID(){return this.#e}getLocalizedStrings(){return localizedStringsMap[this.#e]}updateAppLocaleID(e){if(null==localizedStringsMap[e])throw Error(`strings are not available in ${e}`);updateZeniDateLocaleID(e),this.updateLibsLocale(e),this.#e=e,console.log(`Set the locale to ${this.#e}`)}currencyFormatter(e=0,t="standard"){switch(this.getAppLocaleID()){case"en-IN":return Intl.NumberFormat(this.getAppLocaleID(),{maximumFractionDigits:e,minimumFractionDigits:0,style:"currency",currency:"INR",currencySign:t});case"en-US":case"en":return Intl.NumberFormat("en-US",{maximumFractionDigits:e,minimumFractionDigits:0,style:"currency",currency:"USD",currencySign:t})}}numberFormatter(e=0){switch(this.getAppLocaleID()){case"en-IN":return Intl.NumberFormat(this.getAppLocaleID(),{maximumFractionDigits:e,minimumFractionDigits:0});case"en-US":case"en":return Intl.NumberFormat("en-US",{maximumFractionDigits:e,minimumFractionDigits:0})}}updateLibsLocale(e){numeral.locale(e.toLowerCase())}static registerNumeralForEnINLocale(){null==numeral.locales["en-in"]&&numeral.register("locale","en-in",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){const t=e%10;return 1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"₹"}})}static registerNumeralForEnUSLocale(){null==numeral.locales["en-us"]&&numeral.register("locale","en-us",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){const t=e%10;return 1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}})}#e="en";static#t=new AppLocale;static instance(){return this.registerNumeralForEnINLocale(),this.registerNumeralForEnUSLocale(),this.#t}}const appLocale=AppLocale.instance(),getWindowSize=e=>e<600?"small":e>=600&&e<905?"medium-compact":e>=905&&e<1240?"medium-regular":e>=1240&&e<1440?"large":e>=1440&&e<1920?"extra-large":e>=1920?"ultra-large":(console.warn("this can't happen!"),"medium-regular"),WindowSizeContext=React__default.createContext(getWindowSize(window.innerWidth)),useWindowSizeContext=()=>useContext(WindowSizeContext),WindowSizeProvider=e=>{const[t,n]=useState(e.fixedWindowSize??getWindowSize(window.innerWidth));return useEffect(()=>{const o=()=>{const o=getWindowSize(window.innerWidth);null==e.fixedWindowSize&&null!=t&&t!=o&&n(o)};return window.addEventListener("resize",o),()=>{window.removeEventListener("resize",o)}},[e.fixedWindowSize,t]),/* @__PURE__ */jsxRuntimeExports.jsx(WindowSizeContext.Provider,{value:t,children:e.children})},makeResponseSize=(e,t,n,o,i,r)=>({small:e,"medium-compact":t,"medium-regular":n??t,large:o??n??t,"extra-large":i??o??n??t,"ultra-large":r??i??o??n??t});class ResponsiveSized{constructor(e,t,n,o,i,r){this._size=makeResponseSize(e,t,n,o,i,r)}value(e="medium-regular"){switch(e){case"small":return this._size.small;case"medium-compact":return this._size["medium-compact"];case"medium-regular":return this._size["medium-regular"];case"large":return this._size.large;case"extra-large":return this._size["extra-large"];case"ultra-large":return this._size["ultra-large"]}}valuePx(e="medium-regular"){return`${this.value(e)}px`}valuePercentage(e="medium-regular"){return`${this.value(e)}%`}add(e){return new ResponsiveSized(this._size.small+e._size.small,this._size["medium-compact"]+e._size["medium-compact"],this._size["medium-regular"]+e._size["medium-regular"],this._size.large+e._size.large,this._size["extra-large"]+e._size["extra-large"],this._size["ultra-large"]+e._size["ultra-large"])}subtract(e){return new ResponsiveSized(this._size.small-e._size.small,this._size["medium-compact"]-e._size["medium-compact"],this._size["medium-regular"]-e._size["medium-regular"],this._size.large-e._size.large,this._size["extra-large"]-e._size["extra-large"],this._size["ultra-large"]-e._size["ultra-large"])}_size}const isMobileOrTabletView=e=>"small"===e||"medium-compact"===e,isMobilePhoneScreen=e=>"small"===e;var Colors=/* @__PURE__ */(e=>(e.brandColorOnyx="#162324",e.brandColorPearl="#FAFAFA",e.brandColorSapphire="#366170",e.brandColorSapphireDark="#26454F",e.brandColorSapphireLight="#D2E3E9",e.brandColorJade="#97C3B9",e.brandColorJadeDark="#508B7E",e.brandColorJadeLight="#D5E7E3",e.brandColorOpal="#C9ABC7",e.brandColorOpalDark="#855682",e.brandColorOpalLight="#E5D7E4",e.brandColorGold="#EEBA7D",e.brandColorGoldDark="#C27419",e.brandColorGoldLight="#F7E0C4",e.brandColorRuby="#AD584A",e.brandColorRubyDark="#9A4E42",e.brandColorRubyLight="#EBD4D1",e.primaryDark="#FAFAFA",e.primaryLight="#162324",e.backgroundThemeLight="#F3F7F7",e.backgroundThemeDark="#1B1C1C",e.championLight="#4B5253",e.championDark="#D4DBDB",e.heroLight="#757D7E",e.heroDark="#AAB4B5",e.neutralGrey1Light="#A6B0B1",e.neutralGrey1Dark="#727979",e.neutralGrey2Light="#D4DCDD",e.neutralGrey2Dark="#545B5C",e.neutralGrey3Light="#E9F0F0",e.neutralGrey3Dark="#3E4343",e.neutralGrey4Light="#FAFCFC",e.neutralGrey4Dark="#202222",e.neutralGrey5Light="#FFFFFF",e.neutralGrey5Dark="#2C2F2F",e.topExCustomColor="#90EE7D40",e.offerColor="#EF7F56",e.comingSoon="#5EBBF5",e.badgeBackground="#E9F0F033",e.dropShadowNormalLight="rgba(166, 177, 174, 0.24)",e.dropShadowNormalDark="rgba(0, 0, 0, 0.24)",e.dropShadowHoverLight="rgba(166, 177, 174, 0.8)",e.blackColor="#000000",e.billPayPromoColor="#8D6C9F",e.billPayPromoColorHover="rgba(238, 186, 125, 0.4)",e.billPayPromoBorderColorLight="#FBD1A0",e.billPayPromoBorderColorDark="#714B1E",e.billPayPromoBackGroundColorLight="#FFFBF5",e.reimbursementPromoColor="#5DB59A",e.reimbursementPromoColorHover="rgba(93, 181, 154, 0.4)",e.reimbursementPromoBorderColorLight="#CCE8DF",e.reimbursementPromoBorderColorDark="#545D5B",e.reimbursementPromoBackGroundColorLight="#EDFFF8",e.primaryWhite="#FEFEFE",e.rewardsPromoColor1="#397C93",e.rewardsPromoColor2="#065773",e.zeniAccountsPromoBackgroundColor="#D0E7E2",e.zeniAccountsPromoBackgroundColorLight="#D0E7E250",e.zeniAccountsPromoBackgroundColorDark="#3E434350",e.zeniAccountsPromoNavigationDotHoverColorLight="#36617032",e.zeniAccountsPromoNavigationDotHoverColorDark="#97C3B932",e.zeniAccountsPromoCardTitleLight="#4B4F53",e.chargeCardsGradientColor1="#ECECEC",e.chargeCardsGradientColor2="#626565",e.chargeCardsGradientColor3="#A8B1B1",e.chargeCardsGradientColor4="#444A4A",e.chargeCardBoxShadow1="rgba(132, 134, 137, 0.80)",e.chargeCardBoxShadow2="rgba(0, 0, 0, 0.35)",e.chargeCardBackgroundShadowLight="rgba(166,172,177,0.7)",e.chargeCardBackgroundShadowDark="rgba(0,0,0,0.8)",e.issueChargeCardBackgroundShadowLight="rgba(166,172,177,0.25)",e.issueChargeCardBackgroundShadowDark="rgba(0,0,0,0.25)",e.physicalCardBoxShadow="#68AAA0",e.chargeCardFaded="rgba(166, 176, 177, 0.65)",e.phoneSignalColor="#3C3C432E",e.batteryBorderColor="#3c3c4399",e.physicalCardBlueColor1="#eaeff8",e.physicalCardBlueColor2="#bdd4ee",e.physicalCardYellowColor1="#ffe9c6",e.physicalCardYellowColor2="#fff8ec",e.plaidVerificationBackground="rgb(213, 231, 227, 0.5)",e.tagDefaultBgLight="#ECEFF3",e.tagDefaultColorLight="#667085",e.tagDefaultBgDark="#1C2128",e.tagDefaultColorDark="#8C97A4",e.tagWarningBgLight="#FFF4E5",e.tagWarningColorLight="#C08A2E",e.tagWarningBgDark="#2A2416",e.tagWarningColorDark="#E6C27A",e.tagInfoBgLight="#E0EDFF",e.tagInfoColorLight="#1D62C0",e.tagInfoBgDark="#0E1E35",e.tagInfoColorDark="#7EB3F5",e.tagSuccessBgLight="#E8F5EE",e.tagSuccessColorLight="#3A8F5B",e.tagSuccessBgDark="#11241B",e.tagSuccessColorDark="#7FD9A6",e.tagAttentionBgLight="#FDEFF2",e.tagAttentionColorLight="#C23A57",e.tagAttentionBgDark="#2A1419",e.tagAttentionColorDark="#F29BB0",e.success="#36B37E",e.successDark="#1B806A",e.successLight="#D8FBDE",e.alert="#F0BC02",e.alertDark="#AC7F01",e.alertLight="#FEF7CB",e.important="#EB535D",e.importantDark="#A92949",e.importantLight="#FEE6DD",e.info="#1192E8",e.infoDark="#0855A7",e.infoLight="#CEF6FD",e.link="#4589FF",e.linkLight="#D9ECFF",e.linkDark="#224EB7",e.linkLighter="#D9ECFFAF",e.graphColor01="#EE7D7D",e.graphColor01Light="#F8C9C9",e.graphColor01Dark="#D81C1C",e.graphColor02="#EE7D90",e.graphColor02Light="#F8C9D1",e.graphColor02Dark="#D81C3C",e.graphColor03="#EE7DA3",e.graphColor03Light="#F8C9D9",e.graphColor03Dark="#D81C5B",e.graphColor04="#EE7DB5",e.graphColor04Light="#F8C9E0",e.graphColor04Dark="#D81C7A",e.graphColor05="#EE7DC8",e.graphColor05Light="#F8C9E8",e.graphColor05Dark="#D81C9A",e.graphColor06="#EE7DDB",e.graphColor06Light="#F8C9F0",e.graphColor06Dark="#D81CB9",e.graphColor07="#EE7DEE",e.graphColor07Light="#F8C9F8",e.graphColor07Dark="#D81CD8",e.graphColor08="#DB7DEE",e.graphColor08Light="#F0C9F8",e.graphColor08Dark="#B91CD8",e.graphColor09="#C87DEE",e.graphColor09Light="#E8C9F8",e.graphColor09Dark="#9A1CD8",e.graphColor10="#B67DEE",e.graphColor10Light="#E0C9F8",e.graphColor10Dark="#7A1CD8",e.graphColor11="#A37DEE",e.graphColor11Light="#D9C9F8",e.graphColor11Dark="#5B1CD8",e.graphColor12="#907DEE",e.graphColor12Light="#D1C9F8",e.graphColor12Dark="#3C1CD8",e.graphColor13="#7D7DEE",e.graphColor13Light="#C9C9F8",e.graphColor13Dark="#1C1CD8",e.graphColor14="#7D90EE",e.graphColor14Light="#C9D1F8",e.graphColor14Dark="#1C3CD8",e.graphColor15="#7DA3EE",e.graphColor15Light="#C9D9F8",e.graphColor15Dark="#1C5BD8",e.graphColor16="#7DB6EE",e.graphColor16Light="#C9E0F8",e.graphColor16Dark="#1C7AD8",e.graphColor17="#7DC8EE",e.graphColor17Light="#C9E8F8",e.graphColor17Dark="#1C9AD8",e.graphColor18="#7DDBEE",e.graphColor18Light="#C9F0F8",e.graphColor18Dark="#1CB9D8",e.graphColor19="#7DEEEE",e.graphColor19Light="#C9F8F8",e.graphColor19Dark="#1CD8D8",e.graphColor20="#7DEEDB",e.graphColor20Light="#C9F8F0",e.graphColor20Dark="#1CD8B9",e.graphColor21="#7DEEC8",e.graphColor21Light="#C9F8E8",e.graphColor21Dark="#1CD89A",e.graphColor22="#7DEEB5",e.graphColor22Light="#C9F8E0",e.graphColor22Dark="#1CD87A",e.graphColor23="#7DEEA3",e.graphColor23Light="#C9F8D9",e.graphColor23Dark="#1CD85B",e.graphColor24="#7DEE90",e.graphColor24Light="#C9F8D1",e.graphColor24Dark="#1CD83C",e.graphColor25="#7DEE7D",e.graphColor25Light="#C9F8C9",e.graphColor25Dark="#1CD81C",e.graphColor26="#90EE7D",e.graphColor26Light="#D1F8C9",e.graphColor26Dark="#3CD81C",e.graphColor27="#A3EE7D",e.graphColor27Light="#D9F8C9",e.graphColor27Dark="#5BD81C",e.graphColor28="#B5EE7D",e.graphColor28Light="#E0F8C9",e.graphColor28Dark="#7AD81C",e.graphColor29="#C8EE7D",e.graphColor29Light="#E8F8C9",e.graphColor29Dark="#9AD81C",e.graphColor30="#DBEE7D",e.graphColor30Light="#F0F8C9",e.graphColor30Dark="#B9D81C",e.graphColor31="#EEEE7D",e.graphColor31Light="#F8F8C9",e.graphColor31Dark="#D8D81C",e.graphColor32="#EEDB7D",e.graphColor32Light="#F8F0C9",e.graphColor32Dark="#D8B91C",e.graphColor33="#EEC87D",e.graphColor33Light="#F8E8C9",e.graphColor33Dark="#D89A1C",e.graphColor34="#EEB57D",e.graphColor34Light="#F8E0C9",e.graphColor34Dark="#D87A1C",e.graphColor35="#EEA37D",e.graphColor35Light="#F8D9C9",e.graphColor35Dark="#D85B1C",e.graphColor36="#EE907D",e.graphColor36Light="#F8D1C9",e.graphColor36Dark="#D83C1C",e.overlayLight="rgba(0, 0, 0, 0.40)",e.overlayDark="rgba(0, 0, 0, 0.75)",e.overlayBackgroundBlack="rgba(0, 0, 0, 0.50)",e.playButtonBackGroundColorLight="#16232466",e.playButtonBackGroundColorDark="#16232466",e.backgroundGradient1Light="rgba(54, 97, 112, 0.20)",e.backgroundGradient1Dark="rgba(151, 195, 185, 0.20)",e.backgroundGradient2Light="rgba(255, 255, 255, 0.20)",e.backgroundGradient2Dark="rgba(0, 0, 0, 0.20)",e.backgroundGradient3Light="rgba(212, 220, 221, 1)",e.boxShadowElevation="rgba(166, 172, 177, 0.24)",e.Elevation1Light="0px 1px 2px 0px rgba(166, 172, 177, 0.25)",e.Elevation2Light="0px 2px 8px 0px rgba(166, 172, 177, 0.8)",e.Elevation3Light="1px 3px 24px 0px rgba(166, 172, 177, 0.8)",e.Elevation1Dark="0px 1px 2px 0px rgba(0, 0, 0, 0.25)",e.Elevation2Dark="0px 2px 8px 0px rgba(0, 0, 0, 0.8)",e.Elevation3Dark="1px 3px 24px 0px rgba(0, 0, 0, 0.8)",e.scrollbarBoxShadow="rgba(0, 0, 0, 0.1)",e.drawerBackground="rgba(0, 0, 0, 0.7)",e.modalBackground="rgba(0, 0, 0, 0.64)",e.whiteGradient="rgba(255, 255, 255, 0)",e.whiteGradientDark="rgba(255, 255, 255, 0.1)",e.whiteGradientLight="rgba(255, 255, 255, 0.9)",e.runwayRed="#eb535d",e.runwayYellow="#e8aa0b",e.runwayGreen="#51c571",e.optionBorderLight="#E9ECF0",e.selectMenuItem="#1d1f20",e.aiCfoGradient1="#6D3FD8",e.aiCfoGradient2="#BD54CF",e.aiCfoGradient3="#CF6CC9",e.aiCfoGradient4="#EE609C",e.aiVibrantPurple="#7135FF",e.aiCfoLinearGradient="linear-gradient(315deg, #6D3FD8 34.09%, #BD54CF 43.64%, #CF6CC9 50%, #EE609C 56.36%, #EE609C 65.91%)",e.aiCalloutBorderGradient="linear-gradient(315deg, #6D3FD8 31.79%, #BD54CF 42.72%, #CF6CC9 50%, #EE609C 57.28%, #EE609C 68.21%)",e.aiShimmerTextGradient="linear-gradient(90deg, #EE609C 25%, #6D3FD8 50%, #EE609C 75%)",e.aiChainOfThoughtLinearGradient="linear-gradient(322.09deg, #6D3FD8 7.71%, #BD54CF 30.79%, #CF6CC9 54.3%, #EE609C 78.68%, #EE609C 98.27%);",e.aiChainOfThoughtBackgroundGradient="linear-gradient(296.16deg, #6D3FD8b3 20.44%, #BD54CFb3 40.68%, #CF6CC9b3 54.18%, #EE609Cb3 67.68%, #EE609Cb3 87.92%)",e.aiCfoScrollAreaFadeGradientLight="linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #FFFFFF 100%)",e.aiCfoScrollAreaFadeGradientDark="linear-gradient(180deg, rgba(0,0,0, 0) 0%, #2C2F2F 100%)",e.receiptAgentLinearGradient="linear-gradient(315deg, #6D3FD8 31.79%, #BD54CF 42.72%, #CF6CC9 50%, #EE609C 57.28%,#EE609C 68.21%)",e.aiParsingBorderConicGradient="conic-gradient(\n from var(--ai-conic-from) at 50% 50%,\n #EE609C 0deg,\n #CF6CC9 45deg,\n #7135FF 90deg,\n #CF6CC9 135deg,\n #EE609C 180deg,\n #CF6CC9 225deg,\n #7135FF 270deg,\n #CF6CC9 315deg,\n #EE609C 360deg\n )",e.aiCapsuleSurfaceLight="linear-gradient(90deg, rgba(255, 255, 255, 0.88) 0%, rgba(255, 255, 255, 0.88) 100%), linear-gradient(315deg, #6D3FD8 31.79%, #BD54CF 42.72%, #CF6CC9 50%, #EE609C 57.28%,#EE609C 68.21%)",e.aiCapsuleBorderLight="#D6C9F4",e.aiTooltipBorderGradient="linear-gradient(180deg, #EE609C 0%, #EB61A0 14%, #EE609C 27%, #CF6CC9 45%, #B85ED7 64%, #A050E4 73%, #7135FF 100%)",e.gradientMask="linear-gradient(#FFFFFF 0 0) content-box, linear-gradient(#FFFFFF 0 0)",e.promoCardGradient1="linear-gradient(\n 261.58deg,\n rgba(255, 255, 255, 0) 2.24%,\n rgba(255, 255, 255, 0.2) 49.28%,\n rgba(255, 255, 255, 0) 94.54%\n )",e.promoCardGradient2="linear-gradient(\n 257.68deg,\n rgba(255, 255, 255, 0) 24.71%,\n rgba(255, 255, 255, 0.3) 44.88%,\n rgba(255, 255, 255, 0) 64.29%\n )",e.promoCardGradient1Strong="linear-gradient(\n 261.58deg,\n rgba(255, 255, 255, 0) 2.24%,\n rgba(255, 255, 255, 0.4) 49.28%,\n rgba(255, 255, 255, 0) 94.54%\n )",e.promoCardGradient2Strong="linear-gradient(\n 257.68deg,\n rgba(255, 255, 255, 0) 24.71%,\n rgba(255, 255, 255, 0.6) 44.88%,\n rgba(255, 255, 255, 0) 64.29%\n )",e.taskInProgressbackgroundLight="rgba(233, 240, 240, 0.5)",e.taskInReviewLabelColor="#0A6FDB",e.taskInReviewbackgroundColor="#E6FAFE",e.taskInHoldLabelColor="#CD3259",e))(Colors||{}),BoxShadow=/* @__PURE__ */(e=>(e.dropdownMenu="0 4px 16px rgba(0, 0, 0, 0.12)",e))(BoxShadow||{});const sp=[0,4,8,16,24,32,40,48,56,64,72,80,100];var Space=/* @__PURE__ */(e=>(e.sp0="0px",e.sp1="4px",e.sp2="8px",e.sp3="16px",e.sp4="24px",e.sp5="32px",e.sp6="40px",e.sp7="48px",e.sp8="56px",e.sp9="64px",e.sp10="72px",e.sp11="80px",e.sp12="100px",e))(Space||{}),BorderStroke=/* @__PURE__ */(e=>(e.hairline="1px",e.regular="2px",e))(BorderStroke||{});const OriginalFont="Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif",fonts={Original:OriginalFont,Roboto:"Roboto",Manrope:"Manrope","PT Mono":"PT Mono"},customFontSizes={chargeCard:17.8},customCountCapsulePadding={padding:"0px 5.5px"};var FontWeight=/* @__PURE__ */(e=>(e[e.thin=100]="thin",e[e.extraLight=200]="extraLight",e[e.light=300]="light",e[e.regular=400]="regular",e[e.medium=500]="medium",e[e.semiBold=600]="semiBold",e[e.bold=700]="bold",e[e.extraBold=800]="extraBold",e[e.superBold=900]="superBold",e))(FontWeight||{}),FontStyle=/* @__PURE__ */(e=>(e.normal="normal",e.italic="italic",e))(FontStyle||{});const textTransform={uppercase:"uppercase",none:""};class TextStyle{_fontSize;_fontWeight;_lineHeight;_letterSpacing;_fontFamily;_textTransform;constructor(e,t,n,o="normal",i="Original",r="none"){this._fontSize=e,this._fontWeight=t,this._lineHeight=n,this._letterSpacing=o,this._fontFamily=i,this._textTransform=r}get fontFamily(){return fonts[this._fontFamily]}get fontSize(){return`${this._fontSize}px`}get fontSizeValue(){return this._fontSize}get fontWeight(){return this._fontWeight}get lineHeight(){return"auto"===this._lineHeight?"auto":`${this._lineHeight}px`}get lineHeightValue(){return"auto"===this._lineHeight?1.5*this._fontSize:this._lineHeight}get letterSpacing(){return"number"==typeof this._letterSpacing?`${this._letterSpacing}px`:this._letterSpacing}get textTransform(){return"none"===this._textTransform?"":textTransform[this._textTransform]}get css(){let e="";return"none"!==this._textTransform&&(e+=`text-transform: ${textTransform[this._textTransform]};`),`\n font-family: ${fonts[this._fontFamily]};\n font-size: ${this._fontSize}px;\n font-weight: ${this._fontWeight};\n line-height: ${"auto"===this._lineHeight?"auto":`${this._lineHeight}px`};\n letter-spacing: ${"number"==typeof this._letterSpacing?`${this._letterSpacing}px`:this._letterSpacing};\n ${e}\n `}get cssObject(){const e={fontFamily:fonts[this._fontFamily],fontSize:`${this._fontSize}px`,fontWeight:this._fontWeight,lineHeight:"auto"===this._lineHeight?"auto":`${this._lineHeight}px`,letterSpacing:"number"==typeof this._letterSpacing?`${this._letterSpacing}px`:this._letterSpacing};return"none"!==this._textTransform&&(e.textTransform=textTransform[this._textTransform]),e}get cssPartialObject(){const e=this.cssObject;return t=>{const n={};return t.forEach(t=>{n[t]=e[t]}),n}}}const eyebrowSuperSmall={eyebrowSuperSmallMedium:new TextStyle(8,500,12,.32,"Manrope","uppercase")},eyebrowExtraSmall={eyebrowExtraSmallMedium:new TextStyle(10,500,15,.4,"Manrope","uppercase")},eyebrowSmall={eyebrowSmallExtraLight:new TextStyle(12,200,18,.48,"Manrope","uppercase"),eyebrowSmallLight:new TextStyle(12,300,18,.48,"Manrope","uppercase"),eyebrowSmallRegular:new TextStyle(12,400,18,.48,"Manrope","uppercase"),eyebrowSmallMedium:new TextStyle(12,500,18,.48,"Manrope","uppercase"),eyebrowSmallSemiBold:new TextStyle(12,600,18,.48,"Manrope","uppercase"),eyebrowSmallBold:new TextStyle(12,700,18,.48,"Manrope","uppercase"),eyebrowSmallExtraBold:new TextStyle(12,800,18,.48,"Manrope","uppercase")},eyebrowStandard={eyebrowStandardExtraLight:new TextStyle(16,200,24,.64,"Manrope","uppercase"),eyebrowStandardLight:new TextStyle(16,300,24,.64,"Manrope","uppercase"),eyebrowStandardRegular:new TextStyle(16,400,24,.64,"Manrope","uppercase"),eyebrowStandardMedium:new TextStyle(16,500,24,.64,"Manrope","uppercase"),eyebrowStandardSemiBold:new TextStyle(16,600,24,.64,"Manrope","uppercase"),eyebrowStandardBold:new TextStyle(16,700,24,.64,"Manrope","uppercase"),eyebrowStandardExtraBold:new TextStyle(16,800,24,.64,"Manrope","uppercase")},eyebrowLarge={eyebrowLargeExtraLight:new TextStyle(22,200,33,.88,"Manrope","uppercase"),eyebrowLargeLight:new TextStyle(22,300,33,.88,"Manrope","uppercase"),eyebrowLargeRegular:new TextStyle(22,400,33,.88,"Manrope","uppercase"),eyebrowLargeMedium:new TextStyle(22,500,33,.88,"Manrope","uppercase"),eyebrowLargeSemiBold:new TextStyle(22,600,33,.88,"Manrope","uppercase"),eyebrowLargeBold:new TextStyle(22,700,33,.88,"Manrope","uppercase"),eyebrowLargeExtraBold:new TextStyle(22,800,33,.88,"Manrope")},extraTiny={extraTinyExtraLight:new TextStyle(5,100,"auto","normal","Manrope"),extraTinyLight:new TextStyle(5,300,"auto","normal","Manrope"),extraTinyRegular:new TextStyle(5,400,"auto","normal","Manrope"),extraTinyMedium:new TextStyle(5,500,"auto","normal","Manrope"),extraTinySemiBold:new TextStyle(5,700,"auto","normal","Manrope"),extraTinyBold:new TextStyle(5,700,"auto","normal","Manrope"),extraTinyExtraBold:new TextStyle(5,900,"auto","normal","Manrope")},tiny={tinyExtraLight:new TextStyle(8,100,"auto","normal","Manrope"),tinyLight:new TextStyle(8,300,"auto","normal","Manrope"),tinyRegular:new TextStyle(8,400,"auto","normal","Manrope"),tinyMedium:new TextStyle(8,500,"auto","normal","Manrope"),tinySemiBold:new TextStyle(8,700,"auto","normal","Manrope"),tinyBold:new TextStyle(8,700,"auto","normal","Manrope"),tinyExtraBold:new TextStyle(8,900,"auto","normal","Manrope")},superSmall={superSmallExtraLight:new TextStyle(10,100,"auto","normal","Manrope"),superSmallLight:new TextStyle(10,300,"auto","normal","Manrope"),superSmallRegular:new TextStyle(10,400,"auto","normal","Manrope"),superSmallMedium:new TextStyle(10,500,"auto","normal","Manrope"),superSmallSemiBold:new TextStyle(10,700,"auto","normal","Manrope"),superSmallBold:new TextStyle(10,700,"auto","normal","Manrope"),superSmallExtraBold:new TextStyle(10,900,"auto","normal","Manrope")},extraSmall={extraSmallExtraLight:new TextStyle(11,100,"auto","normal","Manrope"),extraSmallLight:new TextStyle(11,300,"auto","normal","Manrope"),extraSmallRegular:new TextStyle(11,400,"auto","normal","Manrope"),extraSmallMedium:new TextStyle(11,500,"auto","normal","Manrope"),extraSmallSemiBold:new TextStyle(11,600,"auto","normal","Manrope"),extraSmallBold:new TextStyle(11,700,"auto","normal","Manrope"),extraSmallExtraBold:new TextStyle(11,900,"auto","normal","Manrope")},small={smallExtraLight:new TextStyle(12,100,"auto","normal","Manrope"),smallLight:new TextStyle(12,300,"auto","normal","Manrope"),smallRegular:new TextStyle(12,400,"auto","normal","Manrope"),smallMedium:new TextStyle(12,500,"auto","normal","Manrope"),smallSemiBold:new TextStyle(12,600,"auto","normal","Manrope"),smallBold:new TextStyle(12,700,"auto","normal","Manrope"),smallExtraBold:new TextStyle(12,900,"auto","normal","Manrope")},standard$2={standardExtraLight:new TextStyle(14,100,"auto","normal","Manrope"),standardLight:new TextStyle(14,300,"auto","normal","Manrope"),standardRegular:new TextStyle(14,400,"auto","normal","Manrope"),standardMedium:new TextStyle(14,500,"auto","normal","Manrope"),standardSemiBold:new TextStyle(14,600,"auto","normal","Manrope"),standardBold:new TextStyle(14,700,"auto","normal","Manrope"),standardExtraBold:new TextStyle(14,900,"auto","normal","Manrope")},large={largeExtraLight:new TextStyle(16,200,"auto","normal","Manrope"),largeLight:new TextStyle(16,300,"auto","normal","Manrope"),largeRegular:new TextStyle(16,400,"auto","normal","Manrope"),largeMedium:new TextStyle(16,500,"auto","normal","Manrope"),largeSemiBold:new TextStyle(16,600,"auto","normal","Manrope"),largeBold:new TextStyle(16,700,"auto","normal","Manrope"),largeExtraBold:new TextStyle(16,800,"auto","normal","Manrope")},extraLarge={extraLargeExtraLight:new TextStyle(18,200,"auto","normal","Manrope"),extraLargeLight:new TextStyle(18,300,"auto","normal","Manrope"),extraLargeRegular:new TextStyle(18,400,"auto","normal","Manrope"),extraLargeMedium:new TextStyle(18,500,"auto","normal","Manrope"),extraLargeSemiBold:new TextStyle(18,600,"auto","normal","Manrope"),extraLargeBold:new TextStyle(18,700,"auto","normal","Manrope"),extraLargeExtraBold:new TextStyle(18,800,"auto","normal","Manrope")},h7={h7ExtraLight:new TextStyle(20,200,"auto","normal","Manrope"),h7Light:new TextStyle(20,300,"auto","normal","Manrope"),h7Regular:new TextStyle(20,400,"auto","normal","Manrope"),h7Medium:new TextStyle(20,500,"auto","normal","Manrope"),h7SemiBold:new TextStyle(20,600,"auto","normal","Manrope"),h7Bold:new TextStyle(20,700,"auto","normal","Manrope"),h7ExtraBold:new TextStyle(20,800,"auto","normal","Manrope")},h6={h6ExtraLight:new TextStyle(24,200,"auto","normal","Manrope"),h6Light:new TextStyle(24,300,"auto","normal","Manrope"),h6Regular:new TextStyle(24,400,"auto","normal","Manrope"),h6Medium:new TextStyle(24,500,"auto","normal","Manrope"),h6SemiBold:new TextStyle(24,600,"auto","normal","Manrope"),h6Bold:new TextStyle(24,700,"auto","normal","Manrope"),h6ExtraBold:new TextStyle(24,800,"auto","normal","Manrope")},h5={h5ExtraLight:new TextStyle(32,200,"auto","normal","Manrope"),h5Light:new TextStyle(32,300,"auto","normal","Manrope"),h5Regular:new TextStyle(32,400,"auto","normal","Manrope"),h5Medium:new TextStyle(32,500,"auto","normal","Manrope"),h5SemiBold:new TextStyle(32,600,"auto","normal","Manrope"),h5Bold:new TextStyle(32,700,"auto","normal","Manrope"),h5ExtraBold:new TextStyle(32,800,"auto","normal","Manrope")},h4={h4ExtraLight:new TextStyle(36,200,"auto","normal","Manrope"),h4Light:new TextStyle(36,300,"auto","normal","Manrope"),h4Regular:new TextStyle(36,400,"auto","normal","Manrope"),h4Medium:new TextStyle(36,500,"auto","normal","Manrope"),h4SemiBold:new TextStyle(36,600,"auto","normal","Manrope"),h4Bold:new TextStyle(36,700,"auto","normal","Manrope"),h4ExtraBold:new TextStyle(36,800,"auto","normal","Manrope")},h3={h3ExtraLight:new TextStyle(40,200,"auto","normal","Manrope"),h3Light:new TextStyle(40,300,"auto","normal","Manrope"),h3Regular:new TextStyle(40,400,"auto","normal","Manrope"),h3Medium:new TextStyle(40,500,"auto","normal","Manrope"),h3SemiBold:new TextStyle(40,600,"auto","normal","Manrope"),h3Bold:new TextStyle(40,700,"auto","normal","Manrope"),h3ExtraBold:new TextStyle(40,800,"auto","normal","Manrope")},h2={h2ExtraLight:new TextStyle(48,200,"auto","normal","Manrope"),h2Light:new TextStyle(48,300,"auto","normal","Manrope"),h2Regular:new TextStyle(48,400,"auto","normal","Manrope"),h2Medium:new TextStyle(48,500,"auto","normal","Manrope"),h2SemiBold:new TextStyle(48,600,"auto","normal","Manrope"),h2Bold:new TextStyle(48,700,"auto","normal","Manrope"),h2ExtraBold:new TextStyle(48,800,"auto","normal","Manrope")},h1={h1ExtraLight:new TextStyle(56,200,"auto","normal","Manrope"),h1Light:new TextStyle(56,300,"auto","normal","Manrope"),h1Regular:new TextStyle(56,400,"auto","normal","Manrope"),h1Medium:new TextStyle(56,500,"auto","normal","Manrope"),h1SemiBold:new TextStyle(56,600,"auto","normal","Manrope"),h1Bold:new TextStyle(56,700,"auto","normal","Manrope"),h1ExtraBold:new TextStyle(56,800,"auto","normal","Manrope")},_textStyles={...eyebrowSuperSmall,...eyebrowExtraSmall,...eyebrowSmall,...eyebrowStandard,...eyebrowLarge,...extraTiny,...tiny,...superSmall,...extraSmall,...small,...standard$2,...large,...extraLarge,...h7,...h6,...h5,...h4,...h3,...h2,...h1,chargeCardNumberText:new TextStyle(24,400,31.2,"normal","PT Mono"),businessCardText:new TextStyle(customFontSizes.chargeCard,400,22.5,"normal","Roboto"),accountsPromoHighlightText:new TextStyle(40,300,40,"normal","Manrope")},textStyles=_textStyles,StyledText$q=styled$2.div`
|
|
2
2
|
font-family: ${OriginalFont};
|
|
3
3
|
font-style: ${FontStyle.normal};
|
|
4
4
|
`,EyebrowSuperSmallMedium=styled$2(StyledText$q)`
|
|
@@ -2429,19 +2429,19 @@ return jsxRuntimeExports.jsxs(ActiveThreadContainer,{className:"active-thread-co
|
|
|
2429
2429
|
`,CountValue=styled$2(SuperSmallSemiBoldSp)`
|
|
2430
2430
|
position: absolute;
|
|
2431
2431
|
color: ${e=>e.theme.colors.grey5};
|
|
2432
|
-
`,THREAD_ESTIMATED_HEIGHT_PX=400,PLACEMENT_GAP_PX=sp[2],findClippingAncestor=e=>{let t=e.parentElement;for(;null!=t;){if("visible"!==getComputedStyle(t).overflowY)return t;t=t.parentElement}return null},getClippingBounds=e=>{if(null==e)return{top:0,bottom:window.innerHeight};const t=e.getBoundingClientRect();return{top:Math.max(t.top,0),bottom:Math.min(t.bottom,window.innerHeight)}},useThreadPopupPlacement=(e,t)=>{const[n,o]=useState("down");return useLayoutEffect(()=>{if(!t||null==e||"undefined"==typeof window)return;let n=null,i=!1,r=0,a=!1;const s=()=>{if(a)return;const t=e.current;if(null==t)return cancelAnimationFrame(r),void(r=requestAnimationFrame(s));i||(n=findClippingAncestor(t),i=!0);const l=t.getBoundingClientRect(),c=getClippingBounds(n),d=THREAD_ESTIMATED_HEIGHT_PX+PLACEMENT_GAP_PX,p=c.bottom-l.bottom,u=l.top-c.top;o(p<d&&u>d?"up":"down")};return s(),window.addEventListener("scroll",s,!0),window.addEventListener("resize",s),()=>{a=!0,cancelAnimationFrame(r),window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s)}},[e,t]),n},getPlacementOverrideStyle=e=>"up"===e?{top:0,bottom:"auto",transform:`translateY(calc(-100% - ${Space.sp2}))`,height:"fit-content"}:{height:"fit-content"},useFixedThreadPopupStyle=(e,t)=>{const[n,o]=useState(void 0);return useLayoutEffect(()=>{if("undefined"==typeof window)return void o(void 0);let t=0,n=!1;const i=()=>{if(n)return;const t=e.current;if(null==t)return void r();const i=t.getBoundingClientRect(),a=THREAD_ESTIMATED_HEIGHT_PX+PLACEMENT_GAP_PX,s=window.innerHeight-i.bottom<a&&i.top>a,l=Math.max(PLACEMENT_GAP_PX,window.innerWidth-i.right+PLACEMENT_GAP_PX),c=s?void 0:i.bottom+PLACEMENT_GAP_PX,d=s?window.innerHeight-i.top+PLACEMENT_GAP_PX:void 0;o(e=>null!=e&&e.top===(c??"auto")&&e.bottom===(d??"auto")&&e.right===l?e:{position:"fixed",right:l,top:c??"auto",bottom:d??"auto",height:"fit-content"})};function r(){cancelAnimationFrame(t),t=requestAnimationFrame(i)}return i(),window.addEventListener("scroll",r,{capture:!0,passive:!0}),window.addEventListener("resize",r,{passive:!0}),()=>{n=!0,cancelAnimationFrame(t),window.removeEventListener("scroll",r,{capture:!0}),window.removeEventListener("resize",r)}},[e,t]),n},{common:{texts:{reply:reply,replies:replies,hideReply:hideReply,hideReplies:hideReplies,noReply:noReply,private:visibilityPrivate},numbers:{maximumUserCount:maximumUserCount,maximumUserAvatarCount:maximumUserAvatarCount},strings:{underscore:underscore$3,space:space$d,empty:empty$_,atTheRate:atTheRate$1,plus:plus$7}},collaboration:{threads:{placeholder:{replyAComment:replyAComment$c},tooltip:{resolveComment:resolveComment$b,unResolveComment:unResolveComment$b},badge:{rowNotInReport:rowNotInReport}}}}=appLocale.getLocalizedStrings(),MAX_HEIGHT=300,TAG_TOP_PADDING="2px",THREAD_CONTAINER_WIDTH="360px",COMPOSER_EDITOR_MAX_HEIGHT="160px",AVATAR_OVERLAP_OFFSET="-6px",THREAD_ID_DATA_ATTR$1="data-thread-id",ExpandedThread=e=>{const{thread:t,showReactions:n,showActions:o,showDeleted:i,showResolveAction:r,showAttachments:a,style:s,dataThreadId:l,
|
|
2433
|
-
return jsxRuntimeExports.jsxs(Container$7y,{style:s,onClick:()=>{
|
|
2434
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(Thread,{ref:
|
|
2435
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(ReplyContainer,{isExpanded:
|
|
2432
|
+
`,THREAD_ESTIMATED_HEIGHT_PX=400,PLACEMENT_GAP_PX=sp[2],findClippingAncestor=e=>{let t=e.parentElement;for(;null!=t;){if("visible"!==getComputedStyle(t).overflowY)return t;t=t.parentElement}return null},getClippingBounds=e=>{if(null==e)return{top:0,bottom:window.innerHeight};const t=e.getBoundingClientRect();return{top:Math.max(t.top,0),bottom:Math.min(t.bottom,window.innerHeight)}},useThreadPopupPlacement=(e,t)=>{const[n,o]=useState("down");return useLayoutEffect(()=>{if(!t||null==e||"undefined"==typeof window)return;let n=null,i=!1,r=0,a=!1;const s=()=>{if(a)return;const t=e.current;if(null==t)return cancelAnimationFrame(r),void(r=requestAnimationFrame(s));i||(n=findClippingAncestor(t),i=!0);const l=t.getBoundingClientRect(),c=getClippingBounds(n),d=THREAD_ESTIMATED_HEIGHT_PX+PLACEMENT_GAP_PX,p=c.bottom-l.bottom,u=l.top-c.top;o(p<d&&u>d?"up":"down")};return s(),window.addEventListener("scroll",s,!0),window.addEventListener("resize",s),()=>{a=!0,cancelAnimationFrame(r),window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s)}},[e,t]),n},getPlacementOverrideStyle=e=>"up"===e?{top:0,bottom:"auto",transform:`translateY(calc(-100% - ${Space.sp2}))`,height:"fit-content"}:{height:"fit-content"},useFixedThreadPopupStyle=(e,t)=>{const[n,o]=useState(void 0);return useLayoutEffect(()=>{if("undefined"==typeof window)return void o(void 0);let t=0,n=!1;const i=()=>{if(n)return;const t=e.current;if(null==t)return void r();const i=t.getBoundingClientRect(),a=THREAD_ESTIMATED_HEIGHT_PX+PLACEMENT_GAP_PX,s=window.innerHeight-i.bottom<a&&i.top>a,l=Math.max(PLACEMENT_GAP_PX,window.innerWidth-i.right+PLACEMENT_GAP_PX),c=s?void 0:i.bottom+PLACEMENT_GAP_PX,d=s?window.innerHeight-i.top+PLACEMENT_GAP_PX:void 0;o(e=>null!=e&&e.top===(c??"auto")&&e.bottom===(d??"auto")&&e.right===l?e:{position:"fixed",right:l,top:c??"auto",bottom:d??"auto",height:"fit-content"})};function r(){cancelAnimationFrame(t),t=requestAnimationFrame(i)}return i(),window.addEventListener("scroll",r,{capture:!0,passive:!0}),window.addEventListener("resize",r,{passive:!0}),()=>{n=!0,cancelAnimationFrame(t),window.removeEventListener("scroll",r,{capture:!0}),window.removeEventListener("resize",r)}},[e,t]),n},{common:{texts:{reply:reply,replies:replies,hideReply:hideReply,hideReplies:hideReplies,noReply:noReply,private:visibilityPrivate},numbers:{maximumUserCount:maximumUserCount,maximumUserAvatarCount:maximumUserAvatarCount},strings:{underscore:underscore$3,space:space$d,empty:empty$_,atTheRate:atTheRate$1,plus:plus$7}},collaboration:{threads:{placeholder:{replyAComment:replyAComment$c},tooltip:{resolveComment:resolveComment$b,unResolveComment:unResolveComment$b},badge:{rowNotInReport:rowNotInReport,reportLevel:reportLevel}}}}=appLocale.getLocalizedStrings(),MAX_HEIGHT=300,TAG_TOP_PADDING="2px",THREAD_CONTAINER_WIDTH="360px",COMPOSER_EDITOR_MAX_HEIGHT="160px",AVATAR_OVERLAP_OFFSET="-6px",THREAD_ID_DATA_ATTR$1="data-thread-id",ExpandedThread=e=>{const{thread:t,showReactions:n,showActions:o,showDeleted:i,showResolveAction:r,showAttachments:a,style:s,dataThreadId:l,isPageLevel:c,isTargetUnavailable:d,autoFocus:p,expandedText:u,isExpanded:m,allowExpand:h,textOverrides:g,setIsExpanded:x,onThreadDelete:f,onCommentDelete:y,onResolvedChange:S,onCommentEdit:C,onThreadClick:$,onReplyElementClick:b}=e,v=useRef(null),{replyComposerPlaceholder:E=replyAComment$c,threadResolve:w=resolveComment$b,threadUnResolve:R=unResolveComment$b}=g,A=useGlobalInfoContext(),j=useToolkitContext(),T=j.analytics,{resolved:I}=t,k=useCreateComment(),L=t.comments.filter(e=>null==e.deletedAt),D=I&&L.length<=1;useEffect(()=>{if(v.current){const e=v.current.offsetHeight;v.current.style.overflowY=e<MAX_HEIGHT?"clip":"auto"}},[t]);const _="internal"===t.metadata.visibility;/* @__PURE__ */
|
|
2433
|
+
return jsxRuntimeExports.jsxs(Container$7y,{style:s,onClick:()=>{$(t.metadata)},...null!=l&&{[THREAD_ID_DATA_ATTR$1]:l},"data-testid":generateDataTestId("comments-expanded-thread",t.metadata.entityType),children:[_?/* @__PURE__ */jsxRuntimeExports.jsx(PrivateBadge,{children:visibilityPrivate}):null,!0===c?/* @__PURE__ */jsxRuntimeExports.jsx(PageLevelBadge,{children:reportLevel}):null,!0===d?/* @__PURE__ */jsxRuntimeExports.jsx(UnavailableBadge,{children:rowNotInReport}):null,
|
|
2434
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(Thread,{ref:v,thread:t,showReactions:n,showActions:o,showDeletedComments:i,showResolveAction:r,showAttachments:a,indentCommentContent:!0,showComposer:!1,onThreadDelete:f,onCommentDelete:e=>y?.(e,m),onResolvedChange:e=>{S?.(e);const n="cockpit"!==t.metadata.application;e&&n&&T.trackCommentActivity(t.metadata.tab,"resolved",t.metadata.companyName,A.controllersList.controllers.map(e=>getFullName$1(e)),t.resolved?"resolved":"open",{name:getLoggedInUserName(A.loggedInUser),email:A.loggedInUser?.userEmail??""})},onCommentEdit:C,overrides:{THREAD_RESOLVE:w,THREAD_UNRESOLVE:R}}),D?/* @__PURE__ */jsxRuntimeExports.jsx(EmptyReplyContainer,{}):/* @__PURE__ */jsxRuntimeExports.jsxs(RepliesContainer,{children:[
|
|
2435
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(ReplyContainer,{isExpanded:m,allowExpand:h,onClick:e=>{e.stopPropagation(),x(!m),b?.(!m)},"data-testid":generateDataTestId("comments-reply",t.metadata.entityType),children:u}),I?null:/* @__PURE__ */jsxRuntimeExports.jsx(ComposerContainer$3,{"data-testid":generateDataTestId("comments-thread-composer",t.metadata.entityType),children:/* @__PURE__ */jsxRuntimeExports.jsx(Composer$1,{threadId:t.id,overrides:{COMPOSER_PLACEHOLDER:E},showAttachments:a,defaultCollapsed:!0,autoFocus:p,onComposerSubmit:({body:e,attachments:n},o)=>{o.preventDefault();let i=null;try{i=k({threadId:t.id,body:e,attachments:n})}catch(r){return void j.sentry.captureException(r,{tags:{feature:"comments",action:"createComment"}})}if(null==i)return void j.sentry.captureMessage("createComment returned null — reply not persisted",{level:"error",tags:{feature:"comments",action:"createComment"}});"cockpit"!==t.metadata.application&&T.trackCommentAdded(t.metadata.tab,t.metadata.entityType,"reply",t.metadata.companyName,A.controllersList.controllers.map(e=>getFullName$1(e)),{name:getLoggedInUserName(A.loggedInUser),email:A.loggedInUser?.userEmail??""})}})})]})]})},CollapsibleThread=({thread:e,textOverrides:t,dataThreadId:n,isPageLevel:o,isTargetUnavailable:i,autoExpand:r=!1,autoFocus:a=!0,showDeleted:s=!1,showAttachments:l=!1,showResolveAction:c=!0,showReactions:d=!0,showActions:p="hover",allowExpand:u=!0,indentContent:m=!0,withRoomProvider:h=!1,style:g,onThreadClick:x,onThreadDelete:f,onCommentDelete:y,onResolvedChange:S,onCommentEdit:C,onReplyElementClick:$})=>{const[b,v]=useState(r);useEffect(()=>{v(r)},[r]);const E=e.comments.filter(e=>null==e.deletedAt),w=(E.length-1>0?E.length-1:0)>1?hideReplies:hideReply,R=E[0],{metadata:{application:A,companyId:j}}=e,T=useOverrides();return b?h?/* @__PURE__ */jsxRuntimeExports.jsx(RoomProvider,{id:`${A}${underscore$3}${j}`,children:/* @__PURE__ */jsxRuntimeExports.jsx(ExpandedThread,{thread:e,style:g,dataThreadId:n,isPageLevel:o,isTargetUnavailable:i,showReactions:d,showActions:p,showDeleted:s,showResolveAction:c,showAttachments:l,indentContent:m,onThreadDelete:f,onCommentDelete:e=>y?.(e,b),onResolvedChange:S,onCommentEdit:C,expandedText:w,isExpanded:b,autoExpand:r,autoFocus:a,allowExpand:u,setIsExpanded:v,textOverrides:t,onThreadClick:()=>{x(e.metadata)}})}):/* @__PURE__ */jsxRuntimeExports.jsx(ExpandedThread,{thread:e,style:g,dataThreadId:n,isPageLevel:o,isTargetUnavailable:i,showReactions:d,showActions:p,showDeleted:s,indentContent:!0,showAttachments:l,showResolveAction:c,onThreadDelete:f,onCommentDelete:e=>y?.(e,b),onResolvedChange:S,onCommentEdit:C,expandedText:w,isExpanded:b,autoExpand:r,autoFocus:a,allowExpand:u,setIsExpanded:v,textOverrides:t,onThreadClick:()=>{x(e.metadata)}}):/* @__PURE__ */jsxRuntimeExports.jsxs(Container$7y,{style:g,onClick:()=>{x(e.metadata)},...null!=n&&{[THREAD_ID_DATA_ATTR$1]:n},children:["internal"===e.metadata.visibility?/* @__PURE__ */jsxRuntimeExports.jsx(PrivateBadge,{children:visibilityPrivate}):null,!0===o?/* @__PURE__ */jsxRuntimeExports.jsx(PageLevelBadge,{children:reportLevel}):null,!0===i?/* @__PURE__ */jsxRuntimeExports.jsx(UnavailableBadge,{children:rowNotInReport}):null,h?/* @__PURE__ */jsxRuntimeExports.jsxs(StyledDiv$13,{className:"lb-root lb-comment",children:[
|
|
2436
2436
|
/* @__PURE__ */jsxRuntimeExports.jsx(StyledDiv$13,{className:"lb-comment-header",children:/* @__PURE__ */jsxRuntimeExports.jsxs(StyledDiv$13,{className:"lb-comment-details",children:[
|
|
2437
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(Avatar$2,{className:"lb-comment-avatar",userId:
|
|
2437
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(Avatar$2,{className:"lb-comment-avatar",userId:R.userId}),
|
|
2438
2438
|
/* @__PURE__ */jsxRuntimeExports.jsxs(StyledSpan$9,{className:"lb-comment-details-labels",children:[
|
|
2439
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(User,{className:"lb-comment-author",userId:
|
|
2439
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(User,{className:"lb-comment-author",userId:R.userId}),
|
|
2440
2440
|
/* @__PURE__ */jsxRuntimeExports.jsxs(StyledSpan$9,{className:"lb-comment-date",children:[
|
|
2441
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(Timestamp$1,{locale:
|
|
2442
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(StyledSpan$9,{className:"lb-comment-date-edited",children:
|
|
2443
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(StyledDiv$13,{className:"lb-comment-content",children:/* @__PURE__ */jsxRuntimeExports.jsx(Comment.Body,{className:"lb-comment-body",body:
|
|
2444
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(ReplyContainer,{isExpanded
|
|
2441
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(Timestamp$1,{locale:T.locale,date:R.createdAt,className:"lb-comment-date-created"}),null!=R.editedAt&&null!=R.body&&/* @__PURE__ */jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[space$d,
|
|
2442
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(StyledSpan$9,{className:"lb-comment-date-edited",children:T.COMMENT_EDITED})]})]})]})]})}),
|
|
2443
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(StyledDiv$13,{className:"lb-comment-content",children:/* @__PURE__ */jsxRuntimeExports.jsx(Comment.Body,{className:"lb-comment-body",body:R.body,components:{Mention:({mention:e})=>/* @__PURE__ */jsxRuntimeExports.jsx(CommentMention,{userId:e.id}),Link:CommentLink}})})]}):/* @__PURE__ */jsxRuntimeExports.jsx(Comment$1,{comment:E[0],indentContent:m,showActions:p,showDeleted:s,showAttachments:l,showReactions:d,onCommentDelete:e=>y?.(e,b)}),
|
|
2444
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(ReplyContainer,{isExpanded:b,allowExpand:u,"data-testid":generateDataTestId("comments-reply-container",e.metadata.entityType),onClick:e=>{!1!==u&&(e.stopPropagation(),v(!b),$?.(!b))},children:/* @__PURE__ */jsxRuntimeExports.jsx(ReplyElement,{nonDeletedComments:E,allowExpand:u})})]})},ReplyElement=({nonDeletedComments:e,allowExpand:t})=>{const n=useTheme(),o=e.length-1>0?e.length-1:0;if(0===o)/* @__PURE__ */
|
|
2445
2445
|
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:t?reply:noReply});const i=Array.from(new Set(e.slice(1).map(e=>e.userId))),r=i.slice(0,maximumUserAvatarCount),a=i.length-maximumUserAvatarCount;/* @__PURE__ */
|
|
2446
2446
|
return jsxRuntimeExports.jsxs(ReplyElementWrapper,{children:[
|
|
2447
2447
|
/* @__PURE__ */jsxRuntimeExports.jsxs(ReplyUsersContainer,{className:"lb-root",children:[r.map((e,t)=>0!==t?/* @__PURE__ */jsxRuntimeExports.jsx(Avatar$2,{className:"lb-reply-avatar",userId:e,style:{width:Space.sp3,height:Space.sp3,boxSizing:"content-box",border:`2px solid ${n.colors.grey5}`,marginLeft:"-6px"}},e):/* @__PURE__ */jsxRuntimeExports.jsx(Avatar$2,{className:"lb-reply-avatar",userId:e,style:{width:Space.sp3,height:Space.sp3}},e)),a>0&&/* @__PURE__ */jsxRuntimeExports.jsxs(ReplyUsersCount,{className:"reply-users-count",children:[a>maximumUserCount?maximumUserCount:plus$7,a>maximumUserCount?plus$7:a]})]}),
|
|
@@ -2462,6 +2462,9 @@ return jsxRuntimeExports.jsx(StyledSpan$9,{className:"lb-name lb-user "+t,"data-
|
|
|
2462
2462
|
border-radius: ${Space.sp3};
|
|
2463
2463
|
background-color: ${e=>e.theme.colors.grey3};
|
|
2464
2464
|
color: ${e=>e.theme.colors.hero};
|
|
2465
|
+
`,PageLevelBadge=styled$2(PrivateBadge)`
|
|
2466
|
+
background-color: transparent;
|
|
2467
|
+
border: ${BorderStroke.hairline} solid ${e=>e.theme.colors.grey3};
|
|
2465
2468
|
`,UnavailableBadge=styled$2(PrivateBadge)`
|
|
2466
2469
|
/* Onyx rather than the matching gold dark, which is only 2.8:1 on this
|
|
2467
2470
|
* background and fails AA at this text size. */
|
|
@@ -10021,14 +10024,14 @@ return jsxRuntimeExports.jsxs(Segment$2,{ref:e=>{null!=e&&(c.current[n]=e)},onCl
|
|
|
10021
10024
|
align-items: center;
|
|
10022
10025
|
justify-content: center;
|
|
10023
10026
|
`,{common:{texts:{open:open$3,resolved:resolved},strings:{empty:empty$Y}},collaboration:{threads:{placeholder:{addANewComment:addANewComment$d}}}}=appLocale.getLocalizedStrings(),ALL_THREAD_DRAWER_TABS=["open","resolved"],toThreadDrawerTabType=e=>stringToUnion(e,ALL_THREAD_DRAWER_TABS),tabSwitcherData=[{label:open$3,id:open$3.toLowerCase()},{label:resolved,id:resolved.toLowerCase()}],AllThreadsDrawer=e=>{const{isDrawerOpen:t,disablePortal:n=!1,syncsAppMainMargin:o=!0,threads:i,onCloseAllThreadsDrawer:r,...a}=e,[s,l]=useState(toThreadDrawerTabType("open")),{setCommentsDrawerState:c,closeRequestSeq:d}=useCommentsDrawer(),p=useRef(d),u=useRef(r);useEffect(()=>{u.current=r},[r]),useEffect(()=>{d>p.current&&t&&u.current(),p.current=d},[d,t]),useEffect(()=>{if(!0===o)return c({isOpen:t,width:COMMENTS_DRAWER_DEFAULT_WIDTH}),()=>{c({isOpen:!1,width:0})}},[t,c,o]),useEffect(()=>{if(!t)return;const e=e=>{"Escape"===e.key&&r()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[t,r]);const m=useMemo(()=>(i??[])?.filter(e=>e.resolved===("resolved"===s)),[s,i]),h=useMemo(()=>(i??[]).filter(e=>e.resolved).length,[i]),g=(i??[]).length-h,x=a.highlightThreadId,f=useRef(null);useEffect(()=>{if(null==x)return void(f.current=null);if(f.current===x)return;const e=(i??[]).find(e=>e.id===x);null!=e&&(f.current=x,l(toThreadDrawerTabType(e.resolved?"resolved":"open")))},[x,i]);const y=/* @__PURE__ */jsxRuntimeExports.jsx(FixedRightPanel,{isOpen:t,"aria-hidden":!t,"data-testid":generateDataTestId("comments-drawer",a.filter.entityType),children:null!=i?/* @__PURE__ */jsxRuntimeExports.jsx(AllThreads,{...a,openCount:g,resolvedCount:h,selectedTab:s,setSelectedTab:l,threads:m,onCloseAllThreadsDrawer:r}):t?/* @__PURE__ */jsxRuntimeExports.jsx(AllThreadsSection,{...a,onCloseAllThreadsDrawer:r}):null});return n?y:createPortal(y,document.body)},AllThreadsSection=e=>{const{filter:t,threadMetadata:n,textOverrides:o,...i}=e,[r,a]=useState(toThreadDrawerTabType("open")),{threads:s,isLoading:l,hasFetchedAll:c,isFetchingMore:d,fetchMore:p}=useThreads({query:{metadata:t}});useEffect(()=>{const e=setTimeout(()=>p?.(),0);return()=>clearTimeout(e)});const u=l||!0===d||!0!==c,m=(s??[]).filter(e=>e.resolved),h=(s??[]).filter(e=>!e.resolved);/* @__PURE__ */
|
|
10024
|
-
return jsxRuntimeExports.jsx(AllThreads,{...i,threadMetadata:n,textOverrides:o,isLoading:u,openCount:h.length,resolvedCount:m.length,threads:"resolved"===r?m:h,selectedTab:r,setSelectedTab:a})},ESTIMATED_THREAD_ROW_HEIGHT=170,THREAD_LIST_OVERSCAN=8,THREAD_ROW_GAP=Space.sp3,THREAD_LIST_BOTTOM_PADDING=Space.sp5,ThreadRow=memo$c(({index:e,style:t,data:n})=>{const{threads:o,setRowHeight:i,renderThread:r,highlightThreadId:a}=n,s=o[e],l=s?.id,c=useRef(null),d=e===o.length-1;return useLayoutEffect(()=>{const e=c.current;if(null==e||null==l)return;const t=()=>i(l,e.offsetHeight);t();const n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[i,l,d]),null==s?null:/* @__PURE__ */jsxRuntimeExports.jsx("div",{style:t,children:/* @__PURE__ */jsxRuntimeExports.jsx(ThreadRowContent,{ref:c,isHighlighted:l===a,style:{paddingBottom:d?THREAD_LIST_BOTTOM_PADDING:THREAD_ROW_GAP},children:r(s)})})});ThreadRow.displayName="ThreadRow";const AllThreads=e=>{const t=useRef(null),n=useTheme(),{drawerTitle:o,threadMetadata:i,allowComposer:r=!1,showDeleted:a=!1,showReactions:s=!0,showActions:l="hover",showAttachments:c=!1,indentContent:d=!0,allowExpand:p=!0,autoExpand:u=!1,autoFocus:m=!1,highlightThreadId:h,preventResolvedThreadClick:g=!1,
|
|
10025
|
-
return jsxRuntimeExports.jsx(CollapsibleThread,{thread:e,isTargetUnavailable:t,style:{
|
|
10027
|
+
return jsxRuntimeExports.jsx(AllThreads,{...i,threadMetadata:n,textOverrides:o,isLoading:u,openCount:h.length,resolvedCount:m.length,threads:"resolved"===r?m:h,selectedTab:r,setSelectedTab:a})},ESTIMATED_THREAD_ROW_HEIGHT=170,THREAD_LIST_OVERSCAN=8,THREAD_ROW_GAP=Space.sp3,THREAD_LIST_BOTTOM_PADDING=Space.sp5,ThreadRow=memo$c(({index:e,style:t,data:n})=>{const{threads:o,setRowHeight:i,renderThread:r,highlightThreadId:a}=n,s=o[e],l=s?.id,c=useRef(null),d=e===o.length-1;return useLayoutEffect(()=>{const e=c.current;if(null==e||null==l)return;const t=()=>i(l,e.offsetHeight);t();const n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[i,l,d]),null==s?null:/* @__PURE__ */jsxRuntimeExports.jsx("div",{style:t,children:/* @__PURE__ */jsxRuntimeExports.jsx(ThreadRowContent,{ref:c,isHighlighted:l===a,style:{paddingBottom:d?THREAD_LIST_BOTTOM_PADDING:THREAD_ROW_GAP},children:r(s)})})});ThreadRow.displayName="ThreadRow";const AllThreads=e=>{const t=useRef(null),n=useTheme(),{drawerTitle:o,threadMetadata:i,allowComposer:r=!1,showDeleted:a=!1,showReactions:s=!0,showActions:l="hover",showAttachments:c=!1,indentContent:d=!0,allowExpand:p=!0,autoExpand:u=!1,autoFocus:m=!1,highlightThreadId:h,preventResolvedThreadClick:g=!1,pageLevelThreadIds:x,unavailableThreadIds:f,withRoomProvider:y=!1,textOverrides:S,style:C,threadsContainerStyle:$,collapsibleThreadStyle:b,drawerSectionStyle:v,contentWrapperStyle:E,threads:w,isLoading:R,openCount:A,resolvedCount:j,selectedTab:T,setSelectedTab:I,onThreadClick:k,onCloseAllThreadsDrawer:L}=e,{composerPlaceholder:D=addANewComment$d}=S,[_,P]=useState(!1);useEffect(()=>{P(!1)},[h]);const B=_?void 0:h,M=useMemo(()=>sortThreads(w),[w]),O=useRef(null),F=useRef(/* @__PURE__ */new Map),N=useRef(M);N.current=M;const z=useRef(h);z.current=h;const H=useRef(null),V=useCallback((e,t)=>{O.current?.scrollToItem(t,"smart"),F.current.has(e)&&(H.current=e)},[]),W=useCallback((e,t)=>{if(F.current.get(e)===t)return;F.current.set(e,t),O.current?.resetAfterIndex(0,!0);const n=z.current;if(null!=n&&H.current!==n){const e=N.current.findIndex(e=>e.id===n);e>=0&&V(n,e)}},[V]),U=useCallback(e=>F.current.get(M[e]?.id??"")??ESTIMATED_THREAD_ROW_HEIGHT,[M]);useEffect(()=>{O.current?.resetAfterIndex(0,!0)},[M]);const G=useCallback(e=>{const t=!0===f?.has(e.id),n=!0===x?.has(e.id);/* @__PURE__ */
|
|
10028
|
+
return jsxRuntimeExports.jsx(CollapsibleThread,{thread:e,isPageLevel:n,isTargetUnavailable:t,style:{...b,cursor:g&&e.resolved||t?"initial":void 0},withRoomProvider:y,showDeleted:a,showActions:l,allowExpand:p,autoFocus:m,autoExpand:u,showAttachments:c,showReactions:s,indentContent:d,textOverrides:S,onThreadClick:n=>{g&&e.resolved||t||k(n,e.id)}})},[p,u,m,b,d,g,x,f,l,c,a,s,S,y,k]),q=useMemo(()=>({threads:M,setRowHeight:W,renderThread:G,highlightThreadId:B}),[M,W,G,B]);return useEffect(()=>{if(null==h)return void(H.current=null);if(H.current===h)return;const e=M.findIndex(e=>e.id===h);e>=0&&V(h,e)},[h,M,V]),/* @__PURE__ */jsxRuntimeExports.jsx(Container$7j,{style:C,children:/* @__PURE__ */jsxRuntimeExports.jsxs(DrawerSection,{style:v,children:[
|
|
10026
10029
|
/* @__PURE__ */jsxRuntimeExports.jsxs(TitleSection$3,{children:[
|
|
10027
10030
|
/* @__PURE__ */jsxRuntimeExports.jsx(EmptyElement$3,{}),
|
|
10028
10031
|
/* @__PURE__ */jsxRuntimeExports.jsx(DrawerTitle$1,{children:o}),
|
|
10029
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(CloseIconWrapper$8,{onClick:
|
|
10030
|
-
/* @__PURE__ */jsxRuntimeExports.jsxs(ContentWrapper$8,{style:
|
|
10031
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(StyledTabSwitcher,{allTabs:[{...tabSwitcherData[0],countDetails:{count:
|
|
10032
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(CloseIconWrapper$8,{onClick:L,"data-testid":generateDataTestId("close-comments-drawer"),children:/* @__PURE__ */jsxRuntimeExports.jsx(StyledCloseIcon$13,{})})]}),
|
|
10033
|
+
/* @__PURE__ */jsxRuntimeExports.jsxs(ContentWrapper$8,{style:E,children:[
|
|
10034
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(StyledTabSwitcher,{allTabs:[{...tabSwitcherData[0],countDetails:{count:A,isFetching:R}},{...tabSwitcherData[1],countDetails:{count:j,isFetching:R}}],selectedTab:T,containerStyle:{borderBottom:`1px solid ${n.colors.grey3}`,marginBottom:Space.sp4},onTabChange:e=>I(toThreadDrawerTabType(e.id))}),!0===R?/* @__PURE__ */jsxRuntimeExports.jsx(BusyContainer$f,{children:/* @__PURE__ */jsxRuntimeExports.jsx(ActivityIndicator,{size:"Standard",style:{color:"inherit"},start:!0})}):/* @__PURE__ */jsxRuntimeExports.jsx(ThreadsContainer$1,{style:$,onClick:()=>P(!0),children:/* @__PURE__ */jsxRuntimeExports.jsx(AutoSizer,{children:({height:e,width:n})=>/* @__PURE__ */jsxRuntimeExports.jsx(VariableSizeList,{ref:O,outerRef:t,className:"threads-virtual-scroll",height:e,width:n,itemCount:M.length,itemKey:e=>M[e]?.id??e,itemSize:U,overscanCount:THREAD_LIST_OVERSCAN,itemData:q,children:ThreadRow})})}),r&&null!=i&&!1===R&&"resolved"!==T?/* @__PURE__ */jsxRuntimeExports.jsx(ThreadComposer,{threadMetadata:i,composerPlaceholder:D,showAttachments:c,createThreadCallback:()=>t.current?.scrollTo({top:0})}):null]})]})})},ThreadComposer=({threadMetadata:e,composerPlaceholder:t,showAttachments:n,createThreadCallback:o})=>{const i=useCreateThread(),r=useGlobalInfoContext(),a=useToolkitContext().analytics,s=useCallback(({body:t,attachments:n},s)=>{s.preventDefault(),s.stopPropagation(),null!=e&&(i({body:t,attachments:n,metadata:e}),o());"cockpit"!==e.application&&a.trackCommentAdded(e.tab,e.entityType,"reply",e.companyName,r.controllersList.controllers.map(e=>getFullName$1(e)),{name:getLoggedInUserName(r.loggedInUser),email:r.loggedInUser?.userEmail??empty$Y})},[i,o,e,a,r.controllersList.controllers,r.loggedInUser]);/* @__PURE__ */
|
|
10032
10035
|
return jsxRuntimeExports.jsx(ComposerContainer$2,{"data-testid":generateDataTestId("remi-thread-composer"),children:/* @__PURE__ */jsxRuntimeExports.jsx(Composer$1,{onComposerSubmit:s,overrides:{COMPOSER_PLACEHOLDER:t},defaultCollapsed:!0,autoFocus:!1,showAttachments:n})})},FixedRightPanel=styled$2.div`
|
|
10033
10036
|
position: fixed;
|
|
10034
10037
|
right: 0;
|
|
@@ -11822,7 +11825,7 @@ return jsxRuntimeExports.jsxs(ModalContainer$h,{windowSize:a,role:"presentation"
|
|
|
11822
11825
|
padding-top: ${e=>D$4S.ButtonContainerPaddingTop.valuePx(e.windowSize)};
|
|
11823
11826
|
`,StyledDiv$X=styled$2.div``,StyledSSNCardTemplate=styled$2(SvgSsnCardFront)`
|
|
11824
11827
|
transform: scale(1, 0.9);
|
|
11825
|
-
`,BottomHeader=styled$2(H6Medium)``;function _mergeNamespaces$1(e,t){return t.forEach(function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach(function(n){if("default"!==n&&!(n in e)){var o=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,o.get?o:{enumerable:!0,get:function(){return t[n]}})}})}),Object.freeze(e)}function copyExifWithoutOrientation(e,t){return new Promise(function(n,o){let i;return getApp1Segment(e).then(function(e){try{return i=e,n(new Blob([t.slice(0,2),i,t.slice(2)],{type:"image/jpeg"}))}catch(r){return o(r)}},o)})}const getApp1Segment=e=>new Promise((t,n)=>{const o=new FileReader;o.addEventListener("load",({target:{result:e}})=>{const o=new DataView(e);let i=0;if(65496!==o.getUint16(i))return n("not a valid JPEG");for(i+=2;;){const r=o.getUint16(i);if(65498===r)break;const a=o.getUint16(i+2);if(65505===r&&1165519206===o.getUint32(i+4)){const r=i+10;let s;switch(o.getUint16(r)){case 18761:s=!0;break;case 19789:s=!1;break;default:return n("TIFF header contains invalid endian")}if(42!==o.getUint16(r+2,s))return n("TIFF header contains invalid version");const l=o.getUint32(r+4,s),c=r+l+2+12*o.getUint16(r+l,s);for(let e=r+l+2;e<c;e+=12)if(274==o.getUint16(e,s)){if(3!==o.getUint16(e+2,s))return n("Orientation data type is invalid");if(1!==o.getUint32(e+4,s))return n("Orientation data count is invalid");o.setUint16(e+8,1,s);break}return t(e.slice(i,i+2+a))}i+=2+a}return t(new Blob)}),o.readAsArrayBuffer(e)});var e={},t={get exports(){return e},set exports(t){e=t}},r2,i3,UZIP2;UZIP2={},t.exports=UZIP2,UZIP2.parse=function(e,t){for(var n=UZIP2.bin.readUshort,o=UZIP2.bin.readUint,i=0,r={},a=new Uint8Array(e),s=a.length-4;101010256!=o(a,s);)s--;i=s,i+=4;var l=n(a,i+=4);n(a,i+=2);var c=o(a,i+=2),d=o(a,i+=4);i+=4,i=d;for(var p=0;p<l;p++){o(a,i),i+=4,i+=4,i+=4,o(a,i+=4),c=o(a,i+=4);var u=o(a,i+=4),m=n(a,i+=4),h=n(a,i+2),g=n(a,i+4);i+=6;var x=o(a,i+=8);i+=4,i+=m+h+g,UZIP2._readLocal(a,x,r,c,u,t)}return r},UZIP2._readLocal=function(e,t,n,o,i,r){var a=UZIP2.bin.readUshort,s=UZIP2.bin.readUint;s(e,t),a(e,t+=4),a(e,t+=2);var l=a(e,t+=2);s(e,t+=2),s(e,t+=4),t+=4;var c=a(e,t+=8),d=a(e,t+=2);t+=2;var p=UZIP2.bin.readUTF8(e,t,c);if(t+=c,t+=d,r)n[p]={size:i,csize:o};else{var u=new Uint8Array(e.buffer,t);if(0==l)n[p]=new Uint8Array(u.buffer.slice(t,t+o));else{if(8!=l)throw"unknown compression method: "+l;var m=new Uint8Array(i);UZIP2.inflateRaw(u,m),n[p]=m}}},UZIP2.inflateRaw=function(e,t){return UZIP2.F.inflate(e,t)},UZIP2.inflate=function(e,t){return e[0],e[1],UZIP2.inflateRaw(new Uint8Array(e.buffer,e.byteOffset+2,e.length-6),t)},UZIP2.deflate=function(e,t){null==t&&(t={level:6});var n=0,o=new Uint8Array(50+Math.floor(1.1*e.length));o[n]=120,o[n+1]=156,n+=2,n=UZIP2.F.deflateRaw(e,o,n,t.level);var i=UZIP2.adler(e,0,e.length);return o[n+0]=i>>>24&255,o[n+1]=i>>>16&255,o[n+2]=i>>>8&255,o[n+3]=i>>>0&255,new Uint8Array(o.buffer,0,n+4)},UZIP2.deflateRaw=function(e,t){null==t&&(t={level:6});var n=new Uint8Array(50+Math.floor(1.1*e.length)),o=UZIP2.F.deflateRaw(e,n,o,t.level);return new Uint8Array(n.buffer,0,o)},UZIP2.encode=function(e,t){null==t&&(t=!1);var n=0,o=UZIP2.bin.writeUint,i=UZIP2.bin.writeUshort,r={};for(var a in e){var s=!UZIP2._noNeed(a)&&!t,l=e[a],c=UZIP2.crc.crc(l,0,l.length);r[a]={cpr:s,usize:l.length,crc:c,file:s?UZIP2.deflateRaw(l):l}}for(var a in r)n+=r[a].file.length+30+46+2*UZIP2.bin.sizeUTF8(a);n+=22;var d=new Uint8Array(n),p=0,u=[];for(var a in r){var m=r[a];u.push(p),p=UZIP2._writeHeader(d,p,a,m,0)}var h=0,g=p;for(var a in r)m=r[a],u.push(p),p=UZIP2._writeHeader(d,p,a,m,1,u[h++]);var x=p-g;return o(d,p,101010256),p+=4,i(d,p+=4,h),i(d,p+=2,h),o(d,p+=2,x),o(d,p+=4,g),p+=4,p+=2,d.buffer},UZIP2._noNeed=function(e){var t=e.split(".").pop().toLowerCase();return-1!="png,jpg,jpeg,zip".indexOf(t)},UZIP2._writeHeader=function(e,t,n,o,i,r){var a=UZIP2.bin.writeUint,s=UZIP2.bin.writeUshort,l=o.file;return a(e,t,0==i?67324752:33639248),t+=4,1==i&&(t+=2),s(e,t,20),s(e,t+=2,0),s(e,t+=2,o.cpr?8:0),a(e,t+=2,0),a(e,t+=4,o.crc),a(e,t+=4,l.length),a(e,t+=4,o.usize),s(e,t+=4,UZIP2.bin.sizeUTF8(n)),s(e,t+=2,0),t+=2,1==i&&(t+=2,t+=2,a(e,t+=6,r),t+=4),t+=UZIP2.bin.writeUTF8(e,t,n),0==i&&(e.set(l,t),t+=l.length),t},UZIP2.crc={table:function(){for(var e=new Uint32Array(256),t=0;t<256;t++){for(var n=t,o=0;o<8;o++)1&n?n=3988292384^n>>>1:n>>>=1;e[t]=n}return e}(),update:function(e,t,n,o){for(var i=0;i<o;i++)e=UZIP2.crc.table[255&(e^t[n+i])]^e>>>8;return e},crc:function(e,t,n){return 4294967295^UZIP2.crc.update(4294967295,e,t,n)}},UZIP2.adler=function(e,t,n){for(var o=1,i=0,r=t,a=t+n;r<a;){for(var s=Math.min(r+5552,a);r<s;)i+=o+=e[r++];o%=65521,i%=65521}return i<<16|o},UZIP2.bin={readUshort:function(e,t){return e[t]|e[t+1]<<8},writeUshort:function(e,t,n){e[t]=255&n,e[t+1]=n>>8&255},readUint:function(e,t){return 16777216*e[t+3]+(e[t+2]<<16|e[t+1]<<8|e[t])},writeUint:function(e,t,n){e[t]=255&n,e[t+1]=n>>8&255,e[t+2]=n>>16&255,e[t+3]=n>>24&255},readASCII:function(e,t,n){for(var o="",i=0;i<n;i++)o+=String.fromCharCode(e[t+i]);return o},writeASCII:function(e,t,n){for(var o=0;o<n.length;o++)e[t+o]=n.charCodeAt(o)},pad:function(e){return e.length<2?"0"+e:e},readUTF8:function(e,t,n){for(var o,i="",r=0;r<n;r++)i+="%"+UZIP2.bin.pad(e[t+r].toString(16));try{o=decodeURIComponent(i)}catch(a){return UZIP2.bin.readASCII(e,t,n)}return o},writeUTF8:function(e,t,n){for(var o=n.length,i=0,r=0;r<o;r++){var a=n.charCodeAt(r);if(4294967168&a)if(4294965248&a)if(4294901760&a){if(4292870144&a)throw"e";e[t+i]=240|a>>18,e[t+i+1]=128|a>>12&63,e[t+i+2]=128|a>>6&63,e[t+i+3]=128|63&a,i+=4}else e[t+i]=224|a>>12,e[t+i+1]=128|a>>6&63,e[t+i+2]=128|63&a,i+=3;else e[t+i]=192|a>>6,e[t+i+1]=128|63&a,i+=2;else e[t+i]=a,i++}return i},sizeUTF8:function(e){for(var t=e.length,n=0,o=0;o<t;o++){var i=e.charCodeAt(o);if(4294967168&i)if(4294965248&i)if(4294901760&i){if(4292870144&i)throw"e";n+=4}else n+=3;else n+=2;else n++}return n}},UZIP2.F={},UZIP2.F.deflateRaw=function(e,t,n,o){var i=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]][o],r=UZIP2.F.U,a=UZIP2.F._goodIndex;UZIP2.F._hash;var s=UZIP2.F._putsE,l=0,c=n<<3,d=0,p=e.length;if(0==o){for(;l<p;)s(t,c,l+(v=Math.min(65535,p-l))==p?1:0),c=UZIP2.F._copyExact(e,l,v,t,c+8),l+=v;return c>>>3}var u=r.lits,m=r.strt,h=r.prev,g=0,x=0,f=0,y=0,S=0,C=0;for(p>2&&(m[C=UZIP2.F._hash(e,0)]=0),l=0;l<p;l++){if(S=C,l+1<p-2){C=UZIP2.F._hash(e,l+1);var $=l+1&32767;h[$]=m[C],m[C]=$}if(d<=l){(g>14e3||x>26697)&&p-l>100&&(d<l&&(u[g]=l-d,g+=2,d=l),c=UZIP2.F._writeBlock(l==p-1||d==p?1:0,u,g,y,e,f,l-f,t,c),g=x=y=0,f=l);var b=0;l<p-2&&(b=UZIP2.F._bestMatch(e,l,h,S,Math.min(i[2],p-l),i[3]));var v=b>>>16,E=65535&b;if(0!=b){E=65535&b;var w=a(v=b>>>16,r.of0);r.lhst[257+w]++;var R=a(E,r.df0);r.dhst[R]++,y+=r.exb[w]+r.dxb[R],u[g]=v<<23|l-d,u[g+1]=E<<16|w<<8|R,g+=2,d=l+v}else r.lhst[e[l]]++;x++}}for(f==l&&0!=e.length||(d<l&&(u[g]=l-d,g+=2,d=l),c=UZIP2.F._writeBlock(1,u,g,y,e,f,l-f,t,c),g=0,x=0,g=x=y=0,f=l);7&c;)c++;return c>>>3},UZIP2.F._bestMatch=function(e,t,n,o,i,r){var a=32767&t,s=n[a],l=a-s+32768&32767;if(s==a||o!=UZIP2.F._hash(e,t-l))return 0;for(var c=0,d=0,p=Math.min(32767,t);l<=p&&0!=--r&&s!=a;){if(0==c||e[t+c]==e[t+c-l]){var u=UZIP2.F._howLong(e,t,l);if(u>c){if(d=l,(c=u)>=i)break;l+2<u&&(u=l+2);for(var m=0,h=0;h<u-2;h++){var g=t-l+h+32768&32767,x=g-n[g]+32768&32767;x>m&&(m=x,s=g)}}}l+=(a=s)-(s=n[a])+32768&32767}return c<<16|d},UZIP2.F._howLong=function(e,t,n){if(e[t]!=e[t-n]||e[t+1]!=e[t+1-n]||e[t+2]!=e[t+2-n])return 0;var o=t,i=Math.min(e.length,t+258);for(t+=3;t<i&&e[t]==e[t-n];)t++;return t-o},UZIP2.F._hash=function(e,t){return(e[t]<<8|e[t+1])+(e[t+2]<<4)&65535},UZIP2.saved=0,UZIP2.F._writeBlock=function(e,t,n,o,i,r,a,s,l){var c,d,p,u,m,h,g,x,f,y=UZIP2.F.U,S=UZIP2.F._putsF,C=UZIP2.F._putsE;y.lhst[256]++,d=(c=UZIP2.F.getTrees())[0],p=c[1],u=c[2],m=c[3],h=c[4],g=c[5],x=c[6],f=c[7];var $=32+(l+3&7?8-(l+3&7):0)+(a<<3),b=o+UZIP2.F.contSize(y.fltree,y.lhst)+UZIP2.F.contSize(y.fdtree,y.dhst),v=o+UZIP2.F.contSize(y.ltree,y.lhst)+UZIP2.F.contSize(y.dtree,y.dhst);v+=14+3*g+UZIP2.F.contSize(y.itree,y.ihst)+(2*y.ihst[16]+3*y.ihst[17]+7*y.ihst[18]);for(var E=0;E<286;E++)y.lhst[E]=0;for(E=0;E<30;E++)y.dhst[E]=0;for(E=0;E<19;E++)y.ihst[E]=0;var w=$<b&&$<v?0:b<v?1:2;if(S(s,l,e),S(s,l+1,w),l+=3,0==w){for(;7&l;)l++;l=UZIP2.F._copyExact(i,r,a,s,l)}else{var R,A;if(1==w&&(R=y.fltree,A=y.fdtree),2==w){UZIP2.F.makeCodes(y.ltree,d),UZIP2.F.revCodes(y.ltree,d),UZIP2.F.makeCodes(y.dtree,p),UZIP2.F.revCodes(y.dtree,p),UZIP2.F.makeCodes(y.itree,u),UZIP2.F.revCodes(y.itree,u),R=y.ltree,A=y.dtree,C(s,l,m-257),C(s,l+=5,h-1),C(s,l+=5,g-4),l+=4;for(var j=0;j<g;j++)C(s,l+3*j,y.itree[1+(y.ordr[j]<<1)]);l+=3*g,l=UZIP2.F._codeTiny(x,y.itree,s,l),l=UZIP2.F._codeTiny(f,y.itree,s,l)}for(var T=r,I=0;I<n;I+=2){for(var k=t[I],L=k>>>23,D=T+(8388607&k);T<D;)l=UZIP2.F._writeLit(i[T++],R,s,l);if(0!=L){var _=t[I+1],P=_>>16,B=_>>8&255,M=255&_;C(s,l=UZIP2.F._writeLit(257+B,R,s,l),L-y.of0[B]),l+=y.exb[B],S(s,l=UZIP2.F._writeLit(M,A,s,l),P-y.df0[M]),l+=y.dxb[M],T+=L}}l=UZIP2.F._writeLit(256,R,s,l)}return l},UZIP2.F._copyExact=function(e,t,n,o,i){var r=i>>>3;return o[r]=n,o[r+1]=n>>>8,o[r+2]=255-o[r],o[r+3]=255-o[r+1],r+=4,o.set(new Uint8Array(e.buffer,t,n),r),i+(n+4<<3)},UZIP2.F.getTrees=function(){for(var e=UZIP2.F.U,t=UZIP2.F._hufTree(e.lhst,e.ltree,15),n=UZIP2.F._hufTree(e.dhst,e.dtree,15),o=[],i=UZIP2.F._lenCodes(e.ltree,o),r=[],a=UZIP2.F._lenCodes(e.dtree,r),s=0;s<o.length;s+=2)e.ihst[o[s]]++;for(s=0;s<r.length;s+=2)e.ihst[r[s]]++;for(var l=UZIP2.F._hufTree(e.ihst,e.itree,7),c=19;c>4&&0==e.itree[1+(e.ordr[c-1]<<1)];)c--;return[t,n,l,i,a,c,o,r]},UZIP2.F.getSecond=function(e){for(var t=[],n=0;n<e.length;n+=2)t.push(e[n+1]);return t},UZIP2.F.nonZero=function(e){for(var t="",n=0;n<e.length;n+=2)0!=e[n+1]&&(t+=(n>>1)+",");return t},UZIP2.F.contSize=function(e,t){for(var n=0,o=0;o<t.length;o++)n+=t[o]*e[1+(o<<1)];return n},UZIP2.F._codeTiny=function(e,t,n,o){for(var i=0;i<e.length;i+=2){var r=e[i],a=e[i+1];o=UZIP2.F._writeLit(r,t,n,o);var s=16==r?2:17==r?3:7;r>15&&(UZIP2.F._putsE(n,o,a,s),o+=s)}return o},UZIP2.F._lenCodes=function(e,t){for(var n=e.length;2!=n&&0==e[n-1];)n-=2;for(var o=0;o<n;o+=2){var i=e[o+1],r=o+3<n?e[o+3]:-1,a=o+5<n?e[o+5]:-1,s=0==o?-1:e[o-1];if(0==i&&r==i&&a==i){for(var l=o+5;l+2<n&&e[l+2]==i;)l+=2;(c=Math.min(l+1-o>>>1,138))<11?t.push(17,c-3):t.push(18,c-11),o+=2*c-2}else if(i==s&&r==i&&a==i){for(l=o+5;l+2<n&&e[l+2]==i;)l+=2;var c=Math.min(l+1-o>>>1,6);t.push(16,c-3),o+=2*c-2}else t.push(i,0)}return n>>>1},UZIP2.F._hufTree=function(e,t,n){var o=[],i=e.length,r=t.length,a=0;for(a=0;a<r;a+=2)t[a]=0,t[a+1]=0;for(a=0;a<i;a++)0!=e[a]&&o.push({lit:a,f:e[a]});var s=o.length,l=o.slice(0);if(0==s)return 0;if(1==s){var c=o[0].lit;return l=0==c?1:0,t[1+(c<<1)]=1,t[1+(l<<1)]=1,1}o.sort(function(e,t){return e.f-t.f});var d=o[0],p=o[1],u=0,m=1,h=2;for(o[0]={lit:-1,f:d.f+p.f,l:d,r:p,d:0};m!=s-1;)d=u!=m&&(h==s||o[u].f<o[h].f)?o[u++]:o[h++],p=u!=m&&(h==s||o[u].f<o[h].f)?o[u++]:o[h++],o[m++]={lit:-1,f:d.f+p.f,l:d,r:p};var g=UZIP2.F.setDepth(o[m-1],0);for(g>n&&(UZIP2.F.restrictDepth(l,n,g),g=n),a=0;a<s;a++)t[1+(l[a].lit<<1)]=l[a].d;return g},UZIP2.F.setDepth=function(e,t){return-1!=e.lit?(e.d=t,t):Math.max(UZIP2.F.setDepth(e.l,t+1),UZIP2.F.setDepth(e.r,t+1))},UZIP2.F.restrictDepth=function(e,t,n){var o=0,i=1<<n-t,r=0;for(e.sort(function(e,t){return t.d==e.d?e.f-t.f:t.d-e.d}),o=0;o<e.length&&e[o].d>t;o++){var a=e[o].d;e[o].d=t,r+=i-(1<<n-a)}for(r>>>=n-t;r>0;)(a=e[o].d)<t?(e[o].d++,r-=1<<t-a-1):o++;for(;o>=0;o--)e[o].d==t&&r<0&&(e[o].d--,r++);0!=r&&console.log("debt left")},UZIP2.F._goodIndex=function(e,t){var n=0;return t[16|n]<=e&&(n|=16),t[8|n]<=e&&(n|=8),t[4|n]<=e&&(n|=4),t[2|n]<=e&&(n|=2),t[1|n]<=e&&(n|=1),n},UZIP2.F._writeLit=function(e,t,n,o){return UZIP2.F._putsF(n,o,t[e<<1]),o+t[1+(e<<1)]},UZIP2.F.inflate=function(e,t){var n=Uint8Array;if(3==e[0]&&0==e[1])return t||new n(0);var o=UZIP2.F,i=o._bitsF,r=o._bitsE,a=o._decodeTiny,s=o.makeCodes,l=o.codes2map,c=o._get17,d=o.U,p=null==t;p&&(t=new n(e.length>>>2<<3));for(var u,m,h=0,g=0,x=0,f=0,y=0,S=0,C=0,$=0,b=0;0==h;)if(h=i(e,b,1),g=i(e,b+1,2),b+=3,0!=g){if(p&&(t=UZIP2.F._check(t,$+(1<<17))),1==g&&(u=d.flmap,m=d.fdmap,S=511,C=31),2==g){x=r(e,b,5)+257,f=r(e,b+5,5)+1,y=r(e,b+10,4)+4,b+=14;for(var v=0;v<38;v+=2)d.itree[v]=0,d.itree[v+1]=0;var E=1;for(v=0;v<y;v++){var w=r(e,b+3*v,3);d.itree[1+(d.ordr[v]<<1)]=w,w>E&&(E=w)}b+=3*y,s(d.itree,E),l(d.itree,E,d.imap),u=d.lmap,m=d.dmap,b=a(d.imap,(1<<E)-1,x+f,e,b,d.ttree);var R=o._copyOut(d.ttree,0,x,d.ltree);S=(1<<R)-1;var A=o._copyOut(d.ttree,x,f,d.dtree);C=(1<<A)-1,s(d.ltree,R),l(d.ltree,R,u),s(d.dtree,A),l(d.dtree,A,m)}for(;;){var j=u[c(e,b)&S];b+=15&j;var T=j>>>4;if(T>>>8==0)t[$++]=T;else{if(256==T)break;var I=$+T-254;if(T>264){var k=d.ldef[T-257];I=$+(k>>>3)+r(e,b,7&k),b+=7&k}var L=m[c(e,b)&C];b+=15&L;var D=L>>>4,_=d.ddef[D],P=(_>>>4)+i(e,b,15&_);for(b+=15&_,p&&(t=UZIP2.F._check(t,$+(1<<17)));$<I;)t[$]=t[$++-P],t[$]=t[$++-P],t[$]=t[$++-P],t[$]=t[$++-P];$=I}}}else{7&b&&(b+=8-(7&b));var B=4+(b>>>3),M=e[B-4]|e[B-3]<<8;p&&(t=UZIP2.F._check(t,$+M)),t.set(new n(e.buffer,e.byteOffset+B,M),$),b=B+M<<3,$+=M}return t.length==$?t:t.slice(0,$)},UZIP2.F._check=function(e,t){var n=e.length;if(t<=n)return e;var o=new Uint8Array(Math.max(n<<1,t));return o.set(e,0),o},UZIP2.F._decodeTiny=function(e,t,n,o,i,r){for(var a=UZIP2.F._bitsE,s=UZIP2.F._get17,l=0;l<n;){var c=e[s(o,i)&t];i+=15&c;var d=c>>>4;if(d<=15)r[l]=d,l++;else{var p=0,u=0;16==d?(u=3+a(o,i,2),i+=2,p=r[l-1]):17==d?(u=3+a(o,i,3),i+=3):18==d&&(u=11+a(o,i,7),i+=7);for(var m=l+u;l<m;)r[l]=p,l++}}return i},UZIP2.F._copyOut=function(e,t,n,o){for(var i=0,r=0,a=o.length>>>1;r<n;){var s=e[r+t];o[r<<1]=0,o[1+(r<<1)]=s,s>i&&(i=s),r++}for(;r<a;)o[r<<1]=0,o[1+(r<<1)]=0,r++;return i},UZIP2.F.makeCodes=function(e,t){for(var n,o,i,r,a=UZIP2.F.U,s=e.length,l=a.bl_count,c=0;c<=t;c++)l[c]=0;for(c=1;c<s;c+=2)l[e[c]]++;var d=a.next_code;for(n=0,l[0]=0,o=1;o<=t;o++)n=n+l[o-1]<<1,d[o]=n;for(i=0;i<s;i+=2)0!=(r=e[i+1])&&(e[i]=d[r],d[r]++)},UZIP2.F.codes2map=function(e,t,n){for(var o=e.length,i=UZIP2.F.U.rev15,r=0;r<o;r+=2)if(0!=e[r+1])for(var a=r>>1,s=e[r+1],l=a<<4|s,c=t-s,d=e[r]<<c,p=d+(1<<c);d!=p;)n[i[d]>>>15-t]=l,d++},UZIP2.F.revCodes=function(e,t){for(var n=UZIP2.F.U.rev15,o=15-t,i=0;i<e.length;i+=2){var r=e[i]<<t-e[i+1];e[i]=n[r]>>>o}},UZIP2.F._putsE=function(e,t,n){n<<=7&t;var o=t>>>3;e[o]|=n,e[o+1]|=n>>>8},UZIP2.F._putsF=function(e,t,n){n<<=7&t;var o=t>>>3;e[o]|=n,e[o+1]|=n>>>8,e[o+2]|=n>>>16},UZIP2.F._bitsE=function(e,t,n){return(e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<n)-1},UZIP2.F._bitsF=function(e,t,n){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<n)-1},UZIP2.F._get17=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},UZIP2.F._get25=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},UZIP2.F.U=(r2=Uint16Array,i3=Uint32Array,{next_code:new r2(16),bl_count:new r2(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new r2(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new i3(32),flmap:new r2(512),fltree:[],fdmap:new r2(32),fdtree:[],lmap:new r2(32768),ltree:[],ttree:[],dmap:new r2(32768),dtree:[],imap:new r2(512),itree:[],rev15:new r2(32768),lhst:new i3(286),dhst:new i3(30),ihst:new i3(19),lits:new i3(15e3),strt:new r2(65536),prev:new r2(32768)}),function(){for(var e=UZIP2.F.U,t=0;t<32768;t++){var n=t;n=(4278255360&(n=(4042322160&(n=(3435973836&(n=(2863311530&n)>>>1|(1431655765&n)<<1))>>>2|(858993459&n)<<2))>>>4|(252645135&n)<<4))>>>8|(16711935&n)<<8,e.rev15[t]=(n>>>16|n<<16)>>>17}function o(e,t,n){for(;0!=t--;)e.push(0,n)}for(t=0;t<32;t++)e.ldef[t]=e.of0[t]<<3|e.exb[t],e.ddef[t]=e.df0[t]<<4|e.dxb[t];o(e.fltree,144,8),o(e.fltree,112,9),o(e.fltree,24,7),o(e.fltree,8,8),UZIP2.F.makeCodes(e.fltree,9),UZIP2.F.codes2map(e.fltree,9,e.flmap),UZIP2.F.revCodes(e.fltree,9),o(e.fdtree,32,5),UZIP2.F.makeCodes(e.fdtree,5),UZIP2.F.codes2map(e.fdtree,5,e.fdmap),UZIP2.F.revCodes(e.fdtree,5),o(e.itree,19,0),o(e.ltree,286,0),o(e.dtree,30,0),o(e.ttree,320,0)}();var UZIP=_mergeNamespaces$1({__proto__:null,default:e},[e]);const UPNG=function(){var e={nextZero(e,t){for(;0!=e[t];)t++;return t},readUshort:(e,t)=>e[t]<<8|e[t+1],writeUshort(e,t,n){e[t]=n>>8&255,e[t+1]=255&n},readUint:(e,t)=>16777216*e[t]+(e[t+1]<<16|e[t+2]<<8|e[t+3]),writeUint(e,t,n){e[t]=n>>24&255,e[t+1]=n>>16&255,e[t+2]=n>>8&255,e[t+3]=255&n},readASCII(e,t,n){let o="";for(let i=0;i<n;i++)o+=String.fromCharCode(e[t+i]);return o},writeASCII(e,t,n){for(let o=0;o<n.length;o++)e[t+o]=n.charCodeAt(o)},readBytes(e,t,n){const o=[];for(let i=0;i<n;i++)o.push(e[t+i]);return o},pad:e=>e.length<2?`0${e}`:e,readUTF8(t,n,o){let i,r="";for(let s=0;s<o;s++)r+=`%${e.pad(t[n+s].toString(16))}`;try{i=decodeURIComponent(r)}catch(a){return e.readASCII(t,n,o)}return i}};function t(t,n,o,i){const a=n*o,s=r(i),l=Math.ceil(n*s/8),c=new Uint8Array(4*a),d=new Uint32Array(c.buffer),{ctype:p}=i,{depth:u}=i,m=e.readUshort;if(6==p){const e=a<<2;if(8==u)for(var h=0;h<e;h+=4)c[h]=t[h],c[h+1]=t[h+1],c[h+2]=t[h+2],c[h+3]=t[h+3];if(16==u)for(h=0;h<e;h++)c[h]=t[h<<1]}else if(2==p){const e=i.tabs.tRNS;if(null==e){if(8==u)for(h=0;h<a;h++){var g=3*h;d[h]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g]}if(16==u)for(h=0;h<a;h++)g=6*h,d[h]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g]}else{var x=e[0];const n=e[1],o=e[2];if(8==u)for(h=0;h<a;h++){var f=h<<2;g=3*h,d[h]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g],t[g]==x&&t[g+1]==n&&t[g+2]==o&&(c[f+3]=0)}if(16==u)for(h=0;h<a;h++)f=h<<2,g=6*h,d[h]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g],m(t,g)==x&&m(t,g+2)==n&&m(t,g+4)==o&&(c[f+3]=0)}}else if(3==p){const e=i.tabs.PLTE,r=i.tabs.tRNS,s=r?r.length:0;if(1==u)for(var y=0;y<o;y++){var S=y*l,C=y*n;for(h=0;h<n;h++){f=C+h<<2;var $=3*(b=t[S+(h>>3)]>>7-(7&h)&1);c[f]=e[$],c[f+1]=e[$+1],c[f+2]=e[$+2],c[f+3]=b<s?r[b]:255}}if(2==u)for(y=0;y<o;y++)for(S=y*l,C=y*n,h=0;h<n;h++)f=C+h<<2,$=3*(b=t[S+(h>>2)]>>6-((3&h)<<1)&3),c[f]=e[$],c[f+1]=e[$+1],c[f+2]=e[$+2],c[f+3]=b<s?r[b]:255;if(4==u)for(y=0;y<o;y++)for(S=y*l,C=y*n,h=0;h<n;h++)f=C+h<<2,$=3*(b=t[S+(h>>1)]>>4-((1&h)<<2)&15),c[f]=e[$],c[f+1]=e[$+1],c[f+2]=e[$+2],c[f+3]=b<s?r[b]:255;if(8==u)for(h=0;h<a;h++){var b;f=h<<2,$=3*(b=t[h]),c[f]=e[$],c[f+1]=e[$+1],c[f+2]=e[$+2],c[f+3]=b<s?r[b]:255}}else if(4==p){if(8==u)for(h=0;h<a;h++){f=h<<2;var v=t[E=h<<1];c[f]=v,c[f+1]=v,c[f+2]=v,c[f+3]=t[E+1]}if(16==u)for(h=0;h<a;h++){var E;f=h<<2,v=t[E=h<<2],c[f]=v,c[f+1]=v,c[f+2]=v,c[f+3]=t[E+2]}}else if(0==p)for(x=i.tabs.tRNS?i.tabs.tRNS:-1,y=0;y<o;y++){const e=y*l,o=y*n;if(1==u)for(var w=0;w<n;w++){var R=(v=255*(t[e+(w>>>3)]>>>7-(7&w)&1))==255*x?0:255;d[o+w]=R<<24|v<<16|v<<8|v}else if(2==u)for(w=0;w<n;w++)R=(v=85*(t[e+(w>>>2)]>>>6-((3&w)<<1)&3))==85*x?0:255,d[o+w]=R<<24|v<<16|v<<8|v;else if(4==u)for(w=0;w<n;w++)R=(v=17*(t[e+(w>>>1)]>>>4-((1&w)<<2)&15))==17*x?0:255,d[o+w]=R<<24|v<<16|v<<8|v;else if(8==u)for(w=0;w<n;w++)R=(v=t[e+w])==x?0:255,d[o+w]=R<<24|v<<16|v<<8|v;else if(16==u)for(w=0;w<n;w++)v=t[e+(w<<1)],R=m(t,e+(w<<1))==x?0:255,d[o+w]=R<<24|v<<16|v<<8|v}return c}function n(e,t,n,s){const l=r(e),c=Math.ceil(n*l/8),d=new Uint8Array((c+1+e.interlace)*s);return t=e.tabs.CgBI?i(t,d):o(t,d),0==e.interlace?t=a(t,e,0,n,s):1==e.interlace&&(t=function(e,t){const n=t.width,o=t.height,i=r(t),s=i>>3,l=Math.ceil(n*i/8),c=new Uint8Array(o*l);let d=0;const p=[0,0,4,0,2,0,1],u=[0,4,0,2,0,1,0],m=[8,8,8,4,4,2,2],h=[8,8,4,4,2,2,1];let g=0;for(;g<7;){const r=m[g],f=h[g];let y=0,S=0,C=p[g];for(;C<o;)C+=r,S++;let $=u[g];for(;$<n;)$+=f,y++;const b=Math.ceil(y*i/8);a(e,t,d,y,S);let v=0,E=p[g];for(;E<o;){let t=u[g],o=d+v*b<<3;for(;t<n;){var x;if(1==i&&(x=(x=e[o>>3])>>7-(7&o)&1,c[E*l+(t>>3)]|=x<<7-(7&t)),2==i&&(x=(x=e[o>>3])>>6-(7&o)&3,c[E*l+(t>>2)]|=x<<6-((3&t)<<1)),4==i&&(x=(x=e[o>>3])>>4-(7&o)&15,c[E*l+(t>>1)]|=x<<4-((1&t)<<2)),i>=8){const n=E*l+t*s;for(let t=0;t<s;t++)c[n+t]=e[(o>>3)+t]}o+=i,t+=f}v++,E+=r}y*S!=0&&(d+=S*(1+b)),g+=1}return c}(t,e)),t}function o(e,t){return i(new Uint8Array(e.buffer,2,e.length-6),t)}var i=function(){const e={H:{}};return e.H.N=function(t,n){const o=Uint8Array;let i,r,a=0,s=0,l=0,c=0,d=0,p=0,u=0,m=0,h=0;if(3==t[0]&&0==t[1])return n||new o(0);const g=e.H,x=g.b,f=g.e,y=g.R,S=g.n,C=g.A,$=g.Z,b=g.m,v=null==n;for(v&&(n=new o(t.length>>>2<<5));0==a;)if(a=x(t,h,1),s=x(t,h+1,2),h+=3,0!=s){if(v&&(n=e.H.W(n,m+(1<<17))),1==s&&(i=b.J,r=b.h,p=511,u=31),2==s){l=f(t,h,5)+257,c=f(t,h+5,5)+1,d=f(t,h+10,4)+4,h+=14;let e=1;for(var E=0;E<38;E+=2)b.Q[E]=0,b.Q[E+1]=0;for(E=0;E<d;E++){const n=f(t,h+3*E,3);b.Q[1+(b.X[E]<<1)]=n,n>e&&(e=n)}h+=3*d,S(b.Q,e),C(b.Q,e,b.u),i=b.w,r=b.d,h=y(b.u,(1<<e)-1,l+c,t,h,b.v);const n=g.V(b.v,0,l,b.C);p=(1<<n)-1;const o=g.V(b.v,l,c,b.D);u=(1<<o)-1,S(b.C,n),C(b.C,n,i),S(b.D,o),C(b.D,o,r)}for(;;){const e=i[$(t,h)&p];h+=15&e;const o=e>>>4;if(o>>>8==0)n[m++]=o;else{if(256==o)break;{let e=m+o-254;if(o>264){const n=b.q[o-257];e=m+(n>>>3)+f(t,h,7&n),h+=7&n}const i=r[$(t,h)&u];h+=15&i;const a=i>>>4,s=b.c[a],l=(s>>>4)+x(t,h,15&s);for(h+=15&s;m<e;)n[m]=n[m++-l],n[m]=n[m++-l],n[m]=n[m++-l],n[m]=n[m++-l];m=e}}}}else{7&h&&(h+=8-(7&h));const i=4+(h>>>3),r=t[i-4]|t[i-3]<<8;v&&(n=e.H.W(n,m+r)),n.set(new o(t.buffer,t.byteOffset+i,r),m),h=i+r<<3,m+=r}return n.length==m?n:n.slice(0,m)},e.H.W=function(e,t){const n=e.length;if(t<=n)return e;const o=new Uint8Array(n<<1);return o.set(e,0),o},e.H.R=function(t,n,o,i,r,a){const s=e.H.e,l=e.H.Z;let c=0;for(;c<o;){const e=t[l(i,r)&n];r+=15&e;const o=e>>>4;if(o<=15)a[c]=o,c++;else{let e=0,t=0;16==o?(t=3+s(i,r,2),r+=2,e=a[c-1]):17==o?(t=3+s(i,r,3),r+=3):18==o&&(t=11+s(i,r,7),r+=7);const n=c+t;for(;c<n;)a[c]=e,c++}}return r},e.H.V=function(e,t,n,o){let i=0,r=0;const a=o.length>>>1;for(;r<n;){const n=e[r+t];o[r<<1]=0,o[1+(r<<1)]=n,n>i&&(i=n),r++}for(;r<a;)o[r<<1]=0,o[1+(r<<1)]=0,r++;return i},e.H.n=function(t,n){const o=e.H.m,i=t.length;let r,a,s,l;const c=o.j;for(var d=0;d<=n;d++)c[d]=0;for(d=1;d<i;d+=2)c[t[d]]++;const p=o.K;for(r=0,c[0]=0,a=1;a<=n;a++)r=r+c[a-1]<<1,p[a]=r;for(s=0;s<i;s+=2)l=t[s+1],0!=l&&(t[s]=p[l],p[l]++)},e.H.A=function(t,n,o){const i=t.length,r=e.H.m.r;for(let e=0;e<i;e+=2)if(0!=t[e+1]){const i=e>>1,a=t[e+1],s=i<<4|a,l=n-a;let c=t[e]<<l;const d=c+(1<<l);for(;c!=d;)o[r[c]>>>15-n]=s,c++}},e.H.l=function(t,n){const o=e.H.m.r,i=15-n;for(let e=0;e<t.length;e+=2){const r=t[e]<<n-t[e+1];t[e]=o[r]>>>i}},e.H.M=function(e,t,n){n<<=7&t;const o=t>>>3;e[o]|=n,e[o+1]|=n>>>8},e.H.I=function(e,t,n){n<<=7&t;const o=t>>>3;e[o]|=n,e[o+1]|=n>>>8,e[o+2]|=n>>>16},e.H.e=function(e,t,n){return(e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<n)-1},e.H.b=function(e,t,n){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<n)-1},e.H.Z=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},e.H.i=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},e.H.m=function(){const e=Uint16Array,t=Uint32Array;return{K:new e(16),j:new e(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new e(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new t(32),J:new e(512),_:[],h:new e(32),$:[],w:new e(32768),C:[],v:[],d:new e(32768),D:[],u:new e(512),Q:[],r:new e(32768),s:new t(286),Y:new t(30),a:new t(19),t:new t(15e3),k:new e(65536),g:new e(32768)}}(),function(){const t=e.H.m;for(var n=0;n<32768;n++){let e=n;e=(2863311530&e)>>>1|(1431655765&e)<<1,e=(3435973836&e)>>>2|(858993459&e)<<2,e=(4042322160&e)>>>4|(252645135&e)<<4,e=(4278255360&e)>>>8|(16711935&e)<<8,t.r[n]=(e>>>16|e<<16)>>>17}function o(e,t,n){for(;0!=t--;)e.push(0,n)}for(n=0;n<32;n++)t.q[n]=t.S[n]<<3|t.T[n],t.c[n]=t.p[n]<<4|t.z[n];o(t._,144,8),o(t._,112,9),o(t._,24,7),o(t._,8,8),e.H.n(t._,9),e.H.A(t._,9,t.J),e.H.l(t._,9),o(t.$,32,5),e.H.n(t.$,5),e.H.A(t.$,5,t.h),e.H.l(t.$,5),o(t.Q,19,0),o(t.C,286,0),o(t.D,30,0),o(t.v,320,0)}(),e.H.N}();function r(e){return[1,null,3,1,2,null,4][e.ctype]*e.depth}function a(e,t,n,o,i){let a=r(t);const l=Math.ceil(o*a/8);let c,d;a=Math.ceil(a/8);let p=e[n],u=0;if(p>1&&(e[n]=[0,0,1][p-2]),3==p)for(u=a;u<l;u++)e[u+1]=e[u+1]+(e[u+1-a]>>>1)&255;for(let r=0;r<i;r++)if(c=n+r*l,d=c+r+1,p=e[d-1],u=0,0==p)for(;u<l;u++)e[c+u]=e[d+u];else if(1==p){for(;u<a;u++)e[c+u]=e[d+u];for(;u<l;u++)e[c+u]=e[d+u]+e[c+u-a]}else if(2==p)for(;u<l;u++)e[c+u]=e[d+u]+e[c+u-l];else if(3==p){for(;u<a;u++)e[c+u]=e[d+u]+(e[c+u-l]>>>1);for(;u<l;u++)e[c+u]=e[d+u]+(e[c+u-l]+e[c+u-a]>>>1)}else{for(;u<a;u++)e[c+u]=e[d+u]+s(0,e[c+u-l],0);for(;u<l;u++)e[c+u]=e[d+u]+s(e[c+u-a],e[c+u-l],e[c+u-a-l])}return e}function s(e,t,n){const o=e+t-n,i=o-e,r=o-t,a=o-n;return i*i<=r*r&&i*i<=a*a?e:r*r<=a*a?t:n}function l(t,n,o){o.width=e.readUint(t,n),n+=4,o.height=e.readUint(t,n),n+=4,o.depth=t[n],n++,o.ctype=t[n],n++,o.compress=t[n],n++,o.filter=t[n],n++,o.interlace=t[n],n++}function c(e,t,n,o,i,r,a,s,l){const c=Math.min(t,i),d=Math.min(n,r);let p=0,u=0;for(let $=0;$<d;$++)for(let n=0;n<c;n++)if(a>=0&&s>=0?(p=$*t+n<<2,u=(s+$)*i+a+n<<2):(p=(-s+$)*t-a+n<<2,u=$*i+n<<2),0==l)o[u]=e[p],o[u+1]=e[p+1],o[u+2]=e[p+2],o[u+3]=e[p+3];else if(1==l){var m=e[p+3]*(1/255),h=e[p]*m,g=e[p+1]*m,x=e[p+2]*m,f=o[u+3]*(1/255),y=o[u]*f,S=o[u+1]*f,C=o[u+2]*f;const t=1-m,n=m+f*t,i=0==n?0:1/n;o[u+3]=255*n,o[u+0]=(h+y*t)*i,o[u+1]=(g+S*t)*i,o[u+2]=(x+C*t)*i}else if(2==l)m=e[p+3],h=e[p],g=e[p+1],x=e[p+2],f=o[u+3],y=o[u],S=o[u+1],C=o[u+2],m==f&&h==y&&g==S&&x==C?(o[u]=0,o[u+1]=0,o[u+2]=0,o[u+3]=0):(o[u]=h,o[u+1]=g,o[u+2]=x,o[u+3]=m);else if(3==l){if(m=e[p+3],h=e[p],g=e[p+1],x=e[p+2],f=o[u+3],y=o[u],S=o[u+1],C=o[u+2],m==f&&h==y&&g==S&&x==C)continue;if(m<220&&f>20)return!1}return!0}return{decode:function(t){const r=new Uint8Array(t);let a=8;const s=e,c=s.readUshort,d=s.readUint,p={tabs:{},frames:[]},u=new Uint8Array(r.length);let m,h=0,g=0;const x=[137,80,78,71,13,10,26,10];for(var f=0;f<8;f++)if(r[f]!=x[f])throw"The input is not a PNG file!";for(;a<r.length;){const e=s.readUint(r,a);a+=4;const t=s.readASCII(r,a,4);if(a+=4,"IHDR"==t)l(r,a,p);else if("iCCP"==t){for(var y=a;0!=r[y];)y++;s.readASCII(r,a,y-a),r[y+1];const n=r.slice(y+2,a+e);let l=null;try{l=o(n)}catch(w){l=i(n)}p.tabs[t]=l}else if("CgBI"==t)p.tabs[t]=r.slice(a,a+4);else if("IDAT"==t){for(f=0;f<e;f++)u[h+f]=r[a+f];h+=e}else if("acTL"==t)p.tabs[t]={num_frames:d(r,a),num_plays:d(r,a+4)},m=new Uint8Array(r.length);else if("fcTL"==t){0!=g&&((E=p.frames[p.frames.length-1]).data=n(p,m.slice(0,g),E.rect.width,E.rect.height),g=0);const e={x:d(r,a+12),y:d(r,a+16),width:d(r,a+4),height:d(r,a+8)};let t=c(r,a+22);t=c(r,a+20)/(0==t?100:t);const o={rect:e,delay:Math.round(1e3*t),dispose:r[a+24],blend:r[a+25]};p.frames.push(o)}else if("fdAT"==t){for(f=0;f<e-4;f++)m[g+f]=r[a+f+4];g+=e-4}else if("pHYs"==t)p.tabs[t]=[s.readUint(r,a),s.readUint(r,a+4),r[a+8]];else if("cHRM"==t)for(p.tabs[t]=[],f=0;f<8;f++)p.tabs[t].push(s.readUint(r,a+4*f));else if("tEXt"==t||"zTXt"==t){null==p.tabs[t]&&(p.tabs[t]={});var S=s.nextZero(r,a),C=s.readASCII(r,a,S-a),$=a+e-S-1;if("tEXt"==t)v=s.readASCII(r,S+1,$);else{var b=o(r.slice(S+2,S+2+$));v=s.readUTF8(b,0,b.length)}p.tabs[t][C]=v}else if("iTXt"==t){null==p.tabs[t]&&(p.tabs[t]={}),S=0,y=a,S=s.nextZero(r,y),C=s.readASCII(r,y,S-y);const n=r[y=S+1];var v;r[y+1],y+=2,S=s.nextZero(r,y),s.readASCII(r,y,S-y),y=S+1,S=s.nextZero(r,y),s.readUTF8(r,y,S-y),$=e-((y=S+1)-a),0==n?v=s.readUTF8(r,y,$):(b=o(r.slice(y,y+$)),v=s.readUTF8(b,0,b.length)),p.tabs[t][C]=v}else if("PLTE"==t)p.tabs[t]=s.readBytes(r,a,e);else if("hIST"==t){const e=p.tabs.PLTE.length/3;for(p.tabs[t]=[],f=0;f<e;f++)p.tabs[t].push(c(r,a+2*f))}else if("tRNS"==t)3==p.ctype?p.tabs[t]=s.readBytes(r,a,e):0==p.ctype?p.tabs[t]=c(r,a):2==p.ctype&&(p.tabs[t]=[c(r,a),c(r,a+2),c(r,a+4)]);else if("gAMA"==t)p.tabs[t]=s.readUint(r,a)/1e5;else if("sRGB"==t)p.tabs[t]=r[a];else if("bKGD"==t)0==p.ctype||4==p.ctype?p.tabs[t]=[c(r,a)]:2==p.ctype||6==p.ctype?p.tabs[t]=[c(r,a),c(r,a+2),c(r,a+4)]:3==p.ctype&&(p.tabs[t]=r[a]);else if("IEND"==t)break;a+=e,s.readUint(r,a),a+=4}var E;return 0!=g&&((E=p.frames[p.frames.length-1]).data=n(p,m.slice(0,g),E.rect.width,E.rect.height)),p.data=n(p,u,p.width,p.height),delete p.compress,delete p.interlace,delete p.filter,p},toRGBA8:function(e){const n=e.width,o=e.height;if(null==e.tabs.acTL)return[t(e.data,n,o,e).buffer];const i=[];null==e.frames[0].data&&(e.frames[0].data=e.data);const r=n*o*4,a=new Uint8Array(r),s=new Uint8Array(r),l=new Uint8Array(r);for(let p=0;p<e.frames.length;p++){const u=e.frames[p],m=u.rect.x,h=u.rect.y,g=u.rect.width,x=u.rect.height,f=t(u.data,g,x,e);if(0!=p)for(var d=0;d<r;d++)l[d]=a[d];if(0==u.blend?c(f,g,x,a,n,o,m,h,0):1==u.blend&&c(f,g,x,a,n,o,m,h,1),i.push(a.buffer.slice(0)),0==u.dispose);else if(1==u.dispose)c(s,g,x,a,n,o,m,h,0);else if(2==u.dispose)for(d=0;d<r;d++)a[d]=l[d]}return i},_paeth:s,_copyTile:c,_bin:e}}();!function(){const{_copyTile:e}=UPNG,{_bin:t}=UPNG,n=UPNG._paeth;var o={table:function(){const e=new Uint32Array(256);for(let t=0;t<256;t++){let n=t;for(let e=0;e<8;e++)1&n?n=3988292384^n>>>1:n>>>=1;e[t]=n}return e}(),update(e,t,n,i){for(let r=0;r<i;r++)e=o.table[255&(e^t[n+r])]^e>>>8;return e},crc:(e,t,n)=>4294967295^o.update(4294967295,e,t,n)};function i(e,t,n,o){t[n]+=e[0]*o>>4,t[n+1]+=e[1]*o>>4,t[n+2]+=e[2]*o>>4,t[n+3]+=e[3]*o>>4}function r(e){return Math.max(0,Math.min(255,e))}function a(e,t){const n=e[0]-t[0],o=e[1]-t[1],i=e[2]-t[2],r=e[3]-t[3];return n*n+o*o+i*i+r*r}function s(e,t,n,o,s,l,c){null==c&&(c=1);const d=o.length,p=[];for(var u=0;u<d;u++){const e=o[u];p.push([e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255])}for(u=0;u<d;u++){let e=4294967295;for(var m=0,h=0;h<d;h++){var g=a(p[u],p[h]);h!=u&&g<e&&(e=g,m=h)}}const x=new Uint32Array(s.buffer),f=new Int16Array(t*n*4),y=[0,8,2,10,12,4,14,6,3,11,1,9,15,7,13,5];for(u=0;u<y.length;u++)y[u]=255*((y[u]+.5)/16-.5);for(let C=0;C<n;C++)for(let s=0;s<t;s++){var S;u=4*(C*t+s),2!=c?S=[r(e[u]+f[u]),r(e[u+1]+f[u+1]),r(e[u+2]+f[u+2]),r(e[u+3]+f[u+3])]:(g=y[4*(3&C)+(3&s)],S=[r(e[u]+g),r(e[u+1]+g),r(e[u+2]+g),r(e[u+3]+g)]),m=0;let $=16777215;for(h=0;h<d;h++){const e=a(S,p[h]);e<$&&($=e,m=h)}const b=p[m],v=[S[0]-b[0],S[1]-b[1],S[2]-b[2],S[3]-b[3]];1==c&&(s!=t-1&&i(v,f,u+4,7),C!=n-1&&(0!=s&&i(v,f,u+4*t-4,3),i(v,f,u+4*t,5),s!=t-1&&i(v,f,u+4*t+4,1))),l[u>>2]=m,x[u>>2]=o[m]}}function l(e,n,i,r,a){null==a&&(a={});const{crc:s}=o,l=t.writeUint,c=t.writeUshort,d=t.writeASCII;let p=8;const u=e.frames.length>1;let m,h=!1,g=33+(u?20:0);if(null!=a.sRGB&&(g+=13),null!=a.pHYs&&(g+=21),null!=a.iCCP&&(m=pako.deflate(a.iCCP),g+=21+m.length+4),3==e.ctype){for(var x=e.plte.length,f=0;f<x;f++)e.plte[f]>>>24!=255&&(h=!0);g+=8+3*x+4+(h?8+1*x+4:0)}for(var y=0;y<e.frames.length;y++)u&&(g+=38),g+=(b=e.frames[y]).cimg.length+12,0!=y&&(g+=4);g+=12;const S=new Uint8Array(g),C=[137,80,78,71,13,10,26,10];for(f=0;f<8;f++)S[f]=C[f];if(l(S,p,13),p+=4,d(S,p,"IHDR"),p+=4,l(S,p,n),p+=4,l(S,p,i),p+=4,S[p]=e.depth,p++,S[p]=e.ctype,p++,S[p]=0,p++,S[p]=0,p++,S[p]=0,p++,l(S,p,s(S,p-17,17)),p+=4,null!=a.sRGB&&(l(S,p,1),p+=4,d(S,p,"sRGB"),p+=4,S[p]=a.sRGB,p++,l(S,p,s(S,p-5,5)),p+=4),null!=a.iCCP){const e=13+m.length;l(S,p,e),p+=4,d(S,p,"iCCP"),p+=4,d(S,p,"ICC profile"),p+=11,p+=2,S.set(m,p),p+=m.length,l(S,p,s(S,p-(e+4),e+4)),p+=4}if(null!=a.pHYs&&(l(S,p,9),p+=4,d(S,p,"pHYs"),p+=4,l(S,p,a.pHYs[0]),p+=4,l(S,p,a.pHYs[1]),p+=4,S[p]=a.pHYs[2],p++,l(S,p,s(S,p-13,13)),p+=4),u&&(l(S,p,8),p+=4,d(S,p,"acTL"),p+=4,l(S,p,e.frames.length),p+=4,l(S,p,null!=a.loop?a.loop:0),p+=4,l(S,p,s(S,p-12,12)),p+=4),3==e.ctype){for(l(S,p,3*(x=e.plte.length)),p+=4,d(S,p,"PLTE"),p+=4,f=0;f<x;f++){const t=3*f,n=e.plte[f],o=255&n,i=n>>>8&255,r=n>>>16&255;S[p+t+0]=o,S[p+t+1]=i,S[p+t+2]=r}if(p+=3*x,l(S,p,s(S,p-3*x-4,3*x+4)),p+=4,h){for(l(S,p,x),p+=4,d(S,p,"tRNS"),p+=4,f=0;f<x;f++)S[p+f]=e.plte[f]>>>24&255;p+=x,l(S,p,s(S,p-x-4,x+4)),p+=4}}let $=0;for(y=0;y<e.frames.length;y++){var b=e.frames[y];u&&(l(S,p,26),p+=4,d(S,p,"fcTL"),p+=4,l(S,p,$++),p+=4,l(S,p,b.rect.width),p+=4,l(S,p,b.rect.height),p+=4,l(S,p,b.rect.x),p+=4,l(S,p,b.rect.y),p+=4,c(S,p,r[y]),p+=2,c(S,p,1e3),p+=2,S[p]=b.dispose,p++,S[p]=b.blend,p++,l(S,p,s(S,p-30,30)),p+=4);const t=b.cimg;l(S,p,(x=t.length)+(0==y?0:4)),p+=4;const n=p;d(S,p,0==y?"IDAT":"fdAT"),p+=4,0!=y&&(l(S,p,$++),p+=4),S.set(t,p),p+=x,l(S,p,s(S,n,p-n)),p+=4}return l(S,p,0),p+=4,d(S,p,"IEND"),p+=4,l(S,p,s(S,p-4,4)),p+=4,S.buffer}function c(e,t,n){for(let o=0;o<e.frames.length;o++){const i=e.frames[o];i.rect.width;const r=i.rect.height,a=new Uint8Array(r*i.bpl+r);i.cimg=m(i.img,r,i.bpp,i.bpl,a,t,n)}}function d(t,n,o,i,r){const a=r[0],l=r[1],c=r[2],d=r[3],m=r[4],h=r[5];let x=6,f=8,y=255;for(var S=0;S<t.length;S++){const e=new Uint8Array(t[S]);for(var C=e.length,$=0;$<C;$+=4)y&=e[$+3]}const b=255!=y,v=function(t,n,o,i,r,a){const s=[];for(var l=0;l<t.length;l++){const p=new Uint8Array(t[l]),m=new Uint32Array(p.buffer);var c;let g=0,x=0,f=n,y=o,S=i?1:0;if(0!=l){const C=a||i||1==l||0!=s[l-2].dispose?1:2;let $=0,b=1e9;for(let e=0;e<C;e++){var d=new Uint8Array(t[l-1-e]);const i=new Uint32Array(t[l-1-e]);let a=n,s=o,c=-1,p=-1;for(let e=0;e<o;e++)for(let t=0;t<n;t++)m[h=e*n+t]!=i[h]&&(t<a&&(a=t),t>c&&(c=t),e<s&&(s=e),e>p&&(p=e));-1==c&&(a=s=c=p=0),r&&(!(1&~a)&&a--,!(1&~s)&&s--);const u=(c-a+1)*(p-s+1);u<b&&(b=u,$=e,g=a,x=s,f=c-a+1,y=p-s+1)}d=new Uint8Array(t[l-1-$]),1==$&&(s[l-1].dispose=2),c=new Uint8Array(f*y*4),e(d,n,o,c,f,y,-g,-x,0),S=e(p,n,o,c,f,y,-g,-x,3)?1:0,1==S?u(p,n,o,c,{x:g,y:x,width:f,height:y}):e(p,n,o,c,f,y,-g,-x,0)}else c=p.slice(0);s.push({rect:{x:g,y:x,width:f,height:y},img:c,blend:S,dispose:0})}if(i)for(l=0;l<s.length;l++){if(1==(g=s[l]).blend)continue;const e=g.rect,i=s[l-1].rect,a=Math.min(e.x,i.x),c=Math.min(e.y,i.y),d={x:a,y:c,width:Math.max(e.x+e.width,i.x+i.width)-a,height:Math.max(e.y+e.height,i.y+i.height)-c};s[l-1].dispose=1,l-1!=0&&p(t,n,o,s,l-1,d,r),p(t,n,o,s,l,d,r)}let m=0;if(1!=t.length)for(var h=0;h<s.length;h++){var g;m+=(g=s[h]).rect.width*g.rect.height}return s}(t,n,o,a,l,c),E={},w=[],R=[];if(0!=i){const e=[];for($=0;$<v.length;$++)e.push(v[$].img.buffer);const t=g(function(e){let t=0;for(var n=0;n<e.length;n++)t+=e[n].byteLength;const o=new Uint8Array(t);let i=0;for(n=0;n<e.length;n++){const t=new Uint8Array(e[n]),r=t.length;for(let e=0;e<r;e+=4){let n=t[e],r=t[e+1],a=t[e+2];const s=t[e+3];0==s&&(n=r=a=0),o[i+e]=n,o[i+e+1]=r,o[i+e+2]=a,o[i+e+3]=s}i+=r}return o.buffer}(e),i);for($=0;$<t.plte.length;$++)w.push(t.plte[$].est.rgba);let n=0;for($=0;$<v.length;$++){const e=(j=v[$]).img.length;var A=new Uint8Array(t.inds.buffer,n>>2,e>>2);R.push(A);const o=new Uint8Array(t.abuf,n,e);h&&s(j.img,j.rect.width,j.rect.height,w,o,A),j.img.set(o),n+=e}}else for(S=0;S<v.length;S++){var j=v[S];const e=new Uint32Array(j.img.buffer);var T=j.rect.width;for(C=e.length,A=new Uint8Array(C),R.push(A),$=0;$<C;$++){const t=e[$];if(0!=$&&t==e[$-1])A[$]=A[$-1];else if($>T&&t==e[$-T])A[$]=A[$-T];else{let e=E[t];if(null==e&&(E[t]=e=w.length,w.push(t),w.length>=300))break;A[$]=e}}}const I=w.length;for(I<=256&&0==m&&(f=I<=2?1:I<=4?2:I<=16?4:8,f=Math.max(f,d)),S=0;S<v.length;S++){(j=v[S]).rect.x,j.rect.y,T=j.rect.width;const e=j.rect.height;let t=j.img;new Uint32Array(t.buffer);let n=4*T,o=4;if(I<=256&&0==m){n=Math.ceil(f*T/8);var k=new Uint8Array(n*e);const i=R[S];for(let t=0;t<e;t++){$=t*n;const e=t*T;if(8==f)for(var L=0;L<T;L++)k[$+L]=i[e+L];else if(4==f)for(L=0;L<T;L++)k[$+(L>>1)]|=i[e+L]<<4-4*(1&L);else if(2==f)for(L=0;L<T;L++)k[$+(L>>2)]|=i[e+L]<<6-2*(3&L);else if(1==f)for(L=0;L<T;L++)k[$+(L>>3)]|=i[e+L]<<7-1*(7&L)}t=k,x=3,o=1}else if(0==b&&1==v.length){k=new Uint8Array(T*e*3);const i=T*e;for($=0;$<i;$++){const e=3*$,n=4*$;k[e]=t[n],k[e+1]=t[n+1],k[e+2]=t[n+2]}t=k,x=2,o=3,n=3*T}j.img=t,j.bpl=n,j.bpp=o}return{ctype:x,depth:f,plte:w,frames:v}}function p(t,n,o,i,r,a,s){const l=Uint8Array,c=Uint32Array,d=new l(t[r-1]),p=new c(t[r-1]),m=r+1<t.length?new l(t[r+1]):null,h=new l(t[r]),g=new c(h.buffer);let x=n,f=o,y=-1,S=-1;for(let e=0;e<a.height;e++)for(let t=0;t<a.width;t++){const o=a.x+t,s=a.y+e,l=s*n+o,c=g[l];0==c||0==i[r-1].dispose&&p[l]==c&&(null==m||0!=m[4*l+3])||(o<x&&(x=o),o>y&&(y=o),s<f&&(f=s),s>S&&(S=s))}-1==y&&(x=f=y=S=0),s&&(!(1&~x)&&x--,!(1&~f)&&f--),a={x:x,y:f,width:y-x+1,height:S-f+1};const C=i[r];C.rect=a,C.blend=1,C.img=new Uint8Array(a.width*a.height*4),0==i[r-1].dispose?(e(d,n,o,C.img,a.width,a.height,-a.x,-a.y,0),u(h,n,o,C.img,a)):e(h,n,o,C.img,a.width,a.height,-a.x,-a.y,0)}function u(t,n,o,i,r){e(t,n,o,i,r.width,r.height,-r.x,-r.y,2)}function m(e,t,n,o,i,r,a){const s=[];let l,c=[0,1,2,3,4];-1!=r?c=[r]:(t*o>5e5||1==n)&&(c=[0]),a&&(l={level:0});const d=UZIP;for(var p=0;p<c.length;p++){for(let r=0;r<t;r++)h(i,e,r,o,n,c[p]);s.push(d.deflate(i,l))}let u,m=1e9;for(p=0;p<s.length;p++)s[p].length<m&&(u=p,m=s[p].length);return s[u]}function h(e,t,o,i,r,a){const s=o*i;let l=s+o;if(e[l]=a,l++,0==a)if(i<500)for(var c=0;c<i;c++)e[l+c]=t[s+c];else e.set(new Uint8Array(t.buffer,s,i),l);else if(1==a){for(c=0;c<r;c++)e[l+c]=t[s+c];for(c=r;c<i;c++)e[l+c]=t[s+c]-t[s+c-r]+256&255}else if(0==o){for(c=0;c<r;c++)e[l+c]=t[s+c];if(2==a)for(c=r;c<i;c++)e[l+c]=t[s+c];if(3==a)for(c=r;c<i;c++)e[l+c]=t[s+c]-(t[s+c-r]>>1)+256&255;if(4==a)for(c=r;c<i;c++)e[l+c]=t[s+c]-n(t[s+c-r],0,0)+256&255}else{if(2==a)for(c=0;c<i;c++)e[l+c]=t[s+c]+256-t[s+c-i]&255;if(3==a){for(c=0;c<r;c++)e[l+c]=t[s+c]+256-(t[s+c-i]>>1)&255;for(c=r;c<i;c++)e[l+c]=t[s+c]+256-(t[s+c-i]+t[s+c-r]>>1)&255}if(4==a){for(c=0;c<r;c++)e[l+c]=t[s+c]+256-n(0,t[s+c-i],0)&255;for(c=r;c<i;c++)e[l+c]=t[s+c]+256-n(t[s+c-r],t[s+c-i],t[s+c-r-i])&255}}}function g(e,t){const n=new Uint8Array(e),o=n.slice(0),i=new Uint32Array(o.buffer),r=x(o,t),a=r[0],s=r[1],l=n.length,c=new Uint8Array(l>>2);let d;if(n.length<2e7)for(var p=0;p<l;p+=4)d=f(a,u=n[p]*(1/255),m=n[p+1]*(1/255),h=n[p+2]*(1/255),g=n[p+3]*(1/255)),c[p>>2]=d.ind,i[p>>2]=d.est.rgba;else for(p=0;p<l;p+=4){var u=n[p]*(1/255),m=n[p+1]*(1/255),h=n[p+2]*(1/255),g=n[p+3]*(1/255);for(d=a;d.left;)d=y(d.est,u,m,h,g)<=0?d.left:d.right;c[p>>2]=d.ind,i[p>>2]=d.est.rgba}return{abuf:o.buffer,inds:c,plte:s}}function x(e,t,n){null==n&&(n=1e-4);const o=new Uint32Array(e.buffer),i={i0:0,i1:e.length,bst:null,est:null,tdst:0,left:null,right:null};i.bst=$(e,i.i0,i.i1),i.est=b(i.bst);const r=[i];for(;r.length<t;){let t=0,i=0;for(var a=0;a<r.length;a++)r[a].est.L>t&&(t=r[a].est.L,i=a);if(t<n)break;const s=r[i],l=S(e,o,s.i0,s.i1,s.est.e,s.est.eMq255);if(s.i0>=l||s.i1<=l){s.est.L=0;continue}const c={i0:s.i0,i1:l,bst:null,est:null,tdst:0,left:null,right:null};c.bst=$(e,c.i0,c.i1),c.est=b(c.bst);const d={i0:l,i1:s.i1,bst:null,est:null,tdst:0,left:null,right:null};for(d.bst={R:[],m:[],N:s.bst.N-c.bst.N},a=0;a<16;a++)d.bst.R[a]=s.bst.R[a]-c.bst.R[a];for(a=0;a<4;a++)d.bst.m[a]=s.bst.m[a]-c.bst.m[a];d.est=b(d.bst),s.left=c,s.right=d,r[i]=c,r.push(d)}for(r.sort((e,t)=>t.bst.N-e.bst.N),a=0;a<r.length;a++)r[a].ind=a;return[i,r]}function f(e,t,n,o,i){if(null==e.left)return e.tdst=function(e,t,n,o,i){const r=t-e[0],a=n-e[1],s=o-e[2],l=i-e[3];return r*r+a*a+s*s+l*l}(e.est.q,t,n,o,i),e;const r=y(e.est,t,n,o,i);let a=e.left,s=e.right;r>0&&(a=e.right,s=e.left);const l=f(a,t,n,o,i);if(l.tdst<=r*r)return l;const c=f(s,t,n,o,i);return c.tdst<l.tdst?c:l}function y(e,t,n,o,i){const{e:r}=e;return r[0]*t+r[1]*n+r[2]*o+r[3]*i-e.eMq}function S(e,t,n,o,i,r){for(o-=4;n<o;){for(;C(e,n,i)<=r;)n+=4;for(;C(e,o,i)>r;)o-=4;if(n>=o)break;const a=t[n>>2];t[n>>2]=t[o>>2],t[o>>2]=a,n+=4,o-=4}for(;C(e,n,i)>r;)n-=4;return n+4}function C(e,t,n){return e[t]*n[0]+e[t+1]*n[1]+e[t+2]*n[2]+e[t+3]*n[3]}function $(e,t,n){const o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i=[0,0,0,0],r=n-t>>2;for(let a=t;a<n;a+=4){const t=e[a]*(1/255),n=e[a+1]*(1/255),r=e[a+2]*(1/255),s=e[a+3]*(1/255);i[0]+=t,i[1]+=n,i[2]+=r,i[3]+=s,o[0]+=t*t,o[1]+=t*n,o[2]+=t*r,o[3]+=t*s,o[5]+=n*n,o[6]+=n*r,o[7]+=n*s,o[10]+=r*r,o[11]+=r*s,o[15]+=s*s}return o[4]=o[1],o[8]=o[2],o[9]=o[6],o[12]=o[3],o[13]=o[7],o[14]=o[11],{R:o,m:i,N:r}}function b(e){const{R:t}=e,{m:n}=e,{N:o}=e,i=n[0],r=n[1],a=n[2],s=n[3],l=0==o?0:1/o,c=[t[0]-i*i*l,t[1]-i*r*l,t[2]-i*a*l,t[3]-i*s*l,t[4]-r*i*l,t[5]-r*r*l,t[6]-r*a*l,t[7]-r*s*l,t[8]-a*i*l,t[9]-a*r*l,t[10]-a*a*l,t[11]-a*s*l,t[12]-s*i*l,t[13]-s*r*l,t[14]-s*a*l,t[15]-s*s*l],d=c,p=v;let u=[Math.random(),Math.random(),Math.random(),Math.random()],m=0,h=0;if(0!=o)for(let x=0;x<16&&(u=p.multVec(d,u),h=Math.sqrt(p.dot(u,u)),u=p.sml(1/h,u),!(0!=x&&Math.abs(h-m)<1e-9));x++)m=h;const g=[i*l,r*l,a*l,s*l];return{Cov:c,q:g,e:u,L:m,eMq255:p.dot(p.sml(255,g),u),eMq:p.dot(u,g),rgba:(Math.round(255*g[3])<<24|Math.round(255*g[2])<<16|Math.round(255*g[1])<<8|Math.round(255*g[0]))>>>0}}var v={multVec:(e,t)=>[e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7]*t[3],e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11]*t[3],e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]*t[3]],dot:(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],sml:(e,t)=>[e*t[0],e*t[1],e*t[2],e*t[3]]};UPNG.encode=function(e,t,n,o,i,r,a){null==o&&(o=0),null==a&&(a=!1);const s=d(e,t,n,o,[!1,!1,!1,0,a,!1]);return c(s,-1),l(s,t,n,i,r)},UPNG.encodeLL=function(e,t,n,o,i,r,a,s){const d={ctype:0+(1==o?0:2)+(0==i?0:4),depth:r,frames:[]},p=(o+i)*r,u=p*t;for(let l=0;l<e.length;l++)d.frames.push({rect:{x:0,y:0,width:t,height:n},img:new Uint8Array(e[l]),blend:0,dispose:1,bpp:Math.ceil(p/8),bpl:Math.ceil(u/8)});return c(d,0,!0),l(d,t,n,a,s)},UPNG.encode.compress=d,UPNG.encode.dither=s,UPNG.quantize=g,UPNG.quantize.getKDtree=x,UPNG.quantize.getNearest=f}();const r={toArrayBuffer(e,t){const n=e.width,o=e.height,i=n<<2,a=e.getContext("2d").getImageData(0,0,n,o),s=new Uint32Array(a.data.buffer),l=(32*n+31)/32<<2,c=l*o,d=122+c,p=new ArrayBuffer(d),u=new DataView(p),m=1<<20;let h,g,x,f,y=m,S=0,C=0,$=0;function b(e){u.setUint16(C,e,!0),C+=2}function v(e){u.setUint32(C,e,!0),C+=4}function E(e){C+=e}b(19778),v(d),E(4),v(122),v(108),v(n),v(-o>>>0),b(1),b(32),v(3),v(c),v(2835),v(2835),E(8),v(16711680),v(65280),v(255),v(4278190080),v(1466527264),function e(){for(;S<o&&y>0;){for(f=122+S*l,h=0;h<i;)y--,g=s[$++],x=g>>>24,u.setUint32(f+h,g<<8|x),h+=4;S++}$<s.length?(y=m,setTimeout(e,r._dly)):t(p)}()},toBlob(e,t){this.toArrayBuffer(e,e=>{t(new Blob([e],{type:"image/bmp"}))})},_dly:9};var i={CHROME:"CHROME",FIREFOX:"FIREFOX",DESKTOP_SAFARI:"DESKTOP_SAFARI",IE:"IE",IOS:"IOS",ETC:"ETC"},o={[i.CHROME]:16384,[i.FIREFOX]:11180,[i.DESKTOP_SAFARI]:16384,[i.IE]:8192,[i.IOS]:4096,[i.ETC]:8192};const a="undefined"!=typeof window,s="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,f=a&&window.cordova&&window.cordova.require&&window.cordova.require("cordova/modulemapper"),CustomFile=(a||s)&&(f&&f.getOriginalSymbol(window,"File")||"undefined"!=typeof File&&File),CustomFileReader=(a||s)&&(f&&f.getOriginalSymbol(window,"FileReader")||"undefined"!=typeof FileReader&&FileReader);function getFilefromDataUrl(e,t,n=Date.now()){return new Promise(o=>{const i=e.split(","),r=i[0].match(/:(.*?);/)[1],a=globalThis.atob(i[1]);let s=a.length;const l=new Uint8Array(s);for(;s--;)l[s]=a.charCodeAt(s);const c=new Blob([l],{type:r});c.name=t,c.lastModified=n,o(c)})}function getDataUrlFromFile(e){return new Promise((t,n)=>{const o=new CustomFileReader;o.onload=()=>t(o.result),o.onerror=e=>n(e),o.readAsDataURL(e)})}function loadImage(e){return new Promise((t,n)=>{const o=new Image;o.onload=()=>t(o),o.onerror=e=>n(e),o.src=e})}function getBrowserName(){if(void 0!==getBrowserName.cachedResult)return getBrowserName.cachedResult;let e=i.ETC;const{userAgent:t}=navigator;return/Chrom(e|ium)/i.test(t)?e=i.CHROME:/iP(ad|od|hone)/i.test(t)&&/WebKit/i.test(t)?e=i.IOS:/Safari/i.test(t)?e=i.DESKTOP_SAFARI:/Firefox/i.test(t)?e=i.FIREFOX:(/MSIE/i.test(t)||1==!!document.documentMode)&&(e=i.IE),getBrowserName.cachedResult=e,getBrowserName.cachedResult}function approximateBelowMaximumCanvasSizeOfBrowser(e,t){const n=getBrowserName(),i=o[n];let r=e,a=t,s=r*a;const l=r>a?a/r:r/a;for(;s>i*i;){const e=(i+r)/2,t=(i+a)/2;e<t?(a=t,r=t*l):(a=e*l,r=e),s=r*a}return{width:r,height:a}}function getNewCanvasAndCtx(e,t){let n,o;try{if(n=new OffscreenCanvas(e,t),o=n.getContext("2d"),null===o)throw new Error("getContext of OffscreenCanvas returns null")}catch(i){n=document.createElement("canvas"),o=n.getContext("2d")}return n.width=e,n.height=t,[n,o]}function drawImageInCanvas(e,t){const{width:n,height:o}=approximateBelowMaximumCanvasSizeOfBrowser(e.width,e.height),[i,r]=getNewCanvasAndCtx(n,o);return t&&/jpe?g/.test(t)&&(r.fillStyle="white",r.fillRect(0,0,i.width,i.height)),r.drawImage(e,0,0,i.width,i.height),i}function isIOS(){return void 0!==isIOS.cachedResult||(isIOS.cachedResult=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"undefined"!=typeof document&&"ontouchend"in document),isIOS.cachedResult}function drawFileInCanvas(e,t={}){return new Promise(function(n,o){let r,a;var s=function(){try{return a=drawImageInCanvas(r,t.fileType||e.type),n([r,a])}catch(i){return o(i)}},l=function(t){try{var n=function(e){try{throw e}catch(t){return o(t)}};try{let t;return getDataUrlFromFile(e).then(function(e){try{return t=e,loadImage(t).then(function(e){try{return r=e,function(){try{return s()}catch(e){return o(e)}}()}catch(t){return n(t)}},n)}catch(i){return n(i)}},n)}catch(i){n(i)}}catch(i){return o(i)}};try{if(isIOS()||[i.DESKTOP_SAFARI,i.MOBILE_SAFARI].includes(getBrowserName()))throw new Error("Skip createImageBitmap on IOS and Safari");return createImageBitmap(e).then(function(e){try{return r=e,s()}catch(t){return l()}},l)}catch(c){l()}})}function canvasToFile(e,t,n,o,i=1){return new Promise(function(a,s){let l;if("image/png"===t){let r,a,s;return r=e.getContext("2d"),({data:a}=r.getImageData(0,0,e.width,e.height)),s=UPNG.encode([a.buffer],e.width,e.height,4096*i),l=new Blob([s],{type:t}),l.name=n,l.lastModified=o,c.call(this)}{let a=function(){return c.call(this)};if("image/bmp"===t)return new Promise(t=>r.toBlob(e,t)).then(function(e){try{return l=e,l.name=n,l.lastModified=o,a.call(this)}catch(t){return s(t)}}.bind(this),s);{let r=function(){return a.call(this)};if("function"==typeof OffscreenCanvas&&e instanceof OffscreenCanvas)return e.convertToBlob({type:t,quality:i}).then(function(e){try{return l=e,l.name=n,l.lastModified=o,r.call(this)}catch(t){return s(t)}}.bind(this),s);{let a;return a=e.toDataURL(t,i),getFilefromDataUrl(a,n,o).then(function(e){try{return l=e,r.call(this)}catch(t){return s(t)}}.bind(this),s)}}}function c(){return a(l)}})}function cleanupCanvasMemory(e){e.width=0,e.height=0}function isAutoOrientationInBrowser(){return new Promise(function(e,t){let n,o,i,r;return void 0!==isAutoOrientationInBrowser.cachedResult?e(isAutoOrientationInBrowser.cachedResult):getFilefromDataUrl("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==","test.jpg",Date.now()).then(function(a){try{return n=a,drawFileInCanvas(n).then(function(a){try{return o=a[1],canvasToFile(o,n.type,n.name,n.lastModified).then(function(n){try{return i=n,cleanupCanvasMemory(o),drawFileInCanvas(i).then(function(n){try{return r=n[0],isAutoOrientationInBrowser.cachedResult=1===r.width&&2===r.height,e(isAutoOrientationInBrowser.cachedResult)}catch(o){return t(o)}},t)}catch(a){return t(a)}},t)}catch(s){return t(s)}},t)}catch(s){return t(s)}},t)})}function getExifOrientation(e){return new Promise((t,n)=>{const o=new CustomFileReader;o.onload=e=>{const n=new DataView(e.target.result);if(65496!=n.getUint16(0,!1))return t(-2);const o=n.byteLength;let i=2;for(;i<o;){if(n.getUint16(i+2,!1)<=8)return t(-1);const e=n.getUint16(i,!1);if(i+=2,65505==e){if(1165519206!=n.getUint32(i+=2,!1))return t(-1);const e=18761==n.getUint16(i+=6,!1);i+=n.getUint32(i+4,e);const o=n.getUint16(i,e);i+=2;for(let r=0;r<o;r++)if(274==n.getUint16(i+12*r,e))return t(n.getUint16(i+12*r+8,e))}else{if(65280&~e)break;i+=n.getUint16(i,!1)}}return t(-1)},o.onerror=e=>n(e),o.readAsArrayBuffer(e)})}function handleMaxWidthOrHeight(e,t){const{width:n}=e,{height:o}=e,{maxWidthOrHeight:i}=t;let r,a=e;return isFinite(i)&&(n>i||o>i)&&([a,r]=getNewCanvasAndCtx(n,o),n>o?(a.width=i,a.height=o/n*i):(a.width=n/o*i,a.height=i),r.drawImage(e,0,0,a.width,a.height),cleanupCanvasMemory(e)),a}function followExifOrientation(e,t){const{width:n}=e,{height:o}=e,[i,r]=getNewCanvasAndCtx(n,o);switch(t>4&&t<9?(i.width=o,i.height=n):(i.width=n,i.height=o),t){case 2:r.transform(-1,0,0,1,n,0);break;case 3:r.transform(-1,0,0,-1,n,o);break;case 4:r.transform(1,0,0,-1,0,o);break;case 5:r.transform(0,1,1,0,0,0);break;case 6:r.transform(0,1,-1,0,o,0);break;case 7:r.transform(0,-1,-1,0,o,n);break;case 8:r.transform(0,-1,1,0,0,n)}return r.drawImage(e,0,0,n,o),cleanupCanvasMemory(e),i}function compress(e,t,n=0){return new Promise(function(o,i){let r,a,s,l,c,d,p,u,m,h,g,x,f,y,S,C,$,b,v,E;function w(e=5){if(t.signal&&t.signal.aborted)throw t.signal.reason;r+=e,t.onProgress(Math.min(r,100))}function R(e){if(t.signal&&t.signal.aborted)throw t.signal.reason;r=Math.min(Math.max(e,r),100),t.onProgress(r)}return r=n,a=t.maxIteration||10,s=1024*t.maxSizeMB*1024,w(),drawFileInCanvas(e,t).then(function(n){try{return[,l]=n,w(),c=handleMaxWidthOrHeight(l,t),w(),new Promise(function(n,o){var i;if(!(i=t.exifOrientation))return getExifOrientation(e).then(function(e){try{return i=e,r.call(this)}catch(t){return o(t)}}.bind(this),o);function r(){return n(i)}return r.call(this)}).then(function(n){try{return d=n,w(),isAutoOrientationInBrowser().then(function(n){try{return p=n?c:followExifOrientation(c,d),w(),u=t.initialQuality||1,m=t.fileType||e.type,canvasToFile(p,m,e.name,e.lastModified,u).then(function(n){try{{let d=function(){if(a--&&(S>s||S>f)){let t,n;return t=E?.95*v.width:v.width,n=E?.95*v.height:v.height,[$,b]=getNewCanvasAndCtx(t,n),b.drawImage(v,0,0,t,n),u*="image/png"===m?.85:.95,canvasToFile($,m,e.name,e.lastModified,u).then(function(e){try{return C=e,cleanupCanvasMemory(v),v=$,S=C.size,R(Math.min(99,Math.floor((y-S)/(y-s)*100))),d}catch(t){return i(t)}},i)}return[1]},A=function(){return cleanupCanvasMemory(v),cleanupCanvasMemory($),cleanupCanvasMemory(c),cleanupCanvasMemory(p),cleanupCanvasMemory(l),R(100),o(C)};return h=n,w(),g=h.size>s,x=h.size>e.size,g||x?(f=e.size,y=h.size,S=y,v=p,E=!t.alwaysKeepResolution&&g,(r=function(e){for(;e;){if(e.then)return void e.then(r,i);try{if(e.pop){if(e.length)return e.pop()?A.call(this):e;e=d}else e=e.call(this)}catch(t){return i(t)}}}.bind(this))(d)):(R(100),o(h));var r}}catch(d){return i(d)}}.bind(this),i)}catch(r){return i(r)}}.bind(this),i)}catch(r){return i(r)}}.bind(this),i)}catch(r){return i(r)}}.bind(this),i)})}const l="\nlet scriptImported = false\nself.addEventListener('message', async (e) => {\n const { file, id, imageCompressionLibUrl, options } = e.data\n options.onProgress = (progress) => self.postMessage({ progress, id })\n try {\n if (!scriptImported) {\n // console.log('[worker] importScripts', imageCompressionLibUrl)\n self.importScripts(imageCompressionLibUrl)\n scriptImported = true\n }\n // console.log('[worker] self', self)\n const compressedFile = await imageCompression(file, options)\n self.postMessage({ file: compressedFile, id })\n } catch (e) {\n // console.error('[worker] error', e)\n self.postMessage({ error: e.message + '\\n' + e.stack, id })\n }\n})\n";let c;function compressOnWebWorker(e,t){return new Promise((n,o)=>{c||(c=function(e){const t=[];return t.push(e),URL.createObjectURL(new Blob(t))}(l));const i=new Worker(c);i.addEventListener("message",function(e){if(t.signal&&t.signal.aborted)i.terminate();else if(void 0===e.data.progress){if(e.data.error)return o(new Error(e.data.error)),void i.terminate();n(e.data.file),i.terminate()}else t.onProgress(e.data.progress)}),i.addEventListener("error",o),t.signal&&t.signal.addEventListener("abort",()=>{o(t.signal.reason),i.terminate()}),i.postMessage({file:e,imageCompressionLibUrl:t.libURL,options:{...t,onProgress:void 0,signal:void 0}})})}function imageCompression(e,t){return new Promise(function(n,o){let i,r,a,s,l,c;if(i={...t},a=0,({onProgress:s}=i),i.maxSizeMB=i.maxSizeMB||Number.POSITIVE_INFINITY,l="boolean"!=typeof i.useWebWorker||i.useWebWorker,delete i.useWebWorker,i.onProgress=e=>{a=e,"function"==typeof s&&s(a)},!(e instanceof Blob||e instanceof CustomFile))return o(new Error("The file given is not an instance of Blob or File"));if(!/^image/.test(e.type))return o(new Error("The file given is not an image"));if(c="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,!l||"function"!=typeof Worker||c)return compress(e,i).then(function(e){try{return r=e,u.call(this)}catch(t){return o(t)}}.bind(this),o);var d=function(){try{return u.call(this)}catch(e){return o(e)}}.bind(this),p=function(t){try{return compress(e,i).then(function(e){try{return r=e,d()}catch(t){return o(t)}},o)}catch(n){return o(n)}};try{return i.libURL=i.libURL||"https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.2/dist/browser-image-compression.js",compressOnWebWorker(e,i).then(function(e){try{return r=e,d()}catch(t){return p()}},p)}catch(m){p()}function u(){try{r.name=e.name,r.lastModified=e.lastModified}catch(m){}try{i.preserveExif&&"image/jpeg"===e.type&&(!i.fileType||i.fileType&&i.fileType===e.type)&&(r=copyExifWithoutOrientation(e,r))}catch(m){}return n(r)}})}imageCompression.getDataUrlFromFile=getDataUrlFromFile,imageCompression.getFilefromDataUrl=getFilefromDataUrl,imageCompression.loadImage=loadImage,imageCompression.drawImageInCanvas=drawImageInCanvas,imageCompression.drawFileInCanvas=drawFileInCanvas,imageCompression.canvasToFile=canvasToFile,imageCompression.getExifOrientation=getExifOrientation,imageCompression.handleMaxWidthOrHeight=handleMaxWidthOrHeight,imageCompression.followExifOrientation=followExifOrientation,imageCompression.cleanupCanvasMemory=cleanupCanvasMemory,imageCompression.isAutoOrientationInBrowser=isAutoOrientationInBrowser,imageCompression.approximateBelowMaximumCanvasSizeOfBrowser=approximateBelowMaximumCanvasSizeOfBrowser,imageCompression.copyExifWithoutOrientation=copyExifWithoutOrientation,imageCompression.getBrowserName=getBrowserName,imageCompression.version="2.0.2";const PDF_MIME_TYPE$1="application/pdf",imageCompressionAcceptableFileTypes=["image/jpg","image/jpeg","image/png","image/webp","image/bmp"],RECEIPT_IMAGE_COMPRESSION_OPTIONS={useWebWorker:!0,maxWidthOrHeight:1920,initialQuality:.92,maxSizeMB:2},handleImageCompression=async(e,t)=>{if(!1===imageCompressionAcceptableFileTypes.includes(e.type))return e;const n=await imageCompression(e,{useWebWorker:!0,maxWidthOrHeight:900,initialQuality:1,maxSizeMB:1.4}),o=n.lastModified,i=n.type.split("/")[1];let r=`image_${o}.${i}`;null!=t&&(r=`${t}.${i}`);return new File([n],r,{lastModified:o,type:n.type})},compressImageForReceipt=async(e,t)=>{if(!1===imageCompressionAcceptableFileTypes.includes(e.type))return e;const n=await imageCompression(e,RECEIPT_IMAGE_COMPRESSION_OPTIONS),o=n.type.split("/")[1],i=t.replace(/\.[^.]+$/,"")||"image";return new File([n],`${i}.${o}`,{lastModified:e.lastModified,type:n.type})},PDF_RENDER_SCALE=1.5,PDF_JPEG_QUALITY=.7;function canvasToJpegBlob(e,t){return new Promise((n,o)=>{e.toBlob(e=>{null!=e?n(e):o(new Error("canvas.toBlob returned null"))},"image/jpeg",t)})}async function renderPageToJpeg(e,t,n){const o=e.getViewport({scale:t}),i=document.createElement("canvas");i.width=Math.floor(o.width),i.height=Math.floor(o.height);const r=i.getContext("2d");if(null==r)throw new Error("Could not get canvas 2d context");await e.render({canvasContext:r,viewport:o}).promise;return(await canvasToJpegBlob(i,n)).arrayBuffer()}async function compressPdfForReceipt(e,t){const[{PDFDocument:n},o]=await Promise.all([import("./index-BzKtWcL1.js"),Promise.resolve().then(()=>index$2).then(e=>e.pdfjs)]),i=await e.arrayBuffer(),r=await o.getDocument({data:new Uint8Array(i)}).promise,a=r.numPages,s=await n.create();for(let d=1;d<=a;d++){const e=await r.getPage(d),t=await renderPageToJpeg(e,PDF_RENDER_SCALE,PDF_JPEG_QUALITY),n=await s.embedJpg(new Uint8Array(t)),o=n.scale(1);s.addPage([o.width,o.height]).drawImage(n,{x:0,y:0,width:o.width,height:o.height})}const l=await s.save(),c=t.toLowerCase().endsWith(".pdf")?t:`${t}.pdf`;return new File([l],c,{type:PDF_MIME_TYPE$1,lastModified:e.lastModified})}async function compressSingleFile(e,t){const n=e instanceof File?e:new File([e],t,{type:e.type});if(e.type===PDF_MIME_TYPE$1){const o=await compressPdfForReceipt(n,t);return o.size<n.size?{blob:o,name:o.name}:{blob:e,name:t}}const o=await compressImageForReceipt(n,t);return{blob:o,name:o.name}}async function compressReceiptFiles(e,t){const n=await Promise.all(e.map((e,n)=>{const o=t[n]??`file_${n}`;return compressSingleFile(e,o).catch(t=>(console.warn("[compressReceiptFiles] compression failed, using original:",t instanceof Error?t.message:t),{blob:e,name:o}))}));return{blobs:n.map(e=>e.blob),names:n.map(e=>e.name)}}const InputElementMobileCamera=({fileType:e="file",fileRef:t,name:n,value:o="",multiple:i=!1,acceptableTypes:r,onFileSizeError:a,onImageChange:s})=>/* @__PURE__ */jsxRuntimeExports.jsx("input",{type:e,ref:t,name:n,value:o,size:1e3,"data-testid":generateDataTestId("input-file-element-mobile",n),onChange:async e=>{const t=e.target.files?.[0],n=t?.size;null!=t&&null!=n?(a?.(!1),s(t),e.target.value=""):(a?.(!0),e.target.value="")},style:{display:"none"},accept:`${(r??"image/jpg, image/jpeg").toString()}`,multiple:i,capture:!0}),MoneyTransferSuccessAnimation=({shouldDisplay:e,width:t=30,height:n=30,styles:o,animationInLoop:i=!1})=>{const[,r]=useMusic(SUCCESS_SOUND_SOURCE),[a]=useAnimation("MoneyTransferSuccess");return React__default.useEffect(()=>{e&&r(!0)},[e,r]),e&&null!=a?/* @__PURE__ */jsxRuntimeExports.jsx(Lottie,{style:{width:t,height:n,...o},play:!0,animationData:a,loop:i,rendererSettings:{preserveAspectRatio:"xMidYMid slice"}}):null};var browserPonyfill={exports:{}},hasRequiredBrowserPonyfill;function requireBrowserPonyfill(){return hasRequiredBrowserPonyfill||(hasRequiredBrowserPonyfill=1,function(e,t){var n,o="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==commonjsGlobal$1&&commonjsGlobal$1,i=function(){function e(){this.fetch=!1,this.DOMException=o.DOMException}return e.prototype=o,new e}();n=i,function(e){var t=void 0!==n&&n||"undefined"!=typeof self&&self||void 0!==commonjsGlobal$1&&commonjsGlobal$1||{},o="URLSearchParams"in t,i="Symbol"in t&&"iterator"in Symbol,r="FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in t,s="ArrayBuffer"in t;if(s)var l=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&l.indexOf(Object.prototype.toString.call(e))>-1};function d(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||""===e)throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function p(e){return"string"!=typeof e&&(e=String(e)),e}function u(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function m(e){this.map={},e instanceof m?e.forEach(function(e,t){this.append(t,e)},this):Array.isArray(e)?e.forEach(function(e){if(2!=e.length)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+e.length);this.append(e[0],e[1])},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}function h(e){if(!e._noBody)return e.bodyUsed?Promise.reject(new TypeError("Already read")):void(e.bodyUsed=!0)}function g(e){return new Promise(function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function x(e){var t=new FileReader,n=g(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(e){var t;this.bodyUsed=this.bodyUsed,this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:o&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():s&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):(this._noBody=!0,this._bodyText=""),this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):o&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))}),this.arrayBuffer=function(){if(this._bodyArrayBuffer){var e=h(this);return e||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}if(r)return this.blob().then(x);throw new Error("could not read as ArrayBuffer")},this.text=function(){var e,t,n,o,i,r=h(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,n=g(t),o=/charset=([A-Za-z0-9_-]+)/.exec(e.type),i=o?o[1]:"utf-8",t.readAsText(e,i),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),o=0;o<t.length;o++)n[o]=String.fromCharCode(t[o]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},a&&(this.formData=function(){return this.text().then($)}),this.json=function(){return this.text().then(JSON.parse)},this}m.prototype.append=function(e,t){e=d(e),t=p(t);var n=this.map[e];this.map[e]=n?n+", "+t:t},m.prototype.delete=function(e){delete this.map[d(e)]},m.prototype.get=function(e){return e=d(e),this.has(e)?this.map[e]:null},m.prototype.has=function(e){return this.map.hasOwnProperty(d(e))},m.prototype.set=function(e,t){this.map[d(e)]=p(t)},m.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},m.prototype.keys=function(){var e=[];return this.forEach(function(t,n){e.push(n)}),u(e)},m.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),u(e)},m.prototype.entries=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),u(e)},i&&(m.prototype[Symbol.iterator]=m.prototype.entries);var S=["CONNECT","DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT","TRACE"];function C(e,n){if(!(this instanceof C))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var o,i,r=(n=n||{}).body;if(e instanceof C){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,n.headers||(this.headers=new m(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,r||null==e._bodyInit||(r=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=n.credentials||this.credentials||"same-origin",!n.headers&&this.headers||(this.headers=new m(n.headers)),this.method=(o=n.method||this.method||"GET",i=o.toUpperCase(),S.indexOf(i)>-1?i:o),this.mode=n.mode||this.mode||null,this.signal=n.signal||this.signal||function(){if("AbortController"in t)return(new AbortController).signal}(),this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(r),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==n.cache&&"no-cache"!==n.cache)){var a=/([?&])_=[^&]*/;a.test(this.url)?this.url=this.url.replace(a,"$1_="+/* @__PURE__ */(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+/* @__PURE__ */(new Date).getTime()}}function $(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),o=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(o),decodeURIComponent(i))}}),t}function b(e,t){if(!(this instanceof b))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=void 0===t.statusText?"":""+t.statusText,this.headers=new m(t.headers),this.url=t.url||"",this._initBody(e)}C.prototype.clone=function(){return new C(this,{body:this._bodyInit})},y.call(C.prototype),y.call(b.prototype),b.prototype.clone=function(){return new b(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new m(this.headers),url:this.url})},b.error=function(){var e=new b(null,{status:200,statusText:""});return e.ok=!1,e.status=0,e.type="error",e};var v=[301,302,303,307,308];b.redirect=function(e,t){if(-1===v.indexOf(t))throw new RangeError("Invalid status code");return new b(null,{status:t,headers:{location:e}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(w){e.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function E(n,o){return new Promise(function(i,a){var l=new C(n,o);if(l.signal&&l.signal.aborted)return a(new e.DOMException("Aborted","AbortError"));var c=new XMLHttpRequest;function u(){c.abort()}if(c.onload=function(){var e,t,n={statusText:c.statusText,headers:(e=c.getAllResponseHeaders()||"",t=new m,e.replace(/\r?\n[\t ]+/g," ").split("\r").map(function(e){return 0===e.indexOf("\n")?e.substr(1,e.length):e}).forEach(function(e){var n=e.split(":"),o=n.shift().trim();if(o){var i=n.join(":").trim();try{t.append(o,i)}catch(r){console.warn("Response "+r.message)}}}),t)};0===l.url.indexOf("file://")&&(c.status<200||c.status>599)?n.status=200:n.status=c.status,n.url="responseURL"in c?c.responseURL:n.headers.get("X-Request-URL");var o="response"in c?c.response:c.responseText;setTimeout(function(){i(new b(o,n))},0)},c.onerror=function(){setTimeout(function(){a(new TypeError("Network request failed"))},0)},c.ontimeout=function(){setTimeout(function(){a(new TypeError("Network request timed out"))},0)},c.onabort=function(){setTimeout(function(){a(new e.DOMException("Aborted","AbortError"))},0)},c.open(l.method,function(e){try{return""===e&&t.location.href?t.location.href:e}catch(n){return e}}(l.url),!0),"include"===l.credentials?c.withCredentials=!0:"omit"===l.credentials&&(c.withCredentials=!1),"responseType"in c&&(r?c.responseType="blob":s&&(c.responseType="arraybuffer")),o&&"object"==typeof o.headers&&!(o.headers instanceof m||t.Headers&&o.headers instanceof t.Headers)){var h=[];Object.getOwnPropertyNames(o.headers).forEach(function(e){h.push(d(e)),c.setRequestHeader(e,p(o.headers[e]))}),l.headers.forEach(function(e,t){-1===h.indexOf(t)&&c.setRequestHeader(t,e)})}else l.headers.forEach(function(e,t){c.setRequestHeader(t,e)});l.signal&&(l.signal.addEventListener("abort",u),c.onreadystatechange=function(){4===c.readyState&&l.signal.removeEventListener("abort",u)}),c.send(void 0===l._bodyInit?null:l._bodyInit)})}E.polyfill=!0,t.fetch||(t.fetch=E,t.Headers=m,t.Request=C,t.Response=b),e.Headers=m,e.Request=C,e.Response=b,e.fetch=E,Object.defineProperty(e,"__esModule",{value:!0})}({}),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=o.fetch?o:i;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t}(browserPonyfill,browserPonyfill.exports)),browserPonyfill.exports}var browserPonyfillExports=requireBrowserPonyfill();const fetch$1=/* @__PURE__ */getDefaultExportFromCjs(browserPonyfillExports),SvgNewVendor=e=>/* @__PURE__ */React.createElement("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},/* @__PURE__ */React.createElement("path",{d:"M7.5055 4L1.5 9.54354L22.5 9.5435",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),/* @__PURE__ */React.createElement("path",{d:"M16.4945 19.7067L22.5 14.1632H1.5",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}));__webpack_exports__GlobalWorkerOptions.workerSrc=`//cdnjs.cloudflare.com/ajax/libs/pdf.js/${__webpack_exports__version}/pdf.worker.mjs`;const{common:common$3b}=appLocale.getLocalizedStrings(),FileInputElementName$1="invoice",getEffectiveCitationVariant=(e,t,n)=>{if("deleted"===e.variant)return"deleted";if("excluded"===e.variant)return"excluded";return null!=t&&e.statementTransactionId===t||null!=n&&e.statementTransactionId===n?"hovered":e.variant??"default"},findCitationTransactionIdAtPoint=(e,t,n)=>{const o=Array.from(e.querySelectorAll("[data-statement-transaction-id]"));for(const i of o){if("excluded"===i.dataset.citationVariant)continue;const e=i.getBoundingClientRect();if(t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom)return i.dataset.statementTransactionId}},getScrollTargetPageNumber=(e,t)=>{if(null==t)return;const n=e.find(e=>e.statementTransactionId===t);return n?.page},isElementVisibleInContainer=(e,t)=>{const n=e.getBoundingClientRect(),o=null!=t?t.getBoundingClientRect():{top:0,left:0,bottom:window.innerHeight,right:window.innerWidth};return n.bottom>o.top&&n.top<o.bottom&&n.right>o.left&&n.left<o.right},getScrollableParent=e=>{let t=e.parentElement;for(;null!=t;){const{overflowY:e}=window.getComputedStyle(t);if(("auto"===e||"scroll"===e)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return null},scrollPageElementIntoView=(e,t,n="smooth")=>{const o=t??getScrollableParent(e);if(null==o)return void e.scrollIntoView({behavior:n,block:"center"});const i=e.getBoundingClientRect(),r=o.getBoundingClientRect(),a=o.scrollTop+(i.top-r.top)-(o.clientHeight-i.height)/2;o.scrollTo({top:Math.max(0,a),behavior:n})};function getPolygonBounds(e){const t=e.map(e=>e.x),n=e.map(e=>e.y);return{maxX:Math.max(...t),maxY:Math.max(...n),minX:Math.min(...t),minY:Math.min(...n)}}function convertPolygonToPercent(e,t,n){const{minX:o,maxX:i,minY:r,maxY:a}=getPolygonBounds(e);return{height:(a-r)/n*100,left:o/t*100,top:r/n*100,width:(i-o)/t*100}}function RenderPdf(e){const[t,n]=useState(0),[o,i]=useState(void 0),[r,a]=useState(null),[s,l]=useState(void 0),c=useWindowSizeContext(),d=useRef(null),p=useRef(null),u=useRef(void 0),m=null!=e.highlightedCitations&&e.highlightedCitations.length>0;useLayoutEffect(()=>{if(e.isFullScreen)return void i(void 0);const t=p.current;if(null==t)return;const n=()=>{const e=Math.floor(t.clientWidth);e>0&&i(t=>t===e?t:e)};n();const o=new ResizeObserver(n);return o.observe(t),()=>{o.disconnect()}},[e.isFullScreen,e.fileUrl]);const h=t=>{u.current!==t&&(u.current=t,l(t),e.onCitationHover?.(t))},g=e=>{!0===m&&h(findCitationTransactionIdAtPoint(e.currentTarget,e.clientX,e.clientY))},x=()=>{!0===m&&h(void 0)},f=t=>{null!=e.onCitationClick&&e.onCitationClick(findCitationTransactionIdAtPoint(t.currentTarget,t.clientX,t.clientY))},y=useCallback(()=>{if(null==e.highlightedCitations||0===e.highlightedCitations.length)return;const t=getScrollTargetPageNumber(e.highlightedCitations,e.selectedStatementTransactionId);if(null==t)return;const n=p.current?.querySelector(`[data-testid="pdf-page-${t}"]`);if(null!=n){const t=p.current,o=null!=t&&t.scrollHeight>t.clientHeight?t:null,i=(null!=e.selectedStatementTransactionId?n.querySelector(`[data-statement-transaction-id="${CSS.escape(String(e.selectedStatementTransactionId))}"]`):null)??n;if(isElementVisibleInContainer(i,o))return;scrollPageElementIntoView(i,o)}},[e.highlightedCitations,e.selectedStatementTransactionId]);useEffect(()=>{if(null==e.highlightedCitations||0===e.highlightedCitations.length||null==e.selectedStatementTransactionId)return;y();const t=requestAnimationFrame(y),n=window.setTimeout(y,150);return()=>{cancelAnimationFrame(t),window.clearTimeout(n)}},[e.highlightedCitations,e.selectedStatementTransactionId,t,y]),useEffect(()=>{a(null),n(0)},[e.fileUrl]);const S=t=>{if(!e.highlightedCitations)return null;const n=e.highlightedCitations.filter(e=>e.page===t);return 0===n.length?null:/* @__PURE__ */jsxRuntimeExports.jsx(HighlightsOverlay,{children:n.flatMap((t,n)=>{const o=convertPolygonToPercent(t.polygon,t.pageWidth,t.pageHeight),i=getEffectiveCitationVariant(t,e.selectedStatementTransactionId,s);/* @__PURE__ */
|
|
11828
|
+
`,BottomHeader=styled$2(H6Medium)``;function _mergeNamespaces$1(e,t){return t.forEach(function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach(function(n){if("default"!==n&&!(n in e)){var o=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,o.get?o:{enumerable:!0,get:function(){return t[n]}})}})}),Object.freeze(e)}function copyExifWithoutOrientation(e,t){return new Promise(function(n,o){let i;return getApp1Segment(e).then(function(e){try{return i=e,n(new Blob([t.slice(0,2),i,t.slice(2)],{type:"image/jpeg"}))}catch(r){return o(r)}},o)})}const getApp1Segment=e=>new Promise((t,n)=>{const o=new FileReader;o.addEventListener("load",({target:{result:e}})=>{const o=new DataView(e);let i=0;if(65496!==o.getUint16(i))return n("not a valid JPEG");for(i+=2;;){const r=o.getUint16(i);if(65498===r)break;const a=o.getUint16(i+2);if(65505===r&&1165519206===o.getUint32(i+4)){const r=i+10;let s;switch(o.getUint16(r)){case 18761:s=!0;break;case 19789:s=!1;break;default:return n("TIFF header contains invalid endian")}if(42!==o.getUint16(r+2,s))return n("TIFF header contains invalid version");const l=o.getUint32(r+4,s),c=r+l+2+12*o.getUint16(r+l,s);for(let e=r+l+2;e<c;e+=12)if(274==o.getUint16(e,s)){if(3!==o.getUint16(e+2,s))return n("Orientation data type is invalid");if(1!==o.getUint32(e+4,s))return n("Orientation data count is invalid");o.setUint16(e+8,1,s);break}return t(e.slice(i,i+2+a))}i+=2+a}return t(new Blob)}),o.readAsArrayBuffer(e)});var e={},t={get exports(){return e},set exports(t){e=t}},r2,i3,UZIP2;UZIP2={},t.exports=UZIP2,UZIP2.parse=function(e,t){for(var n=UZIP2.bin.readUshort,o=UZIP2.bin.readUint,i=0,r={},a=new Uint8Array(e),s=a.length-4;101010256!=o(a,s);)s--;i=s,i+=4;var l=n(a,i+=4);n(a,i+=2);var c=o(a,i+=2),d=o(a,i+=4);i+=4,i=d;for(var p=0;p<l;p++){o(a,i),i+=4,i+=4,i+=4,o(a,i+=4),c=o(a,i+=4);var u=o(a,i+=4),m=n(a,i+=4),h=n(a,i+2),g=n(a,i+4);i+=6;var x=o(a,i+=8);i+=4,i+=m+h+g,UZIP2._readLocal(a,x,r,c,u,t)}return r},UZIP2._readLocal=function(e,t,n,o,i,r){var a=UZIP2.bin.readUshort,s=UZIP2.bin.readUint;s(e,t),a(e,t+=4),a(e,t+=2);var l=a(e,t+=2);s(e,t+=2),s(e,t+=4),t+=4;var c=a(e,t+=8),d=a(e,t+=2);t+=2;var p=UZIP2.bin.readUTF8(e,t,c);if(t+=c,t+=d,r)n[p]={size:i,csize:o};else{var u=new Uint8Array(e.buffer,t);if(0==l)n[p]=new Uint8Array(u.buffer.slice(t,t+o));else{if(8!=l)throw"unknown compression method: "+l;var m=new Uint8Array(i);UZIP2.inflateRaw(u,m),n[p]=m}}},UZIP2.inflateRaw=function(e,t){return UZIP2.F.inflate(e,t)},UZIP2.inflate=function(e,t){return e[0],e[1],UZIP2.inflateRaw(new Uint8Array(e.buffer,e.byteOffset+2,e.length-6),t)},UZIP2.deflate=function(e,t){null==t&&(t={level:6});var n=0,o=new Uint8Array(50+Math.floor(1.1*e.length));o[n]=120,o[n+1]=156,n+=2,n=UZIP2.F.deflateRaw(e,o,n,t.level);var i=UZIP2.adler(e,0,e.length);return o[n+0]=i>>>24&255,o[n+1]=i>>>16&255,o[n+2]=i>>>8&255,o[n+3]=i>>>0&255,new Uint8Array(o.buffer,0,n+4)},UZIP2.deflateRaw=function(e,t){null==t&&(t={level:6});var n=new Uint8Array(50+Math.floor(1.1*e.length)),o=UZIP2.F.deflateRaw(e,n,o,t.level);return new Uint8Array(n.buffer,0,o)},UZIP2.encode=function(e,t){null==t&&(t=!1);var n=0,o=UZIP2.bin.writeUint,i=UZIP2.bin.writeUshort,r={};for(var a in e){var s=!UZIP2._noNeed(a)&&!t,l=e[a],c=UZIP2.crc.crc(l,0,l.length);r[a]={cpr:s,usize:l.length,crc:c,file:s?UZIP2.deflateRaw(l):l}}for(var a in r)n+=r[a].file.length+30+46+2*UZIP2.bin.sizeUTF8(a);n+=22;var d=new Uint8Array(n),p=0,u=[];for(var a in r){var m=r[a];u.push(p),p=UZIP2._writeHeader(d,p,a,m,0)}var h=0,g=p;for(var a in r)m=r[a],u.push(p),p=UZIP2._writeHeader(d,p,a,m,1,u[h++]);var x=p-g;return o(d,p,101010256),p+=4,i(d,p+=4,h),i(d,p+=2,h),o(d,p+=2,x),o(d,p+=4,g),p+=4,p+=2,d.buffer},UZIP2._noNeed=function(e){var t=e.split(".").pop().toLowerCase();return-1!="png,jpg,jpeg,zip".indexOf(t)},UZIP2._writeHeader=function(e,t,n,o,i,r){var a=UZIP2.bin.writeUint,s=UZIP2.bin.writeUshort,l=o.file;return a(e,t,0==i?67324752:33639248),t+=4,1==i&&(t+=2),s(e,t,20),s(e,t+=2,0),s(e,t+=2,o.cpr?8:0),a(e,t+=2,0),a(e,t+=4,o.crc),a(e,t+=4,l.length),a(e,t+=4,o.usize),s(e,t+=4,UZIP2.bin.sizeUTF8(n)),s(e,t+=2,0),t+=2,1==i&&(t+=2,t+=2,a(e,t+=6,r),t+=4),t+=UZIP2.bin.writeUTF8(e,t,n),0==i&&(e.set(l,t),t+=l.length),t},UZIP2.crc={table:function(){for(var e=new Uint32Array(256),t=0;t<256;t++){for(var n=t,o=0;o<8;o++)1&n?n=3988292384^n>>>1:n>>>=1;e[t]=n}return e}(),update:function(e,t,n,o){for(var i=0;i<o;i++)e=UZIP2.crc.table[255&(e^t[n+i])]^e>>>8;return e},crc:function(e,t,n){return 4294967295^UZIP2.crc.update(4294967295,e,t,n)}},UZIP2.adler=function(e,t,n){for(var o=1,i=0,r=t,a=t+n;r<a;){for(var s=Math.min(r+5552,a);r<s;)i+=o+=e[r++];o%=65521,i%=65521}return i<<16|o},UZIP2.bin={readUshort:function(e,t){return e[t]|e[t+1]<<8},writeUshort:function(e,t,n){e[t]=255&n,e[t+1]=n>>8&255},readUint:function(e,t){return 16777216*e[t+3]+(e[t+2]<<16|e[t+1]<<8|e[t])},writeUint:function(e,t,n){e[t]=255&n,e[t+1]=n>>8&255,e[t+2]=n>>16&255,e[t+3]=n>>24&255},readASCII:function(e,t,n){for(var o="",i=0;i<n;i++)o+=String.fromCharCode(e[t+i]);return o},writeASCII:function(e,t,n){for(var o=0;o<n.length;o++)e[t+o]=n.charCodeAt(o)},pad:function(e){return e.length<2?"0"+e:e},readUTF8:function(e,t,n){for(var o,i="",r=0;r<n;r++)i+="%"+UZIP2.bin.pad(e[t+r].toString(16));try{o=decodeURIComponent(i)}catch(a){return UZIP2.bin.readASCII(e,t,n)}return o},writeUTF8:function(e,t,n){for(var o=n.length,i=0,r=0;r<o;r++){var a=n.charCodeAt(r);if(4294967168&a)if(4294965248&a)if(4294901760&a){if(4292870144&a)throw"e";e[t+i]=240|a>>18,e[t+i+1]=128|a>>12&63,e[t+i+2]=128|a>>6&63,e[t+i+3]=128|63&a,i+=4}else e[t+i]=224|a>>12,e[t+i+1]=128|a>>6&63,e[t+i+2]=128|63&a,i+=3;else e[t+i]=192|a>>6,e[t+i+1]=128|63&a,i+=2;else e[t+i]=a,i++}return i},sizeUTF8:function(e){for(var t=e.length,n=0,o=0;o<t;o++){var i=e.charCodeAt(o);if(4294967168&i)if(4294965248&i)if(4294901760&i){if(4292870144&i)throw"e";n+=4}else n+=3;else n+=2;else n++}return n}},UZIP2.F={},UZIP2.F.deflateRaw=function(e,t,n,o){var i=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]][o],r=UZIP2.F.U,a=UZIP2.F._goodIndex;UZIP2.F._hash;var s=UZIP2.F._putsE,l=0,c=n<<3,d=0,p=e.length;if(0==o){for(;l<p;)s(t,c,l+(v=Math.min(65535,p-l))==p?1:0),c=UZIP2.F._copyExact(e,l,v,t,c+8),l+=v;return c>>>3}var u=r.lits,m=r.strt,h=r.prev,g=0,x=0,f=0,y=0,S=0,C=0;for(p>2&&(m[C=UZIP2.F._hash(e,0)]=0),l=0;l<p;l++){if(S=C,l+1<p-2){C=UZIP2.F._hash(e,l+1);var $=l+1&32767;h[$]=m[C],m[C]=$}if(d<=l){(g>14e3||x>26697)&&p-l>100&&(d<l&&(u[g]=l-d,g+=2,d=l),c=UZIP2.F._writeBlock(l==p-1||d==p?1:0,u,g,y,e,f,l-f,t,c),g=x=y=0,f=l);var b=0;l<p-2&&(b=UZIP2.F._bestMatch(e,l,h,S,Math.min(i[2],p-l),i[3]));var v=b>>>16,E=65535&b;if(0!=b){E=65535&b;var w=a(v=b>>>16,r.of0);r.lhst[257+w]++;var R=a(E,r.df0);r.dhst[R]++,y+=r.exb[w]+r.dxb[R],u[g]=v<<23|l-d,u[g+1]=E<<16|w<<8|R,g+=2,d=l+v}else r.lhst[e[l]]++;x++}}for(f==l&&0!=e.length||(d<l&&(u[g]=l-d,g+=2,d=l),c=UZIP2.F._writeBlock(1,u,g,y,e,f,l-f,t,c),g=0,x=0,g=x=y=0,f=l);7&c;)c++;return c>>>3},UZIP2.F._bestMatch=function(e,t,n,o,i,r){var a=32767&t,s=n[a],l=a-s+32768&32767;if(s==a||o!=UZIP2.F._hash(e,t-l))return 0;for(var c=0,d=0,p=Math.min(32767,t);l<=p&&0!=--r&&s!=a;){if(0==c||e[t+c]==e[t+c-l]){var u=UZIP2.F._howLong(e,t,l);if(u>c){if(d=l,(c=u)>=i)break;l+2<u&&(u=l+2);for(var m=0,h=0;h<u-2;h++){var g=t-l+h+32768&32767,x=g-n[g]+32768&32767;x>m&&(m=x,s=g)}}}l+=(a=s)-(s=n[a])+32768&32767}return c<<16|d},UZIP2.F._howLong=function(e,t,n){if(e[t]!=e[t-n]||e[t+1]!=e[t+1-n]||e[t+2]!=e[t+2-n])return 0;var o=t,i=Math.min(e.length,t+258);for(t+=3;t<i&&e[t]==e[t-n];)t++;return t-o},UZIP2.F._hash=function(e,t){return(e[t]<<8|e[t+1])+(e[t+2]<<4)&65535},UZIP2.saved=0,UZIP2.F._writeBlock=function(e,t,n,o,i,r,a,s,l){var c,d,p,u,m,h,g,x,f,y=UZIP2.F.U,S=UZIP2.F._putsF,C=UZIP2.F._putsE;y.lhst[256]++,d=(c=UZIP2.F.getTrees())[0],p=c[1],u=c[2],m=c[3],h=c[4],g=c[5],x=c[6],f=c[7];var $=32+(l+3&7?8-(l+3&7):0)+(a<<3),b=o+UZIP2.F.contSize(y.fltree,y.lhst)+UZIP2.F.contSize(y.fdtree,y.dhst),v=o+UZIP2.F.contSize(y.ltree,y.lhst)+UZIP2.F.contSize(y.dtree,y.dhst);v+=14+3*g+UZIP2.F.contSize(y.itree,y.ihst)+(2*y.ihst[16]+3*y.ihst[17]+7*y.ihst[18]);for(var E=0;E<286;E++)y.lhst[E]=0;for(E=0;E<30;E++)y.dhst[E]=0;for(E=0;E<19;E++)y.ihst[E]=0;var w=$<b&&$<v?0:b<v?1:2;if(S(s,l,e),S(s,l+1,w),l+=3,0==w){for(;7&l;)l++;l=UZIP2.F._copyExact(i,r,a,s,l)}else{var R,A;if(1==w&&(R=y.fltree,A=y.fdtree),2==w){UZIP2.F.makeCodes(y.ltree,d),UZIP2.F.revCodes(y.ltree,d),UZIP2.F.makeCodes(y.dtree,p),UZIP2.F.revCodes(y.dtree,p),UZIP2.F.makeCodes(y.itree,u),UZIP2.F.revCodes(y.itree,u),R=y.ltree,A=y.dtree,C(s,l,m-257),C(s,l+=5,h-1),C(s,l+=5,g-4),l+=4;for(var j=0;j<g;j++)C(s,l+3*j,y.itree[1+(y.ordr[j]<<1)]);l+=3*g,l=UZIP2.F._codeTiny(x,y.itree,s,l),l=UZIP2.F._codeTiny(f,y.itree,s,l)}for(var T=r,I=0;I<n;I+=2){for(var k=t[I],L=k>>>23,D=T+(8388607&k);T<D;)l=UZIP2.F._writeLit(i[T++],R,s,l);if(0!=L){var _=t[I+1],P=_>>16,B=_>>8&255,M=255&_;C(s,l=UZIP2.F._writeLit(257+B,R,s,l),L-y.of0[B]),l+=y.exb[B],S(s,l=UZIP2.F._writeLit(M,A,s,l),P-y.df0[M]),l+=y.dxb[M],T+=L}}l=UZIP2.F._writeLit(256,R,s,l)}return l},UZIP2.F._copyExact=function(e,t,n,o,i){var r=i>>>3;return o[r]=n,o[r+1]=n>>>8,o[r+2]=255-o[r],o[r+3]=255-o[r+1],r+=4,o.set(new Uint8Array(e.buffer,t,n),r),i+(n+4<<3)},UZIP2.F.getTrees=function(){for(var e=UZIP2.F.U,t=UZIP2.F._hufTree(e.lhst,e.ltree,15),n=UZIP2.F._hufTree(e.dhst,e.dtree,15),o=[],i=UZIP2.F._lenCodes(e.ltree,o),r=[],a=UZIP2.F._lenCodes(e.dtree,r),s=0;s<o.length;s+=2)e.ihst[o[s]]++;for(s=0;s<r.length;s+=2)e.ihst[r[s]]++;for(var l=UZIP2.F._hufTree(e.ihst,e.itree,7),c=19;c>4&&0==e.itree[1+(e.ordr[c-1]<<1)];)c--;return[t,n,l,i,a,c,o,r]},UZIP2.F.getSecond=function(e){for(var t=[],n=0;n<e.length;n+=2)t.push(e[n+1]);return t},UZIP2.F.nonZero=function(e){for(var t="",n=0;n<e.length;n+=2)0!=e[n+1]&&(t+=(n>>1)+",");return t},UZIP2.F.contSize=function(e,t){for(var n=0,o=0;o<t.length;o++)n+=t[o]*e[1+(o<<1)];return n},UZIP2.F._codeTiny=function(e,t,n,o){for(var i=0;i<e.length;i+=2){var r=e[i],a=e[i+1];o=UZIP2.F._writeLit(r,t,n,o);var s=16==r?2:17==r?3:7;r>15&&(UZIP2.F._putsE(n,o,a,s),o+=s)}return o},UZIP2.F._lenCodes=function(e,t){for(var n=e.length;2!=n&&0==e[n-1];)n-=2;for(var o=0;o<n;o+=2){var i=e[o+1],r=o+3<n?e[o+3]:-1,a=o+5<n?e[o+5]:-1,s=0==o?-1:e[o-1];if(0==i&&r==i&&a==i){for(var l=o+5;l+2<n&&e[l+2]==i;)l+=2;(c=Math.min(l+1-o>>>1,138))<11?t.push(17,c-3):t.push(18,c-11),o+=2*c-2}else if(i==s&&r==i&&a==i){for(l=o+5;l+2<n&&e[l+2]==i;)l+=2;var c=Math.min(l+1-o>>>1,6);t.push(16,c-3),o+=2*c-2}else t.push(i,0)}return n>>>1},UZIP2.F._hufTree=function(e,t,n){var o=[],i=e.length,r=t.length,a=0;for(a=0;a<r;a+=2)t[a]=0,t[a+1]=0;for(a=0;a<i;a++)0!=e[a]&&o.push({lit:a,f:e[a]});var s=o.length,l=o.slice(0);if(0==s)return 0;if(1==s){var c=o[0].lit;return l=0==c?1:0,t[1+(c<<1)]=1,t[1+(l<<1)]=1,1}o.sort(function(e,t){return e.f-t.f});var d=o[0],p=o[1],u=0,m=1,h=2;for(o[0]={lit:-1,f:d.f+p.f,l:d,r:p,d:0};m!=s-1;)d=u!=m&&(h==s||o[u].f<o[h].f)?o[u++]:o[h++],p=u!=m&&(h==s||o[u].f<o[h].f)?o[u++]:o[h++],o[m++]={lit:-1,f:d.f+p.f,l:d,r:p};var g=UZIP2.F.setDepth(o[m-1],0);for(g>n&&(UZIP2.F.restrictDepth(l,n,g),g=n),a=0;a<s;a++)t[1+(l[a].lit<<1)]=l[a].d;return g},UZIP2.F.setDepth=function(e,t){return-1!=e.lit?(e.d=t,t):Math.max(UZIP2.F.setDepth(e.l,t+1),UZIP2.F.setDepth(e.r,t+1))},UZIP2.F.restrictDepth=function(e,t,n){var o=0,i=1<<n-t,r=0;for(e.sort(function(e,t){return t.d==e.d?e.f-t.f:t.d-e.d}),o=0;o<e.length&&e[o].d>t;o++){var a=e[o].d;e[o].d=t,r+=i-(1<<n-a)}for(r>>>=n-t;r>0;)(a=e[o].d)<t?(e[o].d++,r-=1<<t-a-1):o++;for(;o>=0;o--)e[o].d==t&&r<0&&(e[o].d--,r++);0!=r&&console.log("debt left")},UZIP2.F._goodIndex=function(e,t){var n=0;return t[16|n]<=e&&(n|=16),t[8|n]<=e&&(n|=8),t[4|n]<=e&&(n|=4),t[2|n]<=e&&(n|=2),t[1|n]<=e&&(n|=1),n},UZIP2.F._writeLit=function(e,t,n,o){return UZIP2.F._putsF(n,o,t[e<<1]),o+t[1+(e<<1)]},UZIP2.F.inflate=function(e,t){var n=Uint8Array;if(3==e[0]&&0==e[1])return t||new n(0);var o=UZIP2.F,i=o._bitsF,r=o._bitsE,a=o._decodeTiny,s=o.makeCodes,l=o.codes2map,c=o._get17,d=o.U,p=null==t;p&&(t=new n(e.length>>>2<<3));for(var u,m,h=0,g=0,x=0,f=0,y=0,S=0,C=0,$=0,b=0;0==h;)if(h=i(e,b,1),g=i(e,b+1,2),b+=3,0!=g){if(p&&(t=UZIP2.F._check(t,$+(1<<17))),1==g&&(u=d.flmap,m=d.fdmap,S=511,C=31),2==g){x=r(e,b,5)+257,f=r(e,b+5,5)+1,y=r(e,b+10,4)+4,b+=14;for(var v=0;v<38;v+=2)d.itree[v]=0,d.itree[v+1]=0;var E=1;for(v=0;v<y;v++){var w=r(e,b+3*v,3);d.itree[1+(d.ordr[v]<<1)]=w,w>E&&(E=w)}b+=3*y,s(d.itree,E),l(d.itree,E,d.imap),u=d.lmap,m=d.dmap,b=a(d.imap,(1<<E)-1,x+f,e,b,d.ttree);var R=o._copyOut(d.ttree,0,x,d.ltree);S=(1<<R)-1;var A=o._copyOut(d.ttree,x,f,d.dtree);C=(1<<A)-1,s(d.ltree,R),l(d.ltree,R,u),s(d.dtree,A),l(d.dtree,A,m)}for(;;){var j=u[c(e,b)&S];b+=15&j;var T=j>>>4;if(T>>>8==0)t[$++]=T;else{if(256==T)break;var I=$+T-254;if(T>264){var k=d.ldef[T-257];I=$+(k>>>3)+r(e,b,7&k),b+=7&k}var L=m[c(e,b)&C];b+=15&L;var D=L>>>4,_=d.ddef[D],P=(_>>>4)+i(e,b,15&_);for(b+=15&_,p&&(t=UZIP2.F._check(t,$+(1<<17)));$<I;)t[$]=t[$++-P],t[$]=t[$++-P],t[$]=t[$++-P],t[$]=t[$++-P];$=I}}}else{7&b&&(b+=8-(7&b));var B=4+(b>>>3),M=e[B-4]|e[B-3]<<8;p&&(t=UZIP2.F._check(t,$+M)),t.set(new n(e.buffer,e.byteOffset+B,M),$),b=B+M<<3,$+=M}return t.length==$?t:t.slice(0,$)},UZIP2.F._check=function(e,t){var n=e.length;if(t<=n)return e;var o=new Uint8Array(Math.max(n<<1,t));return o.set(e,0),o},UZIP2.F._decodeTiny=function(e,t,n,o,i,r){for(var a=UZIP2.F._bitsE,s=UZIP2.F._get17,l=0;l<n;){var c=e[s(o,i)&t];i+=15&c;var d=c>>>4;if(d<=15)r[l]=d,l++;else{var p=0,u=0;16==d?(u=3+a(o,i,2),i+=2,p=r[l-1]):17==d?(u=3+a(o,i,3),i+=3):18==d&&(u=11+a(o,i,7),i+=7);for(var m=l+u;l<m;)r[l]=p,l++}}return i},UZIP2.F._copyOut=function(e,t,n,o){for(var i=0,r=0,a=o.length>>>1;r<n;){var s=e[r+t];o[r<<1]=0,o[1+(r<<1)]=s,s>i&&(i=s),r++}for(;r<a;)o[r<<1]=0,o[1+(r<<1)]=0,r++;return i},UZIP2.F.makeCodes=function(e,t){for(var n,o,i,r,a=UZIP2.F.U,s=e.length,l=a.bl_count,c=0;c<=t;c++)l[c]=0;for(c=1;c<s;c+=2)l[e[c]]++;var d=a.next_code;for(n=0,l[0]=0,o=1;o<=t;o++)n=n+l[o-1]<<1,d[o]=n;for(i=0;i<s;i+=2)0!=(r=e[i+1])&&(e[i]=d[r],d[r]++)},UZIP2.F.codes2map=function(e,t,n){for(var o=e.length,i=UZIP2.F.U.rev15,r=0;r<o;r+=2)if(0!=e[r+1])for(var a=r>>1,s=e[r+1],l=a<<4|s,c=t-s,d=e[r]<<c,p=d+(1<<c);d!=p;)n[i[d]>>>15-t]=l,d++},UZIP2.F.revCodes=function(e,t){for(var n=UZIP2.F.U.rev15,o=15-t,i=0;i<e.length;i+=2){var r=e[i]<<t-e[i+1];e[i]=n[r]>>>o}},UZIP2.F._putsE=function(e,t,n){n<<=7&t;var o=t>>>3;e[o]|=n,e[o+1]|=n>>>8},UZIP2.F._putsF=function(e,t,n){n<<=7&t;var o=t>>>3;e[o]|=n,e[o+1]|=n>>>8,e[o+2]|=n>>>16},UZIP2.F._bitsE=function(e,t,n){return(e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<n)-1},UZIP2.F._bitsF=function(e,t,n){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<n)-1},UZIP2.F._get17=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},UZIP2.F._get25=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},UZIP2.F.U=(r2=Uint16Array,i3=Uint32Array,{next_code:new r2(16),bl_count:new r2(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new r2(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new i3(32),flmap:new r2(512),fltree:[],fdmap:new r2(32),fdtree:[],lmap:new r2(32768),ltree:[],ttree:[],dmap:new r2(32768),dtree:[],imap:new r2(512),itree:[],rev15:new r2(32768),lhst:new i3(286),dhst:new i3(30),ihst:new i3(19),lits:new i3(15e3),strt:new r2(65536),prev:new r2(32768)}),function(){for(var e=UZIP2.F.U,t=0;t<32768;t++){var n=t;n=(4278255360&(n=(4042322160&(n=(3435973836&(n=(2863311530&n)>>>1|(1431655765&n)<<1))>>>2|(858993459&n)<<2))>>>4|(252645135&n)<<4))>>>8|(16711935&n)<<8,e.rev15[t]=(n>>>16|n<<16)>>>17}function o(e,t,n){for(;0!=t--;)e.push(0,n)}for(t=0;t<32;t++)e.ldef[t]=e.of0[t]<<3|e.exb[t],e.ddef[t]=e.df0[t]<<4|e.dxb[t];o(e.fltree,144,8),o(e.fltree,112,9),o(e.fltree,24,7),o(e.fltree,8,8),UZIP2.F.makeCodes(e.fltree,9),UZIP2.F.codes2map(e.fltree,9,e.flmap),UZIP2.F.revCodes(e.fltree,9),o(e.fdtree,32,5),UZIP2.F.makeCodes(e.fdtree,5),UZIP2.F.codes2map(e.fdtree,5,e.fdmap),UZIP2.F.revCodes(e.fdtree,5),o(e.itree,19,0),o(e.ltree,286,0),o(e.dtree,30,0),o(e.ttree,320,0)}();var UZIP=_mergeNamespaces$1({__proto__:null,default:e},[e]);const UPNG=function(){var e={nextZero(e,t){for(;0!=e[t];)t++;return t},readUshort:(e,t)=>e[t]<<8|e[t+1],writeUshort(e,t,n){e[t]=n>>8&255,e[t+1]=255&n},readUint:(e,t)=>16777216*e[t]+(e[t+1]<<16|e[t+2]<<8|e[t+3]),writeUint(e,t,n){e[t]=n>>24&255,e[t+1]=n>>16&255,e[t+2]=n>>8&255,e[t+3]=255&n},readASCII(e,t,n){let o="";for(let i=0;i<n;i++)o+=String.fromCharCode(e[t+i]);return o},writeASCII(e,t,n){for(let o=0;o<n.length;o++)e[t+o]=n.charCodeAt(o)},readBytes(e,t,n){const o=[];for(let i=0;i<n;i++)o.push(e[t+i]);return o},pad:e=>e.length<2?`0${e}`:e,readUTF8(t,n,o){let i,r="";for(let s=0;s<o;s++)r+=`%${e.pad(t[n+s].toString(16))}`;try{i=decodeURIComponent(r)}catch(a){return e.readASCII(t,n,o)}return i}};function t(t,n,o,i){const a=n*o,s=r(i),l=Math.ceil(n*s/8),c=new Uint8Array(4*a),d=new Uint32Array(c.buffer),{ctype:p}=i,{depth:u}=i,m=e.readUshort;if(6==p){const e=a<<2;if(8==u)for(var h=0;h<e;h+=4)c[h]=t[h],c[h+1]=t[h+1],c[h+2]=t[h+2],c[h+3]=t[h+3];if(16==u)for(h=0;h<e;h++)c[h]=t[h<<1]}else if(2==p){const e=i.tabs.tRNS;if(null==e){if(8==u)for(h=0;h<a;h++){var g=3*h;d[h]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g]}if(16==u)for(h=0;h<a;h++)g=6*h,d[h]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g]}else{var x=e[0];const n=e[1],o=e[2];if(8==u)for(h=0;h<a;h++){var f=h<<2;g=3*h,d[h]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g],t[g]==x&&t[g+1]==n&&t[g+2]==o&&(c[f+3]=0)}if(16==u)for(h=0;h<a;h++)f=h<<2,g=6*h,d[h]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g],m(t,g)==x&&m(t,g+2)==n&&m(t,g+4)==o&&(c[f+3]=0)}}else if(3==p){const e=i.tabs.PLTE,r=i.tabs.tRNS,s=r?r.length:0;if(1==u)for(var y=0;y<o;y++){var S=y*l,C=y*n;for(h=0;h<n;h++){f=C+h<<2;var $=3*(b=t[S+(h>>3)]>>7-(7&h)&1);c[f]=e[$],c[f+1]=e[$+1],c[f+2]=e[$+2],c[f+3]=b<s?r[b]:255}}if(2==u)for(y=0;y<o;y++)for(S=y*l,C=y*n,h=0;h<n;h++)f=C+h<<2,$=3*(b=t[S+(h>>2)]>>6-((3&h)<<1)&3),c[f]=e[$],c[f+1]=e[$+1],c[f+2]=e[$+2],c[f+3]=b<s?r[b]:255;if(4==u)for(y=0;y<o;y++)for(S=y*l,C=y*n,h=0;h<n;h++)f=C+h<<2,$=3*(b=t[S+(h>>1)]>>4-((1&h)<<2)&15),c[f]=e[$],c[f+1]=e[$+1],c[f+2]=e[$+2],c[f+3]=b<s?r[b]:255;if(8==u)for(h=0;h<a;h++){var b;f=h<<2,$=3*(b=t[h]),c[f]=e[$],c[f+1]=e[$+1],c[f+2]=e[$+2],c[f+3]=b<s?r[b]:255}}else if(4==p){if(8==u)for(h=0;h<a;h++){f=h<<2;var v=t[E=h<<1];c[f]=v,c[f+1]=v,c[f+2]=v,c[f+3]=t[E+1]}if(16==u)for(h=0;h<a;h++){var E;f=h<<2,v=t[E=h<<2],c[f]=v,c[f+1]=v,c[f+2]=v,c[f+3]=t[E+2]}}else if(0==p)for(x=i.tabs.tRNS?i.tabs.tRNS:-1,y=0;y<o;y++){const e=y*l,o=y*n;if(1==u)for(var w=0;w<n;w++){var R=(v=255*(t[e+(w>>>3)]>>>7-(7&w)&1))==255*x?0:255;d[o+w]=R<<24|v<<16|v<<8|v}else if(2==u)for(w=0;w<n;w++)R=(v=85*(t[e+(w>>>2)]>>>6-((3&w)<<1)&3))==85*x?0:255,d[o+w]=R<<24|v<<16|v<<8|v;else if(4==u)for(w=0;w<n;w++)R=(v=17*(t[e+(w>>>1)]>>>4-((1&w)<<2)&15))==17*x?0:255,d[o+w]=R<<24|v<<16|v<<8|v;else if(8==u)for(w=0;w<n;w++)R=(v=t[e+w])==x?0:255,d[o+w]=R<<24|v<<16|v<<8|v;else if(16==u)for(w=0;w<n;w++)v=t[e+(w<<1)],R=m(t,e+(w<<1))==x?0:255,d[o+w]=R<<24|v<<16|v<<8|v}return c}function n(e,t,n,s){const l=r(e),c=Math.ceil(n*l/8),d=new Uint8Array((c+1+e.interlace)*s);return t=e.tabs.CgBI?i(t,d):o(t,d),0==e.interlace?t=a(t,e,0,n,s):1==e.interlace&&(t=function(e,t){const n=t.width,o=t.height,i=r(t),s=i>>3,l=Math.ceil(n*i/8),c=new Uint8Array(o*l);let d=0;const p=[0,0,4,0,2,0,1],u=[0,4,0,2,0,1,0],m=[8,8,8,4,4,2,2],h=[8,8,4,4,2,2,1];let g=0;for(;g<7;){const r=m[g],f=h[g];let y=0,S=0,C=p[g];for(;C<o;)C+=r,S++;let $=u[g];for(;$<n;)$+=f,y++;const b=Math.ceil(y*i/8);a(e,t,d,y,S);let v=0,E=p[g];for(;E<o;){let t=u[g],o=d+v*b<<3;for(;t<n;){var x;if(1==i&&(x=(x=e[o>>3])>>7-(7&o)&1,c[E*l+(t>>3)]|=x<<7-(7&t)),2==i&&(x=(x=e[o>>3])>>6-(7&o)&3,c[E*l+(t>>2)]|=x<<6-((3&t)<<1)),4==i&&(x=(x=e[o>>3])>>4-(7&o)&15,c[E*l+(t>>1)]|=x<<4-((1&t)<<2)),i>=8){const n=E*l+t*s;for(let t=0;t<s;t++)c[n+t]=e[(o>>3)+t]}o+=i,t+=f}v++,E+=r}y*S!=0&&(d+=S*(1+b)),g+=1}return c}(t,e)),t}function o(e,t){return i(new Uint8Array(e.buffer,2,e.length-6),t)}var i=function(){const e={H:{}};return e.H.N=function(t,n){const o=Uint8Array;let i,r,a=0,s=0,l=0,c=0,d=0,p=0,u=0,m=0,h=0;if(3==t[0]&&0==t[1])return n||new o(0);const g=e.H,x=g.b,f=g.e,y=g.R,S=g.n,C=g.A,$=g.Z,b=g.m,v=null==n;for(v&&(n=new o(t.length>>>2<<5));0==a;)if(a=x(t,h,1),s=x(t,h+1,2),h+=3,0!=s){if(v&&(n=e.H.W(n,m+(1<<17))),1==s&&(i=b.J,r=b.h,p=511,u=31),2==s){l=f(t,h,5)+257,c=f(t,h+5,5)+1,d=f(t,h+10,4)+4,h+=14;let e=1;for(var E=0;E<38;E+=2)b.Q[E]=0,b.Q[E+1]=0;for(E=0;E<d;E++){const n=f(t,h+3*E,3);b.Q[1+(b.X[E]<<1)]=n,n>e&&(e=n)}h+=3*d,S(b.Q,e),C(b.Q,e,b.u),i=b.w,r=b.d,h=y(b.u,(1<<e)-1,l+c,t,h,b.v);const n=g.V(b.v,0,l,b.C);p=(1<<n)-1;const o=g.V(b.v,l,c,b.D);u=(1<<o)-1,S(b.C,n),C(b.C,n,i),S(b.D,o),C(b.D,o,r)}for(;;){const e=i[$(t,h)&p];h+=15&e;const o=e>>>4;if(o>>>8==0)n[m++]=o;else{if(256==o)break;{let e=m+o-254;if(o>264){const n=b.q[o-257];e=m+(n>>>3)+f(t,h,7&n),h+=7&n}const i=r[$(t,h)&u];h+=15&i;const a=i>>>4,s=b.c[a],l=(s>>>4)+x(t,h,15&s);for(h+=15&s;m<e;)n[m]=n[m++-l],n[m]=n[m++-l],n[m]=n[m++-l],n[m]=n[m++-l];m=e}}}}else{7&h&&(h+=8-(7&h));const i=4+(h>>>3),r=t[i-4]|t[i-3]<<8;v&&(n=e.H.W(n,m+r)),n.set(new o(t.buffer,t.byteOffset+i,r),m),h=i+r<<3,m+=r}return n.length==m?n:n.slice(0,m)},e.H.W=function(e,t){const n=e.length;if(t<=n)return e;const o=new Uint8Array(n<<1);return o.set(e,0),o},e.H.R=function(t,n,o,i,r,a){const s=e.H.e,l=e.H.Z;let c=0;for(;c<o;){const e=t[l(i,r)&n];r+=15&e;const o=e>>>4;if(o<=15)a[c]=o,c++;else{let e=0,t=0;16==o?(t=3+s(i,r,2),r+=2,e=a[c-1]):17==o?(t=3+s(i,r,3),r+=3):18==o&&(t=11+s(i,r,7),r+=7);const n=c+t;for(;c<n;)a[c]=e,c++}}return r},e.H.V=function(e,t,n,o){let i=0,r=0;const a=o.length>>>1;for(;r<n;){const n=e[r+t];o[r<<1]=0,o[1+(r<<1)]=n,n>i&&(i=n),r++}for(;r<a;)o[r<<1]=0,o[1+(r<<1)]=0,r++;return i},e.H.n=function(t,n){const o=e.H.m,i=t.length;let r,a,s,l;const c=o.j;for(var d=0;d<=n;d++)c[d]=0;for(d=1;d<i;d+=2)c[t[d]]++;const p=o.K;for(r=0,c[0]=0,a=1;a<=n;a++)r=r+c[a-1]<<1,p[a]=r;for(s=0;s<i;s+=2)l=t[s+1],0!=l&&(t[s]=p[l],p[l]++)},e.H.A=function(t,n,o){const i=t.length,r=e.H.m.r;for(let e=0;e<i;e+=2)if(0!=t[e+1]){const i=e>>1,a=t[e+1],s=i<<4|a,l=n-a;let c=t[e]<<l;const d=c+(1<<l);for(;c!=d;)o[r[c]>>>15-n]=s,c++}},e.H.l=function(t,n){const o=e.H.m.r,i=15-n;for(let e=0;e<t.length;e+=2){const r=t[e]<<n-t[e+1];t[e]=o[r]>>>i}},e.H.M=function(e,t,n){n<<=7&t;const o=t>>>3;e[o]|=n,e[o+1]|=n>>>8},e.H.I=function(e,t,n){n<<=7&t;const o=t>>>3;e[o]|=n,e[o+1]|=n>>>8,e[o+2]|=n>>>16},e.H.e=function(e,t,n){return(e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<n)-1},e.H.b=function(e,t,n){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<n)-1},e.H.Z=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},e.H.i=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},e.H.m=function(){const e=Uint16Array,t=Uint32Array;return{K:new e(16),j:new e(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new e(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new t(32),J:new e(512),_:[],h:new e(32),$:[],w:new e(32768),C:[],v:[],d:new e(32768),D:[],u:new e(512),Q:[],r:new e(32768),s:new t(286),Y:new t(30),a:new t(19),t:new t(15e3),k:new e(65536),g:new e(32768)}}(),function(){const t=e.H.m;for(var n=0;n<32768;n++){let e=n;e=(2863311530&e)>>>1|(1431655765&e)<<1,e=(3435973836&e)>>>2|(858993459&e)<<2,e=(4042322160&e)>>>4|(252645135&e)<<4,e=(4278255360&e)>>>8|(16711935&e)<<8,t.r[n]=(e>>>16|e<<16)>>>17}function o(e,t,n){for(;0!=t--;)e.push(0,n)}for(n=0;n<32;n++)t.q[n]=t.S[n]<<3|t.T[n],t.c[n]=t.p[n]<<4|t.z[n];o(t._,144,8),o(t._,112,9),o(t._,24,7),o(t._,8,8),e.H.n(t._,9),e.H.A(t._,9,t.J),e.H.l(t._,9),o(t.$,32,5),e.H.n(t.$,5),e.H.A(t.$,5,t.h),e.H.l(t.$,5),o(t.Q,19,0),o(t.C,286,0),o(t.D,30,0),o(t.v,320,0)}(),e.H.N}();function r(e){return[1,null,3,1,2,null,4][e.ctype]*e.depth}function a(e,t,n,o,i){let a=r(t);const l=Math.ceil(o*a/8);let c,d;a=Math.ceil(a/8);let p=e[n],u=0;if(p>1&&(e[n]=[0,0,1][p-2]),3==p)for(u=a;u<l;u++)e[u+1]=e[u+1]+(e[u+1-a]>>>1)&255;for(let r=0;r<i;r++)if(c=n+r*l,d=c+r+1,p=e[d-1],u=0,0==p)for(;u<l;u++)e[c+u]=e[d+u];else if(1==p){for(;u<a;u++)e[c+u]=e[d+u];for(;u<l;u++)e[c+u]=e[d+u]+e[c+u-a]}else if(2==p)for(;u<l;u++)e[c+u]=e[d+u]+e[c+u-l];else if(3==p){for(;u<a;u++)e[c+u]=e[d+u]+(e[c+u-l]>>>1);for(;u<l;u++)e[c+u]=e[d+u]+(e[c+u-l]+e[c+u-a]>>>1)}else{for(;u<a;u++)e[c+u]=e[d+u]+s(0,e[c+u-l],0);for(;u<l;u++)e[c+u]=e[d+u]+s(e[c+u-a],e[c+u-l],e[c+u-a-l])}return e}function s(e,t,n){const o=e+t-n,i=o-e,r=o-t,a=o-n;return i*i<=r*r&&i*i<=a*a?e:r*r<=a*a?t:n}function l(t,n,o){o.width=e.readUint(t,n),n+=4,o.height=e.readUint(t,n),n+=4,o.depth=t[n],n++,o.ctype=t[n],n++,o.compress=t[n],n++,o.filter=t[n],n++,o.interlace=t[n],n++}function c(e,t,n,o,i,r,a,s,l){const c=Math.min(t,i),d=Math.min(n,r);let p=0,u=0;for(let $=0;$<d;$++)for(let n=0;n<c;n++)if(a>=0&&s>=0?(p=$*t+n<<2,u=(s+$)*i+a+n<<2):(p=(-s+$)*t-a+n<<2,u=$*i+n<<2),0==l)o[u]=e[p],o[u+1]=e[p+1],o[u+2]=e[p+2],o[u+3]=e[p+3];else if(1==l){var m=e[p+3]*(1/255),h=e[p]*m,g=e[p+1]*m,x=e[p+2]*m,f=o[u+3]*(1/255),y=o[u]*f,S=o[u+1]*f,C=o[u+2]*f;const t=1-m,n=m+f*t,i=0==n?0:1/n;o[u+3]=255*n,o[u+0]=(h+y*t)*i,o[u+1]=(g+S*t)*i,o[u+2]=(x+C*t)*i}else if(2==l)m=e[p+3],h=e[p],g=e[p+1],x=e[p+2],f=o[u+3],y=o[u],S=o[u+1],C=o[u+2],m==f&&h==y&&g==S&&x==C?(o[u]=0,o[u+1]=0,o[u+2]=0,o[u+3]=0):(o[u]=h,o[u+1]=g,o[u+2]=x,o[u+3]=m);else if(3==l){if(m=e[p+3],h=e[p],g=e[p+1],x=e[p+2],f=o[u+3],y=o[u],S=o[u+1],C=o[u+2],m==f&&h==y&&g==S&&x==C)continue;if(m<220&&f>20)return!1}return!0}return{decode:function(t){const r=new Uint8Array(t);let a=8;const s=e,c=s.readUshort,d=s.readUint,p={tabs:{},frames:[]},u=new Uint8Array(r.length);let m,h=0,g=0;const x=[137,80,78,71,13,10,26,10];for(var f=0;f<8;f++)if(r[f]!=x[f])throw"The input is not a PNG file!";for(;a<r.length;){const e=s.readUint(r,a);a+=4;const t=s.readASCII(r,a,4);if(a+=4,"IHDR"==t)l(r,a,p);else if("iCCP"==t){for(var y=a;0!=r[y];)y++;s.readASCII(r,a,y-a),r[y+1];const n=r.slice(y+2,a+e);let l=null;try{l=o(n)}catch(w){l=i(n)}p.tabs[t]=l}else if("CgBI"==t)p.tabs[t]=r.slice(a,a+4);else if("IDAT"==t){for(f=0;f<e;f++)u[h+f]=r[a+f];h+=e}else if("acTL"==t)p.tabs[t]={num_frames:d(r,a),num_plays:d(r,a+4)},m=new Uint8Array(r.length);else if("fcTL"==t){0!=g&&((E=p.frames[p.frames.length-1]).data=n(p,m.slice(0,g),E.rect.width,E.rect.height),g=0);const e={x:d(r,a+12),y:d(r,a+16),width:d(r,a+4),height:d(r,a+8)};let t=c(r,a+22);t=c(r,a+20)/(0==t?100:t);const o={rect:e,delay:Math.round(1e3*t),dispose:r[a+24],blend:r[a+25]};p.frames.push(o)}else if("fdAT"==t){for(f=0;f<e-4;f++)m[g+f]=r[a+f+4];g+=e-4}else if("pHYs"==t)p.tabs[t]=[s.readUint(r,a),s.readUint(r,a+4),r[a+8]];else if("cHRM"==t)for(p.tabs[t]=[],f=0;f<8;f++)p.tabs[t].push(s.readUint(r,a+4*f));else if("tEXt"==t||"zTXt"==t){null==p.tabs[t]&&(p.tabs[t]={});var S=s.nextZero(r,a),C=s.readASCII(r,a,S-a),$=a+e-S-1;if("tEXt"==t)v=s.readASCII(r,S+1,$);else{var b=o(r.slice(S+2,S+2+$));v=s.readUTF8(b,0,b.length)}p.tabs[t][C]=v}else if("iTXt"==t){null==p.tabs[t]&&(p.tabs[t]={}),S=0,y=a,S=s.nextZero(r,y),C=s.readASCII(r,y,S-y);const n=r[y=S+1];var v;r[y+1],y+=2,S=s.nextZero(r,y),s.readASCII(r,y,S-y),y=S+1,S=s.nextZero(r,y),s.readUTF8(r,y,S-y),$=e-((y=S+1)-a),0==n?v=s.readUTF8(r,y,$):(b=o(r.slice(y,y+$)),v=s.readUTF8(b,0,b.length)),p.tabs[t][C]=v}else if("PLTE"==t)p.tabs[t]=s.readBytes(r,a,e);else if("hIST"==t){const e=p.tabs.PLTE.length/3;for(p.tabs[t]=[],f=0;f<e;f++)p.tabs[t].push(c(r,a+2*f))}else if("tRNS"==t)3==p.ctype?p.tabs[t]=s.readBytes(r,a,e):0==p.ctype?p.tabs[t]=c(r,a):2==p.ctype&&(p.tabs[t]=[c(r,a),c(r,a+2),c(r,a+4)]);else if("gAMA"==t)p.tabs[t]=s.readUint(r,a)/1e5;else if("sRGB"==t)p.tabs[t]=r[a];else if("bKGD"==t)0==p.ctype||4==p.ctype?p.tabs[t]=[c(r,a)]:2==p.ctype||6==p.ctype?p.tabs[t]=[c(r,a),c(r,a+2),c(r,a+4)]:3==p.ctype&&(p.tabs[t]=r[a]);else if("IEND"==t)break;a+=e,s.readUint(r,a),a+=4}var E;return 0!=g&&((E=p.frames[p.frames.length-1]).data=n(p,m.slice(0,g),E.rect.width,E.rect.height)),p.data=n(p,u,p.width,p.height),delete p.compress,delete p.interlace,delete p.filter,p},toRGBA8:function(e){const n=e.width,o=e.height;if(null==e.tabs.acTL)return[t(e.data,n,o,e).buffer];const i=[];null==e.frames[0].data&&(e.frames[0].data=e.data);const r=n*o*4,a=new Uint8Array(r),s=new Uint8Array(r),l=new Uint8Array(r);for(let p=0;p<e.frames.length;p++){const u=e.frames[p],m=u.rect.x,h=u.rect.y,g=u.rect.width,x=u.rect.height,f=t(u.data,g,x,e);if(0!=p)for(var d=0;d<r;d++)l[d]=a[d];if(0==u.blend?c(f,g,x,a,n,o,m,h,0):1==u.blend&&c(f,g,x,a,n,o,m,h,1),i.push(a.buffer.slice(0)),0==u.dispose);else if(1==u.dispose)c(s,g,x,a,n,o,m,h,0);else if(2==u.dispose)for(d=0;d<r;d++)a[d]=l[d]}return i},_paeth:s,_copyTile:c,_bin:e}}();!function(){const{_copyTile:e}=UPNG,{_bin:t}=UPNG,n=UPNG._paeth;var o={table:function(){const e=new Uint32Array(256);for(let t=0;t<256;t++){let n=t;for(let e=0;e<8;e++)1&n?n=3988292384^n>>>1:n>>>=1;e[t]=n}return e}(),update(e,t,n,i){for(let r=0;r<i;r++)e=o.table[255&(e^t[n+r])]^e>>>8;return e},crc:(e,t,n)=>4294967295^o.update(4294967295,e,t,n)};function i(e,t,n,o){t[n]+=e[0]*o>>4,t[n+1]+=e[1]*o>>4,t[n+2]+=e[2]*o>>4,t[n+3]+=e[3]*o>>4}function r(e){return Math.max(0,Math.min(255,e))}function a(e,t){const n=e[0]-t[0],o=e[1]-t[1],i=e[2]-t[2],r=e[3]-t[3];return n*n+o*o+i*i+r*r}function s(e,t,n,o,s,l,c){null==c&&(c=1);const d=o.length,p=[];for(var u=0;u<d;u++){const e=o[u];p.push([e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255])}for(u=0;u<d;u++){let e=4294967295;for(var m=0,h=0;h<d;h++){var g=a(p[u],p[h]);h!=u&&g<e&&(e=g,m=h)}}const x=new Uint32Array(s.buffer),f=new Int16Array(t*n*4),y=[0,8,2,10,12,4,14,6,3,11,1,9,15,7,13,5];for(u=0;u<y.length;u++)y[u]=255*((y[u]+.5)/16-.5);for(let C=0;C<n;C++)for(let s=0;s<t;s++){var S;u=4*(C*t+s),2!=c?S=[r(e[u]+f[u]),r(e[u+1]+f[u+1]),r(e[u+2]+f[u+2]),r(e[u+3]+f[u+3])]:(g=y[4*(3&C)+(3&s)],S=[r(e[u]+g),r(e[u+1]+g),r(e[u+2]+g),r(e[u+3]+g)]),m=0;let $=16777215;for(h=0;h<d;h++){const e=a(S,p[h]);e<$&&($=e,m=h)}const b=p[m],v=[S[0]-b[0],S[1]-b[1],S[2]-b[2],S[3]-b[3]];1==c&&(s!=t-1&&i(v,f,u+4,7),C!=n-1&&(0!=s&&i(v,f,u+4*t-4,3),i(v,f,u+4*t,5),s!=t-1&&i(v,f,u+4*t+4,1))),l[u>>2]=m,x[u>>2]=o[m]}}function l(e,n,i,r,a){null==a&&(a={});const{crc:s}=o,l=t.writeUint,c=t.writeUshort,d=t.writeASCII;let p=8;const u=e.frames.length>1;let m,h=!1,g=33+(u?20:0);if(null!=a.sRGB&&(g+=13),null!=a.pHYs&&(g+=21),null!=a.iCCP&&(m=pako.deflate(a.iCCP),g+=21+m.length+4),3==e.ctype){for(var x=e.plte.length,f=0;f<x;f++)e.plte[f]>>>24!=255&&(h=!0);g+=8+3*x+4+(h?8+1*x+4:0)}for(var y=0;y<e.frames.length;y++)u&&(g+=38),g+=(b=e.frames[y]).cimg.length+12,0!=y&&(g+=4);g+=12;const S=new Uint8Array(g),C=[137,80,78,71,13,10,26,10];for(f=0;f<8;f++)S[f]=C[f];if(l(S,p,13),p+=4,d(S,p,"IHDR"),p+=4,l(S,p,n),p+=4,l(S,p,i),p+=4,S[p]=e.depth,p++,S[p]=e.ctype,p++,S[p]=0,p++,S[p]=0,p++,S[p]=0,p++,l(S,p,s(S,p-17,17)),p+=4,null!=a.sRGB&&(l(S,p,1),p+=4,d(S,p,"sRGB"),p+=4,S[p]=a.sRGB,p++,l(S,p,s(S,p-5,5)),p+=4),null!=a.iCCP){const e=13+m.length;l(S,p,e),p+=4,d(S,p,"iCCP"),p+=4,d(S,p,"ICC profile"),p+=11,p+=2,S.set(m,p),p+=m.length,l(S,p,s(S,p-(e+4),e+4)),p+=4}if(null!=a.pHYs&&(l(S,p,9),p+=4,d(S,p,"pHYs"),p+=4,l(S,p,a.pHYs[0]),p+=4,l(S,p,a.pHYs[1]),p+=4,S[p]=a.pHYs[2],p++,l(S,p,s(S,p-13,13)),p+=4),u&&(l(S,p,8),p+=4,d(S,p,"acTL"),p+=4,l(S,p,e.frames.length),p+=4,l(S,p,null!=a.loop?a.loop:0),p+=4,l(S,p,s(S,p-12,12)),p+=4),3==e.ctype){for(l(S,p,3*(x=e.plte.length)),p+=4,d(S,p,"PLTE"),p+=4,f=0;f<x;f++){const t=3*f,n=e.plte[f],o=255&n,i=n>>>8&255,r=n>>>16&255;S[p+t+0]=o,S[p+t+1]=i,S[p+t+2]=r}if(p+=3*x,l(S,p,s(S,p-3*x-4,3*x+4)),p+=4,h){for(l(S,p,x),p+=4,d(S,p,"tRNS"),p+=4,f=0;f<x;f++)S[p+f]=e.plte[f]>>>24&255;p+=x,l(S,p,s(S,p-x-4,x+4)),p+=4}}let $=0;for(y=0;y<e.frames.length;y++){var b=e.frames[y];u&&(l(S,p,26),p+=4,d(S,p,"fcTL"),p+=4,l(S,p,$++),p+=4,l(S,p,b.rect.width),p+=4,l(S,p,b.rect.height),p+=4,l(S,p,b.rect.x),p+=4,l(S,p,b.rect.y),p+=4,c(S,p,r[y]),p+=2,c(S,p,1e3),p+=2,S[p]=b.dispose,p++,S[p]=b.blend,p++,l(S,p,s(S,p-30,30)),p+=4);const t=b.cimg;l(S,p,(x=t.length)+(0==y?0:4)),p+=4;const n=p;d(S,p,0==y?"IDAT":"fdAT"),p+=4,0!=y&&(l(S,p,$++),p+=4),S.set(t,p),p+=x,l(S,p,s(S,n,p-n)),p+=4}return l(S,p,0),p+=4,d(S,p,"IEND"),p+=4,l(S,p,s(S,p-4,4)),p+=4,S.buffer}function c(e,t,n){for(let o=0;o<e.frames.length;o++){const i=e.frames[o];i.rect.width;const r=i.rect.height,a=new Uint8Array(r*i.bpl+r);i.cimg=m(i.img,r,i.bpp,i.bpl,a,t,n)}}function d(t,n,o,i,r){const a=r[0],l=r[1],c=r[2],d=r[3],m=r[4],h=r[5];let x=6,f=8,y=255;for(var S=0;S<t.length;S++){const e=new Uint8Array(t[S]);for(var C=e.length,$=0;$<C;$+=4)y&=e[$+3]}const b=255!=y,v=function(t,n,o,i,r,a){const s=[];for(var l=0;l<t.length;l++){const p=new Uint8Array(t[l]),m=new Uint32Array(p.buffer);var c;let g=0,x=0,f=n,y=o,S=i?1:0;if(0!=l){const C=a||i||1==l||0!=s[l-2].dispose?1:2;let $=0,b=1e9;for(let e=0;e<C;e++){var d=new Uint8Array(t[l-1-e]);const i=new Uint32Array(t[l-1-e]);let a=n,s=o,c=-1,p=-1;for(let e=0;e<o;e++)for(let t=0;t<n;t++)m[h=e*n+t]!=i[h]&&(t<a&&(a=t),t>c&&(c=t),e<s&&(s=e),e>p&&(p=e));-1==c&&(a=s=c=p=0),r&&(!(1&~a)&&a--,!(1&~s)&&s--);const u=(c-a+1)*(p-s+1);u<b&&(b=u,$=e,g=a,x=s,f=c-a+1,y=p-s+1)}d=new Uint8Array(t[l-1-$]),1==$&&(s[l-1].dispose=2),c=new Uint8Array(f*y*4),e(d,n,o,c,f,y,-g,-x,0),S=e(p,n,o,c,f,y,-g,-x,3)?1:0,1==S?u(p,n,o,c,{x:g,y:x,width:f,height:y}):e(p,n,o,c,f,y,-g,-x,0)}else c=p.slice(0);s.push({rect:{x:g,y:x,width:f,height:y},img:c,blend:S,dispose:0})}if(i)for(l=0;l<s.length;l++){if(1==(g=s[l]).blend)continue;const e=g.rect,i=s[l-1].rect,a=Math.min(e.x,i.x),c=Math.min(e.y,i.y),d={x:a,y:c,width:Math.max(e.x+e.width,i.x+i.width)-a,height:Math.max(e.y+e.height,i.y+i.height)-c};s[l-1].dispose=1,l-1!=0&&p(t,n,o,s,l-1,d,r),p(t,n,o,s,l,d,r)}let m=0;if(1!=t.length)for(var h=0;h<s.length;h++){var g;m+=(g=s[h]).rect.width*g.rect.height}return s}(t,n,o,a,l,c),E={},w=[],R=[];if(0!=i){const e=[];for($=0;$<v.length;$++)e.push(v[$].img.buffer);const t=g(function(e){let t=0;for(var n=0;n<e.length;n++)t+=e[n].byteLength;const o=new Uint8Array(t);let i=0;for(n=0;n<e.length;n++){const t=new Uint8Array(e[n]),r=t.length;for(let e=0;e<r;e+=4){let n=t[e],r=t[e+1],a=t[e+2];const s=t[e+3];0==s&&(n=r=a=0),o[i+e]=n,o[i+e+1]=r,o[i+e+2]=a,o[i+e+3]=s}i+=r}return o.buffer}(e),i);for($=0;$<t.plte.length;$++)w.push(t.plte[$].est.rgba);let n=0;for($=0;$<v.length;$++){const e=(j=v[$]).img.length;var A=new Uint8Array(t.inds.buffer,n>>2,e>>2);R.push(A);const o=new Uint8Array(t.abuf,n,e);h&&s(j.img,j.rect.width,j.rect.height,w,o,A),j.img.set(o),n+=e}}else for(S=0;S<v.length;S++){var j=v[S];const e=new Uint32Array(j.img.buffer);var T=j.rect.width;for(C=e.length,A=new Uint8Array(C),R.push(A),$=0;$<C;$++){const t=e[$];if(0!=$&&t==e[$-1])A[$]=A[$-1];else if($>T&&t==e[$-T])A[$]=A[$-T];else{let e=E[t];if(null==e&&(E[t]=e=w.length,w.push(t),w.length>=300))break;A[$]=e}}}const I=w.length;for(I<=256&&0==m&&(f=I<=2?1:I<=4?2:I<=16?4:8,f=Math.max(f,d)),S=0;S<v.length;S++){(j=v[S]).rect.x,j.rect.y,T=j.rect.width;const e=j.rect.height;let t=j.img;new Uint32Array(t.buffer);let n=4*T,o=4;if(I<=256&&0==m){n=Math.ceil(f*T/8);var k=new Uint8Array(n*e);const i=R[S];for(let t=0;t<e;t++){$=t*n;const e=t*T;if(8==f)for(var L=0;L<T;L++)k[$+L]=i[e+L];else if(4==f)for(L=0;L<T;L++)k[$+(L>>1)]|=i[e+L]<<4-4*(1&L);else if(2==f)for(L=0;L<T;L++)k[$+(L>>2)]|=i[e+L]<<6-2*(3&L);else if(1==f)for(L=0;L<T;L++)k[$+(L>>3)]|=i[e+L]<<7-1*(7&L)}t=k,x=3,o=1}else if(0==b&&1==v.length){k=new Uint8Array(T*e*3);const i=T*e;for($=0;$<i;$++){const e=3*$,n=4*$;k[e]=t[n],k[e+1]=t[n+1],k[e+2]=t[n+2]}t=k,x=2,o=3,n=3*T}j.img=t,j.bpl=n,j.bpp=o}return{ctype:x,depth:f,plte:w,frames:v}}function p(t,n,o,i,r,a,s){const l=Uint8Array,c=Uint32Array,d=new l(t[r-1]),p=new c(t[r-1]),m=r+1<t.length?new l(t[r+1]):null,h=new l(t[r]),g=new c(h.buffer);let x=n,f=o,y=-1,S=-1;for(let e=0;e<a.height;e++)for(let t=0;t<a.width;t++){const o=a.x+t,s=a.y+e,l=s*n+o,c=g[l];0==c||0==i[r-1].dispose&&p[l]==c&&(null==m||0!=m[4*l+3])||(o<x&&(x=o),o>y&&(y=o),s<f&&(f=s),s>S&&(S=s))}-1==y&&(x=f=y=S=0),s&&(!(1&~x)&&x--,!(1&~f)&&f--),a={x:x,y:f,width:y-x+1,height:S-f+1};const C=i[r];C.rect=a,C.blend=1,C.img=new Uint8Array(a.width*a.height*4),0==i[r-1].dispose?(e(d,n,o,C.img,a.width,a.height,-a.x,-a.y,0),u(h,n,o,C.img,a)):e(h,n,o,C.img,a.width,a.height,-a.x,-a.y,0)}function u(t,n,o,i,r){e(t,n,o,i,r.width,r.height,-r.x,-r.y,2)}function m(e,t,n,o,i,r,a){const s=[];let l,c=[0,1,2,3,4];-1!=r?c=[r]:(t*o>5e5||1==n)&&(c=[0]),a&&(l={level:0});const d=UZIP;for(var p=0;p<c.length;p++){for(let r=0;r<t;r++)h(i,e,r,o,n,c[p]);s.push(d.deflate(i,l))}let u,m=1e9;for(p=0;p<s.length;p++)s[p].length<m&&(u=p,m=s[p].length);return s[u]}function h(e,t,o,i,r,a){const s=o*i;let l=s+o;if(e[l]=a,l++,0==a)if(i<500)for(var c=0;c<i;c++)e[l+c]=t[s+c];else e.set(new Uint8Array(t.buffer,s,i),l);else if(1==a){for(c=0;c<r;c++)e[l+c]=t[s+c];for(c=r;c<i;c++)e[l+c]=t[s+c]-t[s+c-r]+256&255}else if(0==o){for(c=0;c<r;c++)e[l+c]=t[s+c];if(2==a)for(c=r;c<i;c++)e[l+c]=t[s+c];if(3==a)for(c=r;c<i;c++)e[l+c]=t[s+c]-(t[s+c-r]>>1)+256&255;if(4==a)for(c=r;c<i;c++)e[l+c]=t[s+c]-n(t[s+c-r],0,0)+256&255}else{if(2==a)for(c=0;c<i;c++)e[l+c]=t[s+c]+256-t[s+c-i]&255;if(3==a){for(c=0;c<r;c++)e[l+c]=t[s+c]+256-(t[s+c-i]>>1)&255;for(c=r;c<i;c++)e[l+c]=t[s+c]+256-(t[s+c-i]+t[s+c-r]>>1)&255}if(4==a){for(c=0;c<r;c++)e[l+c]=t[s+c]+256-n(0,t[s+c-i],0)&255;for(c=r;c<i;c++)e[l+c]=t[s+c]+256-n(t[s+c-r],t[s+c-i],t[s+c-r-i])&255}}}function g(e,t){const n=new Uint8Array(e),o=n.slice(0),i=new Uint32Array(o.buffer),r=x(o,t),a=r[0],s=r[1],l=n.length,c=new Uint8Array(l>>2);let d;if(n.length<2e7)for(var p=0;p<l;p+=4)d=f(a,u=n[p]*(1/255),m=n[p+1]*(1/255),h=n[p+2]*(1/255),g=n[p+3]*(1/255)),c[p>>2]=d.ind,i[p>>2]=d.est.rgba;else for(p=0;p<l;p+=4){var u=n[p]*(1/255),m=n[p+1]*(1/255),h=n[p+2]*(1/255),g=n[p+3]*(1/255);for(d=a;d.left;)d=y(d.est,u,m,h,g)<=0?d.left:d.right;c[p>>2]=d.ind,i[p>>2]=d.est.rgba}return{abuf:o.buffer,inds:c,plte:s}}function x(e,t,n){null==n&&(n=1e-4);const o=new Uint32Array(e.buffer),i={i0:0,i1:e.length,bst:null,est:null,tdst:0,left:null,right:null};i.bst=$(e,i.i0,i.i1),i.est=b(i.bst);const r=[i];for(;r.length<t;){let t=0,i=0;for(var a=0;a<r.length;a++)r[a].est.L>t&&(t=r[a].est.L,i=a);if(t<n)break;const s=r[i],l=S(e,o,s.i0,s.i1,s.est.e,s.est.eMq255);if(s.i0>=l||s.i1<=l){s.est.L=0;continue}const c={i0:s.i0,i1:l,bst:null,est:null,tdst:0,left:null,right:null};c.bst=$(e,c.i0,c.i1),c.est=b(c.bst);const d={i0:l,i1:s.i1,bst:null,est:null,tdst:0,left:null,right:null};for(d.bst={R:[],m:[],N:s.bst.N-c.bst.N},a=0;a<16;a++)d.bst.R[a]=s.bst.R[a]-c.bst.R[a];for(a=0;a<4;a++)d.bst.m[a]=s.bst.m[a]-c.bst.m[a];d.est=b(d.bst),s.left=c,s.right=d,r[i]=c,r.push(d)}for(r.sort((e,t)=>t.bst.N-e.bst.N),a=0;a<r.length;a++)r[a].ind=a;return[i,r]}function f(e,t,n,o,i){if(null==e.left)return e.tdst=function(e,t,n,o,i){const r=t-e[0],a=n-e[1],s=o-e[2],l=i-e[3];return r*r+a*a+s*s+l*l}(e.est.q,t,n,o,i),e;const r=y(e.est,t,n,o,i);let a=e.left,s=e.right;r>0&&(a=e.right,s=e.left);const l=f(a,t,n,o,i);if(l.tdst<=r*r)return l;const c=f(s,t,n,o,i);return c.tdst<l.tdst?c:l}function y(e,t,n,o,i){const{e:r}=e;return r[0]*t+r[1]*n+r[2]*o+r[3]*i-e.eMq}function S(e,t,n,o,i,r){for(o-=4;n<o;){for(;C(e,n,i)<=r;)n+=4;for(;C(e,o,i)>r;)o-=4;if(n>=o)break;const a=t[n>>2];t[n>>2]=t[o>>2],t[o>>2]=a,n+=4,o-=4}for(;C(e,n,i)>r;)n-=4;return n+4}function C(e,t,n){return e[t]*n[0]+e[t+1]*n[1]+e[t+2]*n[2]+e[t+3]*n[3]}function $(e,t,n){const o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i=[0,0,0,0],r=n-t>>2;for(let a=t;a<n;a+=4){const t=e[a]*(1/255),n=e[a+1]*(1/255),r=e[a+2]*(1/255),s=e[a+3]*(1/255);i[0]+=t,i[1]+=n,i[2]+=r,i[3]+=s,o[0]+=t*t,o[1]+=t*n,o[2]+=t*r,o[3]+=t*s,o[5]+=n*n,o[6]+=n*r,o[7]+=n*s,o[10]+=r*r,o[11]+=r*s,o[15]+=s*s}return o[4]=o[1],o[8]=o[2],o[9]=o[6],o[12]=o[3],o[13]=o[7],o[14]=o[11],{R:o,m:i,N:r}}function b(e){const{R:t}=e,{m:n}=e,{N:o}=e,i=n[0],r=n[1],a=n[2],s=n[3],l=0==o?0:1/o,c=[t[0]-i*i*l,t[1]-i*r*l,t[2]-i*a*l,t[3]-i*s*l,t[4]-r*i*l,t[5]-r*r*l,t[6]-r*a*l,t[7]-r*s*l,t[8]-a*i*l,t[9]-a*r*l,t[10]-a*a*l,t[11]-a*s*l,t[12]-s*i*l,t[13]-s*r*l,t[14]-s*a*l,t[15]-s*s*l],d=c,p=v;let u=[Math.random(),Math.random(),Math.random(),Math.random()],m=0,h=0;if(0!=o)for(let x=0;x<16&&(u=p.multVec(d,u),h=Math.sqrt(p.dot(u,u)),u=p.sml(1/h,u),!(0!=x&&Math.abs(h-m)<1e-9));x++)m=h;const g=[i*l,r*l,a*l,s*l];return{Cov:c,q:g,e:u,L:m,eMq255:p.dot(p.sml(255,g),u),eMq:p.dot(u,g),rgba:(Math.round(255*g[3])<<24|Math.round(255*g[2])<<16|Math.round(255*g[1])<<8|Math.round(255*g[0]))>>>0}}var v={multVec:(e,t)=>[e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7]*t[3],e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11]*t[3],e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]*t[3]],dot:(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],sml:(e,t)=>[e*t[0],e*t[1],e*t[2],e*t[3]]};UPNG.encode=function(e,t,n,o,i,r,a){null==o&&(o=0),null==a&&(a=!1);const s=d(e,t,n,o,[!1,!1,!1,0,a,!1]);return c(s,-1),l(s,t,n,i,r)},UPNG.encodeLL=function(e,t,n,o,i,r,a,s){const d={ctype:0+(1==o?0:2)+(0==i?0:4),depth:r,frames:[]},p=(o+i)*r,u=p*t;for(let l=0;l<e.length;l++)d.frames.push({rect:{x:0,y:0,width:t,height:n},img:new Uint8Array(e[l]),blend:0,dispose:1,bpp:Math.ceil(p/8),bpl:Math.ceil(u/8)});return c(d,0,!0),l(d,t,n,a,s)},UPNG.encode.compress=d,UPNG.encode.dither=s,UPNG.quantize=g,UPNG.quantize.getKDtree=x,UPNG.quantize.getNearest=f}();const r={toArrayBuffer(e,t){const n=e.width,o=e.height,i=n<<2,a=e.getContext("2d").getImageData(0,0,n,o),s=new Uint32Array(a.data.buffer),l=(32*n+31)/32<<2,c=l*o,d=122+c,p=new ArrayBuffer(d),u=new DataView(p),m=1<<20;let h,g,x,f,y=m,S=0,C=0,$=0;function b(e){u.setUint16(C,e,!0),C+=2}function v(e){u.setUint32(C,e,!0),C+=4}function E(e){C+=e}b(19778),v(d),E(4),v(122),v(108),v(n),v(-o>>>0),b(1),b(32),v(3),v(c),v(2835),v(2835),E(8),v(16711680),v(65280),v(255),v(4278190080),v(1466527264),function e(){for(;S<o&&y>0;){for(f=122+S*l,h=0;h<i;)y--,g=s[$++],x=g>>>24,u.setUint32(f+h,g<<8|x),h+=4;S++}$<s.length?(y=m,setTimeout(e,r._dly)):t(p)}()},toBlob(e,t){this.toArrayBuffer(e,e=>{t(new Blob([e],{type:"image/bmp"}))})},_dly:9};var i={CHROME:"CHROME",FIREFOX:"FIREFOX",DESKTOP_SAFARI:"DESKTOP_SAFARI",IE:"IE",IOS:"IOS",ETC:"ETC"},o={[i.CHROME]:16384,[i.FIREFOX]:11180,[i.DESKTOP_SAFARI]:16384,[i.IE]:8192,[i.IOS]:4096,[i.ETC]:8192};const a="undefined"!=typeof window,s="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,f=a&&window.cordova&&window.cordova.require&&window.cordova.require("cordova/modulemapper"),CustomFile=(a||s)&&(f&&f.getOriginalSymbol(window,"File")||"undefined"!=typeof File&&File),CustomFileReader=(a||s)&&(f&&f.getOriginalSymbol(window,"FileReader")||"undefined"!=typeof FileReader&&FileReader);function getFilefromDataUrl(e,t,n=Date.now()){return new Promise(o=>{const i=e.split(","),r=i[0].match(/:(.*?);/)[1],a=globalThis.atob(i[1]);let s=a.length;const l=new Uint8Array(s);for(;s--;)l[s]=a.charCodeAt(s);const c=new Blob([l],{type:r});c.name=t,c.lastModified=n,o(c)})}function getDataUrlFromFile(e){return new Promise((t,n)=>{const o=new CustomFileReader;o.onload=()=>t(o.result),o.onerror=e=>n(e),o.readAsDataURL(e)})}function loadImage(e){return new Promise((t,n)=>{const o=new Image;o.onload=()=>t(o),o.onerror=e=>n(e),o.src=e})}function getBrowserName(){if(void 0!==getBrowserName.cachedResult)return getBrowserName.cachedResult;let e=i.ETC;const{userAgent:t}=navigator;return/Chrom(e|ium)/i.test(t)?e=i.CHROME:/iP(ad|od|hone)/i.test(t)&&/WebKit/i.test(t)?e=i.IOS:/Safari/i.test(t)?e=i.DESKTOP_SAFARI:/Firefox/i.test(t)?e=i.FIREFOX:(/MSIE/i.test(t)||1==!!document.documentMode)&&(e=i.IE),getBrowserName.cachedResult=e,getBrowserName.cachedResult}function approximateBelowMaximumCanvasSizeOfBrowser(e,t){const n=getBrowserName(),i=o[n];let r=e,a=t,s=r*a;const l=r>a?a/r:r/a;for(;s>i*i;){const e=(i+r)/2,t=(i+a)/2;e<t?(a=t,r=t*l):(a=e*l,r=e),s=r*a}return{width:r,height:a}}function getNewCanvasAndCtx(e,t){let n,o;try{if(n=new OffscreenCanvas(e,t),o=n.getContext("2d"),null===o)throw new Error("getContext of OffscreenCanvas returns null")}catch(i){n=document.createElement("canvas"),o=n.getContext("2d")}return n.width=e,n.height=t,[n,o]}function drawImageInCanvas(e,t){const{width:n,height:o}=approximateBelowMaximumCanvasSizeOfBrowser(e.width,e.height),[i,r]=getNewCanvasAndCtx(n,o);return t&&/jpe?g/.test(t)&&(r.fillStyle="white",r.fillRect(0,0,i.width,i.height)),r.drawImage(e,0,0,i.width,i.height),i}function isIOS(){return void 0!==isIOS.cachedResult||(isIOS.cachedResult=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"undefined"!=typeof document&&"ontouchend"in document),isIOS.cachedResult}function drawFileInCanvas(e,t={}){return new Promise(function(n,o){let r,a;var s=function(){try{return a=drawImageInCanvas(r,t.fileType||e.type),n([r,a])}catch(i){return o(i)}},l=function(t){try{var n=function(e){try{throw e}catch(t){return o(t)}};try{let t;return getDataUrlFromFile(e).then(function(e){try{return t=e,loadImage(t).then(function(e){try{return r=e,function(){try{return s()}catch(e){return o(e)}}()}catch(t){return n(t)}},n)}catch(i){return n(i)}},n)}catch(i){n(i)}}catch(i){return o(i)}};try{if(isIOS()||[i.DESKTOP_SAFARI,i.MOBILE_SAFARI].includes(getBrowserName()))throw new Error("Skip createImageBitmap on IOS and Safari");return createImageBitmap(e).then(function(e){try{return r=e,s()}catch(t){return l()}},l)}catch(c){l()}})}function canvasToFile(e,t,n,o,i=1){return new Promise(function(a,s){let l;if("image/png"===t){let r,a,s;return r=e.getContext("2d"),({data:a}=r.getImageData(0,0,e.width,e.height)),s=UPNG.encode([a.buffer],e.width,e.height,4096*i),l=new Blob([s],{type:t}),l.name=n,l.lastModified=o,c.call(this)}{let a=function(){return c.call(this)};if("image/bmp"===t)return new Promise(t=>r.toBlob(e,t)).then(function(e){try{return l=e,l.name=n,l.lastModified=o,a.call(this)}catch(t){return s(t)}}.bind(this),s);{let r=function(){return a.call(this)};if("function"==typeof OffscreenCanvas&&e instanceof OffscreenCanvas)return e.convertToBlob({type:t,quality:i}).then(function(e){try{return l=e,l.name=n,l.lastModified=o,r.call(this)}catch(t){return s(t)}}.bind(this),s);{let a;return a=e.toDataURL(t,i),getFilefromDataUrl(a,n,o).then(function(e){try{return l=e,r.call(this)}catch(t){return s(t)}}.bind(this),s)}}}function c(){return a(l)}})}function cleanupCanvasMemory(e){e.width=0,e.height=0}function isAutoOrientationInBrowser(){return new Promise(function(e,t){let n,o,i,r;return void 0!==isAutoOrientationInBrowser.cachedResult?e(isAutoOrientationInBrowser.cachedResult):getFilefromDataUrl("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==","test.jpg",Date.now()).then(function(a){try{return n=a,drawFileInCanvas(n).then(function(a){try{return o=a[1],canvasToFile(o,n.type,n.name,n.lastModified).then(function(n){try{return i=n,cleanupCanvasMemory(o),drawFileInCanvas(i).then(function(n){try{return r=n[0],isAutoOrientationInBrowser.cachedResult=1===r.width&&2===r.height,e(isAutoOrientationInBrowser.cachedResult)}catch(o){return t(o)}},t)}catch(a){return t(a)}},t)}catch(s){return t(s)}},t)}catch(s){return t(s)}},t)})}function getExifOrientation(e){return new Promise((t,n)=>{const o=new CustomFileReader;o.onload=e=>{const n=new DataView(e.target.result);if(65496!=n.getUint16(0,!1))return t(-2);const o=n.byteLength;let i=2;for(;i<o;){if(n.getUint16(i+2,!1)<=8)return t(-1);const e=n.getUint16(i,!1);if(i+=2,65505==e){if(1165519206!=n.getUint32(i+=2,!1))return t(-1);const e=18761==n.getUint16(i+=6,!1);i+=n.getUint32(i+4,e);const o=n.getUint16(i,e);i+=2;for(let r=0;r<o;r++)if(274==n.getUint16(i+12*r,e))return t(n.getUint16(i+12*r+8,e))}else{if(65280&~e)break;i+=n.getUint16(i,!1)}}return t(-1)},o.onerror=e=>n(e),o.readAsArrayBuffer(e)})}function handleMaxWidthOrHeight(e,t){const{width:n}=e,{height:o}=e,{maxWidthOrHeight:i}=t;let r,a=e;return isFinite(i)&&(n>i||o>i)&&([a,r]=getNewCanvasAndCtx(n,o),n>o?(a.width=i,a.height=o/n*i):(a.width=n/o*i,a.height=i),r.drawImage(e,0,0,a.width,a.height),cleanupCanvasMemory(e)),a}function followExifOrientation(e,t){const{width:n}=e,{height:o}=e,[i,r]=getNewCanvasAndCtx(n,o);switch(t>4&&t<9?(i.width=o,i.height=n):(i.width=n,i.height=o),t){case 2:r.transform(-1,0,0,1,n,0);break;case 3:r.transform(-1,0,0,-1,n,o);break;case 4:r.transform(1,0,0,-1,0,o);break;case 5:r.transform(0,1,1,0,0,0);break;case 6:r.transform(0,1,-1,0,o,0);break;case 7:r.transform(0,-1,-1,0,o,n);break;case 8:r.transform(0,-1,1,0,0,n)}return r.drawImage(e,0,0,n,o),cleanupCanvasMemory(e),i}function compress(e,t,n=0){return new Promise(function(o,i){let r,a,s,l,c,d,p,u,m,h,g,x,f,y,S,C,$,b,v,E;function w(e=5){if(t.signal&&t.signal.aborted)throw t.signal.reason;r+=e,t.onProgress(Math.min(r,100))}function R(e){if(t.signal&&t.signal.aborted)throw t.signal.reason;r=Math.min(Math.max(e,r),100),t.onProgress(r)}return r=n,a=t.maxIteration||10,s=1024*t.maxSizeMB*1024,w(),drawFileInCanvas(e,t).then(function(n){try{return[,l]=n,w(),c=handleMaxWidthOrHeight(l,t),w(),new Promise(function(n,o){var i;if(!(i=t.exifOrientation))return getExifOrientation(e).then(function(e){try{return i=e,r.call(this)}catch(t){return o(t)}}.bind(this),o);function r(){return n(i)}return r.call(this)}).then(function(n){try{return d=n,w(),isAutoOrientationInBrowser().then(function(n){try{return p=n?c:followExifOrientation(c,d),w(),u=t.initialQuality||1,m=t.fileType||e.type,canvasToFile(p,m,e.name,e.lastModified,u).then(function(n){try{{let d=function(){if(a--&&(S>s||S>f)){let t,n;return t=E?.95*v.width:v.width,n=E?.95*v.height:v.height,[$,b]=getNewCanvasAndCtx(t,n),b.drawImage(v,0,0,t,n),u*="image/png"===m?.85:.95,canvasToFile($,m,e.name,e.lastModified,u).then(function(e){try{return C=e,cleanupCanvasMemory(v),v=$,S=C.size,R(Math.min(99,Math.floor((y-S)/(y-s)*100))),d}catch(t){return i(t)}},i)}return[1]},A=function(){return cleanupCanvasMemory(v),cleanupCanvasMemory($),cleanupCanvasMemory(c),cleanupCanvasMemory(p),cleanupCanvasMemory(l),R(100),o(C)};return h=n,w(),g=h.size>s,x=h.size>e.size,g||x?(f=e.size,y=h.size,S=y,v=p,E=!t.alwaysKeepResolution&&g,(r=function(e){for(;e;){if(e.then)return void e.then(r,i);try{if(e.pop){if(e.length)return e.pop()?A.call(this):e;e=d}else e=e.call(this)}catch(t){return i(t)}}}.bind(this))(d)):(R(100),o(h));var r}}catch(d){return i(d)}}.bind(this),i)}catch(r){return i(r)}}.bind(this),i)}catch(r){return i(r)}}.bind(this),i)}catch(r){return i(r)}}.bind(this),i)})}const l="\nlet scriptImported = false\nself.addEventListener('message', async (e) => {\n const { file, id, imageCompressionLibUrl, options } = e.data\n options.onProgress = (progress) => self.postMessage({ progress, id })\n try {\n if (!scriptImported) {\n // console.log('[worker] importScripts', imageCompressionLibUrl)\n self.importScripts(imageCompressionLibUrl)\n scriptImported = true\n }\n // console.log('[worker] self', self)\n const compressedFile = await imageCompression(file, options)\n self.postMessage({ file: compressedFile, id })\n } catch (e) {\n // console.error('[worker] error', e)\n self.postMessage({ error: e.message + '\\n' + e.stack, id })\n }\n})\n";let c;function compressOnWebWorker(e,t){return new Promise((n,o)=>{c||(c=function(e){const t=[];return t.push(e),URL.createObjectURL(new Blob(t))}(l));const i=new Worker(c);i.addEventListener("message",function(e){if(t.signal&&t.signal.aborted)i.terminate();else if(void 0===e.data.progress){if(e.data.error)return o(new Error(e.data.error)),void i.terminate();n(e.data.file),i.terminate()}else t.onProgress(e.data.progress)}),i.addEventListener("error",o),t.signal&&t.signal.addEventListener("abort",()=>{o(t.signal.reason),i.terminate()}),i.postMessage({file:e,imageCompressionLibUrl:t.libURL,options:{...t,onProgress:void 0,signal:void 0}})})}function imageCompression(e,t){return new Promise(function(n,o){let i,r,a,s,l,c;if(i={...t},a=0,({onProgress:s}=i),i.maxSizeMB=i.maxSizeMB||Number.POSITIVE_INFINITY,l="boolean"!=typeof i.useWebWorker||i.useWebWorker,delete i.useWebWorker,i.onProgress=e=>{a=e,"function"==typeof s&&s(a)},!(e instanceof Blob||e instanceof CustomFile))return o(new Error("The file given is not an instance of Blob or File"));if(!/^image/.test(e.type))return o(new Error("The file given is not an image"));if(c="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,!l||"function"!=typeof Worker||c)return compress(e,i).then(function(e){try{return r=e,u.call(this)}catch(t){return o(t)}}.bind(this),o);var d=function(){try{return u.call(this)}catch(e){return o(e)}}.bind(this),p=function(t){try{return compress(e,i).then(function(e){try{return r=e,d()}catch(t){return o(t)}},o)}catch(n){return o(n)}};try{return i.libURL=i.libURL||"https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.2/dist/browser-image-compression.js",compressOnWebWorker(e,i).then(function(e){try{return r=e,d()}catch(t){return p()}},p)}catch(m){p()}function u(){try{r.name=e.name,r.lastModified=e.lastModified}catch(m){}try{i.preserveExif&&"image/jpeg"===e.type&&(!i.fileType||i.fileType&&i.fileType===e.type)&&(r=copyExifWithoutOrientation(e,r))}catch(m){}return n(r)}})}imageCompression.getDataUrlFromFile=getDataUrlFromFile,imageCompression.getFilefromDataUrl=getFilefromDataUrl,imageCompression.loadImage=loadImage,imageCompression.drawImageInCanvas=drawImageInCanvas,imageCompression.drawFileInCanvas=drawFileInCanvas,imageCompression.canvasToFile=canvasToFile,imageCompression.getExifOrientation=getExifOrientation,imageCompression.handleMaxWidthOrHeight=handleMaxWidthOrHeight,imageCompression.followExifOrientation=followExifOrientation,imageCompression.cleanupCanvasMemory=cleanupCanvasMemory,imageCompression.isAutoOrientationInBrowser=isAutoOrientationInBrowser,imageCompression.approximateBelowMaximumCanvasSizeOfBrowser=approximateBelowMaximumCanvasSizeOfBrowser,imageCompression.copyExifWithoutOrientation=copyExifWithoutOrientation,imageCompression.getBrowserName=getBrowserName,imageCompression.version="2.0.2";const PDF_MIME_TYPE$1="application/pdf",imageCompressionAcceptableFileTypes=["image/jpg","image/jpeg","image/png","image/webp","image/bmp"],RECEIPT_IMAGE_COMPRESSION_OPTIONS={useWebWorker:!0,maxWidthOrHeight:1920,initialQuality:.92,maxSizeMB:2},handleImageCompression=async(e,t)=>{if(!1===imageCompressionAcceptableFileTypes.includes(e.type))return e;const n=await imageCompression(e,{useWebWorker:!0,maxWidthOrHeight:900,initialQuality:1,maxSizeMB:1.4}),o=n.lastModified,i=n.type.split("/")[1];let r=`image_${o}.${i}`;null!=t&&(r=`${t}.${i}`);return new File([n],r,{lastModified:o,type:n.type})},compressImageForReceipt=async(e,t)=>{if(!1===imageCompressionAcceptableFileTypes.includes(e.type))return e;const n=await imageCompression(e,RECEIPT_IMAGE_COMPRESSION_OPTIONS),o=n.type.split("/")[1],i=t.replace(/\.[^.]+$/,"")||"image";return new File([n],`${i}.${o}`,{lastModified:e.lastModified,type:n.type})},PDF_RENDER_SCALE=1.5,PDF_JPEG_QUALITY=.7;function canvasToJpegBlob(e,t){return new Promise((n,o)=>{e.toBlob(e=>{null!=e?n(e):o(new Error("canvas.toBlob returned null"))},"image/jpeg",t)})}async function renderPageToJpeg(e,t,n){const o=e.getViewport({scale:t}),i=document.createElement("canvas");i.width=Math.floor(o.width),i.height=Math.floor(o.height);const r=i.getContext("2d");if(null==r)throw new Error("Could not get canvas 2d context");await e.render({canvasContext:r,viewport:o}).promise;return(await canvasToJpegBlob(i,n)).arrayBuffer()}async function compressPdfForReceipt(e,t){const[{PDFDocument:n},o]=await Promise.all([import("./index-ky65w6UR.js"),Promise.resolve().then(()=>index$2).then(e=>e.pdfjs)]),i=await e.arrayBuffer(),r=await o.getDocument({data:new Uint8Array(i)}).promise,a=r.numPages,s=await n.create();for(let d=1;d<=a;d++){const e=await r.getPage(d),t=await renderPageToJpeg(e,PDF_RENDER_SCALE,PDF_JPEG_QUALITY),n=await s.embedJpg(new Uint8Array(t)),o=n.scale(1);s.addPage([o.width,o.height]).drawImage(n,{x:0,y:0,width:o.width,height:o.height})}const l=await s.save(),c=t.toLowerCase().endsWith(".pdf")?t:`${t}.pdf`;return new File([l],c,{type:PDF_MIME_TYPE$1,lastModified:e.lastModified})}async function compressSingleFile(e,t){const n=e instanceof File?e:new File([e],t,{type:e.type});if(e.type===PDF_MIME_TYPE$1){const o=await compressPdfForReceipt(n,t);return o.size<n.size?{blob:o,name:o.name}:{blob:e,name:t}}const o=await compressImageForReceipt(n,t);return{blob:o,name:o.name}}async function compressReceiptFiles(e,t){const n=await Promise.all(e.map((e,n)=>{const o=t[n]??`file_${n}`;return compressSingleFile(e,o).catch(t=>(console.warn("[compressReceiptFiles] compression failed, using original:",t instanceof Error?t.message:t),{blob:e,name:o}))}));return{blobs:n.map(e=>e.blob),names:n.map(e=>e.name)}}const InputElementMobileCamera=({fileType:e="file",fileRef:t,name:n,value:o="",multiple:i=!1,acceptableTypes:r,onFileSizeError:a,onImageChange:s})=>/* @__PURE__ */jsxRuntimeExports.jsx("input",{type:e,ref:t,name:n,value:o,size:1e3,"data-testid":generateDataTestId("input-file-element-mobile",n),onChange:async e=>{const t=e.target.files?.[0],n=t?.size;null!=t&&null!=n?(a?.(!1),s(t),e.target.value=""):(a?.(!0),e.target.value="")},style:{display:"none"},accept:`${(r??"image/jpg, image/jpeg").toString()}`,multiple:i,capture:!0}),MoneyTransferSuccessAnimation=({shouldDisplay:e,width:t=30,height:n=30,styles:o,animationInLoop:i=!1})=>{const[,r]=useMusic(SUCCESS_SOUND_SOURCE),[a]=useAnimation("MoneyTransferSuccess");return React__default.useEffect(()=>{e&&r(!0)},[e,r]),e&&null!=a?/* @__PURE__ */jsxRuntimeExports.jsx(Lottie,{style:{width:t,height:n,...o},play:!0,animationData:a,loop:i,rendererSettings:{preserveAspectRatio:"xMidYMid slice"}}):null};var browserPonyfill={exports:{}},hasRequiredBrowserPonyfill;function requireBrowserPonyfill(){return hasRequiredBrowserPonyfill||(hasRequiredBrowserPonyfill=1,function(e,t){var n,o="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==commonjsGlobal$1&&commonjsGlobal$1,i=function(){function e(){this.fetch=!1,this.DOMException=o.DOMException}return e.prototype=o,new e}();n=i,function(e){var t=void 0!==n&&n||"undefined"!=typeof self&&self||void 0!==commonjsGlobal$1&&commonjsGlobal$1||{},o="URLSearchParams"in t,i="Symbol"in t&&"iterator"in Symbol,r="FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in t,s="ArrayBuffer"in t;if(s)var l=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&l.indexOf(Object.prototype.toString.call(e))>-1};function d(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||""===e)throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function p(e){return"string"!=typeof e&&(e=String(e)),e}function u(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function m(e){this.map={},e instanceof m?e.forEach(function(e,t){this.append(t,e)},this):Array.isArray(e)?e.forEach(function(e){if(2!=e.length)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+e.length);this.append(e[0],e[1])},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}function h(e){if(!e._noBody)return e.bodyUsed?Promise.reject(new TypeError("Already read")):void(e.bodyUsed=!0)}function g(e){return new Promise(function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function x(e){var t=new FileReader,n=g(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(e){var t;this.bodyUsed=this.bodyUsed,this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:o&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():s&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):(this._noBody=!0,this._bodyText=""),this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):o&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))}),this.arrayBuffer=function(){if(this._bodyArrayBuffer){var e=h(this);return e||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}if(r)return this.blob().then(x);throw new Error("could not read as ArrayBuffer")},this.text=function(){var e,t,n,o,i,r=h(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,n=g(t),o=/charset=([A-Za-z0-9_-]+)/.exec(e.type),i=o?o[1]:"utf-8",t.readAsText(e,i),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),o=0;o<t.length;o++)n[o]=String.fromCharCode(t[o]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},a&&(this.formData=function(){return this.text().then($)}),this.json=function(){return this.text().then(JSON.parse)},this}m.prototype.append=function(e,t){e=d(e),t=p(t);var n=this.map[e];this.map[e]=n?n+", "+t:t},m.prototype.delete=function(e){delete this.map[d(e)]},m.prototype.get=function(e){return e=d(e),this.has(e)?this.map[e]:null},m.prototype.has=function(e){return this.map.hasOwnProperty(d(e))},m.prototype.set=function(e,t){this.map[d(e)]=p(t)},m.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},m.prototype.keys=function(){var e=[];return this.forEach(function(t,n){e.push(n)}),u(e)},m.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),u(e)},m.prototype.entries=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),u(e)},i&&(m.prototype[Symbol.iterator]=m.prototype.entries);var S=["CONNECT","DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT","TRACE"];function C(e,n){if(!(this instanceof C))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var o,i,r=(n=n||{}).body;if(e instanceof C){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,n.headers||(this.headers=new m(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,r||null==e._bodyInit||(r=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=n.credentials||this.credentials||"same-origin",!n.headers&&this.headers||(this.headers=new m(n.headers)),this.method=(o=n.method||this.method||"GET",i=o.toUpperCase(),S.indexOf(i)>-1?i:o),this.mode=n.mode||this.mode||null,this.signal=n.signal||this.signal||function(){if("AbortController"in t)return(new AbortController).signal}(),this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(r),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==n.cache&&"no-cache"!==n.cache)){var a=/([?&])_=[^&]*/;a.test(this.url)?this.url=this.url.replace(a,"$1_="+/* @__PURE__ */(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+/* @__PURE__ */(new Date).getTime()}}function $(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),o=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(o),decodeURIComponent(i))}}),t}function b(e,t){if(!(this instanceof b))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=void 0===t.statusText?"":""+t.statusText,this.headers=new m(t.headers),this.url=t.url||"",this._initBody(e)}C.prototype.clone=function(){return new C(this,{body:this._bodyInit})},y.call(C.prototype),y.call(b.prototype),b.prototype.clone=function(){return new b(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new m(this.headers),url:this.url})},b.error=function(){var e=new b(null,{status:200,statusText:""});return e.ok=!1,e.status=0,e.type="error",e};var v=[301,302,303,307,308];b.redirect=function(e,t){if(-1===v.indexOf(t))throw new RangeError("Invalid status code");return new b(null,{status:t,headers:{location:e}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(w){e.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function E(n,o){return new Promise(function(i,a){var l=new C(n,o);if(l.signal&&l.signal.aborted)return a(new e.DOMException("Aborted","AbortError"));var c=new XMLHttpRequest;function u(){c.abort()}if(c.onload=function(){var e,t,n={statusText:c.statusText,headers:(e=c.getAllResponseHeaders()||"",t=new m,e.replace(/\r?\n[\t ]+/g," ").split("\r").map(function(e){return 0===e.indexOf("\n")?e.substr(1,e.length):e}).forEach(function(e){var n=e.split(":"),o=n.shift().trim();if(o){var i=n.join(":").trim();try{t.append(o,i)}catch(r){console.warn("Response "+r.message)}}}),t)};0===l.url.indexOf("file://")&&(c.status<200||c.status>599)?n.status=200:n.status=c.status,n.url="responseURL"in c?c.responseURL:n.headers.get("X-Request-URL");var o="response"in c?c.response:c.responseText;setTimeout(function(){i(new b(o,n))},0)},c.onerror=function(){setTimeout(function(){a(new TypeError("Network request failed"))},0)},c.ontimeout=function(){setTimeout(function(){a(new TypeError("Network request timed out"))},0)},c.onabort=function(){setTimeout(function(){a(new e.DOMException("Aborted","AbortError"))},0)},c.open(l.method,function(e){try{return""===e&&t.location.href?t.location.href:e}catch(n){return e}}(l.url),!0),"include"===l.credentials?c.withCredentials=!0:"omit"===l.credentials&&(c.withCredentials=!1),"responseType"in c&&(r?c.responseType="blob":s&&(c.responseType="arraybuffer")),o&&"object"==typeof o.headers&&!(o.headers instanceof m||t.Headers&&o.headers instanceof t.Headers)){var h=[];Object.getOwnPropertyNames(o.headers).forEach(function(e){h.push(d(e)),c.setRequestHeader(e,p(o.headers[e]))}),l.headers.forEach(function(e,t){-1===h.indexOf(t)&&c.setRequestHeader(t,e)})}else l.headers.forEach(function(e,t){c.setRequestHeader(t,e)});l.signal&&(l.signal.addEventListener("abort",u),c.onreadystatechange=function(){4===c.readyState&&l.signal.removeEventListener("abort",u)}),c.send(void 0===l._bodyInit?null:l._bodyInit)})}E.polyfill=!0,t.fetch||(t.fetch=E,t.Headers=m,t.Request=C,t.Response=b),e.Headers=m,e.Request=C,e.Response=b,e.fetch=E,Object.defineProperty(e,"__esModule",{value:!0})}({}),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=o.fetch?o:i;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t}(browserPonyfill,browserPonyfill.exports)),browserPonyfill.exports}var browserPonyfillExports=requireBrowserPonyfill();const fetch$1=/* @__PURE__ */getDefaultExportFromCjs(browserPonyfillExports),SvgNewVendor=e=>/* @__PURE__ */React.createElement("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},/* @__PURE__ */React.createElement("path",{d:"M7.5055 4L1.5 9.54354L22.5 9.5435",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),/* @__PURE__ */React.createElement("path",{d:"M16.4945 19.7067L22.5 14.1632H1.5",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}));__webpack_exports__GlobalWorkerOptions.workerSrc=`//cdnjs.cloudflare.com/ajax/libs/pdf.js/${__webpack_exports__version}/pdf.worker.mjs`;const{common:common$3b}=appLocale.getLocalizedStrings(),FileInputElementName$1="invoice",getEffectiveCitationVariant=(e,t,n)=>{if("deleted"===e.variant)return"deleted";if("excluded"===e.variant)return"excluded";return null!=t&&e.statementTransactionId===t||null!=n&&e.statementTransactionId===n?"hovered":e.variant??"default"},findCitationTransactionIdAtPoint=(e,t,n)=>{const o=Array.from(e.querySelectorAll("[data-statement-transaction-id]"));for(const i of o){if("excluded"===i.dataset.citationVariant)continue;const e=i.getBoundingClientRect();if(t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom)return i.dataset.statementTransactionId}},getScrollTargetPageNumber=(e,t)=>{if(null==t)return;const n=e.find(e=>e.statementTransactionId===t);return n?.page},isElementVisibleInContainer=(e,t)=>{const n=e.getBoundingClientRect(),o=null!=t?t.getBoundingClientRect():{top:0,left:0,bottom:window.innerHeight,right:window.innerWidth};return n.bottom>o.top&&n.top<o.bottom&&n.right>o.left&&n.left<o.right},getScrollableParent=e=>{let t=e.parentElement;for(;null!=t;){const{overflowY:e}=window.getComputedStyle(t);if(("auto"===e||"scroll"===e)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return null},scrollPageElementIntoView=(e,t,n="smooth")=>{const o=t??getScrollableParent(e);if(null==o)return void e.scrollIntoView({behavior:n,block:"center"});const i=e.getBoundingClientRect(),r=o.getBoundingClientRect(),a=o.scrollTop+(i.top-r.top)-(o.clientHeight-i.height)/2;o.scrollTo({top:Math.max(0,a),behavior:n})};function getPolygonBounds(e){const t=e.map(e=>e.x),n=e.map(e=>e.y);return{maxX:Math.max(...t),maxY:Math.max(...n),minX:Math.min(...t),minY:Math.min(...n)}}function convertPolygonToPercent(e,t,n){const{minX:o,maxX:i,minY:r,maxY:a}=getPolygonBounds(e);return{height:(a-r)/n*100,left:o/t*100,top:r/n*100,width:(i-o)/t*100}}function RenderPdf(e){const[t,n]=useState(0),[o,i]=useState(void 0),[r,a]=useState(null),[s,l]=useState(void 0),c=useWindowSizeContext(),d=useRef(null),p=useRef(null),u=useRef(void 0),m=null!=e.highlightedCitations&&e.highlightedCitations.length>0;useLayoutEffect(()=>{if(e.isFullScreen)return void i(void 0);const t=p.current;if(null==t)return;const n=()=>{const e=Math.floor(t.clientWidth);e>0&&i(t=>t===e?t:e)};n();const o=new ResizeObserver(n);return o.observe(t),()=>{o.disconnect()}},[e.isFullScreen,e.fileUrl]);const h=t=>{u.current!==t&&(u.current=t,l(t),e.onCitationHover?.(t))},g=e=>{!0===m&&h(findCitationTransactionIdAtPoint(e.currentTarget,e.clientX,e.clientY))},x=()=>{!0===m&&h(void 0)},f=t=>{null!=e.onCitationClick&&e.onCitationClick(findCitationTransactionIdAtPoint(t.currentTarget,t.clientX,t.clientY))},y=useCallback(()=>{if(null==e.highlightedCitations||0===e.highlightedCitations.length)return;const t=getScrollTargetPageNumber(e.highlightedCitations,e.selectedStatementTransactionId);if(null==t)return;const n=p.current?.querySelector(`[data-testid="pdf-page-${t}"]`);if(null!=n){const t=p.current,o=null!=t&&t.scrollHeight>t.clientHeight?t:null,i=(null!=e.selectedStatementTransactionId?n.querySelector(`[data-statement-transaction-id="${CSS.escape(String(e.selectedStatementTransactionId))}"]`):null)??n;if(isElementVisibleInContainer(i,o))return;scrollPageElementIntoView(i,o)}},[e.highlightedCitations,e.selectedStatementTransactionId]);useEffect(()=>{if(null==e.highlightedCitations||0===e.highlightedCitations.length||null==e.selectedStatementTransactionId)return;y();const t=requestAnimationFrame(y),n=window.setTimeout(y,150);return()=>{cancelAnimationFrame(t),window.clearTimeout(n)}},[e.highlightedCitations,e.selectedStatementTransactionId,t,y]),useEffect(()=>{a(null),n(0)},[e.fileUrl]);const S=t=>{if(!e.highlightedCitations)return null;const n=e.highlightedCitations.filter(e=>e.page===t);return 0===n.length?null:/* @__PURE__ */jsxRuntimeExports.jsx(HighlightsOverlay,{children:n.flatMap((t,n)=>{const o=convertPolygonToPercent(t.polygon,t.pageWidth,t.pageHeight),i=getEffectiveCitationVariant(t,e.selectedStatementTransactionId,s);/* @__PURE__ */
|
|
11826
11829
|
return jsxRuntimeExports.jsx(HighlightBox,{"data-citation-variant":i,"data-statement-transaction-id":t.statementTransactionId,$variant:i,style:{height:`${o.height}%`,left:`${o.left}%`,top:`${o.top}%`,width:`${o.width}%`}},`${n}`)})})},C=()=>{e.setShowFullScreenView(!0)};/* @__PURE__ */
|
|
11827
11830
|
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[
|
|
11828
11831
|
/* @__PURE__ */jsxRuntimeExports.jsx(FileInputElement,{fileRef:d,name:FileInputElementName$1,onFileChange:t=>{if(null!=t.target.files){const n=t.target.files[0];e.onUploadAttachment?.([n],[n.name])}},multiple:e.allowMultiFiles,sizeLimit:SizeLimit32MB,onFileSizeError:t=>e.openSizeLimitPopup?.(t)}),
|
|
@@ -29210,7 +29213,7 @@ return jsxRuntimeExports.jsx(Profiler,{id:"TransactionListPage",onRender:functio
|
|
|
29210
29213
|
/* @__PURE__ */jsxRuntimeExports.jsx(SubTitle$j,{children:t}),
|
|
29211
29214
|
/* @__PURE__ */jsxRuntimeExports.jsxs(TransactionListBody,{children:[v||null==P||!1!==N?null:/* @__PURE__ */jsxRuntimeExports.jsx(ListItemMarginWrap,{windowSize:F,$quickView:N,style:P.isLoading?{visibility:"hidden",pointerEvents:"none"}:void 0,"data-testid":generateDataTestId("transaction-list","list-item-load-more"),children:/* @__PURE__ */jsxRuntimeExports.jsx(LoadMoreTransactions,{firstMonthOfFY:n,isLoadNextItem:!0,timePeriod:l,timeframe:s,fixedTimePeriod:P.fixedTimePeriod,doLoadMoreTransactions:(e,t)=>{P.onLoadNextClick?.(e,t)}})}),v||0!==p.transactions.length||z||A?/* @__PURE__ */jsxRuntimeExports.jsxs(TransactionListTableFill,{windowSize:F,$quickView:N,children:[
|
|
29212
29215
|
/* @__PURE__ */jsxRuntimeExports.jsx(TransactionListDataListTable,{ref:O,scrollMode:"content-height",isAccountingClassesEnabled:o,showProjectField:i,isTransactionCommentingEnabled:r,firstMonthOfFY:n,timeframe:s,timePeriod:l,transactions:p.transactions,isFirstLotLoading:v||0===p.transactions.length&&(z||A),isLoadingNextPeriod:H,scrollToBottomOnLoad:!1,currentScrollYOffset:u,onTransactionItemClick:g,onTransactionListScroll:x,componentName:"report.transactions.list"}),v?null:V]}):/* @__PURE__ */jsxRuntimeExports.jsxs(TransactionListEmptyStateBlock,{children:[
|
|
29213
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(EmptyTransactionsContainer$7,{children:/* @__PURE__ */jsxRuntimeExports.jsx(ListItemMarginWrap,{windowSize:F,$quickView:N,"data-testid":generateDataTestId("transaction-list","transactions-list-empty"),children:/* @__PURE__ */jsxRuntimeExports.jsx(EmptyTransactionsText$7,{children:emptyTransactionsStringForPeriod(l,!0===P?.isLoading||!0===_?.isLoading)})})}),V]})]})]})})})})}const FORECAST_PANDL_REPORT_ID_PREFIX="profit_and_loss+",SAME_PAGE_REPORT_IDS={reports:["profit_and_loss","balance_sheet","cash_flow","profit_and_loss_by_classes","profit_and_loss_by_projects","balance_sheet_by_classes","balance_sheet_by_projects","cash_flow_by_classes","cash_flow_by_projects"],opex:["operating_expenses","operating_expenses_by_classes","operating_expenses_by_projects"],revenue:["revenue","revenue_by_classes","revenue_by_projects"],net_burn:["net_burn_or_income","net_burn_or_income_by_classes","net_burn_or_income_by_projects"]},PAGE_LEVEL_ENTITY_TYPES={reports:["standard_report.details"],opex:["standard_report.details.operating_expenses"],forecast_pandl:["forecast_report.details"],revenue:["standard_report.details.revenue"],net_burn:["standard_report.details.net_burn_or_income"]},getSameReportPageReportIds=e=>"forecast_pandl"===e?["profit_and_loss"]:SAME_PAGE_REPORT_IDS[e],getReportThreadHostPage=e=>{for(const t of Object.keys(SAME_PAGE_REPORT_IDS))if(SAME_PAGE_REPORT_IDS[t].includes(e))return t},getPageLevelEntityType=e=>null==e?"standard_report.details":PAGE_LEVEL_ENTITY_TYPES[e][0],isSameReportPageThread=(e,t)=>{if(null==e)return!1;const n=parseReportThreadTarget(e);return null==n?PAGE_LEVEL_ENTITY_TYPES[t].includes(e.entityType):"forecast_pandl"===t?"profit_and_loss"===n.reportId||n.reportId.startsWith(FORECAST_PANDL_REPORT_ID_PREFIX):SAME_PAGE_REPORT_IDS[t].includes(n.reportId)},POLL_INTERVAL_MS=500,POLL_TIMEOUT_MS=2e3,STALE_REQUEST_TTL_MS=12e4,TICK_MATCH_TOLERANCE_MS=864e5,PENDING_DISPATCH_GRACE_MS=5e3;function handleTabSwitchIfNeeded(e,t,n,o){return null==e||null==t||null==n||e.reportId===t?(o.current=!1,!1):(o.current||(o.current=!0,n(e.reportId)),!0)}function getColumnVisibility(e,t,n){const o=t.findIndex(t=>{return n=t.startDate.valueOf(),o=e.startDate.getTime(),Math.abs(n-o)<=TICK_MATCH_TOLERANCE_MS;var n,o});if(o<0)return{isVisible:!1,targetTick:null};const{numberOfPeriods:i,thisPeriod:r}=n;let a=t.length-1;if(null!=r){const e=t.findIndex(e=>r.endDate.valueOf()>=e.startDate.valueOf()&&r.endDate.valueOf()<=e.endDate.valueOf());e>=0&&(a=e)}return{isVisible:o<=a&&o>a-i,targetTick:t[o]}}function expandCollapsedAncestors(e,t,n,o){const i=findAncestorNodeIds(t,e.accountId);if(null==i)return null;let r=!1;for(const a of i.ancestorIds)!1===n[a]&&(o(e.reportId,a,!0),r=!0);return{expanded:r,lookup:i}}const STICKY_CLEARANCE_PX=sp[2];function scrollCellPastStickyColumn(e){const t=e.closest(".content-scroll");if(null==t)return;const n=e.getBoundingClientRect(),o=n.left+2,i=n.top+n.height/2,r=document.elementsFromPoint(o,i),a=r[0];if(null==a||e.contains(a)||a.contains(e))return;const s=r.find(t=>!e.contains(t)&&!t.contains(e)&&"sticky"===getComputedStyle(t).position);if(null==s)return;const l=s.getBoundingClientRect().right;t.scrollLeft-=l-n.left+STICKY_CLEARANCE_PX}function useReportThreadNavigation({requestToOpenThread:e,setRequestToOpenThread:t,setOpenThread:n,allThreads:o,selectedReport:i,onReportSelectionChanged:r,reportTreeRootNodes:a,nodeCollapseState:s,isReportIdSupported:l,onExpandNode:c,scrollToNode:d,additionalBalances:p,allTimeframeTicks:u,isReportLoading:m,isRequestForeign:h,reportFormat:g,selectedCOABalancesRange:x,selectedTimeframe:f,onAdditionalBalanceForThread:y,onPeriodAnchorChangeForThread:S,onReportFormatChangeForThread:C,onTimeframeChangeForThread:$}){const b=useRef(!1),v=useRef(null),E=useRef(null),w=useRef(null),R=useRef(null),A=useRef(null),j=useRef(null);useEffect(()=>{if(A.current!==e&&(A.current=e,b.current=!1,v.current=null,E.current=null,w.current=null,R.current=null,j.current=null),null==e)return;if(!0===h)return;if(null!=e.requestedAt&&Date.now()-e.requestedAt>STALE_REQUEST_TTL_MS)return void t(null);const{threadId:T}=e,I=o.find(e=>e.id===T);if(null==I&&o.length>0)return void t(null);if(null==I)return;const k=e.threadMetadata??I.metadata,L=parseReportThreadTarget(k),D=L?.cellEntityId??I.metadata?.entityId;if(null==D)return void t(null);if(null!=L&&null!=l&&!l(L.reportId))return void t(null);if(handleTabSwitchIfNeeded(L,i,r,b))return;if(!0===m)return;if(null!=L&&null!=g&&"more_detailed"!==g&&null!=C){if(null==R.current)return R.current=Date.now(),void C("more_detailed");if(Date.now()-R.current<PENDING_DISPATCH_GRACE_MS)return}else"more_detailed"===g&&(R.current=null);const _=null!=L?parseReportColumnPeriod(L.columnKey):null;if(null!=_){const e=deriveReportColumnTimeframe(_);if(null!=e&&null!=f&&e!==f&&null!=$){if(null==v.current)return v.current=Date.now(),void $(e);if(Date.now()-v.current<PENDING_DISPATCH_GRACE_MS)return}else if(v.current=null,null!=u&&null!=x&&null!=S){const{isVisible:e,targetTick:t}=getColumnVisibility(_,u,x);if(e)E.current=null;else if(null!=t){if(null==E.current)return E.current=Date.now(),void S({startDate:t.startDate,endDate:t.endDate});if(Date.now()-E.current<PENDING_DISPATCH_GRACE_MS)return}}}else if(null!=L&&isCalculatedBalanceType(L.columnKey)&&null!=p&&null!=y){const e=L.columnKey;if(p.includes(e))w.current=null;else{if(null==w.current)return w.current=Date.now(),void y(e);if(Date.now()-w.current<PENDING_DISPATCH_GRACE_MS)return}}let P;if(null!=L&&null!=a&&null!=s&&null!=c){const e=expandCollapsedAncestors(L,a,s,c);if(!0===e?.expanded)return;P=e?.lookup.targetNodeId}const B=j.current===e;B||null==P||null==d||d(P);const M=()=>{const e=document.querySelector(`[data-cell-entity-id="${canonicalizeCellEntityId(D)}"]`);return null!=e?e:Array.from(document.querySelectorAll("[data-cell-entity-id]")).find(e=>matchesCellEntityId(e.dataset.cellEntityId??"",D))??null},O=B?null:setTimeout(()=>{const t=M();null!=t&&(j.current=e,t.scrollIntoView({block:"center",behavior:"auto"}),scrollCellPastStickyColumn(t))},0),F=setInterval(()=>{const o=M();if(null==o)return;const{left:i,right:r}=o.getBoundingClientRect();r>0&&i<globalThis.innerWidth&&(clearInterval(F),T&&(t(null),n(T),e.onThreadShownCallback?.()))},POLL_INTERVAL_MS),N=setTimeout(()=>{clearInterval(F),t(null)},POLL_TIMEOUT_MS);return()=>{null!=O&&clearTimeout(O),clearInterval(F),clearTimeout(N)}},[e,o,n,t,i,r,a,s,l,c,d,p,u,m,h,g,x,f,y,S,C,$])}const{common:{strings:{atTheRate:atTheRate}},dateFormat:{visual:{MMMYYFormat:mmmYy$9,QYYYYformat:qYyyy$3,YYYYformat:yyyy$7,MMMYYYYFormat:mmmYyyy$5}}}=appLocale.getLocalizedStrings(),toTimeframeFilter=e=>{switch(e){case"week":return"weeks";case"month":return"months";case"quarter":return"quarters";case"year":return"years";case"this_month_to_date":case"this_week_to_date":case"this_year_to_date":case"last_year":case"last_week":case"last_month":case"last_6_months":case"last_3_months":case"last_12_months":case"free_range":return e}},toTimeframeLabel=(e,t,n)=>{if(null==n)return"";switch(t){case"month":return atTheRate+formatZeniDate(n.startDate,mmmYy$9,e);case"quarter":return atTheRate+"Q"+formatZeniDate(n.startDate,qYyyy$3,e);case"year":return atTheRate+formatZeniDate(n.startDate,yyyy$7,e);case"free_range":case"week":return atTheRate+formatZeniDate(n.startDate,mmmYyyy$5,e)}},EmptyContentBox=styled$2.div`
|
|
29216
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(EmptyTransactionsContainer$7,{children:/* @__PURE__ */jsxRuntimeExports.jsx(ListItemMarginWrap,{windowSize:F,$quickView:N,"data-testid":generateDataTestId("transaction-list","transactions-list-empty"),children:/* @__PURE__ */jsxRuntimeExports.jsx(EmptyTransactionsText$7,{children:emptyTransactionsStringForPeriod(l,!0===P?.isLoading||!0===_?.isLoading)})})}),V]})]})]})})})})}const FORECAST_PANDL_REPORT_ID_PREFIX="profit_and_loss+",SAME_PAGE_REPORT_IDS={reports:["profit_and_loss","balance_sheet","cash_flow","profit_and_loss_by_classes","profit_and_loss_by_projects","balance_sheet_by_classes","balance_sheet_by_projects","cash_flow_by_classes","cash_flow_by_projects"],opex:["operating_expenses","operating_expenses_by_classes","operating_expenses_by_projects"],revenue:["revenue","revenue_by_classes","revenue_by_projects"],net_burn:["net_burn_or_income","net_burn_or_income_by_classes","net_burn_or_income_by_projects"]},PAGE_LEVEL_ENTITY_TYPES={reports:["standard_report.details"],opex:["standard_report.details.operating_expenses"],forecast_pandl:["forecast_report.details"],revenue:["standard_report.details.revenue"],net_burn:["standard_report.details.net_burn_or_income"]},getSameReportPageReportIds=e=>"forecast_pandl"===e?["profit_and_loss"]:SAME_PAGE_REPORT_IDS[e],getReportThreadHostPage=e=>{for(const t of Object.keys(SAME_PAGE_REPORT_IDS))if(SAME_PAGE_REPORT_IDS[t].includes(e))return t},getPageLevelEntityType=e=>null==e?"standard_report.details":PAGE_LEVEL_ENTITY_TYPES[e][0],isPageLevelReportThread=(e,t)=>null!=e&&(null==parseReportThreadTarget(e)&&PAGE_LEVEL_ENTITY_TYPES[t].includes(e.entityType)),isSameReportPageThread=(e,t)=>{if(null==e)return!1;const n=parseReportThreadTarget(e);return null==n?PAGE_LEVEL_ENTITY_TYPES[t].includes(e.entityType):"forecast_pandl"===t?"profit_and_loss"===n.reportId||n.reportId.startsWith(FORECAST_PANDL_REPORT_ID_PREFIX):SAME_PAGE_REPORT_IDS[t].includes(n.reportId)},POLL_INTERVAL_MS=500,POLL_TIMEOUT_MS=2e3,STALE_REQUEST_TTL_MS=12e4,TICK_MATCH_TOLERANCE_MS=864e5,PENDING_DISPATCH_GRACE_MS=5e3;function handleTabSwitchIfNeeded(e,t,n,o){return null==e||null==t||null==n||e.reportId===t?(o.current=!1,!1):(o.current||(o.current=!0,n(e.reportId)),!0)}function getColumnVisibility(e,t,n){const o=t.findIndex(t=>{return n=t.startDate.valueOf(),o=e.startDate.getTime(),Math.abs(n-o)<=TICK_MATCH_TOLERANCE_MS;var n,o});if(o<0)return{isVisible:!1,targetTick:null};const{numberOfPeriods:i,thisPeriod:r}=n;let a=t.length-1;if(null!=r){const e=t.findIndex(e=>r.endDate.valueOf()>=e.startDate.valueOf()&&r.endDate.valueOf()<=e.endDate.valueOf());e>=0&&(a=e)}return{isVisible:o<=a&&o>a-i,targetTick:t[o]}}function expandCollapsedAncestors(e,t,n,o){const i=findAncestorNodeIds(t,e.accountId);if(null==i)return null;let r=!1;for(const a of i.ancestorIds)!1===n[a]&&(o(e.reportId,a,!0),r=!0);return{expanded:r,lookup:i}}const STICKY_CLEARANCE_PX=sp[2];function scrollCellPastStickyColumn(e){const t=e.closest(".content-scroll");if(null==t)return;const n=e.getBoundingClientRect(),o=n.left+2,i=n.top+n.height/2,r=document.elementsFromPoint(o,i),a=r[0];if(null==a||e.contains(a)||a.contains(e))return;const s=r.find(t=>!e.contains(t)&&!t.contains(e)&&"sticky"===getComputedStyle(t).position);if(null==s)return;const l=s.getBoundingClientRect().right;t.scrollLeft-=l-n.left+STICKY_CLEARANCE_PX}function useReportThreadNavigation({requestToOpenThread:e,setRequestToOpenThread:t,setOpenThread:n,allThreads:o,selectedReport:i,onReportSelectionChanged:r,reportTreeRootNodes:a,nodeCollapseState:s,isReportIdSupported:l,onExpandNode:c,scrollToNode:d,additionalBalances:p,allTimeframeTicks:u,isReportLoading:m,isRequestForeign:h,reportFormat:g,selectedCOABalancesRange:x,selectedTimeframe:f,onAdditionalBalanceForThread:y,onPeriodAnchorChangeForThread:S,onReportFormatChangeForThread:C,onTimeframeChangeForThread:$}){const b=useRef(!1),v=useRef(null),E=useRef(null),w=useRef(null),R=useRef(null),A=useRef(null),j=useRef(null);useEffect(()=>{if(A.current!==e&&(A.current=e,b.current=!1,v.current=null,E.current=null,w.current=null,R.current=null,j.current=null),null==e)return;if(!0===h)return;if(null!=e.requestedAt&&Date.now()-e.requestedAt>STALE_REQUEST_TTL_MS)return void t(null);const{threadId:T}=e,I=o.find(e=>e.id===T);if(null==I&&o.length>0)return void t(null);if(null==I)return;const k=e.threadMetadata??I.metadata,L=parseReportThreadTarget(k),D=L?.cellEntityId??I.metadata?.entityId;if(null==D)return void t(null);if(null!=L&&null!=l&&!l(L.reportId))return void t(null);if(handleTabSwitchIfNeeded(L,i,r,b))return;if(!0===m)return;if(null!=L&&null!=g&&"more_detailed"!==g&&null!=C){if(null==R.current)return R.current=Date.now(),void C("more_detailed");if(Date.now()-R.current<PENDING_DISPATCH_GRACE_MS)return}else"more_detailed"===g&&(R.current=null);const _=null!=L?parseReportColumnPeriod(L.columnKey):null;if(null!=_){const e=deriveReportColumnTimeframe(_);if(null!=e&&null!=f&&e!==f&&null!=$){if(null==v.current)return v.current=Date.now(),void $(e);if(Date.now()-v.current<PENDING_DISPATCH_GRACE_MS)return}else if(v.current=null,null!=u&&null!=x&&null!=S){const{isVisible:e,targetTick:t}=getColumnVisibility(_,u,x);if(e)E.current=null;else if(null!=t){if(null==E.current)return E.current=Date.now(),void S({startDate:t.startDate,endDate:t.endDate});if(Date.now()-E.current<PENDING_DISPATCH_GRACE_MS)return}}}else if(null!=L&&isCalculatedBalanceType(L.columnKey)&&null!=p&&null!=y){const e=L.columnKey;if(p.includes(e))w.current=null;else{if(null==w.current)return w.current=Date.now(),void y(e);if(Date.now()-w.current<PENDING_DISPATCH_GRACE_MS)return}}let P;if(null!=L&&null!=a&&null!=s&&null!=c){const e=expandCollapsedAncestors(L,a,s,c);if(!0===e?.expanded)return;P=e?.lookup.targetNodeId}const B=j.current===e;B||null==P||null==d||d(P);const M=()=>{const e=document.querySelector(`[data-cell-entity-id="${canonicalizeCellEntityId(D)}"]`);return null!=e?e:Array.from(document.querySelectorAll("[data-cell-entity-id]")).find(e=>matchesCellEntityId(e.dataset.cellEntityId??"",D))??null},O=B?null:setTimeout(()=>{const t=M();null!=t&&(j.current=e,t.scrollIntoView({block:"center",behavior:"auto"}),scrollCellPastStickyColumn(t))},0),F=setInterval(()=>{const o=M();if(null==o)return;const{left:i,right:r}=o.getBoundingClientRect();r>0&&i<globalThis.innerWidth&&(clearInterval(F),T&&(t(null),n(T),e.onThreadShownCallback?.()))},POLL_INTERVAL_MS),N=setTimeout(()=>{clearInterval(F),t(null)},POLL_TIMEOUT_MS);return()=>{null!=O&&clearTimeout(O),clearInterval(F),clearTimeout(N)}},[e,o,n,t,i,r,a,s,l,c,d,p,u,m,h,g,x,f,y,S,C,$])}const{common:{strings:{atTheRate:atTheRate}},dateFormat:{visual:{MMMYYFormat:mmmYy$9,QYYYYformat:qYyyy$3,YYYYformat:yyyy$7,MMMYYYYFormat:mmmYyyy$5}}}=appLocale.getLocalizedStrings(),toTimeframeFilter=e=>{switch(e){case"week":return"weeks";case"month":return"months";case"quarter":return"quarters";case"year":return"years";case"this_month_to_date":case"this_week_to_date":case"this_year_to_date":case"last_year":case"last_week":case"last_month":case"last_6_months":case"last_3_months":case"last_12_months":case"free_range":return e}},toTimeframeLabel=(e,t,n)=>{if(null==n)return"";switch(t){case"month":return atTheRate+formatZeniDate(n.startDate,mmmYy$9,e);case"quarter":return atTheRate+"Q"+formatZeniDate(n.startDate,qYyyy$3,e);case"year":return atTheRate+formatZeniDate(n.startDate,yyyy$7,e);case"free_range":case"week":return atTheRate+formatZeniDate(n.startDate,mmmYyyy$5,e)}},EmptyContentBox=styled$2.div`
|
|
29214
29217
|
justify-content: center;
|
|
29215
29218
|
align-items: center;
|
|
29216
29219
|
display: flex;
|
|
@@ -36381,18 +36384,18 @@ return jsxRuntimeExports.jsx(ConfirmationPopup,{formId:TEST_ID$h,containerStyle:
|
|
|
36381
36384
|
`,ReloadLabel$p=styled$2(StandardRegularSp)`
|
|
36382
36385
|
margin-top: ${Space.sp3};
|
|
36383
36386
|
color: ${e=>e.theme.colors.hero};
|
|
36384
|
-
`,getSelectedReport=e=>{switch(e.selectedReport){case"cash_flow":return e.cashFlowReport;case"cash_flow_by_classes":return e.cashFlowClassesViewReport;case"cash_flow_by_projects":return e.cashFlowProjectViewReport;case"balance_sheet":return e.balanceSheetReport;case"balance_sheet_by_classes":return e.balanceSheetClassesViewReport;case"balance_sheet_by_projects":return e.balanceSheetProjectViewReport;case"profit_and_loss_by_classes":return e.profitAndLossClassesViewReport;case"profit_and_loss_by_projects":return e.profitAndLossProjectViewReport;default:return e.profitAndLossReport}},getSelectedReportForTable=e=>{if("profit_and_loss_by_classes"===e.selectedReport&&"horizontal"===e.profitAndLossClassesViewReport?.uiState.classViewLayout){const t=e.profitAndLossByClassHorizontalReport;return null!=t.selectedPeriod?t:getSelectedReport(e)}return getSelectedReport(e)},getSelectedNumberOfPeriods=({selectedReport:e,isCompareModeOn:t,windowSize:n})=>{const o=e.availableNumberOfPeriods;let i=defaultPeriods.selectedNumberOfPeriods(t,n);return null!=o&&(i=Math.min(i,o)),i};function ReportsPagePerformanceTracker({reportId:e,fetchState:t}){const n=isReportsPageReportId(e)?getReportFamily(e):e;return useSentryPerformanceTracking({componentName:`reports.${n}`,enabled:"Completed"===t}),null}const COMPARE_BALANCE_COUNTERPARTS={this_period_vs_last_period:"this_period_vs_last_period_percent",this_period_vs_last_period_percent:"this_period_vs_last_period",this_period_vs_same_period_last_year:"this_period_vs_same_period_last_year_percent",this_period_vs_same_period_last_year_percent:"this_period_vs_same_period_last_year"};function ReportsPage(e){const t=useWindowSizeContext(),n=useTheme(),o=useGlobalInfoContext(),{selectedReportAndTimeframeFetchState:i,onClickMenuIcon:r,initialOpenThreadRequest:a}=e,[s,l]=React__default.useState(null),[c,d]=React__default.useState(null),{useFeatureGate:p}=useZeniFeatureContext(),{isFeatureEnabled:u}=p(FeatureGatesNames.isReportsCommentingEnabled),m=o?.currentTenant?.companyId,h=o?.currentTenant?.companyName??"",g=!0===u&&null!=m,x=`dashboard_${m}`,{threads:f,isLoading:y,requestToOpenThread:S,setRequestToOpenThread:C,setOpenThread:$}=useContext(ThreadsContext);useEffect(()=>{null!=a?.threadId&&null!=a?.companyId&&null!=a?.entityType&&C(a)},[a,C]);const[b,v]=useState(!1),E=useMemo(()=>({application:"dashboard",companyId:m,tab:"standard_report",isGlobalComment:!1}),[m]),w=useMemo(()=>{const e=getFilteredThreads(f,E,"both");return Array.from(e.values()).filter(e=>isSameReportPageThread(e.metadata,"reports"))},[f,E]),R=useMemo(()=>w.filter(e=>!1===e.resolved&&!e.id.includes(NEW_THREAD_SUFFIX)),[w]).length,A=useCallback((e,t)=>{v(!1),C({threadId:t,companyId:e.companyId,entityType:e.entityType,threadMetadata:e})},[C]),[j,T]=useState(void 0),I=useRef(null),k=useCallback(e=>{T(e)},[]),L=useCallback(e=>{I.current?.scrollToItem(e,"center")},[]),{onAdditionalBalanceSelectionChanged:D,onCOABalancesRangeChanged:_,onReportSelectionChanged:P,onThisPeriodChanged:B,onTimeframeSelectionChanged:M,onUpdateAccountViewMode:O,onUpdateReportFormat:F,selectedCOABalancesRange:N}=e,z=o?.loggedInUserRole,H=useCallback(e=>{const t="more_detailed"===e&&hasInvestorBankerLevelAccess(z)?"detailed":e;F(t)},[z,F]),V=getSelectedReport(e).filter?.additionalBalances,W=useMemo(()=>V??[],[V]),U=useCallback(e=>{P?.(e);const t=toAccountViewModeForReportId(e);null!=t&&O?.(t,e)},[P,O]),G=useCallback(e=>{const t=COMPARE_BALANCE_COUNTERPARTS[e],n=[...W.filter(n=>n!==e&&n!==t),e],o=n.includes("this_period_vs_last_period")||n.includes("this_period_vs_last_period_percent");D(o,n,N.numberOfPeriods,!0)},[W,D,N.numberOfPeriods]),q=useCallback(e=>{M?.(e,!0)},[M]),Q=useCallback(e=>{null==_?B?.(e,N.numberOfPeriods,!0):_({numberOfPeriods:N.numberOfPeriods,orderBy:N.orderBy,thisPeriod:e})},[_,B,N.numberOfPeriods,N.orderBy]),Y=useMemo(()=>{const e=null!=S?f.get(S.threadId)?.metadata:void 0;return null!=e&&!("standard_report"===e.tab&&isSameReportPageThread(e,"reports"))},[S,f]),K="Not-Started"===i.fetchState||"In-Progress"===i.fetchState;useReportThreadNavigation({requestToOpenThread:S,setRequestToOpenThread:C,setOpenThread:$,allThreads:w,selectedReport:e.selectedReport,onReportSelectionChanged:U,reportTreeRootNodes:j,nodeCollapseState:getSelectedReportForTable(e).uiState.nodeCollapseState,isReportIdSupported:isReportsPageReportId,onExpandNode:e.onElementCollapseStateChanged,scrollToNode:L,additionalBalances:W,onAdditionalBalanceForThread:G,isRequestForeign:Y,reportFormat:e.reportFormat,onReportFormatChangeForThread:H,allTimeframeTicks:e.allTimeframeTicks,isReportLoading:K,selectedCOABalancesRange:N,selectedTimeframe:e.selectedTimeframe,onPeriodAnchorChangeForThread:null!=_||null!=B?Q:void 0,onTimeframeChangeForThread:null!=M?q:void 0});const Z=useMemo(()=>{const t=/* @__PURE__ */new Set;if(K)return t;for(const n of w??[])isReportThreadRowMissing(n.metadata,e.selectedReport,j)&&t.add(n.id);return t},[w,K,e.selectedReport,j]),X=useMemo(()=>({companyId:m??"",companyName:h,entityType:"standard_report.details",entityId:m??"",isGlobalComment:!1,application:"dashboard",tab:"standard_report",url:window.location.href}),[m,h]),
|
|
36387
|
+
`,getSelectedReport=e=>{switch(e.selectedReport){case"cash_flow":return e.cashFlowReport;case"cash_flow_by_classes":return e.cashFlowClassesViewReport;case"cash_flow_by_projects":return e.cashFlowProjectViewReport;case"balance_sheet":return e.balanceSheetReport;case"balance_sheet_by_classes":return e.balanceSheetClassesViewReport;case"balance_sheet_by_projects":return e.balanceSheetProjectViewReport;case"profit_and_loss_by_classes":return e.profitAndLossClassesViewReport;case"profit_and_loss_by_projects":return e.profitAndLossProjectViewReport;default:return e.profitAndLossReport}},getSelectedReportForTable=e=>{if("profit_and_loss_by_classes"===e.selectedReport&&"horizontal"===e.profitAndLossClassesViewReport?.uiState.classViewLayout){const t=e.profitAndLossByClassHorizontalReport;return null!=t.selectedPeriod?t:getSelectedReport(e)}return getSelectedReport(e)},getSelectedNumberOfPeriods=({selectedReport:e,isCompareModeOn:t,windowSize:n})=>{const o=e.availableNumberOfPeriods;let i=defaultPeriods.selectedNumberOfPeriods(t,n);return null!=o&&(i=Math.min(i,o)),i};function ReportsPagePerformanceTracker({reportId:e,fetchState:t}){const n=isReportsPageReportId(e)?getReportFamily(e):e;return useSentryPerformanceTracking({componentName:`reports.${n}`,enabled:"Completed"===t}),null}const COMPARE_BALANCE_COUNTERPARTS={this_period_vs_last_period:"this_period_vs_last_period_percent",this_period_vs_last_period_percent:"this_period_vs_last_period",this_period_vs_same_period_last_year:"this_period_vs_same_period_last_year_percent",this_period_vs_same_period_last_year_percent:"this_period_vs_same_period_last_year"};function ReportsPage(e){const t=useWindowSizeContext(),n=useTheme(),o=useGlobalInfoContext(),{selectedReportAndTimeframeFetchState:i,onClickMenuIcon:r,initialOpenThreadRequest:a}=e,[s,l]=React__default.useState(null),[c,d]=React__default.useState(null),{useFeatureGate:p}=useZeniFeatureContext(),{isFeatureEnabled:u}=p(FeatureGatesNames.isReportsCommentingEnabled),m=o?.currentTenant?.companyId,h=o?.currentTenant?.companyName??"",g=!0===u&&null!=m,x=`dashboard_${m}`,{threads:f,isLoading:y,requestToOpenThread:S,setRequestToOpenThread:C,setOpenThread:$}=useContext(ThreadsContext);useEffect(()=>{null!=a?.threadId&&null!=a?.companyId&&null!=a?.entityType&&C(a)},[a,C]);const[b,v]=useState(!1),E=useMemo(()=>({application:"dashboard",companyId:m,tab:"standard_report",isGlobalComment:!1}),[m]),w=useMemo(()=>{const e=getFilteredThreads(f,E,"both");return Array.from(e.values()).filter(e=>isSameReportPageThread(e.metadata,"reports"))},[f,E]),R=useMemo(()=>w.filter(e=>!1===e.resolved&&!e.id.includes(NEW_THREAD_SUFFIX)),[w]).length,A=useCallback((e,t)=>{v(!1),C({threadId:t,companyId:e.companyId,entityType:e.entityType,threadMetadata:e})},[C]),[j,T]=useState(void 0),I=useRef(null),k=useCallback(e=>{T(e)},[]),L=useCallback(e=>{I.current?.scrollToItem(e,"center")},[]),{onAdditionalBalanceSelectionChanged:D,onCOABalancesRangeChanged:_,onReportSelectionChanged:P,onThisPeriodChanged:B,onTimeframeSelectionChanged:M,onUpdateAccountViewMode:O,onUpdateReportFormat:F,selectedCOABalancesRange:N}=e,z=o?.loggedInUserRole,H=useCallback(e=>{const t="more_detailed"===e&&hasInvestorBankerLevelAccess(z)?"detailed":e;F(t)},[z,F]),V=getSelectedReport(e).filter?.additionalBalances,W=useMemo(()=>V??[],[V]),U=useCallback(e=>{P?.(e);const t=toAccountViewModeForReportId(e);null!=t&&O?.(t,e)},[P,O]),G=useCallback(e=>{const t=COMPARE_BALANCE_COUNTERPARTS[e],n=[...W.filter(n=>n!==e&&n!==t),e],o=n.includes("this_period_vs_last_period")||n.includes("this_period_vs_last_period_percent");D(o,n,N.numberOfPeriods,!0)},[W,D,N.numberOfPeriods]),q=useCallback(e=>{M?.(e,!0)},[M]),Q=useCallback(e=>{null==_?B?.(e,N.numberOfPeriods,!0):_({numberOfPeriods:N.numberOfPeriods,orderBy:N.orderBy,thisPeriod:e})},[_,B,N.numberOfPeriods,N.orderBy]),Y=useMemo(()=>{const e=null!=S?f.get(S.threadId)?.metadata:void 0;return null!=e&&!("standard_report"===e.tab&&isSameReportPageThread(e,"reports"))},[S,f]),K="Not-Started"===i.fetchState||"In-Progress"===i.fetchState;useReportThreadNavigation({requestToOpenThread:S,setRequestToOpenThread:C,setOpenThread:$,allThreads:w,selectedReport:e.selectedReport,onReportSelectionChanged:U,reportTreeRootNodes:j,nodeCollapseState:getSelectedReportForTable(e).uiState.nodeCollapseState,isReportIdSupported:isReportsPageReportId,onExpandNode:e.onElementCollapseStateChanged,scrollToNode:L,additionalBalances:W,onAdditionalBalanceForThread:G,isRequestForeign:Y,reportFormat:e.reportFormat,onReportFormatChangeForThread:H,allTimeframeTicks:e.allTimeframeTicks,isReportLoading:K,selectedCOABalancesRange:N,selectedTimeframe:e.selectedTimeframe,onPeriodAnchorChangeForThread:null!=_||null!=B?Q:void 0,onTimeframeChangeForThread:null!=M?q:void 0});const Z=useMemo(()=>{const t=/* @__PURE__ */new Set;if(K)return t;for(const n of w??[])isReportThreadRowMissing(n.metadata,e.selectedReport,j)&&t.add(n.id);return t},[w,K,e.selectedReport,j]),X=useMemo(()=>{const e=/* @__PURE__ */new Set;for(const t of w??[])isPageLevelReportThread(t.metadata,"reports")&&e.add(t.id);return e},[w]),J=useMemo(()=>({companyId:m??"",companyName:h,entityType:"standard_report.details",entityId:m??"",isGlobalComment:!1,application:"dashboard",tab:"standard_report",url:window.location.href}),[m,h]),ee=useRef(void 0);useEffect(()=>{const n="profit_and_loss_by_classes"===e.selectedReport&&"horizontal"===e.profitAndLossClassesViewReport?.uiState?.classViewLayout;if("Completed"===e.fetchState&&!n){if(ee.current===t)return;ee.current=t;const n=getSelectedReport(e),o=n.filter?.additionalBalances??[];e.onUpdateHighlightedNumberOfPeriods?.(o,e.isCompareMode,getSelectedNumberOfPeriods({selectedReport:getSelectedReport(e),isCompareModeOn:e.isCompareMode,windowSize:t}),e.balancesInTimeframe??[])}},[t,e.fetchState]);const te=prepareDownloadOptions$3(e),ne={failed:failed$7},oe=async t=>{if(null!=te){l(t),e.updateDownloadStateHandler("In-Progress");try{await downloadAndSaveReport$1(e.statementEndPoint,e.authParams,{...te,statementFileType:t})}finally{e.updateDownloadStateHandler("Completed"),l(null)}}};if("Error"===i.fetchState||"Error"===e.fetchState)/* @__PURE__ */
|
|
36385
36388
|
return jsxRuntimeExports.jsxs(ReloadPage$p,{"data-testid":generateDataTestId("report-page-error-reload-page"),children:[
|
|
36386
36389
|
/* @__PURE__ */jsxRuntimeExports.jsx(ReloadIconContainer$q,{"data-testid":generateDataTestId("report-page-error-reload-icon"),onClick:e.onReloadReport,children:/* @__PURE__ */jsxRuntimeExports.jsx(SvgReload,{})}),
|
|
36387
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(ReloadLabel$p,{children:
|
|
36388
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(DownloadButton,{isDisabled:null==
|
|
36390
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(ReloadLabel$p,{children:ne.failed})]});const ie=e.fetchState;if("Completed"===i.fetchState||"In-Progress"!==ie&&"Not-Started"!==ie){const o=/* @__PURE__ */jsxRuntimeExports.jsxs(NavBarRightRowStyled,{children:[
|
|
36391
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(DownloadButton,{isDisabled:null==te||null==e.dataAvailable,downloadReportOptions:{type:"simple_menu",downloadMenu:{simpleMenuItems:[{type:"excel",isDownloading:"excel"===s},{type:"pdf",isDownloading:"pdf"===s}],onDownloadClick:async e=>{if(null!=te&&null==s){if("pdf"===e){const e=te.balancesFilter.numberOfPeriods,t=te.additionalBalances.length;if(e+t>maxTimePeriods.pdf){const n=te.timeframe;return void d({numberOfPeriods:e,additionalColumnsCount:t,timeframe:"week"===n||"free_range"===n?void 0:n})}}await oe(e)}}}}}),
|
|
36389
36392
|
/* @__PURE__ */jsxRuntimeExports.jsx(AskAiCfoNavButtonWhenEnabled,{dataTestId:"reports-ask-ai-cfo-button",isAiCfoAccessEnabled:e.isAiCfoAccessEnabled,onAskAiCfoClick:e.onAskAiCfoClick})]}),i=/* @__PURE__ */jsxRuntimeExports.jsxs(NavBarRightSideContainer,{children:[g&&!b?/* @__PURE__ */jsxRuntimeExports.jsxs(CommentButtonContainer$1,{onClick:()=>v(!0),"data-testid":generateDataTestId("reports-page-comment-button"),children:[
|
|
36390
36393
|
/* @__PURE__ */jsxRuntimeExports.jsx(CommentsAndNotesCount,{count:y?void 0:R,isLoading:y,style:{left:"12px"}}),
|
|
36391
36394
|
/* @__PURE__ */jsxRuntimeExports.jsx(StyledCommentIcon$8,{})]}):null,o]});/* @__PURE__ */
|
|
36392
36395
|
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[
|
|
36393
36396
|
/* @__PURE__ */jsxRuntimeExports.jsxs(Container$5b,{children:[
|
|
36394
36397
|
/* @__PURE__ */jsxRuntimeExports.jsx(NavBar,{title:reports.title,showBackButton:!1,showBorderBottom:!1,backgroundColor:n.colors.grey4,onBackClick:e.onBackClick,showMenuIcon:"medium-compact"===t||"small"===t,onClickMenuIcon:r,rightSideComponent:i,downloadPresent:!0,source:"ReportsPage",hideSearchBtn:!0,style:{zIndex:12}}),
|
|
36395
|
-
/* @__PURE__ */jsxRuntimeExports.jsx(ReportsContent,{...e,onTreeNodesReady:k,treeRef:I})]}),g?/* @__PURE__ */jsxRuntimeExports.jsx(RoomProvider,{id:x,children:/* @__PURE__ */jsxRuntimeExports.jsx(AllThreadsDrawer,{isDrawerOpen:b,allowComposer:!0,drawerTitle:comments$9,threads:w,filter:E,autoExpand:!0,autoFocus:!1,isLoading:y,textOverrides:{composerPlaceholder:placeholder$3.addANewComment,replyComposerPlaceholder:placeholder$3.replyAComment,threadResolve:tooltip$2.resolveComment,threadUnResolve:tooltip$2.unResolveComment},threadMetadata:X,unavailableThreadIds:Z,onThreadClick:A,onCloseAllThreadsDrawer:()=>v(!1),drawerSectionStyle:{width:"small"===t?"100%":"400px",boxSizing:"small"===t?"border-box":"content-box"},collapsibleThreadStyle:{width:"small"===t?"100%":"360px"}})}):null,null!=c?/* @__PURE__ */jsxRuntimeExports.jsx(PdfColumnLimitPopup,{maxColumns:maxTimePeriods.pdf,numberOfPeriods:c.numberOfPeriods,additionalColumnsCount:c.additionalColumnsCount,timeframe:c.timeframe,onCancel:()=>d(null),onDownloadExcel:()=>{d(null),
|
|
36398
|
+
/* @__PURE__ */jsxRuntimeExports.jsx(ReportsContent,{...e,onTreeNodesReady:k,treeRef:I})]}),g?/* @__PURE__ */jsxRuntimeExports.jsx(RoomProvider,{id:x,children:/* @__PURE__ */jsxRuntimeExports.jsx(AllThreadsDrawer,{isDrawerOpen:b,allowComposer:!0,drawerTitle:comments$9,threads:w,filter:E,autoExpand:!0,autoFocus:!1,isLoading:y,textOverrides:{composerPlaceholder:placeholder$3.addANewComment,replyComposerPlaceholder:placeholder$3.replyAComment,threadResolve:tooltip$2.resolveComment,threadUnResolve:tooltip$2.unResolveComment},threadMetadata:J,pageLevelThreadIds:X,unavailableThreadIds:Z,onThreadClick:A,onCloseAllThreadsDrawer:()=>v(!1),drawerSectionStyle:{width:"small"===t?"100%":"400px",boxSizing:"small"===t?"border-box":"content-box"},collapsibleThreadStyle:{width:"small"===t?"100%":"360px"}})}):null,null!=c?/* @__PURE__ */jsxRuntimeExports.jsx(PdfColumnLimitPopup,{maxColumns:maxTimePeriods.pdf,numberOfPeriods:c.numberOfPeriods,additionalColumnsCount:c.additionalColumnsCount,timeframe:c.timeframe,onCancel:()=>d(null),onDownloadExcel:()=>{d(null),oe("excel")}}):null]})}/* @__PURE__ */
|
|
36396
36399
|
return jsxRuntimeExports.jsx(ReportsPageSkeleton,{})}const reportTabIds=["profit_and_loss","balance_sheet","cash_flow"],toAccountViewModeForReportId=e=>!1===isReportsPageReportId(e)?null:e.endsWith("_by_classes")?"classes":e.endsWith("_by_projects")?"project":"account_group",getReportFamily=e=>isBalanceSheetReport(e)?"balance_sheet":isCashFlowReport(e)?"cash_flow":"profit_and_loss";function ReportsContent(e){const t=useWindowSizeContext(),n=useTheme(),{selectedReportAndTimeframeFetchState:o}=e,i=useGlobalInfoContext(),r=null!=i&&hasInvestorBankerLevelAccess(i.loggedInUserRole)?"detailed":"more_detailed",a=null!=i&&hasInvestorBankerLevelAccess(i.loggedInUserRole)?["more_detailed"]:[],[s,l]=React__default.useState(a),c=prepareDownloadOptions$3(e),[d,p]=React__default.useState(c?.format??(s.includes("more_detailed")?"detailed":"more_detailed")),u=e.reportFormat;React__default.useEffect(()=>{p(u)},[u]);const m={selectedFormat:d,disabledFormatForRole:s,roleBasedClassesSelectedFormat:r,setDisabledFormatForRole:l,setSelectedFormat:p},h=isBalanceSheetReport(e.selectedReport),g=isCashFlowReport(e.selectedReport),x=h?e.balanceSheetClassesViewReport:g?e.cashFlowClassesViewReport:e.profitAndLossClassesViewReport,f=h?e.balanceSheetProjectViewReport:g?e.cashFlowProjectViewReport:e.profitAndLossProjectViewReport,y={cash_flow_by_classes:e.cashFlowClassesViewReport,cash_flow_by_projects:e.cashFlowProjectViewReport,balance_sheet_by_classes:e.balanceSheetClassesViewReport,balance_sheet_by_projects:e.balanceSheetProjectViewReport,profit_and_loss_by_projects:e.profitAndLossProjectViewReport},S=e.selectedReport in y?y[e.selectedReport]:e.profitAndLossClassesViewReport,C="In-Progress"===reduceAllFetchState([e.reportsResyncFetchState,S]).fetchState;/* @__PURE__ */
|
|
36397
36400
|
return jsxRuntimeExports.jsxs(ContentContainer$A,{windowSize:t,"data-testid":generateDataTestId("reports-page-content-container"),children:[
|
|
36398
36401
|
/* @__PURE__ */jsxRuntimeExports.jsx(ReportsPagePerformanceTracker,{reportId:e.selectedReport,fetchState:e.fetchState}),
|
|
@@ -104553,4 +104556,4 @@ return jsxRuntimeExports.jsx(ModalContainer,{children:/* @__PURE__ */jsxRuntimeE
|
|
|
104553
104556
|
`,StyledButton=styled$2(Button$4)`
|
|
104554
104557
|
min-width: 140px;
|
|
104555
104558
|
`;export{BillPayApprovalRuleDetailPage as $,AIAgentsActivatingPage as A,AiCfoScopeModalScrollBody as B,AiCfoSidePanel as C,AiCfoSkillsBrowser as D,AiFinanceTeamReadyPage as E,AllThreadsDrawer as F,AllThreadsSection as G,AllowBlockChipPicker as H,AnalyticsOnLoad as I,ApAgingDetailPage as J,AppBasePage as K,AppDrawerContent as L,AppDrawerHeightMobile as M,ApprovalRulesSettingsPage as N,ArAgingDetailPage as O,AskAiCfoNavButton as P,AskAiCfoNavButtonWhenEnabled as Q,AttachmentView as R,AutoSizer as S,AutoTransferRulePage as T,AvatarSVG$1 as U,BORDER_RADIUS_SELECT_FIELD as V,BackNavigationProvider as W,BankConnectionsSettingsPage as X,BillDetailPage as Y,BillDetailPageSkeleton as Z,BillPayApprovalRuleDetailPage$1 as _,AIIconButton as a,CompanyPassportPage as a$,BillPayApprovalRulesPage$1 as a0,BillPayApprovalRulesPage as a1,BillPayPromoPage as a2,BillPaySetUpPage as a3,BillingSettingsPage as a4,BillsBulkReviewDrawerPage as a5,BusinessVerificationPage as a6,BusyIndication as a7,Button$4 as a8,ButtonBase as a9,ChargeCardListSkeletonRow as aA,ChargeCardPaymentHistoryPage as aB,ChargeCardPromoPage as aC,ChargeCardPromoPageSkeleton as aD,ChargeCardSetUpPage as aE,ChargeCardStatementsLoading as aF,ChargeCardStatementsPage as aG,ChargeCardUserOnboardingPromoPage as aH,ChargeCardUserOnboardingPromoPageSkeleton as aI,CheckDepositDrawerPage as aJ,Checkbox as aK,CircleWithAttachmentSuccessIcon as aL,CircularProgress as aM,ClickAwayListener as aN,ClickableRow as aO,CollaborationGlobalStyles as aP,CollaborationProvider as aQ,CollaborationRoomProvider as aR,Color$1 as aS,Colors as aT,CombinationOperatorButton as aU,CommentsAndNotesCount as aV,CommentsDrawerProvider as aW,CommonDot as aX,CompanyOfficerOnboardingDetailsSection as aY,CompanyOnboardingDetailsSection as aZ,CompanyPassportCard as a_,CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT as aa,CARD_POLICY_LIMIT_ROW_ID_TRANSACTION as ab,COMMAND_CENTER_SUBMENU_TYPES as ac,COMMENTS_DRAWER_MAXIMUM_WIDTH as ad,COMMENTS_SECTION_MINIMUM_WIDTH as ae,COMMENT_NOTIFICATION_KINDS as af,CapitalizationOnboardingPopup as ag,CapitalizationSettingsSection as ah,CardPolicyCreatePage as ai,CardPolicyEditPage as aj,CardPolicyFormPageSkeleton as ak,CardPolicyFormSections as al,CardPolicyListPage as am,CardPolicyListPageSkeleton as an,CardPolicyListRow as ao,CardPolicyListSkeletonRow as ap,CardPolicyManualEmptyState as aq,CardsAiCfoHero as ar,CardsShutdownBanner as as,CashbackDetailLoading as at,CashbackDetailPage as au,ChargeCardCVVActivate as av,ChargeCardDetailLoading as aw,ChargeCardDetailPage as ax,ChargeCardListLoading as ay,ChargeCardListPage as az,AIPerformancePage as b,FieldHelpProvider as b$,CompleteProfile as b0,ConfettiBurst as b1,ConfirmationPopUpDescription$2 as b2,ConfirmationPopUpTitle$3 as b3,ConfirmationPopup as b4,ConnectDataSourcesPage as b5,ContentLoaderSkeleton$1 as b6,ControlledComponent as b7,Controller as b8,CreateOrEditVendorPage as b9,EditReimbursementDetailPage as bA,EditableBillDetailPage as bB,Editor as bC,EmptySearchResults as bD,EntityAvatar as bE,EntityAvatarWithInitials as bF,EntityDetailPage as bG,ErrorBoundaryWrapper as bH,ExcludedAccountReconDetailsDrawerPage as bI,ExpenseAutomationOverviewPage as bJ,ExpenseAutomationOverviewPageSkeleton as bK,ExpenseAutomationPage as bL,ExpressPayPage as bM,ExtraLargeMedium as bN,ExtraLargeRegular as bO,ExtraLargeSemiBold as bP,ExtraSmallBoldSp as bQ,ExtraSmallRegular as bR,ExtraSmallRegularSp as bS,ExtraSmallSemiBold as bT,ExtraSmallSemiBoldSp as bU,EyebrowSmallSemiBoldSp as bV,FORM_MINIMUM_WIDTH as bW,FeatureGatesNames as bX,FeaturePreviewPage as bY,FeatureProvider as bZ,FieldHelpIcon as b_,CreateOrEditVendorPageSkeleton as ba,CreatedEntitiesAnswer as bb,CreatingEntitiesAnswerLoading as bc,CreditCardPaymentDrawerPage as bd,CustomerOnboardingContainerPage as be,CustomerOnboardingNoStepsPage as bf,CustomerOnboardingPage as bg,CustomerOnboardingProductSuitePage as bh,DIGITS_PATTERN as bi,DOMAIN_PATTERN as bj,Dashboard as bk,DashboardReportPage as bl,DashboardSidebarLogoAnimation as bm,DataListTable as bn,DataListTableHeader as bo,DataListTableRow as bp,DataListTableSortIndicator as bq,DateRangeFilterField as br,DebitCardSetPin as bs,Drawer as bt,DrawerPage as bu,DropdownOption$1 as bv,DropdownPortalContext as bw,DynamicConfigNames as bx,EMPTY_HTML_CHECKER as by,EditPeoplePage as bz,ALL_AI_CFO_MENU_OPTIONS as c,InvoicingInvoiceDetailPage as c$,FileAttachment as c0,FileInputElement as c1,FiltersPopover as c2,FirstReviewVendorDetailPage as c3,FixedSizeList as c4,FloatingThreads as c5,FontWeight as c6,Footer$7 as c7,FormProvider as c8,GlobalInfoProvider as c9,InvoicingAuditLogPage as cA,InvoicingBrandingSettingsPage as cB,InvoicingCatalogItemDetailPage as cC,InvoicingCatalogItemFormPage as cD,InvoicingCatalogPage as cE,InvoicingCouponFormPage as cF,InvoicingCreateInvoicePage as cG,InvoicingCreateInvoiceSkeleton as cH,InvoicingCreatePromotionalCreditsDialog as cI,InvoicingCreditDetailPage as cJ,InvoicingCreditListPage as cK,InvoicingCustomerDetailPage as cL,InvoicingCustomerFormPage as cM,InvoicingCustomerListPage as cN,InvoicingDashboardSkeleton as cO,InvoicingDataImportDetailPage as cP,InvoicingDataImportHubPage as cQ,InvoicingDataImportMigratePage as cR,InvoicingDetailScaffold as cS,InvoicingDiscountDetailPage as cT,InvoicingDiscountListPage as cU,InvoicingDunningDetailPage as cV,InvoicingDunningEmailComposerDialog as cW,InvoicingDunningListPage as cX,InvoicingDunningSettingsPage as cY,InvoicingEmptyState as cZ,InvoicingIntegrationsSettingsPage as c_,GlobalReviewListPage as ca,H5Regular as cb,H6Regular as cc,INPUT_BG_COLOR as cd,INPUT_BORDER_COLOR_SELECT_FIELD as ce,INPUT_COLOR as cf,INPUT_ERROR_BG_COLOR as cg,INPUT_HOVER_FOCUS_COLOR as ch,INPUT_PLACEHOLDER_COLOR as ci,INVOICING_SETTINGS_NAV_SECTIONS as cj,INVOICING_SETTINGS_TABS as ck,InfiniteLoader as cl,InformationCardStack as cm,InitialCollaborationProvider as cn,InsightCardStack as co,IntegrationCardView as cp,IntegrationsCardGrid as cq,IntegrationsSection as cr,IntegrationsSettingsPage as cs,InternationalWireVerificationPage as ct,InviteFormPage as cu,InvitePageListView as cv,InvitePeoplePage as cw,InvoiceUploadSection as cx,InvoiceUploadSectionSkeleton as cy,InvoicingAddPaymentMethodDialog as cz,ALL_INVOICING_MENU_GROUPS as d,MonthCalendar as d$,InvoicingInvoiceListPage as d0,InvoicingIssueCreditNotePage as d1,InvoicingOverviewPage as d2,InvoicingPaymentDestinationSettingsPage as d3,InvoicingPaymentLinkEmailComposerDialog as d4,InvoicingPaymentLinkPage as d5,InvoicingPaymentListPage as d6,InvoicingPromoPage as d7,InvoicingQBOSettingsPage as d8,InvoicingRecordPaymentPage as d9,LargeRegular as dA,LargeRegularA as dB,LargeRegularLabel as dC,LargeRegularSp as dD,LargeRegularTA as dE,LargeSemiBold as dF,LinkBillExpensePage as dG,LinkJETransactionPage as dH,ListTableSkeleton as dI,Loader as dJ,LogoutButton as dK,Lottie as dL,MCC_CHIP_ID_PREFIX as dM,MEETING_LINK_DEFAULTS as dN,MENU_BG_COLOR as dO,MONTH_END_EDITOR_PLACEHOLDER as dP,MONTH_END_EMAIL_BODY_SECTION as dQ,MONTH_END_EMAIL_EDITOR_SECTION as dR,MONTH_END_EMAIL_HEADER_SECTION as dS,MONTH_END_REPORT_CANVAS as dT,MagicLinkDomesticWireDetailsPage as dU,MagicLinkInternationalWireDetailsPage as dV,MagicLinkSuccessPage as dW,MagicLinkVendorACHDetailsPage as dX,MatchingOperatorDropdown as dY,Modal as dZ,Modal$1 as d_,InvoicingSettingsHubPage as da,InvoicingSubscriptionDetailPage as db,InvoicingSubscriptionFormPage as dc,InvoicingSubscriptionListPage as dd,InvoicingTransactionDetailPage as de,InvoicingVoidInvoiceDialog as df,IssueChargeCardPage as dg,IssueChargeCardPageSkeleton as dh,ItemWithButton as di,JEOneTimeAccrualDetailPage as dj,Label$f as dk,LabeledDatePickerField as dl,LabeledGroupedMultiSelectField as dm,LabeledItemWithButton as dn,LabeledNameField as dp,LabeledRadioField as dq,LabeledReadOnlyTextField as dr,LabeledSingleSelectNumericField as ds,LabeledSingleSelectPickerField as dt,LabeledSingleSelectWithoutClearableField as du,LabeledTextField as dv,LabeledUnSafeCheckBoxField as dw,LargeBoldSp as dx,LargeMedium as dy,LargeMediumSp as dz,ALL_INVOICING_MENU_OPTIONS as e,ScheduleDetailSkeleton as e$,MonthEndEmailDrawerCustomerRequestPage as e0,MonthEndReportCustomerRequestSection as e1,MonthEndReportSection as e2,MoreMenuButton$1 as e3,MyBankConnectionsSettingsPage as e4,MyPendingActivationChargeCardListPage as e5,MyProfileSettingsPage as e6,NEW_CATEGORY_BODY$2 as e7,NEW_THREAD_SUFFIX as e8,NavBar as e9,PolicyModeSelector as eA,Popover as eB,PortfolioAllocationFormPage as eC,PropTypes as eD,QBOConnectionDialog as eE,QBOSetupSectionWithForm as eF,QuickResponsesPage as eG,QuickViewModeContext as eH,REALM_ID as eI,RIGHT_SIDE_PANEL_WIDTH_PX as eJ,RecommendationFeedbackPopup as eK,ReimbursementApprovalRuleDetailPage$1 as eL,ReimbursementApprovalRuleDetailPage as eM,ReimbursementApprovalRulesPage$1 as eN,ReimbursementApprovalRulesPage as eO,ReimbursementDetailPage as eP,ReimbursementDetailPageSkeleton as eQ,ReimbursementPromoPage as eR,ReimbursementsBulkReviewDrawerPage as eS,ReloadContainer as eT,RemiSetupPage as eU,ReportsPage as eV,ResponsiveSized as eW,ResponsiveSizedStyle as eX,ReviewBillDetailsPage as eY,ReviewConfirmTransferPanel as eZ,ReviewDetailsPageSkeleton as e_,NavBarRightRowStyled as ea,NavBarWithClose as eb,NewGlobalMerchantPage as ec,NewUpdateAvailablePage as ed,NotFoundPage as ee,NotificationSettingsPage as ef,NotificationsPage as eg,OAuthConsentPage as eh,OPTION_BG_COLOR as ei,OPTION_DISABLED_BG_COLOR as ej,OPTION_HOVER_FOCUS_BG_COLOR as ek,OPTION_LABEL_COLOR as el,OPTION_LABEL_DISABLED_COLOR as em,OPTION_LABEL_HOVER_FOCUS_COLOR as en,OnboardingInitialLoader as eo,OnboardingSidebar as ep,OnboardingStepFrame as eq,OpExByVendorPage as er,OverlayContainerPage as es,PandLWithForecastPage as et,PanelDirtyGuardContext as eu,PanelInternalContext as ev,PaymentAccountSetupBillingAddressSection as ew,PeoplePage as ex,Picker as ey,PolicyLimitsRowList as ez,ALL_SETTINGS_MENU_OPTIONS as f,SvgClock as f$,ScheduleDetailsAccruedExpensesPage as f0,ScheduleDetailsFixedAssetsPage as f1,ScheduleDetailsPage as f2,SearchBoxWithFilterButton as f3,SearchableCheckboxCardList as f4,SessionTimeoutPopup as f5,SidePanelContext as f6,SidePanelLayout$1 as f7,SidePanelProvider as f8,SignIn as f9,StandardRegularLabel as fA,StandardRegularLi as fB,StandardRegularSp as fC,StandardSemiBold as fD,StandardSemiBoldSp as fE,StateManagedSelect$1 as fF,StatementParseInfoEntry as fG,StatementProcessingPage as fH,StatementsPage as fI,StickyThread as fJ,StyledCapsule as fK,StyledCheckBox$1 as fL,StyledText$c as fM,SubscriptionDetailPage as fN,SubscriptionSnackBar as fO,SubscriptionSummaryPage as fP,SvgAddRound as fQ,SvgAiIcon as fR,SvgAlert as fS,SvgArrowBottom as fT,SvgArrowCircleBottom as fU,SvgArrowFilledBottom as fV,SvgArrowLeft as fW,SvgArrowRight as fX,SvgArrowTailRight as fY,SvgArrowTailTop as fZ,SvgAvatar as f_,SimpleDownloadMenuButton as fa,SingleSelectNumeric as fb,SingleSelectPickerField as fc,SingleSelectWithoutClearableField as fd,SmallMedium as fe,SmallMediumBtn as ff,SmallMediumSp as fg,SmallRegular as fh,SmallRegularA as fi,SmallRegularBtn as fj,SmallRegularInput as fk,SmallRegularP as fl,SmallRegularSp as fm,SmallRegularUl as fn,SmallSemiBoldSp as fo,SomethingWrongPage as fp,Space as fq,SpendManagementListLoading as fr,SpendManagementListViewPage as fs,SpendManagementSetUpLoading as ft,StandardBold as fu,StandardMedium as fv,StandardMediumA as fw,StandardMediumSp as fx,StandardMediumTA as fy,StandardRegular as fz,ALPHA_NUMERIC_PATTERN as g,VENDOR_CHIP_ID_PREFIX as g$,SvgClose as g0,SvgCloseRound as g1,SvgComment as g2,SvgCompanyDetails as g3,SvgDelete as g4,SvgDoubleTick as g5,SvgEdit as g6,SvgEmail as g7,SvgFlag as g8,SvgHighImportance as g9,TextStyle as gA,ThreadComponent as gB,ThreadDotComponent as gC,ThreadsContext as gD,ToolkitProvider as gE,Tooltip$6 as gF,TopExDetailPage as gG,TransactionActivityLogPage as gH,TransactionActivityLogPanel as gI,TransactionDetailPage as gJ,TransactionDetailSkeleton as gK,TransactionListBig as gL,TransactionListComments as gM,TransactionListPage as gN,TransactionVendorDetailPage as gO,TransferDrawerPage as gP,TreasuryOverviewPage as gQ,TreasuryPromoPage as gR,TreasurySetUpPage as gS,TreasuryStatementsPage as gT,TreasuryTaxLetterPage as gU,TreasuryTransferOrReviewPage as gV,TrendChart as gW,UncategorizedAccountsMappingPage as gX,UnitIntegrationPage as gY,UserMultiSelectField as gZ,UserWithTimestamp as g_,SvgHighImportanceFill as ga,SvgHighImportanceFilled as gb,SvgInfinite as gc,SvgInfo as gd,SvgIntuitQuickBooksLogo as ge,SvgLoader as gf,SvgMore as gg,SvgNotification as gh,SvgOpenLink as gi,SvgPlayButtonSmall as gj,SvgQueryRound as gk,SvgRefresh as gl,SvgReload as gm,SvgSearch as gn,SvgTick as go,SvgTickRound as gp,SvgTickRoundFill as gq,SvgWarning as gr,SvgZeniLogoFull as gs,SyntheticAiCfoAnswerView as gt,THREAD_RESOLVED_NOTIFICATION_KIND as gu,THREAD_UNRESOLVED_NOTIFICATION_KIND as gv,TaskDetailPage as gw,TaskManagementPage as gx,TenantsDropDown as gy,TextHighlightSection as gz,APP_DRAWER_CONTENT_WIDTH_PX as h,debounce as h$,VariableSizeList as h0,Vendor2FAPopup as h1,VendorACHDetailsPage as h2,VendorAccruedSchedulesPage as h3,VendorDetailPage as h4,VendorDomesticWireDetailsPage as h5,VendorFiling1099DetailsEditablePage as h6,VendorFiling1099EditableFormSkeleton as h7,VendorFiling1099ListPage as h8,VendorFirstReviewPage as h9,appLocale as hA,applyExtractedPolicyRulesToFormValues as hB,base64FileSize as hC,buildBulkCreateCardPolicyTemplateRequestsFromInteractiveForm as hD,buildCardPolicyFormValuesFromRequest as hE,buildCreateCardPolicyTemplateRequest as hF,buildCreateCardPolicyTemplateRequestFromInteractiveForm as hG,buildMccCategoryChipId as hH,buildStickyKeySet as hI,buildVendorChipId as hJ,capitaliseWords as hK,capitalize as hL,cellVerticalAlignToFlexAlign as hM,clearAutoLogoutContext as hN,clickableRowStyles as hO,cloneDeep as hP,clsx$1 as hQ,components as hR,composeClasses as hS,computeRecommendationSelectionFeedback as hT,computeStatementProcessingStepsFromElapsedTime as hU,computeStickyLeftOffsets as hV,createSvgIcon as hW,currencyAmountCompactFormatter as hX,darkColors as hY,darkTheme as hZ,debounce$1 as h_,VendorInternationalSwiftBasedDetailsPage as ha,VendorInternationalWireDetailsPage as hb,VendorListPage as hc,VendorSchedulesPage as hd,VerificationFrame as he,VerifyDevice as hf,VerifyUnlockFinancialStackPage as hg,WebV2MicroService as hh,WebV2MicroServiceProvider as hi,WelcomeAnimation as hj,WindowSizeProvider as hk,ZeniAccountDetailLoading as hl,ZeniAccountDetailNavBarTitleShimmer as hm,ZeniAccountDetailPage as hn,ZeniAccountListLoading as ho,ZeniAccountListViewPage as hp,ZeniAccountPromoPage as hq,ZeniAccountSetUpPage as hr,ZeniAvatar as hs,ZeniDatePickerField as ht,ZeniText as hu,ZeniThemeProvider as hv,activeElement as hw,alignToJustify$1 as hx,amountToString as hy,amountValueToString as hz,AccountInfoPage as i,menuList as i$,defaultCardPolicyFormValues as i0,defer as i1,describeSchedule as i2,designDimension as i3,fetchRequest as i4,fileDownload as i5,formHasDirtyFields as i6,formatReconAccountDisplayName as i7,generateDataTestId as i8,generateUtilityClass as i9,getShowNegativeAmountInParenthesisForPercentDefaultValue as iA,getStableTransactionId as iB,getStatementParseTransactionCount as iC,getTagLabel as iD,getTemplatesFromTemplatedData as iE,getTransactionAppliedFiltersCount as iF,getTransactionTagColor$1 as iG,getUpdatedFiltersOnCategoryChange$1 as iH,getUpdatedFiltersOnMatchingOperatorChange$1 as iI,getUpdatedFiltersOnValueChange$1 as iJ,has as iK,hasAgentInsights as iL,invoicingMenuList as iM,isCloseManagementMenu as iN,isClosedCardStatus as iO,isCollaborationEntityType as iP,isCommentNotificationKind as iQ,isEqual$5 as iR,isLayoutSupported as iS,isMobileOrTabletView as iT,isMobilePhoneScreen as iU,isRecommendationFeedbackDimension as iV,isZeniAIUser as iW,jsxRuntimeExports as iX,lightColors as iY,lightTheme as iZ,memoTheme as i_,generateUtilityClasses as ia,getAlpha2 as ib,getAlpha3 as ic,getCockpitColor as id,getColorForALabel as ie,getCountries$1 as ig,getCustomerDataFromAutoComplete as ih,getDefaultExportFromCjs as ii,getDropdownStyles$1 as ij,getFileNameFromResponseHeaders as ik,getFilteredThreads as il,getFullName$1 as im,getHTMLWithCommentingSections as io,getHistoricMonthsList as ip,getInitialOpenThreadRequestFromSearch as iq,getLabelColor as ir,getMonthIndex as is,getMultiSelectDropdownStyles as it,getRecipientTotalAmount as iu,getReconAccountDisplayName as iv,getReviewVendorTagColor as iw,getRichLabel as ix,getSelectionData as iy,getShowNegativeAmountInParenthesisDefaultValue as iz,AccountLockedInfoModal as j,useLockBodyScroll as j$,mergeColumnDeclarativeWithRenderers as j0,mergeLayoutDefaults as j1,nanoid as j2,ownerDocument as j3,ownerWindow as j4,percentValueToString as j5,reactIsExports$1 as j6,refType as j7,requireToInteger as j8,requireToString as j9,toMccCategoryChipFieldValue as jA,toMenuOptionType as jB,toSettingsMenuOptionTypeStrict as jC,toSupportedLocaleStrict as jD,toVendorChipFieldValue as jE,trackTreasuryTransferAnalytics as jF,uploadAttachmentReceipts as jG,useAgentInsightEdits as jH,useAnimation as jI,useApprovalRulesV3Config as jJ,useBackNavigation as jK,useCollaborationInfoContext as jL,useCommentsDrawer as jM,useDefaultProps as jN,useDelayUnmount as jO,useDropdownPortal as jP,useEnhancedEffect as jQ,useEventCallback as jR,useExpenseAutomationEnabledForUser as jS,useFieldArray as jT,useFieldHelp as jU,useFilteredThreads as jV,useFloatingThreads as jW,useForm as jX,useFormContext as jY,useGlobalInfoContext as jZ,useHandleSelection as j_,require_baseProperty as ja,require_baseToString as jb,require_castSlice as jc,require_hasUnicode as jd,require_stringToArray as je,resolveBackgroundStatementProcessingCompletedSteps as jf,resolveColumnWidth as jg,roundAmountIfNeeded as jh,roundOffNumberToTwoDecimal as ji,routineIdFromSession as jj,scrollContainerToTargetAdjusted as jk,setAutoLogoutContext as jl,setShowNegativeAmountInParenthesisDefaultValue as jm,setShowNegativeAmountInParenthesisForPercentDefaultValue as jn,settingMenuList as jo,shortCadence as jp,sp as jq,styled as jr,textAlignForCell as js,textStyles as jt,toCollaborationEntityType as ju,toGroupedAccountingClassOptions as jv,toGroupedQboAccountOptions as jw,toInstitutionLogoDataUri as jx,toInvoicingMenuOptionType as jy,toInvoicingMenuOptionTypeStrict as jz,AccountReconDetailsDrawerPage$1 as k,useMeetingLinks as k0,usePanelDirtyGuardRegistry as k1,usePanelInternal as k2,usePrevious$1 as k3,useQuickViewMode as k4,useRegisterBackHandler as k5,useRegisterPanelDirtyGuard as k6,useRequestCloseAllCommentDrawers as k7,useRtl as k8,useSessionAutoLogoutConfig as k9,useSidePanelContext as ka,useSlot as kb,useSlotProps as kc,useTheme as kd,useToolkitContext as ke,useWindowSizeContext as kf,useZeniCardsVisibilityConfig as kg,useZeniFeatureContext as kh,useZeniThemeContext as ki,waitFor as kj,AccountReconDetailsDrawerPage as l,ActivityIndicator as m,ActualMatchingMatchDetailPage as n,AddAddressForCardDrawer as o,AddThreadFloating as p,AddThreadsComponent as q,AddToWalletPage as r,AddressFormPage as s,AgentInsightsEditor as t,AgingReportsPage as u,AiCfoChatHeader as v,AiCfoMenuContent as w,AiCfoOnboardingPage as x,AiCfoPage as y,AiCfoScopeModal as z};
|
|
104556
|
-
//# sourceMappingURL=SessionTimeoutPopup-
|
|
104559
|
+
//# sourceMappingURL=SessionTimeoutPopup-C4j8wdBe.js.map
|