From 58f400abb46081b985f09db8e7b1533875eec1e7 Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Date: Tue, 11 Aug 2026 21:31:43 +0530 Subject: [PATCH 01/10] Add Payer search filter UI, table column, sorting, and export The payer filter is now shown in the advanced filters and filter bar as a multi-select user filter, and a Payer column is available on expense report search views. The column is derived from the actor of the latest payment report action returned in the search snapshot, matching how First approver is derived, and is sortable and exportable. --- src/CONST/index.ts | 2 + .../FilterComponents/ListFilterContent.tsx | 1 + .../ExpenseReportListItemRowWide.tsx | 12 ++++++ .../Search/SearchList/ListItem/types.ts | 9 ++++ .../SearchPageHeader/SearchFilterBar.tsx | 1 + src/components/Search/SearchTableHeader.tsx | 4 ++ src/hooks/useAdvancedSearchFilters.ts | 4 ++ src/languages/de.ts | 1 + src/languages/el.ts | 1 + src/languages/en.ts | 1 + src/languages/es.ts | 1 + src/languages/fr.ts | 1 + src/languages/it.ts | 1 + src/languages/ja.ts | 1 + src/languages/nl.ts | 1 + src/languages/pl.ts | 1 + src/languages/pt-BR.ts | 1 + src/languages/zh-hans.ts | 1 + src/libs/SearchQueryUtils.ts | 8 ++-- src/libs/SearchUIUtils.ts | 42 ++++++++++++++++++- src/styles/utils/index.ts | 1 + src/types/form/SearchAdvancedFiltersForm.ts | 5 ++- tests/unit/Search/ColumnAvailabilityTest.ts | 1 + tests/unit/Search/SearchUIUtilsTest.ts | 12 ++++++ 24 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index bbe931886fab..7eb6f7960ade 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -7115,6 +7115,7 @@ const CONST = { APPROVED: this.TABLE_COLUMNS.APPROVED, FIRST_APPROVER: this.TABLE_COLUMNS.FIRST_APPROVER, FIRST_APPROVED: this.TABLE_COLUMNS.FIRST_APPROVED, + PAYER: this.TABLE_COLUMNS.PAYER, EXPORTED: this.TABLE_COLUMNS.EXPORTED, STATUS: this.TABLE_COLUMNS.STATUS, PAID_STATUS: this.TABLE_COLUMNS.PAID_STATUS, @@ -7309,6 +7310,7 @@ const CONST = { APPROVED: 'approved', FIRST_APPROVER: 'firstapprover', FIRST_APPROVED: 'firstapproved', + PAYER: 'payer', POSTED: 'posted', EXPORTED: 'exported', MERCHANT: 'merchant', diff --git a/src/components/Search/FilterComponents/ListFilterContent.tsx b/src/components/Search/FilterComponents/ListFilterContent.tsx index 2043570dfddb..ee0d6103c927 100644 --- a/src/components/Search/FilterComponents/ListFilterContent.tsx +++ b/src/components/Search/FilterComponents/ListFilterContent.tsx @@ -218,6 +218,7 @@ function ListFilterContent({ case CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE: case CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE: case CONST.SEARCH.SYNTAX_FILTER_KEYS.TO: + case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER: case CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM: { content = ( ), + [CONST.SEARCH.TABLE_COLUMNS.PAYER]: ( + + {!!item.payerAccountID && ( + + )} + + ), [CONST.SEARCH.TABLE_COLUMNS.EXPORTED]: ( >> = { [CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM]: UserDropdown, [CONST.SEARCH.SYNTAX_FILTER_KEYS.TO]: UserDropdown, + [CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER]: UserDropdown, [CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE]: UserDropdown, [CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE]: UserDropdown, diff --git a/src/components/Search/SearchTableHeader.tsx b/src/components/Search/SearchTableHeader.tsx index 7ad5f30bf746..c7000a403115 100644 --- a/src/components/Search/SearchTableHeader.tsx +++ b/src/components/Search/SearchTableHeader.tsx @@ -269,6 +269,10 @@ const getExpenseReportHeaders = (profileIcon?: IconAsset): SearchColumnConfig[] columnName: CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVED, translationKey: 'search.filters.firstApproved', }, + { + columnName: CONST.SEARCH.TABLE_COLUMNS.PAYER, + translationKey: 'search.filters.payer', + }, { columnName: CONST.SEARCH.TABLE_COLUMNS.EXPORTED, translationKey: 'search.filters.exported', diff --git a/src/hooks/useAdvancedSearchFilters.ts b/src/hooks/useAdvancedSearchFilters.ts index 2c23c6064fdb..cd5c73d72a4d 100644 --- a/src/hooks/useAdvancedSearchFilters.ts +++ b/src/hooks/useAdvancedSearchFilters.ts @@ -31,6 +31,7 @@ const typeFiltersKeys = { CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID, ], [ @@ -81,6 +82,7 @@ const typeFiltersKeys = { CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID, ], [ @@ -111,6 +113,7 @@ const typeFiltersKeys = { CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID, ], [ @@ -151,6 +154,7 @@ const typeFiltersKeys = { CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID, ], [ diff --git a/src/languages/de.ts b/src/languages/de.ts index 74c0c7069f53..3d2c31533b65 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -9045,6 +9045,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc approved: 'Genehmigt', firstApprover: 'Erste:r Genehmiger:in', firstApproved: 'Zuerst genehmigt', + payer: 'Zahler', paid: 'Bezahlt', exported: 'Exportiert', posted: 'Gebucht', diff --git a/src/languages/el.ts b/src/languages/el.ts index 5acfee2009dc..f63d2fa62aa4 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -9269,6 +9269,7 @@ ${reportName}`, approved: 'Εγκρίθηκε', firstApprover: 'Πρώτος εγκρίνων', firstApproved: 'Πρώτη έγκριση', + payer: 'Πληρωτής', paid: 'Πληρωμένο', exported: 'Έγινε εξαγωγή', posted: 'Καταχωρισμένο', diff --git a/src/languages/en.ts b/src/languages/en.ts index ff3ac928f216..9bae63f2a456 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -9186,6 +9186,7 @@ const translations = { approved: 'Approved', firstApprover: 'First approver', firstApproved: 'First approved', + payer: 'Payer', paid: 'Paid', exported: 'Exported', posted: 'Posted', diff --git a/src/languages/es.ts b/src/languages/es.ts index 89b8f84db77c..3f3051b420fe 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -8908,6 +8908,7 @@ El plan Controlar empieza en 9 $ por miembro activo al mes.`, approved: 'Aprobación', firstApprover: 'Primer aprobador', firstApproved: 'Primera aprobación', + payer: 'Pagador', paid: 'Pago', exported: 'Exportación', posted: 'Contabilización', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 1b3923a12895..b2164ab4a589 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -9081,6 +9081,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e approved: 'Approuvé', firstApprover: 'Premier approbateur', firstApproved: 'Approuvé en premier', + payer: 'Payeur', paid: 'Payé', exported: 'Exporté', posted: 'Publié', diff --git a/src/languages/it.ts b/src/languages/it.ts index ff0a26d51c9f..f686984b590b 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -9017,6 +9017,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, approved: 'Approvato', firstApprover: 'Primo approvatore', firstApproved: 'Approvato per primo', + payer: 'Pagatore', paid: 'Pagato', exported: 'Esportato', posted: 'Pubblicato', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index e8f52def1588..111d09a7420f 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -8905,6 +8905,7 @@ ${reportName}`, approved: '承認済み', firstApprover: '最初の承認者', firstApproved: '最初に承認済み', + payer: '支払者', paid: '支払い済み', exported: 'エクスポート済み', posted: '投稿日', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 9bdb2bd6bf55..ab5262d25813 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -8989,6 +8989,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, approved: 'Goedgekeurd', firstApprover: 'Eerste gemachtigde', firstApproved: 'Eerst goedgekeurd', + payer: 'Betaler', paid: 'Betaald', exported: 'Geëxporteerd', posted: 'Gepost', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 5c0f5025d1cb..1d5867fb5345 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -8966,6 +8966,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, approved: 'Zatwierdzono', firstApprover: 'Pierwszy zatwierdzający', firstApproved: 'Najpierw zatwierdzono', + payer: 'Płatnik', paid: 'Zapłacono', exported: 'Wyeksportowano', posted: 'Opublikowano', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index a6f375015053..906f91ddb2fb 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -8984,6 +8984,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, approved: 'Aprovado', firstApprover: 'Primeira pessoa aprovadora', firstApproved: 'Primeira aprovada', + payer: 'Pagador', paid: 'Pago', exported: 'Exportado', posted: 'Publicado', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index d8933b998f44..89c291eb318b 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -8670,6 +8670,7 @@ ${reportName}`, approved: '已批准', firstApprover: '首位审批人', firstApproved: '首次批准', + payer: '付款人', paid: '已支付', exported: '已导出', posted: '已发布', diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index 4aca2276c5d9..5a1ab4846862 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -928,7 +928,6 @@ function buildQueryStringFromFilterFormValues(filterValues: Partial (id === CONST.SEARCH.ME && currentUserAccountID ? currentUserAccountID.toString() : id)); filtersForm[addNegation(filterKey, isNegated)] = resolvedValues.filter((id) => personalDetails?.[id]); @@ -1419,9 +1420,6 @@ function buildFilterFormValuesFromQuery( filtersForm[addNegation(filterKey, isNegated)] = filterValues.filter((value) => exportedToValues.has(value)); } - if (filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER) { - filtersForm[addNegation(filterKey, isNegated)] = filterValues.find((id) => personalDetails?.[id]); - } if (filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.CURRENCY || filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.PURCHASE_CURRENCY) { filtersForm[addNegation(filterKey, isNegated)] = filterValues.filter((currency) => validCurrencies.has(currency)); } diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 0877f34161db..9e23344f4641 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -337,6 +337,7 @@ const expenseReportColumnNamesToSortingProperty: ExpenseReportSorting = { [CONST.SEARCH.TABLE_COLUMNS.APPROVED]: 'approved' as const, [CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVER]: 'formattedFirstApprover' as const, [CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVED]: 'firstApproved' as const, + [CONST.SEARCH.TABLE_COLUMNS.PAYER]: 'formattedPayer' as const, [CONST.SEARCH.TABLE_COLUMNS.EXPORTED]: 'exported' as const, [CONST.SEARCH.TABLE_COLUMNS.STATUS]: 'formattedStatus' as const, [CONST.SEARCH.TABLE_COLUMNS.PAID_STATUS]: 'formattedPaidStatus' as const, @@ -677,7 +678,6 @@ const SKIPPED_SEARCH_FILTERS = new Set([ FILTER_KEYS.LIMIT, FILTER_KEYS.TYPE, FILTER_KEYS.VIEW, - FILTER_KEYS.PAYER, FILTER_KEYS.ACTION, FILTER_KEYS.COLUMNS, FILTER_KEYS.KEYWORD, @@ -858,7 +858,7 @@ function getSuggestedSearches( type: CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT, action: CONST.SEARCH.ACTION_FILTERS.PAY, reimbursable: CONST.SEARCH.BOOLEAN.YES, - payer: accountID?.toString(), + payer: [`${accountID}`], }), get searchQueryJSON() { return buildSearchQueryJSON(this.searchQuery); @@ -1842,6 +1842,7 @@ type PreprocessingContext = { lastExportedActionByReportID: Map; exportedToNamesByReportID: Map>; firstApprovedActionByReportID: Map; + lastReimbursedActionByReportID: Map; moneyRequestReportActionsByTransactionID: Map; holdReportActionsByTransactionID: Map; allHoldReportActions: Map; @@ -1869,6 +1870,7 @@ function createPreprocessingContext(): PreprocessingContext { lastExportedActionByReportID: new Map(), exportedToNamesByReportID: new Map(), firstApprovedActionByReportID: new Map(), + lastReimbursedActionByReportID: new Map(), moneyRequestReportActionsByTransactionID: new Map(), holdReportActionsByTransactionID: new Map(), allHoldReportActions: new Map(), @@ -1902,6 +1904,10 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action let firstApprovalTime = Infinity; let firstApprovalAction: OnyxTypes.ReportAction | undefined; + // The payer is the actor on the latest payment action. + let lastReimbursedTime = -Infinity; + let lastReimbursedAction: OnyxTypes.ReportAction | undefined; + for (const action of Object.values(actions)) { if (action.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_CSV || action.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION) { const currentTime = new Date(action.created).getTime(); @@ -1926,6 +1932,18 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action } } + if ( + action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSED || + action.actionName === CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED || + action.actionName === CONST.REPORT.ACTIONS.TYPE.MARK_REIMBURSED_FROM_INTEGRATION + ) { + const currentTime = new Date(action.created).getTime(); + if (currentTime > lastReimbursedTime) { + lastReimbursedTime = currentTime; + lastReimbursedAction = action; + } + } + if (isMoneyRequestAction(action)) { const originalMessage = getOriginalMessage(action); const transactionID = originalMessage?.IOUTransactionID; @@ -1948,6 +1966,10 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action if (firstApprovalAction) { ctx.firstApprovedActionByReportID.set(reportID, firstApprovalAction); } + + if (lastReimbursedAction) { + ctx.lastReimbursedActionByReportID.set(reportID, lastReimbursedAction); + } } /** @@ -2996,6 +3018,7 @@ function getReportSections({ lastExportedActionByReportID, exportedToNamesByReportID, firstApprovedActionByReportID, + lastReimbursedActionByReportID, moneyRequestReportActionsByTransactionID, holdReportActionsByTransactionID, transactionsByReportID, @@ -3057,6 +3080,12 @@ function getReportSections({ const formattedTo = !shouldShowBlankTo ? temporaryGetDisplayNameOrDefault({passedPersonalDetails: toDetails, translate, formatPhoneNumber}) : ''; const formattedFirstApprover = firstApproverAccountID ? temporaryGetDisplayNameOrDefault({passedPersonalDetails: firstApproverDetails, translate, formatPhoneNumber}) : ''; + // The payer is the actor on the latest payment action; blank until the report is paid. + const lastReimbursedAction = lastReimbursedActionByReportID.get(reportItem.reportID); + const payerAccountID = lastReimbursedAction?.actorAccountID; + const payerDetails = payerAccountID ? mergedPersonalDetails?.[payerAccountID] : undefined; + const formattedPayer = payerAccountID ? temporaryGetDisplayNameOrDefault({passedPersonalDetails: payerDetails, translate, formatPhoneNumber}) : ''; + const formattedStatus = getReportStatusTranslation({stateNum: reportItem.stateNum, statusNum: reportItem.statusNum, translate}); const formattedPaidStatus = getReportStatusTooltipTranslation({stateNum: reportItem.stateNum, statusNum: reportItem.statusNum, translate}); const policy = getPolicyFromKey(data, reportItem); @@ -3102,6 +3131,9 @@ function getReportSections({ firstApproverAvatar: firstApproverDetails?.avatar, firstApproverAccountID, formattedFirstApprover, + payerAvatar: payerDetails?.avatar, + payerAccountID, + formattedPayer, formattedFrom, formattedTo, formattedStatus, @@ -4537,6 +4569,8 @@ function getSearchColumnTranslationKey(column: SearchSortBy): TranslationPaths { return 'search.filters.firstApprover'; case CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVED: return 'search.filters.firstApproved'; + case CONST.SEARCH.TABLE_COLUMNS.PAYER: + return 'search.filters.payer'; case CONST.SEARCH.TABLE_COLUMNS.POSTED: return 'search.filters.posted'; case CONST.SEARCH.TABLE_COLUMNS.EXPORTED: @@ -5462,6 +5496,10 @@ const FILTER_VIEW_MAP = { labelKey: 'common.merchant', icon: 'Basket', }, + [CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER]: { + labelKey: 'search.filters.payer', + icon: 'MoneyBag', + }, [CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID]: { labelKey: 'workspace.common.workspace', icon: 'Building', diff --git a/src/styles/utils/index.ts b/src/styles/utils/index.ts index 5a2d86519bfb..580969086c59 100644 --- a/src/styles/utils/index.ts +++ b/src/styles/utils/index.ts @@ -2092,6 +2092,7 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({ case CONST.SEARCH.TABLE_COLUMNS.FROM: case CONST.SEARCH.TABLE_COLUMNS.TO: case CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVER: + case CONST.SEARCH.TABLE_COLUMNS.PAYER: case CONST.SEARCH.TABLE_COLUMNS.ASSIGNEE: case CONST.SEARCH.TABLE_COLUMNS.TITLE: case CONST.SEARCH.TABLE_COLUMNS.DESCRIPTION: diff --git a/src/types/form/SearchAdvancedFiltersForm.ts b/src/types/form/SearchAdvancedFiltersForm.ts index 6d8c2a5556c5..66dd52effeda 100644 --- a/src/types/form/SearchAdvancedFiltersForm.ts +++ b/src/types/form/SearchAdvancedFiltersForm.ts @@ -49,6 +49,7 @@ const AMOUNT_FILTER_KEYS: SearchAmountFilterKeys[] = [CONST.SEARCH.SYNTAX_FILTER const NEGATABLE_FILTER_KEYS = [ CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS, CONST.SEARCH.SYNTAX_FILTER_KEYS.CURRENCY, CONST.SEARCH.SYNTAX_FILTER_KEYS.PURCHASE_CURRENCY, @@ -798,8 +799,8 @@ type SearchAdvancedFiltersForm = Form< [FILTER_KEYS.FROM]: string[]; [FILTER_KEYS.FROM_NOT]: string[]; - [FILTER_KEYS.PAYER]: string; - [FILTER_KEYS.PAYER_NOT]: string; + [FILTER_KEYS.PAYER]: string[]; + [FILTER_KEYS.PAYER_NOT]: string[]; [FILTER_KEYS.EXPORTER]: string[]; [FILTER_KEYS.EXPORTER_NOT]: string[]; diff --git a/tests/unit/Search/ColumnAvailabilityTest.ts b/tests/unit/Search/ColumnAvailabilityTest.ts index a28fdb55ec0c..be83d55e6e82 100644 --- a/tests/unit/Search/ColumnAvailabilityTest.ts +++ b/tests/unit/Search/ColumnAvailabilityTest.ts @@ -32,6 +32,7 @@ describe('Column availability single source of truth', () => { TABLE_COLUMNS.NON_REIMBURSABLE_TOTAL, TABLE_COLUMNS.FIRST_APPROVER, TABLE_COLUMNS.FIRST_APPROVED, + TABLE_COLUMNS.PAYER, TABLE_COLUMNS.PAID_STATUS, // Grouped search views. TABLE_COLUMNS.EXPENSES, diff --git a/tests/unit/Search/SearchUIUtilsTest.ts b/tests/unit/Search/SearchUIUtilsTest.ts index dd9c6f127edd..1788ab8128d7 100644 --- a/tests/unit/Search/SearchUIUtilsTest.ts +++ b/tests/unit/Search/SearchUIUtilsTest.ts @@ -1190,6 +1190,9 @@ const transactionReportGroupListItems = createMock Date: Wed, 12 Aug 2026 13:12:29 +0530 Subject: [PATCH 02/10] Ignore canceled payments when deriving the payer column --- src/libs/SearchUIUtils.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 9e23344f4641..5eda67b81fa9 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -1907,6 +1907,7 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action // The payer is the actor on the latest payment action. let lastReimbursedTime = -Infinity; let lastReimbursedAction: OnyxTypes.ReportAction | undefined; + let lastReimbursementDequeuedTime = -Infinity; for (const action of Object.values(actions)) { if (action.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_CSV || action.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION) { @@ -1944,6 +1945,10 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action } } + if (action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED) { + lastReimbursementDequeuedTime = Math.max(lastReimbursementDequeuedTime, new Date(action.created).getTime()); + } + if (isMoneyRequestAction(action)) { const originalMessage = getOriginalMessage(action); const transactionID = originalMessage?.IOUTransactionID; @@ -1967,7 +1972,8 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action ctx.firstApprovedActionByReportID.set(reportID, firstApprovalAction); } - if (lastReimbursedAction) { + // A payment sharing the same timestamp as a cancellation counts as canceled, matching the backend + if (lastReimbursedAction && lastReimbursedTime > lastReimbursementDequeuedTime) { ctx.lastReimbursedActionByReportID.set(reportID, lastReimbursedAction); } } From b4fd2f292b92c54df5a86651efe795464687927d Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Date: Wed, 12 Aug 2026 14:41:56 +0530 Subject: [PATCH 03/10] Void the payer on ACH cancellations and bounces too --- src/libs/SearchUIUtils.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 5eda67b81fa9..f7bc9641091a 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -1907,7 +1907,7 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action // The payer is the actor on the latest payment action. let lastReimbursedTime = -Infinity; let lastReimbursedAction: OnyxTypes.ReportAction | undefined; - let lastReimbursementDequeuedTime = -Infinity; + let lastPaymentCanceledTime = -Infinity; for (const action of Object.values(actions)) { if (action.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_CSV || action.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION) { @@ -1945,8 +1945,12 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action } } - if (action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED) { - lastReimbursementDequeuedTime = Math.max(lastReimbursementDequeuedTime, new Date(action.created).getTime()); + if ( + action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED || + action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED || + action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_BOUNCE + ) { + lastPaymentCanceledTime = Math.max(lastPaymentCanceledTime, new Date(action.created).getTime()); } if (isMoneyRequestAction(action)) { @@ -1973,7 +1977,7 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action } // A payment sharing the same timestamp as a cancellation counts as canceled, matching the backend - if (lastReimbursedAction && lastReimbursedTime > lastReimbursementDequeuedTime) { + if (lastReimbursedAction && lastReimbursedTime > lastPaymentCanceledTime) { ctx.lastReimbursedActionByReportID.set(reportID, lastReimbursedAction); } } From 1e64d43d3c04c07a6f7aea07defa980f297cf1d1 Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Date: Wed, 12 Aug 2026 15:01:39 +0530 Subject: [PATCH 04/10] Ignore owner receipt confirmations when deriving the payer column --- src/libs/SearchUIUtils.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index f7bc9641091a..f583ae9c0577 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -1894,8 +1894,9 @@ function createPreprocessingContext(): PreprocessingContext { * Indexes report actions by building the latest-export map, money-request lookup, * hold-action lookup, and year-created flag from action dates. */ -function processReportActionEntry(ctx: PreprocessingContext, key: string, actions: Record): void { +function processReportActionEntry(ctx: PreprocessingContext, key: string, actions: Record, data: OnyxTypes.SearchResults['data']): void { const reportID = key.replace(ONYXKEYS.COLLECTION.REPORT_ACTIONS, ''); + const reportOwnerAccountID = data[`${ONYXKEYS.COLLECTION.REPORT}${reportID}`]?.ownerAccountID; let latestExportTime = -Infinity; let latestExportAction: OnyxTypes.ReportAction | undefined; @@ -1938,10 +1939,13 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action action.actionName === CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED || action.actionName === CONST.REPORT.ACTIONS.TYPE.MARK_REIMBURSED_FROM_INTEGRATION ) { - const currentTime = new Date(action.created).getTime(); - if (currentTime > lastReimbursedTime) { - lastReimbursedTime = currentTime; - lastReimbursedAction = action; + // A payment action from the report owner is a receipt confirmation, not a payment, matching the backend + if (action.actorAccountID !== reportOwnerAccountID) { + const currentTime = new Date(action.created).getTime(); + if (currentTime > lastReimbursedTime) { + lastReimbursedTime = currentTime; + lastReimbursedAction = action; + } } } @@ -2118,7 +2122,7 @@ function classifyAndPreprocess(data: OnyxTypes.SearchResults['data']): Omit Date: Wed, 12 Aug 2026 16:24:00 +0530 Subject: [PATCH 05/10] Break payer action ties by reportActionID to match the backend --- src/libs/SearchUIUtils.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index f583ae9c0577..bd7b94b7b28a 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -1942,7 +1942,12 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action // A payment action from the report owner is a receipt confirmation, not a payment, matching the backend if (action.actorAccountID !== reportOwnerAccountID) { const currentTime = new Date(action.created).getTime(); - if (currentTime > lastReimbursedTime) { + // Ties on created are broken by the higher reportActionID (numeric-string compare), matching the backend ORDER BY + const previousActionID = lastReimbursedAction?.reportActionID; + const currentActionID = action.reportActionID; + const hasHigherActionID = + !!previousActionID && (currentActionID.length === previousActionID.length ? currentActionID > previousActionID : currentActionID.length > previousActionID.length); + if (currentTime > lastReimbursedTime || (currentTime === lastReimbursedTime && hasHigherActionID)) { lastReimbursedTime = currentTime; lastReimbursedAction = action; } From c20a9811e04e2191e019288c94a5e69a455286a0 Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Date: Wed, 12 Aug 2026 16:56:45 +0530 Subject: [PATCH 06/10] Resolve the payer from payment actions only on paid reports Matches the backend gate on report status, so canceled or reopened reports fall back to having no payer column value. --- src/libs/SearchUIUtils.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index bd7b94b7b28a..1c2572f65dd3 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -1896,7 +1896,11 @@ function createPreprocessingContext(): PreprocessingContext { */ function processReportActionEntry(ctx: PreprocessingContext, key: string, actions: Record, data: OnyxTypes.SearchResults['data']): void { const reportID = key.replace(ONYXKEYS.COLLECTION.REPORT_ACTIONS, ''); - const reportOwnerAccountID = data[`${ONYXKEYS.COLLECTION.REPORT}${reportID}`]?.ownerAccountID; + const report = data[`${ONYXKEYS.COLLECTION.REPORT}${reportID}`]; + const reportOwnerAccountID = report?.ownerAccountID; + + // Only paid reports carry a payer-determining payment action, matching the backend status gate + const isReportPaid = report?.statusNum === CONST.REPORT.STATUS_NUM.REIMBURSED; let latestExportTime = -Infinity; let latestExportAction: OnyxTypes.ReportAction | undefined; @@ -1940,7 +1944,7 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action action.actionName === CONST.REPORT.ACTIONS.TYPE.MARK_REIMBURSED_FROM_INTEGRATION ) { // A payment action from the report owner is a receipt confirmation, not a payment, matching the backend - if (action.actorAccountID !== reportOwnerAccountID) { + if (isReportPaid && action.actorAccountID !== reportOwnerAccountID) { const currentTime = new Date(action.created).getTime(); // Ties on created are broken by the higher reportActionID (numeric-string compare), matching the backend ORDER BY const previousActionID = lastReimbursedAction?.reportActionID; From 70d2cce02236d65ce41564a6c8cb9988b2ec7bc4 Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Date: Wed, 12 Aug 2026 18:18:25 +0530 Subject: [PATCH 07/10] Resolve self-payments as payer unless the owner confirmed receipt --- src/CONST/index.ts | 1 + src/libs/SearchUIUtils.ts | 45 ++++++++++++++++++++----------- src/types/onyx/OriginalMessage.ts | 1 + 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 7eb6f7960ade..9338c6755a76 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -1635,6 +1635,7 @@ const CONST = { INTEGRATIONS_MESSAGE: 'INTEGRATIONSMESSAGE', // OldDot Action MANAGER_ATTACH_RECEIPT: 'MANAGERATTACHRECEIPT', // OldDot Action MANAGER_DETACH_RECEIPT: 'MANAGERDETACHRECEIPT', // OldDot Action + MARKED_REDEEMED: 'MARKEDREDEEMED', // OldDot Action MARKED_REIMBURSED: 'MARKEDREIMBURSED', // OldDot Action MARK_REIMBURSED_FROM_INTEGRATION: 'ACTIONMARKEDREIMBURSEDFROMINTEGRATION', // OldDot Action MERGED_WITH_CASH_TRANSACTION: 'MERGEDWITHCASHTRANSACTION', diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 1c2572f65dd3..b76763169aee 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -1909,9 +1909,10 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action let firstApprovalTime = Infinity; let firstApprovalAction: OnyxTypes.ReportAction | undefined; - // The payer is the actor on the latest payment action. - let lastReimbursedTime = -Infinity; - let lastReimbursedAction: OnyxTypes.ReportAction | undefined; + // The payer is the actor on the latest payment action. Payment actions are collected first because + // whether the owner's ones count depends on a receipt confirmation that may appear later in the scan. + const paymentActions: OnyxTypes.ReportAction[] = []; + let ownerConfirmedReceipt = false; let lastPaymentCanceledTime = -Infinity; for (const action of Object.values(actions)) { @@ -1943,21 +1944,15 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action action.actionName === CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED || action.actionName === CONST.REPORT.ACTIONS.TYPE.MARK_REIMBURSED_FROM_INTEGRATION ) { - // A payment action from the report owner is a receipt confirmation, not a payment, matching the backend - if (isReportPaid && action.actorAccountID !== reportOwnerAccountID) { - const currentTime = new Date(action.created).getTime(); - // Ties on created are broken by the higher reportActionID (numeric-string compare), matching the backend ORDER BY - const previousActionID = lastReimbursedAction?.reportActionID; - const currentActionID = action.reportActionID; - const hasHigherActionID = - !!previousActionID && (currentActionID.length === previousActionID.length ? currentActionID > previousActionID : currentActionID.length > previousActionID.length); - if (currentTime > lastReimbursedTime || (currentTime === lastReimbursedTime && hasHigherActionID)) { - lastReimbursedTime = currentTime; - lastReimbursedAction = action; - } + if (isReportPaid) { + paymentActions.push(action); } } + if (action.actionName === CONST.REPORT.ACTIONS.TYPE.MARKED_REDEEMED && action.actorAccountID === reportOwnerAccountID) { + ownerConfirmedReceipt = true; + } + if ( action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED || action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED || @@ -1989,6 +1984,26 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action ctx.firstApprovedActionByReportID.set(reportID, firstApprovalAction); } + // A payment action from an owner who also confirmed receipt (MARKEDREDEEMED) is a receipt + // confirmation, not a payment, matching the backend + let lastReimbursedTime = -Infinity; + let lastReimbursedAction: OnyxTypes.ReportAction | undefined; + for (const action of paymentActions) { + if (ownerConfirmedReceipt && action.actorAccountID === reportOwnerAccountID) { + continue; + } + const currentTime = new Date(action.created).getTime(); + // Ties on created are broken by the higher reportActionID (numeric-string compare), matching the backend ORDER BY + const previousActionID = lastReimbursedAction?.reportActionID; + const currentActionID = action.reportActionID; + const hasHigherActionID = + !!previousActionID && (currentActionID.length === previousActionID.length ? currentActionID > previousActionID : currentActionID.length > previousActionID.length); + if (currentTime > lastReimbursedTime || (currentTime === lastReimbursedTime && hasHigherActionID)) { + lastReimbursedTime = currentTime; + lastReimbursedAction = action; + } + } + // A payment sharing the same timestamp as a cancellation counts as canceled, matching the backend if (lastReimbursedAction && lastReimbursedTime > lastPaymentCanceledTime) { ctx.lastReimbursedActionByReportID.set(reportID, lastReimbursedAction); diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index 75c356be9b5e..2ce691da67bd 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -1757,6 +1757,7 @@ type OriginalMessageMap = { [CONST.REPORT.ACTIONS.TYPE.MANAGER_ATTACH_RECEIPT]: never; [CONST.REPORT.ACTIONS.TYPE.MANAGER_DETACH_RECEIPT]: never; [CONST.REPORT.ACTIONS.TYPE.MARK_REIMBURSED_FROM_INTEGRATION]: never; + [CONST.REPORT.ACTIONS.TYPE.MARKED_REDEEMED]: never; [CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED]: OriginalMessageMarkedReimbursed; [CONST.REPORT.ACTIONS.TYPE.MERGED_WITH_CASH_TRANSACTION]: never; [CONST.REPORT.ACTIONS.TYPE.MODIFIED_EXPENSE]: OriginalMessageModifiedExpense; From 957782932960a2695626dfc7f63f2d62b2742ed8 Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Date: Wed, 12 Aug 2026 18:36:55 +0530 Subject: [PATCH 08/10] Bound the owner receipt-confirmation check to the payment action time --- src/libs/SearchUIUtils.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index b76763169aee..8f19ae795f49 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -1912,7 +1912,7 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action // The payer is the actor on the latest payment action. Payment actions are collected first because // whether the owner's ones count depends on a receipt confirmation that may appear later in the scan. const paymentActions: OnyxTypes.ReportAction[] = []; - let ownerConfirmedReceipt = false; + let lastOwnerReceiptConfirmedTime = -Infinity; let lastPaymentCanceledTime = -Infinity; for (const action of Object.values(actions)) { @@ -1950,7 +1950,7 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action } if (action.actionName === CONST.REPORT.ACTIONS.TYPE.MARKED_REDEEMED && action.actorAccountID === reportOwnerAccountID) { - ownerConfirmedReceipt = true; + lastOwnerReceiptConfirmedTime = Math.max(lastOwnerReceiptConfirmedTime, new Date(action.created).getTime()); } if ( @@ -1984,15 +1984,16 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action ctx.firstApprovedActionByReportID.set(reportID, firstApprovalAction); } - // A payment action from an owner who also confirmed receipt (MARKEDREDEEMED) is a receipt - // confirmation, not a payment, matching the backend + // An owner payment action followed by the owner's receipt confirmation (MARKEDREDEEMED) is itself a + // receipt confirmation, not a payment. A confirmation older than the payment does not discard it, so a + // genuine self-payment after a canceled-and-confirmed one still counts, matching the backend let lastReimbursedTime = -Infinity; let lastReimbursedAction: OnyxTypes.ReportAction | undefined; for (const action of paymentActions) { - if (ownerConfirmedReceipt && action.actorAccountID === reportOwnerAccountID) { + const currentTime = new Date(action.created).getTime(); + if (action.actorAccountID === reportOwnerAccountID && lastOwnerReceiptConfirmedTime >= currentTime) { continue; } - const currentTime = new Date(action.created).getTime(); // Ties on created are broken by the higher reportActionID (numeric-string compare), matching the backend ORDER BY const previousActionID = lastReimbursedAction?.reportActionID; const currentActionID = action.reportActionID; From 16d5153ba3a7de6574ba1bc5f6716df6d0b8568a Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Date: Wed, 12 Aug 2026 19:20:46 +0530 Subject: [PATCH 09/10] Split the paid-by concept from the payer filter The payer filter keeps its existing responsible-payer meaning (hidden from the filters UI as before) and the payment-actor work moves to a new paidBy filter key, table column, and translations. The paid-by syntax also accepts paid-by: like the other multi-word keys. --- src/CONST/index.ts | 5 +- .../FilterComponents/ListFilterContent.tsx | 2 +- .../ExpenseReportListItemRowWide.tsx | 12 +- .../Search/SearchList/ListItem/types.ts | 12 +- .../SearchPageHeader/SearchFilterBar.tsx | 2 +- .../SearchRouter/buildSubstitutionsMap.ts | 1 + .../SearchRouter/getQueryWithSubstitutions.ts | 1 + src/components/Search/SearchTableHeader.tsx | 4 +- src/hooks/useAdvancedSearchFilters.ts | 8 +- src/hooks/useAutocompleteSuggestions.ts | 1 + src/languages/de.ts | 2 +- src/languages/el.ts | 2 +- src/languages/en.ts | 2 +- src/languages/es.ts | 2 +- src/languages/fr.ts | 2 +- src/languages/it.ts | 2 +- src/languages/ja.ts | 2 +- src/languages/nl.ts | 2 +- src/languages/pl.ts | 2 +- src/languages/pt-BR.ts | 2 +- src/languages/zh-hans.ts | 2 +- src/libs/SearchAutocompleteUtils.ts | 1 + src/libs/SearchParser/autocompleteParser.js | 1417 +++++++++-------- .../SearchParser/autocompleteParser.peggy | 3 +- src/libs/SearchParser/baseRules.peggy | 3 + src/libs/SearchParser/searchParser.js | 1393 ++++++++-------- src/libs/SearchParser/searchParser.peggy | 3 +- src/libs/SearchQueryUtils.ts | 10 +- src/libs/SearchUIUtils.ts | 31 +- src/styles/utils/index.ts | 2 +- src/types/form/SearchAdvancedFiltersForm.ts | 20 +- tests/unit/Search/ColumnAvailabilityTest.ts | 2 +- tests/unit/Search/SearchUIUtilsTest.ts | 24 +- 33 files changed, 1542 insertions(+), 1437 deletions(-) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 9338c6755a76..2e20e20118a9 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -7116,7 +7116,7 @@ const CONST = { APPROVED: this.TABLE_COLUMNS.APPROVED, FIRST_APPROVER: this.TABLE_COLUMNS.FIRST_APPROVER, FIRST_APPROVED: this.TABLE_COLUMNS.FIRST_APPROVED, - PAYER: this.TABLE_COLUMNS.PAYER, + PAID_BY: this.TABLE_COLUMNS.PAID_BY, EXPORTED: this.TABLE_COLUMNS.EXPORTED, STATUS: this.TABLE_COLUMNS.STATUS, PAID_STATUS: this.TABLE_COLUMNS.PAID_STATUS, @@ -7311,7 +7311,7 @@ const CONST = { APPROVED: 'approved', FIRST_APPROVER: 'firstapprover', FIRST_APPROVED: 'firstapproved', - PAYER: 'payer', + PAID_BY: 'paidBy', POSTED: 'posted', EXPORTED: 'exported', MERCHANT: 'merchant', @@ -7419,6 +7419,7 @@ const CONST = { FROM: 'from', TO: 'to', PAYER: 'payer', + PAID_BY: 'paidBy', EXPORTER: 'exporter', CATEGORY: 'category', TAG: 'tag', diff --git a/src/components/Search/FilterComponents/ListFilterContent.tsx b/src/components/Search/FilterComponents/ListFilterContent.tsx index ee0d6103c927..aa6f69970b37 100644 --- a/src/components/Search/FilterComponents/ListFilterContent.tsx +++ b/src/components/Search/FilterComponents/ListFilterContent.tsx @@ -218,7 +218,7 @@ function ListFilterContent({ case CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE: case CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE: case CONST.SEARCH.SYNTAX_FILTER_KEYS.TO: - case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER: + case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY: case CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM: { content = ( ), - [CONST.SEARCH.TABLE_COLUMNS.PAYER]: ( - - {!!item.payerAccountID && ( + [CONST.SEARCH.TABLE_COLUMNS.PAID_BY]: ( + + {!!item.paidByAccountID && ( )} diff --git a/src/components/Search/SearchList/ListItem/types.ts b/src/components/Search/SearchList/ListItem/types.ts index 984a45a3c00e..233774845dec 100644 --- a/src/components/Search/SearchList/ListItem/types.ts +++ b/src/components/Search/SearchList/ListItem/types.ts @@ -267,14 +267,14 @@ type TransactionReportGroupListItemType = TransactionGroupListItemType & {groupe /** Final and formatted "first approver" value used for displaying and sorting */ formattedFirstApprover?: string; - /** The avatar of the payer */ - payerAvatar?: AvatarSource; + /** The avatar of the user the report was paid by */ + paidByAvatar?: AvatarSource; - /** Account ID of the payer (actor on the latest payment report action) */ - payerAccountID?: number; + /** Account ID of the user the report was paid by (actor on the latest payment report action) */ + paidByAccountID?: number; - /** Final and formatted "payer" value used for displaying and sorting */ - formattedPayer?: string; + /** Final and formatted "paid by" value used for displaying and sorting */ + formattedPaidBy?: string; /** Whether the status field should be shown in a pending state */ shouldShowStatusAsPending?: boolean; diff --git a/src/components/Search/SearchPageHeader/SearchFilterBar.tsx b/src/components/Search/SearchPageHeader/SearchFilterBar.tsx index e4bb40f484ba..4e6a84fc1640 100644 --- a/src/components/Search/SearchPageHeader/SearchFilterBar.tsx +++ b/src/components/Search/SearchPageHeader/SearchFilterBar.tsx @@ -114,7 +114,7 @@ function ReportDropdown({label, value, PopoverComponent, sentryLabel, onClosePre const FILTER_COMPONENT_MAP: Partial>> = { [CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM]: UserDropdown, [CONST.SEARCH.SYNTAX_FILTER_KEYS.TO]: UserDropdown, - [CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER]: UserDropdown, + [CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY]: UserDropdown, [CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE]: UserDropdown, [CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE]: UserDropdown, diff --git a/src/components/Search/SearchRouter/buildSubstitutionsMap.ts b/src/components/Search/SearchRouter/buildSubstitutionsMap.ts index 6f19bbfca918..d125e7d6e61d 100644 --- a/src/components/Search/SearchRouter/buildSubstitutionsMap.ts +++ b/src/components/Search/SearchRouter/buildSubstitutionsMap.ts @@ -86,6 +86,7 @@ function buildSubstitutionsMap( filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE || filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER || filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER || + filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY || filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE ) { const displayValue = getFilterDisplayValue({ diff --git a/src/components/Search/SearchRouter/getQueryWithSubstitutions.ts b/src/components/Search/SearchRouter/getQueryWithSubstitutions.ts index 48abd175dfff..99a4eb58df14 100644 --- a/src/components/Search/SearchRouter/getQueryWithSubstitutions.ts +++ b/src/components/Search/SearchRouter/getQueryWithSubstitutions.ts @@ -14,6 +14,7 @@ const USER_FILTER_KEYS = new Set([ CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE, CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY, CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER, CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE, ]); diff --git a/src/components/Search/SearchTableHeader.tsx b/src/components/Search/SearchTableHeader.tsx index c7000a403115..0a8e26277267 100644 --- a/src/components/Search/SearchTableHeader.tsx +++ b/src/components/Search/SearchTableHeader.tsx @@ -270,8 +270,8 @@ const getExpenseReportHeaders = (profileIcon?: IconAsset): SearchColumnConfig[] translationKey: 'search.filters.firstApproved', }, { - columnName: CONST.SEARCH.TABLE_COLUMNS.PAYER, - translationKey: 'search.filters.payer', + columnName: CONST.SEARCH.TABLE_COLUMNS.PAID_BY, + translationKey: 'search.filters.paidBy', }, { columnName: CONST.SEARCH.TABLE_COLUMNS.EXPORTED, diff --git a/src/hooks/useAdvancedSearchFilters.ts b/src/hooks/useAdvancedSearchFilters.ts index cd5c73d72a4d..9e94f016ed7e 100644 --- a/src/hooks/useAdvancedSearchFilters.ts +++ b/src/hooks/useAdvancedSearchFilters.ts @@ -31,7 +31,7 @@ const typeFiltersKeys = { CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, - CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY, CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID, ], [ @@ -82,7 +82,7 @@ const typeFiltersKeys = { CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, - CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY, CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID, ], [ @@ -113,7 +113,7 @@ const typeFiltersKeys = { CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, - CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY, CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID, ], [ @@ -154,7 +154,7 @@ const typeFiltersKeys = { CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, - CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY, CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID, ], [ diff --git a/src/hooks/useAutocompleteSuggestions.ts b/src/hooks/useAutocompleteSuggestions.ts index 34e005d8d36d..a6f7d5cf7ae1 100644 --- a/src/hooks/useAutocompleteSuggestions.ts +++ b/src/hooks/useAutocompleteSuggestions.ts @@ -240,6 +240,7 @@ function useAutocompleteSuggestions({ case CONST.SEARCH.SYNTAX_FILTER_KEYS.TO: case CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM: case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER: + case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY: case CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE: case CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER: { // Soft-exclude Expensify-team logins (current and former AMs/Guides) from user filter suggestions. Users can still type any email manually because the search bar accepts free text. diff --git a/src/languages/de.ts b/src/languages/de.ts index 3d2c31533b65..e1f96034130c 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -9045,7 +9045,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc approved: 'Genehmigt', firstApprover: 'Erste:r Genehmiger:in', firstApproved: 'Zuerst genehmigt', - payer: 'Zahler', + paidBy: 'Bezahlt von', paid: 'Bezahlt', exported: 'Exportiert', posted: 'Gebucht', diff --git a/src/languages/el.ts b/src/languages/el.ts index f63d2fa62aa4..86122c75d0f1 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -9269,7 +9269,7 @@ ${reportName}`, approved: 'Εγκρίθηκε', firstApprover: 'Πρώτος εγκρίνων', firstApproved: 'Πρώτη έγκριση', - payer: 'Πληρωτής', + paidBy: 'Πληρώθηκε από', paid: 'Πληρωμένο', exported: 'Έγινε εξαγωγή', posted: 'Καταχωρισμένο', diff --git a/src/languages/en.ts b/src/languages/en.ts index 9bae63f2a456..a448a2b9d8c2 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -9186,7 +9186,7 @@ const translations = { approved: 'Approved', firstApprover: 'First approver', firstApproved: 'First approved', - payer: 'Payer', + paidBy: 'Paid by', paid: 'Paid', exported: 'Exported', posted: 'Posted', diff --git a/src/languages/es.ts b/src/languages/es.ts index 3f3051b420fe..4ab856511282 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -8908,7 +8908,7 @@ El plan Controlar empieza en 9 $ por miembro activo al mes.`, approved: 'Aprobación', firstApprover: 'Primer aprobador', firstApproved: 'Primera aprobación', - payer: 'Pagador', + paidBy: 'Pagado por', paid: 'Pago', exported: 'Exportación', posted: 'Contabilización', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index b2164ab4a589..0fb43d91be37 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -9081,7 +9081,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e approved: 'Approuvé', firstApprover: 'Premier approbateur', firstApproved: 'Approuvé en premier', - payer: 'Payeur', + paidBy: 'Payé par', paid: 'Payé', exported: 'Exporté', posted: 'Publié', diff --git a/src/languages/it.ts b/src/languages/it.ts index f686984b590b..58a5b4091df9 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -9017,7 +9017,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, approved: 'Approvato', firstApprover: 'Primo approvatore', firstApproved: 'Approvato per primo', - payer: 'Pagatore', + paidBy: 'Pagato da', paid: 'Pagato', exported: 'Esportato', posted: 'Pubblicato', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 111d09a7420f..82eadba29d95 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -8905,7 +8905,7 @@ ${reportName}`, approved: '承認済み', firstApprover: '最初の承認者', firstApproved: '最初に承認済み', - payer: '支払者', + paidBy: '支払者', paid: '支払い済み', exported: 'エクスポート済み', posted: '投稿日', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index ab5262d25813..011f5a50d44e 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -8989,7 +8989,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, approved: 'Goedgekeurd', firstApprover: 'Eerste gemachtigde', firstApproved: 'Eerst goedgekeurd', - payer: 'Betaler', + paidBy: 'Betaald door', paid: 'Betaald', exported: 'Geëxporteerd', posted: 'Gepost', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 1d5867fb5345..990ac7e40f46 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -8966,7 +8966,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, approved: 'Zatwierdzono', firstApprover: 'Pierwszy zatwierdzający', firstApproved: 'Najpierw zatwierdzono', - payer: 'Płatnik', + paidBy: 'Zapłacone przez', paid: 'Zapłacono', exported: 'Wyeksportowano', posted: 'Opublikowano', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 906f91ddb2fb..ca1429bded23 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -8984,7 +8984,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, approved: 'Aprovado', firstApprover: 'Primeira pessoa aprovadora', firstApproved: 'Primeira aprovada', - payer: 'Pagador', + paidBy: 'Pago por', paid: 'Pago', exported: 'Exportado', posted: 'Publicado', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 89c291eb318b..89a29eb2fdd0 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -8670,7 +8670,7 @@ ${reportName}`, approved: '已批准', firstApprover: '首位审批人', firstApproved: '首次批准', - payer: '付款人', + paidBy: '付款人', paid: '已支付', exported: '已导出', posted: '已发布', diff --git a/src/libs/SearchAutocompleteUtils.ts b/src/libs/SearchAutocompleteUtils.ts index 8ff1f0652540..53150569ed5c 100644 --- a/src/libs/SearchAutocompleteUtils.ts +++ b/src/libs/SearchAutocompleteUtils.ts @@ -193,6 +193,7 @@ function filterOutRangesWithCorrectValue( case CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM: case CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE: case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER: + case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY: case CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER: case CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE: return substitutionMap[`${range.key}:${range.value}`] !== undefined || userLogins.get().includes(range.value) || range.value === CONST.SEARCH.ME; diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index ff068a8f9b17..25c10f518cc4 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -203,102 +203,104 @@ function peg$parse(input, options) { var peg$c17 = "to"; var peg$c18 = "exporter"; var peg$c19 = "payer"; - var peg$c20 = "taxrate"; - var peg$c21 = "tax-rate"; - var peg$c22 = "cardID"; - var peg$c23 = "card"; - var peg$c24 = "bankAccount"; - var peg$c25 = "bank-account"; - var peg$c26 = "from"; - var peg$c27 = "attendee"; - var peg$c28 = "expenseType"; - var peg$c29 = "expense-type"; - var peg$c30 = "receiptType"; - var peg$c31 = "receipt-type"; - var peg$c32 = "withdrawalType"; - var peg$c33 = "withdrawal-type"; - var peg$c34 = "withdrawalStatus"; - var peg$c35 = "withdrawal-status"; - var peg$c36 = "paidStatus"; - var peg$c37 = "paid-status"; - var peg$c38 = "withdrawalid"; - var peg$c39 = "withdrawal-id"; - var peg$c40 = "billable"; - var peg$c41 = "reimbursable"; - var peg$c42 = "type"; - var peg$c43 = "status"; - var peg$c44 = "sortBy"; - var peg$c45 = "sort-by"; - var peg$c46 = "sortOrder"; - var peg$c47 = "sort-order"; - var peg$c48 = "policyID"; - var peg$c49 = "workspace"; - var peg$c50 = "submitted"; - var peg$c51 = "approved"; - var peg$c52 = "paid"; - var peg$c53 = "exported"; - var peg$c54 = "posted"; - var peg$c55 = "withdrawn"; - var peg$c56 = "groupby"; - var peg$c57 = "group-by"; - var peg$c58 = "limit"; - var peg$c59 = "feed"; - var peg$c60 = "title"; - var peg$c61 = "submitteruserid"; - var peg$c62 = "submitter-user-id"; - var peg$c63 = "submitterpayrollid"; - var peg$c64 = "submitter-payroll-id"; - var peg$c65 = "orderdealnumbers"; - var peg$c66 = "order-deal-numbers"; - var peg$c67 = "assignee"; - var peg$c68 = "createdby"; - var peg$c69 = "created-by"; - var peg$c70 = "action"; - var peg$c71 = "total"; - var peg$c72 = "has"; - var peg$c73 = "is"; - var peg$c74 = "purchaseamount"; - var peg$c75 = "purchase-amount"; - var peg$c76 = "purchasecurrency"; - var peg$c77 = "purchase-currency"; - var peg$c78 = "columns"; - var peg$c79 = "view"; - var peg$c80 = "per-diem"; - var peg$c81 = "drafts"; - var peg$c82 = "draft"; - var peg$c83 = "tax"; - var peg$c84 = "policy-name"; - var peg$c85 = "long-report-id"; - var peg$c86 = "exported-to"; - var peg$c87 = "exportedto"; - var peg$c88 = "exchange-rate"; - var peg$c89 = "reimbursable-total"; - var peg$c90 = "non-reimbursable-total"; - var peg$c91 = "group-from"; - var peg$c92 = "group-expenses"; - var peg$c93 = "group-total"; - var peg$c94 = "group-card"; - var peg$c95 = "group-feed"; - var peg$c96 = "group-bank-account"; - var peg$c97 = "group-withdrawn"; - var peg$c98 = "group-withdrawal-id"; - var peg$c99 = "group-amount-debited"; - var peg$c100 = "group-amount-reimbursed"; - var peg$c101 = "group-category"; - var peg$c102 = "group-tag"; - var peg$c103 = "group-merchant"; - var peg$c104 = "group-month"; - var peg$c105 = "group-week"; - var peg$c106 = "group-year"; - var peg$c107 = "group-quarter"; - var peg$c108 = "!="; - var peg$c109 = ">="; - var peg$c110 = ">"; - var peg$c111 = "<="; - var peg$c112 = "<"; - var peg$c113 = "\u201C"; - var peg$c114 = "\u201D"; - var peg$c115 = "\""; + var peg$c20 = "paidBy"; + var peg$c21 = "paid-by"; + var peg$c22 = "taxrate"; + var peg$c23 = "tax-rate"; + var peg$c24 = "cardID"; + var peg$c25 = "card"; + var peg$c26 = "bankAccount"; + var peg$c27 = "bank-account"; + var peg$c28 = "from"; + var peg$c29 = "attendee"; + var peg$c30 = "expenseType"; + var peg$c31 = "expense-type"; + var peg$c32 = "receiptType"; + var peg$c33 = "receipt-type"; + var peg$c34 = "withdrawalType"; + var peg$c35 = "withdrawal-type"; + var peg$c36 = "withdrawalStatus"; + var peg$c37 = "withdrawal-status"; + var peg$c38 = "paidStatus"; + var peg$c39 = "paid-status"; + var peg$c40 = "withdrawalid"; + var peg$c41 = "withdrawal-id"; + var peg$c42 = "billable"; + var peg$c43 = "reimbursable"; + var peg$c44 = "type"; + var peg$c45 = "status"; + var peg$c46 = "sortBy"; + var peg$c47 = "sort-by"; + var peg$c48 = "sortOrder"; + var peg$c49 = "sort-order"; + var peg$c50 = "policyID"; + var peg$c51 = "workspace"; + var peg$c52 = "submitted"; + var peg$c53 = "approved"; + var peg$c54 = "paid"; + var peg$c55 = "exported"; + var peg$c56 = "posted"; + var peg$c57 = "withdrawn"; + var peg$c58 = "groupby"; + var peg$c59 = "group-by"; + var peg$c60 = "limit"; + var peg$c61 = "feed"; + var peg$c62 = "title"; + var peg$c63 = "submitteruserid"; + var peg$c64 = "submitter-user-id"; + var peg$c65 = "submitterpayrollid"; + var peg$c66 = "submitter-payroll-id"; + var peg$c67 = "orderdealnumbers"; + var peg$c68 = "order-deal-numbers"; + var peg$c69 = "assignee"; + var peg$c70 = "createdby"; + var peg$c71 = "created-by"; + var peg$c72 = "action"; + var peg$c73 = "total"; + var peg$c74 = "has"; + var peg$c75 = "is"; + var peg$c76 = "purchaseamount"; + var peg$c77 = "purchase-amount"; + var peg$c78 = "purchasecurrency"; + var peg$c79 = "purchase-currency"; + var peg$c80 = "columns"; + var peg$c81 = "view"; + var peg$c82 = "per-diem"; + var peg$c83 = "drafts"; + var peg$c84 = "draft"; + var peg$c85 = "tax"; + var peg$c86 = "policy-name"; + var peg$c87 = "long-report-id"; + var peg$c88 = "exported-to"; + var peg$c89 = "exportedto"; + var peg$c90 = "exchange-rate"; + var peg$c91 = "reimbursable-total"; + var peg$c92 = "non-reimbursable-total"; + var peg$c93 = "group-from"; + var peg$c94 = "group-expenses"; + var peg$c95 = "group-total"; + var peg$c96 = "group-card"; + var peg$c97 = "group-feed"; + var peg$c98 = "group-bank-account"; + var peg$c99 = "group-withdrawn"; + var peg$c100 = "group-withdrawal-id"; + var peg$c101 = "group-amount-debited"; + var peg$c102 = "group-amount-reimbursed"; + var peg$c103 = "group-category"; + var peg$c104 = "group-tag"; + var peg$c105 = "group-merchant"; + var peg$c106 = "group-month"; + var peg$c107 = "group-week"; + var peg$c108 = "group-year"; + var peg$c109 = "group-quarter"; + var peg$c110 = "!="; + var peg$c111 = ">="; + var peg$c112 = ">"; + var peg$c113 = "<="; + var peg$c114 = "<"; + var peg$c115 = "\u201C"; + var peg$c116 = "\u201D"; + var peg$c117 = "\""; var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; var peg$r1 = /^[:=]/; @@ -337,118 +339,120 @@ function peg$parse(input, options) { var peg$e20 = peg$literalExpectation("to", true); var peg$e21 = peg$literalExpectation("exporter", true); var peg$e22 = peg$literalExpectation("payer", true); - var peg$e23 = peg$literalExpectation("taxRate", true); - var peg$e24 = peg$literalExpectation("tax-rate", true); - var peg$e25 = peg$literalExpectation("cardID", false); - var peg$e26 = peg$literalExpectation("card", true); - var peg$e27 = peg$literalExpectation("bankAccount", false); - var peg$e28 = peg$literalExpectation("bank-account", true); - var peg$e29 = peg$literalExpectation("from", true); - var peg$e30 = peg$literalExpectation("attendee", true); - var peg$e31 = peg$literalExpectation("expenseType", false); - var peg$e32 = peg$literalExpectation("expense-type", true); - var peg$e33 = peg$literalExpectation("receiptType", false); - var peg$e34 = peg$literalExpectation("receipt-type", true); - var peg$e35 = peg$literalExpectation("withdrawalType", false); - var peg$e36 = peg$literalExpectation("withdrawal-type", true); - var peg$e37 = peg$literalExpectation("withdrawalStatus", false); - var peg$e38 = peg$literalExpectation("withdrawal-status", true); - var peg$e39 = peg$literalExpectation("paidStatus", false); - var peg$e40 = peg$literalExpectation("paid-status", true); - var peg$e41 = peg$literalExpectation("withdrawalID", true); - var peg$e42 = peg$literalExpectation("withdrawal-id", true); - var peg$e43 = peg$literalExpectation("billable", true); - var peg$e44 = peg$literalExpectation("reimbursable", true); - var peg$e45 = peg$literalExpectation("type", true); - var peg$e46 = peg$literalExpectation("status", true); - var peg$e47 = peg$literalExpectation("sortBy", false); - var peg$e48 = peg$literalExpectation("sort-by", true); - var peg$e49 = peg$literalExpectation("sortOrder", false); - var peg$e50 = peg$literalExpectation("sort-order", true); - var peg$e51 = peg$literalExpectation("policyID", false); - var peg$e52 = peg$literalExpectation("workspace", true); - var peg$e53 = peg$literalExpectation("submitted", true); - var peg$e54 = peg$literalExpectation("approved", true); - var peg$e55 = peg$literalExpectation("paid", true); - var peg$e56 = peg$literalExpectation("exported", true); - var peg$e57 = peg$literalExpectation("posted", true); - var peg$e58 = peg$literalExpectation("withdrawn", true); - var peg$e59 = peg$literalExpectation("groupBy", true); - var peg$e60 = peg$literalExpectation("group-by", true); - var peg$e61 = peg$literalExpectation("limit", true); - var peg$e62 = peg$literalExpectation("feed", true); - var peg$e63 = peg$literalExpectation("title", true); - var peg$e64 = peg$literalExpectation("submitterUserID", true); - var peg$e65 = peg$literalExpectation("submitter-user-id", true); - var peg$e66 = peg$literalExpectation("submitterPayrollID", true); - var peg$e67 = peg$literalExpectation("submitter-payroll-id", true); - var peg$e68 = peg$literalExpectation("orderDealNumbers", true); - var peg$e69 = peg$literalExpectation("order-deal-numbers", true); - var peg$e70 = peg$literalExpectation("assignee", true); - var peg$e71 = peg$literalExpectation("createdBy", true); - var peg$e72 = peg$literalExpectation("created-by", true); - var peg$e73 = peg$literalExpectation("action", true); - var peg$e74 = peg$literalExpectation("total", true); - var peg$e75 = peg$literalExpectation("has", true); - var peg$e76 = peg$literalExpectation("is", true); - var peg$e77 = peg$literalExpectation("purchaseAmount", true); - var peg$e78 = peg$literalExpectation("purchase-amount", true); - var peg$e79 = peg$literalExpectation("purchaseCurrency", true); - var peg$e80 = peg$literalExpectation("purchase-currency", true); - var peg$e81 = peg$literalExpectation("columns", true); - var peg$e82 = peg$literalExpectation("view", true); - var peg$e83 = peg$literalExpectation("per-diem", true); - var peg$e84 = peg$literalExpectation("drafts", true); - var peg$e85 = peg$literalExpectation("draft", true); - var peg$e86 = peg$literalExpectation("tax", true); - var peg$e87 = peg$literalExpectation("policy-name", true); - var peg$e88 = peg$literalExpectation("long-report-id", true); - var peg$e89 = peg$literalExpectation("exported-to", true); - var peg$e90 = peg$classExpectation([":", "="], false, false); - var peg$e91 = peg$literalExpectation("exportedTo", true); - var peg$e92 = peg$literalExpectation("exchange-rate", true); - var peg$e93 = peg$literalExpectation("reimbursable-total", true); - var peg$e94 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e95 = peg$literalExpectation("group-from", true); - var peg$e96 = peg$literalExpectation("group-expenses", true); - var peg$e97 = peg$literalExpectation("group-total", true); - var peg$e98 = peg$literalExpectation("group-card", true); - var peg$e99 = peg$literalExpectation("group-feed", true); - var peg$e100 = peg$literalExpectation("group-bank-account", true); - var peg$e101 = peg$literalExpectation("group-withdrawn", true); - var peg$e102 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e103 = peg$literalExpectation("group-amount-debited", true); - var peg$e104 = peg$literalExpectation("group-amount-reimbursed", true); - var peg$e105 = peg$literalExpectation("group-category", true); - var peg$e106 = peg$literalExpectation("group-tag", true); - var peg$e107 = peg$literalExpectation("group-merchant", true); - var peg$e108 = peg$literalExpectation("group-month", true); - var peg$e109 = peg$literalExpectation("group-week", true); - var peg$e110 = peg$literalExpectation("group-year", true); - var peg$e111 = peg$literalExpectation("group-quarter", true); - var peg$e112 = peg$otherExpectation("operator"); - var peg$e113 = peg$literalExpectation("!=", false); - var peg$e114 = peg$literalExpectation(">=", false); - var peg$e115 = peg$literalExpectation(">", false); - var peg$e116 = peg$literalExpectation("<=", false); - var peg$e117 = peg$literalExpectation("<", false); - var peg$e118 = peg$otherExpectation("word"); - var peg$e119 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e120 = peg$otherExpectation("whitespace"); - var peg$e121 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e122 = peg$otherExpectation("quote"); - var peg$e123 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e124 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e125 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e126 = peg$literalExpectation("\u201C", false); - var peg$e127 = peg$literalExpectation("\u201D", false); - var peg$e128 = peg$literalExpectation("\"", false); - var peg$e129 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e130 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e131 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e132 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e133 = peg$classExpectation([","], false, false); - var peg$e134 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e23 = peg$literalExpectation("paidBy", false); + var peg$e24 = peg$literalExpectation("paid-by", true); + var peg$e25 = peg$literalExpectation("taxRate", true); + var peg$e26 = peg$literalExpectation("tax-rate", true); + var peg$e27 = peg$literalExpectation("cardID", false); + var peg$e28 = peg$literalExpectation("card", true); + var peg$e29 = peg$literalExpectation("bankAccount", false); + var peg$e30 = peg$literalExpectation("bank-account", true); + var peg$e31 = peg$literalExpectation("from", true); + var peg$e32 = peg$literalExpectation("attendee", true); + var peg$e33 = peg$literalExpectation("expenseType", false); + var peg$e34 = peg$literalExpectation("expense-type", true); + var peg$e35 = peg$literalExpectation("receiptType", false); + var peg$e36 = peg$literalExpectation("receipt-type", true); + var peg$e37 = peg$literalExpectation("withdrawalType", false); + var peg$e38 = peg$literalExpectation("withdrawal-type", true); + var peg$e39 = peg$literalExpectation("withdrawalStatus", false); + var peg$e40 = peg$literalExpectation("withdrawal-status", true); + var peg$e41 = peg$literalExpectation("paidStatus", false); + var peg$e42 = peg$literalExpectation("paid-status", true); + var peg$e43 = peg$literalExpectation("withdrawalID", true); + var peg$e44 = peg$literalExpectation("withdrawal-id", true); + var peg$e45 = peg$literalExpectation("billable", true); + var peg$e46 = peg$literalExpectation("reimbursable", true); + var peg$e47 = peg$literalExpectation("type", true); + var peg$e48 = peg$literalExpectation("status", true); + var peg$e49 = peg$literalExpectation("sortBy", false); + var peg$e50 = peg$literalExpectation("sort-by", true); + var peg$e51 = peg$literalExpectation("sortOrder", false); + var peg$e52 = peg$literalExpectation("sort-order", true); + var peg$e53 = peg$literalExpectation("policyID", false); + var peg$e54 = peg$literalExpectation("workspace", true); + var peg$e55 = peg$literalExpectation("submitted", true); + var peg$e56 = peg$literalExpectation("approved", true); + var peg$e57 = peg$literalExpectation("paid", true); + var peg$e58 = peg$literalExpectation("exported", true); + var peg$e59 = peg$literalExpectation("posted", true); + var peg$e60 = peg$literalExpectation("withdrawn", true); + var peg$e61 = peg$literalExpectation("groupBy", true); + var peg$e62 = peg$literalExpectation("group-by", true); + var peg$e63 = peg$literalExpectation("limit", true); + var peg$e64 = peg$literalExpectation("feed", true); + var peg$e65 = peg$literalExpectation("title", true); + var peg$e66 = peg$literalExpectation("submitterUserID", true); + var peg$e67 = peg$literalExpectation("submitter-user-id", true); + var peg$e68 = peg$literalExpectation("submitterPayrollID", true); + var peg$e69 = peg$literalExpectation("submitter-payroll-id", true); + var peg$e70 = peg$literalExpectation("orderDealNumbers", true); + var peg$e71 = peg$literalExpectation("order-deal-numbers", true); + var peg$e72 = peg$literalExpectation("assignee", true); + var peg$e73 = peg$literalExpectation("createdBy", true); + var peg$e74 = peg$literalExpectation("created-by", true); + var peg$e75 = peg$literalExpectation("action", true); + var peg$e76 = peg$literalExpectation("total", true); + var peg$e77 = peg$literalExpectation("has", true); + var peg$e78 = peg$literalExpectation("is", true); + var peg$e79 = peg$literalExpectation("purchaseAmount", true); + var peg$e80 = peg$literalExpectation("purchase-amount", true); + var peg$e81 = peg$literalExpectation("purchaseCurrency", true); + var peg$e82 = peg$literalExpectation("purchase-currency", true); + var peg$e83 = peg$literalExpectation("columns", true); + var peg$e84 = peg$literalExpectation("view", true); + var peg$e85 = peg$literalExpectation("per-diem", true); + var peg$e86 = peg$literalExpectation("drafts", true); + var peg$e87 = peg$literalExpectation("draft", true); + var peg$e88 = peg$literalExpectation("tax", true); + var peg$e89 = peg$literalExpectation("policy-name", true); + var peg$e90 = peg$literalExpectation("long-report-id", true); + var peg$e91 = peg$literalExpectation("exported-to", true); + var peg$e92 = peg$classExpectation([":", "="], false, false); + var peg$e93 = peg$literalExpectation("exportedTo", true); + var peg$e94 = peg$literalExpectation("exchange-rate", true); + var peg$e95 = peg$literalExpectation("reimbursable-total", true); + var peg$e96 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e97 = peg$literalExpectation("group-from", true); + var peg$e98 = peg$literalExpectation("group-expenses", true); + var peg$e99 = peg$literalExpectation("group-total", true); + var peg$e100 = peg$literalExpectation("group-card", true); + var peg$e101 = peg$literalExpectation("group-feed", true); + var peg$e102 = peg$literalExpectation("group-bank-account", true); + var peg$e103 = peg$literalExpectation("group-withdrawn", true); + var peg$e104 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e105 = peg$literalExpectation("group-amount-debited", true); + var peg$e106 = peg$literalExpectation("group-amount-reimbursed", true); + var peg$e107 = peg$literalExpectation("group-category", true); + var peg$e108 = peg$literalExpectation("group-tag", true); + var peg$e109 = peg$literalExpectation("group-merchant", true); + var peg$e110 = peg$literalExpectation("group-month", true); + var peg$e111 = peg$literalExpectation("group-week", true); + var peg$e112 = peg$literalExpectation("group-year", true); + var peg$e113 = peg$literalExpectation("group-quarter", true); + var peg$e114 = peg$otherExpectation("operator"); + var peg$e115 = peg$literalExpectation("!=", false); + var peg$e116 = peg$literalExpectation(">=", false); + var peg$e117 = peg$literalExpectation(">", false); + var peg$e118 = peg$literalExpectation("<=", false); + var peg$e119 = peg$literalExpectation("<", false); + var peg$e120 = peg$otherExpectation("word"); + var peg$e121 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e122 = peg$otherExpectation("whitespace"); + var peg$e123 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e124 = peg$otherExpectation("quote"); + var peg$e125 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e126 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e127 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e128 = peg$literalExpectation("\u201C", false); + var peg$e129 = peg$literalExpectation("\u201D", false); + var peg$e130 = peg$literalExpectation("\"", false); + var peg$e131 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e132 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e133 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e134 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e135 = peg$classExpectation([","], false, false); + var peg$e136 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; @@ -487,7 +491,7 @@ function peg$parse(input, options) { }; var peg$f4 = function() { autocomplete = null; }; var peg$f5 = function(k) { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "paidBy" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); return k; }; var peg$f6 = function(parts, empty) { @@ -526,110 +530,111 @@ function peg$parse(input, options) { var peg$f18 = function() { return "to"; }; var peg$f19 = function() { return "exporter"; }; var peg$f20 = function() { return "payer"; }; - var peg$f21 = function() { return "taxRate"; }; - var peg$f22 = function() { return "cardID"; }; - var peg$f23 = function() { return "bankAccount"; }; - var peg$f24 = function() { return "from"; }; - var peg$f25 = function() {return "attendee"}; - var peg$f26 = function() { return "expenseType"; }; - var peg$f27 = function() { return "receiptType"; }; - var peg$f28 = function() { return "withdrawalType"; }; - var peg$f29 = function() { return "withdrawalStatus"; }; - var peg$f30 = function() { return "paidStatus"; }; - var peg$f31 = function() { return "withdrawalID"; }; - var peg$f32 = function() { return "billable"; }; - var peg$f33 = function() { return "reimbursable"; }; - var peg$f34 = function() { return "type"; }; - var peg$f35 = function() { return "status"; }; - var peg$f36 = function() { return "sortBy"; }; - var peg$f37 = function() { return "sortOrder"; }; - var peg$f38 = function() { return "policyID"; }; - var peg$f39 = function() { return "submitted"; }; - var peg$f40 = function() { return "approved"; }; - var peg$f41 = function() { return "paid"; }; - var peg$f42 = function() { return "exported"; }; - var peg$f43 = function() { return "posted"; }; - var peg$f44 = function() { return "withdrawn"; }; - var peg$f45 = function() { return "groupBy"; }; - var peg$f46 = function() { return "limit"; }; - var peg$f47 = function() { return "feed"; }; - var peg$f48 = function() { return "title"; }; - var peg$f49 = function() { return "submitterUserID"; }; - var peg$f50 = function() { return "submitterPayrollID"; }; - var peg$f51 = function() { return "orderDealNumbers"; }; - var peg$f52 = function() { return "assignee"; }; - var peg$f53 = function() { return "createdBy"; }; - var peg$f54 = function() { return "action"; }; - var peg$f55 = function() {return "total"; }; - var peg$f56 = function() {return "has"; }; - var peg$f57 = function() {return "is"; }; - var peg$f58 = function() {return "purchaseAmount"}; - var peg$f59 = function() {return "purchaseCurrency"}; - var peg$f60 = function() { + var peg$f21 = function() { return "paidBy"; }; + var peg$f22 = function() { return "taxRate"; }; + var peg$f23 = function() { return "cardID"; }; + var peg$f24 = function() { return "bankAccount"; }; + var peg$f25 = function() { return "from"; }; + var peg$f26 = function() {return "attendee"}; + var peg$f27 = function() { return "expenseType"; }; + var peg$f28 = function() { return "receiptType"; }; + var peg$f29 = function() { return "withdrawalType"; }; + var peg$f30 = function() { return "withdrawalStatus"; }; + var peg$f31 = function() { return "paidStatus"; }; + var peg$f32 = function() { return "withdrawalID"; }; + var peg$f33 = function() { return "billable"; }; + var peg$f34 = function() { return "reimbursable"; }; + var peg$f35 = function() { return "type"; }; + var peg$f36 = function() { return "status"; }; + var peg$f37 = function() { return "sortBy"; }; + var peg$f38 = function() { return "sortOrder"; }; + var peg$f39 = function() { return "policyID"; }; + var peg$f40 = function() { return "submitted"; }; + var peg$f41 = function() { return "approved"; }; + var peg$f42 = function() { return "paid"; }; + var peg$f43 = function() { return "exported"; }; + var peg$f44 = function() { return "posted"; }; + var peg$f45 = function() { return "withdrawn"; }; + var peg$f46 = function() { return "groupBy"; }; + var peg$f47 = function() { return "limit"; }; + var peg$f48 = function() { return "feed"; }; + var peg$f49 = function() { return "title"; }; + var peg$f50 = function() { return "submitterUserID"; }; + var peg$f51 = function() { return "submitterPayrollID"; }; + var peg$f52 = function() { return "orderDealNumbers"; }; + var peg$f53 = function() { return "assignee"; }; + var peg$f54 = function() { return "createdBy"; }; + var peg$f55 = function() { return "action"; }; + var peg$f56 = function() {return "total"; }; + var peg$f57 = function() {return "has"; }; + var peg$f58 = function() {return "is"; }; + var peg$f59 = function() {return "purchaseAmount"}; + var peg$f60 = function() {return "purchaseCurrency"}; + var peg$f61 = function() { isColumnsContext = true; return "columns"; }; - var peg$f61 = function() {return "view"}; - var peg$f62 = function() { return isColumnsContext; }; - var peg$f63 = function() { return "perDiem"; }; - var peg$f64 = function() { return "drafts"; }; - var peg$f65 = function() { return "originalamount"; }; - var peg$f66 = function() { return "taxAmount"; }; - var peg$f67 = function() { return "taxrate"; }; - var peg$f68 = function() { return "policyname"; }; - var peg$f69 = function() { return "withdrawalID"; }; - var peg$f70 = function() { return "bankAccount"; }; - var peg$f71 = function() { return "reportID"; }; - var peg$f72 = function() { return "base62ReportID"; }; - var peg$f73 = function() { return "exportedto"; }; - var peg$f74 = function() { return "exportedTo"; }; + var peg$f62 = function() {return "view"}; + var peg$f63 = function() { return isColumnsContext; }; + var peg$f64 = function() { return "perDiem"; }; + var peg$f65 = function() { return "drafts"; }; + var peg$f66 = function() { return "originalamount"; }; + var peg$f67 = function() { return "taxAmount"; }; + var peg$f68 = function() { return "taxrate"; }; + var peg$f69 = function() { return "policyname"; }; + var peg$f70 = function() { return "withdrawalID"; }; + var peg$f71 = function() { return "bankAccount"; }; + var peg$f72 = function() { return "reportID"; }; + var peg$f73 = function() { return "base62ReportID"; }; + var peg$f74 = function() { return "exportedto"; }; var peg$f75 = function() { return "exportedTo"; }; - var peg$f76 = function() { return "exchangeRate"; }; - var peg$f77 = function() { return "reimbursableTotal"; }; - var peg$f78 = function() { return "nonReimbursableTotal"; }; - var peg$f79 = function() { return "groupFrom"; }; - var peg$f80 = function() { return "groupExpenses"; }; - var peg$f81 = function() { return "groupTotal"; }; - var peg$f82 = function() { return "groupCard"; }; - var peg$f83 = function() { return "groupFeed"; }; - var peg$f84 = function() { return "groupBankAccount"; }; - var peg$f85 = function() { return "groupWithdrawn"; }; - var peg$f86 = function() { return "groupWithdrawalID"; }; - var peg$f87 = function() { return "groupAmountDebited"; }; - var peg$f88 = function() { return "groupAmountReimbursed"; }; - var peg$f89 = function() { return "groupCategory"; }; - var peg$f90 = function() { return "groupTag"; }; - var peg$f91 = function() { return "groupMerchant"; }; - var peg$f92 = function() { return "groupmonth"; }; - var peg$f93 = function() { return "groupweek"; }; - var peg$f94 = function() { return "groupyear"; }; - var peg$f95 = function() { return "groupquarter"; }; - var peg$f96 = function() { return "eq"; }; - var peg$f97 = function() { return "neq"; }; - var peg$f98 = function() { return "gte"; }; - var peg$f99 = function() { return "gt"; }; - var peg$f100 = function() { return "lte"; }; - var peg$f101 = function() { return "lt"; }; - var peg$f102 = function(o) { + var peg$f76 = function() { return "exportedTo"; }; + var peg$f77 = function() { return "exchangeRate"; }; + var peg$f78 = function() { return "reimbursableTotal"; }; + var peg$f79 = function() { return "nonReimbursableTotal"; }; + var peg$f80 = function() { return "groupFrom"; }; + var peg$f81 = function() { return "groupExpenses"; }; + var peg$f82 = function() { return "groupTotal"; }; + var peg$f83 = function() { return "groupCard"; }; + var peg$f84 = function() { return "groupFeed"; }; + var peg$f85 = function() { return "groupBankAccount"; }; + var peg$f86 = function() { return "groupWithdrawn"; }; + var peg$f87 = function() { return "groupWithdrawalID"; }; + var peg$f88 = function() { return "groupAmountDebited"; }; + var peg$f89 = function() { return "groupAmountReimbursed"; }; + var peg$f90 = function() { return "groupCategory"; }; + var peg$f91 = function() { return "groupTag"; }; + var peg$f92 = function() { return "groupMerchant"; }; + var peg$f93 = function() { return "groupmonth"; }; + var peg$f94 = function() { return "groupweek"; }; + var peg$f95 = function() { return "groupyear"; }; + var peg$f96 = function() { return "groupquarter"; }; + var peg$f97 = function() { return "eq"; }; + var peg$f98 = function() { return "neq"; }; + var peg$f99 = function() { return "gte"; }; + var peg$f100 = function() { return "gt"; }; + var peg$f101 = function() { return "lte"; }; + var peg$f102 = function() { return "lt"; }; + var peg$f103 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f103 = function(chars) { return chars.join("").trim(); }; - var peg$f104 = function() { + var peg$f104 = function(chars) { return chars.join("").trim(); }; + var peg$f105 = function() { isColumnsContext = false; return "and"; }; - var peg$f105 = function() { return expectingNestedQuote; }; - var peg$f106 = function(start, inner, end) { //handle no-breaking space + var peg$f106 = function() { return expectingNestedQuote; }; + var peg$f107 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f107 = function(start) {return "“"}; - var peg$f108 = function(start) {return "”"}; - var peg$f109 = function(start) {return "\""}; - var peg$f110 = function(start, inner, end) { + var peg$f108 = function(start) {return "“"}; + var peg$f109 = function(start) {return "”"}; + var peg$f110 = function(start) {return "\""}; + var peg$f111 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -1064,91 +1069,94 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = peg$parsepayer(); if (s1 === peg$FAILED) { - s1 = peg$parseexporter(); + s1 = peg$parsepaidBy(); if (s1 === peg$FAILED) { - s1 = peg$parsecreatedBy(); + s1 = peg$parseexporter(); if (s1 === peg$FAILED) { - s1 = peg$parseassignee(); + s1 = peg$parsecreatedBy(); if (s1 === peg$FAILED) { - s1 = peg$parseexpenseType(); + s1 = peg$parseassignee(); if (s1 === peg$FAILED) { - s1 = peg$parsereceiptType(); + s1 = peg$parseexpenseType(); if (s1 === peg$FAILED) { - s1 = peg$parsewithdrawalType(); + s1 = peg$parsereceiptType(); if (s1 === peg$FAILED) { - s1 = peg$parsewithdrawalStatus(); + s1 = peg$parsewithdrawalType(); if (s1 === peg$FAILED) { - s1 = peg$parsepaidStatus(); + s1 = peg$parsewithdrawalStatus(); if (s1 === peg$FAILED) { - s1 = peg$parsetype(); + s1 = peg$parsepaidStatus(); if (s1 === peg$FAILED) { - s1 = peg$parsestatus(); + s1 = peg$parsetype(); if (s1 === peg$FAILED) { - s1 = peg$parsecardID(); + s1 = peg$parsestatus(); if (s1 === peg$FAILED) { - s1 = peg$parsebankAccount(); + s1 = peg$parsecardID(); if (s1 === peg$FAILED) { - s1 = peg$parsefeed(); + s1 = peg$parsebankAccount(); if (s1 === peg$FAILED) { - s1 = peg$parsegroupBy(); + s1 = peg$parsefeed(); if (s1 === peg$FAILED) { - s1 = peg$parseview(); + s1 = peg$parsegroupBy(); if (s1 === peg$FAILED) { - s1 = peg$parsereimbursable(); + s1 = peg$parseview(); if (s1 === peg$FAILED) { - s1 = peg$parsebillable(); + s1 = peg$parsereimbursable(); if (s1 === peg$FAILED) { - s1 = peg$parsepolicyID(); + s1 = peg$parsebillable(); if (s1 === peg$FAILED) { - s1 = peg$parseaction(); + s1 = peg$parsepolicyID(); if (s1 === peg$FAILED) { - s1 = peg$parsedate(); + s1 = peg$parseaction(); if (s1 === peg$FAILED) { - s1 = peg$parsesubmitted(); + s1 = peg$parsedate(); if (s1 === peg$FAILED) { - s1 = peg$parseapproved(); + s1 = peg$parsesubmitted(); if (s1 === peg$FAILED) { - s1 = peg$parsepaid(); + s1 = peg$parseapproved(); if (s1 === peg$FAILED) { - s1 = peg$parseexportedTo(); + s1 = peg$parsepaid(); if (s1 === peg$FAILED) { - s1 = peg$parseexported(); + s1 = peg$parseexportedTo(); if (s1 === peg$FAILED) { - s1 = peg$parsewithdrawn(); + s1 = peg$parseexported(); if (s1 === peg$FAILED) { - s1 = peg$parseposted(); + s1 = peg$parsewithdrawn(); if (s1 === peg$FAILED) { - s1 = peg$parsehas(); + s1 = peg$parseposted(); if (s1 === peg$FAILED) { - s1 = peg$parseis(); + s1 = peg$parsehas(); if (s1 === peg$FAILED) { - s1 = peg$parsepurchaseCurrency(); + s1 = peg$parseis(); if (s1 === peg$FAILED) { - s1 = peg$parsepurchaseAmount(); + s1 = peg$parsepurchaseCurrency(); if (s1 === peg$FAILED) { - s1 = peg$parseamount(); + s1 = peg$parsepurchaseAmount(); if (s1 === peg$FAILED) { - s1 = peg$parsemerchant(); + s1 = peg$parseamount(); if (s1 === peg$FAILED) { - s1 = peg$parsedescription(); + s1 = peg$parsemerchant(); if (s1 === peg$FAILED) { - s1 = peg$parsereportID(); + s1 = peg$parsedescription(); if (s1 === peg$FAILED) { - s1 = peg$parsewithdrawalID(); + s1 = peg$parsereportID(); if (s1 === peg$FAILED) { - s1 = peg$parsetitle(); + s1 = peg$parsewithdrawalID(); if (s1 === peg$FAILED) { - s1 = peg$parsesubmitterUserID(); + s1 = peg$parsetitle(); if (s1 === peg$FAILED) { - s1 = peg$parsesubmitterPayrollID(); + s1 = peg$parsesubmitterUserID(); if (s1 === peg$FAILED) { - s1 = peg$parseorderDealNumbers(); + s1 = peg$parsesubmitterPayrollID(); if (s1 === peg$FAILED) { - s1 = peg$parsereportFieldDynamic(); + s1 = peg$parseorderDealNumbers(); if (s1 === peg$FAILED) { - s1 = peg$parsecolumns(); + s1 = peg$parsereportFieldDynamic(); if (s1 === peg$FAILED) { - s1 = peg$parselimit(); + s1 = peg$parsecolumns(); + if (s1 === peg$FAILED) { + s1 = peg$parselimit(); + } } } } @@ -1591,21 +1599,21 @@ function peg$parse(input, options) { return s0; } - function peg$parsetaxRate() { + function peg$parsepaidBy() { var s0, s1; - s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c20) { - peg$currPos += 7; + if (input.substr(peg$currPos, 6) === peg$c20) { + s0 = peg$c20; + peg$currPos += 6; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e23); } } if (s0 === peg$FAILED) { s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); + s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; + peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e24); } @@ -1620,21 +1628,21 @@ function peg$parse(input, options) { return s0; } - function peg$parsecardID() { + function peg$parsetaxRate() { var s0, s1; - if (input.substr(peg$currPos, 6) === peg$c22) { - s0 = peg$c22; - peg$currPos += 6; + s0 = input.substr(peg$currPos, 7); + if (s0.toLowerCase() === peg$c22) { + peg$currPos += 7; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e25); } } if (s0 === peg$FAILED) { s0 = peg$currPos; - s1 = input.substr(peg$currPos, 4); + s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c23) { - peg$currPos += 4; + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e26); } @@ -1649,21 +1657,21 @@ function peg$parse(input, options) { return s0; } - function peg$parsebankAccount() { + function peg$parsecardID() { var s0, s1; - if (input.substr(peg$currPos, 11) === peg$c24) { + if (input.substr(peg$currPos, 6) === peg$c24) { s0 = peg$c24; - peg$currPos += 11; + peg$currPos += 6; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e27); } } if (s0 === peg$FAILED) { s0 = peg$currPos; - s1 = input.substr(peg$currPos, 12); + s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c25) { - peg$currPos += 12; + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e28); } @@ -1678,20 +1686,49 @@ function peg$parse(input, options) { return s0; } + function peg$parsebankAccount() { + var s0, s1; + + if (input.substr(peg$currPos, 11) === peg$c26) { + s0 = peg$c26; + peg$currPos += 11; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e29); } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 12); + if (s1.toLowerCase() === peg$c27) { + peg$currPos += 12; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e30); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f24(); + } + s0 = s1; + } + + return s0; + } + function peg$parsefrom() { var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c26) { + if (s1.toLowerCase() === peg$c28) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e29); } + if (peg$silentFails === 0) { peg$fail(peg$e31); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f24(); + s1 = peg$f25(); } s0 = s1; @@ -1703,15 +1740,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c27) { + if (s1.toLowerCase() === peg$c29) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e30); } + if (peg$silentFails === 0) { peg$fail(peg$e32); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f25(); + s1 = peg$f26(); } s0 = s1; @@ -1721,25 +1758,25 @@ function peg$parse(input, options) { function peg$parseexpenseType() { var s0, s1; - if (input.substr(peg$currPos, 11) === peg$c28) { - s0 = peg$c28; + if (input.substr(peg$currPos, 11) === peg$c30) { + s0 = peg$c30; peg$currPos += 11; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e31); } + if (peg$silentFails === 0) { peg$fail(peg$e33); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c29) { + if (s1.toLowerCase() === peg$c31) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e32); } + if (peg$silentFails === 0) { peg$fail(peg$e34); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f26(); + s1 = peg$f27(); } s0 = s1; } @@ -1750,25 +1787,25 @@ function peg$parse(input, options) { function peg$parsereceiptType() { var s0, s1; - if (input.substr(peg$currPos, 11) === peg$c30) { - s0 = peg$c30; + if (input.substr(peg$currPos, 11) === peg$c32) { + s0 = peg$c32; peg$currPos += 11; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e33); } + if (peg$silentFails === 0) { peg$fail(peg$e35); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c31) { + if (s1.toLowerCase() === peg$c33) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e34); } + if (peg$silentFails === 0) { peg$fail(peg$e36); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f27(); + s1 = peg$f28(); } s0 = s1; } @@ -1779,25 +1816,25 @@ function peg$parse(input, options) { function peg$parsewithdrawalType() { var s0, s1; - if (input.substr(peg$currPos, 14) === peg$c32) { - s0 = peg$c32; + if (input.substr(peg$currPos, 14) === peg$c34) { + s0 = peg$c34; peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e35); } + if (peg$silentFails === 0) { peg$fail(peg$e37); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c33) { + if (s1.toLowerCase() === peg$c35) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e36); } + if (peg$silentFails === 0) { peg$fail(peg$e38); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f28(); + s1 = peg$f29(); } s0 = s1; } @@ -1808,25 +1845,25 @@ function peg$parse(input, options) { function peg$parsewithdrawalStatus() { var s0, s1; - if (input.substr(peg$currPos, 16) === peg$c34) { - s0 = peg$c34; + if (input.substr(peg$currPos, 16) === peg$c36) { + s0 = peg$c36; peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e37); } + if (peg$silentFails === 0) { peg$fail(peg$e39); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c35) { + if (s1.toLowerCase() === peg$c37) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e38); } + if (peg$silentFails === 0) { peg$fail(peg$e40); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f29(); + s1 = peg$f30(); } s0 = s1; } @@ -1837,25 +1874,25 @@ function peg$parse(input, options) { function peg$parsepaidStatus() { var s0, s1; - if (input.substr(peg$currPos, 10) === peg$c36) { - s0 = peg$c36; + if (input.substr(peg$currPos, 10) === peg$c38) { + s0 = peg$c38; peg$currPos += 10; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e39); } + if (peg$silentFails === 0) { peg$fail(peg$e41); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c37) { + if (s1.toLowerCase() === peg$c39) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e40); } + if (peg$silentFails === 0) { peg$fail(peg$e42); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f30(); + s1 = peg$f31(); } s0 = s1; } @@ -1867,24 +1904,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 12); - if (s0.toLowerCase() === peg$c38) { + if (s0.toLowerCase() === peg$c40) { peg$currPos += 12; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e41); } + if (peg$silentFails === 0) { peg$fail(peg$e43); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c39) { + if (s1.toLowerCase() === peg$c41) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } + if (peg$silentFails === 0) { peg$fail(peg$e44); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f31(); + s1 = peg$f32(); } s0 = s1; } @@ -1897,15 +1934,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c40) { + if (s1.toLowerCase() === peg$c42) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e43); } + if (peg$silentFails === 0) { peg$fail(peg$e45); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f32(); + s1 = peg$f33(); } s0 = s1; @@ -1917,15 +1954,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c41) { + if (s1.toLowerCase() === peg$c43) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e44); } + if (peg$silentFails === 0) { peg$fail(peg$e46); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f33(); + s1 = peg$f34(); } s0 = s1; @@ -1937,15 +1974,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c42) { + if (s1.toLowerCase() === peg$c44) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e45); } + if (peg$silentFails === 0) { peg$fail(peg$e47); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f34(); + s1 = peg$f35(); } s0 = s1; @@ -1957,15 +1994,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c43) { + if (s1.toLowerCase() === peg$c45) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e46); } + if (peg$silentFails === 0) { peg$fail(peg$e48); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f35(); + s1 = peg$f36(); } s0 = s1; @@ -1975,25 +2012,25 @@ function peg$parse(input, options) { function peg$parsesortBy() { var s0, s1; - if (input.substr(peg$currPos, 6) === peg$c44) { - s0 = peg$c44; + if (input.substr(peg$currPos, 6) === peg$c46) { + s0 = peg$c46; peg$currPos += 6; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e47); } + if (peg$silentFails === 0) { peg$fail(peg$e49); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c45) { + if (s1.toLowerCase() === peg$c47) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e48); } + if (peg$silentFails === 0) { peg$fail(peg$e50); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f36(); + s1 = peg$f37(); } s0 = s1; } @@ -2004,25 +2041,25 @@ function peg$parse(input, options) { function peg$parsesortOrder() { var s0, s1; - if (input.substr(peg$currPos, 9) === peg$c46) { - s0 = peg$c46; + if (input.substr(peg$currPos, 9) === peg$c48) { + s0 = peg$c48; peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e49); } + if (peg$silentFails === 0) { peg$fail(peg$e51); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c47) { + if (s1.toLowerCase() === peg$c49) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e50); } + if (peg$silentFails === 0) { peg$fail(peg$e52); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f37(); + s1 = peg$f38(); } s0 = s1; } @@ -2033,25 +2070,25 @@ function peg$parse(input, options) { function peg$parsepolicyID() { var s0, s1; - if (input.substr(peg$currPos, 8) === peg$c48) { - s0 = peg$c48; + if (input.substr(peg$currPos, 8) === peg$c50) { + s0 = peg$c50; peg$currPos += 8; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e51); } + if (peg$silentFails === 0) { peg$fail(peg$e53); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c49) { + if (s1.toLowerCase() === peg$c51) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e52); } + if (peg$silentFails === 0) { peg$fail(peg$e54); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f38(); + s1 = peg$f39(); } s0 = s1; } @@ -2064,15 +2101,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c50) { + if (s1.toLowerCase() === peg$c52) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e53); } + if (peg$silentFails === 0) { peg$fail(peg$e55); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f39(); + s1 = peg$f40(); } s0 = s1; @@ -2084,15 +2121,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c51) { + if (s1.toLowerCase() === peg$c53) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e54); } + if (peg$silentFails === 0) { peg$fail(peg$e56); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f40(); + s1 = peg$f41(); } s0 = s1; @@ -2104,15 +2141,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c52) { + if (s1.toLowerCase() === peg$c54) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e55); } + if (peg$silentFails === 0) { peg$fail(peg$e57); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f41(); + s1 = peg$f42(); } s0 = s1; @@ -2124,15 +2161,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c53) { + if (s1.toLowerCase() === peg$c55) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e56); } + if (peg$silentFails === 0) { peg$fail(peg$e58); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f42(); + s1 = peg$f43(); } s0 = s1; @@ -2144,15 +2181,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c54) { + if (s1.toLowerCase() === peg$c56) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e57); } + if (peg$silentFails === 0) { peg$fail(peg$e59); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f43(); + s1 = peg$f44(); } s0 = s1; @@ -2164,15 +2201,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c55) { + if (s1.toLowerCase() === peg$c57) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e58); } + if (peg$silentFails === 0) { peg$fail(peg$e60); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f44(); + s1 = peg$f45(); } s0 = s1; @@ -2183,24 +2220,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c56) { + if (s0.toLowerCase() === peg$c58) { peg$currPos += 7; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e59); } + if (peg$silentFails === 0) { peg$fail(peg$e61); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c57) { + if (s1.toLowerCase() === peg$c59) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e60); } + if (peg$silentFails === 0) { peg$fail(peg$e62); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f45(); + s1 = peg$f46(); } s0 = s1; } @@ -2213,15 +2250,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c58) { + if (s1.toLowerCase() === peg$c60) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e61); } + if (peg$silentFails === 0) { peg$fail(peg$e63); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f46(); + s1 = peg$f47(); } s0 = s1; @@ -2233,15 +2270,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c59) { + if (s1.toLowerCase() === peg$c61) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e62); } + if (peg$silentFails === 0) { peg$fail(peg$e64); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f47(); + s1 = peg$f48(); } s0 = s1; @@ -2253,15 +2290,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c60) { + if (s1.toLowerCase() === peg$c62) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e63); } + if (peg$silentFails === 0) { peg$fail(peg$e65); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f48(); + s1 = peg$f49(); } s0 = s1; @@ -2272,24 +2309,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 15); - if (s0.toLowerCase() === peg$c61) { + if (s0.toLowerCase() === peg$c63) { peg$currPos += 15; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e64); } + if (peg$silentFails === 0) { peg$fail(peg$e66); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c62) { + if (s1.toLowerCase() === peg$c64) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e65); } + if (peg$silentFails === 0) { peg$fail(peg$e67); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f49(); + s1 = peg$f50(); } s0 = s1; } @@ -2301,24 +2338,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 18); - if (s0.toLowerCase() === peg$c63) { + if (s0.toLowerCase() === peg$c65) { peg$currPos += 18; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e66); } + if (peg$silentFails === 0) { peg$fail(peg$e68); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c64) { + if (s1.toLowerCase() === peg$c66) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e67); } + if (peg$silentFails === 0) { peg$fail(peg$e69); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f50(); + s1 = peg$f51(); } s0 = s1; } @@ -2330,24 +2367,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c65) { + if (s0.toLowerCase() === peg$c67) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e68); } + if (peg$silentFails === 0) { peg$fail(peg$e70); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c66) { + if (s1.toLowerCase() === peg$c68) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e69); } + if (peg$silentFails === 0) { peg$fail(peg$e71); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f51(); + s1 = peg$f52(); } s0 = s1; } @@ -2360,15 +2397,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c67) { + if (s1.toLowerCase() === peg$c69) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e70); } + if (peg$silentFails === 0) { peg$fail(peg$e72); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f52(); + s1 = peg$f53(); } s0 = s1; @@ -2379,24 +2416,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c68) { + if (s0.toLowerCase() === peg$c70) { peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e71); } + if (peg$silentFails === 0) { peg$fail(peg$e73); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c69) { + if (s1.toLowerCase() === peg$c71) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e72); } + if (peg$silentFails === 0) { peg$fail(peg$e74); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f53(); + s1 = peg$f54(); } s0 = s1; } @@ -2409,15 +2446,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c70) { + if (s1.toLowerCase() === peg$c72) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e73); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f54(); + s1 = peg$f55(); } s0 = s1; @@ -2429,15 +2466,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c71) { + if (s1.toLowerCase() === peg$c73) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e74); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f55(); + s1 = peg$f56(); } s0 = s1; @@ -2449,15 +2486,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c72) { + if (s1.toLowerCase() === peg$c74) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f56(); + s1 = peg$f57(); } s0 = s1; @@ -2469,15 +2506,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c73) { + if (s1.toLowerCase() === peg$c75) { peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f57(); + s1 = peg$f58(); } s0 = s1; @@ -2488,24 +2525,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c74) { + if (s0.toLowerCase() === peg$c76) { peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f58(); + s1 = peg$f59(); } s0 = s1; } @@ -2517,24 +2554,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c76) { + if (s0.toLowerCase() === peg$c78) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c79) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f59(); + s1 = peg$f60(); } s0 = s1; } @@ -2547,15 +2584,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c78) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f60(); + s1 = peg$f61(); } s0 = s1; @@ -2567,15 +2604,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f61(); + s1 = peg$f62(); } s0 = s1; @@ -2587,7 +2624,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f62(); + s1 = peg$f63(); if (s1) { s1 = undefined; } else { @@ -2713,11 +2750,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c80) { + if (s1.toLowerCase() === peg$c82) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2732,7 +2769,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f63(); + s0 = peg$f64(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2750,19 +2787,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c83) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c82) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } } if (s1 !== peg$FAILED) { @@ -2778,7 +2815,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f64(); + s0 = peg$f65(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2796,11 +2833,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2815,7 +2852,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f65(); + s0 = peg$f66(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2833,11 +2870,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c85) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2852,7 +2889,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f66(); + s0 = peg$f67(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2870,11 +2907,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c21) { + if (s1.toLowerCase() === peg$c23) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e24); } + if (peg$silentFails === 0) { peg$fail(peg$e26); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2889,7 +2926,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f67(); + s0 = peg$f68(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2907,11 +2944,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c84) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2926,7 +2963,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f68(); + s0 = peg$f69(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2944,11 +2981,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c39) { + if (s1.toLowerCase() === peg$c41) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } + if (peg$silentFails === 0) { peg$fail(peg$e44); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2963,7 +3000,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f69(); + s0 = peg$f70(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2981,11 +3018,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c25) { + if (s1.toLowerCase() === peg$c27) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e28); } + if (peg$silentFails === 0) { peg$fail(peg$e30); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3000,7 +3037,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f70(); + s0 = peg$f71(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3018,11 +3055,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c87) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3037,7 +3074,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f71(); + s0 = peg$f72(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3074,7 +3111,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f72(); + s0 = peg$f73(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3092,11 +3129,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c86) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3111,7 +3148,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f73(); + s0 = peg$f74(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3136,7 +3173,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -3155,11 +3192,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c89) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3174,7 +3211,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f74(); + s0 = peg$f75(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3186,11 +3223,11 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c86) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3205,7 +3242,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f75(); + s0 = peg$f76(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3224,11 +3261,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c88) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3243,7 +3280,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f76(); + s0 = peg$f77(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3261,11 +3298,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c91) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3280,7 +3317,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f77(); + s0 = peg$f78(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3298,11 +3335,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c90) { + if (s1.toLowerCase() === peg$c92) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3317,7 +3354,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f78(); + s0 = peg$f79(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3335,11 +3372,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c91) { + if (s1.toLowerCase() === peg$c93) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3354,7 +3391,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f79(); + s0 = peg$f80(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3372,11 +3409,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c92) { + if (s1.toLowerCase() === peg$c94) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3391,7 +3428,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f80(); + s0 = peg$f81(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3409,11 +3446,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c93) { + if (s1.toLowerCase() === peg$c95) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3428,7 +3465,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f81(); + s0 = peg$f82(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3446,11 +3483,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c94) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3465,7 +3502,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f82(); + s0 = peg$f83(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3483,11 +3520,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3502,7 +3539,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f83(); + s0 = peg$f84(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3520,11 +3557,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c96) { + if (s1.toLowerCase() === peg$c98) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3539,7 +3576,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f84(); + s0 = peg$f85(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3557,11 +3594,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c99) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3576,7 +3613,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f85(); + s0 = peg$f86(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3594,11 +3631,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c98) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3613,7 +3650,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f86(); + s0 = peg$f87(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3631,11 +3668,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c101) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3650,7 +3687,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f87(); + s0 = peg$f88(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3668,11 +3705,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 23); - if (s1.toLowerCase() === peg$c100) { + if (s1.toLowerCase() === peg$c102) { peg$currPos += 23; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3687,7 +3724,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f88(); + s0 = peg$f89(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3705,11 +3742,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c101) { + if (s1.toLowerCase() === peg$c103) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3724,7 +3761,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f89(); + s0 = peg$f90(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3742,11 +3779,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c102) { + if (s1.toLowerCase() === peg$c104) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3761,7 +3798,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f90(); + s0 = peg$f91(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3779,11 +3816,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c103) { + if (s1.toLowerCase() === peg$c105) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3798,7 +3835,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f91(); + s0 = peg$f92(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3816,11 +3853,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c104) { + if (s1.toLowerCase() === peg$c106) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3835,7 +3872,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f92(); + s0 = peg$f93(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3853,11 +3890,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c105) { + if (s1.toLowerCase() === peg$c107) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3872,7 +3909,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f93(); + s0 = peg$f94(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3890,11 +3927,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c106) { + if (s1.toLowerCase() === peg$c108) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3909,7 +3946,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f94(); + s0 = peg$f95(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3927,11 +3964,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c107) { + if (s1.toLowerCase() === peg$c109) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3946,7 +3983,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f95(); + s0 = peg$f96(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3969,81 +4006,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f96(); + s1 = peg$f97(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c108) { - s1 = peg$c108; + if (input.substr(peg$currPos, 2) === peg$c110) { + s1 = peg$c110; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f97(); + s1 = peg$f98(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c109) { - s1 = peg$c109; + if (input.substr(peg$currPos, 2) === peg$c111) { + s1 = peg$c111; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f98(); + s1 = peg$f99(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c110; + s1 = peg$c112; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f99(); + s1 = peg$f100(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c111) { - s1 = peg$c111; + if (input.substr(peg$currPos, 2) === peg$c113) { + s1 = peg$c113; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f100(); + s1 = peg$f101(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c112; + s1 = peg$c114; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f101(); + s1 = peg$f102(); } s0 = s1; } @@ -4054,7 +4091,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } return s0; @@ -4067,7 +4104,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f102(s1); + s1 = peg$f103(s1); } s0 = s1; @@ -4085,7 +4122,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -4095,7 +4132,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } } } else { @@ -4103,13 +4140,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f103(s1); + s1 = peg$f104(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } return s0; @@ -4121,7 +4158,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f104(); + s1 = peg$f105(); s0 = s1; return s0; @@ -4137,7 +4174,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4146,12 +4183,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } return s0; } @@ -4161,7 +4198,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f105(); + s1 = peg$f106(); if (s1) { s1 = undefined; } else { @@ -4198,7 +4235,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4207,7 +4244,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } } s2 = input.charAt(peg$currPos); @@ -4215,7 +4252,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4224,7 +4261,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4233,7 +4270,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } } s4 = input.charAt(peg$currPos); @@ -4241,7 +4278,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4250,7 +4287,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4259,11 +4296,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } } peg$savedPos = s0; - s0 = peg$f106(s1, s3, s5); + s0 = peg$f107(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4275,7 +4312,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } } return s0; @@ -4292,7 +4329,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4301,7 +4338,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } } s2 = input.charAt(peg$currPos); @@ -4309,7 +4346,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4318,7 +4355,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4334,15 +4371,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c113; + s6 = peg$c115; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f107(s1); + s4 = peg$f108(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4365,15 +4402,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c114; + s6 = peg$c116; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f108(s1); + s4 = peg$f109(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4396,15 +4433,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c115; + s6 = peg$c117; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f109(s1); + s4 = peg$f110(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4423,7 +4460,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4439,15 +4476,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c113; + s6 = peg$c115; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f107(s1); + s4 = peg$f108(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4470,15 +4507,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c114; + s6 = peg$c116; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f108(s1); + s4 = peg$f109(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4501,15 +4538,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c115; + s6 = peg$c117; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f109(s1); + s4 = peg$f110(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4525,7 +4562,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f110(s1, s3, s4); + s0 = peg$f111(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4537,7 +4574,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } } return s0; @@ -4552,7 +4589,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4590,7 +4627,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4599,7 +4636,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } } s2 = []; @@ -4608,7 +4645,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -4617,7 +4654,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } } s3 = []; @@ -4626,7 +4663,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4635,7 +4672,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } } s4 = peg$parseoperator(); @@ -4654,7 +4691,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4663,7 +4700,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } } s2 = peg$currPos; @@ -4710,7 +4747,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } } } @@ -4726,7 +4763,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } if (s0 === peg$FAILED) { s0 = peg$currPos; diff --git a/src/libs/SearchParser/autocompleteParser.peggy b/src/libs/SearchParser/autocompleteParser.peggy index 885f0cf30bfa..28e6a10af227 100644 --- a/src/libs/SearchParser/autocompleteParser.peggy +++ b/src/libs/SearchParser/autocompleteParser.peggy @@ -86,6 +86,7 @@ autocompleteKey "key" / from / attendee / payer + / paidBy / exporter / createdBy / assignee @@ -133,7 +134,7 @@ autocompleteKey "key" filterKey = k:autocompleteKey { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "paidBy" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); return k; } diff --git a/src/libs/SearchParser/baseRules.peggy b/src/libs/SearchParser/baseRules.peggy index 40e4ce0b39dc..401c443fda91 100644 --- a/src/libs/SearchParser/baseRules.peggy +++ b/src/libs/SearchParser/baseRules.peggy @@ -32,6 +32,9 @@ category = "category"i { return "category"; } to = "to"i { return "to"; } exporter = "exporter"i { return "exporter"; } payer = "payer"i { return "payer"; } +paidBy + = "paidBy" + / "paid-by"i { return "paidBy"; } taxRate = "taxRate"i / "tax-rate"i { return "taxRate"; } diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index 409c3b188df4..16a9345694ef 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -204,102 +204,104 @@ function peg$parse(input, options) { var peg$c17 = "to"; var peg$c18 = "exporter"; var peg$c19 = "payer"; - var peg$c20 = "taxrate"; - var peg$c21 = "tax-rate"; - var peg$c22 = "cardID"; - var peg$c23 = "card"; - var peg$c24 = "bankAccount"; - var peg$c25 = "bank-account"; - var peg$c26 = "from"; - var peg$c27 = "attendee"; - var peg$c28 = "expenseType"; - var peg$c29 = "expense-type"; - var peg$c30 = "receiptType"; - var peg$c31 = "receipt-type"; - var peg$c32 = "withdrawalType"; - var peg$c33 = "withdrawal-type"; - var peg$c34 = "withdrawalStatus"; - var peg$c35 = "withdrawal-status"; - var peg$c36 = "paidStatus"; - var peg$c37 = "paid-status"; - var peg$c38 = "withdrawalid"; - var peg$c39 = "withdrawal-id"; - var peg$c40 = "billable"; - var peg$c41 = "reimbursable"; - var peg$c42 = "type"; - var peg$c43 = "status"; - var peg$c44 = "sortBy"; - var peg$c45 = "sort-by"; - var peg$c46 = "sortOrder"; - var peg$c47 = "sort-order"; - var peg$c48 = "policyID"; - var peg$c49 = "workspace"; - var peg$c50 = "submitted"; - var peg$c51 = "approved"; - var peg$c52 = "paid"; - var peg$c53 = "exported"; - var peg$c54 = "posted"; - var peg$c55 = "withdrawn"; - var peg$c56 = "groupby"; - var peg$c57 = "group-by"; - var peg$c58 = "limit"; - var peg$c59 = "feed"; - var peg$c60 = "title"; - var peg$c61 = "submitteruserid"; - var peg$c62 = "submitter-user-id"; - var peg$c63 = "submitterpayrollid"; - var peg$c64 = "submitter-payroll-id"; - var peg$c65 = "orderdealnumbers"; - var peg$c66 = "order-deal-numbers"; - var peg$c67 = "assignee"; - var peg$c68 = "createdby"; - var peg$c69 = "created-by"; - var peg$c70 = "action"; - var peg$c71 = "total"; - var peg$c72 = "has"; - var peg$c73 = "is"; - var peg$c74 = "purchaseamount"; - var peg$c75 = "purchase-amount"; - var peg$c76 = "purchasecurrency"; - var peg$c77 = "purchase-currency"; - var peg$c78 = "columns"; - var peg$c79 = "view"; - var peg$c80 = "per-diem"; - var peg$c81 = "drafts"; - var peg$c82 = "draft"; - var peg$c83 = "tax"; - var peg$c84 = "policy-name"; - var peg$c85 = "long-report-id"; - var peg$c86 = "exported-to"; - var peg$c87 = "exportedto"; - var peg$c88 = "exchange-rate"; - var peg$c89 = "reimbursable-total"; - var peg$c90 = "non-reimbursable-total"; - var peg$c91 = "group-from"; - var peg$c92 = "group-expenses"; - var peg$c93 = "group-total"; - var peg$c94 = "group-card"; - var peg$c95 = "group-feed"; - var peg$c96 = "group-bank-account"; - var peg$c97 = "group-withdrawn"; - var peg$c98 = "group-withdrawal-id"; - var peg$c99 = "group-amount-debited"; - var peg$c100 = "group-amount-reimbursed"; - var peg$c101 = "group-category"; - var peg$c102 = "group-tag"; - var peg$c103 = "group-merchant"; - var peg$c104 = "group-month"; - var peg$c105 = "group-week"; - var peg$c106 = "group-year"; - var peg$c107 = "group-quarter"; - var peg$c108 = "!="; - var peg$c109 = ">="; - var peg$c110 = ">"; - var peg$c111 = "<="; - var peg$c112 = "<"; - var peg$c113 = "\u201C"; - var peg$c114 = "\u201D"; - var peg$c115 = "\""; + var peg$c20 = "paidBy"; + var peg$c21 = "paid-by"; + var peg$c22 = "taxrate"; + var peg$c23 = "tax-rate"; + var peg$c24 = "cardID"; + var peg$c25 = "card"; + var peg$c26 = "bankAccount"; + var peg$c27 = "bank-account"; + var peg$c28 = "from"; + var peg$c29 = "attendee"; + var peg$c30 = "expenseType"; + var peg$c31 = "expense-type"; + var peg$c32 = "receiptType"; + var peg$c33 = "receipt-type"; + var peg$c34 = "withdrawalType"; + var peg$c35 = "withdrawal-type"; + var peg$c36 = "withdrawalStatus"; + var peg$c37 = "withdrawal-status"; + var peg$c38 = "paidStatus"; + var peg$c39 = "paid-status"; + var peg$c40 = "withdrawalid"; + var peg$c41 = "withdrawal-id"; + var peg$c42 = "billable"; + var peg$c43 = "reimbursable"; + var peg$c44 = "type"; + var peg$c45 = "status"; + var peg$c46 = "sortBy"; + var peg$c47 = "sort-by"; + var peg$c48 = "sortOrder"; + var peg$c49 = "sort-order"; + var peg$c50 = "policyID"; + var peg$c51 = "workspace"; + var peg$c52 = "submitted"; + var peg$c53 = "approved"; + var peg$c54 = "paid"; + var peg$c55 = "exported"; + var peg$c56 = "posted"; + var peg$c57 = "withdrawn"; + var peg$c58 = "groupby"; + var peg$c59 = "group-by"; + var peg$c60 = "limit"; + var peg$c61 = "feed"; + var peg$c62 = "title"; + var peg$c63 = "submitteruserid"; + var peg$c64 = "submitter-user-id"; + var peg$c65 = "submitterpayrollid"; + var peg$c66 = "submitter-payroll-id"; + var peg$c67 = "orderdealnumbers"; + var peg$c68 = "order-deal-numbers"; + var peg$c69 = "assignee"; + var peg$c70 = "createdby"; + var peg$c71 = "created-by"; + var peg$c72 = "action"; + var peg$c73 = "total"; + var peg$c74 = "has"; + var peg$c75 = "is"; + var peg$c76 = "purchaseamount"; + var peg$c77 = "purchase-amount"; + var peg$c78 = "purchasecurrency"; + var peg$c79 = "purchase-currency"; + var peg$c80 = "columns"; + var peg$c81 = "view"; + var peg$c82 = "per-diem"; + var peg$c83 = "drafts"; + var peg$c84 = "draft"; + var peg$c85 = "tax"; + var peg$c86 = "policy-name"; + var peg$c87 = "long-report-id"; + var peg$c88 = "exported-to"; + var peg$c89 = "exportedto"; + var peg$c90 = "exchange-rate"; + var peg$c91 = "reimbursable-total"; + var peg$c92 = "non-reimbursable-total"; + var peg$c93 = "group-from"; + var peg$c94 = "group-expenses"; + var peg$c95 = "group-total"; + var peg$c96 = "group-card"; + var peg$c97 = "group-feed"; + var peg$c98 = "group-bank-account"; + var peg$c99 = "group-withdrawn"; + var peg$c100 = "group-withdrawal-id"; + var peg$c101 = "group-amount-debited"; + var peg$c102 = "group-amount-reimbursed"; + var peg$c103 = "group-category"; + var peg$c104 = "group-tag"; + var peg$c105 = "group-merchant"; + var peg$c106 = "group-month"; + var peg$c107 = "group-week"; + var peg$c108 = "group-year"; + var peg$c109 = "group-quarter"; + var peg$c110 = "!="; + var peg$c111 = ">="; + var peg$c112 = ">"; + var peg$c113 = "<="; + var peg$c114 = "<"; + var peg$c115 = "\u201C"; + var peg$c116 = "\u201D"; + var peg$c117 = "\""; var peg$r0 = /^[^ \t\r\n\xA0]/; var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; @@ -341,118 +343,120 @@ function peg$parse(input, options) { var peg$e22 = peg$literalExpectation("to", true); var peg$e23 = peg$literalExpectation("exporter", true); var peg$e24 = peg$literalExpectation("payer", true); - var peg$e25 = peg$literalExpectation("taxRate", true); - var peg$e26 = peg$literalExpectation("tax-rate", true); - var peg$e27 = peg$literalExpectation("cardID", false); - var peg$e28 = peg$literalExpectation("card", true); - var peg$e29 = peg$literalExpectation("bankAccount", false); - var peg$e30 = peg$literalExpectation("bank-account", true); - var peg$e31 = peg$literalExpectation("from", true); - var peg$e32 = peg$literalExpectation("attendee", true); - var peg$e33 = peg$literalExpectation("expenseType", false); - var peg$e34 = peg$literalExpectation("expense-type", true); - var peg$e35 = peg$literalExpectation("receiptType", false); - var peg$e36 = peg$literalExpectation("receipt-type", true); - var peg$e37 = peg$literalExpectation("withdrawalType", false); - var peg$e38 = peg$literalExpectation("withdrawal-type", true); - var peg$e39 = peg$literalExpectation("withdrawalStatus", false); - var peg$e40 = peg$literalExpectation("withdrawal-status", true); - var peg$e41 = peg$literalExpectation("paidStatus", false); - var peg$e42 = peg$literalExpectation("paid-status", true); - var peg$e43 = peg$literalExpectation("withdrawalID", true); - var peg$e44 = peg$literalExpectation("withdrawal-id", true); - var peg$e45 = peg$literalExpectation("billable", true); - var peg$e46 = peg$literalExpectation("reimbursable", true); - var peg$e47 = peg$literalExpectation("type", true); - var peg$e48 = peg$literalExpectation("status", true); - var peg$e49 = peg$literalExpectation("sortBy", false); - var peg$e50 = peg$literalExpectation("sort-by", true); - var peg$e51 = peg$literalExpectation("sortOrder", false); - var peg$e52 = peg$literalExpectation("sort-order", true); - var peg$e53 = peg$literalExpectation("policyID", false); - var peg$e54 = peg$literalExpectation("workspace", true); - var peg$e55 = peg$literalExpectation("submitted", true); - var peg$e56 = peg$literalExpectation("approved", true); - var peg$e57 = peg$literalExpectation("paid", true); - var peg$e58 = peg$literalExpectation("exported", true); - var peg$e59 = peg$literalExpectation("posted", true); - var peg$e60 = peg$literalExpectation("withdrawn", true); - var peg$e61 = peg$literalExpectation("groupBy", true); - var peg$e62 = peg$literalExpectation("group-by", true); - var peg$e63 = peg$literalExpectation("limit", true); - var peg$e64 = peg$literalExpectation("feed", true); - var peg$e65 = peg$literalExpectation("title", true); - var peg$e66 = peg$literalExpectation("submitterUserID", true); - var peg$e67 = peg$literalExpectation("submitter-user-id", true); - var peg$e68 = peg$literalExpectation("submitterPayrollID", true); - var peg$e69 = peg$literalExpectation("submitter-payroll-id", true); - var peg$e70 = peg$literalExpectation("orderDealNumbers", true); - var peg$e71 = peg$literalExpectation("order-deal-numbers", true); - var peg$e72 = peg$literalExpectation("assignee", true); - var peg$e73 = peg$literalExpectation("createdBy", true); - var peg$e74 = peg$literalExpectation("created-by", true); - var peg$e75 = peg$literalExpectation("action", true); - var peg$e76 = peg$literalExpectation("total", true); - var peg$e77 = peg$literalExpectation("has", true); - var peg$e78 = peg$literalExpectation("is", true); - var peg$e79 = peg$literalExpectation("purchaseAmount", true); - var peg$e80 = peg$literalExpectation("purchase-amount", true); - var peg$e81 = peg$literalExpectation("purchaseCurrency", true); - var peg$e82 = peg$literalExpectation("purchase-currency", true); - var peg$e83 = peg$literalExpectation("columns", true); - var peg$e84 = peg$literalExpectation("view", true); - var peg$e85 = peg$literalExpectation("per-diem", true); - var peg$e86 = peg$literalExpectation("drafts", true); - var peg$e87 = peg$literalExpectation("draft", true); - var peg$e88 = peg$literalExpectation("tax", true); - var peg$e89 = peg$literalExpectation("policy-name", true); - var peg$e90 = peg$literalExpectation("long-report-id", true); - var peg$e91 = peg$literalExpectation("exported-to", true); - var peg$e92 = peg$classExpectation([":", "="], false, false); - var peg$e93 = peg$literalExpectation("exportedTo", true); - var peg$e94 = peg$literalExpectation("exchange-rate", true); - var peg$e95 = peg$literalExpectation("reimbursable-total", true); - var peg$e96 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e97 = peg$literalExpectation("group-from", true); - var peg$e98 = peg$literalExpectation("group-expenses", true); - var peg$e99 = peg$literalExpectation("group-total", true); - var peg$e100 = peg$literalExpectation("group-card", true); - var peg$e101 = peg$literalExpectation("group-feed", true); - var peg$e102 = peg$literalExpectation("group-bank-account", true); - var peg$e103 = peg$literalExpectation("group-withdrawn", true); - var peg$e104 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e105 = peg$literalExpectation("group-amount-debited", true); - var peg$e106 = peg$literalExpectation("group-amount-reimbursed", true); - var peg$e107 = peg$literalExpectation("group-category", true); - var peg$e108 = peg$literalExpectation("group-tag", true); - var peg$e109 = peg$literalExpectation("group-merchant", true); - var peg$e110 = peg$literalExpectation("group-month", true); - var peg$e111 = peg$literalExpectation("group-week", true); - var peg$e112 = peg$literalExpectation("group-year", true); - var peg$e113 = peg$literalExpectation("group-quarter", true); - var peg$e114 = peg$otherExpectation("operator"); - var peg$e115 = peg$literalExpectation("!=", false); - var peg$e116 = peg$literalExpectation(">=", false); - var peg$e117 = peg$literalExpectation(">", false); - var peg$e118 = peg$literalExpectation("<=", false); - var peg$e119 = peg$literalExpectation("<", false); - var peg$e120 = peg$otherExpectation("word"); - var peg$e121 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e122 = peg$otherExpectation("whitespace"); - var peg$e123 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e124 = peg$otherExpectation("quote"); - var peg$e125 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e126 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e127 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e128 = peg$literalExpectation("\u201C", false); - var peg$e129 = peg$literalExpectation("\u201D", false); - var peg$e130 = peg$literalExpectation("\"", false); - var peg$e131 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e132 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e133 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e134 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e135 = peg$classExpectation([","], false, false); - var peg$e136 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e25 = peg$literalExpectation("paidBy", false); + var peg$e26 = peg$literalExpectation("paid-by", true); + var peg$e27 = peg$literalExpectation("taxRate", true); + var peg$e28 = peg$literalExpectation("tax-rate", true); + var peg$e29 = peg$literalExpectation("cardID", false); + var peg$e30 = peg$literalExpectation("card", true); + var peg$e31 = peg$literalExpectation("bankAccount", false); + var peg$e32 = peg$literalExpectation("bank-account", true); + var peg$e33 = peg$literalExpectation("from", true); + var peg$e34 = peg$literalExpectation("attendee", true); + var peg$e35 = peg$literalExpectation("expenseType", false); + var peg$e36 = peg$literalExpectation("expense-type", true); + var peg$e37 = peg$literalExpectation("receiptType", false); + var peg$e38 = peg$literalExpectation("receipt-type", true); + var peg$e39 = peg$literalExpectation("withdrawalType", false); + var peg$e40 = peg$literalExpectation("withdrawal-type", true); + var peg$e41 = peg$literalExpectation("withdrawalStatus", false); + var peg$e42 = peg$literalExpectation("withdrawal-status", true); + var peg$e43 = peg$literalExpectation("paidStatus", false); + var peg$e44 = peg$literalExpectation("paid-status", true); + var peg$e45 = peg$literalExpectation("withdrawalID", true); + var peg$e46 = peg$literalExpectation("withdrawal-id", true); + var peg$e47 = peg$literalExpectation("billable", true); + var peg$e48 = peg$literalExpectation("reimbursable", true); + var peg$e49 = peg$literalExpectation("type", true); + var peg$e50 = peg$literalExpectation("status", true); + var peg$e51 = peg$literalExpectation("sortBy", false); + var peg$e52 = peg$literalExpectation("sort-by", true); + var peg$e53 = peg$literalExpectation("sortOrder", false); + var peg$e54 = peg$literalExpectation("sort-order", true); + var peg$e55 = peg$literalExpectation("policyID", false); + var peg$e56 = peg$literalExpectation("workspace", true); + var peg$e57 = peg$literalExpectation("submitted", true); + var peg$e58 = peg$literalExpectation("approved", true); + var peg$e59 = peg$literalExpectation("paid", true); + var peg$e60 = peg$literalExpectation("exported", true); + var peg$e61 = peg$literalExpectation("posted", true); + var peg$e62 = peg$literalExpectation("withdrawn", true); + var peg$e63 = peg$literalExpectation("groupBy", true); + var peg$e64 = peg$literalExpectation("group-by", true); + var peg$e65 = peg$literalExpectation("limit", true); + var peg$e66 = peg$literalExpectation("feed", true); + var peg$e67 = peg$literalExpectation("title", true); + var peg$e68 = peg$literalExpectation("submitterUserID", true); + var peg$e69 = peg$literalExpectation("submitter-user-id", true); + var peg$e70 = peg$literalExpectation("submitterPayrollID", true); + var peg$e71 = peg$literalExpectation("submitter-payroll-id", true); + var peg$e72 = peg$literalExpectation("orderDealNumbers", true); + var peg$e73 = peg$literalExpectation("order-deal-numbers", true); + var peg$e74 = peg$literalExpectation("assignee", true); + var peg$e75 = peg$literalExpectation("createdBy", true); + var peg$e76 = peg$literalExpectation("created-by", true); + var peg$e77 = peg$literalExpectation("action", true); + var peg$e78 = peg$literalExpectation("total", true); + var peg$e79 = peg$literalExpectation("has", true); + var peg$e80 = peg$literalExpectation("is", true); + var peg$e81 = peg$literalExpectation("purchaseAmount", true); + var peg$e82 = peg$literalExpectation("purchase-amount", true); + var peg$e83 = peg$literalExpectation("purchaseCurrency", true); + var peg$e84 = peg$literalExpectation("purchase-currency", true); + var peg$e85 = peg$literalExpectation("columns", true); + var peg$e86 = peg$literalExpectation("view", true); + var peg$e87 = peg$literalExpectation("per-diem", true); + var peg$e88 = peg$literalExpectation("drafts", true); + var peg$e89 = peg$literalExpectation("draft", true); + var peg$e90 = peg$literalExpectation("tax", true); + var peg$e91 = peg$literalExpectation("policy-name", true); + var peg$e92 = peg$literalExpectation("long-report-id", true); + var peg$e93 = peg$literalExpectation("exported-to", true); + var peg$e94 = peg$classExpectation([":", "="], false, false); + var peg$e95 = peg$literalExpectation("exportedTo", true); + var peg$e96 = peg$literalExpectation("exchange-rate", true); + var peg$e97 = peg$literalExpectation("reimbursable-total", true); + var peg$e98 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e99 = peg$literalExpectation("group-from", true); + var peg$e100 = peg$literalExpectation("group-expenses", true); + var peg$e101 = peg$literalExpectation("group-total", true); + var peg$e102 = peg$literalExpectation("group-card", true); + var peg$e103 = peg$literalExpectation("group-feed", true); + var peg$e104 = peg$literalExpectation("group-bank-account", true); + var peg$e105 = peg$literalExpectation("group-withdrawn", true); + var peg$e106 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e107 = peg$literalExpectation("group-amount-debited", true); + var peg$e108 = peg$literalExpectation("group-amount-reimbursed", true); + var peg$e109 = peg$literalExpectation("group-category", true); + var peg$e110 = peg$literalExpectation("group-tag", true); + var peg$e111 = peg$literalExpectation("group-merchant", true); + var peg$e112 = peg$literalExpectation("group-month", true); + var peg$e113 = peg$literalExpectation("group-week", true); + var peg$e114 = peg$literalExpectation("group-year", true); + var peg$e115 = peg$literalExpectation("group-quarter", true); + var peg$e116 = peg$otherExpectation("operator"); + var peg$e117 = peg$literalExpectation("!=", false); + var peg$e118 = peg$literalExpectation(">=", false); + var peg$e119 = peg$literalExpectation(">", false); + var peg$e120 = peg$literalExpectation("<=", false); + var peg$e121 = peg$literalExpectation("<", false); + var peg$e122 = peg$otherExpectation("word"); + var peg$e123 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e124 = peg$otherExpectation("whitespace"); + var peg$e125 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e126 = peg$otherExpectation("quote"); + var peg$e127 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e128 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e129 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e130 = peg$literalExpectation("\u201C", false); + var peg$e131 = peg$literalExpectation("\u201D", false); + var peg$e132 = peg$literalExpectation("\"", false); + var peg$e133 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e134 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e135 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e136 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e137 = peg$classExpectation([","], false, false); + var peg$e138 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(filters) { return applyDefaults(filters); }; var peg$f1 = function(head, tail) { @@ -524,7 +528,7 @@ function peg$parse(input, options) { return "reportField-" + (suffix ? suffix : ""); }; var peg$f6 = function(k) { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "paidBy" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); return k; }; var peg$f7 = function(parts, empty) { @@ -553,110 +557,111 @@ function peg$parse(input, options) { var peg$f19 = function() { return "to"; }; var peg$f20 = function() { return "exporter"; }; var peg$f21 = function() { return "payer"; }; - var peg$f22 = function() { return "taxRate"; }; - var peg$f23 = function() { return "cardID"; }; - var peg$f24 = function() { return "bankAccount"; }; - var peg$f25 = function() { return "from"; }; - var peg$f26 = function() {return "attendee"}; - var peg$f27 = function() { return "expenseType"; }; - var peg$f28 = function() { return "receiptType"; }; - var peg$f29 = function() { return "withdrawalType"; }; - var peg$f30 = function() { return "withdrawalStatus"; }; - var peg$f31 = function() { return "paidStatus"; }; - var peg$f32 = function() { return "withdrawalID"; }; - var peg$f33 = function() { return "billable"; }; - var peg$f34 = function() { return "reimbursable"; }; - var peg$f35 = function() { return "type"; }; - var peg$f36 = function() { return "status"; }; - var peg$f37 = function() { return "sortBy"; }; - var peg$f38 = function() { return "sortOrder"; }; - var peg$f39 = function() { return "policyID"; }; - var peg$f40 = function() { return "submitted"; }; - var peg$f41 = function() { return "approved"; }; - var peg$f42 = function() { return "paid"; }; - var peg$f43 = function() { return "exported"; }; - var peg$f44 = function() { return "posted"; }; - var peg$f45 = function() { return "withdrawn"; }; - var peg$f46 = function() { return "groupBy"; }; - var peg$f47 = function() { return "limit"; }; - var peg$f48 = function() { return "feed"; }; - var peg$f49 = function() { return "title"; }; - var peg$f50 = function() { return "submitterUserID"; }; - var peg$f51 = function() { return "submitterPayrollID"; }; - var peg$f52 = function() { return "orderDealNumbers"; }; - var peg$f53 = function() { return "assignee"; }; - var peg$f54 = function() { return "createdBy"; }; - var peg$f55 = function() { return "action"; }; - var peg$f56 = function() {return "total"; }; - var peg$f57 = function() {return "has"; }; - var peg$f58 = function() {return "is"; }; - var peg$f59 = function() {return "purchaseAmount"}; - var peg$f60 = function() {return "purchaseCurrency"}; - var peg$f61 = function() { + var peg$f22 = function() { return "paidBy"; }; + var peg$f23 = function() { return "taxRate"; }; + var peg$f24 = function() { return "cardID"; }; + var peg$f25 = function() { return "bankAccount"; }; + var peg$f26 = function() { return "from"; }; + var peg$f27 = function() {return "attendee"}; + var peg$f28 = function() { return "expenseType"; }; + var peg$f29 = function() { return "receiptType"; }; + var peg$f30 = function() { return "withdrawalType"; }; + var peg$f31 = function() { return "withdrawalStatus"; }; + var peg$f32 = function() { return "paidStatus"; }; + var peg$f33 = function() { return "withdrawalID"; }; + var peg$f34 = function() { return "billable"; }; + var peg$f35 = function() { return "reimbursable"; }; + var peg$f36 = function() { return "type"; }; + var peg$f37 = function() { return "status"; }; + var peg$f38 = function() { return "sortBy"; }; + var peg$f39 = function() { return "sortOrder"; }; + var peg$f40 = function() { return "policyID"; }; + var peg$f41 = function() { return "submitted"; }; + var peg$f42 = function() { return "approved"; }; + var peg$f43 = function() { return "paid"; }; + var peg$f44 = function() { return "exported"; }; + var peg$f45 = function() { return "posted"; }; + var peg$f46 = function() { return "withdrawn"; }; + var peg$f47 = function() { return "groupBy"; }; + var peg$f48 = function() { return "limit"; }; + var peg$f49 = function() { return "feed"; }; + var peg$f50 = function() { return "title"; }; + var peg$f51 = function() { return "submitterUserID"; }; + var peg$f52 = function() { return "submitterPayrollID"; }; + var peg$f53 = function() { return "orderDealNumbers"; }; + var peg$f54 = function() { return "assignee"; }; + var peg$f55 = function() { return "createdBy"; }; + var peg$f56 = function() { return "action"; }; + var peg$f57 = function() {return "total"; }; + var peg$f58 = function() {return "has"; }; + var peg$f59 = function() {return "is"; }; + var peg$f60 = function() {return "purchaseAmount"}; + var peg$f61 = function() {return "purchaseCurrency"}; + var peg$f62 = function() { isColumnsContext = true; return "columns"; }; - var peg$f62 = function() {return "view"}; - var peg$f63 = function() { return isColumnsContext; }; - var peg$f64 = function() { return "perDiem"; }; - var peg$f65 = function() { return "drafts"; }; - var peg$f66 = function() { return "originalamount"; }; - var peg$f67 = function() { return "taxAmount"; }; - var peg$f68 = function() { return "taxrate"; }; - var peg$f69 = function() { return "policyname"; }; - var peg$f70 = function() { return "withdrawalID"; }; - var peg$f71 = function() { return "bankAccount"; }; - var peg$f72 = function() { return "reportID"; }; - var peg$f73 = function() { return "base62ReportID"; }; - var peg$f74 = function() { return "exportedto"; }; - var peg$f75 = function() { return "exportedTo"; }; + var peg$f63 = function() {return "view"}; + var peg$f64 = function() { return isColumnsContext; }; + var peg$f65 = function() { return "perDiem"; }; + var peg$f66 = function() { return "drafts"; }; + var peg$f67 = function() { return "originalamount"; }; + var peg$f68 = function() { return "taxAmount"; }; + var peg$f69 = function() { return "taxrate"; }; + var peg$f70 = function() { return "policyname"; }; + var peg$f71 = function() { return "withdrawalID"; }; + var peg$f72 = function() { return "bankAccount"; }; + var peg$f73 = function() { return "reportID"; }; + var peg$f74 = function() { return "base62ReportID"; }; + var peg$f75 = function() { return "exportedto"; }; var peg$f76 = function() { return "exportedTo"; }; - var peg$f77 = function() { return "exchangeRate"; }; - var peg$f78 = function() { return "reimbursableTotal"; }; - var peg$f79 = function() { return "nonReimbursableTotal"; }; - var peg$f80 = function() { return "groupFrom"; }; - var peg$f81 = function() { return "groupExpenses"; }; - var peg$f82 = function() { return "groupTotal"; }; - var peg$f83 = function() { return "groupCard"; }; - var peg$f84 = function() { return "groupFeed"; }; - var peg$f85 = function() { return "groupBankAccount"; }; - var peg$f86 = function() { return "groupWithdrawn"; }; - var peg$f87 = function() { return "groupWithdrawalID"; }; - var peg$f88 = function() { return "groupAmountDebited"; }; - var peg$f89 = function() { return "groupAmountReimbursed"; }; - var peg$f90 = function() { return "groupCategory"; }; - var peg$f91 = function() { return "groupTag"; }; - var peg$f92 = function() { return "groupMerchant"; }; - var peg$f93 = function() { return "groupmonth"; }; - var peg$f94 = function() { return "groupweek"; }; - var peg$f95 = function() { return "groupyear"; }; - var peg$f96 = function() { return "groupquarter"; }; - var peg$f97 = function() { return "eq"; }; - var peg$f98 = function() { return "neq"; }; - var peg$f99 = function() { return "gte"; }; - var peg$f100 = function() { return "gt"; }; - var peg$f101 = function() { return "lte"; }; - var peg$f102 = function() { return "lt"; }; - var peg$f103 = function(o) { + var peg$f77 = function() { return "exportedTo"; }; + var peg$f78 = function() { return "exchangeRate"; }; + var peg$f79 = function() { return "reimbursableTotal"; }; + var peg$f80 = function() { return "nonReimbursableTotal"; }; + var peg$f81 = function() { return "groupFrom"; }; + var peg$f82 = function() { return "groupExpenses"; }; + var peg$f83 = function() { return "groupTotal"; }; + var peg$f84 = function() { return "groupCard"; }; + var peg$f85 = function() { return "groupFeed"; }; + var peg$f86 = function() { return "groupBankAccount"; }; + var peg$f87 = function() { return "groupWithdrawn"; }; + var peg$f88 = function() { return "groupWithdrawalID"; }; + var peg$f89 = function() { return "groupAmountDebited"; }; + var peg$f90 = function() { return "groupAmountReimbursed"; }; + var peg$f91 = function() { return "groupCategory"; }; + var peg$f92 = function() { return "groupTag"; }; + var peg$f93 = function() { return "groupMerchant"; }; + var peg$f94 = function() { return "groupmonth"; }; + var peg$f95 = function() { return "groupweek"; }; + var peg$f96 = function() { return "groupyear"; }; + var peg$f97 = function() { return "groupquarter"; }; + var peg$f98 = function() { return "eq"; }; + var peg$f99 = function() { return "neq"; }; + var peg$f100 = function() { return "gte"; }; + var peg$f101 = function() { return "gt"; }; + var peg$f102 = function() { return "lte"; }; + var peg$f103 = function() { return "lt"; }; + var peg$f104 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f104 = function(chars) { return chars.join("").trim(); }; - var peg$f105 = function() { + var peg$f105 = function(chars) { return chars.join("").trim(); }; + var peg$f106 = function() { isColumnsContext = false; return "and"; }; - var peg$f106 = function() { return expectingNestedQuote; }; - var peg$f107 = function(start, inner, end) { //handle no-breaking space + var peg$f107 = function() { return expectingNestedQuote; }; + var peg$f108 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f108 = function(start) {return "“"}; - var peg$f109 = function(start) {return "”"}; - var peg$f110 = function(start) {return "\""}; - var peg$f111 = function(start, inner, end) { + var peg$f109 = function(start) {return "“"}; + var peg$f110 = function(start) {return "”"}; + var peg$f111 = function(start) {return "\""}; + var peg$f112 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -1176,67 +1181,70 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = peg$parsepayer(); if (s1 === peg$FAILED) { - s1 = peg$parseexporter(); + s1 = peg$parsepaidBy(); if (s1 === peg$FAILED) { - s1 = peg$parseexpenseType(); + s1 = peg$parseexporter(); if (s1 === peg$FAILED) { - s1 = peg$parsereceiptType(); + s1 = peg$parseexpenseType(); if (s1 === peg$FAILED) { - s1 = peg$parsewithdrawalType(); + s1 = peg$parsereceiptType(); if (s1 === peg$FAILED) { - s1 = peg$parsewithdrawalStatus(); + s1 = peg$parsewithdrawalType(); if (s1 === peg$FAILED) { - s1 = peg$parsepaidStatus(); + s1 = peg$parsewithdrawalStatus(); if (s1 === peg$FAILED) { - s1 = peg$parsewithdrawalID(); + s1 = peg$parsepaidStatus(); if (s1 === peg$FAILED) { - s1 = peg$parsesubmitted(); + s1 = peg$parsewithdrawalID(); if (s1 === peg$FAILED) { - s1 = peg$parseapproved(); + s1 = peg$parsesubmitted(); if (s1 === peg$FAILED) { - s1 = peg$parsepaid(); + s1 = peg$parseapproved(); if (s1 === peg$FAILED) { - s1 = peg$parseexportedTo(); + s1 = peg$parsepaid(); if (s1 === peg$FAILED) { - s1 = peg$parseexported(); + s1 = peg$parseexportedTo(); if (s1 === peg$FAILED) { - s1 = peg$parseposted(); + s1 = peg$parseexported(); if (s1 === peg$FAILED) { - s1 = peg$parsewithdrawn(); + s1 = peg$parseposted(); if (s1 === peg$FAILED) { - s1 = peg$parsefeed(); + s1 = peg$parsewithdrawn(); if (s1 === peg$FAILED) { - s1 = peg$parsetitle(); + s1 = peg$parsefeed(); if (s1 === peg$FAILED) { - s1 = peg$parsesubmitterUserID(); + s1 = peg$parsetitle(); if (s1 === peg$FAILED) { - s1 = peg$parsesubmitterPayrollID(); + s1 = peg$parsesubmitterUserID(); if (s1 === peg$FAILED) { - s1 = peg$parseorderDealNumbers(); + s1 = peg$parsesubmitterPayrollID(); if (s1 === peg$FAILED) { - s1 = peg$parseassignee(); + s1 = peg$parseorderDealNumbers(); if (s1 === peg$FAILED) { - s1 = peg$parsecreatedBy(); + s1 = peg$parseassignee(); if (s1 === peg$FAILED) { - s1 = peg$parsereimbursable(); + s1 = peg$parsecreatedBy(); if (s1 === peg$FAILED) { - s1 = peg$parsebillable(); + s1 = peg$parsereimbursable(); if (s1 === peg$FAILED) { - s1 = peg$parseaction(); + s1 = peg$parsebillable(); if (s1 === peg$FAILED) { - s1 = peg$parsehas(); + s1 = peg$parseaction(); if (s1 === peg$FAILED) { - s1 = peg$parseis(); + s1 = peg$parsehas(); if (s1 === peg$FAILED) { - s1 = peg$parsepurchaseCurrency(); + s1 = peg$parseis(); if (s1 === peg$FAILED) { - s1 = peg$parsepurchaseAmount(); + s1 = peg$parsepurchaseCurrency(); if (s1 === peg$FAILED) { - s1 = peg$parsepolicyID(); + s1 = peg$parsepurchaseAmount(); if (s1 === peg$FAILED) { - s1 = peg$parsestatus(); + s1 = peg$parsepolicyID(); if (s1 === peg$FAILED) { - s1 = peg$parsereportFieldDynamic(); + s1 = peg$parsestatus(); + if (s1 === peg$FAILED) { + s1 = peg$parsereportFieldDynamic(); + } } } } @@ -1775,21 +1783,21 @@ function peg$parse(input, options) { return s0; } - function peg$parsetaxRate() { + function peg$parsepaidBy() { var s0, s1; - s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c20) { - peg$currPos += 7; + if (input.substr(peg$currPos, 6) === peg$c20) { + s0 = peg$c20; + peg$currPos += 6; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e25); } } if (s0 === peg$FAILED) { s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); + s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; + peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e26); } @@ -1804,21 +1812,21 @@ function peg$parse(input, options) { return s0; } - function peg$parsecardID() { + function peg$parsetaxRate() { var s0, s1; - if (input.substr(peg$currPos, 6) === peg$c22) { - s0 = peg$c22; - peg$currPos += 6; + s0 = input.substr(peg$currPos, 7); + if (s0.toLowerCase() === peg$c22) { + peg$currPos += 7; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e27); } } if (s0 === peg$FAILED) { s0 = peg$currPos; - s1 = input.substr(peg$currPos, 4); + s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c23) { - peg$currPos += 4; + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e28); } @@ -1833,21 +1841,21 @@ function peg$parse(input, options) { return s0; } - function peg$parsebankAccount() { + function peg$parsecardID() { var s0, s1; - if (input.substr(peg$currPos, 11) === peg$c24) { + if (input.substr(peg$currPos, 6) === peg$c24) { s0 = peg$c24; - peg$currPos += 11; + peg$currPos += 6; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e29); } } if (s0 === peg$FAILED) { s0 = peg$currPos; - s1 = input.substr(peg$currPos, 12); + s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c25) { - peg$currPos += 12; + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e30); } @@ -1862,20 +1870,49 @@ function peg$parse(input, options) { return s0; } + function peg$parsebankAccount() { + var s0, s1; + + if (input.substr(peg$currPos, 11) === peg$c26) { + s0 = peg$c26; + peg$currPos += 11; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e31); } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 12); + if (s1.toLowerCase() === peg$c27) { + peg$currPos += 12; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e32); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f25(); + } + s0 = s1; + } + + return s0; + } + function peg$parsefrom() { var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c26) { + if (s1.toLowerCase() === peg$c28) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e31); } + if (peg$silentFails === 0) { peg$fail(peg$e33); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f25(); + s1 = peg$f26(); } s0 = s1; @@ -1887,15 +1924,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c27) { + if (s1.toLowerCase() === peg$c29) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e32); } + if (peg$silentFails === 0) { peg$fail(peg$e34); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f26(); + s1 = peg$f27(); } s0 = s1; @@ -1905,25 +1942,25 @@ function peg$parse(input, options) { function peg$parseexpenseType() { var s0, s1; - if (input.substr(peg$currPos, 11) === peg$c28) { - s0 = peg$c28; + if (input.substr(peg$currPos, 11) === peg$c30) { + s0 = peg$c30; peg$currPos += 11; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e33); } + if (peg$silentFails === 0) { peg$fail(peg$e35); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c29) { + if (s1.toLowerCase() === peg$c31) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e34); } + if (peg$silentFails === 0) { peg$fail(peg$e36); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f27(); + s1 = peg$f28(); } s0 = s1; } @@ -1934,25 +1971,25 @@ function peg$parse(input, options) { function peg$parsereceiptType() { var s0, s1; - if (input.substr(peg$currPos, 11) === peg$c30) { - s0 = peg$c30; + if (input.substr(peg$currPos, 11) === peg$c32) { + s0 = peg$c32; peg$currPos += 11; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e35); } + if (peg$silentFails === 0) { peg$fail(peg$e37); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c31) { + if (s1.toLowerCase() === peg$c33) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e36); } + if (peg$silentFails === 0) { peg$fail(peg$e38); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f28(); + s1 = peg$f29(); } s0 = s1; } @@ -1963,25 +2000,25 @@ function peg$parse(input, options) { function peg$parsewithdrawalType() { var s0, s1; - if (input.substr(peg$currPos, 14) === peg$c32) { - s0 = peg$c32; + if (input.substr(peg$currPos, 14) === peg$c34) { + s0 = peg$c34; peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e37); } + if (peg$silentFails === 0) { peg$fail(peg$e39); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c33) { + if (s1.toLowerCase() === peg$c35) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e38); } + if (peg$silentFails === 0) { peg$fail(peg$e40); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f29(); + s1 = peg$f30(); } s0 = s1; } @@ -1992,25 +2029,25 @@ function peg$parse(input, options) { function peg$parsewithdrawalStatus() { var s0, s1; - if (input.substr(peg$currPos, 16) === peg$c34) { - s0 = peg$c34; + if (input.substr(peg$currPos, 16) === peg$c36) { + s0 = peg$c36; peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e39); } + if (peg$silentFails === 0) { peg$fail(peg$e41); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c35) { + if (s1.toLowerCase() === peg$c37) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e40); } + if (peg$silentFails === 0) { peg$fail(peg$e42); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f30(); + s1 = peg$f31(); } s0 = s1; } @@ -2021,25 +2058,25 @@ function peg$parse(input, options) { function peg$parsepaidStatus() { var s0, s1; - if (input.substr(peg$currPos, 10) === peg$c36) { - s0 = peg$c36; + if (input.substr(peg$currPos, 10) === peg$c38) { + s0 = peg$c38; peg$currPos += 10; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e41); } + if (peg$silentFails === 0) { peg$fail(peg$e43); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c37) { + if (s1.toLowerCase() === peg$c39) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } + if (peg$silentFails === 0) { peg$fail(peg$e44); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f31(); + s1 = peg$f32(); } s0 = s1; } @@ -2051,24 +2088,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 12); - if (s0.toLowerCase() === peg$c38) { + if (s0.toLowerCase() === peg$c40) { peg$currPos += 12; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e43); } + if (peg$silentFails === 0) { peg$fail(peg$e45); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c39) { + if (s1.toLowerCase() === peg$c41) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e44); } + if (peg$silentFails === 0) { peg$fail(peg$e46); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f32(); + s1 = peg$f33(); } s0 = s1; } @@ -2081,15 +2118,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c40) { + if (s1.toLowerCase() === peg$c42) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e45); } + if (peg$silentFails === 0) { peg$fail(peg$e47); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f33(); + s1 = peg$f34(); } s0 = s1; @@ -2101,15 +2138,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c41) { + if (s1.toLowerCase() === peg$c43) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e46); } + if (peg$silentFails === 0) { peg$fail(peg$e48); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f34(); + s1 = peg$f35(); } s0 = s1; @@ -2121,15 +2158,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c42) { + if (s1.toLowerCase() === peg$c44) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e47); } + if (peg$silentFails === 0) { peg$fail(peg$e49); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f35(); + s1 = peg$f36(); } s0 = s1; @@ -2141,15 +2178,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c43) { + if (s1.toLowerCase() === peg$c45) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e48); } + if (peg$silentFails === 0) { peg$fail(peg$e50); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f36(); + s1 = peg$f37(); } s0 = s1; @@ -2159,25 +2196,25 @@ function peg$parse(input, options) { function peg$parsesortBy() { var s0, s1; - if (input.substr(peg$currPos, 6) === peg$c44) { - s0 = peg$c44; + if (input.substr(peg$currPos, 6) === peg$c46) { + s0 = peg$c46; peg$currPos += 6; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e49); } + if (peg$silentFails === 0) { peg$fail(peg$e51); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c45) { + if (s1.toLowerCase() === peg$c47) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e50); } + if (peg$silentFails === 0) { peg$fail(peg$e52); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f37(); + s1 = peg$f38(); } s0 = s1; } @@ -2188,25 +2225,25 @@ function peg$parse(input, options) { function peg$parsesortOrder() { var s0, s1; - if (input.substr(peg$currPos, 9) === peg$c46) { - s0 = peg$c46; + if (input.substr(peg$currPos, 9) === peg$c48) { + s0 = peg$c48; peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e51); } + if (peg$silentFails === 0) { peg$fail(peg$e53); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c47) { + if (s1.toLowerCase() === peg$c49) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e52); } + if (peg$silentFails === 0) { peg$fail(peg$e54); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f38(); + s1 = peg$f39(); } s0 = s1; } @@ -2217,25 +2254,25 @@ function peg$parse(input, options) { function peg$parsepolicyID() { var s0, s1; - if (input.substr(peg$currPos, 8) === peg$c48) { - s0 = peg$c48; + if (input.substr(peg$currPos, 8) === peg$c50) { + s0 = peg$c50; peg$currPos += 8; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e53); } + if (peg$silentFails === 0) { peg$fail(peg$e55); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c49) { + if (s1.toLowerCase() === peg$c51) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e54); } + if (peg$silentFails === 0) { peg$fail(peg$e56); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f39(); + s1 = peg$f40(); } s0 = s1; } @@ -2248,15 +2285,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c50) { + if (s1.toLowerCase() === peg$c52) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e55); } + if (peg$silentFails === 0) { peg$fail(peg$e57); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f40(); + s1 = peg$f41(); } s0 = s1; @@ -2268,15 +2305,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c51) { + if (s1.toLowerCase() === peg$c53) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e56); } + if (peg$silentFails === 0) { peg$fail(peg$e58); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f41(); + s1 = peg$f42(); } s0 = s1; @@ -2288,15 +2325,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c52) { + if (s1.toLowerCase() === peg$c54) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e57); } + if (peg$silentFails === 0) { peg$fail(peg$e59); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f42(); + s1 = peg$f43(); } s0 = s1; @@ -2308,15 +2345,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c53) { + if (s1.toLowerCase() === peg$c55) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e58); } + if (peg$silentFails === 0) { peg$fail(peg$e60); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f43(); + s1 = peg$f44(); } s0 = s1; @@ -2328,15 +2365,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c54) { + if (s1.toLowerCase() === peg$c56) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e59); } + if (peg$silentFails === 0) { peg$fail(peg$e61); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f44(); + s1 = peg$f45(); } s0 = s1; @@ -2348,15 +2385,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c55) { + if (s1.toLowerCase() === peg$c57) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e60); } + if (peg$silentFails === 0) { peg$fail(peg$e62); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f45(); + s1 = peg$f46(); } s0 = s1; @@ -2367,24 +2404,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c56) { + if (s0.toLowerCase() === peg$c58) { peg$currPos += 7; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e61); } + if (peg$silentFails === 0) { peg$fail(peg$e63); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c57) { + if (s1.toLowerCase() === peg$c59) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e62); } + if (peg$silentFails === 0) { peg$fail(peg$e64); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f46(); + s1 = peg$f47(); } s0 = s1; } @@ -2397,15 +2434,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c58) { + if (s1.toLowerCase() === peg$c60) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e63); } + if (peg$silentFails === 0) { peg$fail(peg$e65); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f47(); + s1 = peg$f48(); } s0 = s1; @@ -2417,15 +2454,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c59) { + if (s1.toLowerCase() === peg$c61) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e64); } + if (peg$silentFails === 0) { peg$fail(peg$e66); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f48(); + s1 = peg$f49(); } s0 = s1; @@ -2437,15 +2474,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c60) { + if (s1.toLowerCase() === peg$c62) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e65); } + if (peg$silentFails === 0) { peg$fail(peg$e67); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f49(); + s1 = peg$f50(); } s0 = s1; @@ -2456,24 +2493,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 15); - if (s0.toLowerCase() === peg$c61) { + if (s0.toLowerCase() === peg$c63) { peg$currPos += 15; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e66); } + if (peg$silentFails === 0) { peg$fail(peg$e68); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c62) { + if (s1.toLowerCase() === peg$c64) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e67); } + if (peg$silentFails === 0) { peg$fail(peg$e69); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f50(); + s1 = peg$f51(); } s0 = s1; } @@ -2485,24 +2522,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 18); - if (s0.toLowerCase() === peg$c63) { + if (s0.toLowerCase() === peg$c65) { peg$currPos += 18; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e68); } + if (peg$silentFails === 0) { peg$fail(peg$e70); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c64) { + if (s1.toLowerCase() === peg$c66) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e69); } + if (peg$silentFails === 0) { peg$fail(peg$e71); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f51(); + s1 = peg$f52(); } s0 = s1; } @@ -2514,24 +2551,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c65) { + if (s0.toLowerCase() === peg$c67) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e70); } + if (peg$silentFails === 0) { peg$fail(peg$e72); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c66) { + if (s1.toLowerCase() === peg$c68) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e71); } + if (peg$silentFails === 0) { peg$fail(peg$e73); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f52(); + s1 = peg$f53(); } s0 = s1; } @@ -2544,15 +2581,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c67) { + if (s1.toLowerCase() === peg$c69) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e72); } + if (peg$silentFails === 0) { peg$fail(peg$e74); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f53(); + s1 = peg$f54(); } s0 = s1; @@ -2563,24 +2600,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c68) { + if (s0.toLowerCase() === peg$c70) { peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e73); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c69) { + if (s1.toLowerCase() === peg$c71) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e74); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f54(); + s1 = peg$f55(); } s0 = s1; } @@ -2593,15 +2630,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c70) { + if (s1.toLowerCase() === peg$c72) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f55(); + s1 = peg$f56(); } s0 = s1; @@ -2613,15 +2650,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c71) { + if (s1.toLowerCase() === peg$c73) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f56(); + s1 = peg$f57(); } s0 = s1; @@ -2633,15 +2670,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c72) { + if (s1.toLowerCase() === peg$c74) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f57(); + s1 = peg$f58(); } s0 = s1; @@ -2653,15 +2690,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c73) { + if (s1.toLowerCase() === peg$c75) { peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f58(); + s1 = peg$f59(); } s0 = s1; @@ -2672,24 +2709,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c74) { + if (s0.toLowerCase() === peg$c76) { peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f59(); + s1 = peg$f60(); } s0 = s1; } @@ -2701,24 +2738,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c76) { + if (s0.toLowerCase() === peg$c78) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c79) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f60(); + s1 = peg$f61(); } s0 = s1; } @@ -2731,15 +2768,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c78) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f61(); + s1 = peg$f62(); } s0 = s1; @@ -2751,15 +2788,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f62(); + s1 = peg$f63(); } s0 = s1; @@ -2771,7 +2808,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f63(); + s1 = peg$f64(); if (s1) { s1 = undefined; } else { @@ -2897,11 +2934,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c80) { + if (s1.toLowerCase() === peg$c82) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2916,7 +2953,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f64(); + s0 = peg$f65(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2934,19 +2971,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c83) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c82) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } } if (s1 !== peg$FAILED) { @@ -2962,7 +2999,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f65(); + s0 = peg$f66(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2980,11 +3017,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2999,7 +3036,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f66(); + s0 = peg$f67(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3017,11 +3054,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c85) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3036,7 +3073,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f67(); + s0 = peg$f68(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3054,11 +3091,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c21) { + if (s1.toLowerCase() === peg$c23) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e26); } + if (peg$silentFails === 0) { peg$fail(peg$e28); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3073,7 +3110,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f68(); + s0 = peg$f69(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3091,11 +3128,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c84) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3110,7 +3147,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f69(); + s0 = peg$f70(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3128,11 +3165,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c39) { + if (s1.toLowerCase() === peg$c41) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e44); } + if (peg$silentFails === 0) { peg$fail(peg$e46); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3147,7 +3184,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f70(); + s0 = peg$f71(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3165,11 +3202,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c25) { + if (s1.toLowerCase() === peg$c27) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e30); } + if (peg$silentFails === 0) { peg$fail(peg$e32); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3184,7 +3221,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f71(); + s0 = peg$f72(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3202,11 +3239,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c87) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3221,7 +3258,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f72(); + s0 = peg$f73(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3258,7 +3295,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f73(); + s0 = peg$f74(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3276,11 +3313,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c86) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3295,7 +3332,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f74(); + s0 = peg$f75(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3320,7 +3357,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -3339,11 +3376,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c89) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3358,7 +3395,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f75(); + s0 = peg$f76(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3370,11 +3407,11 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c86) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3389,7 +3426,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f76(); + s0 = peg$f77(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3408,11 +3445,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c88) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3427,7 +3464,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f77(); + s0 = peg$f78(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3445,11 +3482,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c91) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3464,7 +3501,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f78(); + s0 = peg$f79(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3482,11 +3519,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c90) { + if (s1.toLowerCase() === peg$c92) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3501,7 +3538,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f79(); + s0 = peg$f80(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3519,11 +3556,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c91) { + if (s1.toLowerCase() === peg$c93) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3538,7 +3575,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f80(); + s0 = peg$f81(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3556,11 +3593,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c92) { + if (s1.toLowerCase() === peg$c94) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3575,7 +3612,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f81(); + s0 = peg$f82(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3593,11 +3630,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c93) { + if (s1.toLowerCase() === peg$c95) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3612,7 +3649,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f82(); + s0 = peg$f83(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3630,11 +3667,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c94) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3649,7 +3686,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f83(); + s0 = peg$f84(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3667,11 +3704,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3686,7 +3723,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f84(); + s0 = peg$f85(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3704,11 +3741,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c96) { + if (s1.toLowerCase() === peg$c98) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3723,7 +3760,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f85(); + s0 = peg$f86(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3741,11 +3778,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c99) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3760,7 +3797,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f86(); + s0 = peg$f87(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3778,11 +3815,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c98) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3797,7 +3834,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f87(); + s0 = peg$f88(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3815,11 +3852,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c101) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3834,7 +3871,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f88(); + s0 = peg$f89(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3852,11 +3889,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 23); - if (s1.toLowerCase() === peg$c100) { + if (s1.toLowerCase() === peg$c102) { peg$currPos += 23; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3871,7 +3908,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f89(); + s0 = peg$f90(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3889,11 +3926,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c101) { + if (s1.toLowerCase() === peg$c103) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3908,7 +3945,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f90(); + s0 = peg$f91(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3926,11 +3963,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c102) { + if (s1.toLowerCase() === peg$c104) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3945,7 +3982,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f91(); + s0 = peg$f92(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3963,11 +4000,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c103) { + if (s1.toLowerCase() === peg$c105) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3982,7 +4019,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f92(); + s0 = peg$f93(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4000,11 +4037,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c104) { + if (s1.toLowerCase() === peg$c106) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4019,7 +4056,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f93(); + s0 = peg$f94(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4037,11 +4074,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c105) { + if (s1.toLowerCase() === peg$c107) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4056,7 +4093,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f94(); + s0 = peg$f95(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4074,11 +4111,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c106) { + if (s1.toLowerCase() === peg$c108) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4093,7 +4130,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f95(); + s0 = peg$f96(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4111,11 +4148,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c107) { + if (s1.toLowerCase() === peg$c109) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4130,7 +4167,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f96(); + s0 = peg$f97(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4153,81 +4190,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f97(); + s1 = peg$f98(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c108) { - s1 = peg$c108; + if (input.substr(peg$currPos, 2) === peg$c110) { + s1 = peg$c110; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f98(); + s1 = peg$f99(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c109) { - s1 = peg$c109; + if (input.substr(peg$currPos, 2) === peg$c111) { + s1 = peg$c111; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f99(); + s1 = peg$f100(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c110; + s1 = peg$c112; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f100(); + s1 = peg$f101(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c111) { - s1 = peg$c111; + if (input.substr(peg$currPos, 2) === peg$c113) { + s1 = peg$c113; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f101(); + s1 = peg$f102(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c112; + s1 = peg$c114; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f102(); + s1 = peg$f103(); } s0 = s1; } @@ -4238,7 +4275,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } return s0; @@ -4251,7 +4288,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f103(s1); + s1 = peg$f104(s1); } s0 = s1; @@ -4269,7 +4306,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -4279,7 +4316,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } } } else { @@ -4287,13 +4324,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f104(s1); + s1 = peg$f105(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } } return s0; @@ -4305,7 +4342,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f105(); + s1 = peg$f106(); s0 = s1; return s0; @@ -4321,7 +4358,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4330,12 +4367,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } return s0; } @@ -4345,7 +4382,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f106(); + s1 = peg$f107(); if (s1) { s1 = undefined; } else { @@ -4382,7 +4419,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4391,7 +4428,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } } s2 = input.charAt(peg$currPos); @@ -4399,7 +4436,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4408,7 +4445,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4417,7 +4454,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } } s4 = input.charAt(peg$currPos); @@ -4425,7 +4462,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4434,7 +4471,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4443,11 +4480,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } } peg$savedPos = s0; - s0 = peg$f107(s1, s3, s5); + s0 = peg$f108(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4459,7 +4496,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } return s0; @@ -4476,7 +4513,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4485,7 +4522,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } } s2 = input.charAt(peg$currPos); @@ -4493,7 +4530,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4502,7 +4539,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4518,15 +4555,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c113; + s6 = peg$c115; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f108(s1); + s4 = peg$f109(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4549,15 +4586,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c114; + s6 = peg$c116; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f109(s1); + s4 = peg$f110(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4580,15 +4617,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c115; + s6 = peg$c117; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f110(s1); + s4 = peg$f111(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4607,7 +4644,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4623,15 +4660,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c113; + s6 = peg$c115; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f108(s1); + s4 = peg$f109(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4654,15 +4691,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c114; + s6 = peg$c116; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f109(s1); + s4 = peg$f110(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4685,15 +4722,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c115; + s6 = peg$c117; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f110(s1); + s4 = peg$f111(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4709,7 +4746,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f111(s1, s3, s4); + s0 = peg$f112(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4721,7 +4758,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } return s0; @@ -4736,7 +4773,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4774,7 +4811,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4783,7 +4820,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } } s2 = []; @@ -4792,7 +4829,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -4801,7 +4838,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } } s3 = []; @@ -4810,7 +4847,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4819,7 +4856,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } } s4 = peg$parseoperator(); @@ -4838,7 +4875,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4847,7 +4884,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } } s2 = peg$currPos; @@ -4894,7 +4931,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } } } @@ -4910,7 +4947,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } if (s0 === peg$FAILED) { s0 = peg$currPos; diff --git a/src/libs/SearchParser/searchParser.peggy b/src/libs/SearchParser/searchParser.peggy index 7a48b0da4e3a..9b56d37ae5e5 100644 --- a/src/libs/SearchParser/searchParser.peggy +++ b/src/libs/SearchParser/searchParser.peggy @@ -274,6 +274,7 @@ key "key" / from / attendee / payer + / paidBy / exporter / expenseType / receiptType @@ -309,7 +310,7 @@ key "key" filterKey = k:key { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "paidBy" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); return k; } diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index 5a1ab4846862..b25eb0ce25b5 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -478,6 +478,7 @@ function getUpdatedFilterValue(filterName: SyntaxFilterKey, filterValue: string filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM || filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.TO || filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER || + filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY || filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER || filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE ) { @@ -928,6 +929,7 @@ function buildQueryStringFromFilterFormValues(filterValues: Partial (id === CONST.SEARCH.ME && currentUserAccountID ? currentUserAccountID.toString() : id)); filtersForm[addNegation(filterKey, isNegated)] = resolvedValues.filter((id) => personalDetails?.[id]); @@ -1420,6 +1422,9 @@ function buildFilterFormValuesFromQuery( filtersForm[addNegation(filterKey, isNegated)] = filterValues.filter((value) => exportedToValues.has(value)); } + if (filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER) { + filtersForm[addNegation(filterKey, isNegated)] = filterValues.find((id) => personalDetails?.[id]); + } if (filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.CURRENCY || filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.PURCHASE_CURRENCY) { filtersForm[addNegation(filterKey, isNegated)] = filterValues.filter((currency) => validCurrencies.has(currency)); } @@ -1701,6 +1706,7 @@ function getFilterDisplayValue({ filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.TO || filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE || filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER || + filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY || filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER || filterName === CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE ) { diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 8f19ae795f49..877768c41817 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -337,7 +337,7 @@ const expenseReportColumnNamesToSortingProperty: ExpenseReportSorting = { [CONST.SEARCH.TABLE_COLUMNS.APPROVED]: 'approved' as const, [CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVER]: 'formattedFirstApprover' as const, [CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVED]: 'firstApproved' as const, - [CONST.SEARCH.TABLE_COLUMNS.PAYER]: 'formattedPayer' as const, + [CONST.SEARCH.TABLE_COLUMNS.PAID_BY]: 'formattedPaidBy' as const, [CONST.SEARCH.TABLE_COLUMNS.EXPORTED]: 'exported' as const, [CONST.SEARCH.TABLE_COLUMNS.STATUS]: 'formattedStatus' as const, [CONST.SEARCH.TABLE_COLUMNS.PAID_STATUS]: 'formattedPaidStatus' as const, @@ -678,6 +678,7 @@ const SKIPPED_SEARCH_FILTERS = new Set([ FILTER_KEYS.LIMIT, FILTER_KEYS.TYPE, FILTER_KEYS.VIEW, + FILTER_KEYS.PAYER, FILTER_KEYS.ACTION, FILTER_KEYS.COLUMNS, FILTER_KEYS.KEYWORD, @@ -858,7 +859,7 @@ function getSuggestedSearches( type: CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT, action: CONST.SEARCH.ACTION_FILTERS.PAY, reimbursable: CONST.SEARCH.BOOLEAN.YES, - payer: [`${accountID}`], + payer: accountID?.toString(), }), get searchQueryJSON() { return buildSearchQueryJSON(this.searchQuery); @@ -1899,7 +1900,7 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action const report = data[`${ONYXKEYS.COLLECTION.REPORT}${reportID}`]; const reportOwnerAccountID = report?.ownerAccountID; - // Only paid reports carry a payer-determining payment action, matching the backend status gate + // Only paid reports carry a determining payment action, matching the backend status gate const isReportPaid = report?.statusNum === CONST.REPORT.STATUS_NUM.REIMBURSED; let latestExportTime = -Infinity; @@ -1909,7 +1910,7 @@ function processReportActionEntry(ctx: PreprocessingContext, key: string, action let firstApprovalTime = Infinity; let firstApprovalAction: OnyxTypes.ReportAction | undefined; - // The payer is the actor on the latest payment action. Payment actions are collected first because + // The paid-by user is the actor on the latest payment action. Payment actions are collected first because // whether the owner's ones count depends on a receipt confirmation that may appear later in the scan. const paymentActions: OnyxTypes.ReportAction[] = []; let lastOwnerReceiptConfirmedTime = -Infinity; @@ -3119,11 +3120,11 @@ function getReportSections({ const formattedTo = !shouldShowBlankTo ? temporaryGetDisplayNameOrDefault({passedPersonalDetails: toDetails, translate, formatPhoneNumber}) : ''; const formattedFirstApprover = firstApproverAccountID ? temporaryGetDisplayNameOrDefault({passedPersonalDetails: firstApproverDetails, translate, formatPhoneNumber}) : ''; - // The payer is the actor on the latest payment action; blank until the report is paid. + // The paid-by user is the actor on the latest payment action; blank until the report is paid. const lastReimbursedAction = lastReimbursedActionByReportID.get(reportItem.reportID); - const payerAccountID = lastReimbursedAction?.actorAccountID; - const payerDetails = payerAccountID ? mergedPersonalDetails?.[payerAccountID] : undefined; - const formattedPayer = payerAccountID ? temporaryGetDisplayNameOrDefault({passedPersonalDetails: payerDetails, translate, formatPhoneNumber}) : ''; + const paidByAccountID = lastReimbursedAction?.actorAccountID; + const paidByDetails = paidByAccountID ? mergedPersonalDetails?.[paidByAccountID] : undefined; + const formattedPaidBy = paidByAccountID ? temporaryGetDisplayNameOrDefault({passedPersonalDetails: paidByDetails, translate, formatPhoneNumber}) : ''; const formattedStatus = getReportStatusTranslation({stateNum: reportItem.stateNum, statusNum: reportItem.statusNum, translate}); const formattedPaidStatus = getReportStatusTooltipTranslation({stateNum: reportItem.stateNum, statusNum: reportItem.statusNum, translate}); @@ -3170,9 +3171,9 @@ function getReportSections({ firstApproverAvatar: firstApproverDetails?.avatar, firstApproverAccountID, formattedFirstApprover, - payerAvatar: payerDetails?.avatar, - payerAccountID, - formattedPayer, + paidByAvatar: paidByDetails?.avatar, + paidByAccountID, + formattedPaidBy, formattedFrom, formattedTo, formattedStatus, @@ -4608,8 +4609,8 @@ function getSearchColumnTranslationKey(column: SearchSortBy): TranslationPaths { return 'search.filters.firstApprover'; case CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVED: return 'search.filters.firstApproved'; - case CONST.SEARCH.TABLE_COLUMNS.PAYER: - return 'search.filters.payer'; + case CONST.SEARCH.TABLE_COLUMNS.PAID_BY: + return 'search.filters.paidBy'; case CONST.SEARCH.TABLE_COLUMNS.POSTED: return 'search.filters.posted'; case CONST.SEARCH.TABLE_COLUMNS.EXPORTED: @@ -5535,8 +5536,8 @@ const FILTER_VIEW_MAP = { labelKey: 'common.merchant', icon: 'Basket', }, - [CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER]: { - labelKey: 'search.filters.payer', + [CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY]: { + labelKey: 'search.filters.paidBy', icon: 'MoneyBag', }, [CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID]: { diff --git a/src/styles/utils/index.ts b/src/styles/utils/index.ts index 580969086c59..d2c1083b1ec0 100644 --- a/src/styles/utils/index.ts +++ b/src/styles/utils/index.ts @@ -2092,7 +2092,7 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({ case CONST.SEARCH.TABLE_COLUMNS.FROM: case CONST.SEARCH.TABLE_COLUMNS.TO: case CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVER: - case CONST.SEARCH.TABLE_COLUMNS.PAYER: + case CONST.SEARCH.TABLE_COLUMNS.PAID_BY: case CONST.SEARCH.TABLE_COLUMNS.ASSIGNEE: case CONST.SEARCH.TABLE_COLUMNS.TITLE: case CONST.SEARCH.TABLE_COLUMNS.DESCRIPTION: diff --git a/src/types/form/SearchAdvancedFiltersForm.ts b/src/types/form/SearchAdvancedFiltersForm.ts index 66dd52effeda..6c4734eff70f 100644 --- a/src/types/form/SearchAdvancedFiltersForm.ts +++ b/src/types/form/SearchAdvancedFiltersForm.ts @@ -49,7 +49,7 @@ const AMOUNT_FILTER_KEYS: SearchAmountFilterKeys[] = [CONST.SEARCH.SYNTAX_FILTER const NEGATABLE_FILTER_KEYS = [ CONST.SEARCH.SYNTAX_FILTER_KEYS.TO, CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, - CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER, + CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY, CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS, CONST.SEARCH.SYNTAX_FILTER_KEYS.CURRENCY, CONST.SEARCH.SYNTAX_FILTER_KEYS.PURCHASE_CURRENCY, @@ -184,6 +184,9 @@ const FILTER_KEYS = { PAYER_NOT: 'payerNot', PAYER: 'payer', + PAID_BY_NOT: 'paidByNot', + PAID_BY: 'paidBy', + EXPORTER_NOT: 'exporterNot', EXPORTER: 'exporter', @@ -283,6 +286,8 @@ const ALLOWED_TYPE_FILTERS: Record> = { FILTER_KEYS.TAG_NOT, FILTER_KEYS.PAYER, FILTER_KEYS.PAYER_NOT, + FILTER_KEYS.PAID_BY, + FILTER_KEYS.PAID_BY_NOT, FILTER_KEYS.DESCRIPTION, FILTER_KEYS.DESCRIPTION_NOT, FILTER_KEYS.CARD_ID, @@ -390,6 +395,8 @@ const ALLOWED_TYPE_FILTERS: Record> = { FILTER_KEYS.GROUP_CURRENCY, FILTER_KEYS.PAYER, FILTER_KEYS.PAYER_NOT, + FILTER_KEYS.PAID_BY, + FILTER_KEYS.PAID_BY_NOT, FILTER_KEYS.WITHDRAWAL_TYPE, FILTER_KEYS.WITHDRAWAL_TYPE_NOT, FILTER_KEYS.WITHDRAWAL_STATUS, @@ -475,6 +482,8 @@ const ALLOWED_TYPE_FILTERS: Record> = { FILTER_KEYS.TAG_NOT, FILTER_KEYS.PAYER, FILTER_KEYS.PAYER_NOT, + FILTER_KEYS.PAID_BY, + FILTER_KEYS.PAID_BY_NOT, FILTER_KEYS.DESCRIPTION, FILTER_KEYS.DESCRIPTION_NOT, FILTER_KEYS.CARD_ID, @@ -572,6 +581,8 @@ const ALLOWED_TYPE_FILTERS: Record> = { FILTER_KEYS.TAG_NOT, FILTER_KEYS.PAYER, FILTER_KEYS.PAYER_NOT, + FILTER_KEYS.PAID_BY, + FILTER_KEYS.PAID_BY_NOT, FILTER_KEYS.DESCRIPTION, FILTER_KEYS.DESCRIPTION_NOT, FILTER_KEYS.CARD_ID, @@ -799,8 +810,11 @@ type SearchAdvancedFiltersForm = Form< [FILTER_KEYS.FROM]: string[]; [FILTER_KEYS.FROM_NOT]: string[]; - [FILTER_KEYS.PAYER]: string[]; - [FILTER_KEYS.PAYER_NOT]: string[]; + [FILTER_KEYS.PAYER]: string; + [FILTER_KEYS.PAYER_NOT]: string; + + [FILTER_KEYS.PAID_BY]: string[]; + [FILTER_KEYS.PAID_BY_NOT]: string[]; [FILTER_KEYS.EXPORTER]: string[]; [FILTER_KEYS.EXPORTER_NOT]: string[]; diff --git a/tests/unit/Search/ColumnAvailabilityTest.ts b/tests/unit/Search/ColumnAvailabilityTest.ts index be83d55e6e82..269ab9f1ce86 100644 --- a/tests/unit/Search/ColumnAvailabilityTest.ts +++ b/tests/unit/Search/ColumnAvailabilityTest.ts @@ -32,7 +32,7 @@ describe('Column availability single source of truth', () => { TABLE_COLUMNS.NON_REIMBURSABLE_TOTAL, TABLE_COLUMNS.FIRST_APPROVER, TABLE_COLUMNS.FIRST_APPROVED, - TABLE_COLUMNS.PAYER, + TABLE_COLUMNS.PAID_BY, TABLE_COLUMNS.PAID_STATUS, // Grouped search views. TABLE_COLUMNS.EXPENSES, diff --git a/tests/unit/Search/SearchUIUtilsTest.ts b/tests/unit/Search/SearchUIUtilsTest.ts index 1788ab8128d7..f7f11ba492fb 100644 --- a/tests/unit/Search/SearchUIUtilsTest.ts +++ b/tests/unit/Search/SearchUIUtilsTest.ts @@ -1190,9 +1190,9 @@ const transactionReportGroupListItems = createMock Date: Wed, 12 Aug 2026 20:07:50 +0530 Subject: [PATCH 10/10] Show paid-by as the user-friendly key in search suggestions --- src/CONST/index.ts | 1 + src/hooks/useAutocompleteSuggestions.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 2e20e20118a9..6a8918a43214 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -7501,6 +7501,7 @@ const CONST = { FROM: 'from', TO: 'to', PAYER: 'payer', + PAID_BY: 'paid-by', EXPORTER: 'exporter', CATEGORY: 'category', TAG: 'tag', diff --git a/src/hooks/useAutocompleteSuggestions.ts b/src/hooks/useAutocompleteSuggestions.ts index a6f7d5cf7ae1..208fa79286a1 100644 --- a/src/hooks/useAutocompleteSuggestions.ts +++ b/src/hooks/useAutocompleteSuggestions.ts @@ -274,7 +274,7 @@ function useAutocompleteSuggestions({ }).options.personalDetails.filter((participant) => participant.text && !alreadyAutocompletedKeys.has(participant.text.toLowerCase())); return participants.map((participant) => ({ - filterKey: autocompleteKey, + filterKey: getUserFriendlyKey(autocompleteKey), text: participant.login === currentUserEmail ? CONST.SEARCH.ME : (participant.text ?? ''), autocompleteID: String(participant.accountID), mapKey: autocompleteKey,