From a986e71489abcac60be4e63429980f0e99c15ce3 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Fri, 16 Aug 2024 17:42:23 +0700
Subject: [PATCH 01/16] bring auditor role to NewDot

---
 src/CONST.ts                                  |  1 +
 src/languages/en.ts                           | 17 ++++++
 src/languages/es.ts                           | 17 ++++++
 src/libs/actions/Policy/Member.ts             |  2 +-
 src/pages/workspace/WorkspaceMembersPage.tsx  | 52 ++++++++++++++-----
 .../members/WorkspaceMemberDetailsPage.tsx    | 13 ++++-
 ...rkspaceMemberDetailsRoleSelectionModal.tsx |  5 +-
 7 files changed, 88 insertions(+), 19 deletions(-)

diff --git a/src/CONST.ts b/src/CONST.ts
index f1e4a3bb46d5..d9d8dd74c936 100755
--- a/src/CONST.ts
+++ b/src/CONST.ts
@@ -2065,6 +2065,7 @@ const CONST = {
             REMOVE: 'remove',
             MAKE_MEMBER: 'makeMember',
             MAKE_ADMIN: 'makeAdmin',
+            MAKE_AUDITOR: 'makeAuditor',
         },
         BULK_ACTION_TYPES: {
             DELETE: 'delete',
diff --git a/src/languages/en.ts b/src/languages/en.ts
index 1684ed3057da..031bade515eb 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -344,6 +344,7 @@ export default {
         default: 'Default',
         update: 'Update',
         member: 'Member',
+        auditor: 'Auditor',
         role: 'Role',
         currency: 'Currency',
         rate: 'Rate',
@@ -2167,6 +2168,21 @@ export default {
             reuseExistingConnection: 'Reuse existing connection',
             existingConnections: 'Existing connections',
             lastSyncDate: (connectionName: string, formattedDate: string) => `${connectionName} - Last synced ${formattedDate}`,
+            memberAlternateText: 'Members can submit and approve reports.',
+            adminAlternateText: 'Auditors can view and comment on reports.',
+            auditorAlternateText: 'Admins have full edit access to all reports and workspace settings.',
+            roleName: (role?: string): string => {
+                switch (role) {
+                    case CONST.POLICY.ROLE.ADMIN:
+                        return 'Admin';
+                    case CONST.POLICY.ROLE.AUDITOR:
+                        return 'Auditor';
+                    case CONST.POLICY.ROLE.USER:
+                        return 'Member';
+                    default:
+                        return 'Member';
+                }
+            },
         },
         qbo: {
             importDescription: 'Choose which coding configurations to import from QuickBooks Online to Expensify.',
@@ -3041,6 +3057,7 @@ export default {
             transferOwner: 'Transfer owner',
             makeMember: 'Make member',
             makeAdmin: 'Make admin',
+            makeAuditor: 'Make auditor',
             selectAll: 'Select all',
             error: {
                 genericAdd: 'There was a problem adding this workspace member.',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index b4d071ba4a08..b91640abec15 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -334,6 +334,7 @@ export default {
         default: 'Predeterminado',
         update: 'Actualizar',
         member: 'Miembro',
+        auditor: 'Auditor',
         role: 'Role',
         currency: 'Divisa',
         rate: 'Tarifa',
@@ -2202,6 +2203,21 @@ export default {
             existingConnections: 'Conexiones existentes',
             lastSyncDate: (connectionName: string, formattedDate: string) => `${connectionName} - Última sincronización ${formattedDate}`,
             topLevel: 'Nivel superior',
+            memberAlternateText: 'Los miembros pueden presentar y aprobar informes.',
+            adminAlternateText: 'Los auditores pueden ver y comentar los informes.',
+            auditorAlternateText: 'Los administradores tienen acceso total para editar todos los informes y la configuración del área de trabajo.',
+            roleName: (role?: string): string => {
+                switch (role) {
+                    case CONST.POLICY.ROLE.ADMIN:
+                        return 'Administrador';
+                    case CONST.POLICY.ROLE.AUDITOR:
+                        return 'Auditor';
+                    case CONST.POLICY.ROLE.USER:
+                        return 'Miembro';
+                    default:
+                        return 'Miembro';
+                }
+            },
         },
         qbo: {
             importDescription: 'Elige que configuraciónes de codificación son importadas desde QuickBooks Online a Expensify.',
@@ -3093,6 +3109,7 @@ export default {
             transferOwner: 'Transferir la propiedad',
             makeMember: 'Hacer miembro',
             makeAdmin: 'Hacer administrador',
+            makeAuditor: 'Hacer auditor',
             selectAll: 'Seleccionar todo',
             error: {
                 genericAdd: 'Ha ocurrido un problema al añadir el miembro al espacio de trabajo.',
diff --git a/src/libs/actions/Policy/Member.ts b/src/libs/actions/Policy/Member.ts
index 1b881f65c831..cecffd74717b 100644
--- a/src/libs/actions/Policy/Member.ts
+++ b/src/libs/actions/Policy/Member.ts
@@ -407,7 +407,7 @@ function removeMembers(accountIDs: number[], policyID: string) {
     API.write(WRITE_COMMANDS.DELETE_MEMBERS_FROM_WORKSPACE, params, {optimisticData, successData, failureData});
 }
 
-function updateWorkspaceMembersRole(policyID: string, accountIDs: number[], newRole: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER) {
+function updateWorkspaceMembersRole(policyID: string, accountIDs: number[], newRole: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR) {
     const previousEmployeeList = {...allPolicies?.[policyID]?.employeeList};
     const memberRoles: WorkspaceMembersRoleData[] = accountIDs.reduce((result: WorkspaceMembersRoleData[], accountID: number) => {
         if (!allPersonalDetails?.[accountID]?.login) {
diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index d730dde02a67..b1ff0d03262b 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -449,7 +449,7 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
         return <View style={[styles.peopleRow, styles.userSelectNone, styles.ph9, styles.pv3, styles.pb5]}>{header}</View>;
     };
 
-    const changeUserRole = (role: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER) => {
+    const changeUserRole = (role: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR) => {
         if (!isEmptyObject(errors)) {
             return;
         }
@@ -481,22 +481,46 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
             const email = personalDetails?.[accountID]?.login ?? '';
             return policy?.employeeList?.[email]?.role;
         });
+
+        const memberOption = {
+            text: translate('workspace.people.makeMember'),
+            value: CONST.POLICY.MEMBERS_BULK_ACTION_TYPES.MAKE_MEMBER,
+            icon: Expensicons.User,
+            onSelected: () => changeUserRole(CONST.POLICY.ROLE.USER),
+        };
+        const adminOption = {
+            text: translate('workspace.people.makeAdmin'),
+            value: CONST.POLICY.MEMBERS_BULK_ACTION_TYPES.MAKE_ADMIN,
+            icon: Expensicons.MakeAdmin,
+            onSelected: () => changeUserRole(CONST.POLICY.ROLE.ADMIN),
+        };
+
+        const auditorOption = {
+            text: translate('workspace.people.makeAuditor'),
+            value: CONST.POLICY.MEMBERS_BULK_ACTION_TYPES.MAKE_AUDITOR,
+            icon: Expensicons.User,
+            onSelected: () => changeUserRole(CONST.POLICY.ROLE.AUDITOR),
+        };
+
         if (selectedEmployeesRoles.find((role) => role === CONST.POLICY.ROLE.ADMIN)) {
-            options.push({
-                text: translate('workspace.people.makeMember'),
-                value: CONST.POLICY.MEMBERS_BULK_ACTION_TYPES.MAKE_MEMBER,
-                icon: Expensicons.User,
-                onSelected: () => changeUserRole(CONST.POLICY.ROLE.USER),
-            });
+            options.push(auditorOption, memberOption);
         }
-
+        // TODO: Refactor this logic
         if (selectedEmployeesRoles.find((role) => role === CONST.POLICY.ROLE.USER)) {
-            options.push({
-                text: translate('workspace.people.makeAdmin'),
-                value: CONST.POLICY.MEMBERS_BULK_ACTION_TYPES.MAKE_ADMIN,
-                icon: Expensicons.MakeAdmin,
-                onSelected: () => changeUserRole(CONST.POLICY.ROLE.ADMIN),
-            });
+            options.push(adminOption);
+            if (!options.includes(auditorOption)) {
+                options.push(auditorOption);
+            }
+        }
+
+        if (selectedEmployeesRoles.find((role) => role === CONST.POLICY.ROLE.AUDITOR)) {
+            if (!options.includes(memberOption)) {
+                options.push(memberOption);
+            }
+
+            if (!options.includes(adminOption)) {
+                options.push(adminOption);
+            }
         }
         return options;
     };
diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx
index 2742033430ba..6a69b080a71d 100644
--- a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx
+++ b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx
@@ -88,15 +88,24 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM
             {
                 value: CONST.POLICY.ROLE.ADMIN,
                 text: translate('common.admin'),
+                alternateText: translate('workspace.common.adminAlternateText'),
                 isSelected: member?.role === CONST.POLICY.ROLE.ADMIN,
                 keyForList: CONST.POLICY.ROLE.ADMIN,
             },
             {
                 value: CONST.POLICY.ROLE.USER,
                 text: translate('common.member'),
-                isSelected: member?.role !== CONST.POLICY.ROLE.ADMIN,
+                alternateText: translate('workspace.common.memberAlternateText'),
+                isSelected: member?.role === CONST.POLICY.ROLE.USER,
                 keyForList: CONST.POLICY.ROLE.USER,
             },
+            {
+                value: CONST.POLICY.ROLE.AUDITOR,
+                text: translate('common.auditor'),
+                alternateText: translate('workspace.common.auditorAlternateText'),
+                isSelected: member?.role === CONST.POLICY.ROLE.AUDITOR,
+                keyForList: CONST.POLICY.ROLE.AUDITOR,
+            },
         ],
         [member?.role, translate],
     );
@@ -234,7 +243,7 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM
                                 <View style={styles.w100}>
                                     <MenuItemWithTopDescription
                                         disabled={isSelectedMemberOwner || isSelectedMemberCurrentUser}
-                                        title={member?.role === CONST.POLICY.ROLE.ADMIN ? translate('common.admin') : translate('common.member')}
+                                        title={translate(`workspace.common.roleName`, member?.role)}
                                         description={translate('common.role')}
                                         shouldShowRightIcon
                                         onPress={openRoleSelectionModal}
diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
index 31b6c7476a08..f89dc736069a 100644
--- a/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
+++ b/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
@@ -10,10 +10,11 @@ import useThemeStyles from '@hooks/useThemeStyles';
 import CONST from '@src/CONST';
 
 type ListItemType = {
-    value: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER;
+    value: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR;
     text: string;
+    alternateText: string;
     isSelected: boolean;
-    keyForList: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER;
+    keyForList: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR;
 };
 
 type WorkspaceMemberDetailsPageProps = {

From fec77baa947508b2d1c328956504d83b2583c762 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Sat, 17 Aug 2024 13:00:09 +0700
Subject: [PATCH 02/16] fix linting

---
 src/libs/actions/Policy/Member.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/libs/actions/Policy/Member.ts b/src/libs/actions/Policy/Member.ts
index cecffd74717b..babd38c23651 100644
--- a/src/libs/actions/Policy/Member.ts
+++ b/src/libs/actions/Policy/Member.ts
@@ -41,7 +41,7 @@ type NewCustomUnit = {
 type WorkspaceMembersRoleData = {
     accountID: number;
     email: string;
-    role: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER;
+    role: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR;
 };
 
 const allPolicies: OnyxCollection<Policy> = {};

From 0f6423c0c555039091414ff07658ce3bf3d2474d Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Sat, 17 Aug 2024 13:55:07 +0700
Subject: [PATCH 03/16] refactor bulkaction logic

---
 src/pages/workspace/WorkspaceMembersPage.tsx | 65 ++++++++++----------
 1 file changed, 31 insertions(+), 34 deletions(-)

diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index b1ff0d03262b..17aa8d8242a4 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -1,24 +1,24 @@
-import {useIsFocused} from '@react-navigation/native';
-import type {StackScreenProps} from '@react-navigation/stack';
+import { useIsFocused } from '@react-navigation/native';
+import type { StackScreenProps } from '@react-navigation/stack';
 import lodashIsEqual from 'lodash/isEqual';
-import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
-import type {TextInput} from 'react-native';
-import {InteractionManager, View} from 'react-native';
-import type {OnyxEntry} from 'react-native-onyx';
-import {useOnyx} from 'react-native-onyx';
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
+import type { TextInput } from 'react-native';
+import { InteractionManager, View } from 'react-native';
+import type { OnyxEntry } from 'react-native-onyx';
+import { useOnyx } from 'react-native-onyx';
 import Badge from '@components/Badge';
 import Button from '@components/Button';
 import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu';
-import type {DropdownOption, WorkspaceMemberBulkActionType} from '@components/ButtonWithDropdownMenu/types';
+import type { DropdownOption, WorkspaceMemberBulkActionType } from '@components/ButtonWithDropdownMenu/types';
 import ConfirmModal from '@components/ConfirmModal';
 import * as Expensicons from '@components/Icon/Expensicons';
 import * as Illustrations from '@components/Icon/Illustrations';
 import MessagesRow from '@components/MessagesRow';
 import TableListItem from '@components/SelectionList/TableListItem';
-import type {ListItem, SelectionListHandle} from '@components/SelectionList/types';
+import type { ListItem, SelectionListHandle } from '@components/SelectionList/types';
 import SelectionListWithModal from '@components/SelectionListWithModal';
 import Text from '@components/Text';
-import type {WithCurrentUserPersonalDetailsProps} from '@components/withCurrentUserPersonalDetails';
+import type { WithCurrentUserPersonalDetailsProps } from '@components/withCurrentUserPersonalDetails';
 import withCurrentUserPersonalDetails from '@components/withCurrentUserPersonalDetails';
 import useLocalize from '@hooks/useLocalize';
 import useNetwork from '@hooks/useNetwork';
@@ -26,28 +26,29 @@ import usePrevious from '@hooks/usePrevious';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useStyleUtils from '@hooks/useStyleUtils';
 import useThemeStyles from '@hooks/useThemeStyles';
-import {turnOffMobileSelectionMode} from '@libs/actions/MobileSelectionMode';
+import { turnOffMobileSelectionMode } from '@libs/actions/MobileSelectionMode';
 import * as DeviceCapabilities from '@libs/DeviceCapabilities';
 import Log from '@libs/Log';
 import Navigation from '@libs/Navigation/Navigation';
-import type {FullScreenNavigatorParamList} from '@libs/Navigation/types';
+import type { FullScreenNavigatorParamList } from '@libs/Navigation/types';
 import * as OptionsListUtils from '@libs/OptionsListUtils';
 import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
-import {getDisplayNameForParticipant} from '@libs/ReportUtils';
+import { getDisplayNameForParticipant } from '@libs/ReportUtils';
 import * as Member from '@userActions/Policy/Member';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
-import type {PersonalDetailsList, PolicyEmployeeList} from '@src/types/onyx';
-import type {Errors, PendingAction} from '@src/types/onyx/OnyxCommon';
-import {isEmptyObject} from '@src/types/utils/EmptyObject';
-import type {WithPolicyAndFullscreenLoadingProps} from './withPolicyAndFullscreenLoading';
+import type { PersonalDetailsList, PolicyEmployeeList } from '@src/types/onyx';
+import type { Errors, PendingAction } from '@src/types/onyx/OnyxCommon';
+import { isEmptyObject } from '@src/types/utils/EmptyObject';
+import type { WithPolicyAndFullscreenLoadingProps } from './withPolicyAndFullscreenLoading';
 import withPolicyAndFullscreenLoading from './withPolicyAndFullscreenLoading';
 import WorkspacePageWithSections from './WorkspacePageWithSections';
 
+
 type WorkspaceMembersPageProps = WithPolicyAndFullscreenLoadingProps & WithCurrentUserPersonalDetailsProps & StackScreenProps<FullScreenNavigatorParamList, typeof SCREENS.WORKSPACE.MEMBERS>;
 
 /**
@@ -502,26 +503,22 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
             onSelected: () => changeUserRole(CONST.POLICY.ROLE.AUDITOR),
         };
 
-        if (selectedEmployeesRoles.find((role) => role === CONST.POLICY.ROLE.ADMIN)) {
-            options.push(auditorOption, memberOption);
-        }
-        // TODO: Refactor this logic
-        if (selectedEmployeesRoles.find((role) => role === CONST.POLICY.ROLE.USER)) {
-            options.push(adminOption);
-            if (!options.includes(auditorOption)) {
-                options.push(auditorOption);
-            }
+        const hasAtLeaseOneNonAuditorRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.AUDITOR);
+        const hasAtLeaseOneNoneMemberRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.USER);
+        const hasAtLeaseOneNoneAdminRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.ADMIN);
+
+        if (hasAtLeaseOneNonAuditorRole) {
+            options.push(auditorOption);
         }
 
-        if (selectedEmployeesRoles.find((role) => role === CONST.POLICY.ROLE.AUDITOR)) {
-            if (!options.includes(memberOption)) {
-                options.push(memberOption);
-            }
+        if (hasAtLeaseOneNoneMemberRole) {
+            options.push(memberOption);
+        }
 
-            if (!options.includes(adminOption)) {
-                options.push(adminOption);
-            }
+        if (hasAtLeaseOneNoneAdminRole) {
+            options.push(adminOption);
         }
+
         return options;
     };
 
@@ -635,4 +632,4 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
 
 WorkspaceMembersPage.displayName = 'WorkspaceMembersPage';
 
-export default withCurrentUserPersonalDetails(withPolicyAndFullscreenLoading(WorkspaceMembersPage));
+export default withCurrentUserPersonalDetails(withPolicyAndFullscreenLoading(WorkspaceMembersPage));
\ No newline at end of file

From 5b59e2c552b9cd0a741ea9830704f40eae6d684f Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Sat, 17 Aug 2024 14:14:22 +0700
Subject: [PATCH 04/16] fix lint

---
 src/pages/workspace/WorkspaceMembersPage.tsx | 37 ++++++++++----------
 1 file changed, 18 insertions(+), 19 deletions(-)

diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index 17aa8d8242a4..1109c5157425 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -1,24 +1,24 @@
-import { useIsFocused } from '@react-navigation/native';
-import type { StackScreenProps } from '@react-navigation/stack';
+import {useIsFocused} from '@react-navigation/native';
+import type {StackScreenProps} from '@react-navigation/stack';
 import lodashIsEqual from 'lodash/isEqual';
-import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
-import type { TextInput } from 'react-native';
-import { InteractionManager, View } from 'react-native';
-import type { OnyxEntry } from 'react-native-onyx';
-import { useOnyx } from 'react-native-onyx';
+import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
+import type {TextInput} from 'react-native';
+import {InteractionManager, View} from 'react-native';
+import type {OnyxEntry} from 'react-native-onyx';
+import {useOnyx} from 'react-native-onyx';
 import Badge from '@components/Badge';
 import Button from '@components/Button';
 import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu';
-import type { DropdownOption, WorkspaceMemberBulkActionType } from '@components/ButtonWithDropdownMenu/types';
+import type {DropdownOption, WorkspaceMemberBulkActionType} from '@components/ButtonWithDropdownMenu/types';
 import ConfirmModal from '@components/ConfirmModal';
 import * as Expensicons from '@components/Icon/Expensicons';
 import * as Illustrations from '@components/Icon/Illustrations';
 import MessagesRow from '@components/MessagesRow';
 import TableListItem from '@components/SelectionList/TableListItem';
-import type { ListItem, SelectionListHandle } from '@components/SelectionList/types';
+import type {ListItem, SelectionListHandle} from '@components/SelectionList/types';
 import SelectionListWithModal from '@components/SelectionListWithModal';
 import Text from '@components/Text';
-import type { WithCurrentUserPersonalDetailsProps } from '@components/withCurrentUserPersonalDetails';
+import type {WithCurrentUserPersonalDetailsProps} from '@components/withCurrentUserPersonalDetails';
 import withCurrentUserPersonalDetails from '@components/withCurrentUserPersonalDetails';
 import useLocalize from '@hooks/useLocalize';
 import useNetwork from '@hooks/useNetwork';
@@ -26,29 +26,28 @@ import usePrevious from '@hooks/usePrevious';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useStyleUtils from '@hooks/useStyleUtils';
 import useThemeStyles from '@hooks/useThemeStyles';
-import { turnOffMobileSelectionMode } from '@libs/actions/MobileSelectionMode';
+import {turnOffMobileSelectionMode} from '@libs/actions/MobileSelectionMode';
 import * as DeviceCapabilities from '@libs/DeviceCapabilities';
 import Log from '@libs/Log';
 import Navigation from '@libs/Navigation/Navigation';
-import type { FullScreenNavigatorParamList } from '@libs/Navigation/types';
+import type {FullScreenNavigatorParamList} from '@libs/Navigation/types';
 import * as OptionsListUtils from '@libs/OptionsListUtils';
 import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
-import { getDisplayNameForParticipant } from '@libs/ReportUtils';
+import {getDisplayNameForParticipant} from '@libs/ReportUtils';
 import * as Member from '@userActions/Policy/Member';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
-import type { PersonalDetailsList, PolicyEmployeeList } from '@src/types/onyx';
-import type { Errors, PendingAction } from '@src/types/onyx/OnyxCommon';
-import { isEmptyObject } from '@src/types/utils/EmptyObject';
-import type { WithPolicyAndFullscreenLoadingProps } from './withPolicyAndFullscreenLoading';
+import type {PersonalDetailsList, PolicyEmployeeList} from '@src/types/onyx';
+import type {Errors, PendingAction} from '@src/types/onyx/OnyxCommon';
+import {isEmptyObject} from '@src/types/utils/EmptyObject';
+import type {WithPolicyAndFullscreenLoadingProps} from './withPolicyAndFullscreenLoading';
 import withPolicyAndFullscreenLoading from './withPolicyAndFullscreenLoading';
 import WorkspacePageWithSections from './WorkspacePageWithSections';
 
-
 type WorkspaceMembersPageProps = WithPolicyAndFullscreenLoadingProps & WithCurrentUserPersonalDetailsProps & StackScreenProps<FullScreenNavigatorParamList, typeof SCREENS.WORKSPACE.MEMBERS>;
 
 /**
@@ -632,4 +631,4 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
 
 WorkspaceMembersPage.displayName = 'WorkspaceMembersPage';
 
-export default withCurrentUserPersonalDetails(withPolicyAndFullscreenLoading(WorkspaceMembersPage));
\ No newline at end of file
+export default withCurrentUserPersonalDetails(withPolicyAndFullscreenLoading(WorkspaceMembersPage));

From c34ae3c7a70d91cff6da36f399af85da7a702d4e Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Tue, 20 Aug 2024 14:37:59 +0700
Subject: [PATCH 05/16] update auditor role for expense

---
 src/CONST.ts             |  1 +
 src/libs/PolicyUtils.ts  |  7 +++++++
 src/libs/ReportUtils.ts  | 24 +++++++++++++++++++++++-
 src/libs/actions/Task.ts |  2 +-
 4 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/CONST.ts b/src/CONST.ts
index d9d8dd74c936..9f8f0be6a733 100755
--- a/src/CONST.ts
+++ b/src/CONST.ts
@@ -911,6 +911,7 @@ const CONST = {
             WRITE: 'write',
             SHARE: 'share',
             OWN: 'own',
+            AUDITOR: 'auditor',
         },
         INVOICE_RECEIVER_TYPE: {
             INDIVIDUAL: 'individual',
diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts
index 3f3a2a96a1e1..c8f72384be1e 100644
--- a/src/libs/PolicyUtils.ts
+++ b/src/libs/PolicyUtils.ts
@@ -192,6 +192,12 @@ const isPolicyAdmin = (policy: OnyxInputOrEntry<Policy>, currentUserLogin?: stri
 const isPolicyUser = (policy: OnyxInputOrEntry<Policy>, currentUserLogin?: string): boolean =>
     (policy?.role ?? (currentUserLogin && policy?.employeeList?.[currentUserLogin]?.role)) === CONST.POLICY.ROLE.USER;
 
+/**
+ * Checks if the current user is an auditor of the policy
+ */
+const isPolicyAuditor = (policy: OnyxInputOrEntry<Policy>, currentUserLogin?: string): boolean =>
+    (policy?.role ?? (currentUserLogin && policy?.employeeList?.[currentUserLogin]?.role)) === CONST.POLICY.ROLE.AUDITOR;
+
 /**
  * Checks if the policy is a free group policy.
  */
@@ -1013,6 +1019,7 @@ export {
     isPendingDeletePolicy,
     isPolicyAdmin,
     isPolicyUser,
+    isPolicyAuditor,
     isPolicyEmployee,
     isPolicyFeatureEnabled,
     isPolicyOwner,
diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index b5be3aba41a1..35b1aa10a833 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -1398,11 +1398,28 @@ function isJoinRequestInAdminRoom(report: OnyxEntry<Report>): boolean {
     return ReportActionsUtils.isActionableJoinRequestPending(report.reportID);
 }
 
+/**
+ * Checks if the user can only comment in the provided report (auditor role)
+ */
+
+function isOnlyAllowedToComment(report: OnyxEntry<Report>): boolean {
+    if (Array.isArray(report?.permissions) && report?.permissions.length > 0) {
+        return report?.permissions?.includes(CONST.REPORT.PERMISSIONS.AUDITOR);
+    }
+
+    if (report?.policyID) {
+        const policy = getPolicy(report.policyID);
+        return PolicyUtils.isPolicyAuditor(policy);
+    }
+
+    return false;
+}
+
 /**
  * Checks if the user can write in the provided report
  */
 function canWriteInReport(report: OnyxEntry<Report>): boolean {
-    if (Array.isArray(report?.permissions) && report?.permissions.length > 0) {
+    if (Array.isArray(report?.permissions) && report?.permissions.length > 0 && !report?.permissions?.includes(CONST.REPORT.PERMISSIONS.AUDITOR)) {
         return report?.permissions?.includes(CONST.REPORT.PERMISSIONS.WRITE);
     }
 
@@ -1413,6 +1430,10 @@ function canWriteInReport(report: OnyxEntry<Report>): boolean {
  * Checks if the current user is allowed to comment on the given report.
  */
 function isAllowedToComment(report: OnyxEntry<Report>): boolean {
+    if (isOnlyAllowedToComment(report)) {
+        return true;
+    }
+
     if (!canWriteInReport(report)) {
         return false;
     }
@@ -7985,6 +8006,7 @@ export {
     getArchiveReason,
     getApprovalChain,
     isIndividualInvoiceRoom,
+    isOnlyAllowedToComment,
 };
 
 export type {
diff --git a/src/libs/actions/Task.ts b/src/libs/actions/Task.ts
index 6105b7cffd9e..84f00f898966 100644
--- a/src/libs/actions/Task.ts
+++ b/src/libs/actions/Task.ts
@@ -1122,7 +1122,7 @@ function canModifyTask(taskReport: OnyxEntry<OnyxTypes.Report>, sessionAccountID
         return true;
     }
 
-    if (!ReportUtils.canWriteInReport(taskReport)) {
+    if (!ReportUtils.canWriteInReport(taskReport) || ReportUtils.isOnlyAllowedToComment(taskReport)) {
         return false;
     }
 

From f08c970b8738f445f201d0600d6e3e7cc5258d20 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Tue, 20 Aug 2024 14:53:35 +0700
Subject: [PATCH 06/16] remove local changes

---
 .../getDeployPullRequestList.ts               | 109 ++-
 .../getDeployPullRequestList/index.js         |  85 ++-
 .../javascript/proposalPoliceComment/index.js |   5 +-
 .../proposalPoliceComment.ts                  |   5 +-
 .github/workflows/platformDeploy.yml          |   6 +
 .github/workflows/testBuild.yml               |   3 +-
 android/app/build.gradle                      |   4 +-
 assets/emojis/en.ts                           |   2 +-
 assets/images/box.svg                         |   4 +-
 .../todd-with-phones.svg                      | 668 +-----------------
 .../advanced-approvals-icon-square.svg        |  87 +--
 .../emptystate__big-vault.svg                 | 379 +---------
 .../simple-illustration__envelopereceipt.svg  |  49 ++
 assets/images/user-check.svg                  |  10 +-
 contributingGuides/CONTRIBUTING.md            |   2 +
 .../netsuite/Configure-Netsuite.md            | 250 ++++++-
 .../netsuite/Connect-to-NetSuite.md           | 248 -------
 .../sage-intacct/Configure-Sage-Intacct.md    | 131 +++-
 .../sage-intacct/Connect-to-Sage-Intacct.md   | 128 ----
 .../Create-a-company-workspace.md             |  14 +-
 docs/assets/images/Duty-of-care.png           | Bin 629920 -> 534378 bytes
 .../images/ExpensifyHelp-FreeTrial-1.png      | Bin 0 -> 239285 bytes
 .../ExpensifyHelp_CreateWorkspace_1.png       | Bin 313150 -> 248094 bytes
 .../ExpensifyHelp_CreateWorkspace_2.png       | Bin 251247 -> 216189 bytes
 .../ExpensifyHelp_CreateWorkspace_3.png       | Bin 233164 -> 184835 bytes
 .../images/ExpensifyHelp_InviteMembers_1.png  | Bin 87761 -> 77669 bytes
 .../images/ExpensifyHelp_InviteMembers_2.png  | Bin 124800 -> 109662 bytes
 .../images/ExpensifyHelp_InviteMembers_3.png  | Bin 174229 -> 153876 bytes
 docs/assets/images/Export-Expenses.png        | Bin 262392 -> 228589 bytes
 .../images/QBO_classic_edit_exports.png       | Bin 277756 -> 238802 bytes
 docs/assets/images/QBO_classic_icon.png       | Bin 162821 -> 145366 bytes
 .../images/QBO_classic_report_history.png     | Bin 231272 -> 207528 bytes
 .../QBO_classic_troubleshooting_billable.png  | Bin 214836 -> 189487 bytes
 ...QBO_classic_troubleshooting_billable_2.png | Bin 230562 -> 211862 bytes
 docs/assets/images/Travel-Analytics.png       | Bin 260061 -> 238634 bytes
 .../images/Xero_classic_Edit_exports.png      | Bin 286494 -> 251485 bytes
 .../images/Xero_classic_bank_transaction.png  | Bin 292243 -> 285098 bytes
 .../images/Xero_classic_category_icon.png     | Bin 268390 -> 240550 bytes
 docs/assets/images/Xero_classic_copy.png      | Bin 156144 -> 135411 bytes
 .../images/Xero_classic_new_connection.png    | Bin 175493 -> 156775 bytes
 .../Xero_classic_troubleshoot_category.png    | Bin 208220 -> 183774 bytes
 .../Xero_classic_troubleshoot_payment.png     | Bin 170242 -> 162725 bytes
 .../Xero_classic_troubleshoot_remove_redo.png | Bin 173795 -> 149971 bytes
 docs/assets/images/Xero_help_01.png           | Bin 213925 -> 150859 bytes
 docs/assets/images/Xero_help_02.png           | Bin 170467 -> 125540 bytes
 docs/assets/images/Xero_help_03.png           | Bin 145744 -> 107754 bytes
 docs/assets/images/Xero_help_04.png           | Bin 184501 -> 133491 bytes
 docs/assets/images/Xero_help_05.png           | Bin 189939 -> 141926 bytes
 docs/redirects.csv                            | 179 ++++-
 ios/NewExpensify/Info.plist                   |   4 +-
 ios/NewExpensifyTests/Info.plist              |   4 +-
 ios/NotificationServiceExtension/Info.plist   |   4 +-
 ios/Podfile.lock                              |  12 +-
 package-lock.json                             | 247 ++++++-
 package.json                                  |  13 +-
 ...zed-lists+0.73.4+002+osr-improvement.patch |  85 ++-
 ...+016+iOSCoreAnimationBorderRendering.patch |  25 +-
 ...act-native+0.73.4+024+fixMVCPAndroid.patch | 334 +++++++++
 ...t-native-keyboard-controller+1.13.0.patch} |  34 +-
 ...tive-web+0.19.12+005+osr-improvement.patch | 150 +++-
 ...12+007+fix-scrollable-overflown-text.patch |  26 +
 src/CONST.ts                                  |  21 +-
 src/ONYXKEYS.ts                               |  10 +-
 src/ROUTES.ts                                 |   9 +-
 src/components/AttachmentModal.tsx            |   8 +-
 src/components/BlockingViews/BlockingView.tsx |   3 +-
 src/components/Button/index.tsx               |  20 +-
 src/components/Composer/index.tsx             |   8 +-
 src/components/EmptySelectionListContent.tsx  |   2 +-
 src/components/FeedbackSurvey.tsx             | 108 +--
 src/components/FlatList/index.android.tsx     |  17 +-
 src/components/FormAlertWithSubmitButton.tsx  |  16 +-
 src/components/Icon/Illustrations.ts          |   2 +
 .../KeyboardAvoidingView/index.ios.tsx        |   2 +-
 src/components/MoneyReportHeader.tsx          |   3 +-
 .../MoneyRequestConfirmationList.tsx          |  61 +-
 .../MoneyRequestConfirmationListFooter.tsx    |   4 +-
 src/components/PopoverMenu.tsx                |   7 +-
 .../ReportActionItem/MoneyRequestView.tsx     |   6 +-
 .../ReportActionItemImage.tsx                 |   8 +-
 src/components/SafeAreaConsumer/types.ts      |   8 +-
 src/components/ScreenWrapper.tsx              |   9 +-
 .../SearchFiltersParticipantsSelector.tsx     |   6 +-
 src/components/Search/SearchPageHeader.tsx    |  30 +-
 src/components/Search/SearchStatusBar.tsx     | 166 +++++
 src/components/Search/index.tsx               |  31 +-
 src/components/Search/types.ts                |  10 +-
 .../SelectionList/BaseSelectionList.tsx       |  11 +-
 .../Search/ExpenseItemHeaderNarrow.tsx        |   6 +-
 .../SelectionList/Search/ReportListItem.tsx   |   4 +-
 .../SelectionList/Search/UserInfoCell.tsx     |  12 +-
 .../SelectionList/SearchTableHeader.tsx       |  19 +-
 src/components/SelectionList/types.ts         |  10 +-
 .../TabSelector/TabSelectorItem.tsx           |  40 +-
 .../BaseEducationalTooltip.tsx                |   6 +-
 src/components/ValidateAccountMessage.tsx     |  56 ++
 .../VideoPlayer/BaseVideoPlayer.tsx           |   4 +-
 src/languages/en.ts                           | 107 +--
 src/languages/es.ts                           |  90 +--
 .../parameters/OpenCardDetailsPageParams.ts   |   6 +
 ...oggleCardContinuousReconciliationParams.ts |   7 +
 .../UpdateExpensifyCardLimitTypeParams.ts     |   7 +
 src/libs/API/parameters/index.ts              |   3 +
 src/libs/API/types.ts                         |   6 +
 src/libs/AccountingUtils.ts                   |  27 +
 src/libs/CardUtils.ts                         |  17 +-
 .../Navigation/AppNavigator/AuthScreens.tsx   |   6 +
 .../Navigators/OnboardingModalNavigator.tsx   |   3 -
 .../Navigators/RightModalNavigator.tsx        |   8 +-
 .../BottomTabBar.tsx                          |   6 +-
 .../getRootNavigatorScreenOptions.ts          |   4 +-
 src/libs/Navigation/linkTo/index.ts           |   4 +
 .../CENTRAL_PANE_TO_RHP_MAPPING.ts            |   3 +
 .../linkingConfig/getAdaptedStateFromPath.ts  |   9 +-
 src/libs/Navigation/switchPolicyID.ts         |   3 +-
 src/libs/Navigation/types.ts                  |   5 +-
 src/libs/OptionsListUtils.ts                  |  29 +-
 src/libs/ReportActionsUtils.ts                |  58 ++
 src/libs/ReportUtils.ts                       |  43 +-
 src/libs/SearchUtils.ts                       | 105 +--
 src/libs/SidebarUtils.ts                      |  13 +-
 src/libs/TransactionUtils/index.ts            |  14 +-
 src/libs/actions/Card.ts                      | 145 +++-
 src/libs/actions/IOU.ts                       |  38 +-
 src/libs/actions/Policy/Policy.ts             |   5 +-
 src/libs/actions/Report.ts                    |   4 +-
 src/libs/actions/Task.ts                      |  12 +
 src/libs/actions/connections/index.ts         |   5 +-
 .../AddBankAccount/SetupMethod.tsx            |   5 +-
 src/pages/GroupChatNameEditPage.tsx           |   6 +-
 src/pages/NewChatConfirmPage.tsx              |   3 +-
 .../BaseOnboardingPurpose.tsx                 |  82 +--
 .../ReimbursementAccount/BankAccountStep.tsx  |  42 +-
 src/pages/ReportDetailsPage.tsx               |   4 +
 src/pages/Search/EmptySearchView.tsx          |   2 -
 .../Search/SearchFiltersCategoryPage.tsx      |   4 +-
 src/pages/Search/SearchPage.tsx               |   8 +-
 src/pages/Search/SearchPageBottomTab.tsx      |  11 +-
 ...earchStatusMenu.tsx => SearchTypeMenu.tsx} |  58 +-
 ...enuNarrow.tsx => SearchTypeMenuNarrow.tsx} |  14 +-
 .../TransactionDuplicate/Confirmation.tsx     |  24 +-
 src/pages/TransactionReceiptPage.tsx          |   3 +-
 src/pages/WorkspaceSwitcherPage/index.tsx     |   3 +-
 src/pages/home/ReportScreen.tsx               |  44 +-
 .../report/ContextMenu/ContextMenuActions.tsx |  10 +
 .../PopoverReportActionContextMenu.tsx        |   1 +
 .../ContextMenu/ReportActionContextMenu.ts    |  48 +-
 src/pages/home/report/ReportActionItem.tsx    |  23 +-
 src/pages/home/report/ReportActionsList.tsx   |   8 +-
 src/pages/home/report/ReportActionsView.tsx   |  16 +-
 .../FloatingActionButtonAndPopover.tsx        |   5 +-
 .../MoneyRequestParticipantsSelector.tsx      |   9 +-
 .../TwoFactorAuth/Steps/CodesStep.tsx         | 148 ++--
 .../TwoFactorAuth/TwoFactorAuthForm/types.ts  |   3 +-
 .../Subscription/CardSection/CardSection.tsx  |   3 +-
 .../DisableAutoRenewSurveyPage/index.tsx      |   2 +
 .../ChangeBillingCurrency/index.tsx           |  22 +-
 .../RequestEarlyCancellationPage/index.tsx    |   2 +
 src/pages/signin/EmailDeliveryFailurePage.tsx |   4 +-
 src/pages/signin/SignInModal.tsx              |  19 +-
 src/pages/signin/SignInPage.tsx               |  44 +-
 src/pages/signin/SignUpWelcomeForm.tsx        |   7 +-
 .../ValidateCodeForm/BaseValidateCodeForm.tsx |  28 +-
 .../signin/ValidateCodeForm/index.android.tsx |   9 +-
 src/pages/signin/ValidateCodeForm/index.tsx   |   9 +-
 src/pages/tasks/NewTaskPage.tsx               |  23 +-
 src/pages/tasks/TaskAssigneeSelectorModal.tsx |  13 +-
 .../accounting/PolicyAccountingPage.tsx       |   4 +-
 .../reconciliation/CardReconciliationPage.tsx |  33 +-
 .../ReconciliationAccountSettingsPage.tsx     |   4 +-
 .../distanceRates/PolicyDistanceRatesPage.tsx |   2 +
 .../WorkspaceEditCardLimitPage.tsx            |  27 +-
 .../WorkspaceEditCardLimitTypePage.tsx        |  11 +-
 .../WorkspaceExpensifyCardDetailsPage.tsx     |  14 +-
 .../WorkspaceExpensifyCardListPage.tsx        |  15 +-
 .../WorkspaceSettlementAccountPage.tsx        |   7 +-
 ...rkspaceMemberDetailsRoleSelectionModal.tsx |   1 +
 .../workspace/tags/WorkspaceEditTagsPage.tsx  |   5 +-
 ...orkspaceAutoReportingMonthlyOffsetPage.tsx |   5 +-
 src/styles/index.ts                           |   2 +-
 src/styles/utils/display.ts                   |  12 +-
 .../ReportActionContextMenuStyleUtils.ts      |   3 +-
 src/styles/utils/index.ts                     |  59 +-
 src/styles/utils/overflowAuto/index.ts        |   4 +-
 src/styles/utils/positioning.ts               |   3 +-
 src/styles/utils/spacing.ts                   |   8 +
 src/types/form/FeedbackSurveyForm.ts          |  19 +
 src/types/form/index.ts                       |   1 +
 src/types/modules/react-native-web.d.ts       |  11 -
 src/types/modules/react-native.d.ts           | 364 +---------
 src/types/onyx/Card.ts                        |   7 +-
 src/types/onyx/ExpensifyCardSettings.ts       |   6 +-
 src/types/onyx/OriginalMessage.ts             |  18 +
 src/types/onyx/SearchResults.ts               |  43 +-
 tsconfig.json                                 |   2 +-
 195 files changed, 3344 insertions(+), 2956 deletions(-)
 create mode 100644 assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg
 create mode 100644 docs/assets/images/ExpensifyHelp-FreeTrial-1.png
 create mode 100644 patches/react-native+0.73.4+024+fixMVCPAndroid.patch
 rename patches/{react-native-keyboard-controller+1.12.2.patch => react-native-keyboard-controller+1.13.0.patch} (57%)
 create mode 100644 patches/react-native-web+0.19.12+007+fix-scrollable-overflown-text.patch
 create mode 100644 src/components/Search/SearchStatusBar.tsx
 create mode 100644 src/components/ValidateAccountMessage.tsx
 create mode 100644 src/libs/API/parameters/OpenCardDetailsPageParams.ts
 create mode 100644 src/libs/API/parameters/ToggleCardContinuousReconciliationParams.ts
 create mode 100644 src/libs/API/parameters/UpdateExpensifyCardLimitTypeParams.ts
 create mode 100644 src/libs/AccountingUtils.ts
 rename src/pages/Search/{SearchStatusMenu.tsx => SearchTypeMenu.tsx} (57%)
 rename src/pages/Search/{SearchStatusMenuNarrow.tsx => SearchTypeMenuNarrow.tsx} (91%)
 create mode 100644 src/types/form/FeedbackSurveyForm.ts
 delete mode 100644 src/types/modules/react-native-web.d.ts

diff --git a/.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts b/.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts
index b9d01702e66e..da946b78a056 100644
--- a/.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts
+++ b/.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts
@@ -1,13 +1,83 @@
 import * as core from '@actions/core';
 import * as github from '@actions/github';
+import type {RestEndpointMethodTypes} from '@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types';
 import {getJSONInput} from '@github/libs/ActionUtils';
 import GithubUtils from '@github/libs/GithubUtils';
 import GitUtils from '@github/libs/GitUtils';
 
+type WorkflowRun = RestEndpointMethodTypes['actions']['listWorkflowRuns']['response']['data']['workflow_runs'][number];
+
+const BUILD_AND_DEPLOY_JOB_NAME_PREFIX = 'Build and deploy';
+
+/**
+ * This function checks if a given release is a valid baseTag to get the PR list with `git log baseTag...endTag`.
+ *
+ * The rules are:
+ *     - production deploys can only be compared with other production deploys
+ *     - staging deploys can be compared with other staging deploys or production deploys.
+ *       The reason is that the final staging release in each deploy cycle will BECOME a production release.
+ *       For example, imagine a checklist is closed with version 9.0.20-6; that's the most recent staging deploy, but the release for 9.0.20-6 is now finalized, so it looks like a prod deploy.
+ *       When 9.0.21-0 finishes deploying to staging, the most recent prerelease is 9.0.20-5. However, we want 9.0.20-6...9.0.21-0,
+ *       NOT 9.0.20-5...9.0.21-0 (so that the PR CP'd in 9.0.20-6 is not included in the next checklist)
+ */
+async function isReleaseValidBaseForEnvironment(releaseTag: string, isProductionDeploy: boolean) {
+    if (!isProductionDeploy) {
+        return true;
+    }
+    const isPrerelease = (
+        await GithubUtils.octokit.repos.getReleaseByTag({
+            owner: github.context.repo.owner,
+            repo: github.context.repo.repo,
+            tag: releaseTag,
+        })
+    ).data.prerelease;
+    return !isPrerelease;
+}
+
+/**
+ * Was a given platformDeploy workflow run successful on at least one platform?
+ */
+async function wasDeploySuccessful(runID: number) {
+    const jobsForWorkflowRun = (
+        await GithubUtils.octokit.actions.listJobsForWorkflowRun({
+            owner: github.context.repo.owner,
+            repo: github.context.repo.repo,
+            // eslint-disable-next-line @typescript-eslint/naming-convention
+            run_id: runID,
+            filter: 'latest',
+        })
+    ).data.jobs;
+    return jobsForWorkflowRun.some((job) => job.name.startsWith(BUILD_AND_DEPLOY_JOB_NAME_PREFIX) && job.conclusion === 'success');
+}
+
+/**
+ * This function checks if a given deploy workflow is a valid basis for comparison when listing PRs merged between two versions.
+ * It returns the reason a version should be skipped, or an empty string if the version should not be skipped.
+ */
+async function shouldSkipVersion(lastSuccessfulDeploy: WorkflowRun, inputTag: string, isProductionDeploy: boolean): Promise<string> {
+    if (!lastSuccessfulDeploy?.head_branch) {
+        // This should never happen. Just doing this to appease TS.
+        return '';
+    }
+
+    // we never want to compare a tag with itself. This check is necessary because prod deploys almost always have the same version as the last staging deploy.
+    // In this case, the next for wrong environment fails because the release that triggered that staging deploy is now finalized, so it looks like a prod deploy.
+    if (lastSuccessfulDeploy?.head_branch === inputTag) {
+        return `Same as input tag ${inputTag}`;
+    }
+    if (!(await isReleaseValidBaseForEnvironment(lastSuccessfulDeploy?.head_branch, isProductionDeploy))) {
+        return 'Was a staging deploy, we only want to compare with other production deploys';
+    }
+    if (!(await wasDeploySuccessful(lastSuccessfulDeploy.id))) {
+        return 'Was an unsuccessful deploy, nothing was deployed in that version';
+    }
+    return '';
+}
+
 async function run() {
     try {
         const inputTag = core.getInput('TAG', {required: true});
-        const isProductionDeploy = getJSONInput('IS_PRODUCTION_DEPLOY', {required: false}, false);
+        const isProductionDeploy = !!getJSONInput('IS_PRODUCTION_DEPLOY', {required: false}, false);
         const deployEnv = isProductionDeploy ? 'production' : 'staging';
 
         console.log(`Looking for PRs deployed to ${deployEnv} in ${inputTag}...`);
@@ -27,33 +97,26 @@ async function run() {
 
         // Find the most recent deploy workflow targeting the correct environment, for which at least one of the build jobs finished successfully
         let lastSuccessfulDeploy = completedDeploys.shift();
-        while (
-            lastSuccessfulDeploy?.head_branch &&
-            ((
-                await GithubUtils.octokit.repos.getReleaseByTag({
-                    owner: github.context.repo.owner,
-                    repo: github.context.repo.repo,
-                    tag: lastSuccessfulDeploy.head_branch,
-                })
-            ).data.prerelease === isProductionDeploy ||
-                !(
-                    await GithubUtils.octokit.actions.listJobsForWorkflowRun({
-                        owner: github.context.repo.owner,
-                        repo: github.context.repo.repo,
-                        // eslint-disable-next-line @typescript-eslint/naming-convention
-                        run_id: lastSuccessfulDeploy.id,
-                        filter: 'latest',
-                    })
-                ).data.jobs.some((job) => job.name.startsWith('Build and deploy') && job.conclusion === 'success'))
-        ) {
-            console.log(`Deploy was not a success: ${lastSuccessfulDeploy.html_url}, looking at the next one`);
-            lastSuccessfulDeploy = completedDeploys.shift();
-        }
 
         if (!lastSuccessfulDeploy) {
             throw new Error('Could not find a prior successful deploy');
         }
 
+        let reason = await shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy);
+        while (lastSuccessfulDeploy && reason) {
+            console.log(
+                `Deploy of tag ${lastSuccessfulDeploy.head_branch} was not valid as a base for comparison, looking at the next one. Reason: ${reason}`,
+                lastSuccessfulDeploy.html_url,
+            );
+            lastSuccessfulDeploy = completedDeploys.shift();
+
+            if (!lastSuccessfulDeploy) {
+                throw new Error('Could not find a prior successful deploy');
+            }
+
+            reason = await shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy);
+        }
+
         const priorTag = lastSuccessfulDeploy.head_branch;
         console.log(`Looking for PRs deployed to ${deployEnv} between ${priorTag} and ${inputTag}`);
         const prList = await GitUtils.getPullRequestsMergedBetween(priorTag ?? '', inputTag);
diff --git a/.github/actions/javascript/getDeployPullRequestList/index.js b/.github/actions/javascript/getDeployPullRequestList/index.js
index 05ae086fcc24..e8bd7057d40e 100644
--- a/.github/actions/javascript/getDeployPullRequestList/index.js
+++ b/.github/actions/javascript/getDeployPullRequestList/index.js
@@ -11502,10 +11502,68 @@ const github = __importStar(__nccwpck_require__(5438));
 const ActionUtils_1 = __nccwpck_require__(6981);
 const GithubUtils_1 = __importDefault(__nccwpck_require__(9296));
 const GitUtils_1 = __importDefault(__nccwpck_require__(1547));
+const BUILD_AND_DEPLOY_JOB_NAME_PREFIX = 'Build and deploy';
+/**
+ * This function checks if a given release is a valid baseTag to get the PR list with `git log baseTag...endTag`.
+ *
+ * The rules are:
+ *     - production deploys can only be compared with other production deploys
+ *     - staging deploys can be compared with other staging deploys or production deploys.
+ *       The reason is that the final staging release in each deploy cycle will BECOME a production release.
+ *       For example, imagine a checklist is closed with version 9.0.20-6; that's the most recent staging deploy, but the release for 9.0.20-6 is now finalized, so it looks like a prod deploy.
+ *       When 9.0.21-0 finishes deploying to staging, the most recent prerelease is 9.0.20-5. However, we want 9.0.20-6...9.0.21-0,
+ *       NOT 9.0.20-5...9.0.21-0 (so that the PR CP'd in 9.0.20-6 is not included in the next checklist)
+ */
+async function isReleaseValidBaseForEnvironment(releaseTag, isProductionDeploy) {
+    if (!isProductionDeploy) {
+        return true;
+    }
+    const isPrerelease = (await GithubUtils_1.default.octokit.repos.getReleaseByTag({
+        owner: github.context.repo.owner,
+        repo: github.context.repo.repo,
+        tag: releaseTag,
+    })).data.prerelease;
+    return !isPrerelease;
+}
+/**
+ * Was a given platformDeploy workflow run successful on at least one platform?
+ */
+async function wasDeploySuccessful(runID) {
+    const jobsForWorkflowRun = (await GithubUtils_1.default.octokit.actions.listJobsForWorkflowRun({
+        owner: github.context.repo.owner,
+        repo: github.context.repo.repo,
+        // eslint-disable-next-line @typescript-eslint/naming-convention
+        run_id: runID,
+        filter: 'latest',
+    })).data.jobs;
+    return jobsForWorkflowRun.some((job) => job.name.startsWith(BUILD_AND_DEPLOY_JOB_NAME_PREFIX) && job.conclusion === 'success');
+}
+/**
+ * This function checks if a given deploy workflow is a valid basis for comparison when listing PRs merged between two versions.
+ * It returns the reason a version should be skipped, or an empty string if the version should not be skipped.
+ */
+async function shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy) {
+    if (!lastSuccessfulDeploy?.head_branch) {
+        // This should never happen. Just doing this to appease TS.
+        return '';
+    }
+    // we never want to compare a tag with itself. This check is necessary because prod deploys almost always have the same version as the last staging deploy.
+    // In this case, the next for wrong environment fails because the release that triggered that staging deploy is now finalized, so it looks like a prod deploy.
+    if (lastSuccessfulDeploy?.head_branch === inputTag) {
+        return `Same as input tag ${inputTag}`;
+    }
+    if (!(await isReleaseValidBaseForEnvironment(lastSuccessfulDeploy?.head_branch, isProductionDeploy))) {
+        return 'Was a staging deploy, we only want to compare with other production deploys';
+    }
+    if (!(await wasDeploySuccessful(lastSuccessfulDeploy.id))) {
+        return 'Was an unsuccessful deploy, nothing was deployed in that version';
+    }
+    return '';
+}
 async function run() {
     try {
         const inputTag = core.getInput('TAG', { required: true });
-        const isProductionDeploy = (0, ActionUtils_1.getJSONInput)('IS_PRODUCTION_DEPLOY', { required: false }, false);
+        const isProductionDeploy = !!(0, ActionUtils_1.getJSONInput)('IS_PRODUCTION_DEPLOY', { required: false }, false);
         const deployEnv = isProductionDeploy ? 'production' : 'staging';
         console.log(`Looking for PRs deployed to ${deployEnv} in ${inputTag}...`);
         const completedDeploys = (await GithubUtils_1.default.octokit.actions.listWorkflowRuns({
@@ -11520,25 +11578,18 @@ async function run() {
             .filter((workflowRun) => workflowRun.conclusion !== 'cancelled');
         // Find the most recent deploy workflow targeting the correct environment, for which at least one of the build jobs finished successfully
         let lastSuccessfulDeploy = completedDeploys.shift();
-        while (lastSuccessfulDeploy?.head_branch &&
-            ((await GithubUtils_1.default.octokit.repos.getReleaseByTag({
-                owner: github.context.repo.owner,
-                repo: github.context.repo.repo,
-                tag: lastSuccessfulDeploy.head_branch,
-            })).data.prerelease === isProductionDeploy ||
-                !(await GithubUtils_1.default.octokit.actions.listJobsForWorkflowRun({
-                    owner: github.context.repo.owner,
-                    repo: github.context.repo.repo,
-                    // eslint-disable-next-line @typescript-eslint/naming-convention
-                    run_id: lastSuccessfulDeploy.id,
-                    filter: 'latest',
-                })).data.jobs.some((job) => job.name.startsWith('Build and deploy') && job.conclusion === 'success'))) {
-            console.log(`Deploy was not a success: ${lastSuccessfulDeploy.html_url}, looking at the next one`);
-            lastSuccessfulDeploy = completedDeploys.shift();
-        }
         if (!lastSuccessfulDeploy) {
             throw new Error('Could not find a prior successful deploy');
         }
+        let reason = await shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy);
+        while (lastSuccessfulDeploy && reason) {
+            console.log(`Deploy of tag ${lastSuccessfulDeploy.head_branch} was not valid as a base for comparison, looking at the next one. Reason: ${reason}`, lastSuccessfulDeploy.html_url);
+            lastSuccessfulDeploy = completedDeploys.shift();
+            if (!lastSuccessfulDeploy) {
+                throw new Error('Could not find a prior successful deploy');
+            }
+            reason = await shouldSkipVersion(lastSuccessfulDeploy, inputTag, isProductionDeploy);
+        }
         const priorTag = lastSuccessfulDeploy.head_branch;
         console.log(`Looking for PRs deployed to ${deployEnv} between ${priorTag} and ${inputTag}`);
         const prList = await GitUtils_1.default.getPullRequestsMergedBetween(priorTag ?? '', inputTag);
diff --git a/.github/actions/javascript/proposalPoliceComment/index.js b/.github/actions/javascript/proposalPoliceComment/index.js
index c14b825e1198..9b5b56f11a11 100644
--- a/.github/actions/javascript/proposalPoliceComment/index.js
+++ b/.github/actions/javascript/proposalPoliceComment/index.js
@@ -17987,6 +17987,8 @@ function isCommentCreatedEvent(payload) {
 }
 // Main function to process the workflow event
 async function run() {
+    // get date early, as soon as the workflow starts running
+    const date = new Date();
     // Verify this is running for an expected webhook event
     if (github_1.context.eventName !== CONST_1.default.EVENTS.ISSUE_COMMENT) {
         throw new Error('ProposalPolice™ only supports the issue_comment webhook event');
@@ -18046,8 +18048,7 @@ async function run() {
         // extract the text after [EDIT_COMMENT] from assistantResponse since this is a
         // bot related action keyword
         let extractedNotice = assistantResponse.split('[EDIT_COMMENT] ')?.[1]?.replace('"', '');
-        // format the github's updated_at like: 2024-01-24 13:15:24 UTC not 2024-01-28 18:18:28.000 UTC
-        const date = new Date(payload.comment?.updated_at ?? '');
+        // format the date like: 2024-01-24 13:15:24 UTC not 2024-01-28 18:18:28.000 UTC
         const formattedDate = `${date.toISOString()?.split('.')?.[0]?.replace('T', ' ')} UTC`;
         extractedNotice = extractedNotice.replace('{updated_timestamp}', formattedDate);
         console.log('ProposalPolice™ editing issue comment...', payload.comment.id);
diff --git a/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts b/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts
index fa18ae833768..19d3037a80a5 100644
--- a/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts
+++ b/.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts
@@ -15,6 +15,8 @@ function isCommentCreatedEvent(payload: IssueCommentEvent): payload is IssueComm
 
 // Main function to process the workflow event
 async function run() {
+    // get date early, as soon as the workflow starts running
+    const date = new Date();
     // Verify this is running for an expected webhook event
     if (context.eventName !== CONST.EVENTS.ISSUE_COMMENT) {
         throw new Error('ProposalPolice™ only supports the issue_comment webhook event');
@@ -87,8 +89,7 @@ async function run() {
         // extract the text after [EDIT_COMMENT] from assistantResponse since this is a
         // bot related action keyword
         let extractedNotice = assistantResponse.split('[EDIT_COMMENT] ')?.[1]?.replace('"', '');
-        // format the github's updated_at like: 2024-01-24 13:15:24 UTC not 2024-01-28 18:18:28.000 UTC
-        const date = new Date(payload.comment?.updated_at ?? '');
+        // format the date like: 2024-01-24 13:15:24 UTC not 2024-01-28 18:18:28.000 UTC
         const formattedDate = `${date.toISOString()?.split('.')?.[0]?.replace('T', ' ')} UTC`;
         extractedNotice = extractedNotice.replace('{updated_timestamp}', formattedDate);
         console.log('ProposalPolice™ editing issue comment...', payload.comment.id);
diff --git a/.github/workflows/platformDeploy.yml b/.github/workflows/platformDeploy.yml
index 0004b2d3eaf8..83fa80a2cb73 100644
--- a/.github/workflows/platformDeploy.yml
+++ b/.github/workflows/platformDeploy.yml
@@ -38,6 +38,7 @@ jobs:
     secrets: inherit
 
   android:
+    # WARNING: getDeployPullRequestList depends on this job name. do not change job name without adjusting that action accordingly
     name: Build and deploy Android
     needs: validateActor
     if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }}
@@ -122,6 +123,7 @@ jobs:
           SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
 
   desktop:
+    # WARNING: getDeployPullRequestList depends on this job name. do not change job name without adjusting that action accordingly
     name: Build and deploy Desktop
     needs: validateActor
     if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }}
@@ -165,6 +167,7 @@ jobs:
           GITHUB_TOKEN: ${{ github.token }}
 
   iOS:
+    # WARNING: getDeployPullRequestList depends on this job name. do not change job name without adjusting that action accordingly
     name: Build and deploy iOS
     needs: validateActor
     if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }}
@@ -276,6 +279,7 @@ jobs:
           SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
 
   web:
+    # WARNING: getDeployPullRequestList depends on this job name. do not change job name without adjusting that action accordingly
     name: Build and deploy Web
     needs: validateActor
     if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }}
@@ -330,6 +334,7 @@ jobs:
       - name: Verify staging deploy
         if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }}
         run: |
+          sleep 5
           DOWNLOADED_VERSION="$(wget -q -O /dev/stdout https://staging.new.expensify.com/version.json | jq -r '.version')"
           if [[ '${{ github.event.release.tag_name }}' != "$DOWNLOADED_VERSION" ]]; then
             echo "Error: deployed version $DOWNLOADED_VERSION does not match local version ${{ github.event.release.tag_name }}. Something went wrong..."
@@ -339,6 +344,7 @@ jobs:
       - name: Verify production deploy
         if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }}
         run: |
+          sleep 5
           DOWNLOADED_VERSION="$(wget -q -O /dev/stdout https://new.expensify.com/version.json | jq -r '.version')"
           if [[ '${{ github.event.release.tag_name }}' != "$DOWNLOADED_VERSION" ]]; then
             echo "Error: deployed version $DOWNLOADED_VERSION does not match local version ${{ github.event.release.tag_name }}. Something went wrong..."
diff --git a/.github/workflows/testBuild.yml b/.github/workflows/testBuild.yml
index da4225f0e4be..5de11ba40a59 100644
--- a/.github/workflows/testBuild.yml
+++ b/.github/workflows/testBuild.yml
@@ -54,8 +54,7 @@ jobs:
         id: getHeadRef
         run: |
           set -e
-          gh pr checkout ${{ github.event.inputs.PULL_REQUEST_NUMBER }}
-          echo "REF=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
+          echo "REF=$(gh pr view ${{ github.event.inputs.PULL_REQUEST_NUMBER }} --json headRefOid --jq '.headRefOid')" >> "$GITHUB_OUTPUT"
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 54429478889f..e0261b67a2d8 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -108,8 +108,8 @@ android {
         minSdkVersion rootProject.ext.minSdkVersion
         targetSdkVersion rootProject.ext.targetSdkVersion
         multiDexEnabled rootProject.ext.multiDexEnabled
-        versionCode 1009002006
-        versionName "9.0.20-6"
+        versionCode 1009002205
+        versionName "9.0.22-5"
         // Supported language variants must be declared here to avoid from being removed during the compilation.
         // This also helps us to not include unnecessary language variants in the APK.
         resConfigs "en", "es"
diff --git a/assets/emojis/en.ts b/assets/emojis/en.ts
index adac235f56ce..a246d51c41bc 100644
--- a/assets/emojis/en.ts
+++ b/assets/emojis/en.ts
@@ -144,7 +144,7 @@ const enEmojis: EmojisList = {
         keywords: ['meh', 'face', 'unhappy'],
     },
     '🙄': {
-        keywords: ['eyes', 'face', 'rolling'],
+        keywords: ['eyes', 'face', 'rolling', 'eyeroll'],
     },
     '😬': {
         keywords: ['face', 'grimace'],
diff --git a/assets/images/box.svg b/assets/images/box.svg
index ba0b3c22d8a0..05f808e801ee 100644
--- a/assets/images/box.svg
+++ b/assets/images/box.svg
@@ -1,3 +1 @@
-<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M2 2.5C1.72386 2.5 1.5 2.72386 1.5 3V5C1.5 5.27614 1.72386 5.5 2 5.5H18C18.2761 5.5 18.5 5.27614 18.5 5V3C18.5 2.72386 18.2761 2.5 18 2.5H2ZM2 7H18V15.5C18 16.6046 17.1046 17.5 16 17.5H4C2.89543 17.5 2 16.6046 2 15.5V7ZM7 10.5C7 9.94772 7.44772 9.5 8 9.5H12C12.5523 9.5 13 9.94772 13 10.5C13 11.0523 12.5523 11.5 12 11.5H8C7.44772 11.5 7 11.0523 7 10.5Z" fill="#8B9C8F"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20"><path fill="#8B9C8F" fill-rule="evenodd" d="M2 2.5C1.72386 2.5 1.5 2.72386 1.5 3V5C1.5 5.27614 1.72386 5.5 2 5.5H18C18.2761 5.5 18.5 5.27614 18.5 5V3C18.5 2.72386 18.2761 2.5 18 2.5H2ZM2 7H18V15.5C18 16.6046 17.1046 17.5 16 17.5H4C2.89543 17.5 2 16.6046 2 15.5V7ZM7 10.5C7 9.94772 7.44772 9.5 8 9.5H12C12.5523 9.5 13 9.94772 13 10.5C13 11.0523 12.5523 11.5 12 11.5H8C7.44772 11.5 7 11.0523 7 10.5Z" clip-rule="evenodd"/></svg>
\ No newline at end of file
diff --git a/assets/images/product-illustrations/todd-with-phones.svg b/assets/images/product-illustrations/todd-with-phones.svg
index 5992a4f408d7..21ee5a015820 100644
--- a/assets/images/product-illustrations/todd-with-phones.svg
+++ b/assets/images/product-illustrations/todd-with-phones.svg
@@ -1,667 +1 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 28.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 176 178" style="enable-background:new 0 0 176 178;" xml:space="preserve">
-<style type="text/css">
-	.st0{clip-path:url(#SVGID_00000137820367135112578820000008173419730450887349_);}
-	.st1{fill:#FF7101;}
-	.st2{fill:#003C73;}
-	.st3{fill:#002140;}
-	.st4{fill:#03D47C;}
-	.st5{fill:#0164BF;}
-	.st6{fill:#F68DFE;}
-	.st7{fill:#D18000;}
-	.st8{fill:#FFFAF0;}
-	.st9{fill:#50EEF6;}
-	.st10{fill:none;stroke:#002140;stroke-width:0.9999;stroke-linecap:round;stroke-miterlimit:10;}
-	.st11{fill:none;stroke:#002140;stroke-width:0.9432;stroke-linecap:round;stroke-miterlimit:10;}
-	.st12{fill:none;stroke:#002140;stroke-width:1.8998;stroke-linecap:round;stroke-miterlimit:10;}
-	.st13{fill:#FFF2B2;}
-	.st14{fill:none;stroke:#002140;stroke-width:0.9999;stroke-linecap:round;stroke-linejoin:round;}
-</style>
-<g>
-	<defs>
-		<rect id="SVGID_1_" width="176" height="178"/>
-	</defs>
-	<clipPath id="SVGID_00000018218354771073572940000008642713263941723026_">
-		<use xlink:href="#SVGID_1_"  style="overflow:visible;"/>
-	</clipPath>
-	<g style="clip-path:url(#SVGID_00000018218354771073572940000008642713263941723026_);">
-		<path class="st1" d="M164.519,110.724c3.129,2.721,4.543,7.634,3.696,12.401l-0.079-0.013c0-0.494-0.471-0.882-0.957-0.999
-			c-0.483-0.119-0.992-0.046-1.491-0.043c-0.499,0.003-1.041-0.091-1.379-0.456c-0.46-0.502-0.422-1.39-1.016-1.732
-			c-0.45-0.256-1.038-0.035-1.425,0.312c-0.383,0.347-0.654,0.806-1.046,1.146c-0.391,0.34-0.995,0.54-1.43,0.258l-0.256-0.05
-			c0.489-2.371-0.565-4.536-2.471-5.096c-0.049-0.016-0.095-0.028-0.141-0.041l0.031-0.101c-0.97-0.687-1.241-2.173-0.573-3.152
-			c0.54-0.793,1.619-1.379,1.54-2.335c-0.018-0.215-0.1-0.423-0.138-0.636c-0.166-0.898,0.55-1.856,1.463-1.963l0.044-0.215
-			C160.848,108.389,162.882,109.299,164.519,110.724z"/>
-		<path class="st1" d="M168.136,123.112l0.08,0.013c-0.351,1.972-1.088,3.919-2.252,5.676c-2.448,3.692-6.086,6.344-10.701,7.781
-			l-0.076-0.238c0.271-0.327,0.25-0.804,0.138-1.212c-0.115-0.406-0.31-0.793-0.351-1.214c-0.061-0.624,0.22-1.222,0.392-1.823
-			c0.174-0.604,0.207-1.334-0.243-1.772c-0.348-0.34-0.88-0.404-1.29-0.665c-0.601-0.383-0.854-1.224-0.562-1.868l-0.09-0.272
-			c0.67-0.213,1.323-0.496,1.949-0.867c2.403-1.419,3.643-3.318,4.007-5.103l0.255,0.05c0.435,0.282,1.039,0.082,1.43-0.258
-			c0.392-0.34,0.663-0.799,1.047-1.146c0.386-0.348,0.974-0.568,1.425-0.312c0.593,0.342,0.555,1.23,1.015,1.732
-			c0.338,0.365,0.88,0.459,1.379,0.456c0.499-0.003,1.008-0.076,1.492,0.043C167.666,122.23,168.134,122.618,168.136,123.112z"/>
-		<path class="st2" d="M162.554,56.409c1.474,0,2.167,1.192,1.54,2.652l-6.541,15.276l-0.135,0.008
-			c-0.932-1.668-5.227-9.363-5.882-10.55c-0.734-1.336-1.722-1.823-3.228-1.009c-1.505,0.816-0.706,2.829-0.706,2.829l6.198,11.346
-			l-0.008,0.005l-0.874-1.468c0,0-1.446-2.363-5.055-2.363h-9.758v-0.193l5.946-13.881c0.624-1.46,2.341-2.652,3.812-2.652H162.554z
-			 M162.516,59.868c0.366-0.857-0.036-1.549-0.9-1.549c-0.865,0-1.863,0.692-2.231,1.549c-0.366,0.857,0.036,1.552,0.9,1.552
-			C161.15,61.419,162.148,60.724,162.516,59.868z M160.669,64.178c0.368-0.857-0.036-1.549-0.9-1.549
-			c-0.865,0-1.863,0.692-2.229,1.549c-0.368,0.857,0.036,1.552,0.901,1.552C159.305,65.729,160.303,65.035,160.669,64.178z
-			 M157.911,59.868c0.366-0.857-0.036-1.549-0.9-1.549c-0.865,0-1.863,0.692-2.231,1.549c-0.366,0.857,0.036,1.552,0.9,1.552
-			C156.545,61.419,157.543,60.724,157.911,59.868z"/>
-		<path class="st3" d="M161.615,58.318c0.865,0,1.266,0.692,0.901,1.549c-0.369,0.857-1.367,1.552-2.231,1.552
-			c-0.865,0-1.267-0.695-0.901-1.552C159.753,59.011,160.75,58.318,161.615,58.318z"/>
-		<path class="st3" d="M159.769,62.629c0.865,0,1.269,0.692,0.9,1.549c-0.366,0.857-1.363,1.552-2.228,1.552
-			c-0.865,0-1.269-0.695-0.9-1.552C157.906,63.321,158.904,62.629,159.769,62.629z"/>
-		<path class="st1" d="M158.891,108.009l-0.044,0.215c-0.913,0.107-1.629,1.065-1.463,1.963c0.039,0.213,0.12,0.421,0.138,0.636
-			c0.08,0.956-1,1.542-1.54,2.335c-0.667,0.979-0.396,2.465,0.573,3.152l-0.03,0.101c-3.444-1.019-5.536-1.803-4.646-5.687
-			C152.447,108.245,155.56,107.362,158.891,108.009z"/>
-		<path class="st4" d="M132.91,143.23c-1.034,2.536-1.937,4.756-2.663,6.546c-1.231,3.03-1.962,4.825-1.962,4.825
-			s-0.059,0.193-0.187,0.507c-0.555,1.359-2.402,4.982-6.316,4.982c-3.272,0-4.812-1.597-5.531-2.943l-0.016-0.01
-			c0.323-0.556,0.63-1.091,0.919-1.608c1.831-3.265,3.126-5.915,4.786-9.261l-0.038-0.018c0,0,0.289-0.708,0.803-1.965
-			c0.762-1.866,2.021-4.944,3.564-8.717c0.655-1.61,1.366-3.344,2.11-5.167c0.596-1.46,1.213-2.974,1.847-4.523
-			c0.417-1.024,0.844-2.066,1.272-3.116c5.032-12.317,10.56-25.868,12.594-30.891h0.002c0.318-0.791,0.553-1.369,0.683-1.699
-			c1.807-4.533-2.65-4.145-2.65-4.145h-8.713c0,0-0.358-0.046-0.783-0.213c-0.619-0.241-1.384-0.748-1.384-1.757
-			c0-1.699,0.903-2.325,2.438-2.325h1.458c-0.361-0.061-2.1-0.434-2.1-1.957c0-1.701,0.903-2.327,2.438-2.327h4.423V77.43h-2.901
-			c0,0-2.167-0.269-2.167-1.967c0-0.479,0.072-0.872,0.207-1.192c0.351-0.811,1.129-1.136,2.231-1.136h10.589
-			c3.609,0,5.055,2.363,5.055,2.363l0.875,1.468l0.007-0.005l-6.198-11.346c0,0-0.798-2.013,0.706-2.829
-			c1.507-0.814,2.494-0.327,3.228,1.009c0.655,1.187,4.95,8.881,5.882,10.55l0.179,0.319c0,0,1.686,3.042,0.422,6.501
-			c-0.709,1.94-9.959,24.76-17.954,44.455c-1.194,2.938-2.358,5.806-3.464,8.523C135.263,137.439,134.012,140.515,132.91,143.23z"/>
-		<path class="st3" d="M157.011,58.318c0.864,0,1.266,0.692,0.9,1.549c-0.368,0.857-1.366,1.552-2.231,1.552
-			c-0.864,0-1.266-0.695-0.9-1.552C155.148,59.011,156.146,58.318,157.011,58.318z"/>
-		<path class="st1" d="M155.123,130.323c0.45,0.438,0.417,1.168,0.243,1.772c-0.172,0.601-0.453,1.199-0.392,1.823
-			c0.041,0.421,0.236,0.809,0.351,1.214c0.112,0.408,0.133,0.885-0.138,1.212l0.076,0.238c-1.427,0.449-2.949,0.779-4.558,0.987
-			c-2.584,0.334-5.59,0.01-8.297-0.586l0.069-0.304c0.711-0.292,0.873-1.22,0.783-1.978c-0.087-0.755-0.315-1.554,0-2.249
-			c0.312-0.694,1.09-1.087,1.438-1.764c0.529-1.032-0.1-2.252-0.716-3.235l0.056-0.284c2.53,0.758,6.001,1.351,9.143,0.35
-			l0.089,0.271c-0.291,0.644-0.038,1.486,0.563,1.868C154.243,129.92,154.775,129.983,155.123,130.323z"/>
-		<path class="st5" d="M144.281,56.409h3.581c-1.471,0-3.187,1.192-3.811,2.652l-5.946,13.881v0.193h-0.831
-			c-1.103,0-1.88,0.325-2.231,1.136l-0.921-0.388l6.347-14.822C141.093,57.601,142.81,56.409,144.281,56.409z"/>
-		<path class="st2" d="M142.127,86.027c0,0,4.456-0.388,2.65,4.145c-0.13,0.33-0.366,0.908-0.683,1.699h-0.003l-0.066-0.028h-11.338
-			c-0.138,0-0.269-0.01-0.394-0.03c-1.197-0.195-1.714-1.301-1.146-2.622l1.363-3.184l0.121-0.193
-			c0.424,0.167,0.782,0.213,0.782,0.213H142.127z"/>
-		<path class="st1" d="M143.982,127.453c0.617,0.983,1.246,2.203,0.716,3.235c-0.348,0.677-1.125,1.07-1.437,1.764
-			c-0.315,0.695-0.087,1.494,0,2.249c0.089,0.758-0.072,1.686-0.783,1.978l-0.069,0.304c-1.643-0.36-3.172-0.821-4.434-1.293
-			l-0.074,0.043c-0.552-0.941-1.01-1.476-1.01-1.476l-0.289-0.114c1.105-2.718,2.269-5.585,3.463-8.523l0.348,0.139
-			c0,0,1.471,0.766,3.625,1.41L143.982,127.453z"/>
-		<path class="st5" d="M139.903,77.43v0.018h-4.423c-1.535,0-2.438,0.626-2.438,2.327c0,1.524,1.74,1.896,2.1,1.957h-1.458
-			c-1.535,0-2.438,0.626-2.438,2.325c0,1.009,0.765,1.516,1.384,1.757l-0.12,0.193l-1.364,3.184
-			c-0.567,1.321-0.051,2.426,1.147,2.622v0.03h-3.188c-1.473,0-2.167-1.194-1.54-2.652l6.557-15.308l0.921,0.388
-			c-0.136,0.32-0.208,0.712-0.208,1.192c0,1.699,2.167,1.967,2.167,1.967H139.903z"/>
-		<path class="st1" d="M137.9,135.733c0.96,1.63,2.208,4.483,1.868,7.9l-0.136-0.005c-0.309,0.794-1.169,1.286-2.023,1.362
-			c-0.857,0.073-1.707-0.206-2.479-0.581c-0.752-0.368-1.461-0.829-2.221-1.179c1.103-2.715,2.354-5.791,3.692-9.087l0.289,0.115
-			C136.89,134.258,137.348,134.792,137.9,135.733z"/>
-		<path class="st1" d="M139.632,143.628l0.136,0.005c-0.115,1.172-0.42,2.411-0.983,3.689c-1.629,3.692-4.387,5.646-6.677,6.676
-			l-0.15-0.34c0.232-1.417-0.374-2.936-1.523-3.813l-0.189-0.069c0.727-1.79,1.63-4.011,2.663-6.546
-			c0.76,0.35,1.469,0.811,2.221,1.179c0.772,0.375,1.622,0.654,2.479,0.581C138.463,144.914,139.323,144.422,139.632,143.628z"/>
-		<path class="st1" d="M131.958,153.658l0.151,0.34c-2.149,0.963-3.886,1.11-3.886,1.11h-0.125c0.128-0.314,0.186-0.507,0.186-0.507
-			s0.732-1.795,1.963-4.825l0.189,0.069C131.585,150.722,132.191,152.241,131.958,153.658z"/>
-		<path class="st1" d="M131.382,122.717l0.115,0.045c-0.427,1.05-0.854,2.092-1.271,3.116c0.043-1.491-0.652-3.035-1.653-4.15
-			C130.315,122.199,131.382,122.717,131.382,122.717z"/>
-		<path class="st1" d="M128.574,121.728c1,1.115,1.696,2.659,1.652,4.15c-0.634,1.549-1.251,3.063-1.847,4.523
-			c-0.278-0.089-2.791-0.854-5.932,0.168c-1.916,0.623-4.068,1.914-6.089,4.431l-0.112-0.086c0.013-0.783-0.801-1.965-1.525-2.279
-			c-0.724-0.315-1.545-0.53-2.047-1.136c-0.411-0.499-0.537-1.192-0.967-1.681c-0.66-0.748-1.803-0.791-2.803-0.745l-0.146-0.084
-			c1.517-2.599,3.673-4.515,5.945-5.816c2.042-1.171,4.178-1.843,6.027-2.069C123.823,120.726,126.622,121.2,128.574,121.728z"/>
-		<path class="st1" d="M128.379,130.401c-0.745,1.823-1.456,3.557-2.111,5.167l-0.14-0.056c0.301-1.447-0.197-3.034-1.277-4.056
-			c-0.629-0.593-1.532-1.007-2.361-0.758l-0.044-0.129C125.588,129.547,128.1,130.312,128.379,130.401z"/>
-		<path class="st1" d="M126.128,135.512l0.141,0.056c-1.543,3.773-2.801,6.851-3.564,8.717l-0.13-0.036
-			c0.092-0.793,0.025-1.607-0.202-2.373c-0.302-1.034-0.906-1.998-1.786-2.626c-0.88-0.629-2.049-0.89-3.088-0.581
-			c-0.667,0.2-1.246,0.614-1.885,0.887c-0.64,0.274-1.425,0.391-2.003,0.005l-0.118-0.065c0.43-0.756,0.855-1.489,1.277-2.196
-			c0.516-0.862,1.049-1.625,1.588-2.3c2.021-2.517,4.173-3.808,6.089-4.431l0.043,0.129c0.829-0.249,1.732,0.165,2.362,0.758
-			C125.931,132.478,126.43,134.065,126.128,135.512z"/>
-		<path class="st1" d="M122.574,144.249l0.13,0.036c-0.514,1.257-0.803,1.965-0.803,1.965l0.038,0.017
-			c-1.66,3.347-2.954,5.997-4.786,9.262l-0.228-0.124c-0.892-2.241-3.315-3.788-5.745-3.664c-0.653,0.033-1.303,0.175-1.957,0.14
-			c-0.655-0.033-1.349-0.289-1.681-0.85l-0.23-0.124c0.744-1.361,1.491-2.756,2.235-4.15c0.704-1.321,1.407-2.642,2.106-3.933
-			c0.619-1.138,1.233-2.254,1.839-3.328l0.118,0.065c0.578,0.386,1.363,0.269,2.003-0.005c0.64-0.273,1.218-0.687,1.885-0.887
-			c1.039-0.309,2.208-0.048,3.088,0.581c0.88,0.628,1.484,1.592,1.786,2.626C122.599,142.642,122.666,143.456,122.574,144.249z"/>
-		<path class="st1" d="M116.926,155.405l0.227,0.124c-0.289,0.517-0.596,1.052-0.918,1.608c-0.809,1.399-1.73,2.933-2.819,4.682
-			c-1.533,2.465-3.175,4.709-5.035,6.661l-0.315-0.289c-0.04-1.453-1.141-2.812-2.563-3.164c-0.734-0.186-1.617-0.17-2.087-0.759
-			c-0.466-0.583-0.259-1.44-0.469-2.155c-0.197-0.677-0.808-1.217-1.506-1.333l-0.133-0.107c1.606-1.949,2.773-4.094,3.891-6.011
-			c0.488-0.839,0.979-1.704,1.471-2.589c0.215-0.385,0.427-0.775,0.642-1.166l0.23,0.124c0.333,0.561,1.026,0.817,1.681,0.85
-			c0.655,0.035,1.304-0.107,1.957-0.14C113.61,151.617,116.033,153.164,116.926,155.405z"/>
-		<path class="st1" d="M116.245,134.914l0.112,0.086c-0.539,0.675-1.071,1.438-1.588,2.3c-0.422,0.707-0.847,1.44-1.277,2.196
-			c-0.606,1.075-1.22,2.19-1.839,3.328l-0.2-0.106c-1.312-0.467-2.788-0.474-4.108-0.02l-0.092,0.033
-			c-0.179-0.583-0.328-1.205-0.443-1.864c-0.33-1.876-0.376-4.046,0.013-6.43c0.338-2.073,1.021-3.884,1.934-5.448l0.146,0.084
-			c1-0.046,2.144,0,2.804,0.745c0.429,0.489,0.555,1.182,0.967,1.681c0.501,0.606,1.322,0.821,2.046,1.136
-			C115.444,132.949,116.258,134.131,116.245,134.914z"/>
-		<path class="st4" d="M95.838,55.58L95.7,55.167c2.571-0.806,4.247-2.371,4.29-5.205h0.123c0.806,0.231,1.599,0.461,2.387,0.692
-			c2.515,0.738,4.958,1.483,7.434,2.193c1.99,0.57,4.004,1.118,6.094,1.623c3.586,0.865,4.587,3.641-0.023,4.683
-			c-3.387,0.766-5.805,1.268-8.138,1.681c-2.394,0.429-4.702,0.766-7.877,1.212c-1.195,0.167-2.435,0.319-3.582-0.048
-			c-1.146-0.37-2.625-1.544-2.796-2.725c-0.118-0.801-0.241-2.624,1.926-3.58C95.626,55.654,95.728,55.616,95.838,55.58z"/>
-		<path class="st4" d="M114.68,122.983l0.023,0.19c-2.272,1.301-4.429,3.217-5.946,5.816c-0.913,1.564-1.596,3.375-1.934,5.449
-			c-0.388,2.383-0.342,4.553-0.012,6.429l-0.077,0.013l-0.241,11.097l0.177,0.096c-0.491,0.885-0.982,1.75-1.471,2.589
-			c-1.118,1.917-2.285,4.062-3.891,6.011c-2.17,2.637-5.142,4.916-9.885,5.789c-1.507,0.276-3.195,0.41-5.093,0.37
-			c-1.655-0.036-3.205-0.244-4.651-0.591c-3.779-0.913-6.859-2.804-9.345-5.2c-1.21-1.169-2.279-2.457-3.218-3.811l0.179-0.124
-			l1.566-10.975v-0.239h13.032c0,0,2.034-0.251,2.162-1.815l0.276,0.023h2.622c1.596,0,2.346-1.293,1.671-2.873l-12.73-29.722
-			l0.31-0.129c2.53-1.443,4.566-3.707,5.147-5.484c-0.542,2.239-2.256,11.275,4.334,11.186c5.51-0.074,5.656-7.094,5.557-9.391
-			c0.212,2.307,1.328,9.289,6.994,8.316c4.605-0.984,3.342-5.547,2.71-9.931c1.102,4.371,4.543,8.268,8.401,7.107l0.084,0.261
-			L114.68,122.983z"/>
-		<path class="st6" d="M93.239,107.687c0.1,2.297-0.046,9.317-5.556,9.391c-6.59,0.089-4.876-8.947-4.334-11.186
-			c-0.581,1.777-2.617,4.041-5.147,5.484l-0.31,0.129l-1.251-2.921c-0.678-1.579-2.538-2.872-4.131-2.872h-3.837v-0.14
-			c0.867-2.304,2.397-4.244,2.397-4.244c0.102-0.197-5.631,3.144-10.376,3.144c-2.118,0-4.037-0.664-5.155-2.606
-			c-0.159-0.304-0.289-0.594-0.397-0.865c-2.351-5.968,6.923-4.449,9.427-7.188h0.09c0.01,0.226,0.041,0.464,0.09,0.715
-			c0.903,4.652,6.772,3.4,6.772,3.4s5.042-0.877,8.997-4.452c-0.962,0.9-7.112,6.955-0.599,9.105c5.416,1.79,8.667-5.19,9.749-7.964
-			c-0.45,2.505-0.361,11.097,5.329,10.38c5.597-0.715,4.694-5.279,3.612-10.737c1.988,7.408,7.194,9.609,10.197,6.792l0.005,0.008
-			c1.985,4.654,9.57,7.248,4.244,11.274c-0.576,0.398-1.149,0.677-1.711,0.845c-3.858,1.161-7.299-2.736-8.402-7.107
-			c0.632,4.384,1.896,8.947-2.709,9.931C94.567,116.977,93.451,109.994,93.239,107.687z M93.239,107.682
-			c-0.021-0.449-0.049-0.715-0.049-0.715S93.198,107.236,93.239,107.682z"/>
-		<path class="st7" d="M70.758,61.206l0.345,0.061c0.755,3.228,3.791,5.365,5.549,8.184c1.435,2.3,1.924,4.911,1.913,7.538h-0.092
-			c-1.716,2.774-6.347,5.841-10.215,4.422c2.487-0.522,4.572-2.239,4.733-4.751c-2.297,1.967-5.551,2.411-8.332,1.207
-			c1.512-0.038,2.993-0.743,3.97-1.889c0.969-1.141,1.425-2.7,1.213-4.178h-0.028c-4.106,1.737-9.47-0.872-10.599-5.154
-			c-0.711-2.698,0.087-5.53,0.271-8.313c0.243-3.707-0.645-7.477-2.52-10.694c-1.566-2.685-3.794-4.987-5.019-7.842
-			c-2.141-4.987-0.586-11.288,3.64-14.733c2.638-2.15,6.004-3.156,9.189-4.381c3.185-1.227,6.439-2.862,8.227-5.748
-			c1.476-2.386,1.765-5.342,3.2-7.751c2.494-4.183,7.836-5.773,12.732-6.006C94.15,0.931,99.691,1.95,103.608,5.37
-			c3.909,3.413,5.398,10.035,2.507,14.33l0.054,0.035c3.535,0.55,6.513,3.628,6.917,7.152c0.389,3.397-1.369,6.643-3.157,9.566
-			c-1.786,2.926-3.645,5.727-3.916,8.144l-0.18-0.005c0.057-1.869,0.1-3.583,0.141-5.279c0.379-0.679,0.578-1.481,0.578-2.414
-			c0-0.865-0.176-1.658-0.511-2.368c-0.057-0.122-0.118-0.241-0.182-0.355l0.248-0.076c0.013-0.464,0.026-0.936,0.041-1.417
-			c0.056-1.856,0.11-3.74-0.327-5.545c-0.435-1.808-1.43-3.56-3.04-4.513l-0.025-0.056c-4.917,2.262-10.443,3.055-15.866,3.552
-			c-2.975,0.271-6.055,0.492-8.695,1.879c-3.149,1.653-5.347,4.967-5.625,8.486c-0.282,3.529,1.22,6.919,2.356,10.273
-			c1.138,3.357,1.89,7.185,0.23,10.319C74.193,58.896,72.582,60.182,70.758,61.206z"/>
-		<path class="st1" d="M111.454,142.718l0.199,0.107c-0.698,1.29-1.402,2.611-2.105,3.932l-0.287-0.15
-			c-0.795-0.938-1.512-2.256-2.008-3.876l0.092-0.033C108.665,142.244,110.141,142.252,111.454,142.718z"/>
-		<path class="st3" d="M110.586,48.37c0.1,0.449,0.151,0.938,0.151,1.476c0,1.181-0.279,2.147-0.782,2.931l-0.021,0.071
-			c-2.476-0.71-4.919-1.455-7.434-2.193l0.02-0.063h3.52l-4.303-3.162l-0.025-0.048c0.972-1.189,2.456-1.95,4.119-1.95
-			c1.082,0,2.087,0.322,2.924,0.872C109.535,46.818,110.169,47.53,110.586,48.37z"/>
-		<path class="st6" d="M80.576,93.423c-0.018,0.018-0.038,0.036-0.059,0.053c-3.955,3.575-8.997,4.452-8.997,4.452
-			s-5.868,1.253-6.772-3.4c-0.049-0.251-0.079-0.489-0.09-0.717c-0.197-3.998,5.175-4.576,8.667-5.456
-			c3.804-0.961,4.344-3.633,4.415-4.533h0.038c-0.02,0.677,0.077,1.344,0.417,1.919c0.514,0.88,1.517,1.344,2.476,1.706
-			c6.007,2.264,12.758,2.543,18.933,0.776c0.8-0.228,1.703-0.606,1.91-1.405c0.095-0.37,0.016-0.761-0.066-1.133
-			c-0.082-0.385-0.189-0.801-0.304-1.247l0.079-0.02c1.988,7.246,11.105,9.931,8.667,15.212c-0.312,0.565-0.68,1.042-1.087,1.422
-			c-3.003,2.817-8.209,0.616-10.197-6.792c1.082,5.459,1.985,10.022-3.612,10.737c-5.689,0.717-5.779-7.875-5.329-10.38
-			c-1.082,2.774-4.334,9.754-9.749,7.964c-6.513-2.15-0.363-8.205,0.599-9.105C80.54,93.456,80.561,93.438,80.576,93.423z"/>
-		<path class="st8" d="M99.844,48.372c-0.348-1.605-1.292-2.667-2.653-3.364c0.824,0.251,1.763,0.38,3.403,0.185
-			c2.361-0.279,4.021-0.431,5.362-0.231c1.087,0.162,1.959,0.558,2.824,1.306l-0.025,0.035c-0.837-0.55-1.842-0.872-2.924-0.872
-			c-1.663,0-3.147,0.761-4.119,1.95l0.025,0.048l4.303,3.161h-3.52l-0.02,0.063c-0.788-0.231-1.581-0.461-2.387-0.69H99.99
-			c0-0.041,0-0.081,0-0.119c0-0.535-0.051-1.024-0.148-1.473H99.844z"/>
-		<path class="st4" d="M95.181,44.29c-1.706-0.413-3.758-0.53-5.963-0.53c-5.951,0-10.775,0.743-10.775,6.085
-			c0,4.711,4.825,6.085,10.775,6.085c1.458,0,2.847-0.071,4.116-0.249c0.849-0.119,1.642-0.286,2.366-0.515l0.138,0.413
-			c-0.11,0.035-0.212,0.074-0.299,0.112c-2.167,0.956-2.044,2.779-1.926,3.58c0.171,1.181,1.65,2.355,2.796,2.725
-			c1.146,0.368,2.387,0.215,3.581,0.048c3.174-0.446,5.482-0.783,7.876-1.212l0.105,0.573c0.169,2.442,0.341,4.886,0.509,7.33
-			c0.233,3.354,0.318,7.142-2.031,9.571c-1.532,1.587-3.783,2.198-6.04,2.241v0.109c0.133,1.402,0.458,2.68,0.737,3.78
-			c0.115,0.446,0.223,0.862,0.304,1.247c0.082,0.373,0.162,0.763,0.067,1.133c-0.207,0.799-1.11,1.176-1.911,1.405
-			c-6.176,1.767-12.927,1.488-18.933-0.776c-0.959-0.362-1.962-0.826-2.476-1.706c-0.34-0.576-0.437-1.242-0.417-1.919
-			c0.015-0.434,0.077-0.867,0.161-1.283c0.353-1.785,0.617-3.671,0.624-5.55c0.01-2.627-0.478-5.238-1.913-7.538
-			c-1.757-2.819-4.794-4.957-5.549-8.184l-0.345-0.061c1.824-1.024,3.436-2.31,4.398-4.128c1.66-3.134,0.908-6.962-0.23-10.319
-			c-1.136-3.354-2.638-6.744-2.356-10.273c0.279-3.519,2.476-6.833,5.626-8.486c2.64-1.387,5.72-1.608,8.695-1.879
-			c5.423-0.497,10.949-1.291,15.866-3.552l0.026,0.056c1.609,0.953,2.604,2.705,3.039,4.513c0.437,1.805,0.384,3.689,0.327,5.545
-			c-0.015,0.482-0.028,0.953-0.041,1.417l-0.248,0.076c-1.361-2.401-4.638-3.785-9.102-3.785c-5.95,0-10.159,2.459-10.159,6.151
-			c0,4.095,4.208,6.019,10.159,6.019c1.497,0,2.863-0.099,4.065-0.314c2.489-0.441,4.29-1.374,5.152-2.933
-			c-0.041,1.696-0.084,3.41-0.14,5.279l0.179,0.005l-0.057,0.365c-1.34-0.2-3-0.048-5.362,0.231
-			c-1.639,0.195-2.578,0.066-3.402-0.185c-0.003,0-0.005-0.003-0.005-0.003c-0.591-0.302-1.264-0.535-2-0.712
-			C95.186,44.293,95.185,44.292,95.181,44.29z M105.381,71.53c0,0-4.787-6.354-7.856-6.262c-2.274,0.066-2.852,0.928-2.886,0.981
-			c0.018-0.114,0.509-3.004-3.344-3.577c-4.426-0.657-8.399,0.089-8.399,0.089c0.005,0.02,0.015,0.089,0.036,0.203
-			c0.233,1.326,1.717,8.602,8.452,10.626C98.632,75.767,105.327,71.51,105.381,71.53z"/>
-		<path class="st1" d="M108.067,168.191l0.314,0.289c-3.415,3.582-7.572,6.186-13.172,7.37l-0.015-0.251
-			c0.095-1.296-0.532-2.621-1.599-3.377c-0.558-0.396-1.233-0.654-1.668-1.179c-0.504-0.611-0.586-1.481-0.402-2.249
-			c0.087-0.37,0.23-0.73,0.269-1.11c0.038-0.378-0.046-0.799-0.34-1.045l-0.031-0.177c4.743-0.873,7.716-3.152,9.885-5.789
-			l0.133,0.107c0.698,0.117,1.31,0.657,1.507,1.333c0.209,0.715,0.002,1.572,0.468,2.156c0.471,0.588,1.353,0.573,2.087,0.758
-			C106.926,165.379,108.026,166.738,108.067,168.191z"/>
-		<path class="st3" d="M105.974,39.313c-0.862,1.559-2.663,2.492-5.152,2.933c-2.039-0.73-3.492-2.665-3.492-4.936v-0.089h5.508
-			l-4.306-3.162l-0.026-0.051c0.972-1.189,2.456-1.947,4.119-1.947c1.662,0,2.775,1.24,3.415,2.469
-			c0.335,0.71,0.511,1.503,0.511,2.368C106.552,37.833,106.353,38.634,105.974,39.313z"/>
-		<path class="st8" d="M105.859,34.177c0.063,0.114,0.125,0.233,0.181,0.355c-0.639-1.23-1.711-2.47-3.415-2.47
-			s-3.147,0.758-4.119,1.947l0.026,0.051l4.305,3.162h-5.508v0.089c0,2.272,1.453,4.206,3.492,4.936
-			c-1.202,0.215-2.568,0.314-4.065,0.314c-5.951,0-10.159-1.924-10.159-6.019c0-3.691,4.208-6.151,10.159-6.151
-			C101.22,30.391,104.498,31.776,105.859,34.177z"/>
-		<path class="st3" d="M99.993,49.845c0,0.038,0,0.079,0,0.117c-0.044,2.834-1.719,4.399-4.29,5.205
-			c-0.724,0.228-1.517,0.396-2.366,0.515l-0.005-0.046c-2.062-0.72-3.538-2.665-3.538-4.954v-0.091h5.505l-4.303-3.162l-0.025-0.048
-			c0.972-1.189,2.456-1.95,4.119-1.95c2.09,0,3.896,1.199,4.758,2.941c0.097,0.449,0.148,0.938,0.148,1.473H99.993z"/>
-		<path class="st8" d="M99.844,48.372c-0.862-1.742-2.668-2.941-4.758-2.941c-1.663,0-3.147,0.761-4.119,1.95l0.026,0.048
-			l4.303,3.162h-5.505v0.091c0,2.289,1.476,4.234,3.538,4.954l0.005,0.046c-1.269,0.177-2.658,0.248-4.116,0.248
-			c-5.95,0-10.775-1.374-10.775-6.085c0-5.342,4.825-6.085,10.775-6.085c2.205,0,4.257,0.117,5.963,0.53
-			c0,0,0.002,0.001,0.005,0.003c0.785,0.248,1.358,0.517,2.001,0.712c0,0,0,0.003,0.005,0.003
-			C98.553,45.705,99.497,46.767,99.844,48.372z"/>
-		<path class="st6" d="M94.639,66.249c0.033-0.053,0.611-0.915,2.886-0.981c3.07-0.091,7.857,6.262,7.857,6.262
-			c-14.539,0-22.303-8.59-22.303-8.59l-0.146,0.023c-0.021-0.114-0.031-0.182-0.036-0.203c0,0,3.973-0.745,8.399-0.089
-			C95.148,63.245,94.657,66.135,94.639,66.249z"/>
-		<path class="st6" d="M105.381,71.53c-0.054-0.02-6.749,4.237-13.996,2.059c-6.736-2.023-8.22-9.3-8.452-10.626l0.146-0.023
-			C83.078,62.94,90.843,71.53,105.381,71.53z"/>
-		<path class="st1" d="M95.194,175.599l0.015,0.251c-3.221,0.682-6.92,0.895-11.228,0.555c-1.97-0.154-3.799-0.459-5.498-0.882
-			l0.061-0.256c0.041,0,0.082-0.038,0.11-0.074c0.404-0.504,0.632-1.148,0.632-1.795c0.003-0.994-0.504-2.025-0.128-2.948
-			c0.376-0.916,1.461-1.321,2.07-2.102c0.445-0.571,0.611-1.346,0.435-2.049l0.015-0.058c1.445,0.347,2.996,0.555,4.651,0.591
-			c1.898,0.04,3.587-0.094,5.093-0.37l0.031,0.177c0.294,0.246,0.379,0.667,0.34,1.045c-0.038,0.38-0.182,0.74-0.269,1.11
-			c-0.184,0.768-0.102,1.638,0.402,2.249c0.435,0.525,1.11,0.783,1.668,1.179C94.662,172.977,95.288,174.303,95.194,175.599z"/>
-		<path class="st5" d="M90.622,141.227c0.675,1.58-0.074,2.873-1.671,2.873H86.33l-0.276-0.023c0-0.051,0.005-0.102,0.005-0.155
-			v-0.048h0.043c0.852-0.439,1.146-1.463,0.64-2.647l-13.981-32.643c-0.673-1.564-2.502-2.849-4.088-2.872h3.837
-			c1.594,0,3.454,1.293,4.132,2.872l1.251,2.921L90.622,141.227z"/>
-		<path class="st2" d="M86.742,141.227c0.507,1.184,0.212,2.208-0.64,2.647h-0.043c-0.018-1.663-0.918-2.277-2.438-2.277h-1.52
-			v-0.015c0,0,2.167-0.269,2.167-1.97s-0.903-2.325-2.438-2.325H68.721v-0.076l9.176-9.152c0,0,1.34-1.707,0.128-2.911
-			c-1.213-1.202-2.297-1.012-3.382,0.063c-1.085,1.075-10.284,9.898-10.86,10.451l-0.028-0.058
-			c-0.084-0.155-2.638-6.045-3.431-7.878c-0.317-0.94-0.993-1.648-1.896-1.719l0.008-0.164l-4.771-11.138l1.369-0.576
-			c0.396,0.928,1.479,1.681,2.415,1.681c0.936,0,1.374-0.753,0.975-1.681c-0.397-0.928-1.479-1.681-2.415-1.681
-			c-0.131,0-0.253,0.016-0.363,0.043l-0.473-1.351c0.936,0,1.371-0.753,0.975-1.681c-0.396-0.928-1.479-1.681-2.415-1.681
-			c-0.936,0-1.374,0.753-0.975,1.681l-1.133,0.477l-0.578-1.352c-0.678-1.579,0.072-2.872,1.668-2.872h15.958
-			c1.586,0.023,3.415,1.308,4.088,2.872L86.742,141.227z M59.504,120.706c0.936,0,1.374-0.753,0.977-1.681
-			c-0.397-0.928-1.479-1.681-2.415-1.681c-0.936,0-1.374,0.753-0.977,1.681C57.488,119.953,58.568,120.706,59.504,120.706z"/>
-		<path class="st4" d="M68.722,137.287H81.83c1.535,0,2.438,0.626,2.438,2.325s-2.167,1.97-2.167,1.97v0.015h1.52
-			c1.52,0,2.42,0.614,2.438,2.277v0.048c0,0.054-0.003,0.104-0.005,0.155c-0.128,1.564-2.162,1.815-2.162,1.815H45.79l-0.217-0.023
-			c0.105-1.049,0.189-2.122,0.258-3.209c0.015-0.264,0.033-0.53,0.049-0.796c0.125-2.092,0.473-3.667,0.885-4.835l0.018,0.005h9.66
-			c3.702,0,1.896-2.777,1.896-2.777s-1.264-2.682-2.075-4.383c-0.151-0.315-0.266-0.631-0.333-0.943
-			c-0.23-1.052,0.059-2.039,1.236-2.637c0.455-0.231,0.88-0.314,1.264-0.287c0.903,0.071,1.578,0.779,1.896,1.719
-			c0.793,1.833,3.346,7.723,3.431,7.875l0.028,0.061c0.576-0.553,9.806-9.406,10.86-10.451c1.054-1.044,2.169-1.265,3.382-0.063
-			c1.213,1.204-0.128,2.911-0.128,2.911l-9.176,9.152V137.287z"/>
-		<path class="st1" d="M78.545,175.267l-0.061,0.256c-5.27-1.313-9.291-3.783-12.405-6.567c0.895-0.243,1.658-0.938,1.967-1.807
-			c0.366-1.027,0.118-2.186,0.425-3.233c0.468-1.6,2.154-2.591,3.819-2.829l0.044-0.046c2.487,2.396,5.567,4.287,9.345,5.2
-			l-0.015,0.058c0.176,0.703,0.01,1.478-0.435,2.049c-0.609,0.781-1.693,1.186-2.07,2.102c-0.376,0.923,0.131,1.954,0.128,2.948
-			c0,0.647-0.228,1.291-0.632,1.795C78.627,175.229,78.586,175.267,78.545,175.267z"/>
-		<path class="st1" d="M72.334,161.041l-0.044,0.046c-1.665,0.238-3.351,1.229-3.819,2.829c-0.307,1.047-0.059,2.206-0.425,3.233
-			c-0.31,0.869-1.072,1.564-1.967,1.807c-3.981-3.557-6.472-7.628-8.191-10.448c-0.164-0.269-0.325-0.537-0.481-0.811l0.271-0.152
-			c0.228-0.36,0.563-0.654,0.954-0.829c1.026-0.459,2.21-0.084,3.313,0.144c1.103,0.231,2.466,0.206,3.09-0.725
-			c0.325-0.484,0.356-1.095,0.466-1.668c0.11-0.571,0.366-1.189,0.908-1.407l0.225-0.066c0.202,0.385,0.417,0.791,0.645,1.219
-			c0.548,1.027,1.159,2.039,1.837,3.017C70.054,158.584,71.123,159.872,72.334,161.041z"/>
-		<path class="st4" d="M60.693,104.472c4.746,0,10.478-3.341,10.376-3.144c0,0-1.53,1.94-2.397,4.244v0.14h-7.979V104.472z"/>
-		<path class="st1" d="M66.634,152.994l-0.225,0.066c-0.542,0.218-0.798,0.836-0.908,1.407c-0.11,0.573-0.141,1.184-0.466,1.668
-			c-0.624,0.931-1.988,0.956-3.09,0.725c-1.103-0.228-2.287-0.603-3.313-0.144c-0.391,0.175-0.727,0.469-0.954,0.829l-0.271,0.152
-			c-1.484-2.553-2.735-5.284-3.65-7.462l0.138-0.058c0.959,0.165,2.021,0.314,2.847-0.198c0.719-0.443,1.077-1.288,1.706-1.851
-			c0.443-0.398,1.003-0.641,1.499-0.973c0.496-0.33,0.732-0.555,0.801-1.144v-0.119h2.558v0.178
-			C63.961,147.449,64.69,149.269,66.634,152.994z"/>
-		<path class="st1" d="M60.748,145.892v0.119c-0.069,0.589-0.304,0.814-0.801,1.144c-0.496,0.332-1.056,0.575-1.499,0.973
-			c-0.629,0.563-0.987,1.408-1.706,1.851c-0.826,0.512-1.888,0.363-2.847,0.198l-0.138,0.058c-1.044-2.482-1.648-4.254-1.648-4.254
-			v-0.089H60.748z"/>
-		<path class="st4" d="M26.953,131.24c-1.896,1.286-3.482,2.368-4.551,3.109c-0.461,0.312-0.803,0.593-1.054,0.847
-			c-1.325,1.331-0.008,1.838,1.054,1.838h13.725l0.069,0.012c-0.061,0.371-0.115,0.753-0.159,1.149
-			c-0.153,1.285-0.279,2.497-0.394,3.628c-0.153,1.498-0.289,2.86-0.445,4.069H8.316c0,0-2.978-0.091-4.694-3.76
-			c-1.714-3.668,2.799-7.157,2.799-7.157l11.898-8.308l2.84-1.98l6.155-4.3l27.685-19.327l0.143-0.059
-			c0.107,0.272,0.238,0.561,0.397,0.865c1.118,1.942,3.037,2.606,5.155,2.606v1.24h-7.979c-1.596,0-2.346,1.293-1.668,2.872
-			l0.578,1.352l1.584,3.696l-0.108,0.046C53.1,113.678,36.27,124.922,26.953,131.24z"/>
-		<path class="st3" d="M60.481,119.025c0.397,0.928-0.041,1.681-0.977,1.681c-0.936,0-2.016-0.753-2.415-1.681
-			c-0.396-0.928,0.041-1.681,0.977-1.681C59.002,117.344,60.084,118.097,60.481,119.025z"/>
-		<path class="st3" d="M58.424,114.129c0.399,0.928-0.038,1.681-0.975,1.681c-0.936,0-2.018-0.753-2.415-1.681
-			c-0.343-0.798-0.069-1.465,0.611-1.638c0.11-0.027,0.233-0.043,0.363-0.043C56.945,112.448,58.028,113.201,58.424,114.129z"/>
-		<path class="st1" d="M58.337,134.258c0,0,1.806,2.776-1.896,2.776h-6.549v-0.165c0.678-0.071,0.993-0.842,1.346-1.42
-			c0.483-0.788,1.246-1.359,1.993-1.901c0.75-0.543,1.522-1.096,2.039-1.859c0.517-0.763,0.732-1.8,0.289-2.609l0.161-0.101
-			l0.21-0.048c0.066,0.312,0.182,0.628,0.333,0.943C57.074,131.575,58.337,134.258,58.337,134.258z"/>
-		<path class="st3" d="M56.148,109.459c0.397,0.928-0.038,1.681-0.975,1.681c-0.936,0-2.019-0.753-2.415-1.681
-			c-0.399-0.928,0.038-1.681,0.975-1.681C54.669,107.778,55.751,108.531,56.148,109.459z"/>
-		<path class="st1" d="M56.051,67.623c2.228,4.951,0.542,10.441-5.536,15.511c-6.081,5.071-11.438,7.277-16.736,9.008l-0.09,0.058
-			c-0.486,0.677-0.939,1.379-1.358,2.107l-1.427-0.479c0.706-1.285,1.282-2.551,1.673-3.537l0.041-0.327
-			c3.272,0.413,5.817-2.535,7.844-6.234c2.287-4.176,2.891-6.742,2.891-6.742l-0.013-0.096c2.901-0.32,5.157-2.758,5.157-5.72
-			c0-2.315-1.379-4.31-3.364-5.223l0.084-0.175C45.217,65.775,53.825,62.672,56.051,67.623z"/>
-		<path class="st1" d="M47.465,135.467l-0.438-0.36c0,0-0.01,0-0.015,0c-0.1-0.026-0.12-0.155-0.133-0.256
-			c-0.097-0.715-0.778-1.192-1.425-1.521c-0.647-0.328-1.371-0.634-1.724-1.263c-0.184-0.33-0.246-0.713-0.412-1.052
-			c-0.327-0.67-1.051-1.093-1.793-1.212c-0.732-0.117-1.484,0.025-2.19,0.256c3.262-3.61,7.861-3.851,9.253-3.851
-			c5.237,0,7.132,2.773,7.132,2.773l-0.161,0.102c0.443,0.809,0.228,1.846-0.289,2.609c-0.517,0.763-1.289,1.316-2.039,1.858
-			c-0.747,0.543-1.509,1.113-1.993,1.902c-0.353,0.578-0.668,1.348-1.346,1.419v0.165h-3.111l-0.018-0.005
-			c0.223-0.631,0.466-1.146,0.701-1.562V135.467z"/>
-		<path class="st2" d="M55.173,111.14l0.473,1.351c-0.681,0.173-0.954,0.84-0.611,1.638l-1.369,0.576l-0.458-1.073l-1.583-3.696
-			l1.133-0.477C53.155,110.387,54.237,111.14,55.173,111.14z"/>
-		<path class="st8" d="M45.132,65.95c1.985,0.913,3.364,2.908,3.364,5.223c0,2.961-2.256,5.4-5.157,5.72
-			c-0.212,0.025-0.43,0.038-0.65,0.038c-2.489,0-4.61-1.552-5.439-3.729l-0.092-0.129c1.489-1.039,2.461-2.758,2.461-4.703
-			c0-0.449-0.051-0.887-0.151-1.306l0.228-0.051c0.402,0.089,0.819,0.134,1.246,0.134c1.404,0,2.691-0.492,3.697-1.313l0.24,0.005
-			C44.963,65.874,45.05,65.909,45.132,65.95z"/>
-		<path class="st1" d="M47.028,135.107l0.438,0.36c-0.235,0.416-0.478,0.93-0.701,1.562c-0.412,1.168-0.76,2.743-0.885,4.834
-			c-0.015,0.267-0.033,0.533-0.049,0.797l-0.361-0.023c-0.478-0.31-1.11-0.261-1.655-0.086c-0.542,0.175-1.046,0.464-1.596,0.611
-			c-0.729,0.195-1.525,0.129-2.21-0.18c-0.714-0.322-1.289-0.89-1.985-1.248c-0.696-0.36-1.648-0.454-2.19,0.109l-0.189-0.02
-			c0.115-1.131,0.24-2.343,0.394-3.628c0.044-0.396,0.097-0.779,0.159-1.149c0.53-3.161,1.704-5.4,3.139-6.99
-			c0.706-0.23,1.458-0.372,2.19-0.256c0.742,0.119,1.466,0.543,1.793,1.212c0.166,0.34,0.228,0.723,0.412,1.052
-			c0.353,0.629,1.077,0.936,1.724,1.263c0.647,0.33,1.328,0.806,1.425,1.521c0.013,0.102,0.033,0.231,0.133,0.256
-			c0.005,0,0.01,0,0.015,0V135.107z"/>
-		<path class="st1" d="M44.638,150.907c0,0.051-0.325,0.205-0.264,0.114c-1.075,0.193-1.302,0.794-2.244,1.339
-			c-1.251,0.725-2.924,0.816-4.121,0.005c-0.616-0.418-1.067-1.029-1.614-1.529c-0.548-0.502-1.282-0.91-2.011-0.763l-0.059-0.023
-			c0.399-1.077,0.657-2.474,0.872-4.158c0.156-1.209,0.292-2.571,0.445-4.069l0.189,0.02c0.542-0.563,1.494-0.469,2.19-0.109
-			c0.696,0.358,1.271,0.926,1.985,1.248c0.686,0.309,1.481,0.375,2.21,0.18c0.55-0.147,1.054-0.436,1.596-0.611
-			c0.545-0.175,1.177-0.224,1.655,0.086l0.361,0.023c-0.069,1.087-0.154,2.16-0.258,3.209c-0.177,1.77-0.417,3.476-0.778,5.074
-			L44.638,150.907z"/>
-		<path class="st8" d="M35.236,62.449c-0.069-0.342-0.102-0.697-0.102-1.06c0-3.179,2.599-5.755,5.807-5.755s5.81,2.576,5.81,5.755
-			c0,1.787-0.824,3.387-2.113,4.444c-1.005,0.822-2.292,1.313-3.697,1.313c-0.427,0-0.844-0.046-1.246-0.134l-0.228,0.051
-			c-0.514-2.193-2.292-3.907-4.533-4.341l0.041-0.233l0.008,0.005L35.236,62.449z"/>
-		<path class="st1" d="M44.638,150.907l0.156,0.036c-1.448,6.46-4.799,11.145-13.454,11.145c-0.146,0-0.292-0.002-0.435-0.005
-			l0.005-0.314c0.719-1.258,0.785-2.863,0.171-4.176c-0.335-0.71-0.854-1.346-1.018-2.112c-0.246-1.133,0.458-2.393,1.558-2.794
-			l-0.008-0.053c1.348-0.221,2.164-1.106,2.712-2.584l0.059,0.023c0.729-0.147,1.463,0.261,2.011,0.763
-			c0.547,0.5,0.998,1.111,1.614,1.529c1.197,0.811,2.87,0.72,4.121-0.005c0.941-0.545,1.169-1.146,2.244-1.339
-			C44.313,151.113,44.638,150.958,44.638,150.907z"/>
-		<path class="st1" d="M43.338,76.892l0.013,0.096c0,0-0.604,2.566-2.891,6.742c-2.026,3.699-4.572,6.648-7.844,6.234
-			c-0.422-0.051-0.857-0.16-1.305-0.33c-0.512-0.195-0.939-0.439-1.292-0.72c-2.336-1.871-1.371-5.449-0.274-7.989
-			c1.264-2.923,2.469-6.98,2.469-6.98l0.01-0.038c0.504,0.142,1.034,0.218,1.584,0.218c1.246,0,2.402-0.39,3.349-1.055l0.092,0.129
-			c0.829,2.178,2.95,3.729,5.439,3.729C42.908,76.93,43.126,76.918,43.338,76.892z"/>
-		<path class="st8" d="M39.468,67.063c0.1,0.418,0.151,0.857,0.151,1.306c0,1.945-0.972,3.664-2.461,4.703
-			c-0.946,0.664-2.103,1.055-3.349,1.055c-0.55,0-1.08-0.076-1.583-0.218c-2.438-0.682-4.224-2.906-4.224-5.54
-			c0-3.179,2.599-5.755,5.807-5.755c0.384,0,0.762,0.038,1.126,0.109C37.176,63.156,38.954,64.87,39.468,67.063z"/>
-		<path class="st1" d="M23.563,92.242l-0.077-0.041c0,0-4.454-2.923-9.391-8.59c-3.794-4.356-8.051-12.803-6.122-20.027
-			c0.578-2.173,1.717-4.237,3.594-6.042c8.03-7.723,23.05,4.65,23.408,4.946l-0.041,0.233c-0.363-0.071-0.742-0.109-1.126-0.109
-			c-3.208,0-5.807,2.576-5.807,5.755c0,2.634,1.786,4.858,4.224,5.54l-0.01,0.038c0,0-1.205,4.057-2.469,6.98
-			c-1.098,2.54-2.062,6.118,0.274,7.989l-0.123,0.155c-1.005,2.251-2.052,4.556-3.599,6.303l-0.082-0.071
-			c-0.494-0.52-1.008-1.052-1.67-1.339c-0.617-0.266-1.402-0.264-1.911,0.155C22.921,93.484,23.231,92.86,23.563,92.242z"/>
-		<path class="st9" d="M10.286,110.44c0.223-0.129,0.438-0.273,0.622-0.441C10.736,110.121,10.534,110.283,10.286,110.44z
-			 M29.212,96.519c-0.246,0.337-0.499,0.662-0.76,0.963c-1.822,2.125-3.835,3.2-6.59,3.758c-0.553,0.111-1.123,0.197-1.712,0.238
-			c-1.33,0.101-2.747-0.013-4.249-0.507c-1.361-0.449-2.336-0.875-3.709-1.293c-1.371-0.418-2.904-0.573-4.211,0.013
-			c-1.1,0.495-1.919,1.458-2.512,2.5c-0.665,1.167-1.097,2.505-0.98,3.841c0.118,1.339,0.857,2.66,2.062,3.271
-			c1.187,0.603,1.985,0.327,2.873-0.368l-0.023-0.03c0.45-0.385,0.657-0.55,0.934-0.654c0.54-0.211,0.883,0.19,1.023,0.446
-			c0.064,0.119,0.151,0.299,0.028,0.626c-0.095,0.264-0.264,0.482-0.471,0.672c0.113-0.078,0.21-0.139,0.297-0.17
-			c0.279-0.091,0.668-0.043,0.808,0.216c0.064,0.119,0.133,0.37,0.12,0.507c-0.059,0.54-0.44,0.973-0.9,1.29
-			c-0.079,0.054-0.161,0.104-0.243,0.15c-1.425,0.824-3.74,1.181-5.784,0.286c-2.192-0.96-3.663-3.209-3.986-5.565
-			c-0.322-2.355,0.404-4.774,1.686-6.782c0.458-0.715,0.99-1.392,1.637-1.942c2.305-1.957,5.73-2.036,8.652-1.219
-			c2.203,0.616,4.326,1.681,6.613,1.721c0.435,0.008,0.849-0.015,1.243-0.063c1.862-0.238,3.326-1.116,4.776-2.553
-			c0.161-0.16,0.317-0.325,0.463-0.497c1.548-1.747,2.594-4.052,3.6-6.303l0.123-0.155c0.353,0.281,0.78,0.525,1.292,0.72
-			c0.448,0.17,0.883,0.279,1.305,0.33l-0.041,0.327c-0.391,0.986-0.967,2.251-1.673,3.537
-			C30.399,94.746,29.829,95.677,29.212,96.519z"/>
-		<path class="st1" d="M30.903,93.829l1.427,0.479c-0.471,0.821-0.9,1.676-1.294,2.573l-0.02-0.01
-			c-0.645,0.16-1.256,0.018-1.804-0.352C29.828,95.677,30.399,94.746,30.903,93.829z"/>
-		<path class="st1" d="M31.614,152.634l0.008,0.053c-1.1,0.401-1.804,1.661-1.558,2.794c0.164,0.766,0.683,1.402,1.018,2.112
-			c0.614,1.313,0.547,2.918-0.171,4.176l-0.005,0.314c-8.752-0.193-11.504-6.237-12.361-11.148l0.187-0.033
-			c0.34-0.654,0.655-0.616,1.392-0.707c0.737-0.092,1.491,0.127,2.126,0.509c0.535,0.325,0.998,0.766,1.563,1.035
-			c1.358,0.644,3.016,0.012,3.707-1.314l0.059-0.022c0.609,1.475,1.668,2.289,3.313,2.289
-			C31.148,152.692,31.389,152.674,31.614,152.634z"/>
-		<path class="st1" d="M31.015,96.871l0.02,0.01c-1.189,2.72-2.036,5.831-2.64,9.505l-0.212-0.035
-			c-1.149,0.88-2.916,0.849-4.034-0.071c-1.044-0.862-1.612-2.404-2.939-2.69c-0.468-0.099-0.975-0.01-1.379,0.248l-0.11-0.02
-			c0.136-0.761,0.281-1.493,0.44-2.208l-0.01-0.132c0.588-0.041,1.159-0.127,1.711-0.239c2.755-0.557,4.769-1.632,6.59-3.757
-			c0.261-0.302,0.514-0.626,0.76-0.963C29.759,96.889,30.371,97.031,31.015,96.871z"/>
-		<path class="st1" d="M28.184,106.351l0.212,0.035c-0.461,2.807-0.778,5.943-0.998,9.488c-0.709,0.824-1.816,1.272-2.911,1.3
-			c-1.167,0.033-2.315-0.37-3.303-0.984c-0.399-0.245-0.778-0.529-1.213-0.704s-0.947-0.231-1.364-0.018H18.55
-			c0.225-4.526,0.586-8.321,1.172-11.65l0.11,0.02c0.404-0.258,0.911-0.347,1.379-0.248c1.328,0.286,1.896,1.828,2.939,2.69
-			C25.268,107.2,27.035,107.23,28.184,106.351z"/>
-		<path class="st1" d="M27.577,150.403l-0.059,0.022c-0.691,1.326-2.348,1.958-3.707,1.314c-0.565-0.269-1.028-0.71-1.563-1.035
-			c-0.634-0.383-1.389-0.601-2.126-0.509c-0.737,0.091-1.051,0.053-1.392,0.707l-0.187,0.033c-0.34-1.945-0.384-3.712-0.384-4.865
-			v-0.178h8.757v0.089C26.917,147.791,27.119,149.287,27.577,150.403z"/>
-		<path class="st1" d="M27.314,120.386l-6.155,4.3l-0.138-0.192c-1.039,0.018-2.07-0.535-2.62-1.41h-0.105
-			c0.059-2.758,0.138-5.286,0.253-7.619h0.059c0.417-0.21,0.929-0.154,1.364,0.021s0.813,0.459,1.213,0.704
-			c0.988,0.614,2.136,1.017,3.303,0.984c1.095-0.028,2.203-0.476,2.911-1.3c-0.084,1.381-0.153,2.824-0.212,4.332L27.314,120.386z"
-			/>
-		<path class="st1" d="M26.953,131.24c-0.008,1.037-0.015,2.102-0.02,3.19h-0.141c-1.517,1.128-3.615,1.443-5.4,0.809l-0.043-0.043
-			c0.251-0.254,0.594-0.535,1.054-0.847C23.471,133.608,25.057,132.526,26.953,131.24z"/>
-		<path class="st1" d="M26.792,134.43h0.141c-0.005,0.852-0.008,1.719-0.01,2.601c-2.392,0.003-4.065,0.003-4.52,0.003
-			c-1.062,0-2.379-0.507-1.054-1.838l0.043,0.043C23.177,135.872,25.275,135.558,26.792,134.43z"/>
-		<path class="st1" d="M26.217,95.302l0.082,0.071c-0.146,0.172-0.302,0.337-0.463,0.497c-1.451,1.438-2.914,2.315-4.776,2.553
-			l-0.015-0.147c0.455-1.453,0.98-2.827,1.591-4.158c0.509-0.418,1.294-0.421,1.911-0.155
-			C25.209,94.249,25.723,94.782,26.217,95.302z"/>
-		<path class="st1" d="M21.021,124.494l0.138,0.193l-2.84,1.98l-0.079-0.112c0.015-1.197,0.036-2.353,0.056-3.473h0.105
-			C18.951,123.959,19.982,124.512,21.021,124.494z"/>
-		<path class="st9" d="M10.908,109.999c-0.184,0.167-0.399,0.312-0.622,0.441C10.534,110.283,10.736,110.121,10.908,109.999z"/>
-		<path class="st10" d="M106.102,19.72c0,0,0.01-0.013,0.013-0.02c2.891-4.295,1.402-10.917-2.507-14.33
-			c-3.917-3.42-9.458-4.439-14.672-4.193C84.04,1.41,78.698,2.999,76.204,7.183c-1.435,2.409-1.724,5.365-3.2,7.751
-			c-1.788,2.885-5.042,4.521-8.227,5.748c-3.185,1.225-6.552,2.231-9.189,4.381c-4.226,3.446-5.782,9.746-3.64,14.733
-			c1.225,2.855,3.454,5.157,5.019,7.842c1.875,3.217,2.763,6.987,2.52,10.694c-0.184,2.784-0.982,5.616-0.271,8.313
-			c1.128,4.282,6.493,6.891,10.599,5.157"/>
-		<path class="st10" d="M106.169,19.735c3.535,0.55,6.513,3.628,6.917,7.152c0.389,3.397-1.368,6.643-3.157,9.566
-			c-1.785,2.926-3.645,5.727-3.916,8.144"/>
-		<path class="st10" d="M104.413,21.738c-0.545,0.299-1.097,0.576-1.658,0.832c-4.916,2.261-10.442,3.055-15.866,3.552
-			c-2.975,0.271-6.055,0.492-8.695,1.879c-3.149,1.653-5.347,4.967-5.626,8.486c-0.281,3.529,1.22,6.919,2.356,10.273
-			c1.138,3.357,1.891,7.185,0.23,10.319c-0.962,1.818-2.574,3.103-4.398,4.128c-1.246,0.702-2.594,1.28-3.899,1.823"/>
-		<path class="st10" d="M69.84,71.781c0,0,0.003,0.013,0.003,0.018c0.212,1.478-0.243,3.037-1.213,4.178
-			c-0.977,1.146-2.458,1.851-3.97,1.889c2.781,1.204,6.035,0.761,8.332-1.207c-0.161,2.513-2.246,4.229-4.733,4.751
-			c3.868,1.42,8.498-1.648,10.215-4.422"/>
-		<path class="st10" d="M71.103,61.267c0.755,3.228,3.791,5.365,5.549,8.184c1.435,2.299,1.924,4.911,1.914,7.538
-			c-0.008,1.879-0.271,3.765-0.624,5.55c-0.084,0.416-0.146,0.849-0.161,1.283c-0.021,0.677,0.077,1.344,0.417,1.919
-			c0.514,0.88,1.517,1.344,2.476,1.706c6.007,2.264,12.758,2.543,18.933,0.776c0.801-0.228,1.704-0.606,1.911-1.405
-			c0.095-0.37,0.016-0.761-0.066-1.133c-0.082-0.385-0.19-0.801-0.305-1.247c-0.279-1.1-0.603-2.378-0.734-3.78"/>
-		<path class="st10" d="M94.078,78.614c1.075,1.207,2.771,1.653,4.385,1.838c0.637,0.073,1.292,0.109,1.947,0.096
-			c2.256-0.043,4.507-0.654,6.04-2.241c2.348-2.429,2.264-6.217,2.031-9.571c-0.169-2.444-0.34-4.888-0.509-7.33"/>
-		<path class="st10" d="M62.855,57.147c3.446-0.2,7.455-1.97,9.568-4.675"/>
-		<path class="st10" d="M61.602,49.516c3.425-0.497,6.654-2.231,8.946-4.802"/>
-		<path class="st10" d="M56.892,41.471c4.861,0.066,10.115-2.601,12.643-6.539"/>
-		<path class="st10" d="M57.564,26.059c5.326-2.622,11.909-2.581,17.204,0.112"/>
-		<path class="st10" d="M77.854,14.797c5.526,0.449,8.534,5.7,9.384,7.728"/>
-		<path class="st10" d="M81.085,7.203c4.942,0.408,13.49,6.252,15.111,13.78"/>
-		<path class="st10" d="M91.238,4.594c5.797,2.114,10.177,7.624,10.896,13.704"/>
-		<path class="st10" d="M105.976,39.225c0,0.03-0.002,0.058-0.002,0.089c-0.041,1.696-0.085,3.41-0.141,5.279
-			c0,0.03,0,0.063,0,0.094"/>
-		<path class="st10" d="M102.781,22.626c1.609,0.953,2.605,2.705,3.039,4.513c0.438,1.805,0.384,3.689,0.328,5.545
-			c-0.015,0.482-0.028,0.953-0.041,1.417"/>
-		<path class="st10" d="M100.113,49.964c0.806,0.228,1.599,0.459,2.387,0.69c2.515,0.738,4.958,1.483,7.434,2.193
-			c1.99,0.57,4.004,1.118,6.094,1.623c3.586,0.865,4.587,3.641-0.023,4.683c-3.387,0.766-5.805,1.268-8.138,1.681
-			c-2.394,0.429-4.702,0.766-7.877,1.212c-1.195,0.167-2.435,0.319-3.582-0.048c-1.146-0.37-2.625-1.544-2.796-2.725
-			c-0.118-0.801-0.241-2.624,1.926-3.58c0.087-0.038,0.189-0.076,0.299-0.111c1.031-0.325,2.993-0.411,4.214,1.364"/>
-		<path class="st10" d="M97.192,45.008c1.361,0.697,2.305,1.76,2.653,3.364c0.097,0.449,0.148,0.938,0.148,1.473
-			c0,0.038,0,0.079,0,0.117c-0.044,2.835-1.719,4.399-4.29,5.205c-0.724,0.228-1.517,0.396-2.366,0.515
-			c-1.269,0.177-2.658,0.248-4.116,0.248c-5.95,0-10.775-1.374-10.775-6.085c0-5.342,4.825-6.085,10.775-6.085
-			c2.205,0,4.257,0.117,5.963,0.53"/>
-		<path class="st10" d="M95.187,44.293c0.737,0.177,1.41,0.411,2.001,0.712"/>
-		<path class="st10" d="M93.329,55.636c-2.062-0.72-3.538-2.665-3.538-4.954"/>
-		<path class="st10" d="M90.968,47.381c0.972-1.189,2.456-1.95,4.119-1.95c2.09,0,3.896,1.199,4.758,2.941
-			c0.026,0.051,0.051,0.104,0.074,0.155"/>
-		<path class="st10" d="M90.993,47.429l4.303,3.162h-5.505"/>
-		<path class="st10" d="M110.518,48.081c0.025,0.094,0.048,0.19,0.069,0.289c0.1,0.449,0.151,0.938,0.151,1.476
-			c0,1.181-0.279,2.148-0.783,2.931"/>
-		<path class="st10" d="M101.712,47.381c0.972-1.189,2.456-1.95,4.119-1.95c1.082,0,2.087,0.322,2.924,0.872
-			c0.78,0.515,1.414,1.227,1.831,2.066c0.029,0.053,0.054,0.104,0.077,0.157"/>
-		<path class="st10" d="M101.737,47.429l4.303,3.162h-3.52"/>
-		<path class="st10" d="M78.384,45.669c0.768-0.312,2.671-2.393,12.64-2.013c1.993,0.076,3.223,0.34,4.157,0.634
-			c0,0,0.002,0.001,0.005,0.003c0.785,0.248,1.358,0.517,2,0.712c0,0,0,0.003,0.005,0.003c0.824,0.251,1.763,0.38,3.402,0.185
-			c2.362-0.279,4.022-0.431,5.362-0.231c1.088,0.162,1.96,0.558,2.825,1.306"/>
-		<path class="st10" d="M106.04,34.532c0.335,0.71,0.512,1.503,0.512,2.368c0,0.933-0.2,1.734-0.578,2.414
-			c-0.862,1.559-2.663,2.492-5.153,2.933c-1.202,0.215-2.568,0.314-4.065,0.314c-5.951,0-10.159-1.924-10.159-6.019
-			c0-3.691,4.208-6.151,10.159-6.151c4.464,0,7.742,1.384,9.103,3.785C105.922,34.291,105.984,34.41,106.04,34.532z"/>
-		<path class="st10" d="M100.868,42.265c-0.015-0.005-0.031-0.01-0.046-0.018c-2.039-0.73-3.492-2.665-3.492-4.936"/>
-		<path class="st10" d="M98.507,34.009c0.972-1.189,2.456-1.947,4.119-1.947c1.662,0,2.775,1.24,3.415,2.469
-			c0.171,0.322,0.309,0.641,0.422,0.938"/>
-		<path class="st10" d="M98.532,34.06l4.306,3.162H97.33"/>
-		<path class="st10" d="M94.636,66.252h0.003c0.033-0.056,0.611-0.918,2.886-0.984c3.07-0.091,7.857,6.262,7.857,6.262
-			c-0.054-0.02-6.749,4.237-13.996,2.059c-6.736-2.023-8.22-9.3-8.452-10.626c-0.021-0.114-0.031-0.182-0.036-0.203
-			c0,0,3.973-0.745,8.399-0.089c3.853,0.573,3.362,3.463,3.344,3.577"/>
-		<path class="st10" d="M83.078,62.94c0,0,7.764,8.59,22.303,8.59"/>
-		<path class="st10" d="M80.576,93.423c-0.015,0.015-0.036,0.033-0.059,0.053c-0.962,0.9-7.112,6.955-0.599,9.105
-			c5.416,1.79,8.667-5.19,9.749-7.964c-0.45,2.505-0.361,11.097,5.329,10.38c5.597-0.715,4.694-5.279,3.612-10.737
-			c1.988,7.408,7.194,9.609,10.197,6.792c0.407-0.38,0.775-0.857,1.087-1.422c2.438-5.281-6.679-7.966-8.667-15.212"/>
-		<path class="st10" d="M77.752,83.522c0,0,0.005,0.112-0.01,0.299c-0.072,0.9-0.611,3.572-4.416,4.533
-			c-3.492,0.88-8.864,1.458-8.667,5.456c0.01,0.228,0.041,0.466,0.09,0.717c0.903,4.652,6.772,3.4,6.772,3.4
-			s5.042-0.877,8.997-4.452c0.021-0.018,0.041-0.035,0.059-0.053c0.015-0.015,0.028-0.025,0.038-0.035h0.003
-			c0.015-0.013,0.023-0.02,0.023-0.02"/>
-		<path class="st10" d="M93.239,107.687c0.212,2.307,1.328,9.289,6.994,8.316c4.605-0.984,3.341-5.547,2.71-9.931
-			c1.102,4.371,4.543,8.268,8.401,7.107c0.563-0.168,1.136-0.447,1.711-0.845c5.326-4.026-2.259-6.62-4.244-11.274"/>
-		<path class="st10" d="M93.239,107.682c-0.02-0.449-0.049-0.715-0.049-0.715S93.198,107.236,93.239,107.682z"/>
-		<path class="st10" d="M93.239,107.682v0.005"/>
-		<path class="st10" d="M78.202,111.376c2.53-1.443,4.566-3.707,5.147-5.484c-0.542,2.239-2.256,11.275,4.334,11.186
-			c5.51-0.074,5.656-7.094,5.557-9.391"/>
-		<path class="st10" d="M64.569,93.813c-2.504,2.738-11.778,1.219-9.427,7.188c0.108,0.271,0.238,0.56,0.397,0.865
-			c1.118,1.942,3.037,2.606,5.155,2.606c4.746,0,10.478-3.342,10.376-3.144c0,0-1.53,1.94-2.397,4.244"/>
-		<path class="st10" d="M45.789,145.892h38.102c0,0,2.034-0.251,2.162-1.815c0-0.051,0.005-0.102,0.005-0.155v-0.048
-			c-0.018-1.663-0.918-2.277-2.438-2.277H70.709"/>
-		<path class="st10" d="M54.999,101.06l-27.685,19.327l-6.155,4.3l-2.84,1.98l-11.898,8.308c0,0-4.513,3.489-2.799,7.157
-			c1.717,3.669,4.694,3.76,4.694,3.76h26.907"/>
-		<path class="st10" d="M71.249,141.582h10.852c0,0,2.167-0.269,2.167-1.97s-0.903-2.325-2.438-2.325H68.632"/>
-		<path class="st10" d="M68.721,137.211l9.176-9.153c0,0,1.34-1.706,0.128-2.91c-1.213-1.202-2.297-1.012-3.382,0.063
-			c-1.085,1.075-10.284,9.898-10.86,10.451l-0.028,0.028"/>
-		<path class="st10" d="M36.127,137.034H22.402c-1.062,0-2.379-0.507-1.054-1.838c0.251-0.254,0.594-0.535,1.054-0.847
-			c1.069-0.741,2.655-1.823,4.551-3.109c9.317-6.318,26.148-17.562,26.148-17.562"/>
-		<path class="st10" d="M63.756,135.601c-0.084-0.152-2.638-6.042-3.431-7.875c-0.317-0.94-0.993-1.648-1.896-1.719
-			c-0.384-0.027-0.808,0.056-1.264,0.287c-1.177,0.598-1.466,1.585-1.236,2.637c0.067,0.312,0.182,0.628,0.333,0.943
-			c0.811,1.701,2.075,4.383,2.075,4.383s1.806,2.777-1.896,2.777h-9.66"/>
-		<path class="st10" d="M63.756,135.601v0.003"/>
-		<path class="st10" d="M147.863,56.409c-1.471,0-3.188,1.192-3.812,2.652l-5.946,13.881"/>
-		<path class="st10" d="M157.553,74.337l6.541-15.276c0.627-1.46-0.067-2.652-1.54-2.652h-14.6"/>
-		<path class="st10" d="M132.51,86.007l-1.363,3.184c-0.568,1.321-0.051,2.426,1.146,2.622c0.125,0.02,0.256,0.03,0.394,0.03h11.338
-			"/>
-		<path class="st10" d="M147.954,56.409h-3.674c-1.471,0-3.187,1.192-3.811,2.652l-6.347,14.822l-6.557,15.308
-			c-0.627,1.458,0.067,2.652,1.54,2.652h3.193"/>
-		<path class="st10" d="M157.911,59.868c-0.368,0.857-1.366,1.552-2.231,1.552c-0.864,0-1.266-0.695-0.9-1.552
-			c0.368-0.857,1.366-1.549,2.231-1.549C157.875,58.318,158.277,59.011,157.911,59.868z"/>
-		<path class="st10" d="M162.516,59.868c-0.369,0.857-1.367,1.552-2.231,1.552c-0.865,0-1.267-0.695-0.901-1.552
-			c0.369-0.857,1.366-1.549,2.231-1.549C162.48,58.318,162.881,59.011,162.516,59.868z"/>
-		<path class="st10" d="M160.669,64.178c-0.366,0.857-1.363,1.552-2.228,1.552c-0.865,0-1.269-0.695-0.9-1.552
-			c0.365-0.857,1.363-1.549,2.228-1.549C160.634,62.629,161.038,63.321,160.669,64.178z"/>
-		<path class="st10" d="M68.673,105.712c1.586,0.023,3.415,1.308,4.088,2.872l13.981,32.643c0.507,1.184,0.212,2.208-0.64,2.647"/>
-		<path class="st10" d="M58.437,125.843l-4.771-11.138l-0.458-1.073l-1.583-3.696l-0.578-1.352
-			c-0.678-1.579,0.072-2.872,1.668-2.872H68.53"/>
-		<path class="st10" d="M68.529,105.712h3.981c1.594,0,3.454,1.293,4.132,2.872l1.251,2.921l12.73,29.722
-			c0.675,1.58-0.074,2.873-1.671,2.873h-2.622"/>
-		<path class="st10" d="M57.089,119.025c0.399,0.928,1.479,1.681,2.415,1.681c0.936,0,1.374-0.753,0.977-1.681
-			c-0.396-0.928-1.479-1.681-2.415-1.681C57.13,117.344,56.692,118.097,57.089,119.025z"/>
-		<path class="st10" d="M52.758,109.459c0.396,0.928,1.479,1.681,2.415,1.681c0.936,0,1.371-0.753,0.975-1.681
-			c-0.396-0.928-1.479-1.681-2.415-1.681C52.797,107.778,52.359,108.531,52.758,109.459z"/>
-		<path class="st10" d="M55.035,114.129c0.397,0.928,1.479,1.681,2.415,1.681c0.936,0,1.374-0.753,0.975-1.681
-			c-0.396-0.928-1.479-1.681-2.415-1.681c-0.131,0-0.253,0.016-0.363,0.043C54.965,112.664,54.692,113.331,55.035,114.129z"/>
-		<path class="st10" d="M147.855,77.43h-10.852c0,0-2.167-0.269-2.167-1.967c0-0.479,0.072-0.872,0.207-1.192
-			c0.351-0.811,1.128-1.136,2.231-1.136h10.588c3.61,0,5.055,2.363,5.055,2.363l0.875,1.468l0.691,1.156"/>
-		<path class="st10" d="M153.8,76.961l-6.199-11.346c0,0-0.798-2.013,0.706-2.829c1.507-0.814,2.494-0.327,3.229,1.009
-			c0.654,1.187,4.95,8.881,5.881,10.55l0.179,0.319c0,0,1.686,3.042,0.422,6.501c-0.709,1.94-9.959,24.76-17.954,44.455
-			c-1.194,2.938-2.358,5.806-3.463,8.523c-1.338,3.296-2.589,6.372-3.692,9.087c-1.033,2.536-1.936,4.756-2.663,6.546
-			c-1.23,3.03-1.962,4.825-1.962,4.825s-0.059,0.193-0.187,0.507c-0.555,1.359-2.402,4.982-6.316,4.982
-			c-3.272,0-4.812-1.597-5.531-2.943"/>
-		<path class="st10" d="M146.059,81.743H135.21c0,0-0.023,0-0.067-0.01c-0.36-0.061-2.1-0.434-2.1-1.957
-			c0-1.701,0.903-2.327,2.438-2.327h10.586"/>
-		<path class="st10" d="M144.273,81.732h-10.588c-1.535,0-2.438,0.626-2.438,2.325c0,1.009,0.764,1.516,1.384,1.757
-			c0.424,0.167,0.782,0.213,0.782,0.213h8.714c0,0,4.456-0.388,2.65,4.145c-0.13,0.33-0.366,0.908-0.683,1.699h-0.003
-			c-2.033,5.022-7.562,18.574-12.594,30.891c-0.427,1.05-0.854,2.092-1.271,3.116c-0.635,1.549-1.251,3.063-1.847,4.523
-			c-0.745,1.823-1.456,3.557-2.111,5.167c-1.542,3.773-2.801,6.851-3.563,8.717c-0.515,1.257-0.804,1.965-0.804,1.965"/>
-		<path class="st10" d="M128.223,155.108c0,0,1.737-0.147,3.886-1.11c2.289-1.03,5.047-2.984,6.677-6.676
-			c0.562-1.278,0.867-2.517,0.982-3.689c0.34-3.417-0.908-6.27-1.868-7.9c-0.552-0.941-1.01-1.476-1.01-1.476"/>
-		<path class="st10" d="M140.413,125.759c0,0,1.471,0.766,3.625,1.41c2.53,0.758,6.001,1.351,9.143,0.349
-			c0.67-0.213,1.322-0.496,1.949-0.867c2.402-1.419,3.643-3.318,4.006-5.103c0.489-2.371-0.565-4.536-2.471-5.096
-			c-0.049-0.016-0.095-0.028-0.141-0.041c-3.443-1.019-5.536-1.803-4.645-5.687c0.567-2.479,3.681-3.362,7.012-2.715
-			c1.957,0.38,3.99,1.29,5.628,2.715c3.128,2.721,4.543,7.634,3.696,12.401c-0.35,1.972-1.087,3.919-2.251,5.676
-			c-2.448,3.692-6.086,6.344-10.701,7.781c-1.427,0.449-2.95,0.779-4.559,0.987c-2.583,0.334-5.589,0.01-8.296-0.586
-			c-1.642-0.36-3.172-0.822-4.433-1.293"/>
-		<path class="st10" d="M128.405,130.411c0,0-0.008-0.002-0.026-0.01c-0.279-0.089-2.791-0.854-5.932,0.168
-			c-1.916,0.623-4.068,1.914-6.089,4.431c-0.54,0.675-1.072,1.438-1.589,2.3c-0.422,0.707-0.846,1.44-1.276,2.196
-			c-0.606,1.075-1.22,2.19-1.839,3.328c-0.699,1.291-1.402,2.612-2.106,3.933c-0.744,1.394-1.491,2.789-2.236,4.15
-			c-0.215,0.391-0.427,0.781-0.642,1.166c-0.491,0.885-0.982,1.75-1.471,2.589c-1.118,1.917-2.284,4.062-3.891,6.011
-			c-2.169,2.637-5.142,4.916-9.885,5.789c-1.507,0.276-3.195,0.41-5.093,0.37c-1.655-0.036-3.205-0.244-4.651-0.591
-			c-3.779-0.913-6.859-2.804-9.345-5.2c-1.21-1.169-2.279-2.457-3.218-3.811c-0.678-0.978-1.289-1.99-1.837-3.017
-			c-0.228-0.428-0.443-0.834-0.645-1.219c-1.944-3.725-2.673-5.545-3.328-6.924"/>
-		<path class="st10" d="M121.994,146.161l-0.054,0.106c-1.66,3.347-2.955,5.997-4.786,9.262c-0.289,0.517-0.596,1.052-0.919,1.608
-			c-0.808,1.399-1.729,2.933-2.819,4.682c-1.532,2.465-3.175,4.709-5.034,6.661c-3.416,3.582-7.573,6.186-13.173,7.37
-			c-3.221,0.682-6.92,0.895-11.228,0.555c-1.97-0.154-3.799-0.459-5.498-0.882c-5.27-1.313-9.292-3.783-12.405-6.567
-			c-3.981-3.557-6.472-7.628-8.192-10.448c-0.164-0.269-0.325-0.537-0.481-0.811c-1.484-2.553-2.735-5.284-3.651-7.462
-			c-1.044-2.482-1.648-4.254-1.648-4.254"/>
-		<path class="st10" d="M131.382,122.717c0,0-1.067-0.518-2.809-0.989c-1.952-0.528-4.751-1.002-7.844-0.624
-			c-1.849,0.226-3.985,0.898-6.027,2.069c-2.271,1.301-4.428,3.217-5.945,5.816c-0.913,1.564-1.596,3.375-1.934,5.448
-			c-0.389,2.384-0.343,4.554-0.013,6.43c0.115,0.659,0.264,1.281,0.443,1.864c0.496,1.62,1.212,2.938,2.008,3.876"/>
-		<path class="st10" d="M55.72,128.979c0,0-1.896-2.774-7.132-2.774c-1.392,0-5.991,0.241-9.253,3.851
-			c-1.435,1.59-2.609,3.829-3.139,6.99c-0.061,0.371-0.115,0.753-0.159,1.149c-0.154,1.285-0.279,2.497-0.394,3.628
-			c-0.153,1.498-0.289,2.86-0.445,4.069c-0.215,1.684-0.473,3.081-0.872,4.158c-0.548,1.478-1.363,2.363-2.712,2.584
-			c-0.225,0.04-0.466,0.058-0.724,0.058c-1.645,0-2.704-0.814-3.313-2.289c-0.458-1.116-0.66-2.612-0.66-4.422"/>
-		<path class="st10" d="M48.767,133.9c0,0-0.627,0.38-1.302,1.567c-0.235,0.416-0.478,0.93-0.701,1.562
-			c-0.412,1.168-0.76,2.743-0.885,4.835c-0.015,0.266-0.033,0.532-0.049,0.796c-0.069,1.087-0.153,2.16-0.258,3.209
-			c-0.176,1.77-0.417,3.476-0.778,5.074c-1.448,6.46-4.799,11.145-13.454,11.145c-0.146,0-0.292-0.002-0.435-0.005
-			c-8.752-0.193-11.504-6.237-12.361-11.148c-0.34-1.945-0.384-3.712-0.384-4.865"/>
-		<path class="st10" d="M20.162,101.61c-0.159,0.715-0.305,1.447-0.44,2.208c-0.586,3.329-0.946,7.124-1.172,11.647
-			c-0.115,2.333-0.194,4.861-0.253,7.617c-0.021,1.12-0.041,2.276-0.056,3.473"/>
-		<path class="st10" d="M23.584,92.201c-0.008,0.013-0.015,0.028-0.02,0.041c-0.333,0.619-0.642,1.242-0.929,1.876
-			c-0.611,1.331-1.136,2.705-1.591,4.158"/>
-		<path class="st10" d="M26.953,131.215v0.025c-0.008,1.037-0.015,2.102-0.021,3.19c-0.005,0.852-0.008,1.719-0.01,2.601"/>
-		<path class="st10" d="M33.689,92.201c-0.486,0.677-0.939,1.379-1.358,2.107c-0.471,0.821-0.901,1.676-1.294,2.573
-			c-1.19,2.72-2.036,5.832-2.64,9.505c-0.46,2.807-0.778,5.943-0.998,9.488c-0.084,1.381-0.153,2.824-0.212,4.333"/>
-		<path class="st10" d="M111.428,113.44l3.251,9.543"/>
-		<path class="st10" d="M102.641,118.092l4.453,13.96"/>
-		<path class="st10" d="M70.86,146.131l-1.566,10.975"/>
-		<path class="st10" d="M106.734,140.88l-0.241,11.097"/>
-		<path class="st10" d="M9.462,108.904l-0.038,0.03c-0.888,0.695-1.686,0.971-2.873,0.368c-1.205-0.611-1.944-1.932-2.062-3.271
-			c-0.118-1.336,0.315-2.674,0.98-3.841c0.594-1.042,1.412-2.005,2.512-2.5c1.307-0.586,2.84-0.431,4.211-0.013
-			c1.374,0.418,2.349,0.844,3.71,1.293c1.502,0.494,2.919,0.608,4.249,0.507c0.588-0.041,1.159-0.127,1.711-0.238
-			c2.755-0.558,4.768-1.633,6.59-3.758c0.261-0.302,0.514-0.626,0.76-0.963c0.616-0.842,1.187-1.772,1.691-2.69
-			c0.706-1.285,1.282-2.551,1.673-3.537"/>
-		<path class="st10" d="M11.24,111.837c0.018-0.012,0.038-0.025,0.056-0.038"/>
-		<path class="st10" d="M29.898,89.07c-1.005,2.251-2.052,4.556-3.6,6.303c-0.146,0.172-0.302,0.337-0.463,0.497
-			c-1.451,1.438-2.914,2.315-4.776,2.553c-0.394,0.048-0.808,0.071-1.243,0.063c-2.287-0.041-4.41-1.105-6.613-1.721
-			c-2.921-0.816-6.347-0.738-8.652,1.219c-0.647,0.55-1.179,1.227-1.637,1.942c-1.282,2.008-2.008,4.427-1.686,6.782
-			c0.322,2.356,1.793,4.604,3.986,5.565c2.044,0.895,4.359,0.538,5.784-0.286"/>
-		<path class="st10" d="M10.908,109.999c-0.184,0.167-0.399,0.312-0.622,0.441c-0.125,0.076-0.253,0.145-0.379,0.211"/>
-		<path class="st10" d="M9.401,108.904c0.45-0.386,0.657-0.55,0.934-0.654c0.54-0.211,0.883,0.19,1.023,0.446
-			c0.064,0.119,0.151,0.299,0.028,0.626c-0.095,0.264-0.263,0.482-0.471,0.672"/>
-		<path class="st10" d="M9.943,110.636c0.123-0.061,0.238-0.127,0.343-0.196c0.248-0.157,0.45-0.319,0.622-0.441
-			c0.003-0.002,0.005-0.005,0.008-0.005c0.113-0.078,0.21-0.139,0.297-0.17c0.279-0.091,0.668-0.043,0.808,0.216
-			c0.064,0.119,0.133,0.37,0.12,0.507c-0.059,0.54-0.44,0.973-0.9,1.29c-0.079,0.054-0.161,0.104-0.243,0.15
-			c-0.031,0.018-0.061,0.035-0.092,0.051"/>
-		<path class="st11" d="M39.468,67.063c0.1,0.418,0.151,0.857,0.151,1.306c0,1.945-0.972,3.664-2.461,4.703
-			c-0.946,0.664-2.103,1.055-3.349,1.055c-0.55,0-1.08-0.076-1.583-0.218c-2.438-0.682-4.224-2.906-4.224-5.54
-			c0-3.179,2.599-5.755,5.807-5.755c0.384,0,0.762,0.038,1.126,0.109C37.176,63.156,38.954,64.87,39.468,67.063z"/>
-		<path class="st12" d="M35.733,69.979c0.89,0.297,1.374,1.245,1.077,2.115c-0.294,0.872-1.256,1.339-2.146,1.042
-			c-0.89-0.297-1.374-1.242-1.077-2.115c0.023-0.074,0.054-0.145,0.09-0.213"/>
-		<path class="st11" d="M44.879,65.838c0.084,0.035,0.171,0.071,0.253,0.111c1.985,0.913,3.364,2.908,3.364,5.223
-			c0,2.961-2.256,5.4-5.157,5.72c-0.212,0.025-0.43,0.038-0.65,0.038c-2.489,0-4.61-1.552-5.439-3.73"/>
-		<path class="st12" d="M44.612,72.783c0.89,0.297,1.371,1.245,1.077,2.114c-0.297,0.872-1.259,1.339-2.149,1.042
-			c-0.89-0.297-1.371-1.245-1.077-2.115c0.026-0.074,0.056-0.147,0.089-0.213"/>
-		<path class="st11" d="M35.268,62.616c-0.013-0.056-0.023-0.112-0.031-0.167c-0.069-0.342-0.102-0.697-0.102-1.06
-			c0-3.179,2.599-5.755,5.807-5.755s5.81,2.576,5.81,5.755c0,1.787-0.824,3.387-2.113,4.444c-1.005,0.822-2.292,1.313-3.697,1.313
-			c-0.427,0-0.844-0.046-1.246-0.134"/>
-		<path class="st12" d="M42.866,62.999c0.89,0.297,1.374,1.245,1.077,2.114c-0.294,0.872-1.256,1.339-2.146,1.042
-			c-0.89-0.297-1.374-1.242-1.077-2.114c0.026-0.074,0.054-0.145,0.09-0.213"/>
-		<path class="st10" d="M32.215,73.946c0,0-1.205,4.056-2.469,6.98c-1.097,2.54-2.062,6.118,0.274,7.989
-			c0.353,0.281,0.78,0.525,1.292,0.72c0.448,0.17,0.883,0.279,1.305,0.33c3.272,0.413,5.817-2.535,7.844-6.234
-			c2.287-4.176,2.891-6.742,2.891-6.742"/>
-		<path class="st10" d="M32.922,82.711c-0.527,1.019-0.747,1.64-1.238,2.398"/>
-		<path class="st10" d="M35.945,83.969c-0.361,1.014-0.609,1.613-1.082,2.447"/>
-		<path class="st10" d="M34.983,62.494c0,0-0.003-0.002-0.008-0.005c-0.358-0.297-15.377-12.669-23.408-4.946
-			c-1.878,1.805-3.016,3.869-3.594,6.042c-1.929,7.223,2.328,15.671,6.122,20.027c4.937,5.667,9.391,8.59,9.391,8.59"/>
-		<path class="st10" d="M45.216,65.775c0,0,8.609-3.103,10.834,1.848c2.228,4.951,0.542,10.441-5.536,15.511
-			c-6.081,5.071-11.438,7.277-16.736,9.008"/>
-		<path class="st10" d="M11.568,57.543l9.931,10.917"/>
-		<path class="st10" d="M7.956,63.567l0.018,0.018l10.036,10.6"/>
-		<path class="st10" d="M48.948,75.199l7.884-4.533"/>
-		<path class="st10" d="M47.805,81.94l7.403-4.176"/>
-		<path class="st10" d="M22.53,94.214c0.033-0.035,0.069-0.066,0.105-0.096c0.509-0.418,1.294-0.421,1.911-0.155
-			c0.663,0.286,1.177,0.819,1.67,1.339"/>
-		<path class="st10" d="M29.174,96.496c0.013,0.008,0.026,0.018,0.038,0.023c0.548,0.37,1.159,0.512,1.803,0.352"/>
-		<path class="st10" d="M19.831,103.838c0.404-0.258,0.911-0.347,1.379-0.248c1.328,0.286,1.896,1.828,2.939,2.69
-			c1.118,0.92,2.886,0.95,4.034,0.071"/>
-		<path class="st10" d="M18.608,115.468c0.417-0.213,0.929-0.157,1.364,0.018c0.435,0.175,0.813,0.459,1.213,0.705
-			c0.988,0.613,2.136,1.016,3.303,0.983c1.095-0.028,2.203-0.476,2.911-1.3c0.046-0.051,0.09-0.104,0.13-0.16"/>
-		<path class="st10" d="M18.401,123.084c0.55,0.875,1.581,1.428,2.62,1.41"/>
-		<path class="st10" d="M21.392,135.239c1.786,0.633,3.883,0.319,5.4-0.809"/>
-		<path class="st10" d="M18.73,150.902c0.34-0.654,0.655-0.616,1.392-0.707c0.737-0.092,1.491,0.127,2.126,0.509
-			c0.535,0.325,0.998,0.766,1.563,1.035c1.358,0.644,3.016,0.012,3.707-1.314"/>
-		<path class="st10" d="M31.622,152.687c-1.1,0.401-1.803,1.661-1.558,2.794c0.164,0.766,0.683,1.402,1.018,2.112
-			c0.614,1.313,0.547,2.918-0.171,4.176"/>
-		<path class="st10" d="M34.385,150.073c0.729-0.147,1.463,0.261,2.011,0.763c0.548,0.5,0.998,1.111,1.614,1.529
-			c1.197,0.811,2.87,0.72,4.121-0.005c0.941-0.545,1.169-1.146,2.243-1.339c-0.061,0.092,0.264-0.063,0.264-0.114
-			c0-0.005-0.008-0.01-0.023-0.013"/>
-		<path class="st10" d="M35.833,141.843c0.542-0.563,1.494-0.469,2.19-0.109c0.696,0.358,1.271,0.926,1.985,1.248
-			c0.686,0.309,1.481,0.375,2.21,0.18c0.55-0.147,1.054-0.436,1.596-0.611c0.545-0.175,1.177-0.224,1.655,0.086"/>
-		<path class="st10" d="M39.307,130.066c0,0,0.018-0.005,0.028-0.01c0.706-0.23,1.458-0.372,2.19-0.256
-			c0.742,0.119,1.466,0.543,1.793,1.212c0.166,0.34,0.228,0.723,0.412,1.052c0.353,0.629,1.077,0.936,1.724,1.263
-			c0.647,0.33,1.328,0.806,1.425,1.521c0.013,0.102,0.033,0.231,0.133,0.256c0.005,0,0.01,0,0.015,0
-			c0.084,0,0.084-0.198,0.008-0.139"/>
-		<path class="st10" d="M49.893,136.869c0.678-0.071,0.993-0.842,1.346-1.42c0.483-0.788,1.246-1.359,1.993-1.901
-			c0.75-0.543,1.522-1.096,2.039-1.859c0.517-0.763,0.732-1.8,0.289-2.609"/>
-		<path class="st10" d="M53.894,150.177c0.959,0.165,2.021,0.314,2.847-0.198c0.719-0.444,1.077-1.288,1.706-1.851
-			c0.443-0.398,1.003-0.641,1.499-0.973c0.496-0.33,0.732-0.555,0.801-1.144"/>
-		<path class="st10" d="M57.678,157.545c0.228-0.36,0.563-0.654,0.954-0.829c1.026-0.459,2.21-0.084,3.313,0.144
-			c1.103,0.231,2.466,0.206,3.09-0.725c0.325-0.484,0.356-1.095,0.466-1.668c0.11-0.571,0.366-1.189,0.908-1.407"/>
-		<path class="st10" d="M65.931,168.992c0.049-0.01,0.1-0.023,0.148-0.036c0.895-0.243,1.658-0.938,1.967-1.807
-			c0.366-1.027,0.118-2.186,0.425-3.233c0.468-1.6,2.154-2.591,3.819-2.829"/>
-		<path class="st10" d="M81.663,166.299c0.176,0.703,0.01,1.478-0.435,2.049c-0.609,0.781-1.693,1.186-2.07,2.102
-			c-0.376,0.923,0.131,1.954,0.128,2.948c0,0.647-0.228,1.291-0.632,1.795c-0.028,0.036-0.069,0.074-0.11,0.074
-			c-0.01,0-0.018-0.003-0.025-0.005c-0.051-0.02,0.005-0.122,0.033-0.076"/>
-		<path class="st10" d="M91.454,166.639c0.294,0.246,0.379,0.667,0.34,1.045c-0.038,0.38-0.182,0.74-0.269,1.11
-			c-0.184,0.768-0.102,1.638,0.402,2.249c0.435,0.525,1.11,0.783,1.668,1.179c1.067,0.755,1.694,2.081,1.599,3.377"/>
-		<path class="st10" d="M101.441,160.78c0.699,0.117,1.31,0.657,1.507,1.333c0.21,0.715,0.003,1.572,0.468,2.156
-			c0.471,0.588,1.354,0.573,2.088,0.758c1.422,0.352,2.522,1.711,2.563,3.164"/>
-		<path class="st10" d="M107.542,151.031c0.333,0.561,1.026,0.817,1.681,0.85c0.655,0.035,1.304-0.107,1.957-0.14
-			c2.43-0.124,4.853,1.423,5.746,3.664"/>
-		<path class="st10" d="M113.61,139.561c0.579,0.386,1.364,0.269,2.003-0.005c0.64-0.273,1.218-0.687,1.886-0.887
-			c1.038-0.309,2.208-0.048,3.088,0.581c0.88,0.628,1.483,1.592,1.785,2.626c0.228,0.766,0.294,1.58,0.202,2.373"/>
-		<path class="st10" d="M122.49,130.698c0.829-0.249,1.732,0.165,2.361,0.758c1.08,1.022,1.579,2.609,1.277,4.057"/>
-		<path class="st10" d="M132.858,143.205c0.018,0.007,0.034,0.015,0.052,0.025c0.759,0.35,1.468,0.811,2.22,1.179
-			c0.773,0.375,1.622,0.654,2.479,0.581c0.854-0.076,1.714-0.568,2.024-1.362"/>
-		<path class="st10" d="M130.436,149.845c1.148,0.877,1.754,2.396,1.522,3.813"/>
-		<path class="st10" d="M107.346,142.698c1.32-0.454,2.796-0.446,4.108,0.02"/>
-		<path class="st10" d="M108.903,129.073c1.001-0.046,2.144,0,2.804,0.745c0.43,0.489,0.555,1.182,0.967,1.681
-			c0.502,0.606,1.323,0.821,2.047,1.136c0.724,0.314,1.537,1.496,1.524,2.279"/>
-		<path class="st10" d="M128.524,121.672c0.016,0.018,0.034,0.035,0.049,0.056c1,1.115,1.696,2.659,1.653,4.15
-			c-0.003,0.109-0.011,0.218-0.021,0.327"/>
-		<path class="st10" d="M143.982,127.453c0.616,0.983,1.246,2.203,0.716,3.235c-0.348,0.677-1.126,1.07-1.438,1.764
-			c-0.314,0.695-0.087,1.494,0,2.249c0.09,0.758-0.071,1.686-0.782,1.978"/>
-		<path class="st10" d="M153.271,127.79c-0.292,0.644-0.039,1.486,0.562,1.868c0.41,0.261,0.942,0.325,1.29,0.665
-			c0.45,0.438,0.417,1.168,0.243,1.772c-0.172,0.601-0.453,1.199-0.392,1.823c0.041,0.421,0.236,0.809,0.351,1.214
-			c0.112,0.408,0.133,0.885-0.138,1.212"/>
-		<path class="st10" d="M159.393,121.598c0.434,0.282,1.038,0.082,1.43-0.258c0.391-0.34,0.662-0.799,1.046-1.146
-			c0.386-0.348,0.975-0.568,1.425-0.312c0.593,0.342,0.555,1.23,1.015,1.732c0.338,0.365,0.881,0.459,1.379,0.456
-			c0.499-0.003,1.008-0.076,1.492,0.043c0.486,0.117,0.954,0.505,0.957,0.999"/>
-		<path class="st10" d="M158.847,108.224c-0.913,0.107-1.629,1.065-1.463,1.963c0.038,0.213,0.12,0.421,0.138,0.636
-			c0.079,0.956-1,1.542-1.54,2.335c-0.668,0.979-0.397,2.465,0.573,3.152"/>
-		<path class="st10" d="M88.542,29.806c0.141,0.644,0.389,1.263,0.732,1.828c0.033,0.053,0.082,0.114,0.143,0.099
-			c0.061-0.013,0.026-0.137-0.021-0.094"/>
-		<path class="st10" d="M93.979,28.371c0.082,0.819,0.179,1.26,0.476,2.028"/>
-		<path class="st10" d="M99.267,28.249c-0.125,0.788-0.169,1.354-0.118,2.15"/>
-		<path class="st10" d="M103.49,29.326c-0.286,0.555-0.458,1.166-0.504,1.788"/>
-		<path class="st13" d="M112.988,87.533c2.159,0,3.27-0.076,4.626-1.498c1.358-1.42,1.419-4.206,1.419-9.079
-			c0,4.873,0.062,7.659,1.418,9.079c1.355,1.422,2.466,1.498,4.625,1.498v0.015c-2.159,0-3.27,0.076-4.625,1.496
-			c-1.356,1.422-1.418,4.209-1.418,9.082c0-4.873-0.061-7.659-1.419-9.082c-1.356-1.42-2.467-1.496-4.626-1.496V87.533z"/>
-		<path class="st13" d="M152.984,41.017c1.625,0,2.461-0.066,3.482-1.265c1.021-1.199,1.067-3.552,1.067-7.664
-			c0,4.112,0.046,6.465,1.067,7.664c1.02,1.199,1.857,1.265,3.481,1.265v0.01c-1.624,0-2.461,0.066-3.481,1.265
-			c-1.021,1.199-1.067,3.552-1.067,7.664c0-4.112-0.046-6.465-1.067-7.664s-1.857-1.265-3.482-1.265V41.017z"/>
-		<path class="st13" d="M165.956,54.858c-1.57-1.767-2.855-1.863-5.352-1.863v-0.018c2.497,0,3.782-0.094,5.352-1.861
-			c1.568-1.767,1.64-5.233,1.64-11.292c0,6.059,0.072,9.525,1.642,11.292c1.571,1.767,2.855,1.861,5.352,1.861v0.018
-			c-2.497,0-3.781,0.096-5.352,1.863c-1.57,1.767-1.642,5.233-1.642,11.292C167.596,60.091,167.524,56.625,165.956,54.858z"/>
-		<path class="st14" d="M167.596,39.823c0,6.059-0.072,9.525-1.64,11.292c-1.57,1.767-2.855,1.861-5.352,1.861"/>
-		<path class="st14" d="M167.597,66.15c0-6.06,0.071-9.525,1.642-11.292c1.571-1.767,2.855-1.863,5.352-1.863"/>
-		<path class="st14" d="M167.597,39.823c0,6.059,0.071,9.525,1.642,11.292c1.571,1.767,2.855,1.861,5.352,1.861"/>
-		<path class="st14" d="M167.596,66.15c0-6.06-0.072-9.525-1.64-11.292c-1.57-1.767-2.855-1.863-5.352-1.863"/>
-		<path class="st14" d="M157.533,32.088c0,4.112-0.046,6.465-1.067,7.664c-1.021,1.199-1.857,1.265-3.482,1.265"/>
-		<path class="st14" d="M157.532,49.957c0-4.112,0.046-6.465,1.067-7.664s1.857-1.265,3.482-1.265"/>
-		<path class="st14" d="M157.532,32.088c0,4.112,0.046,6.465,1.067,7.664c1.021,1.199,1.857,1.265,3.482,1.265"/>
-		<path class="st14" d="M157.533,49.957c0-4.112-0.046-6.465-1.067-7.664s-1.857-1.265-3.482-1.265"/>
-		<path class="st14" d="M119.033,76.956c0,4.873-0.061,7.659-1.419,9.079c-1.356,1.422-2.467,1.498-4.626,1.498"/>
-		<path class="st14" d="M119.034,98.126c0-4.873,0.062-7.659,1.417-9.082c1.356-1.42,2.467-1.496,4.626-1.496"/>
-		<path class="st14" d="M119.034,76.956c0,4.873,0.062,7.659,1.417,9.079c1.356,1.422,2.467,1.498,4.626,1.498"/>
-		<path class="st14" d="M119.033,98.126c0-4.873-0.061-7.659-1.419-9.082c-1.356-1.42-2.467-1.496-4.626-1.496"/>
-	</g>
-</g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 176 178" style="enable-background:new 0 0 176 178" xml:space="preserve"><style type="text/css">.st1{fill:#ff7101}.st2{fill:#003c73}.st3{fill:#002140}.st4{fill:#03d47c}.st5{fill:#0164bf}.st6{fill:#f68dfe}.st7{fill:#d18000}.st8{fill:#fffaf0}.st9{fill:#50eef6}.st10{stroke-width:.9999}.st10,.st11,.st12{fill:none;stroke:#002140;stroke-linecap:round;stroke-miterlimit:10}.st11{stroke-width:.9432}.st12{stroke-width:1.8998}.st13{fill:#fff2b2}.st14{fill:none;stroke:#002140;stroke-width:.9999;stroke-linecap:round;stroke-linejoin:round}</style><g><defs><rect id="SVGID_1_" width="176" height="178"/></defs><clipPath id="SVGID_00000018218354771073572940000008642713263941723026_"><use xlink:href="#SVGID_1_" style="overflow:visible"/></clipPath><g style="clip-path:url(#SVGID_00000018218354771073572940000008642713263941723026_)"><path d="M164.519,110.724c3.129,2.721,4.543,7.634,3.696,12.401l-0.079-0.013c0-0.494-0.471-0.882-0.957-0.999 c-0.483-0.119-0.992-0.046-1.491-0.043c-0.499,0.003-1.041-0.091-1.379-0.456c-0.46-0.502-0.422-1.39-1.016-1.732 c-0.45-0.256-1.038-0.035-1.425,0.312c-0.383,0.347-0.654,0.806-1.046,1.146c-0.391,0.34-0.995,0.54-1.43,0.258l-0.256-0.05 c0.489-2.371-0.565-4.536-2.471-5.096c-0.049-0.016-0.095-0.028-0.141-0.041l0.031-0.101c-0.97-0.687-1.241-2.173-0.573-3.152 c0.54-0.793,1.619-1.379,1.54-2.335c-0.018-0.215-0.1-0.423-0.138-0.636c-0.166-0.898,0.55-1.856,1.463-1.963l0.044-0.215 C160.848,108.389,162.882,109.299,164.519,110.724z" class="st1"/><path d="M168.136,123.112l0.08,0.013c-0.351,1.972-1.088,3.919-2.252,5.676c-2.448,3.692-6.086,6.344-10.701,7.781 l-0.076-0.238c0.271-0.327,0.25-0.804,0.138-1.212c-0.115-0.406-0.31-0.793-0.351-1.214c-0.061-0.624,0.22-1.222,0.392-1.823 c0.174-0.604,0.207-1.334-0.243-1.772c-0.348-0.34-0.88-0.404-1.29-0.665c-0.601-0.383-0.854-1.224-0.562-1.868l-0.09-0.272 c0.67-0.213,1.323-0.496,1.949-0.867c2.403-1.419,3.643-3.318,4.007-5.103l0.255,0.05c0.435,0.282,1.039,0.082,1.43-0.258 c0.392-0.34,0.663-0.799,1.047-1.146c0.386-0.348,0.974-0.568,1.425-0.312c0.593,0.342,0.555,1.23,1.015,1.732 c0.338,0.365,0.88,0.459,1.379,0.456c0.499-0.003,1.008-0.076,1.492,0.043C167.666,122.23,168.134,122.618,168.136,123.112z" class="st1"/><path d="M162.554,56.409c1.474,0,2.167,1.192,1.54,2.652l-6.541,15.276l-0.135,0.008 c-0.932-1.668-5.227-9.363-5.882-10.55c-0.734-1.336-1.722-1.823-3.228-1.009c-1.505,0.816-0.706,2.829-0.706,2.829l6.198,11.346 l-0.008,0.005l-0.874-1.468c0,0-1.446-2.363-5.055-2.363h-9.758v-0.193l5.946-13.881c0.624-1.46,2.341-2.652,3.812-2.652H162.554z M162.516,59.868c0.366-0.857-0.036-1.549-0.9-1.549c-0.865,0-1.863,0.692-2.231,1.549c-0.366,0.857,0.036,1.552,0.9,1.552 C161.15,61.419,162.148,60.724,162.516,59.868z M160.669,64.178c0.368-0.857-0.036-1.549-0.9-1.549 c-0.865,0-1.863,0.692-2.229,1.549c-0.368,0.857,0.036,1.552,0.901,1.552C159.305,65.729,160.303,65.035,160.669,64.178z M157.911,59.868c0.366-0.857-0.036-1.549-0.9-1.549c-0.865,0-1.863,0.692-2.231,1.549c-0.366,0.857,0.036,1.552,0.9,1.552 C156.545,61.419,157.543,60.724,157.911,59.868z" class="st2"/><path d="M161.615,58.318c0.865,0,1.266,0.692,0.901,1.549c-0.369,0.857-1.367,1.552-2.231,1.552 c-0.865,0-1.267-0.695-0.901-1.552C159.753,59.011,160.75,58.318,161.615,58.318z" class="st3"/><path d="M159.769,62.629c0.865,0,1.269,0.692,0.9,1.549c-0.366,0.857-1.363,1.552-2.228,1.552 c-0.865,0-1.269-0.695-0.9-1.552C157.906,63.321,158.904,62.629,159.769,62.629z" class="st3"/><path d="M158.891,108.009l-0.044,0.215c-0.913,0.107-1.629,1.065-1.463,1.963c0.039,0.213,0.12,0.421,0.138,0.636 c0.08,0.956-1,1.542-1.54,2.335c-0.667,0.979-0.396,2.465,0.573,3.152l-0.03,0.101c-3.444-1.019-5.536-1.803-4.646-5.687 C152.447,108.245,155.56,107.362,158.891,108.009z" class="st1"/><path d="M132.91,143.23c-1.034,2.536-1.937,4.756-2.663,6.546c-1.231,3.03-1.962,4.825-1.962,4.825 s-0.059,0.193-0.187,0.507c-0.555,1.359-2.402,4.982-6.316,4.982c-3.272,0-4.812-1.597-5.531-2.943l-0.016-0.01 c0.323-0.556,0.63-1.091,0.919-1.608c1.831-3.265,3.126-5.915,4.786-9.261l-0.038-0.018c0,0,0.289-0.708,0.803-1.965 c0.762-1.866,2.021-4.944,3.564-8.717c0.655-1.61,1.366-3.344,2.11-5.167c0.596-1.46,1.213-2.974,1.847-4.523 c0.417-1.024,0.844-2.066,1.272-3.116c5.032-12.317,10.56-25.868,12.594-30.891h0.002c0.318-0.791,0.553-1.369,0.683-1.699 c1.807-4.533-2.65-4.145-2.65-4.145h-8.713c0,0-0.358-0.046-0.783-0.213c-0.619-0.241-1.384-0.748-1.384-1.757 c0-1.699,0.903-2.325,2.438-2.325h1.458c-0.361-0.061-2.1-0.434-2.1-1.957c0-1.701,0.903-2.327,2.438-2.327h4.423V77.43h-2.901 c0,0-2.167-0.269-2.167-1.967c0-0.479,0.072-0.872,0.207-1.192c0.351-0.811,1.129-1.136,2.231-1.136h10.589 c3.609,0,5.055,2.363,5.055,2.363l0.875,1.468l0.007-0.005l-6.198-11.346c0,0-0.798-2.013,0.706-2.829 c1.507-0.814,2.494-0.327,3.228,1.009c0.655,1.187,4.95,8.881,5.882,10.55l0.179,0.319c0,0,1.686,3.042,0.422,6.501 c-0.709,1.94-9.959,24.76-17.954,44.455c-1.194,2.938-2.358,5.806-3.464,8.523C135.263,137.439,134.012,140.515,132.91,143.23z" class="st4"/><path d="M157.011,58.318c0.864,0,1.266,0.692,0.9,1.549c-0.368,0.857-1.366,1.552-2.231,1.552 c-0.864,0-1.266-0.695-0.9-1.552C155.148,59.011,156.146,58.318,157.011,58.318z" class="st3"/><path d="M155.123,130.323c0.45,0.438,0.417,1.168,0.243,1.772c-0.172,0.601-0.453,1.199-0.392,1.823 c0.041,0.421,0.236,0.809,0.351,1.214c0.112,0.408,0.133,0.885-0.138,1.212l0.076,0.238c-1.427,0.449-2.949,0.779-4.558,0.987 c-2.584,0.334-5.59,0.01-8.297-0.586l0.069-0.304c0.711-0.292,0.873-1.22,0.783-1.978c-0.087-0.755-0.315-1.554,0-2.249 c0.312-0.694,1.09-1.087,1.438-1.764c0.529-1.032-0.1-2.252-0.716-3.235l0.056-0.284c2.53,0.758,6.001,1.351,9.143,0.35 l0.089,0.271c-0.291,0.644-0.038,1.486,0.563,1.868C154.243,129.92,154.775,129.983,155.123,130.323z" class="st1"/><path d="M144.281,56.409h3.581c-1.471,0-3.187,1.192-3.811,2.652l-5.946,13.881v0.193h-0.831 c-1.103,0-1.88,0.325-2.231,1.136l-0.921-0.388l6.347-14.822C141.093,57.601,142.81,56.409,144.281,56.409z" class="st5"/><path d="M142.127,86.027c0,0,4.456-0.388,2.65,4.145c-0.13,0.33-0.366,0.908-0.683,1.699h-0.003l-0.066-0.028h-11.338 c-0.138,0-0.269-0.01-0.394-0.03c-1.197-0.195-1.714-1.301-1.146-2.622l1.363-3.184l0.121-0.193 c0.424,0.167,0.782,0.213,0.782,0.213H142.127z" class="st2"/><path d="M143.982,127.453c0.617,0.983,1.246,2.203,0.716,3.235c-0.348,0.677-1.125,1.07-1.437,1.764 c-0.315,0.695-0.087,1.494,0,2.249c0.089,0.758-0.072,1.686-0.783,1.978l-0.069,0.304c-1.643-0.36-3.172-0.821-4.434-1.293 l-0.074,0.043c-0.552-0.941-1.01-1.476-1.01-1.476l-0.289-0.114c1.105-2.718,2.269-5.585,3.463-8.523l0.348,0.139 c0,0,1.471,0.766,3.625,1.41L143.982,127.453z" class="st1"/><path d="M139.903,77.43v0.018h-4.423c-1.535,0-2.438,0.626-2.438,2.327c0,1.524,1.74,1.896,2.1,1.957h-1.458 c-1.535,0-2.438,0.626-2.438,2.325c0,1.009,0.765,1.516,1.384,1.757l-0.12,0.193l-1.364,3.184 c-0.567,1.321-0.051,2.426,1.147,2.622v0.03h-3.188c-1.473,0-2.167-1.194-1.54-2.652l6.557-15.308l0.921,0.388 c-0.136,0.32-0.208,0.712-0.208,1.192c0,1.699,2.167,1.967,2.167,1.967H139.903z" class="st5"/><path d="M137.9,135.733c0.96,1.63,2.208,4.483,1.868,7.9l-0.136-0.005c-0.309,0.794-1.169,1.286-2.023,1.362 c-0.857,0.073-1.707-0.206-2.479-0.581c-0.752-0.368-1.461-0.829-2.221-1.179c1.103-2.715,2.354-5.791,3.692-9.087l0.289,0.115 C136.89,134.258,137.348,134.792,137.9,135.733z" class="st1"/><path d="M139.632,143.628l0.136,0.005c-0.115,1.172-0.42,2.411-0.983,3.689c-1.629,3.692-4.387,5.646-6.677,6.676 l-0.15-0.34c0.232-1.417-0.374-2.936-1.523-3.813l-0.189-0.069c0.727-1.79,1.63-4.011,2.663-6.546 c0.76,0.35,1.469,0.811,2.221,1.179c0.772,0.375,1.622,0.654,2.479,0.581C138.463,144.914,139.323,144.422,139.632,143.628z" class="st1"/><path d="M131.958,153.658l0.151,0.34c-2.149,0.963-3.886,1.11-3.886,1.11h-0.125c0.128-0.314,0.186-0.507,0.186-0.507 s0.732-1.795,1.963-4.825l0.189,0.069C131.585,150.722,132.191,152.241,131.958,153.658z" class="st1"/><path d="M131.382,122.717l0.115,0.045c-0.427,1.05-0.854,2.092-1.271,3.116c0.043-1.491-0.652-3.035-1.653-4.15 C130.315,122.199,131.382,122.717,131.382,122.717z" class="st1"/><path d="M128.574,121.728c1,1.115,1.696,2.659,1.652,4.15c-0.634,1.549-1.251,3.063-1.847,4.523 c-0.278-0.089-2.791-0.854-5.932,0.168c-1.916,0.623-4.068,1.914-6.089,4.431l-0.112-0.086c0.013-0.783-0.801-1.965-1.525-2.279 c-0.724-0.315-1.545-0.53-2.047-1.136c-0.411-0.499-0.537-1.192-0.967-1.681c-0.66-0.748-1.803-0.791-2.803-0.745l-0.146-0.084 c1.517-2.599,3.673-4.515,5.945-5.816c2.042-1.171,4.178-1.843,6.027-2.069C123.823,120.726,126.622,121.2,128.574,121.728z" class="st1"/><path d="M128.379,130.401c-0.745,1.823-1.456,3.557-2.111,5.167l-0.14-0.056c0.301-1.447-0.197-3.034-1.277-4.056 c-0.629-0.593-1.532-1.007-2.361-0.758l-0.044-0.129C125.588,129.547,128.1,130.312,128.379,130.401z" class="st1"/><path d="M126.128,135.512l0.141,0.056c-1.543,3.773-2.801,6.851-3.564,8.717l-0.13-0.036 c0.092-0.793,0.025-1.607-0.202-2.373c-0.302-1.034-0.906-1.998-1.786-2.626c-0.88-0.629-2.049-0.89-3.088-0.581 c-0.667,0.2-1.246,0.614-1.885,0.887c-0.64,0.274-1.425,0.391-2.003,0.005l-0.118-0.065c0.43-0.756,0.855-1.489,1.277-2.196 c0.516-0.862,1.049-1.625,1.588-2.3c2.021-2.517,4.173-3.808,6.089-4.431l0.043,0.129c0.829-0.249,1.732,0.165,2.362,0.758 C125.931,132.478,126.43,134.065,126.128,135.512z" class="st1"/><path d="M122.574,144.249l0.13,0.036c-0.514,1.257-0.803,1.965-0.803,1.965l0.038,0.017 c-1.66,3.347-2.954,5.997-4.786,9.262l-0.228-0.124c-0.892-2.241-3.315-3.788-5.745-3.664c-0.653,0.033-1.303,0.175-1.957,0.14 c-0.655-0.033-1.349-0.289-1.681-0.85l-0.23-0.124c0.744-1.361,1.491-2.756,2.235-4.15c0.704-1.321,1.407-2.642,2.106-3.933 c0.619-1.138,1.233-2.254,1.839-3.328l0.118,0.065c0.578,0.386,1.363,0.269,2.003-0.005c0.64-0.273,1.218-0.687,1.885-0.887 c1.039-0.309,2.208-0.048,3.088,0.581c0.88,0.628,1.484,1.592,1.786,2.626C122.599,142.642,122.666,143.456,122.574,144.249z" class="st1"/><path d="M116.926,155.405l0.227,0.124c-0.289,0.517-0.596,1.052-0.918,1.608c-0.809,1.399-1.73,2.933-2.819,4.682 c-1.533,2.465-3.175,4.709-5.035,6.661l-0.315-0.289c-0.04-1.453-1.141-2.812-2.563-3.164c-0.734-0.186-1.617-0.17-2.087-0.759 c-0.466-0.583-0.259-1.44-0.469-2.155c-0.197-0.677-0.808-1.217-1.506-1.333l-0.133-0.107c1.606-1.949,2.773-4.094,3.891-6.011 c0.488-0.839,0.979-1.704,1.471-2.589c0.215-0.385,0.427-0.775,0.642-1.166l0.23,0.124c0.333,0.561,1.026,0.817,1.681,0.85 c0.655,0.035,1.304-0.107,1.957-0.14C113.61,151.617,116.033,153.164,116.926,155.405z" class="st1"/><path d="M116.245,134.914l0.112,0.086c-0.539,0.675-1.071,1.438-1.588,2.3c-0.422,0.707-0.847,1.44-1.277,2.196 c-0.606,1.075-1.22,2.19-1.839,3.328l-0.2-0.106c-1.312-0.467-2.788-0.474-4.108-0.02l-0.092,0.033 c-0.179-0.583-0.328-1.205-0.443-1.864c-0.33-1.876-0.376-4.046,0.013-6.43c0.338-2.073,1.021-3.884,1.934-5.448l0.146,0.084 c1-0.046,2.144,0,2.804,0.745c0.429,0.489,0.555,1.182,0.967,1.681c0.501,0.606,1.322,0.821,2.046,1.136 C115.444,132.949,116.258,134.131,116.245,134.914z" class="st1"/><path d="M95.838,55.58L95.7,55.167c2.571-0.806,4.247-2.371,4.29-5.205h0.123c0.806,0.231,1.599,0.461,2.387,0.692 c2.515,0.738,4.958,1.483,7.434,2.193c1.99,0.57,4.004,1.118,6.094,1.623c3.586,0.865,4.587,3.641-0.023,4.683 c-3.387,0.766-5.805,1.268-8.138,1.681c-2.394,0.429-4.702,0.766-7.877,1.212c-1.195,0.167-2.435,0.319-3.582-0.048 c-1.146-0.37-2.625-1.544-2.796-2.725c-0.118-0.801-0.241-2.624,1.926-3.58C95.626,55.654,95.728,55.616,95.838,55.58z" class="st4"/><path d="M114.68,122.983l0.023,0.19c-2.272,1.301-4.429,3.217-5.946,5.816c-0.913,1.564-1.596,3.375-1.934,5.449 c-0.388,2.383-0.342,4.553-0.012,6.429l-0.077,0.013l-0.241,11.097l0.177,0.096c-0.491,0.885-0.982,1.75-1.471,2.589 c-1.118,1.917-2.285,4.062-3.891,6.011c-2.17,2.637-5.142,4.916-9.885,5.789c-1.507,0.276-3.195,0.41-5.093,0.37 c-1.655-0.036-3.205-0.244-4.651-0.591c-3.779-0.913-6.859-2.804-9.345-5.2c-1.21-1.169-2.279-2.457-3.218-3.811l0.179-0.124 l1.566-10.975v-0.239h13.032c0,0,2.034-0.251,2.162-1.815l0.276,0.023h2.622c1.596,0,2.346-1.293,1.671-2.873l-12.73-29.722 l0.31-0.129c2.53-1.443,4.566-3.707,5.147-5.484c-0.542,2.239-2.256,11.275,4.334,11.186c5.51-0.074,5.656-7.094,5.557-9.391 c0.212,2.307,1.328,9.289,6.994,8.316c4.605-0.984,3.342-5.547,2.71-9.931c1.102,4.371,4.543,8.268,8.401,7.107l0.084,0.261 L114.68,122.983z" class="st4"/><path d="M93.239,107.687c0.1,2.297-0.046,9.317-5.556,9.391c-6.59,0.089-4.876-8.947-4.334-11.186 c-0.581,1.777-2.617,4.041-5.147,5.484l-0.31,0.129l-1.251-2.921c-0.678-1.579-2.538-2.872-4.131-2.872h-3.837v-0.14 c0.867-2.304,2.397-4.244,2.397-4.244c0.102-0.197-5.631,3.144-10.376,3.144c-2.118,0-4.037-0.664-5.155-2.606 c-0.159-0.304-0.289-0.594-0.397-0.865c-2.351-5.968,6.923-4.449,9.427-7.188h0.09c0.01,0.226,0.041,0.464,0.09,0.715 c0.903,4.652,6.772,3.4,6.772,3.4s5.042-0.877,8.997-4.452c-0.962,0.9-7.112,6.955-0.599,9.105c5.416,1.79,8.667-5.19,9.749-7.964 c-0.45,2.505-0.361,11.097,5.329,10.38c5.597-0.715,4.694-5.279,3.612-10.737c1.988,7.408,7.194,9.609,10.197,6.792l0.005,0.008 c1.985,4.654,9.57,7.248,4.244,11.274c-0.576,0.398-1.149,0.677-1.711,0.845c-3.858,1.161-7.299-2.736-8.402-7.107 c0.632,4.384,1.896,8.947-2.709,9.931C94.567,116.977,93.451,109.994,93.239,107.687z M93.239,107.682 c-0.021-0.449-0.049-0.715-0.049-0.715S93.198,107.236,93.239,107.682z" class="st6"/><path d="M70.758,61.206l0.345,0.061c0.755,3.228,3.791,5.365,5.549,8.184c1.435,2.3,1.924,4.911,1.913,7.538h-0.092 c-1.716,2.774-6.347,5.841-10.215,4.422c2.487-0.522,4.572-2.239,4.733-4.751c-2.297,1.967-5.551,2.411-8.332,1.207 c1.512-0.038,2.993-0.743,3.97-1.889c0.969-1.141,1.425-2.7,1.213-4.178h-0.028c-4.106,1.737-9.47-0.872-10.599-5.154 c-0.711-2.698,0.087-5.53,0.271-8.313c0.243-3.707-0.645-7.477-2.52-10.694c-1.566-2.685-3.794-4.987-5.019-7.842 c-2.141-4.987-0.586-11.288,3.64-14.733c2.638-2.15,6.004-3.156,9.189-4.381c3.185-1.227,6.439-2.862,8.227-5.748 c1.476-2.386,1.765-5.342,3.2-7.751c2.494-4.183,7.836-5.773,12.732-6.006C94.15,0.931,99.691,1.95,103.608,5.37 c3.909,3.413,5.398,10.035,2.507,14.33l0.054,0.035c3.535,0.55,6.513,3.628,6.917,7.152c0.389,3.397-1.369,6.643-3.157,9.566 c-1.786,2.926-3.645,5.727-3.916,8.144l-0.18-0.005c0.057-1.869,0.1-3.583,0.141-5.279c0.379-0.679,0.578-1.481,0.578-2.414 c0-0.865-0.176-1.658-0.511-2.368c-0.057-0.122-0.118-0.241-0.182-0.355l0.248-0.076c0.013-0.464,0.026-0.936,0.041-1.417 c0.056-1.856,0.11-3.74-0.327-5.545c-0.435-1.808-1.43-3.56-3.04-4.513l-0.025-0.056c-4.917,2.262-10.443,3.055-15.866,3.552 c-2.975,0.271-6.055,0.492-8.695,1.879c-3.149,1.653-5.347,4.967-5.625,8.486c-0.282,3.529,1.22,6.919,2.356,10.273 c1.138,3.357,1.89,7.185,0.23,10.319C74.193,58.896,72.582,60.182,70.758,61.206z" class="st7"/><path d="M111.454,142.718l0.199,0.107c-0.698,1.29-1.402,2.611-2.105,3.932l-0.287-0.15 c-0.795-0.938-1.512-2.256-2.008-3.876l0.092-0.033C108.665,142.244,110.141,142.252,111.454,142.718z" class="st1"/><path d="M110.586,48.37c0.1,0.449,0.151,0.938,0.151,1.476c0,1.181-0.279,2.147-0.782,2.931l-0.021,0.071 c-2.476-0.71-4.919-1.455-7.434-2.193l0.02-0.063h3.52l-4.303-3.162l-0.025-0.048c0.972-1.189,2.456-1.95,4.119-1.95 c1.082,0,2.087,0.322,2.924,0.872C109.535,46.818,110.169,47.53,110.586,48.37z" class="st3"/><path d="M80.576,93.423c-0.018,0.018-0.038,0.036-0.059,0.053c-3.955,3.575-8.997,4.452-8.997,4.452 s-5.868,1.253-6.772-3.4c-0.049-0.251-0.079-0.489-0.09-0.717c-0.197-3.998,5.175-4.576,8.667-5.456 c3.804-0.961,4.344-3.633,4.415-4.533h0.038c-0.02,0.677,0.077,1.344,0.417,1.919c0.514,0.88,1.517,1.344,2.476,1.706 c6.007,2.264,12.758,2.543,18.933,0.776c0.8-0.228,1.703-0.606,1.91-1.405c0.095-0.37,0.016-0.761-0.066-1.133 c-0.082-0.385-0.189-0.801-0.304-1.247l0.079-0.02c1.988,7.246,11.105,9.931,8.667,15.212c-0.312,0.565-0.68,1.042-1.087,1.422 c-3.003,2.817-8.209,0.616-10.197-6.792c1.082,5.459,1.985,10.022-3.612,10.737c-5.689,0.717-5.779-7.875-5.329-10.38 c-1.082,2.774-4.334,9.754-9.749,7.964c-6.513-2.15-0.363-8.205,0.599-9.105C80.54,93.456,80.561,93.438,80.576,93.423z" class="st6"/><path d="M99.844,48.372c-0.348-1.605-1.292-2.667-2.653-3.364c0.824,0.251,1.763,0.38,3.403,0.185 c2.361-0.279,4.021-0.431,5.362-0.231c1.087,0.162,1.959,0.558,2.824,1.306l-0.025,0.035c-0.837-0.55-1.842-0.872-2.924-0.872 c-1.663,0-3.147,0.761-4.119,1.95l0.025,0.048l4.303,3.161h-3.52l-0.02,0.063c-0.788-0.231-1.581-0.461-2.387-0.69H99.99 c0-0.041,0-0.081,0-0.119c0-0.535-0.051-1.024-0.148-1.473H99.844z" class="st8"/><path d="M95.181,44.29c-1.706-0.413-3.758-0.53-5.963-0.53c-5.951,0-10.775,0.743-10.775,6.085 c0,4.711,4.825,6.085,10.775,6.085c1.458,0,2.847-0.071,4.116-0.249c0.849-0.119,1.642-0.286,2.366-0.515l0.138,0.413 c-0.11,0.035-0.212,0.074-0.299,0.112c-2.167,0.956-2.044,2.779-1.926,3.58c0.171,1.181,1.65,2.355,2.796,2.725 c1.146,0.368,2.387,0.215,3.581,0.048c3.174-0.446,5.482-0.783,7.876-1.212l0.105,0.573c0.169,2.442,0.341,4.886,0.509,7.33 c0.233,3.354,0.318,7.142-2.031,9.571c-1.532,1.587-3.783,2.198-6.04,2.241v0.109c0.133,1.402,0.458,2.68,0.737,3.78 c0.115,0.446,0.223,0.862,0.304,1.247c0.082,0.373,0.162,0.763,0.067,1.133c-0.207,0.799-1.11,1.176-1.911,1.405 c-6.176,1.767-12.927,1.488-18.933-0.776c-0.959-0.362-1.962-0.826-2.476-1.706c-0.34-0.576-0.437-1.242-0.417-1.919 c0.015-0.434,0.077-0.867,0.161-1.283c0.353-1.785,0.617-3.671,0.624-5.55c0.01-2.627-0.478-5.238-1.913-7.538 c-1.757-2.819-4.794-4.957-5.549-8.184l-0.345-0.061c1.824-1.024,3.436-2.31,4.398-4.128c1.66-3.134,0.908-6.962-0.23-10.319 c-1.136-3.354-2.638-6.744-2.356-10.273c0.279-3.519,2.476-6.833,5.626-8.486c2.64-1.387,5.72-1.608,8.695-1.879 c5.423-0.497,10.949-1.291,15.866-3.552l0.026,0.056c1.609,0.953,2.604,2.705,3.039,4.513c0.437,1.805,0.384,3.689,0.327,5.545 c-0.015,0.482-0.028,0.953-0.041,1.417l-0.248,0.076c-1.361-2.401-4.638-3.785-9.102-3.785c-5.95,0-10.159,2.459-10.159,6.151 c0,4.095,4.208,6.019,10.159,6.019c1.497,0,2.863-0.099,4.065-0.314c2.489-0.441,4.29-1.374,5.152-2.933 c-0.041,1.696-0.084,3.41-0.14,5.279l0.179,0.005l-0.057,0.365c-1.34-0.2-3-0.048-5.362,0.231 c-1.639,0.195-2.578,0.066-3.402-0.185c-0.003,0-0.005-0.003-0.005-0.003c-0.591-0.302-1.264-0.535-2-0.712 C95.186,44.293,95.185,44.292,95.181,44.29z M105.381,71.53c0,0-4.787-6.354-7.856-6.262c-2.274,0.066-2.852,0.928-2.886,0.981 c0.018-0.114,0.509-3.004-3.344-3.577c-4.426-0.657-8.399,0.089-8.399,0.089c0.005,0.02,0.015,0.089,0.036,0.203 c0.233,1.326,1.717,8.602,8.452,10.626C98.632,75.767,105.327,71.51,105.381,71.53z" class="st4"/><path d="M108.067,168.191l0.314,0.289c-3.415,3.582-7.572,6.186-13.172,7.37l-0.015-0.251 c0.095-1.296-0.532-2.621-1.599-3.377c-0.558-0.396-1.233-0.654-1.668-1.179c-0.504-0.611-0.586-1.481-0.402-2.249 c0.087-0.37,0.23-0.73,0.269-1.11c0.038-0.378-0.046-0.799-0.34-1.045l-0.031-0.177c4.743-0.873,7.716-3.152,9.885-5.789 l0.133,0.107c0.698,0.117,1.31,0.657,1.507,1.333c0.209,0.715,0.002,1.572,0.468,2.156c0.471,0.588,1.353,0.573,2.087,0.758 C106.926,165.379,108.026,166.738,108.067,168.191z" class="st1"/><path d="M105.974,39.313c-0.862,1.559-2.663,2.492-5.152,2.933c-2.039-0.73-3.492-2.665-3.492-4.936v-0.089h5.508 l-4.306-3.162l-0.026-0.051c0.972-1.189,2.456-1.947,4.119-1.947c1.662,0,2.775,1.24,3.415,2.469 c0.335,0.71,0.511,1.503,0.511,2.368C106.552,37.833,106.353,38.634,105.974,39.313z" class="st3"/><path d="M105.859,34.177c0.063,0.114,0.125,0.233,0.181,0.355c-0.639-1.23-1.711-2.47-3.415-2.47 s-3.147,0.758-4.119,1.947l0.026,0.051l4.305,3.162h-5.508v0.089c0,2.272,1.453,4.206,3.492,4.936 c-1.202,0.215-2.568,0.314-4.065,0.314c-5.951,0-10.159-1.924-10.159-6.019c0-3.691,4.208-6.151,10.159-6.151 C101.22,30.391,104.498,31.776,105.859,34.177z" class="st8"/><path d="M99.993,49.845c0,0.038,0,0.079,0,0.117c-0.044,2.834-1.719,4.399-4.29,5.205 c-0.724,0.228-1.517,0.396-2.366,0.515l-0.005-0.046c-2.062-0.72-3.538-2.665-3.538-4.954v-0.091h5.505l-4.303-3.162l-0.025-0.048 c0.972-1.189,2.456-1.95,4.119-1.95c2.09,0,3.896,1.199,4.758,2.941c0.097,0.449,0.148,0.938,0.148,1.473H99.993z" class="st3"/><path d="M99.844,48.372c-0.862-1.742-2.668-2.941-4.758-2.941c-1.663,0-3.147,0.761-4.119,1.95l0.026,0.048 l4.303,3.162h-5.505v0.091c0,2.289,1.476,4.234,3.538,4.954l0.005,0.046c-1.269,0.177-2.658,0.248-4.116,0.248 c-5.95,0-10.775-1.374-10.775-6.085c0-5.342,4.825-6.085,10.775-6.085c2.205,0,4.257,0.117,5.963,0.53 c0,0,0.002,0.001,0.005,0.003c0.785,0.248,1.358,0.517,2.001,0.712c0,0,0,0.003,0.005,0.003 C98.553,45.705,99.497,46.767,99.844,48.372z" class="st8"/><path d="M94.639,66.249c0.033-0.053,0.611-0.915,2.886-0.981c3.07-0.091,7.857,6.262,7.857,6.262 c-14.539,0-22.303-8.59-22.303-8.59l-0.146,0.023c-0.021-0.114-0.031-0.182-0.036-0.203c0,0,3.973-0.745,8.399-0.089 C95.148,63.245,94.657,66.135,94.639,66.249z" class="st6"/><path d="M105.381,71.53c-0.054-0.02-6.749,4.237-13.996,2.059c-6.736-2.023-8.22-9.3-8.452-10.626l0.146-0.023 C83.078,62.94,90.843,71.53,105.381,71.53z" class="st6"/><path d="M95.194,175.599l0.015,0.251c-3.221,0.682-6.92,0.895-11.228,0.555c-1.97-0.154-3.799-0.459-5.498-0.882 l0.061-0.256c0.041,0,0.082-0.038,0.11-0.074c0.404-0.504,0.632-1.148,0.632-1.795c0.003-0.994-0.504-2.025-0.128-2.948 c0.376-0.916,1.461-1.321,2.07-2.102c0.445-0.571,0.611-1.346,0.435-2.049l0.015-0.058c1.445,0.347,2.996,0.555,4.651,0.591 c1.898,0.04,3.587-0.094,5.093-0.37l0.031,0.177c0.294,0.246,0.379,0.667,0.34,1.045c-0.038,0.38-0.182,0.74-0.269,1.11 c-0.184,0.768-0.102,1.638,0.402,2.249c0.435,0.525,1.11,0.783,1.668,1.179C94.662,172.977,95.288,174.303,95.194,175.599z" class="st1"/><path d="M90.622,141.227c0.675,1.58-0.074,2.873-1.671,2.873H86.33l-0.276-0.023c0-0.051,0.005-0.102,0.005-0.155 v-0.048h0.043c0.852-0.439,1.146-1.463,0.64-2.647l-13.981-32.643c-0.673-1.564-2.502-2.849-4.088-2.872h3.837 c1.594,0,3.454,1.293,4.132,2.872l1.251,2.921L90.622,141.227z" class="st5"/><path d="M86.742,141.227c0.507,1.184,0.212,2.208-0.64,2.647h-0.043c-0.018-1.663-0.918-2.277-2.438-2.277h-1.52 v-0.015c0,0,2.167-0.269,2.167-1.97s-0.903-2.325-2.438-2.325H68.721v-0.076l9.176-9.152c0,0,1.34-1.707,0.128-2.911 c-1.213-1.202-2.297-1.012-3.382,0.063c-1.085,1.075-10.284,9.898-10.86,10.451l-0.028-0.058 c-0.084-0.155-2.638-6.045-3.431-7.878c-0.317-0.94-0.993-1.648-1.896-1.719l0.008-0.164l-4.771-11.138l1.369-0.576 c0.396,0.928,1.479,1.681,2.415,1.681c0.936,0,1.374-0.753,0.975-1.681c-0.397-0.928-1.479-1.681-2.415-1.681 c-0.131,0-0.253,0.016-0.363,0.043l-0.473-1.351c0.936,0,1.371-0.753,0.975-1.681c-0.396-0.928-1.479-1.681-2.415-1.681 c-0.936,0-1.374,0.753-0.975,1.681l-1.133,0.477l-0.578-1.352c-0.678-1.579,0.072-2.872,1.668-2.872h15.958 c1.586,0.023,3.415,1.308,4.088,2.872L86.742,141.227z M59.504,120.706c0.936,0,1.374-0.753,0.977-1.681 c-0.397-0.928-1.479-1.681-2.415-1.681c-0.936,0-1.374,0.753-0.977,1.681C57.488,119.953,58.568,120.706,59.504,120.706z" class="st2"/><path d="M68.722,137.287H81.83c1.535,0,2.438,0.626,2.438,2.325s-2.167,1.97-2.167,1.97v0.015h1.52 c1.52,0,2.42,0.614,2.438,2.277v0.048c0,0.054-0.003,0.104-0.005,0.155c-0.128,1.564-2.162,1.815-2.162,1.815H45.79l-0.217-0.023 c0.105-1.049,0.189-2.122,0.258-3.209c0.015-0.264,0.033-0.53,0.049-0.796c0.125-2.092,0.473-3.667,0.885-4.835l0.018,0.005h9.66 c3.702,0,1.896-2.777,1.896-2.777s-1.264-2.682-2.075-4.383c-0.151-0.315-0.266-0.631-0.333-0.943 c-0.23-1.052,0.059-2.039,1.236-2.637c0.455-0.231,0.88-0.314,1.264-0.287c0.903,0.071,1.578,0.779,1.896,1.719 c0.793,1.833,3.346,7.723,3.431,7.875l0.028,0.061c0.576-0.553,9.806-9.406,10.86-10.451c1.054-1.044,2.169-1.265,3.382-0.063 c1.213,1.204-0.128,2.911-0.128,2.911l-9.176,9.152V137.287z" class="st4"/><path d="M78.545,175.267l-0.061,0.256c-5.27-1.313-9.291-3.783-12.405-6.567c0.895-0.243,1.658-0.938,1.967-1.807 c0.366-1.027,0.118-2.186,0.425-3.233c0.468-1.6,2.154-2.591,3.819-2.829l0.044-0.046c2.487,2.396,5.567,4.287,9.345,5.2 l-0.015,0.058c0.176,0.703,0.01,1.478-0.435,2.049c-0.609,0.781-1.693,1.186-2.07,2.102c-0.376,0.923,0.131,1.954,0.128,2.948 c0,0.647-0.228,1.291-0.632,1.795C78.627,175.229,78.586,175.267,78.545,175.267z" class="st1"/><path d="M72.334,161.041l-0.044,0.046c-1.665,0.238-3.351,1.229-3.819,2.829c-0.307,1.047-0.059,2.206-0.425,3.233 c-0.31,0.869-1.072,1.564-1.967,1.807c-3.981-3.557-6.472-7.628-8.191-10.448c-0.164-0.269-0.325-0.537-0.481-0.811l0.271-0.152 c0.228-0.36,0.563-0.654,0.954-0.829c1.026-0.459,2.21-0.084,3.313,0.144c1.103,0.231,2.466,0.206,3.09-0.725 c0.325-0.484,0.356-1.095,0.466-1.668c0.11-0.571,0.366-1.189,0.908-1.407l0.225-0.066c0.202,0.385,0.417,0.791,0.645,1.219 c0.548,1.027,1.159,2.039,1.837,3.017C70.054,158.584,71.123,159.872,72.334,161.041z" class="st1"/><path d="M60.693,104.472c4.746,0,10.478-3.341,10.376-3.144c0,0-1.53,1.94-2.397,4.244v0.14h-7.979V104.472z" class="st4"/><path d="M66.634,152.994l-0.225,0.066c-0.542,0.218-0.798,0.836-0.908,1.407c-0.11,0.573-0.141,1.184-0.466,1.668 c-0.624,0.931-1.988,0.956-3.09,0.725c-1.103-0.228-2.287-0.603-3.313-0.144c-0.391,0.175-0.727,0.469-0.954,0.829l-0.271,0.152 c-1.484-2.553-2.735-5.284-3.65-7.462l0.138-0.058c0.959,0.165,2.021,0.314,2.847-0.198c0.719-0.443,1.077-1.288,1.706-1.851 c0.443-0.398,1.003-0.641,1.499-0.973c0.496-0.33,0.732-0.555,0.801-1.144v-0.119h2.558v0.178 C63.961,147.449,64.69,149.269,66.634,152.994z" class="st1"/><path d="M60.748,145.892v0.119c-0.069,0.589-0.304,0.814-0.801,1.144c-0.496,0.332-1.056,0.575-1.499,0.973 c-0.629,0.563-0.987,1.408-1.706,1.851c-0.826,0.512-1.888,0.363-2.847,0.198l-0.138,0.058c-1.044-2.482-1.648-4.254-1.648-4.254 v-0.089H60.748z" class="st1"/><path d="M26.953,131.24c-1.896,1.286-3.482,2.368-4.551,3.109c-0.461,0.312-0.803,0.593-1.054,0.847 c-1.325,1.331-0.008,1.838,1.054,1.838h13.725l0.069,0.012c-0.061,0.371-0.115,0.753-0.159,1.149 c-0.153,1.285-0.279,2.497-0.394,3.628c-0.153,1.498-0.289,2.86-0.445,4.069H8.316c0,0-2.978-0.091-4.694-3.76 c-1.714-3.668,2.799-7.157,2.799-7.157l11.898-8.308l2.84-1.98l6.155-4.3l27.685-19.327l0.143-0.059 c0.107,0.272,0.238,0.561,0.397,0.865c1.118,1.942,3.037,2.606,5.155,2.606v1.24h-7.979c-1.596,0-2.346,1.293-1.668,2.872 l0.578,1.352l1.584,3.696l-0.108,0.046C53.1,113.678,36.27,124.922,26.953,131.24z" class="st4"/><path d="M60.481,119.025c0.397,0.928-0.041,1.681-0.977,1.681c-0.936,0-2.016-0.753-2.415-1.681 c-0.396-0.928,0.041-1.681,0.977-1.681C59.002,117.344,60.084,118.097,60.481,119.025z" class="st3"/><path d="M58.424,114.129c0.399,0.928-0.038,1.681-0.975,1.681c-0.936,0-2.018-0.753-2.415-1.681 c-0.343-0.798-0.069-1.465,0.611-1.638c0.11-0.027,0.233-0.043,0.363-0.043C56.945,112.448,58.028,113.201,58.424,114.129z" class="st3"/><path d="M58.337,134.258c0,0,1.806,2.776-1.896,2.776h-6.549v-0.165c0.678-0.071,0.993-0.842,1.346-1.42 c0.483-0.788,1.246-1.359,1.993-1.901c0.75-0.543,1.522-1.096,2.039-1.859c0.517-0.763,0.732-1.8,0.289-2.609l0.161-0.101 l0.21-0.048c0.066,0.312,0.182,0.628,0.333,0.943C57.074,131.575,58.337,134.258,58.337,134.258z" class="st1"/><path d="M56.148,109.459c0.397,0.928-0.038,1.681-0.975,1.681c-0.936,0-2.019-0.753-2.415-1.681 c-0.399-0.928,0.038-1.681,0.975-1.681C54.669,107.778,55.751,108.531,56.148,109.459z" class="st3"/><path d="M56.051,67.623c2.228,4.951,0.542,10.441-5.536,15.511c-6.081,5.071-11.438,7.277-16.736,9.008l-0.09,0.058 c-0.486,0.677-0.939,1.379-1.358,2.107l-1.427-0.479c0.706-1.285,1.282-2.551,1.673-3.537l0.041-0.327 c3.272,0.413,5.817-2.535,7.844-6.234c2.287-4.176,2.891-6.742,2.891-6.742l-0.013-0.096c2.901-0.32,5.157-2.758,5.157-5.72 c0-2.315-1.379-4.31-3.364-5.223l0.084-0.175C45.217,65.775,53.825,62.672,56.051,67.623z" class="st1"/><path d="M47.465,135.467l-0.438-0.36c0,0-0.01,0-0.015,0c-0.1-0.026-0.12-0.155-0.133-0.256 c-0.097-0.715-0.778-1.192-1.425-1.521c-0.647-0.328-1.371-0.634-1.724-1.263c-0.184-0.33-0.246-0.713-0.412-1.052 c-0.327-0.67-1.051-1.093-1.793-1.212c-0.732-0.117-1.484,0.025-2.19,0.256c3.262-3.61,7.861-3.851,9.253-3.851 c5.237,0,7.132,2.773,7.132,2.773l-0.161,0.102c0.443,0.809,0.228,1.846-0.289,2.609c-0.517,0.763-1.289,1.316-2.039,1.858 c-0.747,0.543-1.509,1.113-1.993,1.902c-0.353,0.578-0.668,1.348-1.346,1.419v0.165h-3.111l-0.018-0.005 c0.223-0.631,0.466-1.146,0.701-1.562V135.467z" class="st1"/><path d="M55.173,111.14l0.473,1.351c-0.681,0.173-0.954,0.84-0.611,1.638l-1.369,0.576l-0.458-1.073l-1.583-3.696 l1.133-0.477C53.155,110.387,54.237,111.14,55.173,111.14z" class="st2"/><path d="M45.132,65.95c1.985,0.913,3.364,2.908,3.364,5.223c0,2.961-2.256,5.4-5.157,5.72 c-0.212,0.025-0.43,0.038-0.65,0.038c-2.489,0-4.61-1.552-5.439-3.729l-0.092-0.129c1.489-1.039,2.461-2.758,2.461-4.703 c0-0.449-0.051-0.887-0.151-1.306l0.228-0.051c0.402,0.089,0.819,0.134,1.246,0.134c1.404,0,2.691-0.492,3.697-1.313l0.24,0.005 C44.963,65.874,45.05,65.909,45.132,65.95z" class="st8"/><path d="M47.028,135.107l0.438,0.36c-0.235,0.416-0.478,0.93-0.701,1.562c-0.412,1.168-0.76,2.743-0.885,4.834 c-0.015,0.267-0.033,0.533-0.049,0.797l-0.361-0.023c-0.478-0.31-1.11-0.261-1.655-0.086c-0.542,0.175-1.046,0.464-1.596,0.611 c-0.729,0.195-1.525,0.129-2.21-0.18c-0.714-0.322-1.289-0.89-1.985-1.248c-0.696-0.36-1.648-0.454-2.19,0.109l-0.189-0.02 c0.115-1.131,0.24-2.343,0.394-3.628c0.044-0.396,0.097-0.779,0.159-1.149c0.53-3.161,1.704-5.4,3.139-6.99 c0.706-0.23,1.458-0.372,2.19-0.256c0.742,0.119,1.466,0.543,1.793,1.212c0.166,0.34,0.228,0.723,0.412,1.052 c0.353,0.629,1.077,0.936,1.724,1.263c0.647,0.33,1.328,0.806,1.425,1.521c0.013,0.102,0.033,0.231,0.133,0.256 c0.005,0,0.01,0,0.015,0V135.107z" class="st1"/><path d="M44.638,150.907c0,0.051-0.325,0.205-0.264,0.114c-1.075,0.193-1.302,0.794-2.244,1.339 c-1.251,0.725-2.924,0.816-4.121,0.005c-0.616-0.418-1.067-1.029-1.614-1.529c-0.548-0.502-1.282-0.91-2.011-0.763l-0.059-0.023 c0.399-1.077,0.657-2.474,0.872-4.158c0.156-1.209,0.292-2.571,0.445-4.069l0.189,0.02c0.542-0.563,1.494-0.469,2.19-0.109 c0.696,0.358,1.271,0.926,1.985,1.248c0.686,0.309,1.481,0.375,2.21,0.18c0.55-0.147,1.054-0.436,1.596-0.611 c0.545-0.175,1.177-0.224,1.655,0.086l0.361,0.023c-0.069,1.087-0.154,2.16-0.258,3.209c-0.177,1.77-0.417,3.476-0.778,5.074 L44.638,150.907z" class="st1"/><path d="M35.236,62.449c-0.069-0.342-0.102-0.697-0.102-1.06c0-3.179,2.599-5.755,5.807-5.755s5.81,2.576,5.81,5.755 c0,1.787-0.824,3.387-2.113,4.444c-1.005,0.822-2.292,1.313-3.697,1.313c-0.427,0-0.844-0.046-1.246-0.134l-0.228,0.051 c-0.514-2.193-2.292-3.907-4.533-4.341l0.041-0.233l0.008,0.005L35.236,62.449z" class="st8"/><path d="M44.638,150.907l0.156,0.036c-1.448,6.46-4.799,11.145-13.454,11.145c-0.146,0-0.292-0.002-0.435-0.005 l0.005-0.314c0.719-1.258,0.785-2.863,0.171-4.176c-0.335-0.71-0.854-1.346-1.018-2.112c-0.246-1.133,0.458-2.393,1.558-2.794 l-0.008-0.053c1.348-0.221,2.164-1.106,2.712-2.584l0.059,0.023c0.729-0.147,1.463,0.261,2.011,0.763 c0.547,0.5,0.998,1.111,1.614,1.529c1.197,0.811,2.87,0.72,4.121-0.005c0.941-0.545,1.169-1.146,2.244-1.339 C44.313,151.113,44.638,150.958,44.638,150.907z" class="st1"/><path d="M43.338,76.892l0.013,0.096c0,0-0.604,2.566-2.891,6.742c-2.026,3.699-4.572,6.648-7.844,6.234 c-0.422-0.051-0.857-0.16-1.305-0.33c-0.512-0.195-0.939-0.439-1.292-0.72c-2.336-1.871-1.371-5.449-0.274-7.989 c1.264-2.923,2.469-6.98,2.469-6.98l0.01-0.038c0.504,0.142,1.034,0.218,1.584,0.218c1.246,0,2.402-0.39,3.349-1.055l0.092,0.129 c0.829,2.178,2.95,3.729,5.439,3.729C42.908,76.93,43.126,76.918,43.338,76.892z" class="st1"/><path d="M39.468,67.063c0.1,0.418,0.151,0.857,0.151,1.306c0,1.945-0.972,3.664-2.461,4.703 c-0.946,0.664-2.103,1.055-3.349,1.055c-0.55,0-1.08-0.076-1.583-0.218c-2.438-0.682-4.224-2.906-4.224-5.54 c0-3.179,2.599-5.755,5.807-5.755c0.384,0,0.762,0.038,1.126,0.109C37.176,63.156,38.954,64.87,39.468,67.063z" class="st8"/><path d="M23.563,92.242l-0.077-0.041c0,0-4.454-2.923-9.391-8.59c-3.794-4.356-8.051-12.803-6.122-20.027 c0.578-2.173,1.717-4.237,3.594-6.042c8.03-7.723,23.05,4.65,23.408,4.946l-0.041,0.233c-0.363-0.071-0.742-0.109-1.126-0.109 c-3.208,0-5.807,2.576-5.807,5.755c0,2.634,1.786,4.858,4.224,5.54l-0.01,0.038c0,0-1.205,4.057-2.469,6.98 c-1.098,2.54-2.062,6.118,0.274,7.989l-0.123,0.155c-1.005,2.251-2.052,4.556-3.599,6.303l-0.082-0.071 c-0.494-0.52-1.008-1.052-1.67-1.339c-0.617-0.266-1.402-0.264-1.911,0.155C22.921,93.484,23.231,92.86,23.563,92.242z" class="st1"/><path d="M10.286,110.44c0.223-0.129,0.438-0.273,0.622-0.441C10.736,110.121,10.534,110.283,10.286,110.44z M29.212,96.519c-0.246,0.337-0.499,0.662-0.76,0.963c-1.822,2.125-3.835,3.2-6.59,3.758c-0.553,0.111-1.123,0.197-1.712,0.238 c-1.33,0.101-2.747-0.013-4.249-0.507c-1.361-0.449-2.336-0.875-3.709-1.293c-1.371-0.418-2.904-0.573-4.211,0.013 c-1.1,0.495-1.919,1.458-2.512,2.5c-0.665,1.167-1.097,2.505-0.98,3.841c0.118,1.339,0.857,2.66,2.062,3.271 c1.187,0.603,1.985,0.327,2.873-0.368l-0.023-0.03c0.45-0.385,0.657-0.55,0.934-0.654c0.54-0.211,0.883,0.19,1.023,0.446 c0.064,0.119,0.151,0.299,0.028,0.626c-0.095,0.264-0.264,0.482-0.471,0.672c0.113-0.078,0.21-0.139,0.297-0.17 c0.279-0.091,0.668-0.043,0.808,0.216c0.064,0.119,0.133,0.37,0.12,0.507c-0.059,0.54-0.44,0.973-0.9,1.29 c-0.079,0.054-0.161,0.104-0.243,0.15c-1.425,0.824-3.74,1.181-5.784,0.286c-2.192-0.96-3.663-3.209-3.986-5.565 c-0.322-2.355,0.404-4.774,1.686-6.782c0.458-0.715,0.99-1.392,1.637-1.942c2.305-1.957,5.73-2.036,8.652-1.219 c2.203,0.616,4.326,1.681,6.613,1.721c0.435,0.008,0.849-0.015,1.243-0.063c1.862-0.238,3.326-1.116,4.776-2.553 c0.161-0.16,0.317-0.325,0.463-0.497c1.548-1.747,2.594-4.052,3.6-6.303l0.123-0.155c0.353,0.281,0.78,0.525,1.292,0.72 c0.448,0.17,0.883,0.279,1.305,0.33l-0.041,0.327c-0.391,0.986-0.967,2.251-1.673,3.537 C30.399,94.746,29.829,95.677,29.212,96.519z" class="st9"/><path d="M30.903,93.829l1.427,0.479c-0.471,0.821-0.9,1.676-1.294,2.573l-0.02-0.01 c-0.645,0.16-1.256,0.018-1.804-0.352C29.828,95.677,30.399,94.746,30.903,93.829z" class="st1"/><path d="M31.614,152.634l0.008,0.053c-1.1,0.401-1.804,1.661-1.558,2.794c0.164,0.766,0.683,1.402,1.018,2.112 c0.614,1.313,0.547,2.918-0.171,4.176l-0.005,0.314c-8.752-0.193-11.504-6.237-12.361-11.148l0.187-0.033 c0.34-0.654,0.655-0.616,1.392-0.707c0.737-0.092,1.491,0.127,2.126,0.509c0.535,0.325,0.998,0.766,1.563,1.035 c1.358,0.644,3.016,0.012,3.707-1.314l0.059-0.022c0.609,1.475,1.668,2.289,3.313,2.289 C31.148,152.692,31.389,152.674,31.614,152.634z" class="st1"/><path d="M31.015,96.871l0.02,0.01c-1.189,2.72-2.036,5.831-2.64,9.505l-0.212-0.035 c-1.149,0.88-2.916,0.849-4.034-0.071c-1.044-0.862-1.612-2.404-2.939-2.69c-0.468-0.099-0.975-0.01-1.379,0.248l-0.11-0.02 c0.136-0.761,0.281-1.493,0.44-2.208l-0.01-0.132c0.588-0.041,1.159-0.127,1.711-0.239c2.755-0.557,4.769-1.632,6.59-3.757 c0.261-0.302,0.514-0.626,0.76-0.963C29.759,96.889,30.371,97.031,31.015,96.871z" class="st1"/><path d="M28.184,106.351l0.212,0.035c-0.461,2.807-0.778,5.943-0.998,9.488c-0.709,0.824-1.816,1.272-2.911,1.3 c-1.167,0.033-2.315-0.37-3.303-0.984c-0.399-0.245-0.778-0.529-1.213-0.704s-0.947-0.231-1.364-0.018H18.55 c0.225-4.526,0.586-8.321,1.172-11.65l0.11,0.02c0.404-0.258,0.911-0.347,1.379-0.248c1.328,0.286,1.896,1.828,2.939,2.69 C25.268,107.2,27.035,107.23,28.184,106.351z" class="st1"/><path d="M27.577,150.403l-0.059,0.022c-0.691,1.326-2.348,1.958-3.707,1.314c-0.565-0.269-1.028-0.71-1.563-1.035 c-0.634-0.383-1.389-0.601-2.126-0.509c-0.737,0.091-1.051,0.053-1.392,0.707l-0.187,0.033c-0.34-1.945-0.384-3.712-0.384-4.865 v-0.178h8.757v0.089C26.917,147.791,27.119,149.287,27.577,150.403z" class="st1"/><path d="M27.314,120.386l-6.155,4.3l-0.138-0.192c-1.039,0.018-2.07-0.535-2.62-1.41h-0.105 c0.059-2.758,0.138-5.286,0.253-7.619h0.059c0.417-0.21,0.929-0.154,1.364,0.021s0.813,0.459,1.213,0.704 c0.988,0.614,2.136,1.017,3.303,0.984c1.095-0.028,2.203-0.476,2.911-1.3c-0.084,1.381-0.153,2.824-0.212,4.332L27.314,120.386z" class="st1"/><path d="M26.953,131.24c-0.008,1.037-0.015,2.102-0.02,3.19h-0.141c-1.517,1.128-3.615,1.443-5.4,0.809l-0.043-0.043 c0.251-0.254,0.594-0.535,1.054-0.847C23.471,133.608,25.057,132.526,26.953,131.24z" class="st1"/><path d="M26.792,134.43h0.141c-0.005,0.852-0.008,1.719-0.01,2.601c-2.392,0.003-4.065,0.003-4.52,0.003 c-1.062,0-2.379-0.507-1.054-1.838l0.043,0.043C23.177,135.872,25.275,135.558,26.792,134.43z" class="st1"/><path d="M26.217,95.302l0.082,0.071c-0.146,0.172-0.302,0.337-0.463,0.497c-1.451,1.438-2.914,2.315-4.776,2.553 l-0.015-0.147c0.455-1.453,0.98-2.827,1.591-4.158c0.509-0.418,1.294-0.421,1.911-0.155 C25.209,94.249,25.723,94.782,26.217,95.302z" class="st1"/><path d="M21.021,124.494l0.138,0.193l-2.84,1.98l-0.079-0.112c0.015-1.197,0.036-2.353,0.056-3.473h0.105 C18.951,123.959,19.982,124.512,21.021,124.494z" class="st1"/><path d="M10.908,109.999c-0.184,0.167-0.399,0.312-0.622,0.441C10.534,110.283,10.736,110.121,10.908,109.999z" class="st9"/><path d="M106.102,19.72c0,0,0.01-0.013,0.013-0.02c2.891-4.295,1.402-10.917-2.507-14.33 c-3.917-3.42-9.458-4.439-14.672-4.193C84.04,1.41,78.698,2.999,76.204,7.183c-1.435,2.409-1.724,5.365-3.2,7.751 c-1.788,2.885-5.042,4.521-8.227,5.748c-3.185,1.225-6.552,2.231-9.189,4.381c-4.226,3.446-5.782,9.746-3.64,14.733 c1.225,2.855,3.454,5.157,5.019,7.842c1.875,3.217,2.763,6.987,2.52,10.694c-0.184,2.784-0.982,5.616-0.271,8.313 c1.128,4.282,6.493,6.891,10.599,5.157" class="st10"/><path d="M106.169,19.735c3.535,0.55,6.513,3.628,6.917,7.152c0.389,3.397-1.368,6.643-3.157,9.566 c-1.785,2.926-3.645,5.727-3.916,8.144" class="st10"/><path d="M104.413,21.738c-0.545,0.299-1.097,0.576-1.658,0.832c-4.916,2.261-10.442,3.055-15.866,3.552 c-2.975,0.271-6.055,0.492-8.695,1.879c-3.149,1.653-5.347,4.967-5.626,8.486c-0.281,3.529,1.22,6.919,2.356,10.273 c1.138,3.357,1.891,7.185,0.23,10.319c-0.962,1.818-2.574,3.103-4.398,4.128c-1.246,0.702-2.594,1.28-3.899,1.823" class="st10"/><path d="M69.84,71.781c0,0,0.003,0.013,0.003,0.018c0.212,1.478-0.243,3.037-1.213,4.178 c-0.977,1.146-2.458,1.851-3.97,1.889c2.781,1.204,6.035,0.761,8.332-1.207c-0.161,2.513-2.246,4.229-4.733,4.751 c3.868,1.42,8.498-1.648,10.215-4.422" class="st10"/><path d="M71.103,61.267c0.755,3.228,3.791,5.365,5.549,8.184c1.435,2.299,1.924,4.911,1.914,7.538 c-0.008,1.879-0.271,3.765-0.624,5.55c-0.084,0.416-0.146,0.849-0.161,1.283c-0.021,0.677,0.077,1.344,0.417,1.919 c0.514,0.88,1.517,1.344,2.476,1.706c6.007,2.264,12.758,2.543,18.933,0.776c0.801-0.228,1.704-0.606,1.911-1.405 c0.095-0.37,0.016-0.761-0.066-1.133c-0.082-0.385-0.19-0.801-0.305-1.247c-0.279-1.1-0.603-2.378-0.734-3.78" class="st10"/><path d="M94.078,78.614c1.075,1.207,2.771,1.653,4.385,1.838c0.637,0.073,1.292,0.109,1.947,0.096 c2.256-0.043,4.507-0.654,6.04-2.241c2.348-2.429,2.264-6.217,2.031-9.571c-0.169-2.444-0.34-4.888-0.509-7.33" class="st10"/><path d="M62.855,57.147c3.446-0.2,7.455-1.97,9.568-4.675" class="st10"/><path d="M61.602,49.516c3.425-0.497,6.654-2.231,8.946-4.802" class="st10"/><path d="M56.892,41.471c4.861,0.066,10.115-2.601,12.643-6.539" class="st10"/><path d="M57.564,26.059c5.326-2.622,11.909-2.581,17.204,0.112" class="st10"/><path d="M77.854,14.797c5.526,0.449,8.534,5.7,9.384,7.728" class="st10"/><path d="M81.085,7.203c4.942,0.408,13.49,6.252,15.111,13.78" class="st10"/><path d="M91.238,4.594c5.797,2.114,10.177,7.624,10.896,13.704" class="st10"/><path d="M105.976,39.225c0,0.03-0.002,0.058-0.002,0.089c-0.041,1.696-0.085,3.41-0.141,5.279 c0,0.03,0,0.063,0,0.094" class="st10"/><path d="M102.781,22.626c1.609,0.953,2.605,2.705,3.039,4.513c0.438,1.805,0.384,3.689,0.328,5.545 c-0.015,0.482-0.028,0.953-0.041,1.417" class="st10"/><path d="M100.113,49.964c0.806,0.228,1.599,0.459,2.387,0.69c2.515,0.738,4.958,1.483,7.434,2.193 c1.99,0.57,4.004,1.118,6.094,1.623c3.586,0.865,4.587,3.641-0.023,4.683c-3.387,0.766-5.805,1.268-8.138,1.681 c-2.394,0.429-4.702,0.766-7.877,1.212c-1.195,0.167-2.435,0.319-3.582-0.048c-1.146-0.37-2.625-1.544-2.796-2.725 c-0.118-0.801-0.241-2.624,1.926-3.58c0.087-0.038,0.189-0.076,0.299-0.111c1.031-0.325,2.993-0.411,4.214,1.364" class="st10"/><path d="M97.192,45.008c1.361,0.697,2.305,1.76,2.653,3.364c0.097,0.449,0.148,0.938,0.148,1.473 c0,0.038,0,0.079,0,0.117c-0.044,2.835-1.719,4.399-4.29,5.205c-0.724,0.228-1.517,0.396-2.366,0.515 c-1.269,0.177-2.658,0.248-4.116,0.248c-5.95,0-10.775-1.374-10.775-6.085c0-5.342,4.825-6.085,10.775-6.085 c2.205,0,4.257,0.117,5.963,0.53" class="st10"/><path d="M95.187,44.293c0.737,0.177,1.41,0.411,2.001,0.712" class="st10"/><path d="M93.329,55.636c-2.062-0.72-3.538-2.665-3.538-4.954" class="st10"/><path d="M90.968,47.381c0.972-1.189,2.456-1.95,4.119-1.95c2.09,0,3.896,1.199,4.758,2.941 c0.026,0.051,0.051,0.104,0.074,0.155" class="st10"/><path d="M90.993,47.429l4.303,3.162h-5.505" class="st10"/><path d="M110.518,48.081c0.025,0.094,0.048,0.19,0.069,0.289c0.1,0.449,0.151,0.938,0.151,1.476 c0,1.181-0.279,2.148-0.783,2.931" class="st10"/><path d="M101.712,47.381c0.972-1.189,2.456-1.95,4.119-1.95c1.082,0,2.087,0.322,2.924,0.872 c0.78,0.515,1.414,1.227,1.831,2.066c0.029,0.053,0.054,0.104,0.077,0.157" class="st10"/><path d="M101.737,47.429l4.303,3.162h-3.52" class="st10"/><path d="M78.384,45.669c0.768-0.312,2.671-2.393,12.64-2.013c1.993,0.076,3.223,0.34,4.157,0.634 c0,0,0.002,0.001,0.005,0.003c0.785,0.248,1.358,0.517,2,0.712c0,0,0,0.003,0.005,0.003c0.824,0.251,1.763,0.38,3.402,0.185 c2.362-0.279,4.022-0.431,5.362-0.231c1.088,0.162,1.96,0.558,2.825,1.306" class="st10"/><path d="M106.04,34.532c0.335,0.71,0.512,1.503,0.512,2.368c0,0.933-0.2,1.734-0.578,2.414 c-0.862,1.559-2.663,2.492-5.153,2.933c-1.202,0.215-2.568,0.314-4.065,0.314c-5.951,0-10.159-1.924-10.159-6.019 c0-3.691,4.208-6.151,10.159-6.151c4.464,0,7.742,1.384,9.103,3.785C105.922,34.291,105.984,34.41,106.04,34.532z" class="st10"/><path d="M100.868,42.265c-0.015-0.005-0.031-0.01-0.046-0.018c-2.039-0.73-3.492-2.665-3.492-4.936" class="st10"/><path d="M98.507,34.009c0.972-1.189,2.456-1.947,4.119-1.947c1.662,0,2.775,1.24,3.415,2.469 c0.171,0.322,0.309,0.641,0.422,0.938" class="st10"/><path d="M98.532,34.06l4.306,3.162H97.33" class="st10"/><path d="M94.636,66.252h0.003c0.033-0.056,0.611-0.918,2.886-0.984c3.07-0.091,7.857,6.262,7.857,6.262 c-0.054-0.02-6.749,4.237-13.996,2.059c-6.736-2.023-8.22-9.3-8.452-10.626c-0.021-0.114-0.031-0.182-0.036-0.203 c0,0,3.973-0.745,8.399-0.089c3.853,0.573,3.362,3.463,3.344,3.577" class="st10"/><path d="M83.078,62.94c0,0,7.764,8.59,22.303,8.59" class="st10"/><path d="M80.576,93.423c-0.015,0.015-0.036,0.033-0.059,0.053c-0.962,0.9-7.112,6.955-0.599,9.105 c5.416,1.79,8.667-5.19,9.749-7.964c-0.45,2.505-0.361,11.097,5.329,10.38c5.597-0.715,4.694-5.279,3.612-10.737 c1.988,7.408,7.194,9.609,10.197,6.792c0.407-0.38,0.775-0.857,1.087-1.422c2.438-5.281-6.679-7.966-8.667-15.212" class="st10"/><path d="M77.752,83.522c0,0,0.005,0.112-0.01,0.299c-0.072,0.9-0.611,3.572-4.416,4.533 c-3.492,0.88-8.864,1.458-8.667,5.456c0.01,0.228,0.041,0.466,0.09,0.717c0.903,4.652,6.772,3.4,6.772,3.4 s5.042-0.877,8.997-4.452c0.021-0.018,0.041-0.035,0.059-0.053c0.015-0.015,0.028-0.025,0.038-0.035h0.003 c0.015-0.013,0.023-0.02,0.023-0.02" class="st10"/><path d="M93.239,107.687c0.212,2.307,1.328,9.289,6.994,8.316c4.605-0.984,3.341-5.547,2.71-9.931 c1.102,4.371,4.543,8.268,8.401,7.107c0.563-0.168,1.136-0.447,1.711-0.845c5.326-4.026-2.259-6.62-4.244-11.274" class="st10"/><path d="M93.239,107.682c-0.02-0.449-0.049-0.715-0.049-0.715S93.198,107.236,93.239,107.682z" class="st10"/><path d="M93.239,107.682v0.005" class="st10"/><path d="M78.202,111.376c2.53-1.443,4.566-3.707,5.147-5.484c-0.542,2.239-2.256,11.275,4.334,11.186 c5.51-0.074,5.656-7.094,5.557-9.391" class="st10"/><path d="M64.569,93.813c-2.504,2.738-11.778,1.219-9.427,7.188c0.108,0.271,0.238,0.56,0.397,0.865 c1.118,1.942,3.037,2.606,5.155,2.606c4.746,0,10.478-3.342,10.376-3.144c0,0-1.53,1.94-2.397,4.244" class="st10"/><path d="M45.789,145.892h38.102c0,0,2.034-0.251,2.162-1.815c0-0.051,0.005-0.102,0.005-0.155v-0.048 c-0.018-1.663-0.918-2.277-2.438-2.277H70.709" class="st10"/><path d="M54.999,101.06l-27.685,19.327l-6.155,4.3l-2.84,1.98l-11.898,8.308c0,0-4.513,3.489-2.799,7.157 c1.717,3.669,4.694,3.76,4.694,3.76h26.907" class="st10"/><path d="M71.249,141.582h10.852c0,0,2.167-0.269,2.167-1.97s-0.903-2.325-2.438-2.325H68.632" class="st10"/><path d="M68.721,137.211l9.176-9.153c0,0,1.34-1.706,0.128-2.91c-1.213-1.202-2.297-1.012-3.382,0.063 c-1.085,1.075-10.284,9.898-10.86,10.451l-0.028,0.028" class="st10"/><path d="M36.127,137.034H22.402c-1.062,0-2.379-0.507-1.054-1.838c0.251-0.254,0.594-0.535,1.054-0.847 c1.069-0.741,2.655-1.823,4.551-3.109c9.317-6.318,26.148-17.562,26.148-17.562" class="st10"/><path d="M63.756,135.601c-0.084-0.152-2.638-6.042-3.431-7.875c-0.317-0.94-0.993-1.648-1.896-1.719 c-0.384-0.027-0.808,0.056-1.264,0.287c-1.177,0.598-1.466,1.585-1.236,2.637c0.067,0.312,0.182,0.628,0.333,0.943 c0.811,1.701,2.075,4.383,2.075,4.383s1.806,2.777-1.896,2.777h-9.66" class="st10"/><path d="M63.756,135.601v0.003" class="st10"/><path d="M147.863,56.409c-1.471,0-3.188,1.192-3.812,2.652l-5.946,13.881" class="st10"/><path d="M157.553,74.337l6.541-15.276c0.627-1.46-0.067-2.652-1.54-2.652h-14.6" class="st10"/><path d="M132.51,86.007l-1.363,3.184c-0.568,1.321-0.051,2.426,1.146,2.622c0.125,0.02,0.256,0.03,0.394,0.03h11.338" class="st10"/><path d="M147.954,56.409h-3.674c-1.471,0-3.187,1.192-3.811,2.652l-6.347,14.822l-6.557,15.308 c-0.627,1.458,0.067,2.652,1.54,2.652h3.193" class="st10"/><path d="M157.911,59.868c-0.368,0.857-1.366,1.552-2.231,1.552c-0.864,0-1.266-0.695-0.9-1.552 c0.368-0.857,1.366-1.549,2.231-1.549C157.875,58.318,158.277,59.011,157.911,59.868z" class="st10"/><path d="M162.516,59.868c-0.369,0.857-1.367,1.552-2.231,1.552c-0.865,0-1.267-0.695-0.901-1.552 c0.369-0.857,1.366-1.549,2.231-1.549C162.48,58.318,162.881,59.011,162.516,59.868z" class="st10"/><path d="M160.669,64.178c-0.366,0.857-1.363,1.552-2.228,1.552c-0.865,0-1.269-0.695-0.9-1.552 c0.365-0.857,1.363-1.549,2.228-1.549C160.634,62.629,161.038,63.321,160.669,64.178z" class="st10"/><path d="M68.673,105.712c1.586,0.023,3.415,1.308,4.088,2.872l13.981,32.643c0.507,1.184,0.212,2.208-0.64,2.647" class="st10"/><path d="M58.437,125.843l-4.771-11.138l-0.458-1.073l-1.583-3.696l-0.578-1.352 c-0.678-1.579,0.072-2.872,1.668-2.872H68.53" class="st10"/><path d="M68.529,105.712h3.981c1.594,0,3.454,1.293,4.132,2.872l1.251,2.921l12.73,29.722 c0.675,1.58-0.074,2.873-1.671,2.873h-2.622" class="st10"/><path d="M57.089,119.025c0.399,0.928,1.479,1.681,2.415,1.681c0.936,0,1.374-0.753,0.977-1.681 c-0.396-0.928-1.479-1.681-2.415-1.681C57.13,117.344,56.692,118.097,57.089,119.025z" class="st10"/><path d="M52.758,109.459c0.396,0.928,1.479,1.681,2.415,1.681c0.936,0,1.371-0.753,0.975-1.681 c-0.396-0.928-1.479-1.681-2.415-1.681C52.797,107.778,52.359,108.531,52.758,109.459z" class="st10"/><path d="M55.035,114.129c0.397,0.928,1.479,1.681,2.415,1.681c0.936,0,1.374-0.753,0.975-1.681 c-0.396-0.928-1.479-1.681-2.415-1.681c-0.131,0-0.253,0.016-0.363,0.043C54.965,112.664,54.692,113.331,55.035,114.129z" class="st10"/><path d="M147.855,77.43h-10.852c0,0-2.167-0.269-2.167-1.967c0-0.479,0.072-0.872,0.207-1.192 c0.351-0.811,1.128-1.136,2.231-1.136h10.588c3.61,0,5.055,2.363,5.055,2.363l0.875,1.468l0.691,1.156" class="st10"/><path d="M153.8,76.961l-6.199-11.346c0,0-0.798-2.013,0.706-2.829c1.507-0.814,2.494-0.327,3.229,1.009 c0.654,1.187,4.95,8.881,5.881,10.55l0.179,0.319c0,0,1.686,3.042,0.422,6.501c-0.709,1.94-9.959,24.76-17.954,44.455 c-1.194,2.938-2.358,5.806-3.463,8.523c-1.338,3.296-2.589,6.372-3.692,9.087c-1.033,2.536-1.936,4.756-2.663,6.546 c-1.23,3.03-1.962,4.825-1.962,4.825s-0.059,0.193-0.187,0.507c-0.555,1.359-2.402,4.982-6.316,4.982 c-3.272,0-4.812-1.597-5.531-2.943" class="st10"/><path d="M146.059,81.743H135.21c0,0-0.023,0-0.067-0.01c-0.36-0.061-2.1-0.434-2.1-1.957 c0-1.701,0.903-2.327,2.438-2.327h10.586" class="st10"/><path d="M144.273,81.732h-10.588c-1.535,0-2.438,0.626-2.438,2.325c0,1.009,0.764,1.516,1.384,1.757 c0.424,0.167,0.782,0.213,0.782,0.213h8.714c0,0,4.456-0.388,2.65,4.145c-0.13,0.33-0.366,0.908-0.683,1.699h-0.003 c-2.033,5.022-7.562,18.574-12.594,30.891c-0.427,1.05-0.854,2.092-1.271,3.116c-0.635,1.549-1.251,3.063-1.847,4.523 c-0.745,1.823-1.456,3.557-2.111,5.167c-1.542,3.773-2.801,6.851-3.563,8.717c-0.515,1.257-0.804,1.965-0.804,1.965" class="st10"/><path d="M128.223,155.108c0,0,1.737-0.147,3.886-1.11c2.289-1.03,5.047-2.984,6.677-6.676 c0.562-1.278,0.867-2.517,0.982-3.689c0.34-3.417-0.908-6.27-1.868-7.9c-0.552-0.941-1.01-1.476-1.01-1.476" class="st10"/><path d="M140.413,125.759c0,0,1.471,0.766,3.625,1.41c2.53,0.758,6.001,1.351,9.143,0.349 c0.67-0.213,1.322-0.496,1.949-0.867c2.402-1.419,3.643-3.318,4.006-5.103c0.489-2.371-0.565-4.536-2.471-5.096 c-0.049-0.016-0.095-0.028-0.141-0.041c-3.443-1.019-5.536-1.803-4.645-5.687c0.567-2.479,3.681-3.362,7.012-2.715 c1.957,0.38,3.99,1.29,5.628,2.715c3.128,2.721,4.543,7.634,3.696,12.401c-0.35,1.972-1.087,3.919-2.251,5.676 c-2.448,3.692-6.086,6.344-10.701,7.781c-1.427,0.449-2.95,0.779-4.559,0.987c-2.583,0.334-5.589,0.01-8.296-0.586 c-1.642-0.36-3.172-0.822-4.433-1.293" class="st10"/><path d="M128.405,130.411c0,0-0.008-0.002-0.026-0.01c-0.279-0.089-2.791-0.854-5.932,0.168 c-1.916,0.623-4.068,1.914-6.089,4.431c-0.54,0.675-1.072,1.438-1.589,2.3c-0.422,0.707-0.846,1.44-1.276,2.196 c-0.606,1.075-1.22,2.19-1.839,3.328c-0.699,1.291-1.402,2.612-2.106,3.933c-0.744,1.394-1.491,2.789-2.236,4.15 c-0.215,0.391-0.427,0.781-0.642,1.166c-0.491,0.885-0.982,1.75-1.471,2.589c-1.118,1.917-2.284,4.062-3.891,6.011 c-2.169,2.637-5.142,4.916-9.885,5.789c-1.507,0.276-3.195,0.41-5.093,0.37c-1.655-0.036-3.205-0.244-4.651-0.591 c-3.779-0.913-6.859-2.804-9.345-5.2c-1.21-1.169-2.279-2.457-3.218-3.811c-0.678-0.978-1.289-1.99-1.837-3.017 c-0.228-0.428-0.443-0.834-0.645-1.219c-1.944-3.725-2.673-5.545-3.328-6.924" class="st10"/><path d="M121.994,146.161l-0.054,0.106c-1.66,3.347-2.955,5.997-4.786,9.262c-0.289,0.517-0.596,1.052-0.919,1.608 c-0.808,1.399-1.729,2.933-2.819,4.682c-1.532,2.465-3.175,4.709-5.034,6.661c-3.416,3.582-7.573,6.186-13.173,7.37 c-3.221,0.682-6.92,0.895-11.228,0.555c-1.97-0.154-3.799-0.459-5.498-0.882c-5.27-1.313-9.292-3.783-12.405-6.567 c-3.981-3.557-6.472-7.628-8.192-10.448c-0.164-0.269-0.325-0.537-0.481-0.811c-1.484-2.553-2.735-5.284-3.651-7.462 c-1.044-2.482-1.648-4.254-1.648-4.254" class="st10"/><path d="M131.382,122.717c0,0-1.067-0.518-2.809-0.989c-1.952-0.528-4.751-1.002-7.844-0.624 c-1.849,0.226-3.985,0.898-6.027,2.069c-2.271,1.301-4.428,3.217-5.945,5.816c-0.913,1.564-1.596,3.375-1.934,5.448 c-0.389,2.384-0.343,4.554-0.013,6.43c0.115,0.659,0.264,1.281,0.443,1.864c0.496,1.62,1.212,2.938,2.008,3.876" class="st10"/><path d="M55.72,128.979c0,0-1.896-2.774-7.132-2.774c-1.392,0-5.991,0.241-9.253,3.851 c-1.435,1.59-2.609,3.829-3.139,6.99c-0.061,0.371-0.115,0.753-0.159,1.149c-0.154,1.285-0.279,2.497-0.394,3.628 c-0.153,1.498-0.289,2.86-0.445,4.069c-0.215,1.684-0.473,3.081-0.872,4.158c-0.548,1.478-1.363,2.363-2.712,2.584 c-0.225,0.04-0.466,0.058-0.724,0.058c-1.645,0-2.704-0.814-3.313-2.289c-0.458-1.116-0.66-2.612-0.66-4.422" class="st10"/><path d="M48.767,133.9c0,0-0.627,0.38-1.302,1.567c-0.235,0.416-0.478,0.93-0.701,1.562 c-0.412,1.168-0.76,2.743-0.885,4.835c-0.015,0.266-0.033,0.532-0.049,0.796c-0.069,1.087-0.153,2.16-0.258,3.209 c-0.176,1.77-0.417,3.476-0.778,5.074c-1.448,6.46-4.799,11.145-13.454,11.145c-0.146,0-0.292-0.002-0.435-0.005 c-8.752-0.193-11.504-6.237-12.361-11.148c-0.34-1.945-0.384-3.712-0.384-4.865" class="st10"/><path d="M20.162,101.61c-0.159,0.715-0.305,1.447-0.44,2.208c-0.586,3.329-0.946,7.124-1.172,11.647 c-0.115,2.333-0.194,4.861-0.253,7.617c-0.021,1.12-0.041,2.276-0.056,3.473" class="st10"/><path d="M23.584,92.201c-0.008,0.013-0.015,0.028-0.02,0.041c-0.333,0.619-0.642,1.242-0.929,1.876 c-0.611,1.331-1.136,2.705-1.591,4.158" class="st10"/><path d="M26.953,131.215v0.025c-0.008,1.037-0.015,2.102-0.021,3.19c-0.005,0.852-0.008,1.719-0.01,2.601" class="st10"/><path d="M33.689,92.201c-0.486,0.677-0.939,1.379-1.358,2.107c-0.471,0.821-0.901,1.676-1.294,2.573 c-1.19,2.72-2.036,5.832-2.64,9.505c-0.46,2.807-0.778,5.943-0.998,9.488c-0.084,1.381-0.153,2.824-0.212,4.333" class="st10"/><path d="M111.428,113.44l3.251,9.543" class="st10"/><path d="M102.641,118.092l4.453,13.96" class="st10"/><path d="M70.86,146.131l-1.566,10.975" class="st10"/><path d="M106.734,140.88l-0.241,11.097" class="st10"/><path d="M9.462,108.904l-0.038,0.03c-0.888,0.695-1.686,0.971-2.873,0.368c-1.205-0.611-1.944-1.932-2.062-3.271 c-0.118-1.336,0.315-2.674,0.98-3.841c0.594-1.042,1.412-2.005,2.512-2.5c1.307-0.586,2.84-0.431,4.211-0.013 c1.374,0.418,2.349,0.844,3.71,1.293c1.502,0.494,2.919,0.608,4.249,0.507c0.588-0.041,1.159-0.127,1.711-0.238 c2.755-0.558,4.768-1.633,6.59-3.758c0.261-0.302,0.514-0.626,0.76-0.963c0.616-0.842,1.187-1.772,1.691-2.69 c0.706-1.285,1.282-2.551,1.673-3.537" class="st10"/><path d="M11.24,111.837c0.018-0.012,0.038-0.025,0.056-0.038" class="st10"/><path d="M29.898,89.07c-1.005,2.251-2.052,4.556-3.6,6.303c-0.146,0.172-0.302,0.337-0.463,0.497 c-1.451,1.438-2.914,2.315-4.776,2.553c-0.394,0.048-0.808,0.071-1.243,0.063c-2.287-0.041-4.41-1.105-6.613-1.721 c-2.921-0.816-6.347-0.738-8.652,1.219c-0.647,0.55-1.179,1.227-1.637,1.942c-1.282,2.008-2.008,4.427-1.686,6.782 c0.322,2.356,1.793,4.604,3.986,5.565c2.044,0.895,4.359,0.538,5.784-0.286" class="st10"/><path d="M10.908,109.999c-0.184,0.167-0.399,0.312-0.622,0.441c-0.125,0.076-0.253,0.145-0.379,0.211" class="st10"/><path d="M9.401,108.904c0.45-0.386,0.657-0.55,0.934-0.654c0.54-0.211,0.883,0.19,1.023,0.446 c0.064,0.119,0.151,0.299,0.028,0.626c-0.095,0.264-0.263,0.482-0.471,0.672" class="st10"/><path d="M9.943,110.636c0.123-0.061,0.238-0.127,0.343-0.196c0.248-0.157,0.45-0.319,0.622-0.441 c0.003-0.002,0.005-0.005,0.008-0.005c0.113-0.078,0.21-0.139,0.297-0.17c0.279-0.091,0.668-0.043,0.808,0.216 c0.064,0.119,0.133,0.37,0.12,0.507c-0.059,0.54-0.44,0.973-0.9,1.29c-0.079,0.054-0.161,0.104-0.243,0.15 c-0.031,0.018-0.061,0.035-0.092,0.051" class="st10"/><path d="M39.468,67.063c0.1,0.418,0.151,0.857,0.151,1.306c0,1.945-0.972,3.664-2.461,4.703 c-0.946,0.664-2.103,1.055-3.349,1.055c-0.55,0-1.08-0.076-1.583-0.218c-2.438-0.682-4.224-2.906-4.224-5.54 c0-3.179,2.599-5.755,5.807-5.755c0.384,0,0.762,0.038,1.126,0.109C37.176,63.156,38.954,64.87,39.468,67.063z" class="st11"/><path d="M35.733,69.979c0.89,0.297,1.374,1.245,1.077,2.115c-0.294,0.872-1.256,1.339-2.146,1.042 c-0.89-0.297-1.374-1.242-1.077-2.115c0.023-0.074,0.054-0.145,0.09-0.213" class="st12"/><path d="M44.879,65.838c0.084,0.035,0.171,0.071,0.253,0.111c1.985,0.913,3.364,2.908,3.364,5.223 c0,2.961-2.256,5.4-5.157,5.72c-0.212,0.025-0.43,0.038-0.65,0.038c-2.489,0-4.61-1.552-5.439-3.73" class="st11"/><path d="M44.612,72.783c0.89,0.297,1.371,1.245,1.077,2.114c-0.297,0.872-1.259,1.339-2.149,1.042 c-0.89-0.297-1.371-1.245-1.077-2.115c0.026-0.074,0.056-0.147,0.089-0.213" class="st12"/><path d="M35.268,62.616c-0.013-0.056-0.023-0.112-0.031-0.167c-0.069-0.342-0.102-0.697-0.102-1.06 c0-3.179,2.599-5.755,5.807-5.755s5.81,2.576,5.81,5.755c0,1.787-0.824,3.387-2.113,4.444c-1.005,0.822-2.292,1.313-3.697,1.313 c-0.427,0-0.844-0.046-1.246-0.134" class="st11"/><path d="M42.866,62.999c0.89,0.297,1.374,1.245,1.077,2.114c-0.294,0.872-1.256,1.339-2.146,1.042 c-0.89-0.297-1.374-1.242-1.077-2.114c0.026-0.074,0.054-0.145,0.09-0.213" class="st12"/><path d="M32.215,73.946c0,0-1.205,4.056-2.469,6.98c-1.097,2.54-2.062,6.118,0.274,7.989 c0.353,0.281,0.78,0.525,1.292,0.72c0.448,0.17,0.883,0.279,1.305,0.33c3.272,0.413,5.817-2.535,7.844-6.234 c2.287-4.176,2.891-6.742,2.891-6.742" class="st10"/><path d="M32.922,82.711c-0.527,1.019-0.747,1.64-1.238,2.398" class="st10"/><path d="M35.945,83.969c-0.361,1.014-0.609,1.613-1.082,2.447" class="st10"/><path d="M34.983,62.494c0,0-0.003-0.002-0.008-0.005c-0.358-0.297-15.377-12.669-23.408-4.946 c-1.878,1.805-3.016,3.869-3.594,6.042c-1.929,7.223,2.328,15.671,6.122,20.027c4.937,5.667,9.391,8.59,9.391,8.59" class="st10"/><path d="M45.216,65.775c0,0,8.609-3.103,10.834,1.848c2.228,4.951,0.542,10.441-5.536,15.511 c-6.081,5.071-11.438,7.277-16.736,9.008" class="st10"/><path d="M11.568,57.543l9.931,10.917" class="st10"/><path d="M7.956,63.567l0.018,0.018l10.036,10.6" class="st10"/><path d="M48.948,75.199l7.884-4.533" class="st10"/><path d="M47.805,81.94l7.403-4.176" class="st10"/><path d="M22.53,94.214c0.033-0.035,0.069-0.066,0.105-0.096c0.509-0.418,1.294-0.421,1.911-0.155 c0.663,0.286,1.177,0.819,1.67,1.339" class="st10"/><path d="M29.174,96.496c0.013,0.008,0.026,0.018,0.038,0.023c0.548,0.37,1.159,0.512,1.803,0.352" class="st10"/><path d="M19.831,103.838c0.404-0.258,0.911-0.347,1.379-0.248c1.328,0.286,1.896,1.828,2.939,2.69 c1.118,0.92,2.886,0.95,4.034,0.071" class="st10"/><path d="M18.608,115.468c0.417-0.213,0.929-0.157,1.364,0.018c0.435,0.175,0.813,0.459,1.213,0.705 c0.988,0.613,2.136,1.016,3.303,0.983c1.095-0.028,2.203-0.476,2.911-1.3c0.046-0.051,0.09-0.104,0.13-0.16" class="st10"/><path d="M18.401,123.084c0.55,0.875,1.581,1.428,2.62,1.41" class="st10"/><path d="M21.392,135.239c1.786,0.633,3.883,0.319,5.4-0.809" class="st10"/><path d="M18.73,150.902c0.34-0.654,0.655-0.616,1.392-0.707c0.737-0.092,1.491,0.127,2.126,0.509 c0.535,0.325,0.998,0.766,1.563,1.035c1.358,0.644,3.016,0.012,3.707-1.314" class="st10"/><path d="M31.622,152.687c-1.1,0.401-1.803,1.661-1.558,2.794c0.164,0.766,0.683,1.402,1.018,2.112 c0.614,1.313,0.547,2.918-0.171,4.176" class="st10"/><path d="M34.385,150.073c0.729-0.147,1.463,0.261,2.011,0.763c0.548,0.5,0.998,1.111,1.614,1.529 c1.197,0.811,2.87,0.72,4.121-0.005c0.941-0.545,1.169-1.146,2.243-1.339c-0.061,0.092,0.264-0.063,0.264-0.114 c0-0.005-0.008-0.01-0.023-0.013" class="st10"/><path d="M35.833,141.843c0.542-0.563,1.494-0.469,2.19-0.109c0.696,0.358,1.271,0.926,1.985,1.248 c0.686,0.309,1.481,0.375,2.21,0.18c0.55-0.147,1.054-0.436,1.596-0.611c0.545-0.175,1.177-0.224,1.655,0.086" class="st10"/><path d="M39.307,130.066c0,0,0.018-0.005,0.028-0.01c0.706-0.23,1.458-0.372,2.19-0.256 c0.742,0.119,1.466,0.543,1.793,1.212c0.166,0.34,0.228,0.723,0.412,1.052c0.353,0.629,1.077,0.936,1.724,1.263 c0.647,0.33,1.328,0.806,1.425,1.521c0.013,0.102,0.033,0.231,0.133,0.256c0.005,0,0.01,0,0.015,0 c0.084,0,0.084-0.198,0.008-0.139" class="st10"/><path d="M49.893,136.869c0.678-0.071,0.993-0.842,1.346-1.42c0.483-0.788,1.246-1.359,1.993-1.901 c0.75-0.543,1.522-1.096,2.039-1.859c0.517-0.763,0.732-1.8,0.289-2.609" class="st10"/><path d="M53.894,150.177c0.959,0.165,2.021,0.314,2.847-0.198c0.719-0.444,1.077-1.288,1.706-1.851 c0.443-0.398,1.003-0.641,1.499-0.973c0.496-0.33,0.732-0.555,0.801-1.144" class="st10"/><path d="M57.678,157.545c0.228-0.36,0.563-0.654,0.954-0.829c1.026-0.459,2.21-0.084,3.313,0.144 c1.103,0.231,2.466,0.206,3.09-0.725c0.325-0.484,0.356-1.095,0.466-1.668c0.11-0.571,0.366-1.189,0.908-1.407" class="st10"/><path d="M65.931,168.992c0.049-0.01,0.1-0.023,0.148-0.036c0.895-0.243,1.658-0.938,1.967-1.807 c0.366-1.027,0.118-2.186,0.425-3.233c0.468-1.6,2.154-2.591,3.819-2.829" class="st10"/><path d="M81.663,166.299c0.176,0.703,0.01,1.478-0.435,2.049c-0.609,0.781-1.693,1.186-2.07,2.102 c-0.376,0.923,0.131,1.954,0.128,2.948c0,0.647-0.228,1.291-0.632,1.795c-0.028,0.036-0.069,0.074-0.11,0.074 c-0.01,0-0.018-0.003-0.025-0.005c-0.051-0.02,0.005-0.122,0.033-0.076" class="st10"/><path d="M91.454,166.639c0.294,0.246,0.379,0.667,0.34,1.045c-0.038,0.38-0.182,0.74-0.269,1.11 c-0.184,0.768-0.102,1.638,0.402,2.249c0.435,0.525,1.11,0.783,1.668,1.179c1.067,0.755,1.694,2.081,1.599,3.377" class="st10"/><path d="M101.441,160.78c0.699,0.117,1.31,0.657,1.507,1.333c0.21,0.715,0.003,1.572,0.468,2.156 c0.471,0.588,1.354,0.573,2.088,0.758c1.422,0.352,2.522,1.711,2.563,3.164" class="st10"/><path d="M107.542,151.031c0.333,0.561,1.026,0.817,1.681,0.85c0.655,0.035,1.304-0.107,1.957-0.14 c2.43-0.124,4.853,1.423,5.746,3.664" class="st10"/><path d="M113.61,139.561c0.579,0.386,1.364,0.269,2.003-0.005c0.64-0.273,1.218-0.687,1.886-0.887 c1.038-0.309,2.208-0.048,3.088,0.581c0.88,0.628,1.483,1.592,1.785,2.626c0.228,0.766,0.294,1.58,0.202,2.373" class="st10"/><path d="M122.49,130.698c0.829-0.249,1.732,0.165,2.361,0.758c1.08,1.022,1.579,2.609,1.277,4.057" class="st10"/><path d="M132.858,143.205c0.018,0.007,0.034,0.015,0.052,0.025c0.759,0.35,1.468,0.811,2.22,1.179 c0.773,0.375,1.622,0.654,2.479,0.581c0.854-0.076,1.714-0.568,2.024-1.362" class="st10"/><path d="M130.436,149.845c1.148,0.877,1.754,2.396,1.522,3.813" class="st10"/><path d="M107.346,142.698c1.32-0.454,2.796-0.446,4.108,0.02" class="st10"/><path d="M108.903,129.073c1.001-0.046,2.144,0,2.804,0.745c0.43,0.489,0.555,1.182,0.967,1.681 c0.502,0.606,1.323,0.821,2.047,1.136c0.724,0.314,1.537,1.496,1.524,2.279" class="st10"/><path d="M128.524,121.672c0.016,0.018,0.034,0.035,0.049,0.056c1,1.115,1.696,2.659,1.653,4.15 c-0.003,0.109-0.011,0.218-0.021,0.327" class="st10"/><path d="M143.982,127.453c0.616,0.983,1.246,2.203,0.716,3.235c-0.348,0.677-1.126,1.07-1.438,1.764 c-0.314,0.695-0.087,1.494,0,2.249c0.09,0.758-0.071,1.686-0.782,1.978" class="st10"/><path d="M153.271,127.79c-0.292,0.644-0.039,1.486,0.562,1.868c0.41,0.261,0.942,0.325,1.29,0.665 c0.45,0.438,0.417,1.168,0.243,1.772c-0.172,0.601-0.453,1.199-0.392,1.823c0.041,0.421,0.236,0.809,0.351,1.214 c0.112,0.408,0.133,0.885-0.138,1.212" class="st10"/><path d="M159.393,121.598c0.434,0.282,1.038,0.082,1.43-0.258c0.391-0.34,0.662-0.799,1.046-1.146 c0.386-0.348,0.975-0.568,1.425-0.312c0.593,0.342,0.555,1.23,1.015,1.732c0.338,0.365,0.881,0.459,1.379,0.456 c0.499-0.003,1.008-0.076,1.492,0.043c0.486,0.117,0.954,0.505,0.957,0.999" class="st10"/><path d="M158.847,108.224c-0.913,0.107-1.629,1.065-1.463,1.963c0.038,0.213,0.12,0.421,0.138,0.636 c0.079,0.956-1,1.542-1.54,2.335c-0.668,0.979-0.397,2.465,0.573,3.152" class="st10"/><path d="M88.542,29.806c0.141,0.644,0.389,1.263,0.732,1.828c0.033,0.053,0.082,0.114,0.143,0.099 c0.061-0.013,0.026-0.137-0.021-0.094" class="st10"/><path d="M93.979,28.371c0.082,0.819,0.179,1.26,0.476,2.028" class="st10"/><path d="M99.267,28.249c-0.125,0.788-0.169,1.354-0.118,2.15" class="st10"/><path d="M103.49,29.326c-0.286,0.555-0.458,1.166-0.504,1.788" class="st10"/><path d="M112.988,87.533c2.159,0,3.27-0.076,4.626-1.498c1.358-1.42,1.419-4.206,1.419-9.079 c0,4.873,0.062,7.659,1.418,9.079c1.355,1.422,2.466,1.498,4.625,1.498v0.015c-2.159,0-3.27,0.076-4.625,1.496 c-1.356,1.422-1.418,4.209-1.418,9.082c0-4.873-0.061-7.659-1.419-9.082c-1.356-1.42-2.467-1.496-4.626-1.496V87.533z" class="st13"/><path d="M152.984,41.017c1.625,0,2.461-0.066,3.482-1.265c1.021-1.199,1.067-3.552,1.067-7.664 c0,4.112,0.046,6.465,1.067,7.664c1.02,1.199,1.857,1.265,3.481,1.265v0.01c-1.624,0-2.461,0.066-3.481,1.265 c-1.021,1.199-1.067,3.552-1.067,7.664c0-4.112-0.046-6.465-1.067-7.664s-1.857-1.265-3.482-1.265V41.017z" class="st13"/><path d="M165.956,54.858c-1.57-1.767-2.855-1.863-5.352-1.863v-0.018c2.497,0,3.782-0.094,5.352-1.861 c1.568-1.767,1.64-5.233,1.64-11.292c0,6.059,0.072,9.525,1.642,11.292c1.571,1.767,2.855,1.861,5.352,1.861v0.018 c-2.497,0-3.781,0.096-5.352,1.863c-1.57,1.767-1.642,5.233-1.642,11.292C167.596,60.091,167.524,56.625,165.956,54.858z" class="st13"/><path d="M167.596,39.823c0,6.059-0.072,9.525-1.64,11.292c-1.57,1.767-2.855,1.861-5.352,1.861" class="st14"/><path d="M167.597,66.15c0-6.06,0.071-9.525,1.642-11.292c1.571-1.767,2.855-1.863,5.352-1.863" class="st14"/><path d="M167.597,39.823c0,6.059,0.071,9.525,1.642,11.292c1.571,1.767,2.855,1.861,5.352,1.861" class="st14"/><path d="M167.596,66.15c0-6.06-0.072-9.525-1.64-11.292c-1.57-1.767-2.855-1.863-5.352-1.863" class="st14"/><path d="M157.533,32.088c0,4.112-0.046,6.465-1.067,7.664c-1.021,1.199-1.857,1.265-3.482,1.265" class="st14"/><path d="M157.532,49.957c0-4.112,0.046-6.465,1.067-7.664s1.857-1.265,3.482-1.265" class="st14"/><path d="M157.532,32.088c0,4.112,0.046,6.465,1.067,7.664c1.021,1.199,1.857,1.265,3.482,1.265" class="st14"/><path d="M157.533,49.957c0-4.112-0.046-6.465-1.067-7.664s-1.857-1.265-3.482-1.265" class="st14"/><path d="M119.033,76.956c0,4.873-0.061,7.659-1.419,9.079c-1.356,1.422-2.467,1.498-4.626,1.498" class="st14"/><path d="M119.034,98.126c0-4.873,0.062-7.659,1.417-9.082c1.356-1.42,2.467-1.496,4.626-1.496" class="st14"/><path d="M119.034,76.956c0,4.873,0.062,7.659,1.417,9.079c1.356,1.422,2.467,1.498,4.626,1.498" class="st14"/><path d="M119.033,98.126c0-4.873-0.061-7.659-1.419-9.082c-1.356-1.42-2.467-1.496-4.626-1.496" class="st14"/></g></g></svg>
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/advanced-approvals-icon-square.svg b/assets/images/simple-illustrations/advanced-approvals-icon-square.svg
index 00f3de51bd42..bd71512a9846 100644
--- a/assets/images/simple-illustrations/advanced-approvals-icon-square.svg
+++ b/assets/images/simple-illustrations/advanced-approvals-icon-square.svg
@@ -1,86 +1 @@
-<svg width="42.66" height="23.722" viewBox="-0.647 -9.26 43.953 45" fill="none" xmlns="http://www.w3.org/2000/svg">
-<g id="Illustration">
-<g id="Shape">
-<path d="M41.3682 21.4853C41.3682 22.6985 40.58 23.103 39.3949 23.103C38.2097 23.103 36.0795 23.103 34.2578 23.103C32.4362 23.103 30.3814 23.103 29.1233 23.103C27.8651 23.103 27.1479 22.6985 27.1479 21.4853C27.1479 18.25 30.7035 15.8235 34.2578 15.8235C37.8122 15.8235 41.3682 18.25 41.3682 21.4853Z" fill="#4ED7DE"/>
-<path d="M37.4195 11.7794C37.4195 13.5662 36.0045 15.0147 34.2591 15.0147C32.5136 15.0147 31.0986 13.5662 31.0986 11.7794C31.0986 9.99262 32.5136 8.54413 34.2591 8.54413C36.0045 8.54413 37.4195 9.99262 37.4195 11.7794Z" fill="#4ED7DE"/>
-<path d="M41.3682 21.4853C41.3682 22.6985 40.58 23.103 39.3949 23.103C38.2097 23.103 36.0795 23.103 34.2578 23.103C32.4362 23.103 30.3814 23.103 29.1233 23.103C27.8651 23.103 27.1479 22.6985 27.1479 21.4853C27.1479 18.25 30.7035 15.8235 34.2578 15.8235C37.8122 15.8235 41.3682 18.25 41.3682 21.4853Z" stroke="#002140"/>
-<path d="M37.4195 11.7794C37.4195 13.5662 36.0045 15.0147 34.2591 15.0147C32.5136 15.0147 31.0986 13.5662 31.0986 11.7794C31.0986 9.99262 32.5136 8.54413 34.2591 8.54413C36.0045 8.54413 37.4195 9.99262 37.4195 11.7794Z" stroke="#002140"/>
-</g>
-<g id="Shape_2">
-<path d="M20.0376 8.91177C20.0376 9.62868 19.5719 9.86765 18.8716 9.86765C18.1712 9.86765 16.9125 9.86765 15.8361 9.86765C14.7596 9.86765 13.5455 9.86765 12.802 9.86765C12.0585 9.86765 11.6348 9.62868 11.6348 8.91177C11.6348 7 13.7358 5.56618 15.8361 5.56618C17.9364 5.56618 20.0376 7 20.0376 8.91177Z" fill="#4BA6A6"/>
-<path d="M17.7043 3.17647C17.7043 4.23231 16.8682 5.08824 15.8368 5.08824C14.8054 5.08824 13.9692 4.23231 13.9692 3.17647C13.9692 2.12064 14.8054 1.26471 15.8368 1.26471C16.8682 1.26471 17.7043 2.12064 17.7043 3.17647Z" fill="#4BA6A6"/>
-<path d="M20.0376 8.91177C20.0376 9.62868 19.5719 9.86765 18.8716 9.86765C18.1712 9.86765 16.9125 9.86765 15.8361 9.86765C14.7596 9.86765 13.5455 9.86765 12.802 9.86765C12.0585 9.86765 11.6348 9.62868 11.6348 8.91177C11.6348 7 13.7358 5.56618 15.8361 5.56618C17.9364 5.56618 20.0376 7 20.0376 8.91177Z" stroke="#002140"/>
-<path d="M17.7043 3.17647C17.7043 4.23231 16.8682 5.08824 15.8368 5.08824C14.8054 5.08824 13.9692 4.23231 13.9692 3.17647C13.9692 2.12064 14.8054 1.26471 15.8368 1.26471C16.8682 1.26471 17.7043 2.12064 17.7043 3.17647Z" stroke="#002140"/>
-</g>
-<g id="Shape_3">
-<path d="M20.0376 22.1471C20.0376 22.864 19.5719 23.1029 18.8716 23.1029C18.1712 23.1029 16.9125 23.1029 15.8361 23.1029C14.7596 23.1029 13.5455 23.1029 12.802 23.1029C12.0585 23.1029 11.6348 22.864 11.6348 22.1471C11.6348 20.2353 13.7358 18.8015 15.8361 18.8015C17.9364 18.8015 20.0376 20.2353 20.0376 22.1471Z" fill="#4BA6A6"/>
-<path d="M17.7043 16.4118C17.7043 17.4676 16.8682 18.3235 15.8368 18.3235C14.8054 18.3235 13.9692 17.4676 13.9692 16.4118C13.9692 15.3559 14.8054 14.5 15.8368 14.5C16.8682 14.5 17.7043 15.3559 17.7043 16.4118Z" fill="#4BA6A6"/>
-<path d="M20.0376 22.1471C20.0376 22.864 19.5719 23.1029 18.8716 23.1029C18.1712 23.1029 16.9125 23.1029 15.8361 23.1029C14.7596 23.1029 13.5455 23.1029 12.802 23.1029C12.0585 23.1029 11.6348 22.864 11.6348 22.1471C11.6348 20.2353 13.7358 18.8015 15.8361 18.8015C17.9364 18.8015 20.0376 20.2353 20.0376 22.1471Z" stroke="#002140"/>
-<path d="M17.7043 16.4118C17.7043 17.4676 16.8682 18.3235 15.8368 18.3235C14.8054 18.3235 13.9692 17.4676 13.9692 16.4118C13.9692 15.3559 14.8054 14.5 15.8368 14.5C16.8682 14.5 17.7043 15.3559 17.7043 16.4118Z" stroke="#002140"/>
-</g>
-<g id="Shape_4">
-<path d="M6.46386 7.22057C6.46386 7.71689 6.14143 7.88233 5.65658 7.88233C5.17173 7.88233 4.30029 7.88233 3.55508 7.88233C2.80986 7.88233 1.96927 7.88233 1.45456 7.88233C0.939856 7.88233 0.646484 7.71689 0.646484 7.22057C0.646484 5.89704 2.10103 4.90439 3.55508 4.90439C5.00913 4.90439 6.46386 5.89704 6.46386 7.22057Z" fill="#28736D"/>
-<path d="M4.8485 3.24998C4.8485 3.98095 4.26964 4.57351 3.55557 4.57351C2.84151 4.57351 2.26264 3.98095 2.26264 3.24998C2.26264 2.51902 2.84151 1.92645 3.55557 1.92645C4.26964 1.92645 4.8485 2.51902 4.8485 3.24998Z" fill="#28736D"/>
-<path d="M6.46386 7.22057C6.46386 7.71689 6.14143 7.88233 5.65658 7.88233C5.17173 7.88233 4.30029 7.88233 3.55508 7.88233C2.80986 7.88233 1.96927 7.88233 1.45456 7.88233C0.939856 7.88233 0.646484 7.71689 0.646484 7.22057C0.646484 5.89704 2.10103 4.90439 3.55508 4.90439C5.00913 4.90439 6.46386 5.89704 6.46386 7.22057Z" stroke="#002140"/>
-<path d="M4.8485 3.24998C4.8485 3.98095 4.26964 4.57351 3.55557 4.57351C2.84151 4.57351 2.26264 3.98095 2.26264 3.24998C2.26264 2.51902 2.84151 1.92645 3.55557 1.92645C4.26964 1.92645 4.8485 2.51902 4.8485 3.24998Z" stroke="#002140"/>
-</g>
-<g id="Shape_5">
-<path d="M6.46386 20.4559C6.46386 20.9522 6.14143 21.1176 5.65658 21.1176C5.17173 21.1176 4.30029 21.1176 3.55508 21.1176C2.80986 21.1176 1.96927 21.1176 1.45456 21.1176C0.939856 21.1176 0.646484 20.9522 0.646484 20.4559C0.646484 19.1323 2.10103 18.1397 3.55508 18.1397C5.00913 18.1397 6.46386 19.1323 6.46386 20.4559Z" fill="#28736D"/>
-<path d="M4.8485 16.4853C4.8485 17.2162 4.26964 17.8088 3.55557 17.8088C2.84151 17.8088 2.26264 17.2162 2.26264 16.4853C2.26264 15.7543 2.84151 15.1617 3.55557 15.1617C4.26964 15.1617 4.8485 15.7543 4.8485 16.4853Z" fill="#28736D"/>
-<path d="M6.46386 20.4559C6.46386 20.9522 6.14143 21.1176 5.65658 21.1176C5.17173 21.1176 4.30029 21.1176 3.55508 21.1176C2.80986 21.1176 1.96927 21.1176 1.45456 21.1176C0.939856 21.1176 0.646484 20.9522 0.646484 20.4559C0.646484 19.1323 2.10103 18.1397 3.55508 18.1397C5.00913 18.1397 6.46386 19.1323 6.46386 20.4559Z" stroke="#002140"/>
-<path d="M4.8485 16.4853C4.8485 17.2162 4.26964 17.8088 3.55557 17.8088C2.84151 17.8088 2.26264 17.2162 2.26264 16.4853C2.26264 15.7543 2.84151 15.1617 3.55557 15.1617C4.26964 15.1617 4.8485 15.7543 4.8485 16.4853Z" stroke="#002140"/>
-</g>
-<g id="Group 77">
-<path id="Vector" d="M34.7705 20.2027L33.7954 21.7006C33.7954 21.7006 35.5267 21.6758 38.7446 24.971C38.7446 24.971 39.8902 18.78 43.2793 15.0357L43.133 14.8363L41.8162 14.2374C41.8162 14.2374 39.2318 17.0579 37.9642 22.0008C37.9642 22.0008 36.3306 20.4532 34.7698 20.2035L34.7705 20.2027Z" fill="#03D47C"/>
-<path id="Vector_2" d="M41.8439 14.2149C40.6872 15.2607 38.3467 19.5625 37.9404 22.0084C37.775 21.8451 36.9491 20.8934 34.7056 20.1193C34.6211 20.2622 33.8929 21.5088 33.8032 21.642C35.8593 21.9083 38.6877 24.8372 38.7774 24.9869C39.4196 21.1846 41.6219 16.4832 43.3069 14.9801C43.1137 14.877 42.0085 14.3255 41.8439 14.2142V14.2149Z" stroke="#002140" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-<g id="Group 2272">
-<path id="Vector_3" d="M17.0575 8.86864L16.6814 9.44639C16.6814 9.44639 17.3492 9.43682 18.5903 10.7078C18.5903 10.7078 19.0322 8.31991 20.3394 6.87569L20.283 6.79879L19.775 6.56781C19.775 6.56781 18.7782 7.65569 18.2893 9.56217C18.2893 9.56217 17.6592 8.96527 17.0572 8.86893L17.0575 8.86864Z" fill="#03D47C"/>
-<path id="Vector_4" d="M18.4803 7.63025C18.3024 7.97488 18.1291 8.35617 17.997 8.72278C17.7882 8.60221 17.525 8.47742 17.1957 8.36381C16.9712 8.28632 16.7231 8.37752 16.6022 8.582C16.5959 8.59267 16.5795 8.62056 16.5574 8.6584C16.5231 8.7168 16.475 8.79889 16.4285 8.87784C16.3893 8.94436 16.3505 9.01005 16.3195 9.06199C16.2932 9.10614 16.278 9.13101 16.2724 9.14033C16.2704 9.14359 16.2695 9.14495 16.2698 9.14455C16.173 9.2883 16.1576 9.47192 16.229 9.62981C16.3004 9.78771 16.4485 9.89738 16.6203 9.91964C16.727 9.93345 16.8789 9.98888 17.0678 10.0958C17.251 10.1994 17.4398 10.3346 17.615 10.4754C17.789 10.6153 17.9419 10.7546 18.0526 10.8618C18.1079 10.9153 18.1513 10.9594 18.1803 10.99C18.1922 11.0026 18.2006 11.0117 18.2059 11.0176C18.3195 11.1663 18.5085 11.2405 18.6956 11.2053C18.9014 11.1665 19.0613 11.0037 19.0961 10.7972C19.2112 10.1161 19.4698 9.33839 19.7805 8.65962C20.0988 7.96407 20.4387 7.4453 20.683 7.22735C20.805 7.11856 20.8661 6.95703 20.8466 6.79476C20.8272 6.63249 20.7297 6.48997 20.5855 6.41306C20.5601 6.39952 20.4996 6.36872 20.4301 6.33332C20.3855 6.31061 20.3372 6.286 20.2921 6.26285C20.2307 6.23139 20.1718 6.20086 20.125 6.176C20.0962 6.16072 20.0788 6.15109 20.0699 6.14613C20.0606 6.14102 20.0604 6.1409 20.066 6.14469C19.9128 6.04104 19.7148 6.03046 19.5514 6.11721C19.5088 6.13984 19.4703 6.16814 19.4368 6.20088C19.2808 6.34581 19.1178 6.56269 18.9671 6.79091C18.806 7.0351 18.6376 7.32553 18.4803 7.63025ZM18.215 11.0281C18.2148 11.028 18.2128 11.0258 18.2096 11.0218C18.2135 11.0263 18.2151 11.0283 18.215 11.0281Z" stroke="#002140" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-<g id="Group 2273">
-<path id="Vector_5" d="M17.0575 22.1039L16.6814 22.6817C16.6814 22.6817 17.3492 22.6721 18.5903 23.9431C18.5903 23.9431 19.0322 21.5552 20.3394 20.111L20.283 20.0341L19.775 19.8031C19.775 19.8031 18.7782 20.891 18.2893 22.7975C18.2893 22.7975 17.6592 22.2006 17.0572 22.1042L17.0575 22.1039Z" fill="#03D47C"/>
-<path id="Vector_6" d="M18.4803 20.8655C18.3024 21.2102 18.1291 21.5915 17.997 21.9581C17.7882 21.8375 17.525 21.7127 17.1957 21.5991C16.9712 21.5216 16.7231 21.6128 16.6022 21.8173C16.5959 21.828 16.5796 21.8559 16.5574 21.8937C16.5231 21.9521 16.475 22.0342 16.4285 22.1131C16.3893 22.1797 16.3505 22.2453 16.3195 22.2973C16.2932 22.3414 16.278 22.3663 16.2724 22.3756C16.2704 22.3789 16.2695 22.3802 16.2698 22.3798C16.173 22.5236 16.1576 22.7072 16.229 22.8651C16.3004 23.023 16.4485 23.1327 16.6203 23.1549C16.727 23.1687 16.8789 23.2242 17.0678 23.3311C17.251 23.4347 17.4398 23.5699 17.615 23.7107C17.789 23.8506 17.9419 23.9899 18.0526 24.0971C18.1079 24.1506 18.1513 24.1947 18.1803 24.2253C18.1922 24.2378 18.2006 24.247 18.2059 24.2528C18.3195 24.4016 18.5085 24.4758 18.6956 24.4406C18.9014 24.4018 19.0613 24.239 19.0961 24.0325C19.2112 23.3514 19.4698 22.5737 19.7805 21.8949C20.0988 21.1994 20.4387 20.6806 20.683 20.4626C20.805 20.3538 20.8661 20.1923 20.8466 20.0301C20.8272 19.8678 20.7297 19.7253 20.5855 19.6484C20.5601 19.6348 20.4996 19.604 20.4301 19.5686C20.3855 19.5459 20.3372 19.5213 20.2921 19.4981C20.2307 19.4667 20.1718 19.4361 20.125 19.4113C20.0962 19.396 20.0788 19.3864 20.0699 19.3814C20.0606 19.3763 20.0604 19.3762 20.066 19.38C19.9128 19.2763 19.7148 19.2658 19.5514 19.3525C19.5088 19.3751 19.4703 19.4034 19.4368 19.4362C19.2808 19.5811 19.1178 19.798 18.9671 20.0262C18.806 20.2704 18.6376 20.5608 18.4803 20.8655ZM18.215 24.2634C18.2148 24.2633 18.2128 24.261 18.2096 24.2571C18.2135 24.2616 18.2151 24.2636 18.215 24.2634Z" stroke="#002140" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-<g id="Group 2269">
-<g id="Vector_7">
-<path d="M9.96058 4.22149L9.99594 4.94304L11.4077 3.84857L9.89474 2.87691L9.93324 3.6615" fill="#0164BF"/>
-<path d="M9.96058 4.22149L9.99594 4.94304L11.4077 3.84857L9.89474 2.87691L9.93324 3.6615" stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-<g id="Vector_8">
-<path d="M9.96161 4.18544L8.09736 4.2186L8.03022 4.21875L8.00085 3.68853L9.93957 3.67334" fill="#0164BF"/>
-<path d="M9.96161 4.18544L8.09736 4.2186L8.03022 4.21875L8.00085 3.68853L9.93957 3.67334" stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-</g>
-<g id="Group 2270">
-<g id="Vector_9">
-<path d="M9.96058 17.4568L9.99594 18.1783L11.4077 17.0839L9.89474 16.1122L9.93324 16.8968" fill="#0164BF"/>
-<path d="M9.96058 17.4568L9.99594 18.1783L11.4077 17.0839L9.89474 16.1122L9.93324 16.8968" stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-<g id="Vector_10">
-<path d="M9.96161 17.4207L8.09736 17.4539L8.03022 17.454L8.00085 16.9238L9.93957 16.9086" fill="#0164BF"/>
-<path d="M9.96161 17.4207L8.09736 17.4539L8.03022 17.454L8.00085 16.9238L9.93957 16.9086" stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-</g>
-<g id="Group 2268">
-<g id="Vector_11">
-<path d="M24.5959 15.4391L25.3306 16.6031L26.6506 13.3986L23.2269 13.2701L24.0259 14.5357" fill="#0164BF"/>
-<path d="M24.5959 15.4391L25.3306 16.6031L26.6506 13.3986L23.2269 13.2701L24.0259 14.5357" stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-<g id="Vector_12">
-<path d="M24.5638 15.3781L21.4979 17.2639L21.3865 17.3301L20.841 16.4781L24.0475 14.5491" fill="#0164BF"/>
-<path d="M24.5638 15.3781L21.4979 17.2639L21.3865 17.3301L20.841 16.4781L24.0475 14.5491" stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-</g>
-<g id="Group 2271">
-<g id="Vector_13">
-<path d="M24.5959 5.70077L25.3306 4.53681L26.6506 7.74133L23.2269 7.86983L24.0259 6.60423" fill="#0164BF"/>
-<path d="M24.5959 5.70077L25.3306 4.53681L26.6506 7.74133L23.2269 7.86983L24.0259 6.60423" stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-<g id="Vector_14">
-<path d="M24.5638 5.76176L21.4979 3.87603L21.3865 3.80984L20.841 4.66183L24.0475 6.59084" fill="#0164BF"/>
-<path d="M24.5638 5.76176L21.4979 3.87603L21.3865 3.80984L20.841 4.66183L24.0475 6.59084" stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round"/>
-</g>
-</g>
-</g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="42.66" height="23.722" fill="none" viewBox="-0.647 -9.26 43.953 45"><g id="Illustration"><g id="Shape"><path fill="#4ED7DE" d="M41.3682 21.4853C41.3682 22.6985 40.58 23.103 39.3949 23.103C38.2097 23.103 36.0795 23.103 34.2578 23.103C32.4362 23.103 30.3814 23.103 29.1233 23.103C27.8651 23.103 27.1479 22.6985 27.1479 21.4853C27.1479 18.25 30.7035 15.8235 34.2578 15.8235C37.8122 15.8235 41.3682 18.25 41.3682 21.4853Z"/><path fill="#4ED7DE" d="M37.4195 11.7794C37.4195 13.5662 36.0045 15.0147 34.2591 15.0147C32.5136 15.0147 31.0986 13.5662 31.0986 11.7794C31.0986 9.99262 32.5136 8.54413 34.2591 8.54413C36.0045 8.54413 37.4195 9.99262 37.4195 11.7794Z"/><path stroke="#002140" d="M41.3682 21.4853C41.3682 22.6985 40.58 23.103 39.3949 23.103C38.2097 23.103 36.0795 23.103 34.2578 23.103C32.4362 23.103 30.3814 23.103 29.1233 23.103C27.8651 23.103 27.1479 22.6985 27.1479 21.4853C27.1479 18.25 30.7035 15.8235 34.2578 15.8235C37.8122 15.8235 41.3682 18.25 41.3682 21.4853Z"/><path stroke="#002140" d="M37.4195 11.7794C37.4195 13.5662 36.0045 15.0147 34.2591 15.0147C32.5136 15.0147 31.0986 13.5662 31.0986 11.7794C31.0986 9.99262 32.5136 8.54413 34.2591 8.54413C36.0045 8.54413 37.4195 9.99262 37.4195 11.7794Z"/></g><g id="Shape_2"><path fill="#4BA6A6" d="M20.0376 8.91177C20.0376 9.62868 19.5719 9.86765 18.8716 9.86765C18.1712 9.86765 16.9125 9.86765 15.8361 9.86765C14.7596 9.86765 13.5455 9.86765 12.802 9.86765C12.0585 9.86765 11.6348 9.62868 11.6348 8.91177C11.6348 7 13.7358 5.56618 15.8361 5.56618C17.9364 5.56618 20.0376 7 20.0376 8.91177Z"/><path fill="#4BA6A6" d="M17.7043 3.17647C17.7043 4.23231 16.8682 5.08824 15.8368 5.08824C14.8054 5.08824 13.9692 4.23231 13.9692 3.17647C13.9692 2.12064 14.8054 1.26471 15.8368 1.26471C16.8682 1.26471 17.7043 2.12064 17.7043 3.17647Z"/><path stroke="#002140" d="M20.0376 8.91177C20.0376 9.62868 19.5719 9.86765 18.8716 9.86765C18.1712 9.86765 16.9125 9.86765 15.8361 9.86765C14.7596 9.86765 13.5455 9.86765 12.802 9.86765C12.0585 9.86765 11.6348 9.62868 11.6348 8.91177C11.6348 7 13.7358 5.56618 15.8361 5.56618C17.9364 5.56618 20.0376 7 20.0376 8.91177Z"/><path stroke="#002140" d="M17.7043 3.17647C17.7043 4.23231 16.8682 5.08824 15.8368 5.08824C14.8054 5.08824 13.9692 4.23231 13.9692 3.17647C13.9692 2.12064 14.8054 1.26471 15.8368 1.26471C16.8682 1.26471 17.7043 2.12064 17.7043 3.17647Z"/></g><g id="Shape_3"><path fill="#4BA6A6" d="M20.0376 22.1471C20.0376 22.864 19.5719 23.1029 18.8716 23.1029C18.1712 23.1029 16.9125 23.1029 15.8361 23.1029C14.7596 23.1029 13.5455 23.1029 12.802 23.1029C12.0585 23.1029 11.6348 22.864 11.6348 22.1471C11.6348 20.2353 13.7358 18.8015 15.8361 18.8015C17.9364 18.8015 20.0376 20.2353 20.0376 22.1471Z"/><path fill="#4BA6A6" d="M17.7043 16.4118C17.7043 17.4676 16.8682 18.3235 15.8368 18.3235C14.8054 18.3235 13.9692 17.4676 13.9692 16.4118C13.9692 15.3559 14.8054 14.5 15.8368 14.5C16.8682 14.5 17.7043 15.3559 17.7043 16.4118Z"/><path stroke="#002140" d="M20.0376 22.1471C20.0376 22.864 19.5719 23.1029 18.8716 23.1029C18.1712 23.1029 16.9125 23.1029 15.8361 23.1029C14.7596 23.1029 13.5455 23.1029 12.802 23.1029C12.0585 23.1029 11.6348 22.864 11.6348 22.1471C11.6348 20.2353 13.7358 18.8015 15.8361 18.8015C17.9364 18.8015 20.0376 20.2353 20.0376 22.1471Z"/><path stroke="#002140" d="M17.7043 16.4118C17.7043 17.4676 16.8682 18.3235 15.8368 18.3235C14.8054 18.3235 13.9692 17.4676 13.9692 16.4118C13.9692 15.3559 14.8054 14.5 15.8368 14.5C16.8682 14.5 17.7043 15.3559 17.7043 16.4118Z"/></g><g id="Shape_4"><path fill="#28736D" d="M6.46386 7.22057C6.46386 7.71689 6.14143 7.88233 5.65658 7.88233C5.17173 7.88233 4.30029 7.88233 3.55508 7.88233C2.80986 7.88233 1.96927 7.88233 1.45456 7.88233C0.939856 7.88233 0.646484 7.71689 0.646484 7.22057C0.646484 5.89704 2.10103 4.90439 3.55508 4.90439C5.00913 4.90439 6.46386 5.89704 6.46386 7.22057Z"/><path fill="#28736D" d="M4.8485 3.24998C4.8485 3.98095 4.26964 4.57351 3.55557 4.57351C2.84151 4.57351 2.26264 3.98095 2.26264 3.24998C2.26264 2.51902 2.84151 1.92645 3.55557 1.92645C4.26964 1.92645 4.8485 2.51902 4.8485 3.24998Z"/><path stroke="#002140" d="M6.46386 7.22057C6.46386 7.71689 6.14143 7.88233 5.65658 7.88233C5.17173 7.88233 4.30029 7.88233 3.55508 7.88233C2.80986 7.88233 1.96927 7.88233 1.45456 7.88233C0.939856 7.88233 0.646484 7.71689 0.646484 7.22057C0.646484 5.89704 2.10103 4.90439 3.55508 4.90439C5.00913 4.90439 6.46386 5.89704 6.46386 7.22057Z"/><path stroke="#002140" d="M4.8485 3.24998C4.8485 3.98095 4.26964 4.57351 3.55557 4.57351C2.84151 4.57351 2.26264 3.98095 2.26264 3.24998C2.26264 2.51902 2.84151 1.92645 3.55557 1.92645C4.26964 1.92645 4.8485 2.51902 4.8485 3.24998Z"/></g><g id="Shape_5"><path fill="#28736D" d="M6.46386 20.4559C6.46386 20.9522 6.14143 21.1176 5.65658 21.1176C5.17173 21.1176 4.30029 21.1176 3.55508 21.1176C2.80986 21.1176 1.96927 21.1176 1.45456 21.1176C0.939856 21.1176 0.646484 20.9522 0.646484 20.4559C0.646484 19.1323 2.10103 18.1397 3.55508 18.1397C5.00913 18.1397 6.46386 19.1323 6.46386 20.4559Z"/><path fill="#28736D" d="M4.8485 16.4853C4.8485 17.2162 4.26964 17.8088 3.55557 17.8088C2.84151 17.8088 2.26264 17.2162 2.26264 16.4853C2.26264 15.7543 2.84151 15.1617 3.55557 15.1617C4.26964 15.1617 4.8485 15.7543 4.8485 16.4853Z"/><path stroke="#002140" d="M6.46386 20.4559C6.46386 20.9522 6.14143 21.1176 5.65658 21.1176C5.17173 21.1176 4.30029 21.1176 3.55508 21.1176C2.80986 21.1176 1.96927 21.1176 1.45456 21.1176C0.939856 21.1176 0.646484 20.9522 0.646484 20.4559C0.646484 19.1323 2.10103 18.1397 3.55508 18.1397C5.00913 18.1397 6.46386 19.1323 6.46386 20.4559Z"/><path stroke="#002140" d="M4.8485 16.4853C4.8485 17.2162 4.26964 17.8088 3.55557 17.8088C2.84151 17.8088 2.26264 17.2162 2.26264 16.4853C2.26264 15.7543 2.84151 15.1617 3.55557 15.1617C4.26964 15.1617 4.8485 15.7543 4.8485 16.4853Z"/></g><g id="Group 77"><path id="Vector" fill="#03D47C" d="M34.7705 20.2027L33.7954 21.7006C33.7954 21.7006 35.5267 21.6758 38.7446 24.971C38.7446 24.971 39.8902 18.78 43.2793 15.0357L43.133 14.8363L41.8162 14.2374C41.8162 14.2374 39.2318 17.0579 37.9642 22.0008C37.9642 22.0008 36.3306 20.4532 34.7698 20.2035L34.7705 20.2027Z"/><path id="Vector_2" stroke="#002140" stroke-linecap="round" stroke-linejoin="round" d="M41.8439 14.2149C40.6872 15.2607 38.3467 19.5625 37.9404 22.0084C37.775 21.8451 36.9491 20.8934 34.7056 20.1193C34.6211 20.2622 33.8929 21.5088 33.8032 21.642C35.8593 21.9083 38.6877 24.8372 38.7774 24.9869C39.4196 21.1846 41.6219 16.4832 43.3069 14.9801C43.1137 14.877 42.0085 14.3255 41.8439 14.2142V14.2149Z"/></g><g id="Group 2272"><path id="Vector_3" fill="#03D47C" d="M17.0575 8.86864L16.6814 9.44639C16.6814 9.44639 17.3492 9.43682 18.5903 10.7078C18.5903 10.7078 19.0322 8.31991 20.3394 6.87569L20.283 6.79879L19.775 6.56781C19.775 6.56781 18.7782 7.65569 18.2893 9.56217C18.2893 9.56217 17.6592 8.96527 17.0572 8.86893L17.0575 8.86864Z"/><path id="Vector_4" stroke="#002140" stroke-linecap="round" stroke-linejoin="round" d="M18.4803 7.63025C18.3024 7.97488 18.1291 8.35617 17.997 8.72278C17.7882 8.60221 17.525 8.47742 17.1957 8.36381C16.9712 8.28632 16.7231 8.37752 16.6022 8.582C16.5959 8.59267 16.5795 8.62056 16.5574 8.6584C16.5231 8.7168 16.475 8.79889 16.4285 8.87784C16.3893 8.94436 16.3505 9.01005 16.3195 9.06199C16.2932 9.10614 16.278 9.13101 16.2724 9.14033C16.2704 9.14359 16.2695 9.14495 16.2698 9.14455C16.173 9.2883 16.1576 9.47192 16.229 9.62981C16.3004 9.78771 16.4485 9.89738 16.6203 9.91964C16.727 9.93345 16.8789 9.98888 17.0678 10.0958C17.251 10.1994 17.4398 10.3346 17.615 10.4754C17.789 10.6153 17.9419 10.7546 18.0526 10.8618C18.1079 10.9153 18.1513 10.9594 18.1803 10.99C18.1922 11.0026 18.2006 11.0117 18.2059 11.0176C18.3195 11.1663 18.5085 11.2405 18.6956 11.2053C18.9014 11.1665 19.0613 11.0037 19.0961 10.7972C19.2112 10.1161 19.4698 9.33839 19.7805 8.65962C20.0988 7.96407 20.4387 7.4453 20.683 7.22735C20.805 7.11856 20.8661 6.95703 20.8466 6.79476C20.8272 6.63249 20.7297 6.48997 20.5855 6.41306C20.5601 6.39952 20.4996 6.36872 20.4301 6.33332C20.3855 6.31061 20.3372 6.286 20.2921 6.26285C20.2307 6.23139 20.1718 6.20086 20.125 6.176C20.0962 6.16072 20.0788 6.15109 20.0699 6.14613C20.0606 6.14102 20.0604 6.1409 20.066 6.14469C19.9128 6.04104 19.7148 6.03046 19.5514 6.11721C19.5088 6.13984 19.4703 6.16814 19.4368 6.20088C19.2808 6.34581 19.1178 6.56269 18.9671 6.79091C18.806 7.0351 18.6376 7.32553 18.4803 7.63025ZM18.215 11.0281C18.2148 11.028 18.2128 11.0258 18.2096 11.0218C18.2135 11.0263 18.2151 11.0283 18.215 11.0281Z"/></g><g id="Group 2273"><path id="Vector_5" fill="#03D47C" d="M17.0575 22.1039L16.6814 22.6817C16.6814 22.6817 17.3492 22.6721 18.5903 23.9431C18.5903 23.9431 19.0322 21.5552 20.3394 20.111L20.283 20.0341L19.775 19.8031C19.775 19.8031 18.7782 20.891 18.2893 22.7975C18.2893 22.7975 17.6592 22.2006 17.0572 22.1042L17.0575 22.1039Z"/><path id="Vector_6" stroke="#002140" stroke-linecap="round" stroke-linejoin="round" d="M18.4803 20.8655C18.3024 21.2102 18.1291 21.5915 17.997 21.9581C17.7882 21.8375 17.525 21.7127 17.1957 21.5991C16.9712 21.5216 16.7231 21.6128 16.6022 21.8173C16.5959 21.828 16.5796 21.8559 16.5574 21.8937C16.5231 21.9521 16.475 22.0342 16.4285 22.1131C16.3893 22.1797 16.3505 22.2453 16.3195 22.2973C16.2932 22.3414 16.278 22.3663 16.2724 22.3756C16.2704 22.3789 16.2695 22.3802 16.2698 22.3798C16.173 22.5236 16.1576 22.7072 16.229 22.8651C16.3004 23.023 16.4485 23.1327 16.6203 23.1549C16.727 23.1687 16.8789 23.2242 17.0678 23.3311C17.251 23.4347 17.4398 23.5699 17.615 23.7107C17.789 23.8506 17.9419 23.9899 18.0526 24.0971C18.1079 24.1506 18.1513 24.1947 18.1803 24.2253C18.1922 24.2378 18.2006 24.247 18.2059 24.2528C18.3195 24.4016 18.5085 24.4758 18.6956 24.4406C18.9014 24.4018 19.0613 24.239 19.0961 24.0325C19.2112 23.3514 19.4698 22.5737 19.7805 21.8949C20.0988 21.1994 20.4387 20.6806 20.683 20.4626C20.805 20.3538 20.8661 20.1923 20.8466 20.0301C20.8272 19.8678 20.7297 19.7253 20.5855 19.6484C20.5601 19.6348 20.4996 19.604 20.4301 19.5686C20.3855 19.5459 20.3372 19.5213 20.2921 19.4981C20.2307 19.4667 20.1718 19.4361 20.125 19.4113C20.0962 19.396 20.0788 19.3864 20.0699 19.3814C20.0606 19.3763 20.0604 19.3762 20.066 19.38C19.9128 19.2763 19.7148 19.2658 19.5514 19.3525C19.5088 19.3751 19.4703 19.4034 19.4368 19.4362C19.2808 19.5811 19.1178 19.798 18.9671 20.0262C18.806 20.2704 18.6376 20.5608 18.4803 20.8655ZM18.215 24.2634C18.2148 24.2633 18.2128 24.261 18.2096 24.2571C18.2135 24.2616 18.2151 24.2636 18.215 24.2634Z"/></g><g id="Group 2269"><g id="Vector_7"><path fill="#0164BF" d="M9.96058 4.22149L9.99594 4.94304L11.4077 3.84857L9.89474 2.87691L9.93324 3.6615"/><path stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round" d="M9.96058 4.22149L9.99594 4.94304L11.4077 3.84857L9.89474 2.87691L9.93324 3.6615"/></g><g id="Vector_8"><path fill="#0164BF" d="M9.96161 4.18544L8.09736 4.2186L8.03022 4.21875L8.00085 3.68853L9.93957 3.67334"/><path stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round" d="M9.96161 4.18544L8.09736 4.2186L8.03022 4.21875L8.00085 3.68853L9.93957 3.67334"/></g></g><g id="Group 2270"><g id="Vector_9"><path fill="#0164BF" d="M9.96058 17.4568L9.99594 18.1783L11.4077 17.0839L9.89474 16.1122L9.93324 16.8968"/><path stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round" d="M9.96058 17.4568L9.99594 18.1783L11.4077 17.0839L9.89474 16.1122L9.93324 16.8968"/></g><g id="Vector_10"><path fill="#0164BF" d="M9.96161 17.4207L8.09736 17.4539L8.03022 17.454L8.00085 16.9238L9.93957 16.9086"/><path stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round" d="M9.96161 17.4207L8.09736 17.4539L8.03022 17.454L8.00085 16.9238L9.93957 16.9086"/></g></g><g id="Group 2268"><g id="Vector_11"><path fill="#0164BF" d="M24.5959 15.4391L25.3306 16.6031L26.6506 13.3986L23.2269 13.2701L24.0259 14.5357"/><path stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round" d="M24.5959 15.4391L25.3306 16.6031L26.6506 13.3986L23.2269 13.2701L24.0259 14.5357"/></g><g id="Vector_12"><path fill="#0164BF" d="M24.5638 15.3781L21.4979 17.2639L21.3865 17.3301L20.841 16.4781L24.0475 14.5491"/><path stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round" d="M24.5638 15.3781L21.4979 17.2639L21.3865 17.3301L20.841 16.4781L24.0475 14.5491"/></g></g><g id="Group 2271"><g id="Vector_13"><path fill="#0164BF" d="M24.5959 5.70077L25.3306 4.53681L26.6506 7.74133L23.2269 7.86983L24.0259 6.60423"/><path stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round" d="M24.5959 5.70077L25.3306 4.53681L26.6506 7.74133L23.2269 7.86983L24.0259 6.60423"/></g><g id="Vector_14"><path fill="#0164BF" d="M24.5638 5.76176L21.4979 3.87603L21.3865 3.80984L20.841 4.66183L24.0475 6.59084"/><path stroke="#0164BF" stroke-linecap="round" stroke-linejoin="round" d="M24.5638 5.76176L21.4979 3.87603L21.3865 3.80984L20.841 4.66183L24.0475 6.59084"/></g></g></g></svg>
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/emptystate__big-vault.svg b/assets/images/simple-illustrations/emptystate__big-vault.svg
index 02606e39fafd..a1d18da1b117 100644
--- a/assets/images/simple-illustrations/emptystate__big-vault.svg
+++ b/assets/images/simple-illustrations/emptystate__big-vault.svg
@@ -1,378 +1 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 28.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 262 152" style="enable-background:new 0 0 262 152;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#D18000;}
-	.st1{fill:#722B03;}
-	.st2{fill:#003C73;}
-	.st3{fill:#FED607;}
-	.st4{fill:#FFF2B2;}
-	.st5{fill:#E4BC07;}
-	.st6{fill:#002140;}
-	.st7{fill:none;stroke:#002140;stroke-linecap:round;stroke-linejoin:round;}
-	.st8{fill:#50EEF6;}
-</style>
-<path class="st0" d="M152.957,142.282h-6.556l-5.242-1.416L1.607,142.282V5.848h151.35V142.282z"/>
-<path class="st1" d="M152.801,142.106l-11.139-1.298l-0.474,1.298H14.495V18.058h138.305V142.106z"/>
-<path class="st2" d="M81.263,132.666c26.026,0,47.125-21.021,47.125-46.952c0-25.931-21.099-46.952-47.125-46.952
-	c-26.027,0-47.125,21.021-47.125,46.952C34.138,111.645,55.236,132.666,81.263,132.666z"/>
-<path class="st3" d="M123.737,106.802l-3.021-4.778h-6.845l-4.356-7.52h-6.577L98.85,87.16h-6.756l-4.801-7.608h-13.51l-4.177,7.256
-	h-6.488l-4.356,7.608h-6.756l-4.356,7.432h-6.845l-1.779,3.45c0,0,5.867,13.715,18.932,21.147s27.467,6.016,30.577,5.84
-	c3.11-0.176,24.534-4.955,35.199-25.483H123.737z"/>
-<path class="st4" d="M123.737,106.802l-3.022-4.776l4.887-0.266L123.737,106.802z"/>
-<path class="st4" d="M113.871,102.026h6.044l-4.533-7.434h-5.867L113.871,102.026z"/>
-<path class="st4" d="M102.938,94.504h5.599l-4.088-7.253l-5.601-0.091L102.938,94.504z"/>
-<path class="st4" d="M92.094,87.16h6.132l-4.444-7.784h-6.132L92.094,87.16z"/>
-<path class="st4" d="M82.005,79.552c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829
-	c0,0,2.398-5.651,3.954-5.651c1.557,0,7.244,0.133,7.244,0.133V79.552z"/>
-<path class="st4" d="M71.203,87.205c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829
-	c0,0,2.398-5.651,3.954-5.651c1.556,0,7.244,0.133,7.244,0.133V87.205z"/>
-<path class="st4" d="M59.708,94.754c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829
-	c0,0,2.398-5.65,3.954-5.65c1.557,0,7.244,0.133,7.244,0.133V94.754z"/>
-<path class="st4" d="M81.871,94.754c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829
-	c0,0,2.398-5.65,3.954-5.65c1.556,0,7.244,0.133,7.244,0.133V94.754z"/>
-<path class="st4" d="M93.19,87.029c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.003
-	c0,0,1.09-0.648,1.348-0.648c1.557,0,7.244,0.133,7.244,0.133L93.19,87.029z"/>
-<path class="st4" d="M103.56,94.578c0,0-0.177,1.637-2.211,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.003
-	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L103.56,94.578z"/>
-<path class="st4" d="M71.086,102.01c0,0-0.177,1.638-2.21,2.19c-0.964,0.269-1.982,0.216-2.984,0.186
-	c-0.086-0.002-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.002
-	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L71.086,102.01z"/>
-<path class="st4" d="M93.013,102.01c0,0-0.177,1.638-2.21,2.19c-0.964,0.269-1.982,0.216-2.984,0.186
-	c-0.086-0.002-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.002
-	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L93.013,102.01z"/>
-<path class="st4" d="M114.758,102.01c0,0-0.177,1.638-2.21,2.19c-0.965,0.269-1.983,0.216-2.985,0.186
-	c-0.085-0.002-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.002
-	c0,0,1.09-0.648,1.347-0.648c1.557,0,7.244,0.133,7.244,0.133L114.758,102.01z"/>
-<path class="st4" d="M104.093,109.56c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003
-	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L104.093,109.56z"/>
-<path class="st4" d="M120.587,111.936c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288
-	c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003c0,0,1.09-0.648,1.347-0.648c0.656,0,2.052,0.024,3.445,0.051"/>
-<path class="st4" d="M115.293,116.874c0,0-0.176,1.638-2.21,2.19c-0.964,0.269-1.982,0.216-2.984,0.186
-	c-0.086-0.002-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.603-5.002
-	c0,0,1.091-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L115.293,116.874z"/>
-<path class="st4" d="M103.796,124.544c0,0-0.177,1.637-2.211,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003
-	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L103.796,124.544z"/>
-<path class="st4" d="M81.989,124.544c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003
-	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L81.989,124.544z"/>
-<path class="st4" d="M54.798,124.544c0.171-0.08,0.316-0.134,0.391-0.134c1.556,0,7.244,0.134,7.244,0.134s-0.177,1.637-2.21,2.189
-	c-0.477,0.133-0.967,0.187-1.463,0.205"/>
-<path class="st4" d="M82.048,109.56c0,0-0.177,1.637-2.21,2.189c-0.965,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003
-	c0,0,1.09-0.648,1.347-0.648c1.556,0,7.244,0.133,7.244,0.133L82.048,109.56z"/>
-<path class="st4" d="M71.383,116.816c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003
-	c0,0,1.09-0.648,1.347-0.648c1.557,0,7.244,0.133,7.244,0.133L71.383,116.816z"/>
-<path class="st4" d="M93.307,116.816c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003
-	c0,0,1.09-0.648,1.347-0.648c1.556,0,7.244,0.133,7.244,0.133L93.307,116.816z"/>
-<path class="st4" d="M60.241,109.56c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187
-	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003
-	c0,0,1.09-0.648,1.347-0.648c1.556,0,7.244,0.133,7.244,0.133L60.241,109.56z"/>
-<path class="st4" d="M46.006,116.696c2.242,0.032,6.001,0.12,6.001,0.12s-0.177,1.637-2.21,2.189
-	c-0.418,0.117-0.847,0.173-1.28,0.197"/>
-<path class="st4" d="M38.652,105.184c0.825-1.539,1.937-3.248,2.792-3.248c1.556,0,7.244,0.133,7.244,0.133s-0.177,1.637-2.21,2.189
-	c-0.964,0.27-1.982,0.216-2.984,0.187c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.05-0.212,0.173-0.292,0.288
-	c-0.793,1.157-1.985,2.029-3.316,2.482"/>
-<path class="st5" d="M80.939,93.797l3.689-6.637h-7.6L80.939,93.797z"/>
-<path class="st5" d="M91.692,101.405l3.689-6.635h-7.6L91.692,101.405z"/>
-<path class="st5" d="M69.738,101.229l3.689-6.637h-7.6L69.738,101.229z"/>
-<path class="st5" d="M58.894,108.749l3.689-6.635h-7.6L58.894,108.749z"/>
-<path class="st5" d="M47.961,115.829l3.689-6.637h-7.6L47.961,115.829z"/>
-<path class="st5" d="M69.738,115.829l3.689-6.637h-7.6L69.738,115.829z"/>
-<path class="st5" d="M80.759,108.749l3.689-6.635h-7.6L80.759,108.749z"/>
-<path class="st5" d="M103.07,108.749l3.688-6.635h-7.6L103.07,108.749z"/>
-<path class="st5" d="M113.914,116.359l3.689-6.637h-7.6L113.914,116.359z"/>
-<path class="st5" d="M91.784,116.269l3.686-6.635h-7.597L91.784,116.269z"/>
-<path class="st5" d="M81.027,123.261l3.689-6.637h-7.6L81.027,123.261z"/>
-<path class="st5" d="M58.982,123.437l3.689-6.635h-7.6L58.982,123.437z"/>
-<path class="st5" d="M102.804,123.437l3.689-6.635h-7.6L102.804,123.437z"/>
-<path class="st5" d="M92.048,131.045l3.689-6.635h-7.6L92.048,131.045z"/>
-<path class="st5" d="M69.915,130.781l3.689-6.637h-7.6L69.915,130.781z"/>
-<path class="st5" d="M188.356,27.082c0,0-26.074-0.589-43.851,21.235c-10.429,12.032-13.157,27.371-13.036,38.104
-	c0.118,10.736,3.793,31.381,20.148,44.123c16.355,12.741,32,14.274,38.636,13.802c0,0,26.548,0.944,43.08-21.882
-	c16.532-22.827,12.977-43.531,10.488-53.088c-2.489-9.555-11.734-27.251-30.754-36.629c-10.668-4.6-20.62-5.523-24.711-5.661V27.082
-	z"/>
-<path class="st0" d="M188.683,134.85c26.427,0,47.851-21.807,47.851-48.707c0-26.9-21.424-48.707-47.851-48.707
-	c-26.428,0-47.852,21.807-47.852,48.707C140.831,113.043,162.255,134.85,188.683,134.85z"/>
-<path class="st5" d="M188.356,124.586c20.913,0,37.867-17.231,37.867-38.488c0-21.256-16.954-38.488-37.867-38.488
-	s-37.867,17.232-37.867,38.488C150.489,107.355,167.443,124.586,188.356,124.586z"/>
-<path class="st0" d="M188.268,114.146c15.365,0,27.82-12.662,27.82-28.283c0-15.62-12.455-28.283-27.82-28.283
-	s-27.821,12.663-27.821,28.283C160.447,101.484,172.903,114.146,188.268,114.146z"/>
-<path class="st5" d="M188.445,97.157c6.038,0,10.932-5.149,10.932-11.501c0-6.352-4.894-11.501-10.932-11.501
-	c-6.038,0-10.933,5.149-10.933,11.501C177.512,92.007,182.407,97.157,188.445,97.157z"/>
-<path class="st0" d="M193.157,144.408c0,0,25.954-1.771,40.176-21.944c7.999-10.795,12.444-19.819,12.8-38.224
-	c0.356-18.403-11.201-36.984-22.932-45.301c-11.733-8.317-27.732-15.219-49.598-9.909c0,0,8.356-6.016,21.51-6.547
-	c13.156-0.531,41.065,1.061,58.666,33.8c5.687,11.501,8.178,26.899,5.154,40.877c-3.022,13.979-10.668,34.507-36.444,45.126
-	c-8.356,2.301-17.065,5.84-28.978,4.248l-0.357-2.123L193.157,144.408z"/>
-<path class="st5" d="M184.209,27.319h9.245v-5.781c0,0-0.592-1.061-4.385-1.179c-3.794-0.117-4.978,1.061-4.978,1.061
-	L184.209,27.319z"/>
-<path class="st5" d="M229.719,45.016l4.503-3.776c0,0,2.489-1.299,4.742,1.651c2.253,2.949,1.658,5.192,0.356,6.253
-	c-1.304,1.061-3.555,2.715-3.555,2.715l-6.044-6.843H229.719z"/>
-<path class="st5" d="M245.956,90.079c0,0,5.106,0.376,5.687,0.117c0.581-0.259,2.371-1.771,2.489-3.776
-	c0.118-2.005-0.236-4.837-1.779-5.427c-1.54-0.589-6.162,0-6.162,0l-0.235,9.083V90.079z"/>
-<path class="st5" d="M230.075,126.533l4.503,3.304c0,0,2.253,1.061,4.268-2.005c2.015-3.067,1.658-5.192,0.948-5.899
-	c-0.71-0.707-4.147-2.36-4.147-2.36l-5.569,6.96H230.075z"/>
-<path class="st5" d="M184.327,144.111c0,0-0.357,5.662,0.356,6.488c0.71,0.827,7.94,0.235,7.94,0.235s0.772-0.413,0.831-2.36
-	c0.059-1.947-0.298-4.069-0.298-4.069l-8.829-0.296V144.111z"/>
-<path class="st0" d="M183.497,37.936v9.437c0,0,8.058-0.472,10.429,0.235l0.118-9.909c0,0-6.757-0.707-10.547,0.235V37.936z"/>
-<path class="st1" d="M186.224,57.52l0.176,17.165c0,0,3.199-0.885,4.622,0l0.533-17.165h-5.334H186.224z"/>
-<path class="st1" d="M186.341,96.922v17.107c0,0,4.621,0.354,5.096,0L191.08,96.57c0,0-3.08,0.707-4.741,0.355L186.341,96.922z"/>
-<path class="st1" d="M183.379,124.41l0.117,10.147c0,0,8.415,0.706,10.547-0.118v-10.026c0,0-8.178,0.234-10.667,0L183.379,124.41z"
-	/>
-<path class="st1" d="M194.995,76.514l12.918-10.736c0,0,2.962,2.595,3.198,3.539L198.55,80.17L194.995,76.514z"/>
-<path class="st1" d="M179.114,80.17l3.319-3.776l-13.036-10.853c0,0-3.08,2.36-3.198,3.776l12.918,10.853H179.114z"/>
-<path class="st1" d="M177.691,84.063h-16.949l0.12,4.483h16.829V84.063z"/>
-<path class="st1" d="M199.616,83.946l-0.118,4.365h16.829l-0.118-4.365H199.616z"/>
-<path class="st1" d="M198.075,91.733l-2.845,3.184l12.682,10.97l3.199-3.538L198.075,91.733z"/>
-<path class="st1" d="M182.43,94.917l-3.437-3.184l-12.917,10.616l3.319,3.658L182.43,94.917z"/>
-<path class="st1" d="M141.306,90.906h9.598l-0.235-10.381h-9.599C141.07,80.525,140.596,89.49,141.306,90.906z"/>
-<path class="st1" d="M148.417,112.495l6.638,8.022l7.584-6.254l-6.518-7.784L148.417,112.495z"/>
-<path class="st1" d="M214.074,114.856l7.941,5.898c0,0,6.282-7.432,6.4-8.493l-7.705-5.544c0,0-5.687,8.141-6.636,8.141V114.856z"/>
-<path class="st1" d="M226.638,90.789h9.481c0,0,0.356-8.493-0.236-10.147l-9.719,0.117c0,0,0.474,8.965,0.474,10.027V90.789z"/>
-<path class="st1" d="M183.497,47.375l10.429,0.235v-9.909c0,0-7.705-0.472-10.429,0.235v9.437V47.375z"/>
-<path class="st1" d="M214.312,57.52c0,0,5.688,6.371,6.636,8.259l7.466-6.371c0,0-5.569-7.432-6.756-7.904l-7.348,6.016H214.312z"/>
-<path class="st1" d="M156.003,65.661l6.874-8.376l-7.823-5.781c0,0-5.808,6.133-6.517,8.493l7.466,5.661V65.661z"/>
-<path class="st0" d="M141.544,8.445l-2.845-1.179l-0.117-1.416l1.778,0.235c0,0-0.71-4.483-3.911-4.483
-	c-3.201,0-4.029,4.011-4.029,4.011l1.54-0.117v1.771l-2.845,1.299v3.539h-7.822v11.915h7.822v11.208h-7.466v12.152h7.348v33.387
-	l1.067-4.837c0,0,3.911-21.944,18.013-33.504c7.11-6.371,17.303-11.325,17.303-11.325l-2.489-0.944l-23.703-5.309l0.356-16.397
-	V8.445z"/>
-<path class="st0" d="M131.204,92.911v25.395l-0.445,0.886v11.237h-7.466v12.123h7.466v1.946c0,0,7.201,3.539,10.4-0.088v-3.538
-	l13.866,3.626l4.356-1.24l8.267-3.008c0,0-12.888-4.954-21.689-15.218c-8.8-10.264-12.532-22.475-13.598-29.286l-1.155-2.832
-	L131.204,92.911z"/>
-<path class="st0" d="M53.962,135.648l-8.889-5.928l-4.091,4.776l8.712,6.637L53.962,135.648z"/>
-<path class="st1" d="M132.417,5.613c0,0,6.518,0,7.94,0.472c0,0-1.184-4.6-3.911-4.483C133.719,1.72,132.653,4.434,132.417,5.613z"
-	/>
-<path class="st1" d="M136.685,27.792l21.568,4.955l2.845,1.533l6.282-3.184l-5.095-1.771l-20.623-4.011l-1.304,1.179L136.685,27.792
-	z"/>
-<path class="st1" d="M130.995,47.376V57.64c0,0,4.977,1.061,6.992,0.827l2.845-5.192l-0.357-4.011l-8.532-2.36
-	C131.943,46.904,130.995,46.549,130.995,47.376z"/>
-<path class="st1" d="M158.253,143.522l9.392-3.274l-6.429-3.096C161.216,137.152,162.282,141.28,158.253,143.522z"/>
-<path class="st1" d="M131.586,117.805c0,0,1.541,1.061,3.437,0.944c1.897-0.117,5.334,0.589,5.926-0.827
-	c0,0-4.621-7.314-5.687-11.09c0,0-3.818-0.598-3.911-1.062c-0.094-0.464,0.093,0.467,0.093,0.467L131.586,117.805z"/>
-<path class="st1" d="M141.159,140.866l-10.282-2.89l-0.118,6.517c0,0,1.321,1.317,4.86,1.269c3.539-0.048,5.54-1.357,5.54-1.357
-	V140.866z"/>
-<path class="st5" d="M146.313,46.194l-5.066-3.715l-1.066,0.352l-4.445,6.549l0.445,1.061l4.176,2.832L146.313,46.194z"/>
-<path class="st5" d="M131.204,81.144c0,0-4.177-0.973-6.223,0.176c-1.155,2.744,0,8.581,0,8.581l2.665,0.355l3.644-0.176
-	l-0.089-8.936H131.204z"/>
-<path class="st5" d="M141.159,118.749c0,0-4.89,3.627-4.89,3.893c0,0.267,1.868,3.008,1.868,3.008l2.933,3.982
-	c0,0,1.423-0.088,1.956-0.443c0.533-0.355,3.999-3.275,3.999-3.275l-5.866-7.168V118.749z"/>
-<path class="st0" d="M128.27,80.525l2.816,0.384V57.018c0,0-12.712-22.384-38.488-27.517c0,0-38.665-8.493-60.887,27.251
-	c0,0-10.667,19.112-6.665,38.931c4.002,19.819,18.487,34.949,31.376,40.877c12.888,5.928,27.467,5.574,31.909,5.222
-	c4.444-0.355,25.6-5.131,34.754-17.52c7.201-8.848,7.999-11.059,7.999-11.059V90.021l-2.933,0.267c0,0-1.868,17.254-11.466,26.189
-	c-9.599,8.936-17.954,15.749-38.132,15.749c-20.178,0-36.088-16.016-40.977-29.728c-4.889-13.715-4-28.667,3.734-41.408
-	c7.734-12.741,23.111-23.269,41.775-22.384c18.666,0.885,31.199,13.005,32.798,15.043c1.599,2.035,12.591,16.133,12.385,26.779
-	L128.27,80.525z"/>
-<path class="st6" d="M128.091,80.88c0,0-6.577-28.077-36.798-36.099c-30.221-8.021-48.65,14.392-48.65,14.392S55.62,39,82.109,39
-	c26.49,0,43.613,22.296,45.984,41.88"/>
-<path class="st7" d="M193.422,21.445c0.132,1.152,0.29,3.371-0.11,5.496"/>
-<path class="st7" d="M184.268,26.941c0,0-0.482-2.728-0.12-5.533"/>
-<path class="st7" d="M140.668,53.362c0,0-2.499-1.213-4.567-3.155c-0.343-0.32-0.426-0.832-0.206-1.245
-	c0.594-1.133,1.993-3.499,4.406-6.011c0.335-0.347,0.863-0.427,1.284-0.189c1.012,0.571,2.909,1.749,4.401,3.32"/>
-<path class="st7" d="M240.172,48.272c-0.804,0.837-2.419,2.376-4.316,3.429"/>
-<path class="st7" d="M230.073,44.778c0,0,1.797-2.112,4.197-3.629c0.188-0.117,0.4-0.171,0.609-0.16"/>
-<path class="st7" d="M131.258,90.128c0,0-2.741,0.48-5.559,0.12c-0.466-0.059-0.836-0.424-0.903-0.885
-	c-0.187-1.264-0.455-3.997,0.016-7.443c0.064-0.477,0.445-0.851,0.924-0.904c1.158-0.131,3.387-0.288,5.522,0.109"/>
-<path class="st7" d="M146.648,126.141c0,0-1.913,2.011-4.396,3.389c-0.41,0.23-0.925,0.155-1.257-0.176
-	c-0.908-0.904-2.757-2.941-4.439-5.989c-0.233-0.421-0.15-0.947,0.204-1.275c0.852-0.792,2.547-2.237,4.503-3.184"/>
-<path class="st7" d="M235.214,130.034c-0.14-0.016-0.279-0.058-0.408-0.133c-1.01-0.576-2.898-1.768-4.38-3.349"/>
-<path class="st7" d="M235.789,119.306c0,0,2.296,1.134,4.3,2.955"/>
-<path class="st7" d="M193.221,144.399c0,0,0.482,2.728,0.121,5.534c-0.059,0.464-0.426,0.832-0.89,0.898
-	c-1.27,0.187-4.016,0.454-7.477-0.016c-0.479-0.064-0.854-0.442-0.908-0.92c-0.131-1.152-0.289-3.37,0.11-5.496"/>
-<path class="st7" d="M252.227,89.941c-0.115,0.064-0.246,0.104-0.383,0.12c-1.157,0.131-3.386,0.288-5.521-0.109"/>
-<path class="st7" d="M246.32,80.949c0,0,2.631-0.461,5.39-0.141"/>
-<path class="st7" d="M141.48,17.962h11.407v6.885v1.563v1.107"/>
-<path class="st7" d="M125.836,142.362H14.507v-124.4h108.84"/>
-<path class="st7" d="M131.277,113.282c-9.768,17.352-28.416,29.08-49.818,29.08c-31.515,0-57.064-25.432-57.064-56.802
-	c0-31.371,25.549-56.803,57.064-56.803c21.383,0,40.018,11.707,49.791,29.032"/>
-<path class="st7" d="M131.249,99.653c-5.974,21.792-26.004,37.813-49.793,37.813c-28.504,0-51.61-23-51.61-51.373
-	c0-28.373,23.106-51.373,51.61-51.373c23.826,0,43.881,16.072,49.82,37.917"/>
-<path class="st7" d="M131.954,75.429c0.038,0.176,0.086,0.411,0.086,0.411"/>
-<path class="st7" d="M128.209,90.607c-2.405,23.59-22.42,41.995-46.75,41.995c-25.954,0-46.994-20.944-46.994-46.779
-	c0-25.835,21.04-46.779,46.994-46.779c24.22,0,44.162,18.24,46.718,41.675"/>
-<path class="st7" d="M58.725,44.858v42.117v7.256"/>
-<path class="st7" d="M107.08,46.629v40.347v4.245"/>
-<path class="st7" d="M183.957,144.653c-0.873-0.24-1.741-0.499-2.601-0.776"/>
-<path class="st7" d="M193.677,22.517c2.02-0.208,4.072-0.315,6.145-0.315c33.49,0,60.641,27.888,60.641,62.288
-	c0,34.4-27.149,62.288-60.641,62.288c-2.129,0-4.235-0.112-6.309-0.333"/>
-<path class="st7" d="M169.743,30.389c4.386-2.579,9.111-4.608,14.094-6.003"/>
-<path class="st7" d="M234.37,129.53c-10.727,9.467-24.89,15.222-40.415,15.222c-0.198,0-0.396,0-0.594-0.003"/>
-<path class="st7" d="M240.904,47.074c8.556,10.312,13.692,23.496,13.692,37.861c0,14.365-5.259,27.866-14,38.232"/>
-<path class="st7" d="M193.626,25.119c0.11,0,0.22,0,0.329,0c15.699,0,30.005,5.885,40.774,15.539"/>
-<path class="st7" d="M163.876,32.984c6.076-3.429,12.811-5.853,19.969-7.037"/>
-<path class="st7" d="M188.694,144.328c31.687,0,57.375-26.225,57.375-58.574c0-32.349-25.688-58.573-57.375-58.573
-	s-57.375,26.224-57.375,58.573C131.319,118.103,157.007,144.328,188.694,144.328z"/>
-<path class="st7" d="M188.56,134.642c26.321,0,47.658-21.783,47.658-48.653c0-26.87-21.337-48.653-47.658-48.653
-	s-47.658,21.783-47.658,48.653C140.902,112.859,162.239,134.642,188.56,134.642z"/>
-<path class="st7" d="M188.56,124.765c20.977,0,37.982-17.361,37.982-38.776c0-21.415-17.005-38.776-37.982-38.776
-	s-37.982,17.361-37.982,38.776C150.578,107.404,167.583,124.765,188.56,124.765z"/>
-<path class="st7" d="M188.52,114.168c15.362,0,27.815-12.713,27.815-28.395c0-15.682-12.453-28.395-27.815-28.395
-	s-27.816,12.713-27.816,28.395C160.704,101.455,173.158,114.168,188.52,114.168z"/>
-<path class="st7" d="M188.669,96.992c6.093,0,11.032-5.042,11.032-11.261c0-6.219-4.939-11.261-11.032-11.261
-	c-6.092,0-11.031,5.042-11.031,11.261C177.638,91.95,182.577,96.992,188.669,96.992z"/>
-<path class="st7" d="M136.087,48.245l-5.006-1.44V26.749"/>
-<path class="st7" d="M141.465,25.181l21.919,4.579c1.446,0.301,2.759,0.8,3.889,1.448"/>
-<path class="st7" d="M161.138,34.21c-1.299-1.016-2.979-1.787-4.91-2.192l-25.15-5.269l0.613-0.155"/>
-<path class="st7" d="M130.842,138.024l22.495,6.061c3.981,1.072,7.922-1.827,7.922-5.832v-0.728"/>
-<path class="st7" d="M130.842,118.061v20.056"/>
-<path class="st7" d="M131.338,117.89l-0.496,0.171l8.305,2.099"/>
-<path class="st7" d="M167.748,140.301l-10.028,3.419"/>
-<path class="st7" d="M130.59,12.093h-7.037v11.944h7.037"/>
-<path class="st6" d="M127.346,17.546c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.792-1.776,1.768C125.57,16.755,126.365,17.546,127.346,17.546z"/>
-<path class="st6" d="M82.817,24.951c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.792-1.776,1.768C81.041,24.16,81.836,24.951,82.817,24.951z"/>
-<path class="st6" d="M112.915,32.061c0.981,0,1.776-0.792,1.776-1.768s-0.795-1.768-1.776-1.768s-1.776,0.792-1.776,1.768
-	S111.934,32.061,112.915,32.061z"/>
-<path class="st6" d="M54.672,30.149c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.792-1.776,1.768C52.896,29.357,53.691,30.149,54.672,30.149z"/>
-<path class="st6" d="M20.149,73.701c0.981,0,1.776-0.791,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768s-1.776,0.792-1.776,1.768
-	C18.373,72.909,19.168,73.701,20.149,73.701z"/>
-<path class="st6" d="M20.564,100.896c0.981,0,1.776-0.792,1.776-1.769c0-0.976-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.792-1.776,1.768C18.788,100.104,19.583,100.896,20.564,100.896z"/>
-<path class="st6" d="M30.993,126.434c0.981,0,1.776-0.791,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768s-1.776,0.792-1.776,1.768
-	C29.217,125.643,30.012,126.434,30.993,126.434z"/>
-<path class="st6" d="M34.312,46.274c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.792-1.776,1.768C32.536,45.483,33.331,46.274,34.312,46.274z"/>
-<path class="st6" d="M127.346,22.146c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.791-1.776,1.768C125.57,21.355,126.365,22.146,127.346,22.146z"/>
-<path class="st7" d="M131.08,35.333h-7.289v11.944h7.319"/>
-<path class="st6" d="M127.745,40.743c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.792-1.776,1.768C125.969,39.952,126.764,40.743,127.745,40.743z"/>
-<path class="st6" d="M127.745,45.343c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.792-1.776,1.768C125.969,44.552,126.764,45.343,127.745,45.343z"/>
-<path class="st7" d="M130.591,130.405h-7.29v11.944h7.319"/>
-<path class="st6" d="M127.258,135.816c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.791-1.776,1.768C125.482,135.024,126.277,135.816,127.258,135.816z"/>
-<path class="st6" d="M45.571,135.578c0.981,0,1.776-0.791,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.792-1.776,1.768C43.795,134.787,44.591,135.578,45.571,135.578z"/>
-<path class="st6" d="M49.303,138.469c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.791-1.776,1.768C47.527,137.677,48.322,138.469,49.303,138.469z"/>
-<path class="st6" d="M127.258,140.416c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768
-	c-0.981,0-1.776,0.791-1.776,1.768C125.482,139.624,126.277,140.416,127.258,140.416z"/>
-<path class="st7" d="M141.331,25.733c0,0.896-2.31,1.621-5.155,1.621s-5.154-0.725-5.154-1.621"/>
-<path class="st7" d="M131.019,8.778c0-0.896,2.309-1.621,5.154-1.621s5.154,0.725,5.154,1.621"/>
-<path class="st7" d="M140.168,6.103c-0.946-0.363-2.382-0.595-3.992-0.595c-1.423,0-2.714,0.181-3.646,0.475
-	c0,0,0.415-4.347,3.882-4.347C139.878,1.637,140.168,6.103,140.168,6.103z"/>
-<path class="st7" d="M131.019,8.778v16.955"/>
-<path class="st7" d="M141.301,8.49v17.427"/>
-<path class="st7" d="M141.124,144.296c0,0.896-2.309,1.621-5.154,1.621s-5.154-0.725-5.154-1.621"/>
-<path class="st7" d="M130.813,138.117v6.179"/>
-<path class="st7" d="M141.111,140.952v3.442"/>
-<path class="st7" d="M140.792,118.224c-0.911,0.458-2.532,0.765-4.378,0.765c-2.847,0-5.154-0.725-5.154-1.621"/>
-<path class="st7" d="M137.749,58.533c-0.426,0.035-0.874,0.056-1.337,0.056c-2.848,0-5.155-0.725-5.155-1.621"/>
-<path class="st7" d="M133.034,70.813c-1.088-0.299-1.777-0.736-1.777-1.227"/>
-<path class="st7" d="M135.086,106.872c-2.205-0.184-3.829-0.816-3.829-1.568"/>
-<path class="st7" d="M131.257,111.189v6.179"/>
-<path class="st7" d="M133.969,7.287V6.111"/>
-<path class="st7" d="M138.59,7.333V6.154"/>
-<path class="st7" d="M131.257,47.218v10.499v60.168"/>
-<path class="st7" d="M45.191,129.562l-4.243,5.198l8.61,6.365l4.369-5.328"/>
-<path class="st7" d="M183.524,47.424v-9.555"/>
-<path class="st7" d="M193.923,47.424v-9.555"/>
-<path class="st7" d="M156.231,65.578l-7.705-5.699"/>
-<path class="st7" d="M162.73,57.269l-7.707-5.699"/>
-<path class="st7" d="M220.921,65.6l7.378-6.112"/>
-<path class="st7" d="M214.505,57.482l7.381-6.112"/>
-<path class="st7" d="M155.146,120.458l7.377-6.114"/>
-<path class="st7" d="M148.73,112.338l7.38-6.112"/>
-<path class="st7" d="M222.006,120.701l-7.704-5.699"/>
-<path class="st7" d="M228.506,112.392l-7.708-5.702"/>
-<path class="st7" d="M183.524,134.016v-9.555"/>
-<path class="st7" d="M193.923,134.016v-9.555"/>
-<path class="st7" d="M186.277,57.599v16.899"/>
-<path class="st7" d="M191.255,57.599v16.899"/>
-<path class="st7" d="M186.277,97.002v16.899"/>
-<path class="st7" d="M191.255,97.002v16.899"/>
-<path class="st6" d="M194.365,82.669h-11.911v6.195h11.911V82.669z"/>
-<path class="st7" d="M177.745,84.055h-16.8"/>
-<path class="st7" d="M177.745,88.301h-16.8"/>
-<path class="st7" d="M215.995,84.055h-16.384"/>
-<path class="st7" d="M215.995,88.301h-16.384"/>
-<path class="st7" d="M150.811,90.632h-9.48"/>
-<path class="st7" d="M150.811,80.605h-9.48"/>
-<path class="st7" d="M235.905,90.632h-9.481"/>
-<path class="st7" d="M235.905,80.605h-9.481"/>
-<path class="st7" d="M178.937,79.791l-12.808-10.659"/>
-<path class="st7" d="M182.27,76.432L169.465,65.77"/>
-<path class="st7" d="M198.44,80.146l12.806-10.661"/>
-<path class="st7" d="M195.284,76.608l12.805-10.661"/>
-<path class="st7" d="M169.465,105.893l12.805-10.659"/>
-<path class="st7" d="M166.309,102.354l12.805-10.661"/>
-<path class="st7" d="M207.706,105.776l-12.805-10.662"/>
-<path class="st7" d="M211.039,102.413l-12.806-10.661"/>
-<path class="st7" d="M240.205,48.248c0.887-0.656,0.412-2.786-1.059-4.756c-1.472-1.97-3.384-3.035-4.271-2.378
-	c-0.887,0.657-0.413,2.786,1.059,4.756C237.406,47.84,239.318,48.904,240.205,48.248z"/>
-<path class="st7" d="M188.814,22.322c2.545,0,4.608-0.445,4.608-0.995c0-0.549-2.063-0.995-4.608-0.995
-	c-2.544,0-4.607,0.445-4.607,0.995C184.207,21.877,186.27,22.322,188.814,22.322z"/>
-<path class="st7" d="M252.215,89.931c1.104-0.046,1.915-2.119,1.81-4.631c-0.105-2.512-1.085-4.511-2.19-4.465
-	c-1.104,0.046-1.914,2.119-1.809,4.631C250.131,87.978,251.111,89.977,252.215,89.931z"/>
-<path class="st7" d="M239.264,127.151c1.355-2.121,1.698-4.319,0.765-4.91c-0.932-0.59-2.787,0.651-4.142,2.772
-	c-1.356,2.121-1.699,4.32-0.766,4.91C236.053,130.514,237.908,129.273,239.264,127.151z"/>
-<path class="st7" d="M190.633,76.887h-3.911v3.893h3.911V76.887z"/>
-<path class="st7" d="M190.633,90.338h-3.911v3.893h3.911V90.338z"/>
-<path class="st7" d="M96.014,94.496h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619
-	H92.129c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H96.014z"/>
-<path class="st7" d="M74.091,94.496H87.44c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619H70.207
-	c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H74.091z"/>
-<path class="st7" d="M52.167,94.496h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619
-	H48.283c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H52.167z"/>
-<path class="st7" d="M96.014,109.36h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619
-	H92.129c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H96.014z"/>
-<path class="st7" d="M114.903,116.792h-0.82c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202
-	h2.505"/>
-<path class="st7" d="M74.091,109.36H87.44c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619H70.207
-	c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H74.091z"/>
-<path class="st7" d="M52.167,109.36h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619
-	H48.283c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H52.167z"/>
-<path class="st7" d="M91.772,131.039l3.887-6.61c0.075-0.125,0.209-0.203,0.356-0.203h10.311"/>
-<path class="st7" d="M69.848,131.039l3.887-6.61c0.075-0.125,0.209-0.203,0.356-0.203h13.349c0.147,0,0.281,0.078,0.356,0.203
-	l3.78,6.429"/>
-<path class="st7" d="M54.726,124.224h10.791c0.147,0,0.281,0.077,0.356,0.202l3.772,6.416"/>
-<path class="st7" d="M40.993,109.36h2.566c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619h-1.254
-	"/>
-<path class="st7" d="M85.169,87.063h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.038,0.619-0.357,0.619
-	h-21.12c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H85.169z"/>
-<path class="st7" d="M74.06,79.455h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619H70.175
-	c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H74.06z"/>
-<path class="st7" d="M63.248,87.063h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619
-	H59.363c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H63.248z"/>
-<path class="st7" d="M85.169,101.928h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.038,0.619-0.357,0.619
-	h-21.12c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H85.169z"/>
-<path class="st7" d="M122.071,109.36h-18.833c-0.318,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.357-0.202
-	h13.349c0.147,0,0.281,0.077,0.356,0.202l1.798,3.059l0.809,1.427"/>
-<path class="st7" d="M63.248,101.928h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619
-	H59.363c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H63.248z"/>
-<path class="st7" d="M38.858,105.362l1.899-3.232c0.075-0.125,0.209-0.202,0.356-0.202h13.349c0.147,0,0.281,0.077,0.356,0.202
-	l3.887,6.611c0.161,0.275-0.038,0.619-0.356,0.619H40.996"/>
-<path class="st7" d="M85.169,116.792h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.038,0.619-0.357,0.619
-	h-21.12c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H85.169z"/>
-<path class="st7" d="M106.325,124.224h0.281"/>
-<path class="st7" d="M108.385,124.224h-5.147c-0.318,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.357-0.202
-	h9.555"/>
-<path class="st7" d="M63.248,116.792h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619
-	H59.363c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H63.248z"/>
-<path class="st7" d="M46.461,116.792h8.002c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619
-	h-3.622"/>
-<path class="st7" d="M87.406,79.455h5.717c0.311,0,0.6,0.165,0.756,0.435l4.134,7.173"/>
-<path class="st7" d="M98.191,87.005h5.717c0.311,0,0.6,0.165,0.756,0.435l3.954,6.864"/>
-<path class="st7" d="M109.271,94.496h5.717c0.311,0,0.6,0.165,0.756,0.435l3.956,6.867"/>
-<path class="st7" d="M120.413,101.928h5.095"/>
-<path class="st7" d="M132.442,5.904L1.661,5.928v136.434h12.845"/>
-<path class="st7" d="M152.887,17.962l-0.088-12.064l-12.535,0.003"/>
-<path class="st8" d="M74.159,84.056c0,0,0.356-4.483,1.897-5.544c1.54-1.061,4.147-1.651,4.147-1.651s-4.029-0.235-4.86-2.36
-	c-0.83-2.123-1.658-4.011-1.658-4.011s-0.236,3.421-1.897,4.483c-1.661,1.061-4.742,1.888-4.742,1.888s4.621,0.472,5.452,2.477
-	c0.83,2.005,1.658,4.72,1.658,4.72L74.159,84.056z"/>
-<path class="st7" d="M81.837,76.69c-6.135,0.907-6.874,1.645-7.785,7.749c-0.911-6.107-1.653-6.843-7.785-7.749
-	c6.135-0.907,6.874-1.645,7.785-7.749C74.962,75.048,75.704,75.784,81.837,76.69z"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 262 152" style="enable-background:new 0 0 262 152" xml:space="preserve"><style type="text/css">.st0{fill:#d18000}.st1{fill:#722b03}.st2{fill:#003c73}.st3{fill:#fed607}.st4{fill:#fff2b2}.st5{fill:#e4bc07}.st6{fill:#002140}.st7{fill:none;stroke:#002140;stroke-linecap:round;stroke-linejoin:round}.st8{fill:#50eef6}</style><path d="M152.957,142.282h-6.556l-5.242-1.416L1.607,142.282V5.848h151.35V142.282z" class="st0"/><path d="M152.801,142.106l-11.139-1.298l-0.474,1.298H14.495V18.058h138.305V142.106z" class="st1"/><path d="M81.263,132.666c26.026,0,47.125-21.021,47.125-46.952c0-25.931-21.099-46.952-47.125-46.952	c-26.027,0-47.125,21.021-47.125,46.952C34.138,111.645,55.236,132.666,81.263,132.666z" class="st2"/><path d="M123.737,106.802l-3.021-4.778h-6.845l-4.356-7.52h-6.577L98.85,87.16h-6.756l-4.801-7.608h-13.51l-4.177,7.256	h-6.488l-4.356,7.608h-6.756l-4.356,7.432h-6.845l-1.779,3.45c0,0,5.867,13.715,18.932,21.147s27.467,6.016,30.577,5.84	c3.11-0.176,24.534-4.955,35.199-25.483H123.737z" class="st3"/><path d="M123.737,106.802l-3.022-4.776l4.887-0.266L123.737,106.802z" class="st4"/><path d="M113.871,102.026h6.044l-4.533-7.434h-5.867L113.871,102.026z" class="st4"/><path d="M102.938,94.504h5.599l-4.088-7.253l-5.601-0.091L102.938,94.504z" class="st4"/><path d="M92.094,87.16h6.132l-4.444-7.784h-6.132L92.094,87.16z" class="st4"/><path d="M82.005,79.552c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829	c0,0,2.398-5.651,3.954-5.651c1.557,0,7.244,0.133,7.244,0.133V79.552z" class="st4"/><path d="M71.203,87.205c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829	c0,0,2.398-5.651,3.954-5.651c1.556,0,7.244,0.133,7.244,0.133V87.205z" class="st4"/><path d="M59.708,94.754c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829	c0,0,2.398-5.65,3.954-5.65c1.557,0,7.244,0.133,7.244,0.133V94.754z" class="st4"/><path d="M81.871,94.754c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829	c0,0,2.398-5.65,3.954-5.65c1.556,0,7.244,0.133,7.244,0.133V94.754z" class="st4"/><path d="M93.19,87.029c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.003	c0,0,1.09-0.648,1.348-0.648c1.557,0,7.244,0.133,7.244,0.133L93.19,87.029z" class="st4"/><path d="M103.56,94.578c0,0-0.177,1.637-2.211,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.003	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L103.56,94.578z" class="st4"/><path d="M71.086,102.01c0,0-0.177,1.638-2.21,2.19c-0.964,0.269-1.982,0.216-2.984,0.186	c-0.086-0.002-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.002	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L71.086,102.01z" class="st4"/><path d="M93.013,102.01c0,0-0.177,1.638-2.21,2.19c-0.964,0.269-1.982,0.216-2.984,0.186	c-0.086-0.002-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.002	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L93.013,102.01z" class="st4"/><path d="M114.758,102.01c0,0-0.177,1.638-2.21,2.19c-0.965,0.269-1.983,0.216-2.985,0.186	c-0.085-0.002-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.604-5.002	c0,0,1.09-0.648,1.347-0.648c1.557,0,7.244,0.133,7.244,0.133L114.758,102.01z" class="st4"/><path d="M104.093,109.56c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L104.093,109.56z" class="st4"/><path d="M120.587,111.936c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288	c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003c0,0,1.09-0.648,1.347-0.648c0.656,0,2.052,0.024,3.445,0.051" class="st4"/><path d="M115.293,116.874c0,0-0.176,1.638-2.21,2.19c-0.964,0.269-1.982,0.216-2.984,0.186	c-0.086-0.002-0.177-0.005-0.257,0.027c-0.129,0.051-0.212,0.173-0.292,0.288c-1.203,1.757-3.319,2.853-5.454,2.829l2.603-5.002	c0,0,1.091-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L115.293,116.874z" class="st4"/><path d="M103.796,124.544c0,0-0.177,1.637-2.211,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L103.796,124.544z" class="st4"/><path d="M81.989,124.544c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003	c0,0,1.09-0.648,1.348-0.648c1.556,0,7.244,0.133,7.244,0.133L81.989,124.544z" class="st4"/><path d="M54.798,124.544c0.171-0.08,0.316-0.134,0.391-0.134c1.556,0,7.244,0.134,7.244,0.134s-0.177,1.637-2.21,2.189	c-0.477,0.133-0.967,0.187-1.463,0.205" class="st4"/><path d="M82.048,109.56c0,0-0.177,1.637-2.21,2.189c-0.965,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003	c0,0,1.09-0.648,1.347-0.648c1.556,0,7.244,0.133,7.244,0.133L82.048,109.56z" class="st4"/><path d="M71.383,116.816c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003	c0,0,1.09-0.648,1.347-0.648c1.557,0,7.244,0.133,7.244,0.133L71.383,116.816z" class="st4"/><path d="M93.307,116.816c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003	c0,0,1.09-0.648,1.347-0.648c1.556,0,7.244,0.133,7.244,0.133L93.307,116.816z" class="st4"/><path d="M60.241,109.56c0,0-0.177,1.637-2.21,2.189c-0.964,0.269-1.982,0.216-2.984,0.187	c-0.086-0.003-0.177-0.006-0.257,0.026c-0.129,0.051-0.212,0.174-0.292,0.288c-1.203,1.758-3.319,2.854-5.454,2.83l2.604-5.003	c0,0,1.09-0.648,1.347-0.648c1.556,0,7.244,0.133,7.244,0.133L60.241,109.56z" class="st4"/><path d="M46.006,116.696c2.242,0.032,6.001,0.12,6.001,0.12s-0.177,1.637-2.21,2.189	c-0.418,0.117-0.847,0.173-1.28,0.197" class="st4"/><path d="M38.652,105.184c0.825-1.539,1.937-3.248,2.792-3.248c1.556,0,7.244,0.133,7.244,0.133s-0.177,1.637-2.21,2.189	c-0.964,0.27-1.982,0.216-2.984,0.187c-0.086-0.003-0.177-0.005-0.257,0.027c-0.129,0.05-0.212,0.173-0.292,0.288	c-0.793,1.157-1.985,2.029-3.316,2.482" class="st4"/><path d="M80.939,93.797l3.689-6.637h-7.6L80.939,93.797z" class="st5"/><path d="M91.692,101.405l3.689-6.635h-7.6L91.692,101.405z" class="st5"/><path d="M69.738,101.229l3.689-6.637h-7.6L69.738,101.229z" class="st5"/><path d="M58.894,108.749l3.689-6.635h-7.6L58.894,108.749z" class="st5"/><path d="M47.961,115.829l3.689-6.637h-7.6L47.961,115.829z" class="st5"/><path d="M69.738,115.829l3.689-6.637h-7.6L69.738,115.829z" class="st5"/><path d="M80.759,108.749l3.689-6.635h-7.6L80.759,108.749z" class="st5"/><path d="M103.07,108.749l3.688-6.635h-7.6L103.07,108.749z" class="st5"/><path d="M113.914,116.359l3.689-6.637h-7.6L113.914,116.359z" class="st5"/><path d="M91.784,116.269l3.686-6.635h-7.597L91.784,116.269z" class="st5"/><path d="M81.027,123.261l3.689-6.637h-7.6L81.027,123.261z" class="st5"/><path d="M58.982,123.437l3.689-6.635h-7.6L58.982,123.437z" class="st5"/><path d="M102.804,123.437l3.689-6.635h-7.6L102.804,123.437z" class="st5"/><path d="M92.048,131.045l3.689-6.635h-7.6L92.048,131.045z" class="st5"/><path d="M69.915,130.781l3.689-6.637h-7.6L69.915,130.781z" class="st5"/><path d="M188.356,27.082c0,0-26.074-0.589-43.851,21.235c-10.429,12.032-13.157,27.371-13.036,38.104	c0.118,10.736,3.793,31.381,20.148,44.123c16.355,12.741,32,14.274,38.636,13.802c0,0,26.548,0.944,43.08-21.882	c16.532-22.827,12.977-43.531,10.488-53.088c-2.489-9.555-11.734-27.251-30.754-36.629c-10.668-4.6-20.62-5.523-24.711-5.661V27.082	z" class="st5"/><path d="M188.683,134.85c26.427,0,47.851-21.807,47.851-48.707c0-26.9-21.424-48.707-47.851-48.707	c-26.428,0-47.852,21.807-47.852,48.707C140.831,113.043,162.255,134.85,188.683,134.85z" class="st0"/><path d="M188.356,124.586c20.913,0,37.867-17.231,37.867-38.488c0-21.256-16.954-38.488-37.867-38.488	s-37.867,17.232-37.867,38.488C150.489,107.355,167.443,124.586,188.356,124.586z" class="st5"/><path d="M188.268,114.146c15.365,0,27.82-12.662,27.82-28.283c0-15.62-12.455-28.283-27.82-28.283	s-27.821,12.663-27.821,28.283C160.447,101.484,172.903,114.146,188.268,114.146z" class="st0"/><path d="M188.445,97.157c6.038,0,10.932-5.149,10.932-11.501c0-6.352-4.894-11.501-10.932-11.501	c-6.038,0-10.933,5.149-10.933,11.501C177.512,92.007,182.407,97.157,188.445,97.157z" class="st5"/><path d="M193.157,144.408c0,0,25.954-1.771,40.176-21.944c7.999-10.795,12.444-19.819,12.8-38.224	c0.356-18.403-11.201-36.984-22.932-45.301c-11.733-8.317-27.732-15.219-49.598-9.909c0,0,8.356-6.016,21.51-6.547	c13.156-0.531,41.065,1.061,58.666,33.8c5.687,11.501,8.178,26.899,5.154,40.877c-3.022,13.979-10.668,34.507-36.444,45.126	c-8.356,2.301-17.065,5.84-28.978,4.248l-0.357-2.123L193.157,144.408z" class="st0"/><path d="M184.209,27.319h9.245v-5.781c0,0-0.592-1.061-4.385-1.179c-3.794-0.117-4.978,1.061-4.978,1.061	L184.209,27.319z" class="st5"/><path d="M229.719,45.016l4.503-3.776c0,0,2.489-1.299,4.742,1.651c2.253,2.949,1.658,5.192,0.356,6.253	c-1.304,1.061-3.555,2.715-3.555,2.715l-6.044-6.843H229.719z" class="st5"/><path d="M245.956,90.079c0,0,5.106,0.376,5.687,0.117c0.581-0.259,2.371-1.771,2.489-3.776	c0.118-2.005-0.236-4.837-1.779-5.427c-1.54-0.589-6.162,0-6.162,0l-0.235,9.083V90.079z" class="st5"/><path d="M230.075,126.533l4.503,3.304c0,0,2.253,1.061,4.268-2.005c2.015-3.067,1.658-5.192,0.948-5.899	c-0.71-0.707-4.147-2.36-4.147-2.36l-5.569,6.96H230.075z" class="st5"/><path d="M184.327,144.111c0,0-0.357,5.662,0.356,6.488c0.71,0.827,7.94,0.235,7.94,0.235s0.772-0.413,0.831-2.36	c0.059-1.947-0.298-4.069-0.298-4.069l-8.829-0.296V144.111z" class="st5"/><path d="M183.497,37.936v9.437c0,0,8.058-0.472,10.429,0.235l0.118-9.909c0,0-6.757-0.707-10.547,0.235V37.936z" class="st0"/><path d="M186.224,57.52l0.176,17.165c0,0,3.199-0.885,4.622,0l0.533-17.165h-5.334H186.224z" class="st1"/><path d="M186.341,96.922v17.107c0,0,4.621,0.354,5.096,0L191.08,96.57c0,0-3.08,0.707-4.741,0.355L186.341,96.922z" class="st1"/><path d="M183.379,124.41l0.117,10.147c0,0,8.415,0.706,10.547-0.118v-10.026c0,0-8.178,0.234-10.667,0L183.379,124.41z" class="st1"/><path d="M194.995,76.514l12.918-10.736c0,0,2.962,2.595,3.198,3.539L198.55,80.17L194.995,76.514z" class="st1"/><path d="M179.114,80.17l3.319-3.776l-13.036-10.853c0,0-3.08,2.36-3.198,3.776l12.918,10.853H179.114z" class="st1"/><path d="M177.691,84.063h-16.949l0.12,4.483h16.829V84.063z" class="st1"/><path d="M199.616,83.946l-0.118,4.365h16.829l-0.118-4.365H199.616z" class="st1"/><path d="M198.075,91.733l-2.845,3.184l12.682,10.97l3.199-3.538L198.075,91.733z" class="st1"/><path d="M182.43,94.917l-3.437-3.184l-12.917,10.616l3.319,3.658L182.43,94.917z" class="st1"/><path d="M141.306,90.906h9.598l-0.235-10.381h-9.599C141.07,80.525,140.596,89.49,141.306,90.906z" class="st1"/><path d="M148.417,112.495l6.638,8.022l7.584-6.254l-6.518-7.784L148.417,112.495z" class="st1"/><path d="M214.074,114.856l7.941,5.898c0,0,6.282-7.432,6.4-8.493l-7.705-5.544c0,0-5.687,8.141-6.636,8.141V114.856z" class="st1"/><path d="M226.638,90.789h9.481c0,0,0.356-8.493-0.236-10.147l-9.719,0.117c0,0,0.474,8.965,0.474,10.027V90.789z" class="st1"/><path d="M183.497,47.375l10.429,0.235v-9.909c0,0-7.705-0.472-10.429,0.235v9.437V47.375z" class="st1"/><path d="M214.312,57.52c0,0,5.688,6.371,6.636,8.259l7.466-6.371c0,0-5.569-7.432-6.756-7.904l-7.348,6.016H214.312z" class="st1"/><path d="M156.003,65.661l6.874-8.376l-7.823-5.781c0,0-5.808,6.133-6.517,8.493l7.466,5.661V65.661z" class="st1"/><path d="M141.544,8.445l-2.845-1.179l-0.117-1.416l1.778,0.235c0,0-0.71-4.483-3.911-4.483	c-3.201,0-4.029,4.011-4.029,4.011l1.54-0.117v1.771l-2.845,1.299v3.539h-7.822v11.915h7.822v11.208h-7.466v12.152h7.348v33.387	l1.067-4.837c0,0,3.911-21.944,18.013-33.504c7.11-6.371,17.303-11.325,17.303-11.325l-2.489-0.944l-23.703-5.309l0.356-16.397	V8.445z" class="st0"/><path d="M131.204,92.911v25.395l-0.445,0.886v11.237h-7.466v12.123h7.466v1.946c0,0,7.201,3.539,10.4-0.088v-3.538	l13.866,3.626l4.356-1.24l8.267-3.008c0,0-12.888-4.954-21.689-15.218c-8.8-10.264-12.532-22.475-13.598-29.286l-1.155-2.832	L131.204,92.911z" class="st0"/><path d="M53.962,135.648l-8.889-5.928l-4.091,4.776l8.712,6.637L53.962,135.648z" class="st0"/><path d="M132.417,5.613c0,0,6.518,0,7.94,0.472c0,0-1.184-4.6-3.911-4.483C133.719,1.72,132.653,4.434,132.417,5.613z" class="st1"/><path d="M136.685,27.792l21.568,4.955l2.845,1.533l6.282-3.184l-5.095-1.771l-20.623-4.011l-1.304,1.179L136.685,27.792	z" class="st1"/><path d="M130.995,47.376V57.64c0,0,4.977,1.061,6.992,0.827l2.845-5.192l-0.357-4.011l-8.532-2.36	C131.943,46.904,130.995,46.549,130.995,47.376z" class="st1"/><path d="M158.253,143.522l9.392-3.274l-6.429-3.096C161.216,137.152,162.282,141.28,158.253,143.522z" class="st1"/><path d="M131.586,117.805c0,0,1.541,1.061,3.437,0.944c1.897-0.117,5.334,0.589,5.926-0.827	c0,0-4.621-7.314-5.687-11.09c0,0-3.818-0.598-3.911-1.062c-0.094-0.464,0.093,0.467,0.093,0.467L131.586,117.805z" class="st1"/><path d="M141.159,140.866l-10.282-2.89l-0.118,6.517c0,0,1.321,1.317,4.86,1.269c3.539-0.048,5.54-1.357,5.54-1.357	V140.866z" class="st1"/><path d="M146.313,46.194l-5.066-3.715l-1.066,0.352l-4.445,6.549l0.445,1.061l4.176,2.832L146.313,46.194z" class="st5"/><path d="M131.204,81.144c0,0-4.177-0.973-6.223,0.176c-1.155,2.744,0,8.581,0,8.581l2.665,0.355l3.644-0.176	l-0.089-8.936H131.204z" class="st5"/><path d="M141.159,118.749c0,0-4.89,3.627-4.89,3.893c0,0.267,1.868,3.008,1.868,3.008l2.933,3.982	c0,0,1.423-0.088,1.956-0.443c0.533-0.355,3.999-3.275,3.999-3.275l-5.866-7.168V118.749z" class="st5"/><path d="M128.27,80.525l2.816,0.384V57.018c0,0-12.712-22.384-38.488-27.517c0,0-38.665-8.493-60.887,27.251	c0,0-10.667,19.112-6.665,38.931c4.002,19.819,18.487,34.949,31.376,40.877c12.888,5.928,27.467,5.574,31.909,5.222	c4.444-0.355,25.6-5.131,34.754-17.52c7.201-8.848,7.999-11.059,7.999-11.059V90.021l-2.933,0.267c0,0-1.868,17.254-11.466,26.189	c-9.599,8.936-17.954,15.749-38.132,15.749c-20.178,0-36.088-16.016-40.977-29.728c-4.889-13.715-4-28.667,3.734-41.408	c7.734-12.741,23.111-23.269,41.775-22.384c18.666,0.885,31.199,13.005,32.798,15.043c1.599,2.035,12.591,16.133,12.385,26.779	L128.27,80.525z" class="st0"/><path d="M128.091,80.88c0,0-6.577-28.077-36.798-36.099c-30.221-8.021-48.65,14.392-48.65,14.392S55.62,39,82.109,39	c26.49,0,43.613,22.296,45.984,41.88" class="st6"/><path d="M193.422,21.445c0.132,1.152,0.29,3.371-0.11,5.496" class="st7"/><path d="M184.268,26.941c0,0-0.482-2.728-0.12-5.533" class="st7"/><path d="M140.668,53.362c0,0-2.499-1.213-4.567-3.155c-0.343-0.32-0.426-0.832-0.206-1.245	c0.594-1.133,1.993-3.499,4.406-6.011c0.335-0.347,0.863-0.427,1.284-0.189c1.012,0.571,2.909,1.749,4.401,3.32" class="st7"/><path d="M240.172,48.272c-0.804,0.837-2.419,2.376-4.316,3.429" class="st7"/><path d="M230.073,44.778c0,0,1.797-2.112,4.197-3.629c0.188-0.117,0.4-0.171,0.609-0.16" class="st7"/><path d="M131.258,90.128c0,0-2.741,0.48-5.559,0.12c-0.466-0.059-0.836-0.424-0.903-0.885	c-0.187-1.264-0.455-3.997,0.016-7.443c0.064-0.477,0.445-0.851,0.924-0.904c1.158-0.131,3.387-0.288,5.522,0.109" class="st7"/><path d="M146.648,126.141c0,0-1.913,2.011-4.396,3.389c-0.41,0.23-0.925,0.155-1.257-0.176	c-0.908-0.904-2.757-2.941-4.439-5.989c-0.233-0.421-0.15-0.947,0.204-1.275c0.852-0.792,2.547-2.237,4.503-3.184" class="st7"/><path d="M235.214,130.034c-0.14-0.016-0.279-0.058-0.408-0.133c-1.01-0.576-2.898-1.768-4.38-3.349" class="st7"/><path d="M235.789,119.306c0,0,2.296,1.134,4.3,2.955" class="st7"/><path d="M193.221,144.399c0,0,0.482,2.728,0.121,5.534c-0.059,0.464-0.426,0.832-0.89,0.898	c-1.27,0.187-4.016,0.454-7.477-0.016c-0.479-0.064-0.854-0.442-0.908-0.92c-0.131-1.152-0.289-3.37,0.11-5.496" class="st7"/><path d="M252.227,89.941c-0.115,0.064-0.246,0.104-0.383,0.12c-1.157,0.131-3.386,0.288-5.521-0.109" class="st7"/><path d="M246.32,80.949c0,0,2.631-0.461,5.39-0.141" class="st7"/><path d="M141.48,17.962h11.407v6.885v1.563v1.107" class="st7"/><path d="M125.836,142.362H14.507v-124.4h108.84" class="st7"/><path d="M131.277,113.282c-9.768,17.352-28.416,29.08-49.818,29.08c-31.515,0-57.064-25.432-57.064-56.802	c0-31.371,25.549-56.803,57.064-56.803c21.383,0,40.018,11.707,49.791,29.032" class="st7"/><path d="M131.249,99.653c-5.974,21.792-26.004,37.813-49.793,37.813c-28.504,0-51.61-23-51.61-51.373	c0-28.373,23.106-51.373,51.61-51.373c23.826,0,43.881,16.072,49.82,37.917" class="st7"/><path d="M131.954,75.429c0.038,0.176,0.086,0.411,0.086,0.411" class="st7"/><path d="M128.209,90.607c-2.405,23.59-22.42,41.995-46.75,41.995c-25.954,0-46.994-20.944-46.994-46.779	c0-25.835,21.04-46.779,46.994-46.779c24.22,0,44.162,18.24,46.718,41.675" class="st7"/><path d="M58.725,44.858v42.117v7.256" class="st7"/><path d="M107.08,46.629v40.347v4.245" class="st7"/><path d="M183.957,144.653c-0.873-0.24-1.741-0.499-2.601-0.776" class="st7"/><path d="M193.677,22.517c2.02-0.208,4.072-0.315,6.145-0.315c33.49,0,60.641,27.888,60.641,62.288	c0,34.4-27.149,62.288-60.641,62.288c-2.129,0-4.235-0.112-6.309-0.333" class="st7"/><path d="M169.743,30.389c4.386-2.579,9.111-4.608,14.094-6.003" class="st7"/><path d="M234.37,129.53c-10.727,9.467-24.89,15.222-40.415,15.222c-0.198,0-0.396,0-0.594-0.003" class="st7"/><path d="M240.904,47.074c8.556,10.312,13.692,23.496,13.692,37.861c0,14.365-5.259,27.866-14,38.232" class="st7"/><path d="M193.626,25.119c0.11,0,0.22,0,0.329,0c15.699,0,30.005,5.885,40.774,15.539" class="st7"/><path d="M163.876,32.984c6.076-3.429,12.811-5.853,19.969-7.037" class="st7"/><path d="M188.694,144.328c31.687,0,57.375-26.225,57.375-58.574c0-32.349-25.688-58.573-57.375-58.573	s-57.375,26.224-57.375,58.573C131.319,118.103,157.007,144.328,188.694,144.328z" class="st7"/><path d="M188.56,134.642c26.321,0,47.658-21.783,47.658-48.653c0-26.87-21.337-48.653-47.658-48.653	s-47.658,21.783-47.658,48.653C140.902,112.859,162.239,134.642,188.56,134.642z" class="st7"/><path d="M188.56,124.765c20.977,0,37.982-17.361,37.982-38.776c0-21.415-17.005-38.776-37.982-38.776	s-37.982,17.361-37.982,38.776C150.578,107.404,167.583,124.765,188.56,124.765z" class="st7"/><path d="M188.52,114.168c15.362,0,27.815-12.713,27.815-28.395c0-15.682-12.453-28.395-27.815-28.395	s-27.816,12.713-27.816,28.395C160.704,101.455,173.158,114.168,188.52,114.168z" class="st7"/><path d="M188.669,96.992c6.093,0,11.032-5.042,11.032-11.261c0-6.219-4.939-11.261-11.032-11.261	c-6.092,0-11.031,5.042-11.031,11.261C177.638,91.95,182.577,96.992,188.669,96.992z" class="st7"/><path d="M136.087,48.245l-5.006-1.44V26.749" class="st7"/><path d="M141.465,25.181l21.919,4.579c1.446,0.301,2.759,0.8,3.889,1.448" class="st7"/><path d="M161.138,34.21c-1.299-1.016-2.979-1.787-4.91-2.192l-25.15-5.269l0.613-0.155" class="st7"/><path d="M130.842,138.024l22.495,6.061c3.981,1.072,7.922-1.827,7.922-5.832v-0.728" class="st7"/><path d="M130.842,118.061v20.056" class="st7"/><path d="M131.338,117.89l-0.496,0.171l8.305,2.099" class="st7"/><path d="M167.748,140.301l-10.028,3.419" class="st7"/><path d="M130.59,12.093h-7.037v11.944h7.037" class="st7"/><path d="M127.346,17.546c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.792-1.776,1.768C125.57,16.755,126.365,17.546,127.346,17.546z" class="st6"/><path d="M82.817,24.951c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.792-1.776,1.768C81.041,24.16,81.836,24.951,82.817,24.951z" class="st6"/><path d="M112.915,32.061c0.981,0,1.776-0.792,1.776-1.768s-0.795-1.768-1.776-1.768s-1.776,0.792-1.776,1.768	S111.934,32.061,112.915,32.061z" class="st6"/><path d="M54.672,30.149c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.792-1.776,1.768C52.896,29.357,53.691,30.149,54.672,30.149z" class="st6"/><path d="M20.149,73.701c0.981,0,1.776-0.791,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768s-1.776,0.792-1.776,1.768	C18.373,72.909,19.168,73.701,20.149,73.701z" class="st6"/><path d="M20.564,100.896c0.981,0,1.776-0.792,1.776-1.769c0-0.976-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.792-1.776,1.768C18.788,100.104,19.583,100.896,20.564,100.896z" class="st6"/><path d="M30.993,126.434c0.981,0,1.776-0.791,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768s-1.776,0.792-1.776,1.768	C29.217,125.643,30.012,126.434,30.993,126.434z" class="st6"/><path d="M34.312,46.274c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.792-1.776,1.768C32.536,45.483,33.331,46.274,34.312,46.274z" class="st6"/><path d="M127.346,22.146c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.791-1.776,1.768C125.57,21.355,126.365,22.146,127.346,22.146z" class="st6"/><path d="M131.08,35.333h-7.289v11.944h7.319" class="st7"/><path d="M127.745,40.743c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.792-1.776,1.768C125.969,39.952,126.764,40.743,127.745,40.743z" class="st6"/><path d="M127.745,45.343c0.981,0,1.776-0.792,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.792-1.776,1.768C125.969,44.552,126.764,45.343,127.745,45.343z" class="st6"/><path d="M130.591,130.405h-7.29v11.944h7.319" class="st7"/><path d="M127.258,135.816c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.791-1.776,1.768C125.482,135.024,126.277,135.816,127.258,135.816z" class="st6"/><path d="M45.571,135.578c0.981,0,1.776-0.791,1.776-1.768c0-0.976-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.792-1.776,1.768C43.795,134.787,44.591,135.578,45.571,135.578z" class="st6"/><path d="M49.303,138.469c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.791-1.776,1.768C47.527,137.677,48.322,138.469,49.303,138.469z" class="st6"/><path d="M127.258,140.416c0.981,0,1.776-0.792,1.776-1.768c0-0.977-0.795-1.768-1.776-1.768	c-0.981,0-1.776,0.791-1.776,1.768C125.482,139.624,126.277,140.416,127.258,140.416z" class="st6"/><path d="M141.331,25.733c0,0.896-2.31,1.621-5.155,1.621s-5.154-0.725-5.154-1.621" class="st7"/><path d="M131.019,8.778c0-0.896,2.309-1.621,5.154-1.621s5.154,0.725,5.154,1.621" class="st7"/><path d="M140.168,6.103c-0.946-0.363-2.382-0.595-3.992-0.595c-1.423,0-2.714,0.181-3.646,0.475	c0,0,0.415-4.347,3.882-4.347C139.878,1.637,140.168,6.103,140.168,6.103z" class="st7"/><path d="M131.019,8.778v16.955" class="st7"/><path d="M141.301,8.49v17.427" class="st7"/><path d="M141.124,144.296c0,0.896-2.309,1.621-5.154,1.621s-5.154-0.725-5.154-1.621" class="st7"/><path d="M130.813,138.117v6.179" class="st7"/><path d="M141.111,140.952v3.442" class="st7"/><path d="M140.792,118.224c-0.911,0.458-2.532,0.765-4.378,0.765c-2.847,0-5.154-0.725-5.154-1.621" class="st7"/><path d="M137.749,58.533c-0.426,0.035-0.874,0.056-1.337,0.056c-2.848,0-5.155-0.725-5.155-1.621" class="st7"/><path d="M133.034,70.813c-1.088-0.299-1.777-0.736-1.777-1.227" class="st7"/><path d="M135.086,106.872c-2.205-0.184-3.829-0.816-3.829-1.568" class="st7"/><path d="M131.257,111.189v6.179" class="st7"/><path d="M133.969,7.287V6.111" class="st7"/><path d="M138.59,7.333V6.154" class="st7"/><path d="M131.257,47.218v10.499v60.168" class="st7"/><path d="M45.191,129.562l-4.243,5.198l8.61,6.365l4.369-5.328" class="st7"/><path d="M183.524,47.424v-9.555" class="st7"/><path d="M193.923,47.424v-9.555" class="st7"/><path d="M156.231,65.578l-7.705-5.699" class="st7"/><path d="M162.73,57.269l-7.707-5.699" class="st7"/><path d="M220.921,65.6l7.378-6.112" class="st7"/><path d="M214.505,57.482l7.381-6.112" class="st7"/><path d="M155.146,120.458l7.377-6.114" class="st7"/><path d="M148.73,112.338l7.38-6.112" class="st7"/><path d="M222.006,120.701l-7.704-5.699" class="st7"/><path d="M228.506,112.392l-7.708-5.702" class="st7"/><path d="M183.524,134.016v-9.555" class="st7"/><path d="M193.923,134.016v-9.555" class="st7"/><path d="M186.277,57.599v16.899" class="st7"/><path d="M191.255,57.599v16.899" class="st7"/><path d="M186.277,97.002v16.899" class="st7"/><path d="M191.255,97.002v16.899" class="st7"/><path d="M194.365,82.669h-11.911v6.195h11.911V82.669z" class="st6"/><path d="M177.745,84.055h-16.8" class="st7"/><path d="M177.745,88.301h-16.8" class="st7"/><path d="M215.995,84.055h-16.384" class="st7"/><path d="M215.995,88.301h-16.384" class="st7"/><path d="M150.811,90.632h-9.48" class="st7"/><path d="M150.811,80.605h-9.48" class="st7"/><path d="M235.905,90.632h-9.481" class="st7"/><path d="M235.905,80.605h-9.481" class="st7"/><path d="M178.937,79.791l-12.808-10.659" class="st7"/><path d="M182.27,76.432L169.465,65.77" class="st7"/><path d="M198.44,80.146l12.806-10.661" class="st7"/><path d="M195.284,76.608l12.805-10.661" class="st7"/><path d="M169.465,105.893l12.805-10.659" class="st7"/><path d="M166.309,102.354l12.805-10.661" class="st7"/><path d="M207.706,105.776l-12.805-10.662" class="st7"/><path d="M211.039,102.413l-12.806-10.661" class="st7"/><path d="M240.205,48.248c0.887-0.656,0.412-2.786-1.059-4.756c-1.472-1.97-3.384-3.035-4.271-2.378	c-0.887,0.657-0.413,2.786,1.059,4.756C237.406,47.84,239.318,48.904,240.205,48.248z" class="st7"/><path d="M188.814,22.322c2.545,0,4.608-0.445,4.608-0.995c0-0.549-2.063-0.995-4.608-0.995	c-2.544,0-4.607,0.445-4.607,0.995C184.207,21.877,186.27,22.322,188.814,22.322z" class="st7"/><path d="M252.215,89.931c1.104-0.046,1.915-2.119,1.81-4.631c-0.105-2.512-1.085-4.511-2.19-4.465	c-1.104,0.046-1.914,2.119-1.809,4.631C250.131,87.978,251.111,89.977,252.215,89.931z" class="st7"/><path d="M239.264,127.151c1.355-2.121,1.698-4.319,0.765-4.91c-0.932-0.59-2.787,0.651-4.142,2.772	c-1.356,2.121-1.699,4.32-0.766,4.91C236.053,130.514,237.908,129.273,239.264,127.151z" class="st7"/><path d="M190.633,76.887h-3.911v3.893h3.911V76.887z" class="st7"/><path d="M190.633,90.338h-3.911v3.893h3.911V90.338z" class="st7"/><path d="M96.014,94.496h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619	H92.129c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H96.014z" class="st7"/><path d="M74.091,94.496H87.44c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619H70.207	c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H74.091z" class="st7"/><path d="M52.167,94.496h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619	H48.283c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H52.167z" class="st7"/><path d="M96.014,109.36h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619	H92.129c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H96.014z" class="st7"/><path d="M114.903,116.792h-0.82c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202	h2.505" class="st7"/><path d="M74.091,109.36H87.44c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619H70.207	c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H74.091z" class="st7"/><path d="M52.167,109.36h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619	H48.283c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H52.167z" class="st7"/><path d="M91.772,131.039l3.887-6.61c0.075-0.125,0.209-0.203,0.356-0.203h10.311" class="st7"/><path d="M69.848,131.039l3.887-6.61c0.075-0.125,0.209-0.203,0.356-0.203h13.349c0.147,0,0.281,0.078,0.356,0.203	l3.78,6.429" class="st7"/><path d="M54.726,124.224h10.791c0.147,0,0.281,0.077,0.356,0.202l3.772,6.416" class="st7"/><path d="M40.993,109.36h2.566c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619h-1.254" class="st7"/><path d="M85.169,87.063h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.038,0.619-0.357,0.619	h-21.12c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H85.169z" class="st7"/><path d="M74.06,79.455h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619H70.175	c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H74.06z" class="st7"/><path d="M63.248,87.063h13.349c0.147,0,0.281,0.077,0.356,0.203l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619	H59.363c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.203,0.356-0.203H63.248z" class="st7"/><path d="M85.169,101.928h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.038,0.619-0.357,0.619	h-21.12c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H85.169z" class="st7"/><path d="M122.071,109.36h-18.833c-0.318,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.357-0.202	h13.349c0.147,0,0.281,0.077,0.356,0.202l1.798,3.059l0.809,1.427" class="st7"/><path d="M63.248,101.928h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619	H59.363c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H63.248z" class="st7"/><path d="M38.858,105.362l1.899-3.232c0.075-0.125,0.209-0.202,0.356-0.202h13.349c0.147,0,0.281,0.077,0.356,0.202	l3.887,6.611c0.161,0.275-0.038,0.619-0.356,0.619H40.996" class="st7"/><path d="M85.169,116.792h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.038,0.619-0.357,0.619	h-21.12c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H85.169z" class="st7"/><path d="M106.325,124.224h0.281" class="st7"/><path d="M108.385,124.224h-5.147c-0.318,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.357-0.202	h9.555" class="st7"/><path d="M63.248,116.792h13.349c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619	H59.363c-0.319,0-0.517-0.344-0.356-0.619l3.887-6.611c0.075-0.125,0.209-0.202,0.356-0.202H63.248z" class="st7"/><path d="M46.461,116.792h8.002c0.147,0,0.281,0.077,0.356,0.202l3.887,6.611c0.161,0.275-0.037,0.619-0.356,0.619	h-3.622" class="st7"/><path d="M87.406,79.455h5.717c0.311,0,0.6,0.165,0.756,0.435l4.134,7.173" class="st7"/><path d="M98.191,87.005h5.717c0.311,0,0.6,0.165,0.756,0.435l3.954,6.864" class="st7"/><path d="M109.271,94.496h5.717c0.311,0,0.6,0.165,0.756,0.435l3.956,6.867" class="st7"/><path d="M120.413,101.928h5.095" class="st7"/><path d="M132.442,5.904L1.661,5.928v136.434h12.845" class="st7"/><path d="M152.887,17.962l-0.088-12.064l-12.535,0.003" class="st7"/><path d="M74.159,84.056c0,0,0.356-4.483,1.897-5.544c1.54-1.061,4.147-1.651,4.147-1.651s-4.029-0.235-4.86-2.36	c-0.83-2.123-1.658-4.011-1.658-4.011s-0.236,3.421-1.897,4.483c-1.661,1.061-4.742,1.888-4.742,1.888s4.621,0.472,5.452,2.477	c0.83,2.005,1.658,4.72,1.658,4.72L74.159,84.056z" class="st8"/><path d="M81.837,76.69c-6.135,0.907-6.874,1.645-7.785,7.749c-0.911-6.107-1.653-6.843-7.785-7.749	c6.135-0.907,6.874-1.645,7.785-7.749C74.962,75.048,75.704,75.784,81.837,76.69z" class="st7"/></svg>
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg b/assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg
new file mode 100644
index 000000000000..eb2bad31620d
--- /dev/null
+++ b/assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 68 68">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #ffd7b0;
+      }
+
+      .cls-2 {
+        fill: #fffaf0;
+      }
+
+      .cls-3 {
+        fill: #002140;
+      }
+
+      .cls-4 {
+        fill: none;
+        stroke: #002140;
+        stroke-linecap: round;
+        stroke-linejoin: round;
+      }
+
+      .cls-5 {
+        fill: #fbccff;
+      }
+    </style>
+  </defs>
+  <!-- Generator: Adobe Illustrator 28.6.0, SVG Export Plug-In . SVG Version: 1.2.0 Build 709)  -->
+  <g>
+    <g id="Layer_1">
+      <path class="cls-2" d="M55.567,29.859l-.071-3.226s-1.203-2.713-1.793-2.797c-.59-.084-19.216-6.597-19.216-6.597,0,0-1.721.431-2.366.574-.645.143-17.139,5.809-17.139,5.809,0,0-1.579.716-2.007,2.509-.428,1.793-.574,4.159-.574,4.159,0,0-.431.431-.502,1.433-.071,1.005.071,21.223.071,21.223,0,0-.143,1.219,1.361,1.29,1.507.071,42.592,0,42.592,0,0,0,.788-.645.788-1.433s.285-22.014.285-22.014c0,0-.645-1.076-1.433-.934l.003.003Z"/>
+      <path class="cls-1" d="M22.181,39.211s2.331-9.19,1.096-9.171c-1.235.019-10.59.178-10.59.178,0,0-.788.214-.788.859v.645l10.286,7.485-.003.003Z"/>
+      <path class="cls-1" d="M43.391,40.527c.396.853,13.608-9.735,13.608-9.735,0,0-.36-1.147-1.433-.934-1.073.214-6.791-.447-8.461.214-1.669.661-4.11,9.595-3.715,10.451v.003Z"/>
+      <path class="cls-5" d="M17.786,33.117l.444,3.135,6.143,4.506,19.508-.211s5.277-4.402,5.783-4.477c.47-9.32,5.355-18.442,5.355-18.442l-.681-.541-3.452.58-1.997-1.89-3.151,2.101-2.944-2.311-3.679,2.101-2.208-2.418-3.679,2.208-1.472-2.837-3.572,2.626-3.047-2.522s-7.355,3.362-7.355,18.39l.003.003Z"/>
+      <path class="cls-3" d="M17.597,30.535c.276,0,.5-.224.5-.5s-.224-.5-.5-.5v1ZM12.858,30.035l-.003.5h.003v-.5ZM17.597,29.535h-4.739v1h4.739v-1ZM12.861,29.535c-.898-.005-1.624.724-1.624,1.618h1c0-.344.278-.62.619-.618l.005-1ZM11.237,31.153v22.056h1v-22.056h-1ZM11.237,53.209c0,.895.726,1.622,1.622,1.622v-1c-.343,0-.622-.279-.622-.622h-1ZM12.858,54.831h42.893v-1H12.858v1ZM55.751,54.831c.895,0,1.622-.726,1.622-1.622h-1c0,.343-.279.622-.622.622v1ZM57.373,53.209v-22.056h-1v22.056h1ZM57.373,31.153c0-.895-.726-1.622-1.622-1.622v1c.343,0,.622.279.622.622h1ZM55.751,29.531h-5.024v1h5.024v-1Z"/>
+      <path class="cls-3" d="M17.116,54.049c-.125.246-.026.547.22.672.246.125.547.026.672-.22l-.892-.452ZM18.008,54.501l6.739-13.3-.892-.452-6.739,13.3.892.452Z"/>
+      <path class="cls-3" d="M43.969,40.602c-.118-.25-.416-.356-.666-.238-.25.118-.356.417-.238.666l.904-.428ZM43.065,41.03l6.367,13.43.904-.428-6.367-13.43-.904.428Z"/>
+      <path class="cls-3" d="M52.886,23.147c-.261-.091-.546.046-.637.307-.091.261.046.546.307.637l.33-.944ZM53.11,23.755l.167-.471h-.002s-.165.471-.165.471ZM55.495,27.049l-.5.004h0s.5-.004.5-.004ZM52.555,24.091l.389.136.33-.944-.389-.136-.33.944ZM52.943,24.227c1.227.434,2.042,1.565,2.053,2.827l1-.009c-.015-1.694-1.107-3.19-2.719-3.76l-.334.943ZM54.995,27.053l.026,2.739,1-.01-.026-2.739-1,.009Z"/>
+      <path class="cls-3" d="M12.186,29.717c0,.276.224.5.5.5s.5-.224.5-.5h-1ZM15.092,23.538l.163.472h0s-.164-.472-.164-.472ZM13.186,29.717v-2.846h-1v2.846h1ZM13.186,26.871c0-1.279.823-2.429,2.069-2.86l-.327-.945c-1.639.567-2.742,2.089-2.742,3.805h1ZM15.256,24.01l4.516-1.569-.328-.945-4.516,1.569.328.945Z"/>
+      <path class="cls-3" d="M12.187,31.532c-.226-.159-.537-.106-.697.12-.159.225-.106.538.12.697l.577-.816ZM24.372,40.761l-.289.408c.085.06.185.092.289.092v-.5ZM43.592,40.761v.5c.105,0,.208-.033.293-.095l-.293-.405ZM11.61,32.349l12.474,8.82.577-.817-12.474-8.82-.577.816ZM24.372,41.261h19.22v-1h-19.22v1ZM43.885,41.166l13.281-9.608-.586-.81-13.281,9.608.586.81Z"/>
+      <path class="cls-3" d="M17.459,36.334c.067.268.338.431.606.364.268-.067.431-.338.364-.606l-.97.243ZM25.196,14.309l.395-.307c-.089-.115-.224-.185-.369-.193-.145-.007-.287.049-.387.154l.361.345ZM27.64,17.46l-.395.306c.081.105.201.173.332.19.132.017.264-.02.369-.101l-.306-.395ZM31.501,14.465l.433-.251c-.072-.125-.195-.212-.337-.24-.142-.028-.288.007-.402.096l.306.395ZM33.235,17.46l-.433.251c.07.121.188.207.324.237.136.03.279.002.394-.078l-.286-.41ZM36.859,14.938l.366-.34c-.169-.182-.447-.212-.652-.07l.286.41ZM39.358,17.628l-.366.34c.171.184.452.213.657.067l-.29-.407ZM42.85,15.139l.356-.351c-.172-.175-.446-.199-.646-.056l.29.407ZM45.547,17.875l-.356.351c.164.167.423.197.621.073l-.265-.424ZM49.236,15.564l.36-.347c-.164-.17-.425-.202-.625-.076l.265.424ZM51.599,18.008l-.36.348c.14.145.353.191.54.119l-.181-.466ZM55.46,16.825l.436.245c.094-.168.084-.375-.027-.532-.111-.157-.302-.238-.492-.206l.082.493ZM17.944,36.213q.485-.121.485-.121s0,0,0,0c0,0,0,0,0,0,0,0,0-.002,0-.004,0-.004-.003-.011-.005-.02-.004-.019-.011-.049-.02-.089-.017-.08-.041-.201-.069-.36-.056-.318-.125-.788-.178-1.387-.106-1.198-.144-2.909.126-4.945.54-4.067,2.314-9.44,7.275-14.631l-.723-.691c-5.128,5.367-6.979,10.946-7.543,15.191-.282,2.12-.242,3.906-.131,5.165.056.63.129,1.128.189,1.472.03.172.057.305.076.397.01.046.018.081.024.106.003.012.005.022.007.029,0,.003.002.006.002.008,0,0,0,.002,0,.003,0,0,0,0,0,0t.485-.121ZM24.801,14.616l2.444,3.151.79-.613-2.444-3.151-.79.613ZM27.946,17.855l3.861-2.995-.613-.79-3.861,2.995.613.79ZM31.068,14.715l1.734,2.995.865-.501-1.734-2.995-.865.501ZM33.521,17.87l3.624-2.522-.571-.821-3.624,2.522.571.821ZM36.493,15.278l2.499,2.69.733-.681-2.499-2.691-.733.681ZM39.649,18.036l3.491-2.49-.581-.814-3.491,2.49.581.814ZM42.494,15.49l2.697,2.736.712-.702-2.697-2.736-.712.702ZM45.812,18.299l3.689-2.311-.531-.847-3.689,2.311.531.847ZM48.876,15.911l2.363,2.444.719-.695-2.363-2.444-.719.695ZM51.599,18.008q.181.466.181.466s0,0,0,0h0s0,0,.001,0c.001,0,.003,0,.005-.002.004-.002.011-.004.02-.008.018-.007.044-.017.078-.03.068-.026.168-.063.292-.109.248-.091.594-.215.983-.347.787-.266,1.719-.55,2.384-.661l-.165-.986c-.751.126-1.75.433-2.539.7-.399.135-.753.262-1.008.356-.127.047-.23.085-.301.112-.035.014-.063.024-.082.031-.009.004-.017.006-.022.008-.003,0-.004.002-.006.002,0,0-.001,0-.001,0,0,0,0,0,0,0h0s0,0,.181.466ZM55.024,16.58c-2.711,4.824-4.173,9.687-4.959,13.339-.393,1.827-.617,3.355-.743,4.427-.063.536-.102.959-.124,1.249-.011.145-.019.257-.024.333-.002.038-.004.067-.005.087,0,.01,0,.018-.001.023,0,.003,0,.005,0,.006,0,0,0,.001,0,.002h0s0,0,.5.023q.5.022.5.022h0s0-.003,0-.005c0-.004,0-.01,0-.019,0-.017.002-.044.005-.079.004-.071.011-.177.022-.316.022-.278.059-.688.121-1.211.123-1.046.342-2.542.728-4.334.771-3.586,2.205-8.347,4.853-13.059l-.872-.49Z"/>
+      <path class="cls-4" d="M25.669,23.843h18.124"/>
+      <path class="cls-4" d="M24.723,32h18.127"/>
+      <path class="cls-4" d="M24.723,36h18.127"/>
+      <path class="cls-4" d="M24.801,28h18.127"/>
+    </g>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/assets/images/user-check.svg b/assets/images/user-check.svg
index 2da67de751f4..931f4e5f6a51 100644
--- a/assets/images/user-check.svg
+++ b/assets/images/user-check.svg
@@ -1,9 +1 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
-<path d="M9.77,14.136c-0.993,1.103-1.016,2.74-0.126,3.865H3.722c-1.416,0-2.223-0.444-2.223-1.778c0-3.556,4.001-6.223,8-6.223
-	c2.258,0,4.516,0.85,6.055,2.23l-1.39,1.824l-0.157-0.141C12.775,12.804,10.878,12.904,9.77,14.136z M9.5,9.111
-	c1.964,0,3.556-1.592,3.556-3.556S11.464,1.999,9.5,1.999S5.944,3.591,5.944,5.555S7.536,9.111,9.5,9.111z M19.028,12.619
-	c-0.439-0.334-1.067-0.249-1.403,0.189l-3.187,4.184l-1.77-1.593c-0.41-0.37-1.042-0.337-1.412,0.074
-	c-0.37,0.41-0.337,1.043,0.074,1.412l3.384,3.045l4.503-5.91C19.552,13.581,19.467,12.954,19.028,12.619z"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 20 20" style="enable-background:new 0 0 20 20" xml:space="preserve"><path d="M9.77,14.136c-0.993,1.103-1.016,2.74-0.126,3.865H3.722c-1.416,0-2.223-0.444-2.223-1.778c0-3.556,4.001-6.223,8-6.223	c2.258,0,4.516,0.85,6.055,2.23l-1.39,1.824l-0.157-0.141C12.775,12.804,10.878,12.904,9.77,14.136z M9.5,9.111	c1.964,0,3.556-1.592,3.556-3.556S11.464,1.999,9.5,1.999S5.944,3.591,5.944,5.555S7.536,9.111,9.5,9.111z M19.028,12.619	c-0.439-0.334-1.067-0.249-1.403,0.189l-3.187,4.184l-1.77-1.593c-0.41-0.37-1.042-0.337-1.412,0.074	c-0.37,0.41-0.337,1.043,0.074,1.412l3.384,3.045l4.503-5.91C19.552,13.581,19.467,12.954,19.028,12.619z"/></svg>
\ No newline at end of file
diff --git a/contributingGuides/CONTRIBUTING.md b/contributingGuides/CONTRIBUTING.md
index 61baec9d9f1c..eab59a65d003 100644
--- a/contributingGuides/CONTRIBUTING.md
+++ b/contributingGuides/CONTRIBUTING.md
@@ -37,6 +37,8 @@ If you've found a vulnerability, please email security@expensify.com with the su
 ## Payment for Contributions
 We hire and pay external contributors via [Upwork.com](https://www.upwork.com). If you'd like to be paid for contributing, please create an Upwork account, apply for an available job in [GitHub](https://github.com/Expensify/App/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Wanted%22), and finally apply for the job in Upwork once your proposal gets selected in GitHub. Please make sure your Upwork profile is **fully verified** before applying, otherwise you run the risk of not being paid. If you think your compensation should be increased for a specific job, you can request a reevaluation by commenting in the Github issue where the Upwork job was posted. 
 
+Please add your Upwork profile link in your GitHub Bio to help ensure prompt payment.  If you're using Slack or Expensify for discussions, please add your Upwork profile link **and** your GitHub username in your Slack Title and Expensify Status. 
+
 Payment for your contributions will be made no less than 7 days after the pull request is deployed to production to allow for [regression](https://github.com/Expensify/App/blob/main/contributingGuides/CONTRIBUTING.md#regressions) testing. If you have not received payment after 8 days of the PR being deployed to production, and there are no [regressions](https://github.com/Expensify/App/blob/main/contributingGuides/CONTRIBUTING.md#regressions), please add a comment to the issue mentioning the BugZero team member (Look for the melvin-bot "Triggered auto assignment to... (`Bug`)" to see who this is).
 
 New contributors are limited to working on one job at a time, **do not submit proposals for new jobs until your first PR has been merged**. Experienced contributors may work on numerous jobs simultaneously.
diff --git a/docs/articles/new-expensify/connections/netsuite/Configure-Netsuite.md b/docs/articles/new-expensify/connections/netsuite/Configure-Netsuite.md
index 7ae0aa577468..ca0dbfe9ae54 100644
--- a/docs/articles/new-expensify/connections/netsuite/Configure-Netsuite.md
+++ b/docs/articles/new-expensify/connections/netsuite/Configure-Netsuite.md
@@ -1,6 +1,252 @@
 ---
 title: Configure Netsuite
-description: Coming soon
+description: Configure the Import, Export, and Advanced settings for Expensify's integration with NetSuite
+order: 2
 ---
 
-# Coming soon
+# Configure NetSuite integration
+## Step 1: Configure import settings
+
+The following section will help you determine how data will be imported from NetSuite into Expensify. To change your import settings, navigate to the Accounting settings for your workspace, then click **Import** under the NetSuite connection.
+
+### Expense Categories
+Your NetSuite Expense Categories are automatically imported into Expensify as categories. This cannot be amended, and any new categories you'd like to add must be added as Expense Categories in NetSuite.
+
+Once imported, you can turn specific Categories on or off under **Settings > Workspaces > [Workspace Name] > Categories**.
+
+### Departments, Classes, and Locations
+The NetSuite integration allows you to import departments, classes, and locations from NetSuite into Expensify as Tags, Report Fields, or using the NetSuite Employee Default.
+
+- **NetSuite Employee Default:** If default Department, Class, and Locations have been configured on NetSuite employee records, then you can choose to have the NetSuite employee default applied upon export from Expensify to NetSuite. With this selection, employees will not make a selection in Expensify.
+- **Tags:** Employees can select the department, class, or location on each individual expense. If the employee's NetSuite employee record has a default value, then each expense will be defaulted to that tag upon creation, with the option for the employee to select a different value on each expense.
+- **Report Fields:** Employees can select one department/class/location for each expense report.
+
+
+New departments, classes, and locations must be added in NetSuite. Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
+
+### Customers and Projects
+The NetSuite integration allows you to import customers and projects into Expensify as Tags or Report Fields.
+
+- **Tags:** Employees can select the customer or project on each individual expense.
+- **Report Fields:** Employees can select one department/class/location for each expense report.
+
+New customers and projects must be added in NetSuite. Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
+
+When importing customers or projects, you can also choose to enable **Cross-subsidiary customers/projects**. This setting allows you to import Customers and Projects across all NetSuite subsidiaries to a single Expensify workspace. This setting requires you to enable “Intercompany Time and Expense” in NetSuite. To enable that feature in NetSuite, go to **Setup > Company > Setup Tasks: Enable Features > Advanced Features**.
+
+### Tax
+The NetSuite integration allows users to apply a tax rate and amount to each expense for non-US NetSuite subsidiaries. To do this, import Tax Groups from NetSuite:
+
+1. In NetSuite, head to **Setup > Accounting > Tax Groups**
+2. Once imported, go to the NetSuite connection configuration page in Expensify (under **Settings > Workspaces > [Workspace Name] > Accounting > NetSuite > Import**)
+3. Enable Tax
+4. Go back to the Accounting screen, click the three dots next to NetSuite, and click **Sync now**
+5. All Tax Groups for the connected NetSuite subsidiary will be imported to Expensify as taxes.
+6. After syncing, go to **Settings > Workspace > [Workspace Name] > Tax** to see the tax groups imported from NetSuite
+
+### Custom Segments
+You can import one or more Custom Segments from NetSuite for selection in Expensify. To add a Custom Segment to your Expensify workspace:
+
+1. Go to **Settings > Workspaces > [Workspace Name] > Accounting**
+2. Click **Import** under NetSuite
+3. Click **Custom segments/records**
+4. Click **Add custom segment/record**
+
+From there, you'll walk through a simple setup wizard. You can find detailed instructions below for each setup step.
+
+1. In Step 1, you'll select whether you'd like to import a custom segment or a custom record. For a Custom Segment, continue. We have separate instructions for [Custom Records](link) and [Custom Lists](link).
+2. **Segment Name**
+    a. Log into NetSuite as an administrator
+    b. Go to **Customization > Lists, Records, & Fields > Custom Segments**
+    c. You’ll see the Segment Name on the Custom Segments page
+3. Internal ID
+    a. Ensure you have internal IDs enabled in NetSuite under **Home > Set Preferences**
+    b. Navigate back to the **Custom Segments** page
+    c. Click the **Custom Record Type** link
+    d. You’ll see the Internal ID on the Custom Record Type page
+4. **Script ID/Field ID**
+    a. If configuring Custom Segments as Report Fields, use the Field ID on the Transactions tab (under **Custom Segments > Transactions**). If no Field ID is shown, use the unified ID (just called “ID” right below the “Label”).
+    b. If configuring Custom Segments as Tags, use the Field ID on the Transaction Columns tab (under **Custom Segments > Transaction Columns**). If no Field ID is shown, use the unified ID (just called “ID” right below the “Label”).
+    c. Note that as of 2019.1, any new custom segments that you create automatically use the unified ID, and the "Use as Field ID" box is not visible. If you are editing a custom segment definition that was created before 2019.1, the "Use as Field ID" box is available. To use a unified ID for the entire custom segment definition, check the "Use as Field ID" box. When the box is checked, no field ID fields or columns are shown on the Application & Sourcing subtabs because one ID is used for all fields.
+5. Select whether you'd like to import the custom segment as Tags or Report Fields
+6. Finally, confirm that all the details look correct
+
+**Note:** Don’t use the “Filtered by” feature available for Custom Segments. Expensify can’t make these dependent on other fields. If you do have a filter selected, we suggest switching that filter in NetSuite to “Subsidiary” and enabling all subsidiaries to ensure you don’t receive any errors upon exporting reports.
+
+### Custom Records
+You can import one or more Custom Records from NetSuite for selection in Expensify. To add a Custom Record to your Expensify workspace:
+
+1. Go to **Settings > Workspaces > [Workspace Name] > Accounting**
+2. Click **Import** under NetSuite
+3. Click **Custom segments/records**
+4. Click **Add custom segment/record**
+
+From there, you'll walk through a simple setup wizard. You can find detailed instructions below for each setup step.
+
+1. In Step 1, you'll select whether you'd like to import a custom segment or a custom record. For a Custom Record, continue. We have separate instructions for [Custom Segments](link) and [Custom Lists](link).
+2. **Segment Name**
+    a. Log into NetSuite as an administrator
+    b. Go to **Customization > Lists, Records, & Fields > Custom Segments**
+    c. You’ll see the Custom Record Name on the Custom Segments page
+3. **Internal ID**
+    a. Make sure you have Internal IDs enabled in NetSuite under **Home > Set Preferences**
+    b. Navigate back to the **Custom Segment** page
+    c. Click the **Custom Record Type** hyperlink
+    d. You’ll see the Internal ID on the Custom Record Type page
+4. **Transaction Column ID**
+    a. If configuring Custom Records as Report Fields, use the Field ID on the Transactions tab (under **Custom Segments > Transactions**).
+    b. If configuring Custom Records as Tags, use the Field ID on the Transaction Columns tab (under **Custom Segments > Transaction Columns**).
+5. Select whether you'd like to import the custom record as Tags or Report Fields
+6. Finally, confirm that all the details look correct
+
+### Custom Lists
+You can import one or more Custom Lists from NetSuite for selection in Expensify. To add a Custom List to your Expensify workspace:
+
+1. Go to **Settings > Workspaces > [Workspace Name] > Accounting**
+2. Click **Import** under NetSuite
+3. Click **Custom list**
+4. Click **Add custom list**
+
+From there, you'll walk through a simple setup wizard. You can find detailed instructions below for each setup step.
+
+1. In Step 1, you'll select which Custom List you'd like to import from a pre-populated list
+2. **Transaction Line Field ID**
+    a. Log into NetSuite as an admin
+    b. Search **“Transaction Line Fields”** in the global search
+    c. Click into the desired Custom List
+    d. You'll find the transaction Line Field ID along the left-hand side of the page
+3. Select whether you'd like to import the custom list as Tags or Report Fields
+4. Finally, confirm that all the details look correct
+
+From there, you should see the values for the Custom Lists under the Tag or Report Field settings in Expensify.
+## Step 2: Configure export settings
+There are numerous options for exporting data from Expensify to NetSuite. To access these settings, head to **Settings > Workspaces > [Workspace name] > Accounting** and click **Export** under NetSuite.
+
+### Preferred Exporter
+Any workspace admin can export reports to NetSuite. For auto-export, Concierge will export on behalf of the preferred exporter. The preferred exporter will also be notified of any expense reports that fail to export to NetSuite due to an error.
+
+### Date
+You can choose which date to use for the records created in NetSuite. There are three date options:
+
+1. **Date of last expense:** This will use the date of the previous expense on the report
+2. **Submitted date:** The date the employee submitted the report
+3. **Exported date:** The date you export the report to NetSuite
+
+### Export out-of-pocket expenses as
+**Expense Reports**
+Out-of-pocket expenses will be exported to NetSuite as expense reports, which will be posted to the payables account designated in NetSuite.
+
+**Vendor Bills**
+Out-of-pocket expenses will be exported to NetSuite as vendor bills. Each report will be posted as payable to the vendor associated with the employee who submitted the report. You can also set an approval level in NetSuite for vendor bills.
+
+**Journal Entries**
+Out-of-pocket expenses will be exported to NetSuite as journal entries. All the transactions will be posted to the payable account specified in the workspace. You can also set an approval level in NetSuite for the journal entries.
+
+Note: By default, journal entry forms do not contain a customer column, so it is not possible to export customers or projects with this export option. Also, The credit line and header level classifications are pulled from the employee record.
+
+### Export company card expenses as
+**Expense Reports**
+To export company card expenses as expense reports, you will need to configure your default corporate cards in NetSuite. To do this, you must select the correct card on the NetSuite employee records (for individual accounts) or the subsidiary record (If you use a non-One World account, the default is found in your accounting preferences).
+
+To update your expense report transaction form in NetSuite:
+
+1. Go to **Customization > Forms > Transaction Forms**
+2. Click **Edit** next to the preferred expense report form
+3. Go to the **Screen Fields > Main** tab
+4. Check “Show” for "Account for Corporate Card Expenses"
+5. Go to the **Screen Fields > Expenses** tab
+6. Check “Show” for "Corporate Card"
+
+You can also select the default account on your employee record to use individual corporate cards for each employee. Make sure you add this field to your employee entity form in NetSuite. If you have multiple cards assigned to a single employee, you cannot export to each account. You can only have a single default per employee record.
+
+**Vendor Bills**
+Company card expenses will be posted as a vendor bill payable to the default vendor specified in your workspace Accounting settings. You can also set an approval level in NetSuite for the bills.
+
+
+**Journal Entries**
+Company Card expenses will be posted to the Journal Entries posting account selected in your workspace Accounting settings.
+
+Important Notes:
+
+- Expensify Card expenses will always export as Journal Entries, even if you have Expense Reports or Vendor Bills configured for non-reimbursable expenses on the Export tab
+- Journal entry forms do not contain a customer column, so it is not possible to export customers or projects with this export option
+- The credit line and header level classifications are pulled from the employee record
+
+### Export invoices to
+Select the Accounts Receivable account where you want your Invoice reports to export. In NetSuite, the invoices are linked to the customer, corresponding to the email address where the invoice was sent.
+
+### Export foreign currency amount
+Enabling this feature allows you to send the original amount of the expense rather than the converted total when exporting to NetSuite. This option is only available when exporting out-of-pocket expenses as Expense Reports.
+
+### Export to next open period
+When this feature is enabled and you try exporting an expense report to a closed NetSuite period, we will automatically export to the next open period instead of returning an error.
+
+
+## Step 3: Configure advanced settings
+To access the advanced settings of the NetSuite integration, head to **Settings > Workspaces > [Workspace name] > Accounting** and click **Advanced** under NetSuite.
+
+
+Let’s review the different advanced settings and how they interact with the integration.
+
+### Auto-sync
+We strongly recommend enabling auto-sync to ensure that the information in NetSuite and Expensify is always in sync. The following will occur when auto-sync is enabled:
+
+**Daily sync from NetSuite to Expensify:** Once a day, Expensify will sync any changes from NetSuite into Expensify. This includes any new, updated, or removed departments/classes/locations/projects/etc.
+
+**Auto-export:** When an expense report reaches its final state in Expensify, it will be automatically exported to NetSuite. The final state will either be reimbursement (if you reimburse members through Expensify) or final approval (if you reimburse members outside of Expensify).
+
+**Reimbursement-sync:** If Sync Reimbursed Reports (more details below) is enabled, then we will sync the reimbursement status of reports between Expensify and NetSuite.
+
+### Sync reimbursed reports
+When Sync reimbursed reports is enabled, the reimbursement status will be synced between Expensify and NetSuite.
+
+**If you reimburse members through Expensify:** Reimbursing an expense report will trigger auto-export to NetSuite. When the expense report is exported to NetSuite, a corresponding bill payment will also be created in NetSuite.
+
+**If you reimburse members outside of Expensify:** Expense reports will be exported to NetSuite at time of final approval. After you mark the report as paid in NetSuite, the reimbursed status will be synced back to Expensify the next time the integration syncs.
+
+To ensure this feature works properly for expense reports, make sure that the reimbursement account you choose within the settings matches the default account for Bill Payments in NetSuite. When exporting invoices, once marked as Paid, the payment is marked against the account selected after enabling the Collection Account setting.
+
+### Invite employees and set approvals
+Enabling this feature will invite all employees from the connected NetSuite subsidiary to your Expensify workspace. Once imported, Expensify will send them an email letting them know they’ve been added to a workspace.
+
+In addition to inviting employees, this feature enables a custom set of approval workflow options, which you can manage in Expensify Classic:
+
+- **Basic Approval:** A single level of approval, where all users submit directly to a Final Approver. The Final Approver defaults to the workspace owner but can be edited on the people page.
+- **Manager Approval (default):** Two levels of approval route reports first to an employee’s NetSuite expense approver or supervisor, and second to a workspace-wide Final Approver. By NetSuite convention, Expensify will map to the supervisor if no expense approver exists. The Final Approver defaults to the workspace owner but can be edited on the people page.
+- **Configure Manually:** Employees will be imported, but all levels of approval must be manually configured on the workspace’s People settings page. If you enable this setting, it’s recommended you review the newly imported employees and managers on the **Settings > Workspaces > Group > [Workspace Name] > People** page.
+
+### Auto-create employees/vendors
+With this feature enabled, Expensify will automatically create a new employee or vendor in NetSuite (if one doesn’t already exist) using the name and email of the report submitter.
+
+### Enable newly imported categories
+With this feature enabled, anytime a new Expense Category is created in NetSuite, it will be imported into Expensify as an enabled category. If the feature is disabled, then new Expense Categories will be imported into Expensify as disabled.
+
+### Setting approval levels
+You can set the NetSuite approval level for each different export type:
+
+- **Expense report approval level:** Choose from "NetSuite default preference," “Only supervisor approved,” “Only accounting approved,” or “Supervisor and accounting approved.”
+- **Vendor bill approval level and Journal entry approval level:** Choose from "NetSuite default preference," “Pending approval,” or “Approved for posting.”
+
+If you have Approval Routing selected in your accounting preference, this will override the selections in Expensify. If you do not wish to use Approval Routing in NetSuite, go to **Setup > Accounting > Accounting Preferences > Approval Routing** and ensure Vendor Bills and Journal Entries are not selected.
+
+### Custom form ID
+By default, Expensify will create entries using the preferred transaction form set in NetSuite. Alternatively, you have the option to designate a specific transaction form to be used.
+
+
+
+## FAQ
+
+### How does Auto-sync work with reimbursed reports?
+If a report is reimbursed via ACH or marked as reimbursed in Expensify and then exported to NetSuite, the report is automatically marked as paid in NetSuite.
+
+If a report is exported to NetSuite, then marked as paid in NetSuite, the report will automatically be marked as reimbursed in Expensify during the next sync.
+
+### Will enabling auto-sync affect existing approved and reimbursed reports?
+Auto-sync will only export newly approved reports to NetSuite. Any reports that were approved or reimbursed before enabling auto-sync will need to be manually exported in order to sync them to NetSuite.
+
+
+### When using multi-currency features in NetSuite, can expenses be exported with any currency?
+When using multi-currency features with NetSuite, remember these points:
+
+**Employee/Vendor currency:** The currency set for a NetSuite vendor or employee record must match the subsidiary currency for whichever subsidiary you export that user's reports to. A currency mismatch will cause export errors.
+**Bank Account Currency:** When synchronizing bill payments, your bank account’s currency must match the subsidiary’s currency. Failure to do so will result in an “Invalid Account” error.
diff --git a/docs/articles/new-expensify/connections/netsuite/Connect-to-NetSuite.md b/docs/articles/new-expensify/connections/netsuite/Connect-to-NetSuite.md
index 7cf70cca5abc..19009c016862 100644
--- a/docs/articles/new-expensify/connections/netsuite/Connect-to-NetSuite.md
+++ b/docs/articles/new-expensify/connections/netsuite/Connect-to-NetSuite.md
@@ -125,251 +125,3 @@ You need a Control workspace to integrate with NetSuite. If you have a Collect w
 
 ### Page size
 Make sure your page size is set to 1000 in NetSuite for importing your customers and vendors. Go to **Setup > Integration > Web Services Preferences** and search **Page Size** to determine your page size.
-
-
-# Configure NetSuite integration
-## Step 1: Configure import settings
-
-The following section will help you determine how data will be imported from NetSuite into Expensify. To change your import settings, navigate to the Accounting settings for your workspace, then click **Import** under the NetSuite connection.
-
-### Expense Categories
-Your NetSuite Expense Categories are automatically imported into Expensify as categories. This cannot be amended, and any new categories you'd like to add must be added as Expense Categories in NetSuite.
-
-Once imported, you can turn specific Categories on or off under **Settings > Workspaces > [Workspace Name] > Categories**.
-
-### Departments, Classes, and Locations
-The NetSuite integration allows you to import departments, classes, and locations from NetSuite into Expensify as Tags, Report Fields, or using the NetSuite Employee Default.
-
-- **NetSuite Employee Default:** If default Department, Class, and Locations have been configured on NetSuite employee records, then you can choose to have the NetSuite employee default applied upon export from Expensify to NetSuite. With this selection, employees will not make a selection in Expensify.
-- **Tags:** Employees can select the department, class, or location on each individual expense. If the employee's NetSuite employee record has a default value, then each expense will be defaulted to that tag upon creation, with the option for the employee to select a different value on each expense.
-- **Report Fields:** Employees can select one department/class/location for each expense report.
-
-
-New departments, classes, and locations must be added in NetSuite. Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
-
-### Customers and Projects
-The NetSuite integration allows you to import customers and projects into Expensify as Tags or Report Fields.
-
-- **Tags:** Employees can select the customer or project on each individual expense.
-- **Report Fields:** Employees can select one department/class/location for each expense report.
-
-New customers and projects must be added in NetSuite. Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
-
-When importing customers or projects, you can also choose to enable **Cross-subsidiary customers/projects**. This setting allows you to import Customers and Projects across all NetSuite subsidiaries to a single Expensify workspace. This setting requires you to enable “Intercompany Time and Expense” in NetSuite. To enable that feature in NetSuite, go to **Setup > Company > Setup Tasks: Enable Features > Advanced Features**.
-
-### Tax
-The NetSuite integration allows users to apply a tax rate and amount to each expense for non-US NetSuite subsidiaries. To do this, import Tax Groups from NetSuite:
-
-1. In NetSuite, head to **Setup > Accounting > Tax Groups**
-2. Once imported, go to the NetSuite connection configuration page in Expensify (under **Settings > Workspaces > [Workspace Name] > Accounting > NetSuite > Import**)
-3. Enable Tax
-4. Go back to the Accounting screen, click the three dots next to NetSuite, and click **Sync now**
-5. All Tax Groups for the connected NetSuite subsidiary will be imported to Expensify as taxes.
-6. After syncing, go to **Settings > Workspace > [Workspace Name] > Tax** to see the tax groups imported from NetSuite
-
-### Custom Segments
-You can import one or more Custom Segments from NetSuite for selection in Expensify. To add a Custom Segment to your Expensify workspace:
-
-1. Go to **Settings > Workspaces > [Workspace Name] > Accounting**
-2. Click **Import** under NetSuite
-3. Click **Custom segments/records**
-4. Click **Add custom segment/record**
-
-From there, you'll walk through a simple setup wizard. You can find detailed instructions below for each setup step.
-
-1. In Step 1, you'll select whether you'd like to import a custom segment or a custom record. For a Custom Segment, continue. We have separate instructions for [Custom Records](link) and [Custom Lists](link).
-2. **Segment Name**
-    a. Log into NetSuite as an administrator
-    b. Go to **Customization > Lists, Records, & Fields > Custom Segments**
-    c. You’ll see the Segment Name on the Custom Segments page
-3. Internal ID
-    a. Ensure you have internal IDs enabled in NetSuite under **Home > Set Preferences**
-    b. Navigate back to the **Custom Segments** page
-    c. Click the **Custom Record Type** link
-    d. You’ll see the Internal ID on the Custom Record Type page
-4. **Script ID/Field ID**
-    a. If configuring Custom Segments as Report Fields, use the Field ID on the Transactions tab (under **Custom Segments > Transactions**). If no Field ID is shown, use the unified ID (just called “ID” right below the “Label”).
-    b. If configuring Custom Segments as Tags, use the Field ID on the Transaction Columns tab (under **Custom Segments > Transaction Columns**). If no Field ID is shown, use the unified ID (just called “ID” right below the “Label”).
-    c. Note that as of 2019.1, any new custom segments that you create automatically use the unified ID, and the "Use as Field ID" box is not visible. If you are editing a custom segment definition that was created before 2019.1, the "Use as Field ID" box is available. To use a unified ID for the entire custom segment definition, check the "Use as Field ID" box. When the box is checked, no field ID fields or columns are shown on the Application & Sourcing subtabs because one ID is used for all fields.
-5. Select whether you'd like to import the custom segment as Tags or Report Fields
-6. Finally, confirm that all the details look correct
-
-**Note:** Don’t use the “Filtered by” feature available for Custom Segments. Expensify can’t make these dependent on other fields. If you do have a filter selected, we suggest switching that filter in NetSuite to “Subsidiary” and enabling all subsidiaries to ensure you don’t receive any errors upon exporting reports.
-
-### Custom Records
-You can import one or more Custom Records from NetSuite for selection in Expensify. To add a Custom Record to your Expensify workspace:
-
-1. Go to **Settings > Workspaces > [Workspace Name] > Accounting**
-2. Click **Import** under NetSuite
-3. Click **Custom segments/records**
-4. Click **Add custom segment/record**
-
-From there, you'll walk through a simple setup wizard. You can find detailed instructions below for each setup step.
-
-1. In Step 1, you'll select whether you'd like to import a custom segment or a custom record. For a Custom Record, continue. We have separate instructions for [Custom Segments](link) and [Custom Lists](link).
-2. **Segment Name**
-    a. Log into NetSuite as an administrator
-    b. Go to **Customization > Lists, Records, & Fields > Custom Segments**
-    c. You’ll see the Custom Record Name on the Custom Segments page
-3. **Internal ID**
-    a. Make sure you have Internal IDs enabled in NetSuite under **Home > Set Preferences**
-    b. Navigate back to the **Custom Segment** page
-    c. Click the **Custom Record Type** hyperlink
-    d. You’ll see the Internal ID on the Custom Record Type page
-4. **Transaction Column ID**
-    a. If configuring Custom Records as Report Fields, use the Field ID on the Transactions tab (under **Custom Segments > Transactions**).
-    b. If configuring Custom Records as Tags, use the Field ID on the Transaction Columns tab (under **Custom Segments > Transaction Columns**).
-5. Select whether you'd like to import the custom record as Tags or Report Fields
-6. Finally, confirm that all the details look correct
-
-### Custom Lists
-You can import one or more Custom Lists from NetSuite for selection in Expensify. To add a Custom List to your Expensify workspace:
-
-1. Go to **Settings > Workspaces > [Workspace Name] > Accounting**
-2. Click **Import** under NetSuite
-3. Click **Custom list**
-4. Click **Add custom list**
-
-From there, you'll walk through a simple setup wizard. You can find detailed instructions below for each setup step.
-
-1. In Step 1, you'll select which Custom List you'd like to import from a pre-populated list
-2. **Transaction Line Field ID**
-    a. Log into NetSuite as an admin
-    b. Search **“Transaction Line Fields”** in the global search
-    c. Click into the desired Custom List
-    d. You'll find the transaction Line Field ID along the left-hand side of the page
-3. Select whether you'd like to import the custom list as Tags or Report Fields
-4. Finally, confirm that all the details look correct
-
-From there, you should see the values for the Custom Lists under the Tag or Report Field settings in Expensify.
-## Step 2: Configure export settings
-There are numerous options for exporting data from Expensify to NetSuite. To access these settings, head to **Settings > Workspaces > [Workspace name] > Accounting** and click **Export** under NetSuite.
-
-### Preferred Exporter
-Any workspace admin can export reports to NetSuite. For auto-export, Concierge will export on behalf of the preferred exporter. The preferred exporter will also be notified of any expense reports that fail to export to NetSuite due to an error.
-
-### Date
-You can choose which date to use for the records created in NetSuite. There are three date options:
-
-1. **Date of last expense:** This will use the date of the previous expense on the report
-2. **Submitted date:** The date the employee submitted the report
-3. **Exported date:** The date you export the report to NetSuite
-
-### Export out-of-pocket expenses as
-**Expense Reports**
-Out-of-pocket expenses will be exported to NetSuite as expense reports, which will be posted to the payables account designated in NetSuite.
-
-**Vendor Bills**
-Out-of-pocket expenses will be exported to NetSuite as vendor bills. Each report will be posted as payable to the vendor associated with the employee who submitted the report. You can also set an approval level in NetSuite for vendor bills.
-
-**Journal Entries**
-Out-of-pocket expenses will be exported to NetSuite as journal entries. All the transactions will be posted to the payable account specified in the workspace. You can also set an approval level in NetSuite for the journal entries.
-
-Note: By default, journal entry forms do not contain a customer column, so it is not possible to export customers or projects with this export option. Also, The credit line and header level classifications are pulled from the employee record.
-
-### Export company card expenses as
-**Expense Reports**
-To export company card expenses as expense reports, you will need to configure your default corporate cards in NetSuite. To do this, you must select the correct card on the NetSuite employee records (for individual accounts) or the subsidiary record (If you use a non-One World account, the default is found in your accounting preferences).
-
-To update your expense report transaction form in NetSuite:
-
-1. Go to **Customization > Forms > Transaction Forms**
-2. Click **Edit** next to the preferred expense report form
-3. Go to the **Screen Fields > Main** tab
-4. Check “Show” for "Account for Corporate Card Expenses"
-5. Go to the **Screen Fields > Expenses** tab
-6. Check “Show” for "Corporate Card"
-
-You can also select the default account on your employee record to use individual corporate cards for each employee. Make sure you add this field to your employee entity form in NetSuite. If you have multiple cards assigned to a single employee, you cannot export to each account. You can only have a single default per employee record.
-
-**Vendor Bills**
-Company card expenses will be posted as a vendor bill payable to the default vendor specified in your workspace Accounting settings. You can also set an approval level in NetSuite for the bills.
-
-
-**Journal Entries**
-Company Card expenses will be posted to the Journal Entries posting account selected in your workspace Accounting settings.
-
-Important Notes:
-
-- Expensify Card expenses will always export as Journal Entries, even if you have Expense Reports or Vendor Bills configured for non-reimbursable expenses on the Export tab
-- Journal entry forms do not contain a customer column, so it is not possible to export customers or projects with this export option
-- The credit line and header level classifications are pulled from the employee record
-
-### Export invoices to
-Select the Accounts Receivable account where you want your Invoice reports to export. In NetSuite, the invoices are linked to the customer, corresponding to the email address where the invoice was sent.
-
-### Export foreign currency amount
-Enabling this feature allows you to send the original amount of the expense rather than the converted total when exporting to NetSuite. This option is only available when exporting out-of-pocket expenses as Expense Reports.
-
-### Export to next open period
-When this feature is enabled and you try exporting an expense report to a closed NetSuite period, we will automatically export to the next open period instead of returning an error.
-
-
-## Step 3: Configure advanced settings
-To access the advanced settings of the NetSuite integration, head to **Settings > Workspaces > [Workspace name] > Accounting** and click **Advanced** under NetSuite.
-
-
-Let’s review the different advanced settings and how they interact with the integration.
-
-### Auto-sync
-We strongly recommend enabling auto-sync to ensure that the information in NetSuite and Expensify is always in sync. The following will occur when auto-sync is enabled:
-
-**Daily sync from NetSuite to Expensify:** Once a day, Expensify will sync any changes from NetSuite into Expensify. This includes any new, updated, or removed departments/classes/locations/projects/etc.
-
-**Auto-export:** When an expense report reaches its final state in Expensify, it will be automatically exported to NetSuite. The final state will either be reimbursement (if you reimburse members through Expensify) or final approval (if you reimburse members outside of Expensify).
-
-**Reimbursement-sync:** If Sync Reimbursed Reports (more details below) is enabled, then we will sync the reimbursement status of reports between Expensify and NetSuite.
-
-### Sync reimbursed reports
-When Sync reimbursed reports is enabled, the reimbursement status will be synced between Expensify and NetSuite.
-
-**If you reimburse members through Expensify:** Reimbursing an expense report will trigger auto-export to NetSuite. When the expense report is exported to NetSuite, a corresponding bill payment will also be created in NetSuite.
-
-**If you reimburse members outside of Expensify:** Expense reports will be exported to NetSuite at time of final approval. After you mark the report as paid in NetSuite, the reimbursed status will be synced back to Expensify the next time the integration syncs.
-
-To ensure this feature works properly for expense reports, make sure that the reimbursement account you choose within the settings matches the default account for Bill Payments in NetSuite. When exporting invoices, once marked as Paid, the payment is marked against the account selected after enabling the Collection Account setting.
-
-### Invite employees and set approvals
-Enabling this feature will invite all employees from the connected NetSuite subsidiary to your Expensify workspace. Once imported, Expensify will send them an email letting them know they’ve been added to a workspace.
-
-In addition to inviting employees, this feature enables a custom set of approval workflow options, which you can manage in Expensify Classic:
-
-- **Basic Approval:** A single level of approval, where all users submit directly to a Final Approver. The Final Approver defaults to the workspace owner but can be edited on the people page.
-- **Manager Approval (default):** Two levels of approval route reports first to an employee’s NetSuite expense approver or supervisor, and second to a workspace-wide Final Approver. By NetSuite convention, Expensify will map to the supervisor if no expense approver exists. The Final Approver defaults to the workspace owner but can be edited on the people page.
-- **Configure Manually:** Employees will be imported, but all levels of approval must be manually configured on the workspace’s People settings page. If you enable this setting, it’s recommended you review the newly imported employees and managers on the **Settings > Workspaces > Group > [Workspace Name] > People** page.
-
-### Auto-create employees/vendors
-With this feature enabled, Expensify will automatically create a new employee or vendor in NetSuite (if one doesn’t already exist) using the name and email of the report submitter.
-
-### Enable newly imported categories
-With this feature enabled, anytime a new Expense Category is created in NetSuite, it will be imported into Expensify as an enabled category. If the feature is disabled, then new Expense Categories will be imported into Expensify as disabled.
-
-### Setting approval levels
-You can set the NetSuite approval level for each different export type:
-
-- **Expense report approval level:** Choose from "NetSuite default preference," “Only supervisor approved,” “Only accounting approved,” or “Supervisor and accounting approved.”
-- **Vendor bill approval level and Journal entry approval level:** Choose from "NetSuite default preference," “Pending approval,” or “Approved for posting.”
-
-If you have Approval Routing selected in your accounting preference, this will override the selections in Expensify. If you do not wish to use Approval Routing in NetSuite, go to **Setup > Accounting > Accounting Preferences > Approval Routing** and ensure Vendor Bills and Journal Entries are not selected.
-
-### Custom form ID
-By default, Expensify will create entries using the preferred transaction form set in NetSuite. Alternatively, you have the option to designate a specific transaction form to be used.
-
-
-
-## FAQ
-
-### How does Auto-sync work with reimbursed reports?
-If a report is reimbursed via ACH or marked as reimbursed in Expensify and then exported to NetSuite, the report is automatically marked as paid in NetSuite.
-
-If a report is exported to NetSuite, then marked as paid in NetSuite, the report will automatically be marked as reimbursed in Expensify during the next sync.
-
-### Will enabling auto-sync affect existing approved and reimbursed reports?
-Auto-sync will only export newly approved reports to NetSuite. Any reports that were approved or reimbursed before enabling auto-sync will need to be manually exported in order to sync them to NetSuite.
-
-
-### When using multi-currency features in NetSuite, can expenses be exported with any currency?
-When using multi-currency features with NetSuite, remember these points:
-
-**Employee/Vendor currency:** The currency set for a NetSuite vendor or employee record must match the subsidiary currency for whichever subsidiary you export that user's reports to. A currency mismatch will cause export errors.
-**Bank Account Currency:** When synchronizing bill payments, your bank account’s currency must match the subsidiary’s currency. Failure to do so will result in an “Invalid Account” error.
diff --git a/docs/articles/new-expensify/connections/sage-intacct/Configure-Sage-Intacct.md b/docs/articles/new-expensify/connections/sage-intacct/Configure-Sage-Intacct.md
index c5e549ff74d1..28cdc71ed80f 100644
--- a/docs/articles/new-expensify/connections/sage-intacct/Configure-Sage-Intacct.md
+++ b/docs/articles/new-expensify/connections/sage-intacct/Configure-Sage-Intacct.md
@@ -1,6 +1,133 @@
 ---
 title: Configure Sage Intacct
-description: Coming soon
+description: Configure the Import, Export, and Advanced settings for Expensify's Sage Intacct integration
+order: 3
 ---
 
-# Coming soon
+# Configure Sage Intacct integration
+
+## Step 1: Select entity (multi-entity setups only)
+If you have a multi-entity setup in Sage Intacct, you will be able to select in Expensify which Sage Intacct entity to connect each workspace to. Each Expensify workspace can either be connected to a single entity or connected at the Top Level.
+
+To select or change the Sage Intacct entity that your Expensify workspace is connected to, navigate to the Accounting settings for your workspace and click **Entity** under the Sage Intacct connection.
+
+## Step 2: Configure import settings
+The following section will help you determine how data will be imported from Sage Intacct into Expensify. To change your import settings, navigate to the Accounting settings for your workspace, then click **Import** under the Sage Intacct connection.
+
+### Expense Types / Chart of Accounts
+The categories in Expensify depend on how you choose to export out-of-pocket expenses:
+
+- If you choose to export out-of-pocket expenses as Expense Reports, your categories in Expensify will be imported from your Sage Intacct Expense Types
+- If you choose to export out-of-pocket expenses as Vendor Bills, your categories will be imported directly from your Chart of Accounts (also known as GL Codes or Account Codes).
+
+You can disable unnecessary categories in Expensify by going to **Settings > Workspaces > [Workspace Name] > Categories**. Note that every expense must be coded with a Category, or it will fail to export.
+
+### Billable Expenses
+Enabling billable expenses allows you to map your expense types or accounts to items in Sage Intacct. To do this, you’ll need to enable the correct permissions on your Sage Intacct user or role. This may vary based on the modules you use in Sage Intacct, so you should enable read-only permissions for relevant modules such as Projects, Purchasing, Inventory Control, and Order Entry.
+
+Once permissions are set, you can map categories to specific items, which will then export to Sage Intacct. When an expense is marked as Billable in Expensify, users must select the correct billable Category (Item), or there will be an error during export.
+
+
+### Standard dimensions: Departments, Classes, and Locations
+The Sage Intacct integration allows you to import standard dimensions into Expensify as tags, report fields, or using the Sage Intacct employee default.
+
+- **Sage Intacct Employee default:** This option is only available when exporting as expense reports. When this option is selected, nothing will be imported into Expensify - instead, the employee default will be applied to each expense upon export.
+- **Tags:** Employees can select the department, class, or location on each individual expense. If the employee's Sage Intacct employee record has a default value, then each expense will default to that tag, with the option for the employee to select a different value on each expense.
+- **Report Fields:** Employees can select one department/class/location for each expense report.
+
+New departments, classes, and locations must be added in Sage Intacct. Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
+
+Please note that when importing departments as tags, expense reports may show the tag name as "Tag" instead of "Department."
+
+### Customers and Projects
+The Sage Intacct integration allows you to import customers and projects into Expensify as Tags or Report Fields.
+
+- **Tags:** Employees can select the customer or project on each individual expense.
+- **Report Fields:** Employees can select one department/class/location for each expense report.
+
+New customers and projects must be added in Sage Intacct. Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
+
+
+### Tax
+The Sage Intacct integration supports native VAT and GST tax. To enable this feature, go to **Settings > Workspaces > [Workspace Name] > Accounting**, click **Import** under Sage Intacct, and enable Tax. Enabling this option will import your native tax rates from Sage Intacct into Expensify. From there, you can select default rates for each category under **Settings > Workspaces > [Workspace Name] > Categories**.
+
+For older Sage Intacct connections that don't show the Tax option, simply resync the connection by going to **Settings > Workspaces > [Workspace Name] > Accounting** and clicking the three dots next to Sage Intacct, and the tax toggle will appear.
+
+### User-Defined Dimensions
+You can add User-Defined Dimensions (UDDs) to your workspace by locating the “Integration Name” in Sage Intacct. Please note that you must be logged in as an administrator in Sage Intacct to find the required fields.
+
+To find the Integration Name in Sage Intacct:
+
+1. Go to **Platform Services > Objects > List**
+1. Set “filter by application” to “user-defined dimensions”
+1. In Expensify, go to **Settings > Workspaces > [Workspace Name] > Accounting** and click **Import** under Sage Intacct
+1. Enable User Defined Dimensions
+1. Enter the “Integration name” and choose whether to import it into Expensify as expense-level tags or as report fields
+1. Click **Save**
+
+Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
+
+
+## Step 5: Configure export settings
+To access export settings, head to **Settings > Workspaces > [Workspace name] > Accounting** and click **Export** under Sage Intacct.
+
+### Preferred exporter
+Any workspace admin can export reports to Sage Intacct. For auto-export, Concierge will export on behalf of the preferred exporter. The preferred exporter will also be notified of any expense reports that fail to export to Sage Intacct due to an error.
+
+### Export date
+You can choose which date to use for the records created in Sage Intacct. There are three date options:
+
+1. **Date of last expense:** This will use the date of the previous expense on the report
+1. **Export date:** The date you export the report to Sage Intacct
+1. **Submitted date:** The date the employee submitted the report
+
+### Export out-of-pocket expenses as
+Out-of-pocket expenses can be exported to Sage Intacct as **expense reports** or as **vendor bills**. If you choose to export as expense reports, you can optionally select a **default vendor**, which will apply to reimbursable expenses that don't have a matching vendor in Sage Intacct.
+
+### Export company card expenses as
+Company Card expenses are exported separately from out-of-pocket expenses, and can be exported to Sage Intacct as credit card charges** or as **vendor bills**.
+
+- **Credit card charges:** When exporting as credit card charges, you must select a credit card account. You can optionally select a default vendor, which will apply to company card expenses that don't have a matching vendor in Sage Intacct.
+    - Credit card charges cannot be exported to Sage Intacct at the top-level if you have multi-currency enabled, so you will need to select an individual entity if you have this setup.
+- **Vendor bills:** When exporting as vendor bills, you can select a default vendor, which will apply to company card expenses that don't have a matching vendor in Sage Intacct.
+
+If you centrally manage your company cards through Domains in Expensify Classic, you can export expenses from each individual card to a specific account in Sage Intacct in the Expensify Company Card settings.
+
+### 6. Configure advanced settings
+To access the advanced settings of the Sage Intacct integration, head to **Settings > Workspaces > [Workspace name] > Accounting** and click **Advanced** under Sage Intacct.
+
+
+Let’s review the different advanced settings and how they interact with the integration.
+
+### Auto-sync
+We strongly recommend enabling auto-sync to ensure that the information in Sage Intacct and Expensify is always in sync. The following will occur when auto-sync is enabled:
+
+**Daily sync from Sage Intacct to Expensify:** Once a day, Expensify will sync any changes from Sage Intacct into Expensify. This includes any changes or additions to your Sage Intacct dimensions.
+
+**Auto-export:** When an expense report reaches its final state in Expensify, it will be automatically exported to Sage Intacct. The final state will either be reimbursement (if you reimburse members through Expensify) or final approval (if you reimburse members outside of Expensify).
+
+**Reimbursement-sync:** If Sync Reimbursed Reports (more details below) is enabled, then we will sync the reimbursement status of reports between Expensify and Sage Intacct.
+
+### Invite employees
+Enabling this feature will invite all employees from the connected Sage Intacct entity to your Expensify workspace. Once imported, each employee who has not already been invited to that Expensify workspace will receive an email letting them know they’ve been added to the workspace.
+
+In addition to inviting employees, this feature enables a custom set of approval workflow options, which you can manage in Expensify Classic:
+
+- **Basic Approval:** A single level of approval, where all users submit directly to a Final Approver. The Final Approver defaults to the workspace owner but can be edited on the people page.
+- **Manager Approval (default):** Each user submits to their manager, who is imported from Sage Intacct. You can optionally select a final approver who each manager forwards to for second-level approval.
+- **Configure Manually:** Employees will be imported, but all levels of approval must be manually configured in Expensify. If you enable this setting, you can configure approvals by going to **Settings > Workspaces > [Workspace Name] > People**.
+
+
+### Sync reimbursed reports
+When Sync reimbursed reports is enabled, the reimbursement status will be synced between Expensify and Sage Intacct.
+
+**If you reimburse employees through Expensify:** Reimbursing an expense report will trigger auto-export to Sage Intacct. When the expense report is exported to Sage Intacct, a corresponding bill payment will also be created in Sage Intacct in the selected Cash and Cash Equivalents account.  If you don't see the account you'd like to select in the dropdown list, please confirm that the account type is Cash and Cash Equivalents.
+
+**If you reimburse employees outside of Expensify:** Expense reports will be exported to Sage Intacct at time of final approval. After you mark the report as paid in Sage Intacct, the reimbursed status will be synced back to Expensify the next time the integration syncs.
+
+To ensure this feature works properly for expense reports, make sure that the account you choose within the settings matches the default account for Bill Payments in NetSuite. When exporting invoices, once marked as Paid, the payment is marked against the account selected after enabling the Collection Account setting.
+
+## FAQ
+
+### Will enabling auto-sync affect existing approved and reimbursed reports?
+Auto-sync will only export newly approved reports to Sage Intacct. Any reports that were approved or reimbursed before enabling auto-sync will need to be manually exported in order to sync them to Sage Intacct.
diff --git a/docs/articles/new-expensify/connections/sage-intacct/Connect-to-Sage-Intacct.md b/docs/articles/new-expensify/connections/sage-intacct/Connect-to-Sage-Intacct.md
index cf04a3655b30..8e69a03fb666 100644
--- a/docs/articles/new-expensify/connections/sage-intacct/Connect-to-Sage-Intacct.md
+++ b/docs/articles/new-expensify/connections/sage-intacct/Connect-to-Sage-Intacct.md
@@ -187,138 +187,10 @@ If you use Platform Services:
 1. Enter the credentials you set for your web services user in Step 1
 1. Click **Confirm**
 
-
-
-# Configure Sage Intacct integration
-
-## Step 1: Select entity (multi-entity setups only)
-If you have a multi-entity setup in Sage Intacct, you will be able to select in Expensify which Sage Intacct entity to connect each workspace to. Each Expensify workspace can either be connected to a single entity or connected at the Top Level.
-
-To select or change the Sage Intacct entity that your Expensify workspace is connected to, navigate to the Accounting settings for your workspace and click **Entity** under the Sage Intacct connection.
-
-## Step 2: Configure import settings
-The following section will help you determine how data will be imported from Sage Intacct into Expensify. To change your import settings, navigate to the Accounting settings for your workspace, then click **Import** under the Sage Intacct connection.
-
-### Expense Types / Chart of Accounts
-The categories in Expensify depend on how you choose to export out-of-pocket expenses:
-
-- If you choose to export out-of-pocket expenses as Expense Reports, your categories in Expensify will be imported from your Sage Intacct Expense Types
-- If you choose to export out-of-pocket expenses as Vendor Bills, your categories will be imported directly from your Chart of Accounts (also known as GL Codes or Account Codes).
-
-You can disable unnecessary categories in Expensify by going to **Settings > Workspaces > [Workspace Name] > Categories**. Note that every expense must be coded with a Category, or it will fail to export.
-
-### Billable Expenses
-Enabling billable expenses allows you to map your expense types or accounts to items in Sage Intacct. To do this, you’ll need to enable the correct permissions on your Sage Intacct user or role. This may vary based on the modules you use in Sage Intacct, so you should enable read-only permissions for relevant modules such as Projects, Purchasing, Inventory Control, and Order Entry.
-
-Once permissions are set, you can map categories to specific items, which will then export to Sage Intacct. When an expense is marked as Billable in Expensify, users must select the correct billable Category (Item), or there will be an error during export.
-
-
-### Standard dimensions: Departments, Classes, and Locations
-The Sage Intacct integration allows you to import standard dimensions into Expensify as tags, report fields, or using the Sage Intacct employee default.
-
-- **Sage Intacct Employee default:** This option is only available when exporting as expense reports. When this option is selected, nothing will be imported into Expensify - instead, the employee default will be applied to each expense upon export.
-- **Tags:** Employees can select the department, class, or location on each individual expense. If the employee's Sage Intacct employee record has a default value, then each expense will default to that tag, with the option for the employee to select a different value on each expense.
-- **Report Fields:** Employees can select one department/class/location for each expense report.
-
-New departments, classes, and locations must be added in Sage Intacct. Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
-
-Please note that when importing departments as tags, expense reports may show the tag name as "Tag" instead of "Department."
-
-### Customers and Projects
-The Sage Intacct integration allows you to import customers and projects into Expensify as Tags or Report Fields.
-
-- **Tags:** Employees can select the customer or project on each individual expense.
-- **Report Fields:** Employees can select one department/class/location for each expense report.
-
-New customers and projects must be added in Sage Intacct. Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
-
-
-### Tax
-The Sage Intacct integration supports native VAT and GST tax. To enable this feature, go to **Settings > Workspaces > [Workspace Name] > Accounting**, click **Import** under Sage Intacct, and enable Tax. Enabling this option will import your native tax rates from Sage Intacct into Expensify. From there, you can select default rates for each category under **Settings > Workspaces > [Workspace Name] > Categories**.
-
-For older Sage Intacct connections that don't show the Tax option, simply resync the connection by going to **Settings > Workspaces > [Workspace Name] > Accounting** and clicking the three dots next to Sage Intacct, and the tax toggle will appear.
-
-### User-Defined Dimensions
-You can add User-Defined Dimensions (UDDs) to your workspace by locating the “Integration Name” in Sage Intacct. Please note that you must be logged in as an administrator in Sage Intacct to find the required fields.
-
-To find the Integration Name in Sage Intacct:
-
-1. Go to **Platform Services > Objects > List**
-1. Set “filter by application” to “user-defined dimensions”
-1. In Expensify, go to **Settings > Workspaces > [Workspace Name] > Accounting** and click **Import** under Sage Intacct
-1. Enable User Defined Dimensions
-1. Enter the “Integration name” and choose whether to import it into Expensify as expense-level tags or as report fields
-1. Click **Save**
-
-Once imported, you can turn specific tags on or off under **Settings > Workspaces > [Workspace Name] > Tags**. You can turn specific report fields on or off under **Settings > Workspaces > [Workspace Name] > Report Fields**.
-
-
-## Step 5: Configure export settings
-To access export settings, head to **Settings > Workspaces > [Workspace name] > Accounting** and click **Export** under Sage Intacct.
-
-### Preferred exporter
-Any workspace admin can export reports to Sage Intacct. For auto-export, Concierge will export on behalf of the preferred exporter. The preferred exporter will also be notified of any expense reports that fail to export to Sage Intacct due to an error.
-
-### Export date
-You can choose which date to use for the records created in Sage Intacct. There are three date options:
-
-1. **Date of last expense:** This will use the date of the previous expense on the report
-1. **Export date:** The date you export the report to Sage Intacct
-1. **Submitted date:** The date the employee submitted the report
-
-### Export out-of-pocket expenses as
-Out-of-pocket expenses can be exported to Sage Intacct as **expense reports** or as **vendor bills**. If you choose to export as expense reports, you can optionally select a **default vendor**, which will apply to reimbursable expenses that don't have a matching vendor in Sage Intacct.
-
-### Export company card expenses as
-Company Card expenses are exported separately from out-of-pocket expenses, and can be exported to Sage Intacct as credit card charges** or as **vendor bills**.
-
-- **Credit card charges:** When exporting as credit card charges, you must select a credit card account. You can optionally select a default vendor, which will apply to company card expenses that don't have a matching vendor in Sage Intacct.
-    - Credit card charges cannot be exported to Sage Intacct at the top-level if you have multi-currency enabled, so you will need to select an individual entity if you have this setup.
-- **Vendor bills:** When exporting as vendor bills, you can select a default vendor, which will apply to company card expenses that don't have a matching vendor in Sage Intacct.
-
-If you centrally manage your company cards through Domains in Expensify Classic, you can export expenses from each individual card to a specific account in Sage Intacct in the Expensify Company Card settings.
-
-### 6. Configure advanced settings
-To access the advanced settings of the Sage Intacct integration, head to **Settings > Workspaces > [Workspace name] > Accounting** and click **Advanced** under Sage Intacct.
-
-
-Let’s review the different advanced settings and how they interact with the integration.
-
-### Auto-sync
-We strongly recommend enabling auto-sync to ensure that the information in Sage Intacct and Expensify is always in sync. The following will occur when auto-sync is enabled:
-
-**Daily sync from Sage Intacct to Expensify:** Once a day, Expensify will sync any changes from Sage Intacct into Expensify. This includes any changes or additions to your Sage Intacct dimensions.
-
-**Auto-export:** When an expense report reaches its final state in Expensify, it will be automatically exported to Sage Intacct. The final state will either be reimbursement (if you reimburse members through Expensify) or final approval (if you reimburse members outside of Expensify).
-
-**Reimbursement-sync:** If Sync Reimbursed Reports (more details below) is enabled, then we will sync the reimbursement status of reports between Expensify and Sage Intacct.
-
-### Invite employees
-Enabling this feature will invite all employees from the connected Sage Intacct entity to your Expensify workspace. Once imported, each employee who has not already been invited to that Expensify workspace will receive an email letting them know they’ve been added to the workspace.
-
-In addition to inviting employees, this feature enables a custom set of approval workflow options, which you can manage in Expensify Classic:
-
-- **Basic Approval:** A single level of approval, where all users submit directly to a Final Approver. The Final Approver defaults to the workspace owner but can be edited on the people page.
-- **Manager Approval (default):** Each user submits to their manager, who is imported from Sage Intacct. You can optionally select a final approver who each manager forwards to for second-level approval.
-- **Configure Manually:** Employees will be imported, but all levels of approval must be manually configured in Expensify. If you enable this setting, you can configure approvals by going to **Settings > Workspaces > [Workspace Name] > People**.
-
-
-### Sync reimbursed reports
-When Sync reimbursed reports is enabled, the reimbursement status will be synced between Expensify and Sage Intacct.
-
-**If you reimburse employees through Expensify:** Reimbursing an expense report will trigger auto-export to Sage Intacct. When the expense report is exported to Sage Intacct, a corresponding bill payment will also be created in Sage Intacct in the selected Cash and Cash Equivalents account.  If you don't see the account you'd like to select in the dropdown list, please confirm that the account type is Cash and Cash Equivalents.
-
-**If you reimburse employees outside of Expensify:** Expense reports will be exported to Sage Intacct at time of final approval. After you mark the report as paid in Sage Intacct, the reimbursed status will be synced back to Expensify the next time the integration syncs.
-
-To ensure this feature works properly for expense reports, make sure that the account you choose within the settings matches the default account for Bill Payments in NetSuite. When exporting invoices, once marked as Paid, the payment is marked against the account selected after enabling the Collection Account setting.
 ## FAQ
 
 ### Why wasn't my report automatically exported to Sage Intacct?
 There are a number of factors that can cause auto-export to fail. If this happens, you will find the specific export error in the report comments for the report that failed to export. Once you’ve resolved any errors, you can manually export the report to Sage Intacct.
 
-### Will enabling auto-sync affect existing approved and reimbursed reports?
-Auto-sync will only export newly approved reports to Sage Intacct. Any reports that were approved or reimbursed before enabling auto-sync will need to be manually exported in order to sync them to Sage Intacct.
-
-
 ### Can I export negative expenses to Sage Intacct?
 Yes, you can export negative expenses to Sage Intacct. If you are exporting out-of-pocket expenses as expense reports, then the total of each exported report cannot be negative.
diff --git a/docs/articles/new-expensify/getting-started/Create-a-company-workspace.md b/docs/articles/new-expensify/getting-started/Create-a-company-workspace.md
index f761e8dacd5e..f514360e9519 100644
--- a/docs/articles/new-expensify/getting-started/Create-a-company-workspace.md
+++ b/docs/articles/new-expensify/getting-started/Create-a-company-workspace.md
@@ -30,11 +30,11 @@ You can get support any time by locating your chat with Concierge in your chat i
    <li>Click <b>Default Currency</b> to set the currency for all expenses submitted under the workspace. Expensify automatically converts all other currencies to your default currency.</li>
 </ol>
 
-![Click your profile photo or icon]({{site.url}}/assets/images/ExpensifyHelp_R1_CreateWorkspace_1.png){:width="100%"}
+![Click your profile photo or icon]({{site.url}}/assets/images/ExpensifyHelp_CreateWorkspace_1.png){:width="100%"}
 
-![Click Workspaces in the left menu and New Worksapce]({{site.url}}/assets/images/ExpensifyHelp_R1_CreateWorkspace_2.png){:width="100%"}
+![Click Workspaces in the left menu and New Worksapce]({{site.url}}/assets/images/ExpensifyHelp_CreateWorkspace_2.png){:width="100%"}
 
-![Options to make changes like a custom workspace name]({{site.url}}/assets/images/ExpensifyHelp_R1_CreateWorkspace_3.png){:width="100%"}
+![Options to make changes like a custom workspace name]({{site.url}}/assets/images/ExpensifyHelp_CreateWorkspace_3.png){:width="100%"}
 
 # 3. Invite members
 
@@ -52,11 +52,11 @@ Once the invite is accepted, the new members will appear in your members list.
 You can also invite members on the workspace’s Profile page by clicking **Share** to share the workspace’s URL or QR code.
 {% include end-info.html %}
 
-![Click Members on the left and click Invite member]({{site.url}}/assets/images/ExpensifyHelp_R1_InviteMembers_1.png){:width="100%"}
+![Click Members on the left and click Invite member]({{site.url}}/assets/images/ExpensifyHelp_InviteMembers_1.png){:width="100%"}
 
-![Use the search field to find the individual by name, email, or phone number]({{site.url}}/assets/images/ExpensifyHelp_R1_InviteMembers_2.png){:width="100%"}
+![Use the search field to find the individual by name, email, or phone number]({{site.url}}/assets/images/ExpensifyHelp_InviteMembers_2.png){:width="100%"}
 
-![Enter a custom message into the Message field]({{site.url}}/assets/images/ExpensifyHelp_R1_InviteMembers_3.png){:width="100%"}
+![Enter a custom message into the Message field]({{site.url}}/assets/images/ExpensifyHelp_InviteMembers_3.png){:width="100%"}
 
 # 4. Set admins
 
@@ -114,5 +114,7 @@ To add more features,
 </ol>
 
 Easily monitor when your Free Trial starts and how many days are left on your Subscription page. We’ll also notify you when your trial starts and ends, at which point you’ll add a billing card to continue using all your favorite features!
+
+![Hightlight the free trial start and end date]({{site.url}}/assets/images/ExpensifyHelp-FreeTrial-1.png){:width="100%"}
  
 </div>
diff --git a/docs/assets/images/Duty-of-care.png b/docs/assets/images/Duty-of-care.png
index f09f8254b478e61ba7ad01f741327bb4005f3dec..8774c0983f3fc41d3def0a65d4016f93ce9fdff7 100644
GIT binary patch
diff --git a/docs/assets/images/ExpensifyHelp-FreeTrial-1.png b/docs/assets/images/ExpensifyHelp-FreeTrial-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..28bfcaf15847706020776c9dd975c5ba133fa5db
GIT binary patch
diff --git a/docs/assets/images/ExpensifyHelp_CreateWorkspace_1.png b/docs/assets/images/ExpensifyHelp_CreateWorkspace_1.png
index 3dcf92d028abfea4052dd1e0af72259d7041b145..e221b508a79928662cfb06303fff9d1eeffa93e4 100644
GIT binary patch
diff --git a/docs/assets/images/ExpensifyHelp_CreateWorkspace_2.png b/docs/assets/images/ExpensifyHelp_CreateWorkspace_2.png
index cafb106e897efdcc059e732d7e70d83f9d20a4b5..9953bfcbd281cf7d40b4ce552956caa1bb29c581 100644
GIT binary patch
diff --git a/docs/assets/images/ExpensifyHelp_CreateWorkspace_3.png b/docs/assets/images/ExpensifyHelp_CreateWorkspace_3.png
index 08b5538571105ae0b182d99f224b18ddd064294c..f30ec7f9c1e3cc9c199044ff19b9f1f44e31da58 100644
GIT binary patch
diff --git a/docs/assets/images/ExpensifyHelp_InviteMembers_1.png b/docs/assets/images/ExpensifyHelp_InviteMembers_1.png
index cba73c2ce150ed7458a1ca53a2e3d7b01bee05e6..12b000fbd07c2f276518fb640380171d55633619 100644
GIT binary patch
diff --git a/docs/assets/images/ExpensifyHelp_InviteMembers_2.png b/docs/assets/images/ExpensifyHelp_InviteMembers_2.png
index e09b8ac5b2b0ae329f7be3185a146b6bed240bb2..169013014ab549cf7f5a29eaa594413c4433b062 100644
GIT binary patch
diff --git a/docs/assets/images/ExpensifyHelp_InviteMembers_3.png b/docs/assets/images/ExpensifyHelp_InviteMembers_3.png
index 999e6785ae5fd35235c1e174ce642b373b0f6737..c8603b7a6b3cc89a751c1659b35409c6057664ed 100644
GIT binary patch
diff --git a/docs/assets/images/Export-Expenses.png b/docs/assets/images/Export-Expenses.png
index 37cabda7922ebd99eeea0e7b02f2adf37d277a5f..8e73577bdf62a7c2b1f320172510294c68b96c7c 100644
GIT binary patch
diff --git a/docs/assets/images/QBO_classic_edit_exports.png b/docs/assets/images/QBO_classic_edit_exports.png
index 037d8ac4aafa440e05ef8a63281196d2cb8f3821..adff19e3e60af1bd68f984e7cb8094518a955223 100644
GIT binary patch
diff --git a/docs/assets/images/QBO_classic_icon.png b/docs/assets/images/QBO_classic_icon.png
index fccca3bf2bce6c1b20572cc9670df0f8828f2c77..a557b2affdf5b2274a4076026286afe922622636 100644
GIT binary patch
diff --git a/docs/assets/images/QBO_classic_report_history.png b/docs/assets/images/QBO_classic_report_history.png
index 47ef39845b4749f6305366e10ba7c78190741a47..9a732b058c7262ea501cf6ca83b85517076e0e58 100644
GIT binary patch
diff --git a/docs/assets/images/QBO_classic_troubleshooting_billable.png b/docs/assets/images/QBO_classic_troubleshooting_billable.png
index 82b91e904902eb63ea3187a7847b29f430482f43..876fe33dbe668564af51a1e1397e40f98fc3072d 100644
GIT binary patch
diff --git a/docs/assets/images/QBO_classic_troubleshooting_billable_2.png b/docs/assets/images/QBO_classic_troubleshooting_billable_2.png
index cda5424cd279063d34411e1589a1a991d7f75b5c..5a88c48a3e5c0c31546e70d8e3576e8adb46f97f 100644
GIT binary patch
diff --git a/docs/assets/images/Travel-Analytics.png b/docs/assets/images/Travel-Analytics.png
index 27f696e28bcda42c06f59d917ee26de70116d387..c4f969b6d51c56988b337c3dc2656a5203b818ca 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_classic_Edit_exports.png b/docs/assets/images/Xero_classic_Edit_exports.png
index 4bfc8dcf70cc40e7a3946bf225fefde0f3dd347d..25bda4a9454aa5d00d8c118bc9859f5b1ccb87e3 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_classic_bank_transaction.png b/docs/assets/images/Xero_classic_bank_transaction.png
index ff4080a3756abbfd9633e052bc812aebea7d4eac..b730e65569a6e2e85c0d5c5a006ac5d5ed676030 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_classic_category_icon.png b/docs/assets/images/Xero_classic_category_icon.png
index ecc1b51e25484e4a74b370f0bb2c4e26f1d4abb1..50360ecdae549a0c0a0e2e4588305dab9dcd4265 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_classic_copy.png b/docs/assets/images/Xero_classic_copy.png
index 5734b57e216dbf3a1d2daa9618079de50cfa8187..ff67fecad252bccff6dcc5f3bc6793d7d4c37b23 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_classic_new_connection.png b/docs/assets/images/Xero_classic_new_connection.png
index a798572a130256c2a08366377f0548c65bae847e..bb7183262e193504c8a71ca0e8e38324e9cdfa1b 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_classic_troubleshoot_category.png b/docs/assets/images/Xero_classic_troubleshoot_category.png
index fb1b25070521a5c4a67b0ea7d153d251109db6bc..af6b8c2ffa0a136c06d11a843c31fe3e74ba4454 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_classic_troubleshoot_payment.png b/docs/assets/images/Xero_classic_troubleshoot_payment.png
index 7ce1bf1ef86f42164b3953b5069a5022c2e99ebb..441324ebf1b17311c1c3ad2562f9fe0dab8e9f31 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_classic_troubleshoot_remove_redo.png b/docs/assets/images/Xero_classic_troubleshoot_remove_redo.png
index c8a5dac029f5b92d227d052c9a834c65f81b2757..2028457c955553f5434bf47aabb223cab9af1eac 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_help_01.png b/docs/assets/images/Xero_help_01.png
index ce05ea83c925c348659f7c1ef15d5981f0a74736..ce60204866f766f37a58626ddd0699a23d842abd 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_help_02.png b/docs/assets/images/Xero_help_02.png
index c2d556c7aed074c22f39b5e216810b6429b6aecd..8ed2f256cf0f50003b94f9753c7b07f862f5858f 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_help_03.png b/docs/assets/images/Xero_help_03.png
index 30616ffd3d647b0b06b33c44c22f927bd8875b2a..318bb274b1153d35fc9149eadb2883a4cf989a09 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_help_04.png b/docs/assets/images/Xero_help_04.png
index d0e950d3968a4684be92371f31466e8c8db087d7..b0d29bc9fde6b8e7da25cdda7cd30553c1a020cf 100644
GIT binary patch
diff --git a/docs/assets/images/Xero_help_05.png b/docs/assets/images/Xero_help_05.png
index be65e9c62960204d4486824c7470c4db6e08b758..e8265e82b65244ec3516127ed0d7bef5153d6416 100644
GIT binary patch
diff --git a/docs/redirects.csv b/docs/redirects.csv
index a6085d2a45e7..c8b472f01f7c 100644
--- a/docs/redirects.csv
+++ b/docs/redirects.csv
@@ -1,4 +1,5 @@
 sourceURL,targetURL
+https://community.expensify.com,https://help.expensify.com
 https://community.expensify.com/discussion/5634/deep-dive-how-long-will-it-take-for-me-to-receive-my-reimbursement,https://help.expensify.com/articles/expensify-classic/expenses/reports/Reimbursements
 https://community.expensify.com/discussion/4925/how-to-dispute-an-expensify-card-transaction,https://help.expensify.com/articles/expensify-classic/expensify-card/Dispute-A-Transaction
 https://community.expensify.com/discussion/5184/faq-how-am-i-protected-from-fraud-using-the-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Dispute-A-Transaction
@@ -24,8 +25,7 @@ https://community.expensify.com/discussion/5655/deep-dive-what-is-a-vacation-del
 https://community.expensify.com/discussion/5194/how-to-assign-a-vacation-delegate-for-an-employee-through-domains,https://help.expensify.com/articles/expensify-classic/copilots-and-delegates/Vacation-Delegate
 https://community.expensify.com/discussion/5190/how-to-individually-assign-a-vacation-delegate-from-account-settings,https://help.expensify.com/articles/expensify-classic/copilots-and-delegates/Vacation-Delegate
 https://community.expensify.com/discussion/5274/how-to-set-up-an-adp-indirect-integration-with-expensify,https://help.expensify.com/articles/expensify-classic/integrations/HR-integrations/ADP
-https://community.expensify.com/discussion/5776/how-to-create-mileage-expenses-in-expensify,https://help.expensify.com/articles/expensify-classic/expenses/Distance-Tracking
-https://community.expensify.com/discussion/7385/how-to-enable-two-factor-authentication-in-your-account,https://help.expensify.com/expensify-classic/hubs/settings/account-settings
+https://community.expensify.com/discussion/5776/how-to-create-mileage-expenses-in-expensify,https://help.expensify.com/articles/expensify-classic/workspaces/Expense-Settings#distance-expenses
 https://community.expensify.com/discussion/5149/how-to-manage-your-devices-in-expensify,https://help.expensify.com/expensify-classic/hubs/settings/account-settings
 https://community.expensify.com/discussion/4432/how-to-add-a-secondary-login,https://help.expensify.com/expensify-classic/hubs/settings/account-settings
 https://community.expensify.com/discussion/6794/how-to-change-your-email-in-expensify,https://help.expensify.com/expensify-classic/hubs/settings/account-settings
@@ -38,18 +38,18 @@ https://community.expensify.com/discussion/1460/schedule-a-demo,https://help.exp
 https://community.expensify.com/discussion/835/what-is-the-difference-between-a-category-and-a-tag,https://help.expensify.com/expensify-classic/hubs/getting-started
 https://community.expensify.com/discussion/7703/getting-started-video,https://help.expensify.com/expensify-classic/hubs/getting-started
 https://community.expensify.com/discussion/1845/how-to-set-up-account-and-add-users,https://help.expensify.com/expensify-classic/hubs/getting-started
-https://community.expensify.com/discussion/8629/employee-training-e-learning-program,https://help.expensify.com/expensify-classic/hubs/getting-started
+https://community.expensify.com/discussion/8629/employee-training-e-learning-program,https://help.expensify.com/articles/expensify-classic/getting-started/Join-your-company's-workspace
 https://community.expensify.com/discussion/1607/on-demand-webinars,https://help.expensify.com/expensify-classic/hubs/getting-started
 https://community.expensify.com/discussion/5444/admin-onboarding-webinar-faqs,https://help.expensify.com/expensify-classic/hubs/getting-started
 https://community.expensify.com/discussion/5417/employee-training-webinar-faqs,https://help.expensify.com/expensify-classic/hubs/getting-started
 https://community.expensify.com/discussion/5885/overview-the-employee-training-webinar,https://help.expensify.com/expensify-classic/hubs/getting-started
 https://community.expensify.com/discussion/5854/overview-the-expensify-admin-onboarding-webinar,https://help.expensify.com/expensify-classic/hubs/getting-started
 https://community.expensify.com/discussion/4699/how-to-download-the-mobile-app,https://help.expensify.com/expensify-classic/hubs/getting-started
-https://community.expensify.com/discussion/4524/how-to-set-up-the-uber-integration,https://help.expensify.com/expensify-classic/hubs/getting-started
-https://community.expensify.com/discussion/5212/how-to-connect-your-policy-to-netsuite-token-based-authentication,https://help.expensify.com/expensify-classic/hubs/getting-started
+https://community.expensify.com/discussion/4524/how-to-set-up-the-uber-integration,https://help.expensify.com/articles/expensify-classic/connections/Uber
+https://community.expensify.com/discussion/5212/how-to-connect-your-policy-to-netsuite-token-based-authentication,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Connect-To-NetSuite
 https://community.expensify.com/discussion/5124/how-to-add-your-name-and-photo-to-your-account,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Add-profile-photo
-https://community.expensify.com/discussion/5922/deep-dive-day-1-with-expensify-for-submitters,https://help.expensify.com/expensify-classic/hubs/getting-started
-https://community.expensify.com/discussion/5934/day-1-with-expensify-admins-and-accountants,https://help.expensify.com/expensify-classic/hubs/getting-started
+https://community.expensify.com/discussion/5922/deep-dive-day-1-with-expensify-for-submitters,https://help.expensify.com/articles/expensify-classic/getting-started/Join-your-company's-workspace
+https://community.expensify.com/discussion/5934/day-1-with-expensify-admins-and-accountants,https://help.expensify.com/articles/expensify-classic/getting-started/Create-a-company-workspace
 https://community.expensify.com/discussion/5694/deep-dive-admin-training-and-setup-resources,https://help.expensify.com/expensify-classic/hubs/getting-started
 https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Perks.html,https://use.expensify.com/company-credit-card
 https://help.expensify.com/articles/expensify-classic/expensify-partner-program/How-to-Join-the-ExpensifyApproved!-Partner-Program.html,https://use.expensify.com/accountants-program
@@ -62,12 +62,10 @@ https://community.expensify.com/discussion/7318/deep-dive-company-credit-card-im
 https://community.expensify.com/discussion/2673/personalize-your-commercial-card-feed-name,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/company-cards/Commercial-Card-Feeds
 https://community.expensify.com/discussion/6569/how-to-import-and-assign-company-cards-from-csv-file,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/company-cards/CSV-Import
 https://community.expensify.com/discussion/4714/how-to-set-up-a-direct-bank-connection-for-company-cards,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/company-cards/Direct-Bank-Connections
-https://community.expensify.com/discussion/4828/how-to-reconcile-your-company-cards-statement-in-expensify,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/company-cards/Reconciliation
 https://community.expensify.com/discussion/5366/deep-dive-troubleshooting-credit-card-issues-in-expensify,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/company-cards/Troubleshooting
 https://community.expensify.com/discussion/9554/how-to-set-up-global-reimbursemen,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/Global-Reimbursements
 https://community.expensify.com/discussion/4463/how-to-remove-or-manage-settings-for-imported-personal-cards,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/Personal-Credit-Cards
-https://community.expensify.com/discussion/5793/how-to-connect-your-personal-card-to-import-expenses,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-credit-cards/Personal-Credit-Cards
-https://community.expensify.com/discussion/4826/how-to-set-your-annual-subscription-size,https://use.expensify.com/
+https://community.expensify.com/discussion/5793/how-to-connect-your-personal-card-to-import-expenses,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/Personal-Credit-Cards
 https://community.expensify.com/discussion/5667/deep-dive-how-does-the-annual-subscription-billing-work,https://use.expensify.com/
 https://help.expensify.com/articles/expensify-classic/getting-started/approved-accountants/Your-Expensify-Partner-Manager,https://help.expensify.com/articles/expensify-classic/expensify-partner-program/Your-Expensify-Partner-Manager
 https://help.expensify.com/expensify-classic/hubs/getting-started/plan-types,https://use.expensify.com/
@@ -370,3 +368,164 @@ https://community.expensify.com/discussion/5665/deep-dive-troubleshooting-expens
 https://community.expensify.com/discussion/3998/expensify-grab-smoother-business-travel-in-southeast-asia,https://help.expensify.com/articles/expensify-classic/integrations/travel-integrations/Additional-Travel-Integrations
 https://community.expensify.com/discussion/5125/faq-why-is-uber-creating-an-expensify-account-for-me,https://help.expensify.com/articles/expensify-classic/integrations/travel-integrations/Uber
 https://community.expensify.com/discussion/4051/deep-dive-taking-over-as-an-expensify-admin-here-s-your-guide-to-a-smooth-transition,https://help.expensify.com/articles/expensify-classic/workspaces/Admin-offboarding-checklist
+https://community.expensify.com/discussion/6569/how-to-import-and-assign-company-cards-from-spreadsheet-or-ofx-file/p1,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/CSV-Import
+https://community.expensify.com/discussion/4476/how-to-enable-scheduled-submit-for-a-group-policy,https://help.expensify.com/articles/expensify-classic/reports/Automatically-submit-employee-reports
+https://community.expensify.com/discussion/6018/deep-dive-day-1-with-the-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Cardholder-Settings-and-Features
+https://community.expensify.com/discussion/5836/how-to-email-receipts-to-expensify,https://help.expensify.com/articles/expensify-classic/expenses/Add-an-expense#email-a-receipt
+https://community.expensify.com/discussion/7500/how-to-pay-your-company-bills-in-expensify/,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills
+https://community.expensify.com/discussion/7385/how-to-enable-two-factor-authentication-in-your-account,https://help.expensify.com/articles/expensify-classic/settings/Enable-two-factor-authentication
+https://community.expensify.com/discussion/4432/how-to-add-a-secondary-login/,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Change-or-add-email-address
+https://community.expensify.com/discussion/5539/deep-dive-what-is-a-copilot-what-are-the-different-types/,https://help.expensify.com/articles/expensify-classic/copilots-and-delegates/Assign-or-remove-a-Copilot
+https://help.expensify.com/articles/expensify-classic/copilots-and-delegates/Vacation-Delegate,https://help.expensify.com/articles/expensify-classic/copilots-and-delegates/Delegate-when-out-of-office
+https://community.expensify.com/discussion/5678/deep-dive-secondary-login-merge-accounts-what-does-this-mean,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Merge-accounts
+https://community.expensify.com/discussion/5103/how-to-create-and-use-custom-units/,https://help.expensify.com/
+https://community.expensify.com/discussion/6530/how-to-set-your-time-zone-for-report-history-comments,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Set-time-zone
+https://community.expensify.com/discussion/5651/deep-dive--practices-when-youre-running-into-trouble-receiving-emails-from-expensify,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Set-Notifications
+https://community.expensify.com/discussion/5793/how-to-connect-your-personal-card-to-import-expenses/,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/Personal-Credit-Cards
+https://community.expensify.com/discussion/5677/deep-dive-security-how-expensify-protects-your-information,https://help.expensify.com/articles/new-expensify/settings/Encryption-and-Data-Security
+https://community.expensify.com/discussion/4641/how-to-add-a-u-s-deposit-account,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account
+https://community.expensify.com/discussion/4751/how-to-how-to-add-an-ach-withdrawal-account-us-only/,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-US-Business-Bank-Account
+https://community.expensify.com/discussion/7428/how-to-pay-get-paid-for-invoices-using-paypal-me-and-expensify,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments
+https://community.expensify.com/discussion/7252/deep-dive-best-practices-for-creating-and-sending-invoices,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments
+https://community.expensify.com/discussion/4482/how-to-update-payment-details,https://help.expensify.com/articles/expensify-classic/workspaces/Assign-billing-owner-and-payment-account
+https://community.expensify.com/discussion/5934/day-1-with-expensify-admins-and-accountants/,https://help.expensify.com/articles/expensify-classic/getting-started/Create-a-company-workspace
+https://community.expensify.com/discussion/5542/deep-dive-what-are-ereceipts/,https://help.expensify.com/articles/expensify-classic/workspaces/Expense-Settings#ereceipts
+https://community.expensify.com/discussion/5776/how-to-create-mileage-expenses-in-expensify/,https://help.expensify.com/articles/expensify-classic/workspaces/Expense-Settings#distance-expenses
+https://community.expensify.com/discussion/4740/how-to-create-a-time-expense,https://help.expensify.com/articles/expensify-classic/workspaces/Expense-Settings#time-expenses
+https://community.expensify.com/discussion/5743/deep-dive-currency-in-expensify-overview/,https://help.expensify.com/articles/expensify-classic/workspaces/Set-Currency
+https://community.expensify.com/discussion/4976/,https://help.expensify.com/articles/expensify-classic/reports/Automatically-submit-employee-reports
+https://community.expensify.com/discussion/4831/how-to-set-up-default-report-titles,https://help.expensify.com/articles/expensify-classic/reports/Set-default-report-title
+https://community.expensify.com/discussion/4485/how-to-set-up-and-use-report-fields,https://help.expensify.com/articles/expensify-classic/reports/Add-custom-fields-to-reports-and-invoices
+https://community.expensify.com/discussion/5212/how-to-connect-your-policy-to-netsuite-token-based-authentication/,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Connect-To-NetSuite
+https://community.expensify.com/discussion/4833/how-to-connect-your-policy-to-quickbooks-online/,https://help.expensify.com/articles/expensify-classic/connections/quickbooks-online/Connect-To-QuickBooks-Online
+https://community.expensify.com/discussion/5715/how-to-connect-to-quickbooks-desktop,https://help.expensify.com/articles/expensify-classic/connections/quickbooks-desktop/Connect-To-QuickBooks-Desktop
+https://community.expensify.com/discussion/5282/how-to-connect-your-policy-to-xero/,https://help.expensify.com/articles/expensify-classic/connections/xero/Connect-To-Xero
+https://community.expensify.com/discussion/6487/how-to-connect-to-sage-intacct,https://help.expensify.com/articles/expensify-classic/connections/sage-intacct/Connect-To-Sage-Intacct
+https://community.expensify.com/discussion/5241/how-to-connect-financialforce-psa-srp-to-your-policy/,https://help.expensify.com/articles/expensify-classic/connections/certinia/Connect-To-Certinia
+https://community.expensify.com/discussion/5536/deep-dive-what-is-a-secondary-login-and-when-you-d-use-it/,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Change-or-add-email-address
+https://community.expensify.com/discussion/5732/deep-dive-all-about-policy-categories/,https://help.expensify.com/articles/expensify-classic/workspaces/Create-categories
+https://community.expensify.com/discussion/5469/deep-dive-auto-categorize-card-expenses-with-default-categories,https://help.expensify.com/articles/expensify-classic/workspaces/Set-up-category-automation
+https://community.expensify.com/discussion/4708/how-to-set-up-and-add-single-tags,https://help.expensify.com/articles/expensify-classic/workspaces/Create-tags
+https://community.expensify.com/discussion/5756/how-to-set-up-and-manage-multi-level-tagging/,https://help.expensify.com/articles/expensify-classic/workspaces/Create-tags#multi-level-tags
+https://community.expensify.com/discussion/5044/how-to-set-up-multiple-taxes-on-indirect-connections,https://help.expensify.com/articles/expensify-classic/workspaces/Tax-Tracking
+https://community.expensify.com/discussion/4643/how-to-invite-people-to-your-policy-using-a-join-link/,https://help.expensify.com/articles/expensify-classic/workspaces/Invite-members-and-assign-roles#invite-with-a-link
+https://community.expensify.com/discussion/5700/deep-dive-approval-workflow-overview,https://help.expensify.com/articles/expensify-classic/reports/Create-a-report-approval-workflow
+https://community.expensify.com/discussion/4804/how-to-set-up-concierge-report-approval,https://help.expensify.com/articles/expensify-classic/reports/Require-review-for-over-limit-expenses
+https://community.expensify.com/discussion/4975/how-to-invite-users-to-your-policy-manually-or-in-bulk/,https://help.expensify.com/articles/expensify-classic/workspaces/Invite-members-and-assign-roles#invite-with-a-link
+https://community.expensify.com/discussion/4743/how-to-enforce-your-group-policys-approval-work-flow,https://help.expensify.com/articles/expensify-classic/reports/Create-a-report-approval-workflow#enforce-workflow
+https://community.expensify.com/discussion/4781/how-to-add-an-australian-withdrawal-account-details,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Australian-Reimbursements
+https://community.expensify.com/discussion/4772/how-to-add-a-single-rate-per-diem,https://help.expensify.com/articles/expensify-classic/workspaces/Enable-per-diem-expenses
+https://community.expensify.com/discussion/4825/how-to-create-and-send-invoices-web-mobile/,https://help.expensify.com/articles/expensify-classic/workspaces/Set-Up-Invoicing
+https://community.expensify.com/discussion/8850/how-to-enable-monthly-settlement,https://help.expensify.com/articles/expensify-classic/expensify-card/Admin-Card-Settings-and-Features#change-the-settlement-frequency
+https://community.expensify.com/discussion/4828/how-to-match-your-company-cards-statement-to-expensify/,https://help.expensify.com/articles/expensify-classic/expensify-card/Admin-Card-Settings-and-Features#reconciling-expenses-and-settlements
+https://community.expensify.com/discussion/5751/deep-dive-domain-groups-and-permissions-what-are-they-all-about,https://help.expensify.com/articles/expensify-classic/domains/Create-A-Group
+https://community.expensify.com/discussion/4832/how-to-enable-saml-sso,https://help.expensify.com/articles/expensify-classic/domains/SAML-SSO
+https://community.expensify.com/categories/expensify-org-general-questions-and-discussions,https://www.expensify.org/
+https://community.expensify.com/discussion/4476/how-to-enable-scheduled-submit-for-a-group-policy/,https://help.expensify.com/articles/expensify-classic/reports/Automatically-submit-employee-reports
+https://community.expensify.com/discussion/4524/how-to-set-up-the-uber-integration/,https://help.expensify.com/articles/expensify-classic/connections/Uber
+https://community.expensify.com/discussion/4828/how-to-match-your-company-cards-statement-to-expensify/p1,https://help.expensify.com/articles/expensify-classic/expensify-card/Admin-Card-Settings-and-Features#reconciling-expenses-and-settlements
+https://community.expensify.com/discussion/4842/how-to-split-expenses-on-the-web-and-mobile-app,https://help.expensify.com/articles/expensify-classic/expenses/Split-an-expense
+https://community.expensify.com/discussion/4948/faq-why-didnt-my-ereceipt-generate/,https://help.expensify.com/articles/expensify-classic/workspaces/Expense-Settings#ereceipts
+https://community.expensify.com/discussion/5145/how-to-connect-to-sage-intacct-role-based-permissions-expense-reports/,https://help.expensify.com/articles/expensify-classic/connections/sage-intacct/Connect-To-Sage-Intacct
+https://community.expensify.com/discussion/5366/troubleshooting-credit-card-issues-in-expensify/,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Troubleshooting
+https://community.expensify.com/discussion/5541/deep-dive-what-is-smartscan-and-how-it-works/,https://help.expensify.com/articles/expensify-classic/expenses/Add-an-expense#smartscan-a-receipt
+https://community.expensify.com/discussion/5678/deep-dive-secondary-login-merge-accounts-what-does-this-mean/p1,https://help.expensify.com/articles/expensify-classic/settings/account-settings/Merge-accounts
+https://community.expensify.com/discussion/5922/deep-dive-day-1-with-expensify-for-submitters/p1,https://help.expensify.com/articles/expensify-classic/getting-started/Join-your-company's-workspace
+https://community.expensify.com/discussion/8629/employee-training-e-learning-programme/p1,https://help.expensify.com/articles/expensify-classic/getting-started/Join-your-company's-workspace
+https://community.expensify.com/discussion/5124/how-to-add-your-name-and-photo-to-your-account/,https://help.expensify.com/expensify-classic/hubs/settings/account-settings
+https://community.expensify.com/post/discussion/3rd-party-integrations,https://help.expensify.com/expensify-classic/hubs/connections/
+https://community.expensify.com/post/discussion/advanced-admin-controls,https://help.expensify.com/expensify-classic/hubs/workspaces/
+https://community.expensify.com/post/discussion/becoming-an-expensifyapproved!-accountant,https://help.expensify.com/expensify-classic/hubs/expensify-partner-program/
+https://help.expensify.com/articles/expensify-classic/workspaces/Invoicing.html,https://help.expensify.com/articles/expensify-classic/workspaces/Set-Up-Invoicing
+https://community.expensify.com/discussion/4288/netsuite-expensierror-ns0092-you-do-not-have-permission-to-set-a-value-for-expense-isbillable,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Netsuite-Troubleshooting
+https://community.expensify.com/discussion/4461/how-to-set-up-lyft-for-individual-use,https://help.expensify.com/articles/expensify-classic/connections/Lyft
+https://community.expensify.com/discussion/4520/how-to-close-your-account,https://help.expensify.com/articles/new-expensify/settings/Close-account
+https://community.expensify.com/discussion/4520/how-to-delete-your-account,https://help.expensify.com/articles/new-expensify/settings/Close-account
+https://community.expensify.com/discussion/4525/how-to-resend-an-invite,https://help.expensify.com/articles/expensify-classic/workspaces/Invite-members-and-assign-roles
+https://community.expensify.com/discussion/4638/how-to-enable-category-specific-rules-and-descriptions,https://help.expensify.com/articles/expensify-classic/workspaces/Enable-and-set-up-expense-violations
+https://community.expensify.com/discussion/4644/how-to-claim-and-validate-your-domain-in-expensify,https://help.expensify.com/articles/expensify-classic/domains/Claim-And-Verify-A-Domain
+https://community.expensify.com/discussion/4704/how-to-set-mileage-rates-and-track-tax-on-distance-expenses,https://help.expensify.com/articles/expensify-classic/workspaces/Expense-Settings
+https://community.expensify.com/discussion/4774/how-to-enable-google-apps-sso-with-your-expensify-group-policy,https://help.expensify.com/articles/expensify-classic/domains/SAML-SSO
+https://community.expensify.com/discussion/4780/how-to-export-to-individual-gl-accounts,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Company-Card-Settings
+https://community.expensify.com/discussion/4819/how-to-set-up-a-visa-commercial-feed,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Commercial-Card-Feeds
+https://community.expensify.com/discussion/4820/how-to-set-up-a-mastercard-commercial-feed,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Commercial-Card-Feeds
+https://community.expensify.com/discussion/4822/how-to-set-up-an-american-express-commercial-feed,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Commercial-Card-Feeds
+https://community.expensify.com/discussion/4822/how-to-set-up-an-american-express-commercial-feed%23latest,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Commercial-Card-Feeds
+https://community.expensify.com/discussion/4826/how-to-set-your-annual-subscription-size,https://help.expensify.com/articles/expensify-classic/expensify-billing/Billing-Overview#annual-subscription
+https://community.expensify.com/discussion/4841/how-to-change-the-billing-owner-for-your-policy,https://help.expensify.com/articles/expensify-classic/workspaces/Assign-billing-owner-and-payment-account
+https://community.expensify.com/discussion/4848/deep-dive-expensify-card-and-quickbooks-online-auto-reconciliation-how-it-works,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Reconciliation
+https://community.expensify.com/discussion/4851/deep-dive-what-are-smart-limits,https://help.expensify.com/articles/expensify-classic/expensify-card/Admin-Card-Settings-and-Features#smart-limits
+https://community.expensify.com/discussion/4851/deep-dive-what-are-unapproved-expense-limits,https://help.expensify.com/articles/expensify-classic/expensify-card/Admin-Card-Settings-and-Features#smart-limits
+https://community.expensify.com/discussion/4853/how-to-set-or-edit-the-default-unapproved-expense-limit-for-a-group,https://help.expensify.com/articles/expensify-classic/expensify-card/Admin-Card-Settings-and-Features#smart-limits
+https://community.expensify.com/discussion/4854/how-to-set-or-edit-the-default-unapproved-expense-limit-for-an-individual-cardholder,https://help.expensify.com/articles/expensify-classic/expensify-card/Admin-Card-Settings-and-Features#smart-limits
+https://community.expensify.com/discussion/4874/how-to-apply-for-the-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Request-the-Card
+https://community.expensify.com/discussion/4875/how-to-connect-your-business-bank-account,https://help.expensify.com/articles/new-expensify/expenses-&-payments/Connect-a-Business-Bank-Account
+https://community.expensify.com/discussion/4931/how-to-cancel-your-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Deactivate-or-cancel-an-Expensify-Card
+https://community.expensify.com/discussion/4977/how-to-enable-tax-tracking,https://help.expensify.com/articles/expensify-classic/workspaces/Tax-Tracking
+https://community.expensify.com/discussion/4978/how-to-reimburse-a-report-via-ach,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills
+https://community.expensify.com/discussion/5067/faq-expensierror-xro068-organization-is-not-subscribed-to-currency-x,https://help.expensify.com/articles/expensify-classic/connections/xero/Xero-Troubleshooting
+https://community.expensify.com/discussion/5068/faq-expensierror-xro076-this-report-has-already-been-exported-once-to-xero,https://help.expensify.com/articles/expensify-classic/connections/xero/Xero-Troubleshooting
+https://community.expensify.com/discussion/5143/faq-expensierror-ns0023-employee-does-not-exist-in-netsuite,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Netsuite-Troubleshooting
+https://community.expensify.com/discussion/5144/faq-expensierror-ns0024-invalid-customer-tag,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Netsuite-Troubleshooting
+https://community.expensify.com/discussion/5209/deep-dive-the-expensify-card,https://help.expensify.com/expensify-classic/hubs/expensify-card/
+https://community.expensify.com/discussion/5222/faq-why-am-i-getting-an-invalid-credentials-login-failed-error-message-when-importing-my-card,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Troubleshooting
+https://community.expensify.com/discussion/5231/faq-expensierror-xro027-expense-s-on-the-report-is-categorized-with-a-category-no-longer-in-xero,https://help.expensify.com/articles/expensify-classic/connections/xero/Xero-Troubleshooting
+https://community.expensify.com/discussion/5242/faq-netsuite-you-do-not-have-permissions-to-set-a-value-for-element-recipturl,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Netsuite-Troubleshooting
+https://community.expensify.com/discussion/5251/faq-netsuite-you-do-not-have-permissions-to-set-a-value-for-element,https://help.expensify.com/articles/expensify-classic/connections/netsuite/Netsuite-Troubleshooting
+https://community.expensify.com/discussion/5271/how-to-set-up-an-indirect-accounting-integration,https://help.expensify.com/articles/expensify-classic/connections/Indirect-Accounting-Integrations
+https://community.expensify.com/discussion/5321/how-to-set-up-saml-authentication-with-adfs-in-expensify,https://help.expensify.com/articles/expensify-classic/domains/SAML-SSO
+https://community.expensify.com/discussion/5499/deep-dive-configure-coding-for-sage-intacct,https://help.expensify.com/articles/expensify-classic/connections/sage-intacct/Configure-Sage-Intacct
+https://community.expensify.com/discussion/5580/deep-dive-configure-advanced-settings-for-netsuite,https://help.expensify.com/articles/new-expensify/connections/netsuite/Connect-to-NetSuite#step-3-configure-advanced-settings
+https://community.expensify.com/discussion/5632/deep-dive-configure-coding-for-netsuite,https://help.expensify.com/articles/new-expensify/connections/netsuite/Connect-to-NetSuite#configure-netsuite-integration
+https://community.expensify.com/discussion/5632/deep-dive-configure-coding-for-netsuite#tax,https://help.expensify.com/articles/new-expensify/connections/netsuite/Connect-to-NetSuite#configure-netsuite-integration
+https://community.expensify.com/discussion/5649/deep-dive-configure-advanced-settings-for-quickbooks-online,https://help.expensify.com/articles/expensify-classic/connections/quickbooks-online/Configure-Quickbooks-Online
+https://community.expensify.com/discussion/5654/deep-dive-using-expense-rules-to-vendor-match-when-exporting-to-an-accounting-package,https://help.expensify.com/articles/expensify-classic/expenses/Expense-Rules#how-can-i-use-expense-rules-to-vendor-match-when-exporting-to-an-accounting-package
+https://community.expensify.com/discussion/5656/deep-dive-configure-coding-for-xero/,https://help.expensify.com/articles/new-expensify/connections/xero/Connect-to-Xero#step-2-configure-import-settings
+https://community.expensify.com/discussion/5698/deep-dive-financialforce-ffa-coding-configurations/,https://help.expensify.com/articles/expensify-classic/connections/certinia/Connect-To-Certinia
+https://community.expensify.com/discussion/5742/deep-dive-what-is-scheduled-submit-and-how-does-it-work,https://help.expensify.com/articles/expensify-classic/reports/Automatically-submit-employee-reports
+https://community.expensify.com/discussion/5752/how-to-use-the-comments-section-of-a-report,https://help.expensify.com/articles/expensify-classic/reports/Add-comments-and-attachments-to-a-report
+https://community.expensify.com/discussion/5781/how-to-cancel-your-expensify-card,https://help.expensify.com/articles/expensify-classic/expensify-card/Deactivate-or-cancel-an-Expensify-Card
+https://community.expensify.com/discussion/5799/deep-dive-date-formating-for-formulas,https://help.expensify.com/articles/expensify-classic/spending-insights/Custom-Templates
+https://community.expensify.com/discussion/5864/how-to-add-a-personal-bank-account-to-receive-reimbursement,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account
+https://community.expensify.com/discussion/5941/how-to-reimburse-overseas-employees-for-us-employers/,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Global-Reimbursements
+https://community.expensify.com/discussion/6203/deep-dive-expensify-card-and-netsuite-auto-reconciliation-how-it-works,https://help.expensify.com/articles/expensify-classic/expensify-card/Expensify-Card-Reconciliation
+https://community.expensify.com/discussion/6698/faq-troubleshooting-bank-and-card-errors,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Troubleshooting
+https://community.expensify.com/discussion/6698/faq-troubleshooting-bank-and-card-errors#account-type-not-supported,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Troubleshooting
+https://community.expensify.com/discussion/6827/what-s-happening-to-my-expensify-bill,https://help.expensify.com/articles/expensify-classic/expensify-billing/Billing-Overview
+https://community.expensify.com/discussion/6898/deep-dive-guide-to-billing,https://help.expensify.com/articles/expensify-classic/expensify-billing/Billing-Overview
+https://community.expensify.com/discussion/7231/how-to-export-invoices-to-netsuite,https://help.expensify.com/articles/new-expensify/connections/netsuite/Connect-to-NetSuite#export-invoices-to
+https://community.expensify.com/discussion/7335/faq-what-is-the-expensify-card-auto-reconciliation-process,https://help.expensify.com/articles/new-expensify/expenses-&-payments/Send-an-invoice
+https://community.expensify.com/discussion/7524/how-to-set-up-disable-2fa-for-your-domain,https://help.expensify.com/articles/expensify-classic/domains/Add-Domain-Members-and-Admins
+https://community.expensify.com/discussion/7736/faq-troubleshooting-two-factor-authentication-issues,https://help.expensify.com/articles/expensify-classic/settings/Enable-two-factor-authentication
+https://community.expensify.com/discussion/7862/introducing-expensify-cash-open-source-financial-group-chat-built-with-react-native,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills
+https://community.expensify.com/discussion/7931/how-to-become-an-expensify-org-donor,https://www.expensify.org/donate
+https://community.expensify.com/discussion/8705/how-to-change-an-invoice-to-an-expense-report/,https://help.expensify.com/articles/expensify-classic/reports/Edit-a-report
+https://community.expensify.com/discussion/8707/how-to-connect-bolt-to-your-expensify-account-using-a-work-profile/,https://bolt.eu/en/support/articles/4403357843090/
+https://community.expensify.com/discussion/8803/settle-your-expensify-cards-monthly-or-daily-you-pick,https://help.expensify.com/articles/expensify-classic/expensify-card/Statements#expensify-card-settlement-frequency
+https://community.expensify.com/discussion/4784/how-to-alternate-option-submit-as-part-of-approval-workflow,https://help.expensify.com/articles/expensify-classic/reports/Create-a-report-approval-workflow
+https://community.expensify.com/discussion/4863/how-to-assign-and-unassign-company-cards,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Commercial-Card-Feeds#how-to-assign-company-cards
+https://community.expensify.com/discussion/4901/how-to-connect-locomote-to-your-expensify-account,https://www.locomote.com/marketplace/expensify-expense-management
+https://community.expensify.com/discussion/4902/how-to-expense-grab-airport-mobile-orders-with-expensify,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations#how-to-connect-to-grab
+https://community.expensify.com/discussion/4953/how-to-forward-hoteltonight-expenses-to-your-expensify-account,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations#how-to-connect-to-hoteltonight
+https://community.expensify.com/discussion/5042/faq-expensierror-xro052-expenses-are-not-categorized-with-a-xero-account,https://help.expensify.com/articles/expensify-classic/connections/xero/Xero-Troubleshooting
+https://community.expensify.com/discussion/5151/how-to-connect-spothero-to-your-expensify-account-using-a-business-profile,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations#how-to-connect-to-spothero
+https://community.expensify.com/discussion/5154/how-to-connect-tripactions-to-your-expensify-group-policy,https://help.expensify.com/articles/expensify-classic/connections/Navan
+https://community.expensify.com/discussion/5156/how-to-connect-grab-to-your-expensify-account-using-a-business-profile,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations#how-to-connect-to-grab
+https://community.expensify.com/discussion/5159/faq-what-does-please-update-your-expensify-bundle-mean-financialforce-psa-srp,https://help.expensify.com/articles/expensify-classic/connections/certinia/Certinia-Troubleshooting
+https://community.expensify.com/discussion/5554/deep-dive-what-are-domains-and-how-do-i-use-them,https://help.expensify.com/expensify-classic/hubs/domains/
+https://community.expensify.com/discussion/5587/deep-dive-understanding-policy-types-and-billing-options,https://help.expensify.com/articles/expensify-classic/expensify-billing/Change-Plan-Or-Subscription
+https://community.expensify.com/discussion/5643/deep-dive-submit-and-approve,https://help.expensify.com/articles/new-expensify/expenses-&-payments/Approve-and-pay-expenses
+https://community.expensify.com/discussion/5668/deep-dive-how-trips-work-and-benefits,https://help.expensify.com/articles/expensify-classic/expenses/Trips
+https://community.expensify.com/discussion/5689/deep-dive-is-a-direct-connection-the-best-option/,https://help.expensify.com/articles/expensify-classic/connect-credit-cards/company-cards/Direct-Bank-Connections
+https://community.expensify.com/discussion/6592/deep-dive-ach-reimbursement-timing,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Receive-Payments#faq
+https://community.expensify.com/discussion/7914/how-to-pay-an-invoice-and-bill-in-expensify,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports-Invoices-and-Bills
+https://community.expensify.com/discussion/8229/connecting-kayak-for-business,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations#how-to-connect-to-kayak-for-business
+https://community.expensify.com/discussion/9507/how-to-use-the-delta-receipt-integration,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations
+https://community.expensify.com/discussion/8814/a-welcome-update-to-expensifyapproved-billing,https://help.expensify.com/articles/expensify-classic/expensify-partner-program/Partner-Billing-Guide
+https://community.expensify.com/discussion/4480/how-to-connect-to-bill-com,https://integrations.expensify.com/Integration-Server/doc/#report-exporter
+https://community.expensify.com/discussion/5509/deep-dive-who-can-reimburse-reports-and-what-happens-when-you-do,https://help.expensify.com/articles/expensify-classic/workspaces/Configure-Reimbursement-Settings
+https://community.expensify.com/discussion/4952/how-to-connect-pana-to-your-expensify-account,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations
+https://community.expensify.com/discussion/4939/how-to-connect-upside-to-your-expensify-account,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations
+https://community.expensify.com/discussion/4905/how-to-setup-the-parking-spot-to-automatically-forward-airport-parking-receipts-to-expensify,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations
+https://community.expensify.com/discussion/5324/how-to-connect-parkwhiz-to-your-expensify-account-using-a-business-profile,https://help.expensify.com/articles/expensify-classic/connections/Additional-Travel-Integrations
+https://community.expensify.com/discussion/6983/faq-why-do-i-need-to-provide-personal-documentation-when-setting-up-updating-my-bank-account,https://help.expensify.com/articles/new-expensify/expenses-&-payments/Connect-a-Business-Bank-Account#faq
diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist
index 1bad0f3ab185..e46e1e1749a4 100644
--- a/ios/NewExpensify/Info.plist
+++ b/ios/NewExpensify/Info.plist
@@ -19,7 +19,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>9.0.20</string>
+	<string>9.0.22</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleURLTypes</key>
@@ -40,7 +40,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>9.0.20.6</string>
+	<string>9.0.22.5</string>
 	<key>FullStory</key>
 	<dict>
 		<key>OrgId</key>
diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist
index 53d9544bfa05..b710d04d83f8 100644
--- a/ios/NewExpensifyTests/Info.plist
+++ b/ios/NewExpensifyTests/Info.plist
@@ -15,10 +15,10 @@
 	<key>CFBundlePackageType</key>
 	<string>BNDL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>9.0.20</string>
+	<string>9.0.22</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>
-	<string>9.0.20.6</string>
+	<string>9.0.22.5</string>
 </dict>
 </plist>
diff --git a/ios/NotificationServiceExtension/Info.plist b/ios/NotificationServiceExtension/Info.plist
index 29db10f90aea..80215994dca9 100644
--- a/ios/NotificationServiceExtension/Info.plist
+++ b/ios/NotificationServiceExtension/Info.plist
@@ -11,9 +11,9 @@
 	<key>CFBundleName</key>
 	<string>$(PRODUCT_NAME)</string>
 	<key>CFBundleShortVersionString</key>
-	<string>9.0.20</string>
+	<string>9.0.22</string>
 	<key>CFBundleVersion</key>
-	<string>9.0.20.6</string>
+	<string>9.0.22.5</string>
 	<key>NSExtension</key>
 	<dict>
 		<key>NSExtensionPointIdentifier</key>
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index f5c825e63868..4c1ede673a79 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -1303,7 +1303,7 @@ PODS:
     - ReactCommon/turbomodule/bridging
     - ReactCommon/turbomodule/core
     - Yoga
-  - react-native-keyboard-controller (1.12.2):
+  - react-native-keyboard-controller (1.13.0):
     - glog
     - hermes-engine
     - RCT-Folly (= 2022.05.16.00)
@@ -1871,7 +1871,7 @@ PODS:
   - RNGoogleSignin (10.0.1):
     - GoogleSignIn (~> 7.0)
     - React-Core
-  - RNLiveMarkdown (0.1.111):
+  - RNLiveMarkdown (0.1.112):
     - glog
     - hermes-engine
     - RCT-Folly (= 2022.05.16.00)
@@ -1889,9 +1889,9 @@ PODS:
     - React-utils
     - ReactCommon/turbomodule/bridging
     - ReactCommon/turbomodule/core
-    - RNLiveMarkdown/common (= 0.1.111)
+    - RNLiveMarkdown/common (= 0.1.112)
     - Yoga
-  - RNLiveMarkdown/common (0.1.111):
+  - RNLiveMarkdown/common (0.1.112):
     - glog
     - hermes-engine
     - RCT-Folly (= 2022.05.16.00)
@@ -2565,7 +2565,7 @@ SPEC CHECKSUMS:
   react-native-geolocation: 580c86eb531c0aaf7a14bc76fd2983ce47ca58aa
   react-native-image-picker: f8a13ff106bcc7eb00c71ce11fdc36aac2a44440
   react-native-key-command: 28ccfa09520e7d7e30739480dea4df003493bfe8
-  react-native-keyboard-controller: 47c01b0741ae5fc84e53cf282e61cfa5c2edb19b
+  react-native-keyboard-controller: a8cbf848d0bc0e1976a07948f1c53b8432c1246c
   react-native-launch-arguments: 5f41e0abf88a15e3c5309b8875d6fd5ac43df49d
   react-native-netinfo: 02d31de0e08ab043d48f2a1a8baade109d7b6ca5
   react-native-pager-view: ccd4bbf9fc7effaf8f91f8dae43389844d9ef9fa
@@ -2614,7 +2614,7 @@ SPEC CHECKSUMS:
   RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
   RNGestureHandler: 74b7b3d06d667ba0bbf41da7718f2607ae0dfe8f
   RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0
-  RNLiveMarkdown: cf2707e6050a3548bde4f66bd752d721f91e8ab6
+  RNLiveMarkdown: baf79849de6b7fd648cc2b3878d7b4e2c65d6721
   RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81
   rnmapbox-maps: df8fe93dbd251f25022f4023d31bc04160d4d65c
   RNPermissions: d2392b754e67bc14491f5b12588bef2864e783f3
diff --git a/package-lock.json b/package-lock.json
index 4122646cbade..59f36001c1db 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,19 +1,19 @@
 {
   "name": "new.expensify",
-  "version": "9.0.20-6",
+  "version": "9.0.22-5",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "new.expensify",
-      "version": "9.0.20-6",
+      "version": "9.0.22-5",
       "hasInstallScript": true,
       "license": "MIT",
       "dependencies": {
         "@babel/plugin-proposal-private-methods": "^7.18.6",
         "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
         "@dotlottie/react-player": "^1.6.3",
-        "@expensify/react-native-live-markdown": "^0.1.111",
+        "@expensify/react-native-live-markdown": "0.1.112",
         "@expo/metro-runtime": "~3.1.1",
         "@formatjs/intl-datetimeformat": "^6.10.0",
         "@formatjs/intl-listformat": "^7.2.2",
@@ -55,7 +55,7 @@
         "date-fns-tz": "^2.0.0",
         "dom-serializer": "^0.2.2",
         "domhandler": "^4.3.0",
-        "expensify-common": "2.0.64",
+        "expensify-common": "2.0.72",
         "expo": "^50.0.3",
         "expo-av": "~13.10.4",
         "expo-image": "1.11.0",
@@ -97,7 +97,7 @@
         "react-native-image-picker": "^7.0.3",
         "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#93399c6410de32966eb57085936ef6951398c2c3",
         "react-native-key-command": "^1.0.8",
-        "react-native-keyboard-controller": "^1.12.2",
+        "react-native-keyboard-controller": "1.13.0",
         "react-native-launch-arguments": "^4.0.2",
         "react-native-linear-gradient": "^2.8.1",
         "react-native-localize": "^2.2.6",
@@ -189,6 +189,7 @@
         "@types/react-collapse": "^5.0.1",
         "@types/react-dom": "^18.2.4",
         "@types/react-is": "^18.3.0",
+        "@types/react-native-web": "^0.0.0",
         "@types/react-test-renderer": "^18.0.0",
         "@types/semver": "^7.5.4",
         "@types/setimmediate": "^1.0.2",
@@ -213,11 +214,11 @@
         "csv-parse": "^5.5.5",
         "diff-so-fancy": "^1.3.0",
         "dotenv": "^16.0.3",
-        "electron": "^29.4.1",
+        "electron": "^29.4.6",
         "electron-builder": "25.0.0",
         "eslint": "^8.57.0",
         "eslint-config-airbnb-typescript": "^18.0.0",
-        "eslint-config-expensify": "^2.0.52",
+        "eslint-config-expensify": "^2.0.58",
         "eslint-config-prettier": "^9.1.0",
         "eslint-plugin-jest": "^28.6.0",
         "eslint-plugin-jsdoc": "^46.2.6",
@@ -3951,9 +3952,9 @@
       }
     },
     "node_modules/@expensify/react-native-live-markdown": {
-      "version": "0.1.111",
-      "resolved": "https://registry.npmjs.org/@expensify/react-native-live-markdown/-/react-native-live-markdown-0.1.111.tgz",
-      "integrity": "sha512-oBRKAGA6Cv+e/D+Z5YduKL7jnD0RJC26SSyUDNMfj11Y3snG0ayi4+XKjVtfbEor9Qb/54WxM8QgEAolxcZ7Xg==",
+      "version": "0.1.112",
+      "resolved": "https://registry.npmjs.org/@expensify/react-native-live-markdown/-/react-native-live-markdown-0.1.112.tgz",
+      "integrity": "sha512-8FSB/RMfuw0tOqrz/aSbhf97p0Rnshxu5J6NaU+W0c0X+WhBY31v3pqL8EaQqADEtNPOp3At1R2iZst0s1bMGQ==",
       "workspaces": [
         "parser",
         "example",
@@ -17851,6 +17852,16 @@
         "react-native": "*"
       }
     },
+    "node_modules/@types/react-native-web": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/@types/react-native-web/-/react-native-web-0.0.0.tgz",
+      "integrity": "sha512-WeaDnb57Z60pUVu6FO6WybA+7BAbPz83otLVbOpcPvRN2f/PIDt/9ViiXJ989QFrLhdex/Jen15xMOyO2X2L2A==",
+      "dev": true,
+      "dependencies": {
+        "@types/react": "*",
+        "react-native": "*"
+      }
+    },
     "node_modules/@types/react-redux": {
       "version": "7.1.27",
       "license": "MIT",
@@ -18109,6 +18120,186 @@
         }
       }
     },
+    "node_modules/@typescript-eslint/rule-tester": {
+      "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-7.18.0.tgz",
+      "integrity": "sha512-ClrFQlwen9pJcYPIBLuarzBpONQAwjmJ0+YUjAo1TGzoZFJPyUK/A7bb4Mps0u+SMJJnFXbfMN8I9feQDf0O5A==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/typescript-estree": "7.18.0",
+        "@typescript-eslint/utils": "7.18.0",
+        "ajv": "^6.12.6",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "lodash.merge": "4.6.2",
+        "semver": "^7.6.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || >=20.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "@eslint/eslintrc": ">=2",
+        "eslint": "^8.56.0"
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/scope-manager": {
+      "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
+      "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/types": "7.18.0",
+        "@typescript-eslint/visitor-keys": "7.18.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || >=20.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/types": {
+      "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
+      "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
+      "dev": true,
+      "engines": {
+        "node": "^18.18.0 || >=20.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/typescript-estree": {
+      "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
+      "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/types": "7.18.0",
+        "@typescript-eslint/visitor-keys": "7.18.0",
+        "debug": "^4.3.4",
+        "globby": "^11.1.0",
+        "is-glob": "^4.0.3",
+        "minimatch": "^9.0.4",
+        "semver": "^7.6.0",
+        "ts-api-utils": "^1.3.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || >=20.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/utils": {
+      "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
+      "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
+      "dev": true,
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.4.0",
+        "@typescript-eslint/scope-manager": "7.18.0",
+        "@typescript-eslint/types": "7.18.0",
+        "@typescript-eslint/typescript-estree": "7.18.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || >=20.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.56.0"
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/@typescript-eslint/visitor-keys": {
+      "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+      "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/types": "7.18.0",
+        "eslint-visitor-keys": "^3.4.3"
+      },
+      "engines": {
+        "node": "^18.18.0 || >=20.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/eslint-visitor-keys": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "node_modules/@typescript-eslint/rule-tester/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@typescript-eslint/scope-manager": {
       "version": "7.13.1",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz",
@@ -23932,11 +24123,12 @@
       }
     },
     "node_modules/electron": {
-      "version": "29.4.1",
-      "resolved": "https://registry.npmjs.org/electron/-/electron-29.4.1.tgz",
-      "integrity": "sha512-YQvMAtdmjMF1yGfQFuO/KOmy+04SKot85NalppK/8zxKwOKrrK6dJBp+nJWteqBwRAKiasSrC1lDalF6hZct/w==",
+      "version": "29.4.6",
+      "resolved": "https://registry.npmjs.org/electron/-/electron-29.4.6.tgz",
+      "integrity": "sha512-fz8ndj8cmmf441t4Yh2FDP3Rn0JhLkVGvtUf2YVMbJ5SdJPlc0JWll9jYkhh60jDKVVCr/tBAmfxqRnXMWJpzg==",
       "dev": true,
       "hasInstallScript": true,
+      "license": "MIT",
       "dependencies": {
         "@electron/get": "^2.0.0",
         "@types/node": "^20.9.0",
@@ -24714,13 +24906,14 @@
       }
     },
     "node_modules/eslint-config-expensify": {
-      "version": "2.0.52",
-      "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.52.tgz",
-      "integrity": "sha512-TUhtgsb+EUsfqhEGhSbUVgIypEhZjloYC8PEPxKKniaaG14SW/z1G3C5E4NJQ05xVdRwJ4H+shF7ZzOYbVcraQ==",
+      "version": "2.0.58",
+      "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.58.tgz",
+      "integrity": "sha512-iLDJeXwMYLcBRDnInVReHWjMUsNrHMnWfyoQbvuDTChcJANc+QzuDU0gdsDpBx2xjxVF0vckwEXnzmWcUW1Bpw==",
       "dev": true,
       "dependencies": {
         "@lwc/eslint-plugin-lwc": "^1.7.2",
         "@typescript-eslint/parser": "^7.12.0",
+        "@typescript-eslint/rule-tester": "^7.16.1",
         "@typescript-eslint/utils": "^7.12.0",
         "babel-eslint": "^10.1.0",
         "eslint": "^8.56.0",
@@ -25942,9 +26135,9 @@
       }
     },
     "node_modules/expensify-common": {
-      "version": "2.0.64",
-      "resolved": "https://registry.npmjs.org/expensify-common/-/expensify-common-2.0.64.tgz",
-      "integrity": "sha512-+P9+SMPlY799b2l4A3LQ1dle+KvJXcZ01vAFxIDHni4L2Gc1QyddPKLejbwjOrkGqgl3muoR9cwuX/o+QYlYxA==",
+      "version": "2.0.72",
+      "resolved": "https://registry.npmjs.org/expensify-common/-/expensify-common-2.0.72.tgz",
+      "integrity": "sha512-/mrlSic8y3D7pbbGMe3ZtDhHOS+WmrqgBEy3P/o9qW6CFpczs9cqjp9DfF8L53qvGtiD7cm5au4tapj01Yas/g==",
       "dependencies": {
         "awesome-phonenumber": "^5.4.0",
         "classnames": "2.5.0",
@@ -25956,7 +26149,7 @@
         "prop-types": "15.8.1",
         "react": "16.12.0",
         "react-dom": "16.12.0",
-        "semver": "^7.6.2",
+        "semver": "^7.6.3",
         "simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5",
         "ua-parser-js": "^1.0.38"
       }
@@ -37289,13 +37482,13 @@
       "license": "MIT"
     },
     "node_modules/react-native-keyboard-controller": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.12.2.tgz",
-      "integrity": "sha512-10Sy0+neSHGJxOmOxrUJR8TQznnrQ+jTFQtM1PP6YnblNQeAw1eOa+lO6YLGenRr5WuNSMZbks/3Ay0e2yMKLw==",
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.13.0.tgz",
+      "integrity": "sha512-bMRx94Mt+HOkh6WRkShYgbszUcF+S9OWYHUT+DhFK9/nm1AxmDoMQKorDdb4XUXJgxrDe2k46fx4eAA6BZm/wA==",
       "peerDependencies": {
         "react": "*",
         "react-native": "*",
-        "react-native-reanimated": ">=2.3.0"
+        "react-native-reanimated": ">=3.0.0"
       }
     },
     "node_modules/react-native-launch-arguments": {
@@ -39498,9 +39691,9 @@
       }
     },
     "node_modules/semver": {
-      "version": "7.6.2",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
-      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+      "version": "7.6.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
       "bin": {
         "semver": "bin/semver.js"
       },
diff --git a/package.json b/package.json
index 5486c5d1ee56..e285e68eed77 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "new.expensify",
-  "version": "9.0.20-6",
+  "version": "9.0.22-5",
   "author": "Expensify, Inc.",
   "homepage": "https://new.expensify.com",
   "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
@@ -69,7 +69,7 @@
     "@babel/plugin-proposal-private-methods": "^7.18.6",
     "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
     "@dotlottie/react-player": "^1.6.3",
-    "@expensify/react-native-live-markdown": "^0.1.111",
+    "@expensify/react-native-live-markdown": "0.1.112",
     "@expo/metro-runtime": "~3.1.1",
     "@formatjs/intl-datetimeformat": "^6.10.0",
     "@formatjs/intl-listformat": "^7.2.2",
@@ -111,7 +111,7 @@
     "date-fns-tz": "^2.0.0",
     "dom-serializer": "^0.2.2",
     "domhandler": "^4.3.0",
-    "expensify-common": "2.0.64",
+    "expensify-common": "2.0.72",
     "expo": "^50.0.3",
     "expo-av": "~13.10.4",
     "expo-image": "1.11.0",
@@ -153,7 +153,7 @@
     "react-native-image-picker": "^7.0.3",
     "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#93399c6410de32966eb57085936ef6951398c2c3",
     "react-native-key-command": "^1.0.8",
-    "react-native-keyboard-controller": "^1.12.2",
+    "react-native-keyboard-controller": "1.13.0",
     "react-native-launch-arguments": "^4.0.2",
     "react-native-linear-gradient": "^2.8.1",
     "react-native-localize": "^2.2.6",
@@ -245,6 +245,7 @@
     "@types/react-collapse": "^5.0.1",
     "@types/react-dom": "^18.2.4",
     "@types/react-is": "^18.3.0",
+    "@types/react-native-web": "^0.0.0",
     "@types/react-test-renderer": "^18.0.0",
     "@types/semver": "^7.5.4",
     "@types/setimmediate": "^1.0.2",
@@ -269,11 +270,11 @@
     "csv-parse": "^5.5.5",
     "diff-so-fancy": "^1.3.0",
     "dotenv": "^16.0.3",
-    "electron": "^29.4.1",
+    "electron": "^29.4.6",
     "electron-builder": "25.0.0",
     "eslint": "^8.57.0",
     "eslint-config-airbnb-typescript": "^18.0.0",
-    "eslint-config-expensify": "^2.0.52",
+    "eslint-config-expensify": "^2.0.58",
     "eslint-config-prettier": "^9.1.0",
     "eslint-plugin-jest": "^28.6.0",
     "eslint-plugin-jsdoc": "^46.2.6",
diff --git a/patches/@react-native+virtualized-lists+0.73.4+002+osr-improvement.patch b/patches/@react-native+virtualized-lists+0.73.4+002+osr-improvement.patch
index dc45a6758d5c..38871a2e7764 100644
--- a/patches/@react-native+virtualized-lists+0.73.4+002+osr-improvement.patch
+++ b/patches/@react-native+virtualized-lists+0.73.4+002+osr-improvement.patch
@@ -1,8 +1,87 @@
 diff --git a/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js b/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
-index e338d90..70a59bf 100644
+index e338d90..238989f 100644
 --- a/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
 +++ b/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
-@@ -1219,7 +1219,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+@@ -89,6 +89,7 @@ type State = {
+   firstVisibleItemKey: ?string,
+   // When > 0 the scroll position available in JS is considered stale and should not be used.
+   pendingScrollUpdateCount: number,
++  lastItemCount: number,
+ };
+ 
+ function getScrollingThreshold(threshold: number, visibleLength: number) {
+@@ -404,12 +405,13 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+ 
+     const minIndexForVisible =
+       this.props.maintainVisibleContentPosition?.minIndexForVisible ?? 0;
++    const itemCount = this.props.getItemCount(this.props.data);
+ 
+     this.state = {
+       cellsAroundViewport: initialRenderRegion,
+       renderMask: VirtualizedList._createRenderMask(props, initialRenderRegion),
+       firstVisibleItemKey:
+-        this.props.getItemCount(this.props.data) > minIndexForVisible
++        itemCount > minIndexForVisible
+           ? VirtualizedList._getItemKey(this.props, minIndexForVisible)
+           : null,
+       // When we have a non-zero initialScrollIndex, we will receive a
+@@ -420,6 +422,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+         this.props.initialScrollIndex > 0
+           ? 1
+           : 0,
++      lastItemCount: itemCount,
+     };
+   }
+ 
+@@ -701,16 +704,15 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+     // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make
+     // sure we're rendering a reasonable range here.
+     const itemCount = newProps.getItemCount(newProps.data);
+-    if (itemCount === prevState.renderMask.numCells()) {
++    if (itemCount === prevState.renderMask.numCells() && itemCount === prevState.lastItemCount) {
+       return prevState;
+     }
+-
+     let maintainVisibleContentPositionAdjustment: ?number = null;
+     const prevFirstVisibleItemKey = prevState.firstVisibleItemKey;
+     const minIndexForVisible =
+       newProps.maintainVisibleContentPosition?.minIndexForVisible ?? 0;
+     const newFirstVisibleItemKey =
+-      newProps.getItemCount(newProps.data) > minIndexForVisible
++      itemCount > minIndexForVisible
+         ? VirtualizedList._getItemKey(newProps, minIndexForVisible)
+         : null;
+     if (
+@@ -758,6 +760,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+         maintainVisibleContentPositionAdjustment != null
+           ? prevState.pendingScrollUpdateCount + 1
+           : prevState.pendingScrollUpdateCount,
++      lastItemCount: itemCount,
+     };
+   }
+ 
+@@ -1159,7 +1162,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+     }
+   }
+ 
+-  componentDidUpdate(prevProps: Props) {
++  componentDidUpdate(prevProps: Props, prevState: State) {
+     const {data, extraData} = this.props;
+     if (data !== prevProps.data || extraData !== prevProps.extraData) {
+       // clear the viewableIndices cache to also trigger
+@@ -1181,6 +1184,11 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+     if (hiPriInProgress) {
+       this._hiPriInProgress = false;
+     }
++
++    if (this.state.cellsAroundViewport.first !== prevState.cellsAroundViewport.first ||
++        this.state.cellsAroundViewport.last !== prevState.cellsAroundViewport.last) {
++      this._maybeCallOnEdgeReached();
++    }
+   }
+ 
+   _cellRefs: {[string]: null | CellRenderer<any>} = {};
+@@ -1219,7 +1227,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
      zoomScale: 1,
    };
    _scrollRef: ?React.ElementRef<any> = null;
@@ -11,7 +90,7 @@ index e338d90..70a59bf 100644
    _sentEndForContentLength = 0;
    _updateCellsToRenderBatcher: Batchinator;
    _viewabilityTuples: Array<ViewabilityHelperCallbackTuple> = [];
-@@ -1550,16 +1550,16 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+@@ -1550,16 +1558,16 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
        onStartReached != null &&
        this.state.cellsAroundViewport.first === 0 &&
        isWithinStartThreshold &&
diff --git a/patches/react-native+0.73.4+016+iOSCoreAnimationBorderRendering.patch b/patches/react-native+0.73.4+016+iOSCoreAnimationBorderRendering.patch
index b59729e79622..478e282e387d 100644
--- a/patches/react-native+0.73.4+016+iOSCoreAnimationBorderRendering.patch
+++ b/patches/react-native+0.73.4+016+iOSCoreAnimationBorderRendering.patch
@@ -1,22 +1,23 @@
 diff --git a/node_modules/react-native/React/Fabric/Mounting/RCTMountingManager.mm b/node_modules/react-native/React/Fabric/Mounting/RCTMountingManager.mm
-index b4cfb3d..7aa00e5 100644
+index b4cfb3d..fdfae56 100644
 --- a/node_modules/react-native/React/Fabric/Mounting/RCTMountingManager.mm
 +++ b/node_modules/react-native/React/Fabric/Mounting/RCTMountingManager.mm
-@@ -49,6 +49,9 @@ static void RCTPerformMountInstructions(
- {
-   SystraceSection s("RCTPerformMountInstructions");
+@@ -265,6 +265,9 @@ static void RCTPerformMountInstructions(
  
+   auto surfaceId = mountingCoordinator.getSurfaceId();
+   
 +  [CATransaction begin];
 +  [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
 +
-   for (const auto &mutation : mutations) {
-     switch (mutation.type) {
-       case ShadowViewMutation::Create: {
-@@ -147,6 +150,7 @@ static void RCTPerformMountInstructions(
-       }
-     }
-   }
+   mountingCoordinator.getTelemetryController().pullTransaction(
+       [&](const MountingTransaction &transaction, const SurfaceTelemetry &surfaceTelemetry) {
+         [self.delegate mountingManager:self willMountComponentsWithRootTag:surfaceId];
+@@ -278,6 +281,8 @@ static void RCTPerformMountInstructions(
+         _observerCoordinator.notifyObserversMountingTransactionDidMount(transaction, surfaceTelemetry);
+         [self.delegate mountingManager:self didMountComponentsWithRootTag:surfaceId];
+       });
++  
 +  [CATransaction commit];
  }
  
- @implementation RCTMountingManager {
+ - (void)setIsJSResponder:(BOOL)isJSResponder
diff --git a/patches/react-native+0.73.4+024+fixMVCPAndroid.patch b/patches/react-native+0.73.4+024+fixMVCPAndroid.patch
new file mode 100644
index 000000000000..fe37e38c3040
--- /dev/null
+++ b/patches/react-native+0.73.4+024+fixMVCPAndroid.patch
@@ -0,0 +1,334 @@
+diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java
+index fff761f..2cebd6b 100644
+--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java
++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java
+@@ -82,6 +82,7 @@ public class MaintainVisibleScrollPositionHelper<ScrollViewT extends ViewGroup &
+       return;
+     }
+     mListening = false;
++    mFirstVisibleView = null;
+     getUIManagerModule().removeUIManagerEventListener(this);
+   }
+ 
+@@ -89,20 +90,19 @@ public class MaintainVisibleScrollPositionHelper<ScrollViewT extends ViewGroup &
+    * Update the scroll position of the managed ScrollView. This should be called after layout has
+    * been updated.
+    */
+-  public void updateScrollPosition() {
++  public void onLayout() {
+     // On Fabric this will be called internally in `didMountItems`.
+-    if (ViewUtil.getUIManagerType(mScrollView.getId()) == UIManagerType.FABRIC) {
+-      return;
++    if (ViewUtil.getUIManagerType(mScrollView.getId()) != UIManagerType.FABRIC) {
++      didMountItemsInternal();
+     }
+-    updateScrollPositionInternal();
+   }
+ 
+-  private void updateScrollPositionInternal() {
+-    if (mConfig == null || mFirstVisibleView == null || mPrevFirstVisibleFrame == null) {
++  private void didMountItemsInternal() {
++    if (mConfig == null || mPrevFirstVisibleFrame == null) {
+       return;
+     }
+ 
+-    View firstVisibleView = mFirstVisibleView.get();
++    View firstVisibleView = getFirstVisibleView();
+     if (firstVisibleView == null) {
+       return;
+     }
+@@ -114,7 +114,7 @@ public class MaintainVisibleScrollPositionHelper<ScrollViewT extends ViewGroup &
+       int deltaX = newFrame.left - mPrevFirstVisibleFrame.left;
+       if (deltaX != 0) {
+         int scrollX = mScrollView.getScrollX();
+-        mScrollView.scrollTo(scrollX + deltaX, mScrollView.getScrollY());
++        mScrollView.scrollToPreservingMomentum(scrollX + deltaX, mScrollView.getScrollY());
+         mPrevFirstVisibleFrame = newFrame;
+         if (mConfig.autoScrollToTopThreshold != null
+             && scrollX <= mConfig.autoScrollToTopThreshold) {
+@@ -125,7 +125,7 @@ public class MaintainVisibleScrollPositionHelper<ScrollViewT extends ViewGroup &
+       int deltaY = newFrame.top - mPrevFirstVisibleFrame.top;
+       if (deltaY != 0) {
+         int scrollY = mScrollView.getScrollY();
+-        mScrollView.scrollTo(mScrollView.getScrollX(), scrollY + deltaY);
++        mScrollView.scrollToPreservingMomentum(mScrollView.getScrollX(), scrollY + deltaY);
+         mPrevFirstVisibleFrame = newFrame;
+         if (mConfig.autoScrollToTopThreshold != null
+             && scrollY <= mConfig.autoScrollToTopThreshold) {
+@@ -146,7 +146,7 @@ public class MaintainVisibleScrollPositionHelper<ScrollViewT extends ViewGroup &
+             ViewUtil.getUIManagerType(mScrollView.getId())));
+   }
+ 
+-  private void computeTargetView() {
++  public void onScroll() {
+     if (mConfig == null) {
+       return;
+     }
+@@ -156,17 +156,45 @@ public class MaintainVisibleScrollPositionHelper<ScrollViewT extends ViewGroup &
+     }
+ 
+     int currentScroll = mHorizontal ? mScrollView.getScrollX() : mScrollView.getScrollY();
++    View firstVisibleView = null;
++    // We cannot assume that the views will be in position order because of things like z-index
++    // which will change the order of views in their parent. This means we need to iterate through
++    // the full children array and find the view with the smallest position that is bigger than
++    // the scroll position.
++    float firstVisibleViewPosition = Float.MAX_VALUE;
+     for (int i = mConfig.minIndexForVisible; i < contentView.getChildCount(); i++) {
+       View child = contentView.getChildAt(i);
+       float position = mHorizontal ? child.getX() : child.getY();
+-      if (position > currentScroll || i == contentView.getChildCount() - 1) {
+-        mFirstVisibleView = new WeakReference<>(child);
+-        Rect frame = new Rect();
+-        child.getHitRect(frame);
+-        mPrevFirstVisibleFrame = frame;
+-        break;
++      if ((position > currentScroll && position < firstVisibleViewPosition) ||
++              (firstVisibleView == null && i == contentView.getChildCount() - 1)) {
++        firstVisibleView = child;
++        firstVisibleViewPosition = position;
++      }
++    }
++    mFirstVisibleView = new WeakReference<>(firstVisibleView);
++  }
++
++  private View getFirstVisibleView() {
++    return mFirstVisibleView != null ? mFirstVisibleView.get() : null;
++  }
++
++  private void willMountItemsInternal() {
++    View firstVisibleView = getFirstVisibleView();
++
++    // If we don't have a first visible view because no scroll happened call onScroll
++    // to update it.
++    if (firstVisibleView == null) {
++      onScroll();
++      firstVisibleView = getFirstVisibleView();
++
++      // There are cases where it is possible for this to still be null so just bail out.
++      if (firstVisibleView == null) {
++        return;
+       }
+     }
++    Rect frame = new Rect();
++    firstVisibleView.getHitRect(frame);
++    mPrevFirstVisibleFrame = frame;
+   }
+ 
+   // UIManagerListener
+@@ -177,19 +205,19 @@ public class MaintainVisibleScrollPositionHelper<ScrollViewT extends ViewGroup &
+         new Runnable() {
+           @Override
+           public void run() {
+-            computeTargetView();
++            willMountItemsInternal();
+           }
+         });
+   }
+ 
+   @Override
+   public void willMountItems(UIManager uiManager) {
+-    computeTargetView();
++    willMountItemsInternal();
+   }
+ 
+   @Override
+   public void didMountItems(UIManager uiManager) {
+-    updateScrollPositionInternal();
++    didMountItemsInternal();
+   }
+ 
+   @Override
+diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java
+index 7dbcb78..34ad4a1 100644
+--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java
++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java
+@@ -475,6 +475,10 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
+           mOnScrollDispatchHelper.getXFlingVelocity(),
+           mOnScrollDispatchHelper.getYFlingVelocity());
+     }
++
++    if (mMaintainVisibleContentPositionHelper != null) {
++      mMaintainVisibleContentPositionHelper.onScroll();
++    }
+   }
+ 
+   @Nullable
+@@ -1323,6 +1327,14 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
+     setPendingContentOffsets(x, y);
+   }
+ 
++  /**
++   * Scrolls to a new position preserving any momentum scrolling animation.
++   */
++  public void scrollToPreservingMomentum(int x, int y) {
++    scrollTo(x, y);
++    recreateFlingAnimation(x, Integer.MAX_VALUE);
++  }
++
+   private boolean isContentReady() {
+     View child = getContentView();
+     return child != null && child.getWidth() != 0 && child.getHeight() != 0;
+@@ -1372,28 +1384,25 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
+     if (mReactScrollViewScrollState.getLayoutDirection() == LAYOUT_DIRECTION_RTL) {
+       adjustPositionForContentChangeRTL(left, right, oldLeft, oldRight);
+     } else if (mMaintainVisibleContentPositionHelper != null) {
+-      mMaintainVisibleContentPositionHelper.updateScrollPosition();
++      mMaintainVisibleContentPositionHelper.onLayout();
+     }
+   }
+ 
+-  private void adjustPositionForContentChangeRTL(int left, int right, int oldLeft, int oldRight) {
+-    // If we have any pending custon flings (e.g. from aninmated `scrollTo`, or flinging to a snap
+-    // point), finish them, commiting the final `scrollX`.
++  /**
++   * If we are in the middle of a fling animation from the user removing their finger
++   * (OverScroller is in `FLING_MODE`), recreate the existing fling animation since it was
++   * calculated against outdated scroll offsets.
++   */
++  private void recreateFlingAnimation(int scrollX, int maxX) {
++    // If we have any pending custom flings (e.g. from animated `scrollTo`, or flinging to a snap
++    // point), cancel them.
+     // TODO: Can we be more graceful (like OverScroller flings)?
+     if (getFlingAnimator().isRunning()) {
+-      getFlingAnimator().end();
++      getFlingAnimator().cancel();
+     }
+ 
+-    int distanceToRightEdge = oldRight - getScrollX();
+-    int newWidth = right - left;
+-    int scrollX = newWidth - distanceToRightEdge;
+-    scrollTo(scrollX, getScrollY());
+-
+-    // If we are in the middle of a fling animation from the user removing their finger
+-    // (OverScroller is in `FLING_MODE`), we must cancel and recreate the existing fling animation
+-    // since it was calculated against outdated scroll offsets.
+     if (mScroller != null && !mScroller.isFinished()) {
+-      // Calculate the veliocity and position of the fling animation at the time of this layout
++      // Calculate the velocity and position of the fling animation at the time of this layout
+       // event, which may be later than the last ScrollView tick. These values are not commited to
+       // the underlying ScrollView, which will recalculate positions on its next tick.
+       int scrollerXBeforeTick = mScroller.getCurrX();
+@@ -1413,13 +1422,29 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
+         float flingVelocityX = mScroller.getCurrVelocity() * direction;
+ 
+         mScroller.fling(
+-            scrollX, getScrollY(), (int) flingVelocityX, 0, 0, newWidth - getWidth(), 0, 0);
++          scrollX, getScrollY(), (int) flingVelocityX, 0, 0, maxX, 0, 0);
+       } else {
+         scrollTo(scrollX + (mScroller.getCurrX() - scrollerXBeforeTick), getScrollY());
+       }
+     }
+   }
+ 
++  private void adjustPositionForContentChangeRTL(int left, int right, int oldLeft, int oldRight) {
++    // If we have any pending custom flings (e.g. from animated `scrollTo`, or flinging to a snap
++    // point), finish them, committing the final `scrollX`.
++    // TODO: Can we be more graceful (like OverScroller flings)?
++    if (getFlingAnimator().isRunning()) {
++      getFlingAnimator().end();
++    }
++
++    int distanceToRightEdge = oldRight - getScrollX();
++    int newWidth = right - left;
++    int scrollX = newWidth - distanceToRightEdge;
++    scrollTo(scrollX, getScrollY());
++
++    recreateFlingAnimation(scrollX, newWidth - getWidth());
++  }
++
+   @Nullable
+   public StateWrapper getStateWrapper() {
+     return mStateWrapper;
+diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java
+index 16521c8..f966e4a 100644
+--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java
++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java
+@@ -392,6 +392,10 @@ public class ReactScrollView extends ScrollView
+           mOnScrollDispatchHelper.getXFlingVelocity(),
+           mOnScrollDispatchHelper.getYFlingVelocity());
+     }
++
++    if (mMaintainVisibleContentPositionHelper != null) {
++      mMaintainVisibleContentPositionHelper.onScroll();
++    }
+   }
+ 
+   @Override
+@@ -1091,6 +1095,55 @@ public class ReactScrollView extends ScrollView
+     setPendingContentOffsets(x, y);
+   }
+ 
++    /**
++   * If we are in the middle of a fling animation from the user removing their finger
++   * (OverScroller is in `FLING_MODE`), recreate the existing fling animation since it was
++   * calculated against outdated scroll offsets.
++   */
++  private void recreateFlingAnimation(int scrollY) {
++    // If we have any pending custom flings (e.g. from animated `scrollTo`, or flinging to a snap
++    // point), cancel them.
++    // TODO: Can we be more graceful (like OverScroller flings)?
++    if (getFlingAnimator().isRunning()) {
++      getFlingAnimator().cancel();
++    }
++
++    if (mScroller != null && !mScroller.isFinished()) {
++      // Calculate the velocity and position of the fling animation at the time of this layout
++      // event, which may be later than the last ScrollView tick. These values are not committed to
++      // the underlying ScrollView, which will recalculate positions on its next tick.
++      int scrollerYBeforeTick = mScroller.getCurrY();
++      boolean hasMoreTicks = mScroller.computeScrollOffset();
++
++      // Stop the existing animation at the current state of the scroller. We will then recreate
++      // it starting at the adjusted y offset.
++      mScroller.forceFinished(true);
++
++      if (hasMoreTicks) {
++        // OverScroller.getCurrVelocity() returns an absolute value of the velocity a current fling
++        // animation (only FLING_MODE animations). We derive direction along the Y axis from the
++        // start and end of the, animation assuming ScrollView never fires horizontal fling
++        // animations.
++        // TODO: This does not fully handle overscroll.
++        float direction = Math.signum(mScroller.getFinalY() - mScroller.getStartY());
++        float flingVelocityY = mScroller.getCurrVelocity() * direction;
++
++        mScroller.fling(
++          getScrollX(), scrollY, 0, (int) flingVelocityY, 0, 0, 0, Integer.MAX_VALUE);
++      } else {
++        scrollTo(getScrollX(), scrollY + (mScroller.getCurrX() - scrollerYBeforeTick));
++      }
++    }
++  }
++
++  /**
++   * Scrolls to a new position preserving any momentum scrolling animation.
++   */
++  public void scrollToPreservingMomentum(int x, int y) {
++    scrollTo(x, y);
++    recreateFlingAnimation(y);
++  }
++
+   private boolean isContentReady() {
+     View child = getContentView();
+     return child != null && child.getWidth() != 0 && child.getHeight() != 0;
+@@ -1134,7 +1187,7 @@ public class ReactScrollView extends ScrollView
+     }
+ 
+     if (mMaintainVisibleContentPositionHelper != null) {
+-      mMaintainVisibleContentPositionHelper.updateScrollPosition();
++      mMaintainVisibleContentPositionHelper.onLayout();
+     }
+ 
+     if (isShown() && isContentReady()) {
+diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java
+index 49fe5f5..c87c82d 100644
+--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java
++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java
+@@ -595,5 +595,7 @@ public class ReactScrollViewHelper {
+ 
+   public interface HasSmoothScroll {
+     void reactSmoothScrollTo(int x, int y);
++
++    void scrollToPreservingMomentum(int x, int y);
+   }
+ }
diff --git a/patches/react-native-keyboard-controller+1.12.2.patch b/patches/react-native-keyboard-controller+1.13.0.patch
similarity index 57%
rename from patches/react-native-keyboard-controller+1.12.2.patch
rename to patches/react-native-keyboard-controller+1.13.0.patch
index 3c8034354481..b376c9a5c022 100644
--- a/patches/react-native-keyboard-controller+1.12.2.patch
+++ b/patches/react-native-keyboard-controller+1.13.0.patch
@@ -1,8 +1,8 @@
 diff --git a/node_modules/react-native-keyboard-controller/android/src/main/java/com/reactnativekeyboardcontroller/views/EdgeToEdgeReactViewGroup.kt b/node_modules/react-native-keyboard-controller/android/src/main/java/com/reactnativekeyboardcontroller/views/EdgeToEdgeReactViewGroup.kt
-index 83884d8..5d9e989 100644
+index 6e566fc..07ccb3c 100644
 --- a/node_modules/react-native-keyboard-controller/android/src/main/java/com/reactnativekeyboardcontroller/views/EdgeToEdgeReactViewGroup.kt
 +++ b/node_modules/react-native-keyboard-controller/android/src/main/java/com/reactnativekeyboardcontroller/views/EdgeToEdgeReactViewGroup.kt
-@@ -99,12 +99,12 @@ class EdgeToEdgeReactViewGroup(private val reactContext: ThemedReactContext) : R
+@@ -117,12 +117,12 @@ class EdgeToEdgeReactViewGroup(private val reactContext: ThemedReactContext) : R
    }
  
    private fun goToEdgeToEdge(edgeToEdge: Boolean) {
@@ -12,22 +12,24 @@ index 83884d8..5d9e989 100644
 -        !edgeToEdge,
 -      )
 -    }
-+  // reactContext.currentActivity?.let {
-+  //  WindowCompat.setDecorFitsSystemWindows(
-+  //    it.window,
-+  //    !edgeToEdge,
-+  //  )
-+  // }
++    // reactContext.currentActivity?.let {
++    //   WindowCompat.setDecorFitsSystemWindows(
++    //     it.window,
++    //     !edgeToEdge,
++    //   )
++    // }
    }
  
    private fun setupKeyboardCallbacks() {
-@@ -158,13 +158,13 @@ class EdgeToEdgeReactViewGroup(private val reactContext: ThemedReactContext) : R
+@@ -169,16 +169,16 @@ class EdgeToEdgeReactViewGroup(private val reactContext: ThemedReactContext) : R
    // region State managers
    private fun enable() {
      this.goToEdgeToEdge(true)
 -    this.setupWindowInsets()
 +    // this.setupWindowInsets()
      this.setupKeyboardCallbacks()
+-    modalAttachedWatcher.enable()
++    // modalAttachedWatcher.enable()
    }
  
    private fun disable() {
@@ -35,5 +37,17 @@ index 83884d8..5d9e989 100644
 -    this.setupWindowInsets()
 +    // this.setupWindowInsets()
      this.removeKeyboardCallbacks()
+-    modalAttachedWatcher.disable()
++    // modalAttachedWatcher.disable()
+   }
+   // endregion
+ 
+@@ -206,7 +206,7 @@ class EdgeToEdgeReactViewGroup(private val reactContext: ThemedReactContext) : R
+   fun forceStatusBarTranslucent(isStatusBarTranslucent: Boolean) {
+     if (active && this.isStatusBarTranslucent != isStatusBarTranslucent) {
+       this.isStatusBarTranslucent = isStatusBarTranslucent
+-      this.setupWindowInsets()
++      // this.setupWindowInsets()
+       this.requestApplyInsetsWhenAttached()
+     }
    }
-   // endregion
\ No newline at end of file
diff --git a/patches/react-native-web+0.19.12+005+osr-improvement.patch b/patches/react-native-web+0.19.12+005+osr-improvement.patch
index 074cac3d0e6f..b1afa699e7a2 100644
--- a/patches/react-native-web+0.19.12+005+osr-improvement.patch
+++ b/patches/react-native-web+0.19.12+005+osr-improvement.patch
@@ -1,5 +1,5 @@
 diff --git a/node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/index.js b/node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/index.js
-index b05da08..80aea85 100644
+index bede95b..2aef4c6 100644
 --- a/node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/index.js
 +++ b/node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/index.js
 @@ -332,7 +332,7 @@ class VirtualizedList extends StateSafePureComponent {
@@ -11,7 +11,75 @@ index b05da08..80aea85 100644
      this._sentEndForContentLength = 0;
      this._totalCellLength = 0;
      this._totalCellsMeasured = 0;
-@@ -1397,8 +1397,8 @@ class VirtualizedList extends StateSafePureComponent {
+@@ -684,16 +684,18 @@ class VirtualizedList extends StateSafePureComponent {
+         });
+       }
+     }
++    var itemCount = this.props.getItemCount(this.props.data);
+     var initialRenderRegion = VirtualizedList._initialRenderRegion(_props);
+     var minIndexForVisible = (_this$props$maintainV = (_this$props$maintainV2 = this.props.maintainVisibleContentPosition) == null ? void 0 : _this$props$maintainV2.minIndexForVisible) !== null && _this$props$maintainV !== void 0 ? _this$props$maintainV : 0;
+     this.state = {
+       cellsAroundViewport: initialRenderRegion,
+       renderMask: VirtualizedList._createRenderMask(_props, initialRenderRegion),
+-      firstVisibleItemKey: this.props.getItemCount(this.props.data) > minIndexForVisible ? VirtualizedList._getItemKey(this.props, minIndexForVisible) : null,
++      firstVisibleItemKey: itemCount > minIndexForVisible ? VirtualizedList._getItemKey(this.props, minIndexForVisible) : null,
+       // When we have a non-zero initialScrollIndex, we will receive a
+       // scroll event later so this will prevent the window from updating
+       // until we get a valid offset.
+-      pendingScrollUpdateCount: this.props.initialScrollIndex != null && this.props.initialScrollIndex > 0 ? 1 : 0
++      pendingScrollUpdateCount: this.props.initialScrollIndex != null && this.props.initialScrollIndex > 0 ? 1 : 0,
++      lastItemCount: itemCount
+     };
+ 
+     // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.
+@@ -919,13 +921,13 @@ class VirtualizedList extends StateSafePureComponent {
+     // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make
+     // sure we're rendering a reasonable range here.
+     var itemCount = newProps.getItemCount(newProps.data);
+-    if (itemCount === prevState.renderMask.numCells()) {
++    if (itemCount === prevState.renderMask.numCells() && itemCount === prevState.lastItemCount) {
+       return prevState;
+     }
+     var maintainVisibleContentPositionAdjustment = null;
+     var prevFirstVisibleItemKey = prevState.firstVisibleItemKey;
+     var minIndexForVisible = (_newProps$maintainVis = (_newProps$maintainVis2 = newProps.maintainVisibleContentPosition) == null ? void 0 : _newProps$maintainVis2.minIndexForVisible) !== null && _newProps$maintainVis !== void 0 ? _newProps$maintainVis : 0;
+-    var newFirstVisibleItemKey = newProps.getItemCount(newProps.data) > minIndexForVisible ? VirtualizedList._getItemKey(newProps, minIndexForVisible) : null;
++    var newFirstVisibleItemKey = itemCount > minIndexForVisible ? VirtualizedList._getItemKey(newProps, minIndexForVisible) : null;
+     if (newProps.maintainVisibleContentPosition != null && prevFirstVisibleItemKey != null && newFirstVisibleItemKey != null) {
+       if (newFirstVisibleItemKey !== prevFirstVisibleItemKey) {
+         // Fast path if items were added at the start of the list.
+@@ -944,7 +946,8 @@ class VirtualizedList extends StateSafePureComponent {
+       cellsAroundViewport: constrainedCells,
+       renderMask: VirtualizedList._createRenderMask(newProps, constrainedCells),
+       firstVisibleItemKey: newFirstVisibleItemKey,
+-      pendingScrollUpdateCount: maintainVisibleContentPositionAdjustment != null ? prevState.pendingScrollUpdateCount + 1 : prevState.pendingScrollUpdateCount
++      pendingScrollUpdateCount: maintainVisibleContentPositionAdjustment != null ? prevState.pendingScrollUpdateCount + 1 : prevState.pendingScrollUpdateCount,
++      lastItemCount: itemCount
+     };
+   }
+   _pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, first, last, inversionStyle) {
+@@ -1220,7 +1223,7 @@ class VirtualizedList extends StateSafePureComponent {
+       return ret;
+     }
+   }
+-  componentDidUpdate(prevProps) {
++  componentDidUpdate(prevProps, prevState) {
+     var _this$props7 = this.props,
+       data = _this$props7.data,
+       extraData = _this$props7.extraData;
+@@ -1244,6 +1247,11 @@ class VirtualizedList extends StateSafePureComponent {
+     if (hiPriInProgress) {
+       this._hiPriInProgress = false;
+     }
++
++    if (this.state.cellsAroundViewport.first !== prevState.cellsAroundViewport.first ||
++        this.state.cellsAroundViewport.last !== prevState.cellsAroundViewport.last) {
++      this._maybeCallOnEdgeReached();
++    }
+   }
+ 
+   // Used for preventing scrollToIndex from being called multiple times for initialScrollIndex
+@@ -1407,8 +1415,8 @@ class VirtualizedList extends StateSafePureComponent {
      // Next check if the user just scrolled within the start threshold
      // and call onStartReached only once for a given content length,
      // and only if onEndReached is not being executed
@@ -22,7 +90,7 @@ index b05da08..80aea85 100644
        onStartReached({
          distanceFromStart
        });
-@@ -1407,7 +1407,7 @@ class VirtualizedList extends StateSafePureComponent {
+@@ -1417,7 +1425,7 @@ class VirtualizedList extends StateSafePureComponent {
      // If the user scrolls away from the start or end and back again,
      // cause onStartReached or onEndReached to be triggered again
      else {
@@ -32,10 +100,80 @@ index b05da08..80aea85 100644
      }
    }
 diff --git a/node_modules/react-native-web/src/vendor/react-native/VirtualizedList/index.js b/node_modules/react-native-web/src/vendor/react-native/VirtualizedList/index.js
-index 459f017..799a6ee 100644
+index 459f017..d20115c 100644
 --- a/node_modules/react-native-web/src/vendor/react-native/VirtualizedList/index.js
 +++ b/node_modules/react-native-web/src/vendor/react-native/VirtualizedList/index.js
-@@ -1325,7 +1325,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+@@ -79,6 +79,7 @@ type State = {
+   firstVisibleItemKey: ?string,
+   // When > 0 the scroll position available in JS is considered stale and should not be used.
+   pendingScrollUpdateCount: number,
++  lastItemCount: number,
+ };
+ 
+ /**
+@@ -453,12 +454,13 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+ 
+     const minIndexForVisible =
+       this.props.maintainVisibleContentPosition?.minIndexForVisible ?? 0;
++    const itemCount = this.props.getItemCount(this.props.data);
+ 
+     this.state = {
+       cellsAroundViewport: initialRenderRegion,
+       renderMask: VirtualizedList._createRenderMask(props, initialRenderRegion),
+       firstVisibleItemKey:
+-        this.props.getItemCount(this.props.data) > minIndexForVisible
++        itemCount > minIndexForVisible
+           ? VirtualizedList._getItemKey(this.props, minIndexForVisible)
+           : null,
+       // When we have a non-zero initialScrollIndex, we will receive a
+@@ -469,6 +471,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+         this.props.initialScrollIndex > 0
+           ? 1
+           : 0,
++      lastItemCount: itemCount,
+     };
+ 
+       // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.
+@@ -809,16 +812,15 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+     // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make
+     // sure we're rendering a reasonable range here.
+     const itemCount = newProps.getItemCount(newProps.data);
+-    if (itemCount === prevState.renderMask.numCells()) {
++    if (itemCount === prevState.renderMask.numCells() && itemCount === prevState.lastItemCount) {
+       return prevState;
+     }
+-
+     let maintainVisibleContentPositionAdjustment: ?number = null;
+     const prevFirstVisibleItemKey = prevState.firstVisibleItemKey;
+     const minIndexForVisible =
+       newProps.maintainVisibleContentPosition?.minIndexForVisible ?? 0;
+     const newFirstVisibleItemKey =
+-      newProps.getItemCount(newProps.data) > minIndexForVisible
++      itemCount > minIndexForVisible
+         ? VirtualizedList._getItemKey(newProps, minIndexForVisible)
+         : null;
+     if (
+@@ -866,6 +868,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+         maintainVisibleContentPositionAdjustment != null
+           ? prevState.pendingScrollUpdateCount + 1
+           : prevState.pendingScrollUpdateCount,
++      lastItemCount: itemCount,
+     };
+   }
+ 
+@@ -1285,6 +1288,11 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+     if (hiPriInProgress) {
+       this._hiPriInProgress = false;
+     }
++
++    if (this.state.cellsAroundViewport.first !== prevState.cellsAroundViewport.first ||
++        this.state.cellsAroundViewport.last !== prevState.cellsAroundViewport.last) {
++      this._maybeCallOnEdgeReached();
++    }
+   }
+ 
+   _averageCellLength = 0;
+@@ -1325,7 +1333,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
      zoomScale: 1,
    };
    _scrollRef: ?React.ElementRef<any> = null;
@@ -44,7 +182,7 @@ index 459f017..799a6ee 100644
    _sentEndForContentLength = 0;
    _totalCellLength = 0;
    _totalCellsMeasured = 0;
-@@ -1675,18 +1675,18 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
+@@ -1675,18 +1683,18 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
        onStartReached != null &&
        this.state.cellsAroundViewport.first === 0 &&
        isWithinStartThreshold &&
diff --git a/patches/react-native-web+0.19.12+007+fix-scrollable-overflown-text.patch b/patches/react-native-web+0.19.12+007+fix-scrollable-overflown-text.patch
new file mode 100644
index 000000000000..11b85afcf86c
--- /dev/null
+++ b/patches/react-native-web+0.19.12+007+fix-scrollable-overflown-text.patch
@@ -0,0 +1,26 @@
+diff --git a/node_modules/react-native-web/dist/exports/Text/index.js b/node_modules/react-native-web/dist/exports/Text/index.js
+index 8c5f79b..4a47f80 100644
+--- a/node_modules/react-native-web/dist/exports/Text/index.js
++++ b/node_modules/react-native-web/dist/exports/Text/index.js
+@@ -166,7 +166,7 @@ var styles = StyleSheet.create({
+   textMultiLine: {
+     display: '-webkit-box',
+     maxWidth: '100%',
+-    overflow: 'hidden',
++    overflow: 'clip',
+     textOverflow: 'ellipsis',
+     WebkitBoxOrient: 'vertical'
+   },
+diff --git a/node_modules/react-native-web/src/exports/Text/index.js b/node_modules/react-native-web/src/exports/Text/index.js
+index 071ae10..e43042c 100644
+--- a/node_modules/react-native-web/src/exports/Text/index.js
++++ b/node_modules/react-native-web/src/exports/Text/index.js
+@@ -219,7 +219,7 @@ const styles = StyleSheet.create({
+   textMultiLine: {
+     display: '-webkit-box',
+     maxWidth: '100%',
+-    overflow: 'hidden',
++    overflow: 'clip',
+     textOverflow: 'ellipsis',
+     WebkitBoxOrient: 'vertical'
+   },
diff --git a/src/CONST.ts b/src/CONST.ts
index 9f8f0be6a733..67468b5d7d87 100755
--- a/src/CONST.ts
+++ b/src/CONST.ts
@@ -2132,6 +2132,12 @@ const CONST = {
                 NETSUITE: 'netsuite',
                 SAGE_INTACCT: 'intacct',
             },
+            ROUTE: {
+                QBO: 'quickbooks-online',
+                XERO: 'xero',
+                NETSUITE: 'netsuite',
+                SAGE_INTACCT: 'sage-intacct',
+            },
             NAME_USER_FRIENDLY: {
                 netsuite: 'NetSuite',
                 quickbooksOnline: 'Quickbooks Online',
@@ -5245,8 +5251,6 @@ const CONST = {
     SEARCH: {
         RESULTS_PAGE_SIZE: 50,
         DATA_TYPES: {
-            TRANSACTION: 'transaction',
-            REPORT: 'report',
             EXPENSE: 'expense',
             INVOICE: 'invoice',
             TRIP: 'trip',
@@ -5275,9 +5279,10 @@ const CONST = {
         STATUS: {
             EXPENSE: {
                 ALL: 'all',
-                SHARED: 'shared',
                 DRAFTS: 'drafts',
-                FINISHED: 'finished',
+                OUTSTANDING: 'outstanding',
+                APPROVED: 'approved',
+                PAID: 'paid',
             },
             INVOICE: {
                 ALL: 'all',
@@ -5292,14 +5297,6 @@ const CONST = {
                 PAID: 'paid',
             },
         },
-        TAB: {
-            EXPENSE: {
-                ALL: 'type:expense status:all',
-                SHARED: 'type:expense status:shared',
-                DRAFTS: 'type:expense status:drafts',
-                FINISHED: 'type:expense status:finished',
-            },
-        },
         TABLE_COLUMNS: {
             RECEIPT: 'receipt',
             DATE: 'date',
diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts
index a07266738004..b7b6cf53a176 100755
--- a/src/ONYXKEYS.ts
+++ b/src/ONYXKEYS.ts
@@ -551,8 +551,8 @@ const ONYXKEYS = {
         SETTINGS_STATUS_SET_CLEAR_AFTER_FORM_DRAFT: 'settingsStatusSetClearAfterFormDraft',
         SETTINGS_STATUS_CLEAR_DATE_FORM: 'settingsStatusClearDateForm',
         SETTINGS_STATUS_CLEAR_DATE_FORM_DRAFT: 'settingsStatusClearDateFormDraft',
-        CHANGE_BILLING_CURRENCY_FORM: 'changeBillingCurrencyForm',
-        CHANGE_BILLING_CURRENCY_FORM_DRAFT: 'changeBillingCurrencyFormDraft',
+        CHANGE_BILLING_CURRENCY_FORM: 'billingCurrencyForm',
+        CHANGE_BILLING_CURRENCY_FORM_DRAFT: 'billingCurrencyFormDraft',
         PRIVATE_NOTES_FORM: 'privateNotesForm',
         PRIVATE_NOTES_FORM_DRAFT: 'privateNotesFormDraft',
         I_KNOW_A_TEACHER_FORM: 'iKnowTeacherForm',
@@ -571,6 +571,10 @@ const ONYXKEYS = {
         REIMBURSEMENT_ACCOUNT_FORM_DRAFT: 'reimbursementAccountDraft',
         PERSONAL_BANK_ACCOUNT_FORM: 'personalBankAccount',
         PERSONAL_BANK_ACCOUNT_FORM_DRAFT: 'personalBankAccountDraft',
+        DISABLE_AUTO_RENEW_SURVEY_FORM: 'disableAutoRenewSurveyForm',
+        DISABLE_AUTO_RENEW_SURVEY_FORM_DRAFT: 'disableAutoRenewSurveyFormDraft',
+        REQUEST_EARLY_CANCELLATION_FORM: 'requestEarlyCancellationForm',
+        REQUEST_EARLY_CANCELLATION_FORM_DRAFT: 'requestEarlyCancellationFormDraft',
         EXIT_SURVEY_REASON_FORM: 'exitSurveyReasonForm',
         EXIT_SURVEY_REASON_FORM_DRAFT: 'exitSurveyReasonFormDraft',
         EXIT_SURVEY_RESPONSE_FORM: 'exitSurveyResponseForm',
@@ -647,6 +651,8 @@ type OnyxFormValuesMapping = {
     [ONYXKEYS.FORMS.ROOM_SETTINGS_FORM]: FormTypes.RoomSettingsForm;
     [ONYXKEYS.FORMS.NEW_TASK_FORM]: FormTypes.NewTaskForm;
     [ONYXKEYS.FORMS.EDIT_TASK_FORM]: FormTypes.EditTaskForm;
+    [ONYXKEYS.FORMS.DISABLE_AUTO_RENEW_SURVEY_FORM]: FormTypes.FeedbackSurveyForm;
+    [ONYXKEYS.FORMS.REQUEST_EARLY_CANCELLATION_FORM]: FormTypes.FeedbackSurveyForm;
     [ONYXKEYS.FORMS.EXIT_SURVEY_REASON_FORM]: FormTypes.ExitSurveyReasonForm;
     [ONYXKEYS.FORMS.EXIT_SURVEY_RESPONSE_FORM]: FormTypes.ExitSurveyResponseForm;
     [ONYXKEYS.FORMS.MONEY_REQUEST_DESCRIPTION_FORM]: FormTypes.MoneyRequestDescriptionForm;
diff --git a/src/ROUTES.ts b/src/ROUTES.ts
index de495568daa3..893fd59e38b4 100644
--- a/src/ROUTES.ts
+++ b/src/ROUTES.ts
@@ -193,7 +193,7 @@ const ROUTES = {
     },
     SETTINGS_CONTACT_METHOD_DETAILS: {
         route: 'settings/profile/contact-methods/:contactMethod/details',
-        getRoute: (contactMethod: string) => `settings/profile/contact-methods/${encodeURIComponent(contactMethod)}/details` as const,
+        getRoute: (contactMethod: string, backTo?: string) => getUrlWithBackToParam(`settings/profile/contact-methods/${encodeURIComponent(contactMethod)}/details`, backTo),
     },
     SETTINGS_NEW_CONTACT_METHOD: {
         route: 'settings/profile/contact-methods/new',
@@ -717,11 +717,12 @@ const ROUTES = {
     },
     WORKSPACE_ACCOUNTING_CARD_RECONCILIATION: {
         route: 'settings/workspaces/:policyID/accounting/:connection/card-reconciliation',
-        getRoute: (policyID: string, connection?: ConnectionName) => `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation` as const,
+        getRoute: (policyID: string, connection?: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>) => `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation` as const,
     },
     WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS: {
         route: 'settings/workspaces/:policyID/accounting/:connection/card-reconciliation/account',
-        getRoute: (policyID: string, connection?: ConnectionName) => `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation/account` as const,
+        getRoute: (policyID: string, connection?: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>) =>
+            `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation/account` as const,
     },
     WORKSPACE_CATEGORIES: {
         route: 'settings/workspaces/:policyID/categories',
@@ -984,7 +985,7 @@ const ROUTES = {
 
     TRANSACTION_RECEIPT: {
         route: 'r/:reportID/transaction/:transactionID/receipt',
-        getRoute: (reportID: string, transactionID: string) => `r/${reportID}/transaction/${transactionID}/receipt` as const,
+        getRoute: (reportID: string, transactionID: string, readonly = false) => `r/${reportID}/transaction/${transactionID}/receipt${readonly ? '?readonly=true' : ''}` as const,
     },
     TRANSACTION_DUPLICATE_REVIEW_PAGE: {
         route: 'r/:threadReportID/duplicates/review',
diff --git a/src/components/AttachmentModal.tsx b/src/components/AttachmentModal.tsx
index 164da5922b98..782a7c2becac 100644
--- a/src/components/AttachmentModal.tsx
+++ b/src/components/AttachmentModal.tsx
@@ -422,7 +422,13 @@ function AttachmentModal({
                 onSelected: () => downloadAttachment(),
             });
         }
-        if (TransactionUtils.hasReceipt(transaction) && !TransactionUtils.isReceiptBeingScanned(transaction) && canEditReceipt && !TransactionUtils.hasMissingSmartscanFields(transaction)) {
+        if (
+            !TransactionUtils.hasEReceipt(transaction) &&
+            TransactionUtils.hasReceipt(transaction) &&
+            !TransactionUtils.isReceiptBeingScanned(transaction) &&
+            canEditReceipt &&
+            !TransactionUtils.hasMissingSmartscanFields(transaction)
+        ) {
             menuItems.push({
                 icon: Expensicons.Trashcan,
                 text: translate('receipt.deleteReceipt'),
diff --git a/src/components/BlockingViews/BlockingView.tsx b/src/components/BlockingViews/BlockingView.tsx
index f6096e3b55e8..f4e1b992437f 100644
--- a/src/components/BlockingViews/BlockingView.tsx
+++ b/src/components/BlockingViews/BlockingView.tsx
@@ -1,8 +1,9 @@
 import type {ImageContentFit} from 'expo-image';
 import React, {useMemo} from 'react';
-import type {ImageSourcePropType, StyleProp, TextStyle, ViewStyle, WebStyle} from 'react-native';
+import type {ImageSourcePropType, StyleProp, TextStyle, ViewStyle} from 'react-native';
 import {View} from 'react-native';
 import type {SvgProps} from 'react-native-svg';
+import type {WebStyle} from 'react-native-web';
 import type {MergeExclusive} from 'type-fest';
 import AutoEmailLink from '@components/AutoEmailLink';
 import Icon from '@components/Icon';
diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx
index 126c81961cee..1441266c76de 100644
--- a/src/components/Button/index.tsx
+++ b/src/components/Button/index.tsx
@@ -29,6 +29,9 @@ type ButtonProps = Partial<ChildrenProps> & {
     /** The fill color to pass into the icon. */
     iconFill?: string;
 
+    /** The fill color to pass into the icon when the button is hovered. */
+    iconHoverFill?: string;
+
     /** Any additional styles to pass to the left icon container. */
     iconStyles?: StyleProp<ViewStyle>;
 
@@ -80,9 +83,15 @@ type ButtonProps = Partial<ChildrenProps> & {
     /** Additional text styles */
     textStyles?: StyleProp<TextStyle>;
 
+    /** Additional text styles when the button is hovered */
+    textHoverStyles?: StyleProp<TextStyle>;
+
     /** Whether we should use the default hover style */
     shouldUseDefaultHover?: boolean;
 
+    /** Additional hover styles */
+    hoverStyles?: StyleProp<ViewStyle>;
+
     /** Whether we should use the success theme color */
     success?: boolean;
 
@@ -170,6 +179,7 @@ function Button(
 
         iconRight = Expensicons.ArrowRight,
         iconFill,
+        iconHoverFill,
         icon = null,
         iconStyles = [],
         iconRightStyles = [],
@@ -194,8 +204,10 @@ function Button(
         style = [],
         innerStyles = [],
         textStyles = [],
+        textHoverStyles = [],
 
         shouldUseDefaultHover = true,
+        hoverStyles = undefined,
         success = false,
         danger = false,
 
@@ -238,6 +250,7 @@ function Button(
                     danger && styles.buttonDangerText,
                     !!icon && styles.textAlignLeft,
                     textStyles,
+                    isHovered && textHoverStyles,
                     link && styles.link,
                     link && isHovered && StyleUtils.getColorStyle(theme.linkHover),
                     link && styles.fontWeightNormal,
@@ -259,7 +272,7 @@ function Button(
                                 <Icon
                                     src={icon}
                                     hasText={!!text}
-                                    fill={iconFill ?? (success || danger ? theme.textLight : theme.icon)}
+                                    fill={isHovered ? iconHoverFill : iconFill ?? (success || danger ? theme.textLight : theme.icon)}
                                     small={small}
                                     medium={medium}
                                     large={large}
@@ -273,14 +286,14 @@ function Button(
                             {!isSplitButton ? (
                                 <Icon
                                     src={iconRight}
-                                    fill={iconFill ?? (success || danger ? theme.textLight : theme.icon)}
+                                    fill={isHovered ? iconHoverFill : iconFill ?? (success || danger ? theme.textLight : theme.icon)}
                                     small={medium}
                                     medium={large}
                                 />
                             ) : (
                                 <Icon
                                     src={iconRight}
-                                    fill={iconFill ?? (success || danger ? theme.textLight : theme.icon)}
+                                    fill={isHovered ? iconHoverFill : iconFill ?? (success || danger ? theme.textLight : theme.icon)}
                                     small={small}
                                     medium={medium}
                                     large={large}
@@ -358,6 +371,7 @@ function Button(
                     shouldUseDefaultHover && !isDisabled ? styles.buttonDefaultHovered : undefined,
                     success && !isDisabled ? styles.buttonSuccessHovered : undefined,
                     danger && !isDisabled ? styles.buttonDangerHovered : undefined,
+                    hoverStyles,
                 ]}
                 id={id}
                 accessibilityLabel={accessibilityLabel}
diff --git a/src/components/Composer/index.tsx b/src/components/Composer/index.tsx
index 306319f061ca..a7189dbe88c7 100755
--- a/src/components/Composer/index.tsx
+++ b/src/components/Composer/index.tsx
@@ -4,7 +4,7 @@ import type {BaseSyntheticEvent, ForwardedRef} from 'react';
 import React, {useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react';
 import {flushSync} from 'react-dom';
 // eslint-disable-next-line no-restricted-imports
-import type {DimensionValue, NativeSyntheticEvent, Text as RNText, TextInput, TextInputKeyPressEventData, TextInputSelectionChangeEventData, TextStyle} from 'react-native';
+import type {NativeSyntheticEvent, Text as RNText, TextInput, TextInputKeyPressEventData, TextInputSelectionChangeEventData, ViewStyle} from 'react-native';
 import {DeviceEventEmitter, StyleSheet, View} from 'react-native';
 import type {AnimatedMarkdownTextInputRef} from '@components/RNMarkdownTextInput';
 import RNMarkdownTextInput from '@components/RNMarkdownTextInput';
@@ -100,7 +100,7 @@ function Composer(
     });
     const [caretContent, setCaretContent] = useState('');
     const [valueBeforeCaret, setValueBeforeCaret] = useState('');
-    const [textInputWidth, setTextInputWidth] = useState('');
+    const [textInputWidth, setTextInputWidth] = useState<ViewStyle['width']>('');
     const [isRendered, setIsRendered] = useState(false);
     const isScrollBarVisible = useIsScrollBarVisible(textInput, value ?? '');
     const [prevScroll, setPrevScroll] = useState<number | undefined>();
@@ -352,7 +352,7 @@ function Composer(
                 opacity: 0,
             }}
         >
-            <Text style={[StyleSheet.flatten([style, styles.noSelect]), StyleUtils.getComposerMaxHeightStyle(maxLines, isComposerFullSize), {maxWidth: textInputWidth as DimensionValue}]}>
+            <Text style={[StyleSheet.flatten([style, styles.noSelect]), StyleUtils.getComposerMaxHeightStyle(maxLines, isComposerFullSize), {maxWidth: textInputWidth}]}>
                 {`${valueBeforeCaret} `}
                 <Text
                     numberOfLines={1}
@@ -378,7 +378,7 @@ function Composer(
             Browser.isMobileSafari() || Browser.isSafari() ? styles.rtlTextRenderForSafari : {},
             scrollStyleMemo,
             StyleUtils.getComposerMaxHeightStyle(maxLines, isComposerFullSize),
-            isComposerFullSize ? ({height: '100%', maxHeight: 'none' as DimensionValue} as TextStyle) : undefined,
+            isComposerFullSize ? {height: '100%', maxHeight: 'none'} : undefined,
             textContainsOnlyEmojis ? styles.onlyEmojisTextLineHeight : {},
         ],
 
diff --git a/src/components/EmptySelectionListContent.tsx b/src/components/EmptySelectionListContent.tsx
index 9bae189ac183..a5ac2c84eb2b 100644
--- a/src/components/EmptySelectionListContent.tsx
+++ b/src/components/EmptySelectionListContent.tsx
@@ -39,7 +39,7 @@ function EmptySelectionListContent({contentType}: EmptySelectionListContentProps
     );
 
     return (
-        <View style={[styles.flex1, styles.overflowHidden]}>
+        <View style={[styles.flex1, styles.overflowHidden, styles.minHeight65]}>
             <BlockingView
                 icon={Illustrations.ToddWithPhones}
                 iconWidth={variables.emptySelectionListIconWidth}
diff --git a/src/components/FeedbackSurvey.tsx b/src/components/FeedbackSurvey.tsx
index 71b0da06bd5f..a17cca5efae4 100644
--- a/src/components/FeedbackSurvey.tsx
+++ b/src/components/FeedbackSurvey.tsx
@@ -1,19 +1,28 @@
-import React, {useState} from 'react';
+import React, {useEffect, useMemo, useState} from 'react';
 import type {StyleProp, ViewStyle} from 'react-native';
 import {View} from 'react-native';
+import {useOnyx} from 'react-native-onyx';
 import useLocalize from '@hooks/useLocalize';
-import useTheme from '@hooks/useTheme';
 import useThemeStyles from '@hooks/useThemeStyles';
+import * as FormActions from '@libs/actions/FormActions';
 import CONST from '@src/CONST';
 import type {FeedbackSurveyOptionID} from '@src/CONST';
-import type {TranslationPaths} from '@src/languages/types';
+import type ONYXKEYS from '@src/ONYXKEYS';
+import INPUT_IDS from '@src/types/form/FeedbackSurveyForm';
+import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue';
 import FixedFooter from './FixedFooter';
+import FormProvider from './Form/FormProvider';
+import InputWrapper from './Form/InputWrapper';
 import FormAlertWithSubmitButton from './FormAlertWithSubmitButton';
-import SingleOptionSelector from './SingleOptionSelector';
+import RadioButtons from './RadioButtons';
+import type {Choice} from './RadioButtons';
 import Text from './Text';
 import TextInput from './TextInput';
 
 type FeedbackSurveyProps = {
+    /** A unique Onyx key identifying the form */
+    formID: typeof ONYXKEYS.FORMS.DISABLE_AUTO_RENEW_SURVEY_FORM | typeof ONYXKEYS.FORMS.REQUEST_EARLY_CANCELLATION_FORM;
+
     /** Title of the survey */
     title: string;
 
@@ -36,71 +45,88 @@ type FeedbackSurveyProps = {
     isLoading?: boolean;
 };
 
-type Option = {
-    key: FeedbackSurveyOptionID;
-    label: TranslationPaths;
-};
-
-const OPTIONS: Option[] = [
-    {key: CONST.FEEDBACK_SURVEY_OPTIONS.TOO_LIMITED.ID, label: CONST.FEEDBACK_SURVEY_OPTIONS.TOO_LIMITED.TRANSLATION_KEY},
-    {key: CONST.FEEDBACK_SURVEY_OPTIONS.TOO_EXPENSIVE.ID, label: CONST.FEEDBACK_SURVEY_OPTIONS.TOO_EXPENSIVE.TRANSLATION_KEY},
-    {key: CONST.FEEDBACK_SURVEY_OPTIONS.INADEQUATE_SUPPORT.ID, label: CONST.FEEDBACK_SURVEY_OPTIONS.INADEQUATE_SUPPORT.TRANSLATION_KEY},
-    {key: CONST.FEEDBACK_SURVEY_OPTIONS.BUSINESS_CLOSING.ID, label: CONST.FEEDBACK_SURVEY_OPTIONS.BUSINESS_CLOSING.TRANSLATION_KEY},
-];
-
-function FeedbackSurvey({title, description, onSubmit, optionRowStyles, footerText, isNoteRequired, isLoading}: FeedbackSurveyProps) {
+function FeedbackSurvey({title, description, onSubmit, optionRowStyles, footerText, isNoteRequired, isLoading, formID}: FeedbackSurveyProps) {
     const {translate} = useLocalize();
     const styles = useThemeStyles();
-    const theme = useTheme();
-
-    const selectCircleStyles: StyleProp<ViewStyle> = {borderColor: theme.border};
-    const [reason, setReason] = useState<Option>();
-    const [note, setNote] = useState('');
+    const [draft, draftResults] = useOnyx(`${formID}Draft`);
+    const [reason, setReason] = useState<string | undefined>(draft?.reason);
     const [shouldShowReasonError, setShouldShowReasonError] = useState(false);
 
-    const handleOptionSelect = (option: Option) => {
+    const isLoadingDraft = isLoadingOnyxValue(draftResults);
+
+    const options = useMemo<Choice[]>(
+        () => [
+            {value: CONST.FEEDBACK_SURVEY_OPTIONS.TOO_LIMITED.ID, label: translate(CONST.FEEDBACK_SURVEY_OPTIONS.TOO_LIMITED.TRANSLATION_KEY)},
+            {value: CONST.FEEDBACK_SURVEY_OPTIONS.TOO_EXPENSIVE.ID, label: translate(CONST.FEEDBACK_SURVEY_OPTIONS.TOO_EXPENSIVE.TRANSLATION_KEY)},
+            {value: CONST.FEEDBACK_SURVEY_OPTIONS.INADEQUATE_SUPPORT.ID, label: translate(CONST.FEEDBACK_SURVEY_OPTIONS.INADEQUATE_SUPPORT.TRANSLATION_KEY)},
+            {value: CONST.FEEDBACK_SURVEY_OPTIONS.BUSINESS_CLOSING.ID, label: translate(CONST.FEEDBACK_SURVEY_OPTIONS.BUSINESS_CLOSING.TRANSLATION_KEY)},
+        ],
+        [translate],
+    );
+
+    useEffect(() => {
+        if (!draft?.reason || isLoadingDraft) {
+            return;
+        }
+
+        setReason(draft.reason);
+        // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps -- only sync with draft data when it is loaded
+    }, [isLoadingDraft]);
+
+    const handleOptionSelect = (value: string) => {
+        setReason(value);
         setShouldShowReasonError(false);
-        setReason(option);
     };
 
     const handleSubmit = () => {
-        if (!reason || (isNoteRequired && !note.trim())) {
+        if (!draft?.reason || (isNoteRequired && !draft.note?.trim())) {
             setShouldShowReasonError(true);
             return;
         }
 
-        onSubmit(reason.key, note.trim());
+        onSubmit(draft.reason, draft.note?.trim());
+        FormActions.clearDraftValues(formID);
     };
 
-    const handleSetNote = (text: string) => {
-        setNote(text);
-
-        if (isNoteRequired && shouldShowReasonError) {
-            setShouldShowReasonError(false);
+    const handleSetNote = () => {
+        if (!isNoteRequired || !shouldShowReasonError) {
+            return;
         }
+
+        setShouldShowReasonError(false);
     };
 
     return (
-        <View style={[styles.flexGrow1, styles.justifyContentBetween]}>
+        <FormProvider
+            formID={formID}
+            style={[styles.flexGrow1, styles.justifyContentBetween]}
+            onSubmit={handleSubmit}
+            submitButtonText={translate('common.submit')}
+            isSubmitButtonVisible={false}
+            enabledWhenOffline
+        >
             <View style={styles.mh5}>
                 <Text style={styles.textHeadline}>{title}</Text>
                 <Text style={[styles.mt1, styles.mb3, styles.textNormalThemeText]}>{description}</Text>
-                <SingleOptionSelector
-                    options={OPTIONS}
-                    optionRowStyles={[styles.mb7, optionRowStyles]}
-                    selectCircleStyles={selectCircleStyles}
-                    selectedOptionKey={reason?.key}
-                    onSelectOption={handleOptionSelect}
+                <InputWrapper
+                    InputComponent={RadioButtons}
+                    inputID={INPUT_IDS.REASON}
+                    items={options}
+                    radioButtonStyle={[styles.mb7, optionRowStyles]}
+                    onPress={handleOptionSelect}
+                    shouldSaveDraft
                 />
                 {!!reason && (
                     <>
                         <Text style={[styles.textNormalThemeText, styles.mb3]}>{translate('feedbackSurvey.additionalInfoTitle')}</Text>
-                        <TextInput
+                        <InputWrapper
+                            InputComponent={TextInput}
+                            inputID={INPUT_IDS.NOTE}
                             label={translate('feedbackSurvey.additionalInfoInputLabel')}
                             accessibilityLabel={translate('feedbackSurvey.additionalInfoInputLabel')}
                             role={CONST.ROLE.PRESENTATION}
                             onChangeText={handleSetNote}
-                            value={note}
+                            shouldSaveDraft
                         />
                     </>
                 )}
@@ -117,7 +143,7 @@ function FeedbackSurvey({title, description, onSubmit, optionRowStyles, footerTe
                     isLoading={isLoading}
                 />
             </FixedFooter>
-        </View>
+        </FormProvider>
     );
 }
 
diff --git a/src/components/FlatList/index.android.tsx b/src/components/FlatList/index.android.tsx
index c8ce7ee10d6b..261d10488098 100644
--- a/src/components/FlatList/index.android.tsx
+++ b/src/components/FlatList/index.android.tsx
@@ -1,29 +1,30 @@
 import {useFocusEffect} from '@react-navigation/native';
 import type {ForwardedRef} from 'react';
-import React, {forwardRef, useCallback, useContext} from 'react';
+import React, {forwardRef, useCallback, useRef} from 'react';
 import type {FlatListProps, NativeScrollEvent, NativeSyntheticEvent} from 'react-native';
 import {FlatList} from 'react-native';
-import {ActionListContext} from '@pages/home/ReportScreenContext';
 
 // FlatList wrapped with the freeze component will lose its scroll state when frozen (only for Android).
 // CustomFlatList saves the offset and use it for scrollToOffset() when unfrozen.
 function CustomFlatList<T>(props: FlatListProps<T>, ref: ForwardedRef<FlatList>) {
-    const {scrollPosition, setScrollPosition} = useContext(ActionListContext);
+    const lastScrollOffsetRef = useRef(0);
 
     const onScreenFocus = useCallback(() => {
         if (typeof ref === 'function') {
             return;
         }
-        if (!ref?.current || !scrollPosition?.offset) {
+        if (!ref?.current || !lastScrollOffsetRef.current) {
             return;
         }
-        if (ref.current && scrollPosition.offset) {
-            ref.current.scrollToOffset({offset: scrollPosition.offset, animated: false});
+        if (ref.current && lastScrollOffsetRef.current) {
+            ref.current.scrollToOffset({offset: lastScrollOffsetRef.current, animated: false});
         }
-    }, [scrollPosition?.offset, ref]);
+    }, [ref]);
 
     // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps
-    const onMomentumScrollEnd = useCallback((event: NativeSyntheticEvent<NativeScrollEvent>) => setScrollPosition({offset: event.nativeEvent.contentOffset.y}), []);
+    const onMomentumScrollEnd = useCallback((event: NativeSyntheticEvent<NativeScrollEvent>) => {
+        lastScrollOffsetRef.current = event.nativeEvent.contentOffset.y;
+    }, []);
 
     useFocusEffect(
         useCallback(() => {
diff --git a/src/components/FormAlertWithSubmitButton.tsx b/src/components/FormAlertWithSubmitButton.tsx
index e9b7b27f1475..205bea93f84a 100644
--- a/src/components/FormAlertWithSubmitButton.tsx
+++ b/src/components/FormAlertWithSubmitButton.tsx
@@ -1,8 +1,11 @@
+import type {Ref} from 'react';
 import React from 'react';
 import type {StyleProp, ViewStyle} from 'react-native';
 import {View} from 'react-native';
 import useSafePaddingBottomStyle from '@hooks/useSafePaddingBottomStyle';
 import useThemeStyles from '@hooks/useThemeStyles';
+import getPlatform from '@libs/getPlatform';
+import CONST from '@src/CONST';
 import Button from './Button';
 import FormAlertWrapper from './FormAlertWrapper';
 
@@ -46,6 +49,9 @@ type FormAlertWithSubmitButtonProps = {
     /** Whether to show the alert text */
     isAlertVisible?: boolean;
 
+    /** React ref being forwarded to the submit button */
+    buttonRef?: Ref<View>;
+
     /** Text for the button */
     buttonText: string;
 
@@ -70,6 +76,7 @@ function FormAlertWithSubmitButton({
     disablePressOnEnter = false,
     isSubmitActionDangerous = false,
     footerContent,
+    buttonRef,
     buttonStyles,
     buttonText,
     isAlertVisible = false,
@@ -82,6 +89,12 @@ function FormAlertWithSubmitButton({
     const style = [!footerContent ? {} : styles.mb3, buttonStyles];
     const safePaddingBottomStyle = useSafePaddingBottomStyle();
 
+    // Disable pressOnEnter for Android Native to avoid issues with the Samsung keyboard,
+    // where pressing Enter saves the form instead of adding a new line in multiline input.
+    // More details: https://github.com/Expensify/App/issues/46644
+    const isAndroidNative = getPlatform() === CONST.PLATFORM.ANDROID;
+    const pressOnEnter = isAndroidNative ? false : !disablePressOnEnter;
+
     return (
         <FormAlertWrapper
             containerStyles={[styles.justifyContentEnd, safePaddingBottomStyle, containerStyles]}
@@ -105,8 +118,9 @@ function FormAlertWithSubmitButton({
                         />
                     ) : (
                         <Button
+                            ref={buttonRef}
                             success
-                            pressOnEnter={!disablePressOnEnter}
+                            pressOnEnter={pressOnEnter}
                             enterKeyEventListenerPriority={enterKeyEventListenerPriority}
                             text={buttonText}
                             style={style}
diff --git a/src/components/Icon/Illustrations.ts b/src/components/Icon/Illustrations.ts
index 9537e7a0a7a7..64058a495231 100644
--- a/src/components/Icon/Illustrations.ts
+++ b/src/components/Icon/Illustrations.ts
@@ -58,6 +58,7 @@ import CreditCardsNew from '@assets/images/simple-illustrations/simple-illustrat
 import CreditCardEyes from '@assets/images/simple-illustrations/simple-illustration__creditcardeyes.svg';
 import EmailAddress from '@assets/images/simple-illustrations/simple-illustration__email-address.svg';
 import EmptyState from '@assets/images/simple-illustrations/simple-illustration__empty-state.svg';
+import EnvelopeReceipt from '@assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg';
 import Filters from '@assets/images/simple-illustrations/simple-illustration__filters.svg';
 import FolderOpen from '@assets/images/simple-illustrations/simple-illustration__folder-open.svg';
 import Gears from '@assets/images/simple-illustrations/simple-illustration__gears.svg';
@@ -121,6 +122,7 @@ export {
     EmailAddress,
     EmptyCardState,
     EmptyStateExpenses,
+    EnvelopeReceipt,
     FolderOpen,
     HandCard,
     HotDogStand,
diff --git a/src/components/KeyboardAvoidingView/index.ios.tsx b/src/components/KeyboardAvoidingView/index.ios.tsx
index 171210eab7ac..68cfa73e90b5 100644
--- a/src/components/KeyboardAvoidingView/index.ios.tsx
+++ b/src/components/KeyboardAvoidingView/index.ios.tsx
@@ -2,7 +2,7 @@
  * The KeyboardAvoidingView is only used on ios
  */
 import React from 'react';
-import {KeyboardAvoidingView as KeyboardAvoidingViewComponent} from 'react-native';
+import {KeyboardAvoidingView as KeyboardAvoidingViewComponent} from 'react-native-keyboard-controller';
 import type {KeyboardAvoidingViewProps} from './types';
 
 function KeyboardAvoidingView(props: KeyboardAvoidingViewProps) {
diff --git a/src/components/MoneyReportHeader.tsx b/src/components/MoneyReportHeader.tsx
index dc72424524b2..32c1a3852c86 100644
--- a/src/components/MoneyReportHeader.tsx
+++ b/src/components/MoneyReportHeader.tsx
@@ -98,7 +98,8 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
     const [isHoldMenuVisible, setIsHoldMenuVisible] = useState(false);
     const [paymentType, setPaymentType] = useState<PaymentMethodType>();
     const [requestType, setRequestType] = useState<ActionHandledType>();
-    const allTransactions = useMemo(() => TransactionUtils.getAllReportTransactions(moneyRequestReport?.reportID), [moneyRequestReport?.reportID]);
+    // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps
+    const allTransactions = useMemo(() => TransactionUtils.getAllReportTransactions(moneyRequestReport?.reportID), [moneyRequestReport?.reportID, transactions]);
     const canAllowSettlement = ReportUtils.hasUpdatedTotal(moneyRequestReport, policy);
     const policyType = policy?.type;
     const isDraft = ReportUtils.isOpenExpenseReport(moneyRequestReport);
diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx
index dcd3fa4c2112..ce6495e1385e 100755
--- a/src/components/MoneyRequestConfirmationList.tsx
+++ b/src/components/MoneyRequestConfirmationList.tsx
@@ -248,13 +248,34 @@ function MoneyRequestConfirmationList({
     const currency = (mileageRate as MileageRate)?.currency ?? policyCurrency;
 
     // A flag for showing the categories field
-    const shouldShowCategories = isPolicyExpenseChat && (!!iouCategory || OptionsListUtils.hasEnabledOptions(Object.values(policyCategories ?? {})));
+    const shouldShowCategories = (isPolicyExpenseChat || isTypeInvoice) && (!!iouCategory || OptionsListUtils.hasEnabledOptions(Object.values(policyCategories ?? {})));
 
     const shouldShowMerchant = shouldShowSmartScanFields && !isDistanceRequest && !isTypeSend;
 
     const policyTagLists = useMemo(() => PolicyUtils.getTagLists(policyTags), [policyTags]);
 
-    const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy, isDistanceRequest) && !isTypeInvoice;
+    const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy, isDistanceRequest);
+
+    const previousTransactionAmount = usePrevious(transaction?.amount);
+    const previousTransactionCurrency = usePrevious(transaction?.currency);
+    const previousTransactionModifiedCurrency = usePrevious(transaction?.modifiedCurrency);
+    const previousCustomUnitRateID = usePrevious(customUnitRateID);
+    useEffect(() => {
+        // previousTransaction is in the condition because if it is falsey, it means this is the first time the useEffect is triggered after we load it, so we should calculate the default
+        // tax even if the other parameters are the same against their previous values.
+        if (
+            !shouldShowTax ||
+            !transaction ||
+            (transaction.taxCode &&
+                previousTransactionModifiedCurrency === transaction.modifiedCurrency &&
+                previousTransactionCurrency === transaction.currency &&
+                previousCustomUnitRateID === customUnitRateID)
+        ) {
+            return;
+        }
+        const defaultTaxCode = TransactionUtils.getDefaultTaxCode(policy, transaction);
+        IOU.setMoneyRequestTaxRate(transactionID, defaultTaxCode ?? '');
+    }, [customUnitRateID, policy, previousCustomUnitRateID, previousTransactionCurrency, previousTransactionModifiedCurrency, shouldShowTax, transaction, transactionID]);
 
     const isMovingTransactionFromTrackExpense = IOUUtils.isMovingTransactionFromTrackExpense(action);
 
@@ -270,9 +291,6 @@ function MoneyRequestConfirmationList({
         ? ''
         : CurrencyUtils.convertToDisplayString(shouldCalculateDistanceAmount ? distanceRequestAmount : iouAmount, isDistanceRequest ? currency : iouCurrencyCode);
 
-    const previousTransactionAmount = usePrevious(transaction?.amount);
-    const previousTransactionCurrency = usePrevious(transaction?.currency);
-
     const isFocused = useIsFocused();
     const [formError, debouncedFormError, setFormError] = useDebouncedState<TranslationPaths | ''>('');
 
@@ -348,9 +366,19 @@ function MoneyRequestConfirmationList({
         }
     }, [shouldCalculateDistanceAmount, distanceRequestAmount, transactionID, currency, isTypeSplit, isPolicyExpenseChat, selectedParticipantsProp, transaction]);
 
+    const previousTaxCode = usePrevious(transaction?.taxCode);
+
     // Calculate and set tax amount in transaction draft
     useEffect(() => {
-        if (!shouldShowTax || (transaction?.taxAmount !== undefined && previousTransactionAmount === transaction?.amount && previousTransactionCurrency === transaction?.currency)) {
+        if (
+            !shouldShowTax ||
+            !transaction ||
+            (transaction.taxAmount !== undefined &&
+                previousTransactionAmount === transaction.amount &&
+                previousTransactionCurrency === transaction.currency &&
+                previousCustomUnitRateID === customUnitRateID &&
+                previousTaxCode === transaction.taxCode)
+        ) {
             return;
         }
 
@@ -361,14 +389,25 @@ function MoneyRequestConfirmationList({
             taxCode = customUnitRate?.attributes?.taxRateExternalID ?? '';
             taxableAmount = DistanceRequestUtils.getTaxableAmount(policy, customUnitRateID, distance);
         } else {
-            taxableAmount = transaction?.amount ?? 0;
-            taxCode = transaction?.taxCode ?? TransactionUtils.getDefaultTaxCode(policy, transaction) ?? '';
+            taxableAmount = transaction.amount ?? 0;
+            taxCode = transaction.taxCode ?? TransactionUtils.getDefaultTaxCode(policy, transaction) ?? '';
         }
         const taxPercentage = TransactionUtils.getTaxValue(policy, transaction, taxCode) ?? '';
-        const taxAmount = TransactionUtils.calculateTaxAmount(taxPercentage, taxableAmount, currency);
+        const taxAmount = TransactionUtils.calculateTaxAmount(taxPercentage, taxableAmount, transaction.currency);
         const taxAmountInSmallestCurrencyUnits = CurrencyUtils.convertToBackendAmount(Number.parseFloat(taxAmount.toString()));
-        IOU.setMoneyRequestTaxAmount(transaction?.transactionID ?? '', taxAmountInSmallestCurrencyUnits);
-    }, [policy, shouldShowTax, previousTransactionAmount, previousTransactionCurrency, transaction, isDistanceRequest, customUnitRateID, currency, distance]);
+        IOU.setMoneyRequestTaxAmount(transaction.transactionID ?? '', taxAmountInSmallestCurrencyUnits);
+    }, [
+        policy,
+        shouldShowTax,
+        previousTransactionAmount,
+        previousTransactionCurrency,
+        transaction,
+        isDistanceRequest,
+        customUnitRateID,
+        previousCustomUnitRateID,
+        previousTaxCode,
+        distance,
+    ]);
 
     // If completing a split expense fails, set didConfirm to false to allow the user to edit the fields again
     if (isEditingSplitBill && didConfirm) {
diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx
index 961c8712e47b..623348a4c7a4 100644
--- a/src/components/MoneyRequestConfirmationListFooter.tsx
+++ b/src/components/MoneyRequestConfirmationListFooter.tsx
@@ -221,9 +221,7 @@ function MoneyRequestConfirmationListFooter({
     // A flag and a toggler for showing the rest of the form fields
     const [shouldExpandFields, toggleShouldExpandFields] = useReducer((state) => !state, false);
 
-    // A flag for showing the tags field
-    // TODO: remove the !isTypeInvoice from this condition after BE supports tags for invoices: https://github.com/Expensify/App/issues/41281
-    const shouldShowTags = useMemo(() => isPolicyExpenseChat && OptionsListUtils.hasEnabledTags(policyTagLists) && !isTypeInvoice, [isPolicyExpenseChat, isTypeInvoice, policyTagLists]);
+    const shouldShowTags = useMemo(() => isPolicyExpenseChat && OptionsListUtils.hasEnabledTags(policyTagLists), [isPolicyExpenseChat, policyTagLists]);
     const isMultilevelTags = useMemo(() => PolicyUtils.isMultiLevelTags(policyTags), [policyTags]);
 
     const senderWorkspace = useMemo(() => {
diff --git a/src/components/PopoverMenu.tsx b/src/components/PopoverMenu.tsx
index e9df68d43d06..0846e27100da 100644
--- a/src/components/PopoverMenu.tsx
+++ b/src/components/PopoverMenu.tsx
@@ -1,6 +1,6 @@
 import lodashIsEqual from 'lodash/isEqual';
 import type {RefObject} from 'react';
-import React, {useEffect, useState} from 'react';
+import React, {useLayoutEffect, useState} from 'react';
 import {StyleSheet, View} from 'react-native';
 import type {ModalProps} from 'react-native-modal';
 import useArrowKeyFocusManager from '@hooks/useArrowKeyFocusManager';
@@ -194,7 +194,10 @@ function PopoverMenu({
         setFocusedIndex(-1);
     };
 
-    useEffect(() => {
+    // When the menu items are changed, we want to reset the sub-menu to make sure
+    // we are not accessing the wrong sub-menu parent or possibly undefined when rendering the back button.
+    // We use useLayoutEffect so the reset happens before the repaint
+    useLayoutEffect(() => {
         if (menuItems.length === 0) {
             return;
         }
diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx
index 13376c05a0f2..a38845ec3362 100644
--- a/src/components/ReportActionItem/MoneyRequestView.tsx
+++ b/src/components/ReportActionItem/MoneyRequestView.tsx
@@ -175,10 +175,9 @@ function MoneyRequestView({
     const isInvoice = ReportUtils.isInvoiceReport(moneyRequestReport);
     const isPaidReport = ReportActionsUtils.isPayAction(parentReportAction);
     const taxRates = policy?.taxRates;
-
     const formattedTaxAmount = updatedTransaction?.taxAmount
-        ? CurrencyUtils.convertToDisplayString(updatedTransaction?.taxAmount, transactionCurrency)
-        : CurrencyUtils.convertToDisplayString(transactionTaxAmount, transactionCurrency);
+        ? CurrencyUtils.convertToDisplayString(Math.abs(updatedTransaction?.taxAmount), transactionCurrency)
+        : CurrencyUtils.convertToDisplayString(Math.abs(transactionTaxAmount ?? 0), transactionCurrency);
 
     const taxRatesDescription = taxRates?.name;
     const taxRateTitle = updatedTransaction ? TransactionUtils.getTaxName(policy, updatedTransaction) : TransactionUtils.getTaxName(policy, transaction);
@@ -494,6 +493,7 @@ function MoneyRequestView({
                                     filename={receiptURIs?.filename}
                                     transaction={transaction}
                                     enablePreviewModal
+                                    readonly={readonly}
                                 />
                             </View>
                         )}
diff --git a/src/components/ReportActionItem/ReportActionItemImage.tsx b/src/components/ReportActionItem/ReportActionItemImage.tsx
index 4f58b193eeb2..718b60828f62 100644
--- a/src/components/ReportActionItem/ReportActionItemImage.tsx
+++ b/src/components/ReportActionItem/ReportActionItemImage.tsx
@@ -52,6 +52,9 @@ type ReportActionItemImageProps = {
 
     /** Whether the map view should have border radius  */
     shouldMapHaveBorderRadius?: boolean;
+
+    /** Whether the receipt is not editable */
+    readonly?: boolean;
 };
 
 /**
@@ -70,6 +73,7 @@ function ReportActionItemImage({
     fileExtension,
     filename,
     isSingleImage = true,
+    readonly = false,
     shouldMapHaveBorderRadius,
 }: ReportActionItemImageProps) {
     const styles = useThemeStyles();
@@ -130,7 +134,9 @@ function ReportActionItemImage({
                     <PressableWithoutFocus
                         style={[styles.w100, styles.h100, styles.noOutline as ViewStyle]}
                         onPress={() =>
-                            Navigation.navigate(ROUTES.TRANSACTION_RECEIPT.getRoute(transactionThreadReport?.reportID ?? report?.reportID ?? '-1', transaction?.transactionID ?? '-1'))
+                            Navigation.navigate(
+                                ROUTES.TRANSACTION_RECEIPT.getRoute(transactionThreadReport?.reportID ?? report?.reportID ?? '-1', transaction?.transactionID ?? '-1', readonly),
+                            )
                         }
                         accessibilityLabel={translate('accessibilityHints.viewAttachment')}
                         accessibilityRole={CONST.ROLE.BUTTON}
diff --git a/src/components/SafeAreaConsumer/types.ts b/src/components/SafeAreaConsumer/types.ts
index d7b115983434..2d7c6c57b078 100644
--- a/src/components/SafeAreaConsumer/types.ts
+++ b/src/components/SafeAreaConsumer/types.ts
@@ -1,12 +1,12 @@
-import type {DimensionValue} from 'react-native';
+import type {ViewStyle} from 'react-native';
 import type {EdgeInsets} from 'react-native-safe-area-context';
 
 type SafeAreaChildrenProps = {
-    paddingTop?: DimensionValue;
-    paddingBottom?: DimensionValue;
+    paddingTop?: ViewStyle['paddingTop'];
+    paddingBottom?: ViewStyle['paddingBottom'];
     insets?: EdgeInsets;
     safeAreaPaddingBottomStyle: {
-        paddingBottom?: DimensionValue;
+        paddingBottom?: ViewStyle['paddingBottom'];
     };
 };
 
diff --git a/src/components/ScreenWrapper.tsx b/src/components/ScreenWrapper.tsx
index 0fcaed08f72b..37e2842c0671 100644
--- a/src/components/ScreenWrapper.tsx
+++ b/src/components/ScreenWrapper.tsx
@@ -1,8 +1,8 @@
-import {useNavigation} from '@react-navigation/native';
+import {useIsFocused, useNavigation} from '@react-navigation/native';
 import type {StackNavigationProp} from '@react-navigation/stack';
 import type {ForwardedRef, ReactNode} from 'react';
 import React, {createContext, forwardRef, useEffect, useMemo, useRef, useState} from 'react';
-import type {DimensionValue, StyleProp, ViewStyle} from 'react-native';
+import type {StyleProp, ViewStyle} from 'react-native';
 import {Keyboard, PanResponder, View} from 'react-native';
 import {PickerAvoidingView} from 'react-native-picker-select';
 import type {EdgeInsets} from 'react-native-safe-area-context';
@@ -31,7 +31,7 @@ import withNavigationFallback from './withNavigationFallback';
 type ScreenWrapperChildrenProps = {
     insets: EdgeInsets;
     safeAreaPaddingBottomStyle?: {
-        paddingBottom?: DimensionValue;
+        paddingBottom?: ViewStyle['paddingBottom'];
     };
     didScreenTransitionEnd: boolean;
 };
@@ -143,6 +143,7 @@ function ScreenWrapper(
      */
     const navigationFallback = useNavigation<StackNavigationProp<RootStackParamList>>();
     const navigation = navigationProp ?? navigationFallback;
+    const isFocused = useIsFocused();
     const {windowHeight} = useWindowDimensions(shouldUseCachedViewportHeight);
     const {isSmallScreenWidth, shouldUseNarrowLayout} = useResponsiveLayout();
     const {initialHeight} = useInitialDimensions();
@@ -219,7 +220,7 @@ function ScreenWrapper(
         // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps
     }, []);
 
-    const isAvoidingViewportScroll = useTackInputFocus(shouldEnableMaxHeight && shouldAvoidScrollOnVirtualViewport && Browser.isMobileWebKit());
+    const isAvoidingViewportScroll = useTackInputFocus(isFocused && shouldEnableMaxHeight && shouldAvoidScrollOnVirtualViewport && Browser.isMobileWebKit());
     const contextValue = useMemo(() => ({didScreenTransitionEnd}), [didScreenTransitionEnd]);
 
     return (
diff --git a/src/components/Search/SearchFiltersParticipantsSelector.tsx b/src/components/Search/SearchFiltersParticipantsSelector.tsx
index b62190267f37..436cdba91af2 100644
--- a/src/components/Search/SearchFiltersParticipantsSelector.tsx
+++ b/src/components/Search/SearchFiltersParticipantsSelector.tsx
@@ -12,6 +12,7 @@ import * as DeviceCapabilities from '@libs/DeviceCapabilities';
 import * as OptionsListUtils from '@libs/OptionsListUtils';
 import type {Option} from '@libs/OptionsListUtils';
 import type {OptionData} from '@libs/ReportUtils';
+import * as ReportUtils from '@libs/ReportUtils';
 import Navigation from '@navigation/Navigation';
 import * as Report from '@userActions/Report';
 import CONST from '@src/CONST';
@@ -76,7 +77,7 @@ function SearchFiltersParticipantsSelector({initialAccountIDs, onFiltersUpdate}:
             false,
             0,
             undefined,
-            true,
+            false,
         );
     }, [areOptionsInitialized, options.personalDetails, options.reports, selectedOptions]);
 
@@ -108,9 +109,10 @@ function SearchFiltersParticipantsSelector({initialAccountIDs, onFiltersUpdate}:
         newSections.push(formattedResults.section);
 
         if (chatOptions.currentUserOption && !isCurrentUserSelected) {
+            const formattedName = ReportUtils.getDisplayNameForParticipant(chatOptions.currentUserOption.accountID, false, true, true, personalDetails);
             newSections.push({
                 title: '',
-                data: [chatOptions.currentUserOption],
+                data: [{...chatOptions.currentUserOption, text: formattedName}],
                 shouldShow: true,
             });
         }
diff --git a/src/components/Search/SearchPageHeader.tsx b/src/components/Search/SearchPageHeader.tsx
index 7e4b69c39596..2b59e2046484 100644
--- a/src/components/Search/SearchPageHeader.tsx
+++ b/src/components/Search/SearchPageHeader.tsx
@@ -27,11 +27,11 @@ import CONST from '@src/CONST';
 import type {TranslationPaths} from '@src/languages/types';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
-import type {SearchReport} from '@src/types/onyx/SearchResults';
+import type {SearchDataTypes, SearchReport} from '@src/types/onyx/SearchResults';
 import type DeepValueOf from '@src/types/utils/DeepValueOf';
 import type IconAsset from '@src/types/utils/IconAsset';
 import {useSearchContext} from './SearchContext';
-import type {SearchQueryJSON, SearchStatus} from './types';
+import type {SearchQueryJSON} from './types';
 
 type HeaderWrapperProps = Pick<HeaderWithBackButtonProps, 'title' | 'subtitle' | 'icon' | 'children'> & {
     subtitleStyles?: StyleProp<TextStyle>;
@@ -100,13 +100,23 @@ type SearchPageHeaderProps = {
 
 type SearchHeaderOptionValue = DeepValueOf<typeof CONST.SEARCH.BULK_ACTION_TYPES> | undefined;
 
-const headerContent: {[key in SearchStatus]: {icon: IconAsset; titleText: TranslationPaths}} = {
-    all: {icon: Illustrations.MoneyReceipts, titleText: 'common.expenses'},
-    shared: {icon: Illustrations.SendMoney, titleText: 'common.shared'},
-    drafts: {icon: Illustrations.Pencil, titleText: 'common.drafts'},
-    finished: {icon: Illustrations.CheckmarkCircle, titleText: 'common.finished'},
+type HeaderContent = {
+    icon: IconAsset;
+    titleText: TranslationPaths;
 };
 
+function getHeaderContent(type: SearchDataTypes): HeaderContent {
+    switch (type) {
+        case CONST.SEARCH.DATA_TYPES.INVOICE:
+            return {icon: Illustrations.EnvelopeReceipt, titleText: 'workspace.common.invoices'};
+        case CONST.SEARCH.DATA_TYPES.TRIP:
+            return {icon: Illustrations.Luggage, titleText: 'travel.trips'};
+        case CONST.SEARCH.DATA_TYPES.EXPENSE:
+        default:
+            return {icon: Illustrations.MoneyReceipts, titleText: 'common.expenses'};
+    }
+}
+
 function SearchPageHeader({queryJSON, hash, onSelectDeleteOption, setOfflineModalOpen, setDownloadErrorModalOpen, isCustomQuery, data}: SearchPageHeaderProps) {
     const {translate} = useLocalize();
     const theme = useTheme();
@@ -131,10 +141,10 @@ function SearchPageHeader({queryJSON, hash, onSelectDeleteOption, setOfflineModa
                 .map((item) => item.reportID),
         [data, selectedTransactions],
     );
-    const {status} = queryJSON;
-    const headerSubtitle = isCustomQuery ? SearchUtils.getSearchHeaderTitle(queryJSON) : translate(headerContent[status]?.titleText);
+    const {status, type} = queryJSON;
+    const headerSubtitle = isCustomQuery ? SearchUtils.getSearchHeaderTitle(queryJSON) : translate(getHeaderContent(type).titleText);
     const headerTitle = isCustomQuery ? translate('search.filtersHeader') : '';
-    const headerIcon = isCustomQuery ? Illustrations.Filters : headerContent[status]?.icon;
+    const headerIcon = isCustomQuery ? Illustrations.Filters : getHeaderContent(type).icon;
 
     const subtitleStyles = isCustomQuery ? {} : styles.textHeadlineH2;
 
diff --git a/src/components/Search/SearchStatusBar.tsx b/src/components/Search/SearchStatusBar.tsx
new file mode 100644
index 000000000000..7c1ffeff1818
--- /dev/null
+++ b/src/components/Search/SearchStatusBar.tsx
@@ -0,0 +1,166 @@
+import React from 'react';
+import Button from '@components/Button';
+import * as Expensicons from '@components/Icon/Expensicons';
+import ScrollView from '@components/ScrollView';
+import useLocalize from '@hooks/useLocalize';
+import useSingleExecution from '@hooks/useSingleExecution';
+import useStyleUtils from '@hooks/useStyleUtils';
+import useTheme from '@hooks/useTheme';
+import useThemeStyles from '@hooks/useThemeStyles';
+import Navigation from '@libs/Navigation/Navigation';
+import * as SearchUtils from '@libs/SearchUtils';
+import CONST from '@src/CONST';
+import type {TranslationPaths} from '@src/languages/types';
+import type {SearchDataTypes} from '@src/types/onyx/SearchResults';
+import type IconAsset from '@src/types/utils/IconAsset';
+import type {ExpenseSearchStatus, InvoiceSearchStatus, SearchQueryString, SearchStatus, TripSearchStatus} from './types';
+
+type SearchStatusBarProps = {
+    type: SearchDataTypes;
+    status: SearchStatus;
+};
+
+const expenseOptions: Array<{key: ExpenseSearchStatus; icon: IconAsset; text: TranslationPaths; query: SearchQueryString}> = [
+    {
+        key: CONST.SEARCH.STATUS.EXPENSE.ALL,
+        icon: Expensicons.All,
+        text: 'common.all',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.EXPENSE, CONST.SEARCH.STATUS.EXPENSE.ALL),
+    },
+    {
+        key: CONST.SEARCH.STATUS.EXPENSE.DRAFTS,
+        icon: Expensicons.Pencil,
+        text: 'common.drafts',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.EXPENSE, CONST.SEARCH.STATUS.EXPENSE.DRAFTS),
+    },
+    {
+        key: CONST.SEARCH.STATUS.EXPENSE.OUTSTANDING,
+        icon: Expensicons.Hourglass,
+        text: 'common.outstanding',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.EXPENSE, CONST.SEARCH.STATUS.EXPENSE.OUTSTANDING),
+    },
+    {
+        key: CONST.SEARCH.STATUS.EXPENSE.APPROVED,
+        icon: Expensicons.ThumbsUp,
+        text: 'iou.approved',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.EXPENSE, CONST.SEARCH.STATUS.EXPENSE.APPROVED),
+    },
+    {
+        key: CONST.SEARCH.STATUS.EXPENSE.PAID,
+        icon: Expensicons.MoneyBag,
+        text: 'iou.settledExpensify',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.EXPENSE, CONST.SEARCH.STATUS.EXPENSE.PAID),
+    },
+];
+
+const invoiceOptions: Array<{key: InvoiceSearchStatus; icon: IconAsset; text: TranslationPaths; query: SearchQueryString}> = [
+    {
+        key: CONST.SEARCH.STATUS.INVOICE.ALL,
+        icon: Expensicons.All,
+        text: 'common.all',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.INVOICE, CONST.SEARCH.STATUS.INVOICE.ALL),
+    },
+    {
+        key: CONST.SEARCH.STATUS.INVOICE.OUTSTANDING,
+        icon: Expensicons.Hourglass,
+        text: 'common.outstanding',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.INVOICE, CONST.SEARCH.STATUS.INVOICE.OUTSTANDING),
+    },
+    {
+        key: CONST.SEARCH.STATUS.INVOICE.PAID,
+        icon: Expensicons.MoneyBag,
+        text: 'iou.settledExpensify',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.INVOICE, CONST.SEARCH.STATUS.INVOICE.PAID),
+    },
+];
+
+const tripOptions: Array<{key: TripSearchStatus; icon: IconAsset; text: TranslationPaths; query: SearchQueryString}> = [
+    {
+        key: CONST.SEARCH.STATUS.TRIP.ALL,
+        icon: Expensicons.All,
+        text: 'common.all',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.TRIP, CONST.SEARCH.STATUS.TRIP.ALL),
+    },
+    {
+        key: CONST.SEARCH.STATUS.TRIP.DRAFTS,
+        icon: Expensicons.Pencil,
+        text: 'common.drafts',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.TRIP, CONST.SEARCH.STATUS.TRIP.DRAFTS),
+    },
+    {
+        key: CONST.SEARCH.STATUS.TRIP.OUTSTANDING,
+        icon: Expensicons.Hourglass,
+        text: 'common.outstanding',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.TRIP, CONST.SEARCH.STATUS.TRIP.OUTSTANDING),
+    },
+    {
+        key: CONST.SEARCH.STATUS.TRIP.APPROVED,
+        icon: Expensicons.ThumbsUp,
+        text: 'iou.approved',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.TRIP, CONST.SEARCH.STATUS.TRIP.APPROVED),
+    },
+    {
+        key: CONST.SEARCH.STATUS.TRIP.PAID,
+        icon: Expensicons.MoneyBag,
+        text: 'iou.settledExpensify',
+        query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.TRIP, CONST.SEARCH.STATUS.TRIP.PAID),
+    },
+];
+
+function getOptions(type: SearchDataTypes) {
+    switch (type) {
+        case CONST.SEARCH.DATA_TYPES.INVOICE:
+            return invoiceOptions;
+        case CONST.SEARCH.DATA_TYPES.TRIP:
+            return tripOptions;
+        case CONST.SEARCH.DATA_TYPES.EXPENSE:
+        default:
+            return expenseOptions;
+    }
+}
+
+function SearchStatusBar({type, status}: SearchStatusBarProps) {
+    const {singleExecution} = useSingleExecution();
+    const styles = useThemeStyles();
+    const StyleUtils = useStyleUtils();
+    const theme = useTheme();
+    const {translate} = useLocalize();
+    const options = getOptions(type);
+
+    return (
+        <ScrollView
+            style={[styles.flexRow, styles.mb5, styles.overflowScroll, styles.flexGrow0]}
+            horizontal
+            showsHorizontalScrollIndicator={false}
+        >
+            {options.map((item, index) => {
+                const onPress = singleExecution(() => Navigation.setParams({q: item.query}));
+                const isActive = status === item.key;
+                const isFirstItem = index === 0;
+                const isLastItem = index === options.length - 1;
+
+                return (
+                    <Button
+                        key={item.key}
+                        text={translate(item.text)}
+                        onPress={onPress}
+                        icon={item.icon}
+                        iconFill={isActive ? theme.success : undefined}
+                        iconHoverFill={theme.success}
+                        innerStyles={!isActive && styles.bgTransparent}
+                        hoverStyles={StyleUtils.getBackgroundColorStyle(!isActive ? theme.highlightBG : theme.border)}
+                        textStyles={!isActive && StyleUtils.getTextColorStyle(theme.textSupporting)}
+                        textHoverStyles={StyleUtils.getTextColorStyle(theme.text)}
+                        // We add padding to the first and last items so that they align with the header and table but can overflow outside the screen when scrolled.
+                        style={[isFirstItem && styles.pl5, isLastItem && styles.pr5]}
+                        medium
+                    />
+                );
+            })}
+        </ScrollView>
+    );
+}
+
+SearchStatusBar.displayName = 'SearchStatusBar';
+
+export default SearchStatusBar;
diff --git a/src/components/Search/index.tsx b/src/components/Search/index.tsx
index df5398bffffa..db729a9aa77d 100644
--- a/src/components/Search/index.tsx
+++ b/src/components/Search/index.tsx
@@ -31,6 +31,7 @@ import ROUTES from '@src/ROUTES';
 import type SearchResults from '@src/types/onyx/SearchResults';
 import {useSearchContext} from './SearchContext';
 import SearchPageHeader from './SearchPageHeader';
+import SearchStatusBar from './SearchStatusBar';
 import type {SearchColumnType, SearchQueryJSON, SearchStatus, SelectedTransactionInfo, SelectedTransactions, SortOrder} from './types';
 
 type SearchProps = {
@@ -88,7 +89,7 @@ function Search({queryJSON, policyIDs, isCustomQuery}: SearchProps) {
     const [selectedTransactionsToDelete, setSelectedTransactionsToDelete] = useState<string[]>([]);
     const [deleteExpensesConfirmModalVisible, setDeleteExpensesConfirmModalVisible] = useState(false);
     const [downloadErrorModalVisible, setDownloadErrorModalVisible] = useState(false);
-    const {status, sortBy, sortOrder, hash} = queryJSON;
+    const {type, status, sortBy, sortOrder, hash} = queryJSON;
 
     const [currentSearchResults] = useOnyx(`${ONYXKEYS.COLLECTION.SNAPSHOT}${hash}`);
 
@@ -176,11 +177,12 @@ function Search({queryJSON, policyIDs, isCustomQuery}: SearchProps) {
 
     const searchResults = currentSearchResults?.data ? currentSearchResults : lastSearchResultsRef.current;
 
-    const isDataLoaded = searchResults?.data !== undefined;
+    // There's a race condition in Onyx which makes it return data from the previous Search, so in addition to checking that the data is loaded
+    // we also need to check that the searchResults matches the type and status of the current search
+    const isDataLoaded = searchResults?.data !== undefined && searchResults?.search?.type === type && searchResults?.search?.status === status;
     const shouldShowLoadingState = !isOffline && !isDataLoaded;
     const shouldShowLoadingMoreItems = !shouldShowLoadingState && searchResults?.search?.isLoading && searchResults?.search?.offset > 0;
-
-    const isSearchResultsEmpty = !searchResults || SearchUtils.isSearchResultsEmpty(searchResults);
+    const isSearchResultsEmpty = !searchResults?.data || SearchUtils.isSearchResultsEmpty(searchResults);
     const prevIsSearchResultEmpty = usePrevious(isSearchResultsEmpty);
 
     useEffect(() => {
@@ -203,16 +205,14 @@ function Search({queryJSON, policyIDs, isCustomQuery}: SearchProps) {
         );
     }
 
-    const type = SearchUtils.getSearchType(searchResults?.search);
-
-    if (searchResults === undefined || type === undefined) {
+    if (searchResults === undefined) {
         Log.alert('[Search] Undefined search type');
         return null;
     }
 
-    const ListItem = SearchUtils.getListItem(type, status);
-    const data = SearchUtils.getSections(type, status, searchResults.data, searchResults.search);
-    const sortedData = SearchUtils.getSortedSections(type, status, data, sortBy, sortOrder);
+    const ListItem = SearchUtils.getListItem(status);
+    const data = SearchUtils.getSections(status, searchResults.data, searchResults.search);
+    const sortedData = SearchUtils.getSortedSections(status, data, sortBy, sortOrder);
     const sortedSelectedData = sortedData.map((item) => mapToItemWithSelectionInfo(item, selectedTransactions, canSelectMultiple));
 
     const shouldShowEmptyState = !isDataLoaded || data.length === 0;
@@ -225,6 +225,10 @@ function Search({queryJSON, policyIDs, isCustomQuery}: SearchProps) {
                     queryJSON={queryJSON}
                     hash={hash}
                 />
+                <SearchStatusBar
+                    type={type}
+                    status={status}
+                />
                 <EmptySearchView type={type} />
             </>
         );
@@ -281,7 +285,7 @@ function Search({queryJSON, policyIDs, isCustomQuery}: SearchProps) {
     };
 
     const toggleAllTransactions = () => {
-        const areItemsOfReportType = searchResults?.search.type === CONST.SEARCH.DATA_TYPES.REPORT;
+        const areItemsOfReportType = status !== CONST.SEARCH.STATUS.EXPENSE.ALL;
         const flattenedItems = areItemsOfReportType ? (data as ReportListItemType[]).flatMap((item) => item.transactions) : data;
         const isAllSelected = flattenedItems.length === Object.keys(selectedTransactions).length;
 
@@ -318,7 +322,10 @@ function Search({queryJSON, policyIDs, isCustomQuery}: SearchProps) {
                 setOfflineModalOpen={() => setOfflineModalVisible(true)}
                 setDownloadErrorModalOpen={() => setDownloadErrorModalVisible(true)}
             />
-
+            <SearchStatusBar
+                type={type}
+                status={status}
+            />
             <SelectionListWithModal<ReportListItemType | TransactionListItemType>
                 sections={[{data: sortedSelectedData, isDisabled: false}]}
                 turnOnSelectionModeOnLongPress
diff --git a/src/components/Search/types.ts b/src/components/Search/types.ts
index 54b26ea6bac4..c933deb8ee03 100644
--- a/src/components/Search/types.ts
+++ b/src/components/Search/types.ts
@@ -1,5 +1,6 @@
 import type {ValueOf} from 'react-native-gesture-handler/lib/typescript/typeUtils';
 import type CONST from '@src/CONST';
+import type {SearchDataTypes} from '@src/types/onyx/SearchResults';
 
 /** Model of the selected transaction */
 type SelectedTransactionInfo = {
@@ -25,7 +26,9 @@ type SelectedTransactions = Record<string, SelectedTransactionInfo>;
 type SortOrder = ValueOf<typeof CONST.SEARCH.SORT_ORDER>;
 type SearchColumnType = ValueOf<typeof CONST.SEARCH.TABLE_COLUMNS>;
 type ExpenseSearchStatus = ValueOf<typeof CONST.SEARCH.STATUS.EXPENSE>;
-type SearchStatus = ExpenseSearchStatus;
+type InvoiceSearchStatus = ValueOf<typeof CONST.SEARCH.STATUS.INVOICE>;
+type TripSearchStatus = ValueOf<typeof CONST.SEARCH.STATUS.TRIP>;
+type SearchStatus = ExpenseSearchStatus | InvoiceSearchStatus | TripSearchStatus;
 
 type SearchContext = {
     currentSearchHash: number;
@@ -55,7 +58,7 @@ type QueryFilters = {
 type SearchQueryString = string;
 
 type SearchQueryAST = {
-    type: string;
+    type: SearchDataTypes;
     status: SearchStatus;
     sortBy: SearchColumnType;
     sortOrder: SortOrder;
@@ -81,4 +84,7 @@ export type {
     QueryFilter,
     QueryFilters,
     AdvancedFiltersKeys,
+    ExpenseSearchStatus,
+    InvoiceSearchStatus,
+    TripSearchStatus,
 };
diff --git a/src/components/SelectionList/BaseSelectionList.tsx b/src/components/SelectionList/BaseSelectionList.tsx
index 3a9437e16ec1..bbc8615898df 100644
--- a/src/components/SelectionList/BaseSelectionList.tsx
+++ b/src/components/SelectionList/BaseSelectionList.tsx
@@ -687,11 +687,12 @@ function BaseSelectionList<TItem extends ListItem>(
                     )}
                     {/* If we are loading new options we will avoid showing any header message. This is mostly because one of the header messages says there are no options. */}
                     {/* This is misleading because we might be in the process of loading fresh options from the server. */}
-                    {(((!isLoadingNewOptions || headerMessage !== translate('common.noResultsFound')) && !!headerMessage) || flattenedSections.allOptions.length === 0) && (
-                        <View style={headerMessageStyle ?? [styles.ph5, styles.pb5]}>
-                            <Text style={[styles.textLabel, styles.colorMuted]}>{headerMessage}</Text>
-                        </View>
-                    )}
+                    {(!isLoadingNewOptions || headerMessage !== translate('common.noResultsFound') || (flattenedSections.allOptions.length === 0 && !showLoadingPlaceholder)) &&
+                        !!headerMessage && (
+                            <View style={headerMessageStyle ?? [styles.ph5, styles.pb5]}>
+                                <Text style={[styles.textLabel, styles.colorMuted, styles.minHeight5]}>{headerMessage}</Text>
+                            </View>
+                        )}
                     {!!headerContent && headerContent}
                     {flattenedSections.allOptions.length === 0 ? (
                         renderListEmptyContent()
diff --git a/src/components/SelectionList/Search/ExpenseItemHeaderNarrow.tsx b/src/components/SelectionList/Search/ExpenseItemHeaderNarrow.tsx
index 640285dc73a4..a74b6348a9b5 100644
--- a/src/components/SelectionList/Search/ExpenseItemHeaderNarrow.tsx
+++ b/src/components/SelectionList/Search/ExpenseItemHeaderNarrow.tsx
@@ -9,14 +9,14 @@ import useTheme from '@hooks/useTheme';
 import useThemeStyles from '@hooks/useThemeStyles';
 import variables from '@styles/variables';
 import CONST from '@src/CONST';
-import type {SearchAccountDetails, SearchTransactionAction} from '@src/types/onyx/SearchResults';
+import type {SearchPersonalDetails, SearchTransactionAction} from '@src/types/onyx/SearchResults';
 import ActionCell from './ActionCell';
 import UserInfoCell from './UserInfoCell';
 
 type ExpenseItemHeaderNarrowProps = {
     text?: string;
-    participantFrom: SearchAccountDetails;
-    participantTo: SearchAccountDetails;
+    participantFrom: SearchPersonalDetails;
+    participantTo: SearchPersonalDetails;
     participantFromDisplayName: string;
     participantToDisplayName: string;
     action?: SearchTransactionAction;
diff --git a/src/components/SelectionList/Search/ReportListItem.tsx b/src/components/SelectionList/Search/ReportListItem.tsx
index 921c553cc6de..983e1415d776 100644
--- a/src/components/SelectionList/Search/ReportListItem.tsx
+++ b/src/components/SelectionList/Search/ReportListItem.tsx
@@ -96,8 +96,8 @@ function ReportListItem<TItem extends ListItem>({
 
     // These values should come as part of the item via SearchUtils.getSections() but ReportListItem is not yet 100% handled
     // This will be simplified in future once sorting of ReportListItem is done
-    const participantFromDisplayName = participantFrom?.name ?? participantFrom?.displayName ?? participantFrom?.login ?? '';
-    const participantToDisplayName = participantTo?.name ?? participantTo?.displayName ?? participantTo?.login ?? '';
+    const participantFromDisplayName = participantFrom?.displayName ?? participantFrom?.login ?? '';
+    const participantToDisplayName = participantTo?.displayName ?? participantTo?.login ?? '';
 
     if (reportItem.transactions.length === 1) {
         const transactionItem = reportItem.transactions[0];
diff --git a/src/components/SelectionList/Search/UserInfoCell.tsx b/src/components/SelectionList/Search/UserInfoCell.tsx
index 2a5a7da51979..793c8c94c391 100644
--- a/src/components/SelectionList/Search/UserInfoCell.tsx
+++ b/src/components/SelectionList/Search/UserInfoCell.tsx
@@ -5,19 +5,17 @@ import Text from '@components/Text';
 import useThemeStyles from '@hooks/useThemeStyles';
 import useWindowDimensions from '@hooks/useWindowDimensions';
 import CONST from '@src/CONST';
-import type {SearchAccountDetails} from '@src/types/onyx/SearchResults';
+import type {SearchPersonalDetails} from '@src/types/onyx/SearchResults';
 
 type UserInfoCellProps = {
-    participant: SearchAccountDetails;
+    participant: SearchPersonalDetails;
     displayName: string;
 };
 
 function UserInfoCell({participant, displayName}: UserInfoCellProps) {
     const styles = useThemeStyles();
     const {isLargeScreenWidth} = useWindowDimensions();
-    const avatarURL = participant?.avatarURL ?? participant?.avatar;
-    const isWorkspace = participant?.avatarURL !== undefined;
-    const iconType = isWorkspace ? CONST.ICON_TYPE_WORKSPACE : CONST.ICON_TYPE_AVATAR;
+    const avatarURL = participant?.avatar;
 
     return (
         <View style={[styles.flexRow, styles.alignItemsCenter]}>
@@ -26,8 +24,8 @@ function UserInfoCell({participant, displayName}: UserInfoCellProps) {
                 size={CONST.AVATAR_SIZE.MID_SUBSCRIPT}
                 source={avatarURL}
                 name={displayName}
-                type={iconType}
-                avatarID={isWorkspace ? participant?.id : participant?.accountID}
+                type={CONST.ICON_TYPE_AVATAR}
+                avatarID={participant?.accountID}
                 containerStyles={[styles.pr2]}
             />
             <Text
diff --git a/src/components/SelectionList/SearchTableHeader.tsx b/src/components/SelectionList/SearchTableHeader.tsx
index f68b3c6d17ff..a5547eb9e710 100644
--- a/src/components/SelectionList/SearchTableHeader.tsx
+++ b/src/components/SelectionList/SearchTableHeader.tsx
@@ -9,7 +9,6 @@ import * as SearchUtils from '@libs/SearchUtils';
 import CONST from '@src/CONST';
 import type {TranslationPaths} from '@src/languages/types';
 import type * as OnyxTypes from '@src/types/onyx';
-import type {SearchDataTypes} from '@src/types/onyx/SearchResults';
 import SortableHeaderText from './SortableHeaderText';
 
 type SearchColumnConfig = {
@@ -86,19 +85,6 @@ const expenseHeaders: SearchColumnConfig[] = [
     },
 ];
 
-function getSearchColumns(type: SearchDataTypes): SearchColumnConfig[] {
-    switch (type) {
-        case CONST.SEARCH.DATA_TYPES.TRANSACTION:
-        case CONST.SEARCH.DATA_TYPES.REPORT:
-        case CONST.SEARCH.DATA_TYPES.EXPENSE:
-        case CONST.SEARCH.DATA_TYPES.INVOICE:
-        case CONST.SEARCH.DATA_TYPES.TRIP:
-            return expenseHeaders;
-        default:
-            return expenseHeaders;
-    }
-}
-
 type SearchTableHeaderProps = {
     data: OnyxTypes.SearchResults['data'];
     metadata: OnyxTypes.SearchResults['search'];
@@ -115,16 +101,15 @@ function SearchTableHeader({data, metadata, sortBy, sortOrder, onSortPress, shou
     const {isSmallScreenWidth, isMediumScreenWidth} = useWindowDimensions();
     const {translate} = useLocalize();
     const displayNarrowVersion = isMediumScreenWidth || isSmallScreenWidth;
-    const type = SearchUtils.getSearchType(metadata);
 
-    if (displayNarrowVersion || !type) {
+    if (displayNarrowVersion) {
         return;
     }
 
     return (
         <View style={[styles.flex1]}>
             <View style={[styles.flex1, styles.flexRow, styles.gap3, styles.pl4]}>
-                {getSearchColumns(type).map(({columnName, translationKey, shouldShow, isColumnSortable}) => {
+                {expenseHeaders.map(({columnName, translationKey, shouldShow, isColumnSortable}) => {
                     if (!shouldShow(data, metadata)) {
                         return null;
                     }
diff --git a/src/components/SelectionList/types.ts b/src/components/SelectionList/types.ts
index ed1813a07dad..d1997aedfdf7 100644
--- a/src/components/SelectionList/types.ts
+++ b/src/components/SelectionList/types.ts
@@ -5,7 +5,7 @@ import type {BrickRoad} from '@libs/WorkspacesSettingsUtils';
 import type CursorStyles from '@styles/utils/cursor/types';
 import type CONST from '@src/CONST';
 import type {Errors, Icon, PendingAction} from '@src/types/onyx/OnyxCommon';
-import type {SearchAccountDetails, SearchReport, SearchTransaction} from '@src/types/onyx/SearchResults';
+import type {SearchPersonalDetails, SearchReport, SearchTransaction} from '@src/types/onyx/SearchResults';
 import type {ReceiptErrors} from '@src/types/onyx/Transaction';
 import type ChildrenProps from '@src/types/utils/ChildrenProps';
 import type IconAsset from '@src/types/utils/IconAsset';
@@ -156,10 +156,10 @@ type ListItem = {
 type TransactionListItemType = ListItem &
     SearchTransaction & {
         /** The personal details of the user requesting money */
-        from: SearchAccountDetails;
+        from: SearchPersonalDetails;
 
         /** The personal details of the user paying the request */
-        to: SearchAccountDetails;
+        to: SearchPersonalDetails;
 
         /** final and formatted "from" value used for displaying and sorting */
         formattedFrom: string;
@@ -200,10 +200,10 @@ type TransactionListItemType = ListItem &
 type ReportListItemType = ListItem &
     SearchReport & {
         /** The personal details of the user requesting money */
-        from: SearchAccountDetails;
+        from: SearchPersonalDetails;
 
         /** The personal details of the user paying the request */
-        to: SearchAccountDetails;
+        to: SearchPersonalDetails;
 
         transactions: TransactionListItemType[];
     };
diff --git a/src/components/TabSelector/TabSelectorItem.tsx b/src/components/TabSelector/TabSelectorItem.tsx
index 635b9deddcfe..4117046d86ef 100644
--- a/src/components/TabSelector/TabSelectorItem.tsx
+++ b/src/components/TabSelector/TabSelectorItem.tsx
@@ -1,5 +1,5 @@
-import React from 'react';
-import {Animated, StyleSheet} from 'react-native';
+import React, {useState} from 'react';
+import {Animated} from 'react-native';
 import PressableWithFeedback from '@components/Pressable/PressableWithFeedback';
 import useThemeStyles from '@hooks/useThemeStyles';
 import CONST from '@src/CONST';
@@ -7,6 +7,8 @@ import type IconAsset from '@src/types/utils/IconAsset';
 import TabIcon from './TabIcon';
 import TabLabel from './TabLabel';
 
+const AnimatedPressableWithFeedback = Animated.createAnimatedComponent(PressableWithFeedback);
+
 type TabSelectorItemProps = {
     /** Function to call when onPress */
     onPress?: () => void;
@@ -32,29 +34,29 @@ type TabSelectorItemProps = {
 
 function TabSelectorItem({icon, title = '', onPress = () => {}, backgroundColor = '', activeOpacity = 0, inactiveOpacity = 1, isActive = false}: TabSelectorItemProps) {
     const styles = useThemeStyles();
+    const [isHovered, setIsHovered] = useState(false);
+
     return (
-        <PressableWithFeedback
+        <AnimatedPressableWithFeedback
             accessibilityLabel={title}
-            style={[styles.tabSelectorButton]}
+            style={[styles.tabSelectorButton, styles.tabBackground(isHovered, isActive, backgroundColor)]}
             wrapperStyle={[styles.flex1]}
             onPress={onPress}
+            onHoverIn={() => setIsHovered(true)}
+            onHoverOut={() => setIsHovered(false)}
             role={CONST.ROLE.BUTTON}
         >
-            {({hovered}) => (
-                <Animated.View style={[styles.tabSelectorButton, StyleSheet.absoluteFill, styles.tabBackground(hovered, isActive, backgroundColor)]}>
-                    <TabIcon
-                        icon={icon}
-                        activeOpacity={styles.tabOpacity(hovered, isActive, activeOpacity, inactiveOpacity).opacity}
-                        inactiveOpacity={styles.tabOpacity(hovered, isActive, inactiveOpacity, activeOpacity).opacity}
-                    />
-                    <TabLabel
-                        title={title}
-                        activeOpacity={styles.tabOpacity(hovered, isActive, activeOpacity, inactiveOpacity).opacity}
-                        inactiveOpacity={styles.tabOpacity(hovered, isActive, inactiveOpacity, activeOpacity).opacity}
-                    />
-                </Animated.View>
-            )}
-        </PressableWithFeedback>
+            <TabIcon
+                icon={icon}
+                activeOpacity={styles.tabOpacity(isHovered, isActive, activeOpacity, inactiveOpacity).opacity}
+                inactiveOpacity={styles.tabOpacity(isHovered, isActive, inactiveOpacity, activeOpacity).opacity}
+            />
+            <TabLabel
+                title={title}
+                activeOpacity={styles.tabOpacity(isHovered, isActive, activeOpacity, inactiveOpacity).opacity}
+                inactiveOpacity={styles.tabOpacity(isHovered, isActive, inactiveOpacity, activeOpacity).opacity}
+            />
+        </AnimatedPressableWithFeedback>
     );
 }
 
diff --git a/src/components/Tooltip/EducationalTooltip/BaseEducationalTooltip.tsx b/src/components/Tooltip/EducationalTooltip/BaseEducationalTooltip.tsx
index b5e93a1ce595..9ce1dd813825 100644
--- a/src/components/Tooltip/EducationalTooltip/BaseEducationalTooltip.tsx
+++ b/src/components/Tooltip/EducationalTooltip/BaseEducationalTooltip.tsx
@@ -1,10 +1,12 @@
 import React, {memo, useEffect, useRef} from 'react';
 import {InteractionManager} from 'react-native';
-import type {LayoutChangeEvent} from 'react-native';
+import type {LayoutRectangle, NativeSyntheticEvent} from 'react-native';
 import GenericTooltip from '@components/Tooltip/GenericTooltip';
 import type {EducationalTooltipProps} from '@components/Tooltip/types';
 import CONST from '@src/CONST';
 
+type LayoutChangeEventWithTarget = NativeSyntheticEvent<{layout: LayoutRectangle; target: HTMLElement}>;
+
 /**
  * A component used to wrap an element intended for displaying a tooltip.
  * This tooltip would show immediately without user's interaction and hide after 5 seconds.
@@ -45,7 +47,7 @@ function BaseEducationalTooltip({children, shouldAutoDismiss = false, ...props}:
                 // eslint-disable-next-line react-compiler/react-compiler
                 hideTooltipRef.current = hideTooltip;
                 return React.cloneElement(children as React.ReactElement, {
-                    onLayout: (e: LayoutChangeEvent) => {
+                    onLayout: (e: LayoutChangeEventWithTarget) => {
                         // e.target is specific to native, use e.nativeEvent.target on web instead
                         const target = e.target || e.nativeEvent.target;
                         // When tooltip is used inside an animated view (e.g. popover), we need to wait for the animation to finish before measuring content.
diff --git a/src/components/ValidateAccountMessage.tsx b/src/components/ValidateAccountMessage.tsx
new file mode 100644
index 000000000000..be43c2985961
--- /dev/null
+++ b/src/components/ValidateAccountMessage.tsx
@@ -0,0 +1,56 @@
+import React from 'react';
+import {View} from 'react-native';
+import {useOnyx} from 'react-native-onyx';
+import useLocalize from '@hooks/useLocalize';
+import useTheme from '@hooks/useTheme';
+import useThemeStyles from '@hooks/useThemeStyles';
+import Navigation from '@libs/Navigation/Navigation';
+import variables from '@styles/variables';
+import * as Session from '@userActions/Session';
+import ONYXKEYS from '@src/ONYXKEYS';
+import ROUTES from '@src/ROUTES';
+import Icon from './Icon';
+import * as Expensicons from './Icon/Expensicons';
+import Text from './Text';
+import TextLink from './TextLink';
+
+type ValidateAccountMessageProps = {backTo?: string | undefined};
+function ValidateAccountMessage({backTo}: ValidateAccountMessageProps) {
+    const theme = useTheme();
+    const styles = useThemeStyles();
+    const {translate} = useLocalize();
+    const [loginList] = useOnyx(ONYXKEYS.LOGIN_LIST);
+    const loginNames = Object.keys(loginList ?? {});
+
+    return (
+        <View style={[styles.flexRow, styles.alignItemsCenter, styles.m4]}>
+            <Icon
+                src={Expensicons.Exclamation}
+                fill={theme.danger}
+            />
+
+            <Text style={[styles.mutedTextLabel, styles.ml4, styles.flex1]}>
+                {translate('bankAccount.validateAccountError.phrase1')}
+                <TextLink
+                    fontSize={variables.fontSizeLabel}
+                    onPress={() => Session.signOutAndRedirectToSignIn()}
+                >
+                    {translate('bankAccount.validateAccountError.phrase2')}
+                </TextLink>
+                {translate('bankAccount.validateAccountError.phrase3')}
+                <TextLink
+                    fontSize={variables.fontSizeLabel}
+                    onPress={() => {
+                        const login = loginList?.[loginNames?.[0]] ?? {};
+                        Navigation.navigate(ROUTES.SETTINGS_CONTACT_METHOD_DETAILS.getRoute(login?.partnerUserID ?? loginNames?.[0], backTo));
+                    }}
+                >
+                    {translate('bankAccount.validateAccountError.phrase4')}
+                </TextLink>
+                .
+            </Text>
+        </View>
+    );
+}
+
+export default ValidateAccountMessage;
diff --git a/src/components/VideoPlayer/BaseVideoPlayer.tsx b/src/components/VideoPlayer/BaseVideoPlayer.tsx
index 0b146d36573f..1fd0fa4f669a 100644
--- a/src/components/VideoPlayer/BaseVideoPlayer.tsx
+++ b/src/components/VideoPlayer/BaseVideoPlayer.tsx
@@ -189,7 +189,7 @@ function BaseVideoPlayer({
             if (!status.isLoaded) {
                 preventPausingWhenExitingFullscreen(false);
                 setIsPlaying(false);
-                setIsLoading(false); // when video is ready to display duration is not NaN
+                setIsLoading(true); // when video is ready to display duration is not NaN
                 setIsBuffering(false);
                 setDuration(videoDuration * 1000);
                 setPosition(0);
@@ -442,7 +442,7 @@ function BaseVideoPlayer({
                                 )}
                             </PressableWithoutFeedback>
                             {((isLoading && !isOffline) || isBuffering) && <FullScreenLoadingIndicator style={[styles.opacity1, styles.bgTransparent]} />}
-                            {isLoading && !isBuffering && <AttachmentOfflineIndicator isPreview={isPreview} />}
+                            {isLoading && (isOffline || !isBuffering) && <AttachmentOfflineIndicator isPreview={isPreview} />}
                             {controlStatusState !== CONST.VIDEO_PLAYER.CONTROLS_STATUS.HIDE && !isLoading && (isPopoverVisible || isHovered || canUseTouchScreen) && (
                                 <VideoPlayerControls
                                     duration={duration}
diff --git a/src/languages/en.ts b/src/languages/en.ts
index 031bade515eb..0144b7ca274d 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -376,6 +376,7 @@ export default {
         filterLogs: 'Filter Logs',
         network: 'Network',
         reportID: 'Report ID',
+        outstanding: 'Outstanding',
     },
     location: {
         useCurrent: 'Use current location',
@@ -669,9 +670,9 @@ export default {
         cameraErrorTitle: 'Camera error',
         cameraErrorMessage: 'An error occurred while taking a photo. Please try again.',
         locationAccessTitle: 'Allow location access',
-        locationAccessMessage: 'We’ll use your location to accurately determine your default currency and timezone. You can edit access in your device’s settings anytime.',
-        locationErrorTitle: 'Enable location in settings',
-        locationErrorMessage: 'Allowing location access is required to help accurately determine your default currency and timezone. Tap Settings to update permissions.',
+        locationAccessMessage: 'Location access helps us keep your timezone and currency accurate wherever you go.',
+        locationErrorTitle: 'Allow location access',
+        locationErrorMessage: 'Location access helps us keep your timezone and currency accurate wherever you go.',
         dropTitle: 'Let it go',
         dropMessage: 'Drop your file here',
         flash: 'flash',
@@ -821,9 +822,9 @@ export default {
             genericUnholdExpenseFailureMessage: 'Unexpected error taking this expense off hold. Please try again later.',
             receiptDeleteFailureError: 'Unexpected error deleting this receipt. Please try again later.',
             // eslint-disable-next-line rulesdir/use-periods-for-error-messages
-            receiptFailureMessage: "The receipt didn't upload. ",
-            // eslint-disable-next-line rulesdir/use-periods-for-error-messages
+            receiptFailureMessage: "The receipt didn't upload.",
             saveFileMessage: 'Download the file ',
+            // eslint-disable-next-line rulesdir/use-periods-for-error-messages
             loseFileMessage: 'or dismiss this error and lose it.',
             genericDeleteFailureMessage: 'Unexpected error deleting this expense. Please try again later.',
             genericEditFailureMessage: 'Unexpected error editing this expense. Please try again later.',
@@ -1729,34 +1730,34 @@ export default {
         hasBeenThrottledError: 'An error occurred while adding your bank account. Please wait a few minutes and try again.',
         hasCurrencyError: 'Oops! It appears that your workspace currency is set to a different currency than USD. To proceed, please set it to USD and try again.',
         error: {
-            youNeedToSelectAnOption: 'You need to select an option to proceed.',
-            noBankAccountAvailable: 'Sorry, no bank account is available.',
-            noBankAccountSelected: 'Please choose an account.',
-            taxID: 'Please enter a valid tax ID number.',
-            website: 'Please enter a valid website. The website should be in lowercase.',
-            zipCode: `Incorrect zip code format. Acceptable format: ${CONST.COUNTRY_ZIP_REGEX_DATA.US.samples}`,
-            phoneNumber: 'Please enter a valid phone number.',
-            companyName: 'Please enter a valid legal business name.',
-            addressCity: 'Please enter a valid city.',
-            addressStreet: 'Please enter a valid street address that is not a PO box.',
-            addressState: 'Please select a valid state.',
-            incorporationDateFuture: 'Incorporation date cannot be in the future.',
-            incorporationState: 'Please select a valid state.',
-            industryCode: 'Please enter a valid industry classification code. Must be 6 digits.',
-            restrictedBusiness: 'Please confirm company is not on the list of restricted businesses.',
-            routingNumber: 'Please enter a valid routing number.',
-            accountNumber: 'Please enter a valid account number.',
-            routingAndAccountNumberCannotBeSame: 'The routing number and account number cannot be the same.',
-            companyType: 'Please select a valid company type.',
-            tooManyAttempts: 'Due to a high number of login attempts, this option has been temporarily disabled for 24 hours. Please try again later or manually enter details instead.',
-            address: 'Please enter a valid address.',
-            dob: 'Please select a valid date of birth.',
-            age: 'Must be over 18 years old.',
-            ssnLast4: 'Please enter valid last 4 digits of SSN.',
-            firstName: 'Please enter a valid first name.',
-            lastName: 'Please enter a valid last name.',
-            noDefaultDepositAccountOrDebitCardAvailable: 'Please add a default deposit bank account or debit card.',
-            validationAmounts: 'The validation amounts you entered are incorrect. Please double-check your bank statement and try again.',
+            youNeedToSelectAnOption: 'Please select an option to proceed',
+            noBankAccountAvailable: "Sorry, there's no bank account available",
+            noBankAccountSelected: 'Please choose an account',
+            taxID: 'Please enter a valid tax ID number',
+            website: 'Please enter a valid website using lower-case letters',
+            zipCode: `Please enter a valid ZIP code using the format: ${CONST.COUNTRY_ZIP_REGEX_DATA.US.samples}`,
+            phoneNumber: 'Please enter a valid phone number',
+            companyName: 'Please enter a valid business name',
+            addressCity: 'Please enter a valid city',
+            addressStreet: 'Please enter a valid street address',
+            addressState: 'Please select a valid state',
+            incorporationDateFuture: "Incorporation date can't be in the future",
+            incorporationState: 'Please select a valid state',
+            industryCode: 'Please enter a valid industry classification code with six digits',
+            restrictedBusiness: "Please confirm the business isn't on the list of restricted businesses",
+            routingNumber: 'Please enter a valid routing number',
+            accountNumber: 'Please enter a valid account number',
+            routingAndAccountNumberCannotBeSame: "Routing and account numbers can't match",
+            companyType: 'Please select a valid company type',
+            tooManyAttempts: 'Due to a high number of login attempts, this option has been disabled for 24 hours. Please try again later or enter details manually instead.',
+            address: 'Please enter a valid address',
+            dob: 'Please select a valid date of birth',
+            age: 'Must be over 18 years old',
+            ssnLast4: 'Please enter valid last 4 digits of SSN',
+            firstName: 'Please enter a valid first name',
+            lastName: 'Please enter a valid last name',
+            noDefaultDepositAccountOrDebitCardAvailable: 'Please add a default deposit account or debit card',
+            validationAmounts: 'The validation amounts you entered are incorrect. Please double check your bank statement and try again.',
         },
     },
     addPersonalBankAccountPage: {
@@ -1786,11 +1787,11 @@ export default {
         userIsAlreadyMember: ({login, name}: UserIsAlreadyMemberParams) => `${login} is already a member of ${name}`,
     },
     onfidoStep: {
-        acceptTerms: 'By continuing with the request to activate your Expensify wallet, you confirm that you have read, understand and accept ',
+        acceptTerms: 'By continuing with the request to activate your Expensify Wallet, you confirm that you have read, understand, and accept',
         facialScan: 'Onfido’s Facial Scan Policy and Release',
         tryAgain: 'Try again',
         verifyIdentity: 'Verify identity',
-        letsVerifyIdentity: "Let's verify your identity.",
+        letsVerifyIdentity: "Let's verify your identity",
         butFirst: `But first, the boring stuff. Read up on the legalese in the next step and click "Accept" when you're ready.`,
         genericError: 'An error occurred while processing this step. Please try again.',
         cameraPermissionsNotGranted: 'Enable camera access',
@@ -1806,17 +1807,17 @@ export default {
     },
     additionalDetailsStep: {
         headerTitle: 'Additional details',
-        helpText: 'We need to confirm the following information before you can send and receive money with your wallet.',
-        helpTextIdologyQuestions: 'Just a few more questions to finish verifying your identity.',
+        helpText: 'We need to confirm the following information before you can send and receive money from your wallet.',
+        helpTextIdologyQuestions: 'We need to ask you just a few more questions to finish validating your identity.',
         helpLink: 'Learn more about why we need this.',
         legalFirstNameLabel: 'Legal first name',
         legalMiddleNameLabel: 'Legal middle name',
         legalLastNameLabel: 'Legal last name',
-        selectAnswer: 'You need to select a response to proceed.',
-        ssnFull9Error: 'Please enter a valid 9-digit SSN.',
-        needSSNFull9: "We're having trouble verifying your SSN. Please enter the full 9 digits of your SSN.",
-        weCouldNotVerify: 'We could not verify',
-        pleaseFixIt: 'Please fix this information before continuing.',
+        selectAnswer: 'Please select a response to proceed.',
+        ssnFull9Error: 'Please enter a valid nine-digit SSN.',
+        needSSNFull9: "We're having trouble verifying your SSN. Please enter the full nine digits of your SSN.",
+        weCouldNotVerify: "We couldn't verify",
+        pleaseFixIt: 'Please fix this information before continuing',
         failedKYCTextBefore: "We weren't able to verify your identity. Please try again later or reach out to ",
         failedKYCTextAfter: ' if you have any questions.',
     },
@@ -1988,8 +1989,8 @@ export default {
         doYouOwn25percent: 'Do you own 25% or more of',
         doAnyIndividualOwn25percent: 'Do any individuals own 25% or more of',
         areThereMoreIndividualsWhoOwn25percent: 'Are there more individuals who own 25% or more of',
-        regulationRequiresUsToVerifyTheIdentity: 'Regulation requires us to verify the identity of any individual who owns more than 25% of the company.',
-        companyOwner: 'Company owner',
+        regulationRequiresUsToVerifyTheIdentity: 'Regulation requires us to verify the identity of any individual who owns more than 25% of the business.',
+        companyOwner: 'Business owner',
         enterLegalFirstAndLastName: "What's the owner's legal name?",
         legalFirstName: 'Legal first name',
         legalLastName: 'Legal last name',
@@ -2039,7 +2040,7 @@ export default {
         confirmAgreements: 'Please confirm the agreements below.',
         certifyTrueAndAccurate: 'I certify that the information provided is true and accurate',
         certifyTrueAndAccurateError: 'Please certify that the information is true and accurate',
-        isAuthorizedToUseBankAccount: 'I am authorized to use my company bank account for business spend',
+        isAuthorizedToUseBankAccount: 'I am authorized to use this business bank account for business spend',
         isAuthorizedToUseBankAccountError: 'You must be a controlling officer with authorization to operate the business bank account.',
         termsAndConditions: 'terms and conditions',
     },
@@ -2096,6 +2097,7 @@ export default {
         viewTrip: 'View trip',
         viewTripDetails: 'View trip details',
         trip: 'Trip',
+        trips: 'Trips',
         tripSummary: 'Trip summary',
         departs: 'Departs',
         errorMessage: 'Something went wrong. Please try again later.',
@@ -2845,7 +2847,7 @@ export default {
         moreFeatures: {
             spendSection: {
                 title: 'Spend',
-                subtitle: 'Enable optional functionality that helps you scale your team.',
+                subtitle: 'Enable functionality that helps you scale your team.',
             },
             earnSection: {
                 title: 'Earn',
@@ -3462,7 +3464,7 @@ export default {
             yesStartOver: 'Yes, start over',
             disconnectYour: 'Disconnect your ',
             bankAccountAnyTransactions: ' bank account. Any outstanding transactions for this account will still complete.',
-            clearProgress: "Starting over will clear any progress you've made.",
+            clearProgress: "Starting over will clear the progress you've made so far.",
             areYouSure: 'Are you sure?',
             workspaceCurrency: 'Workspace currency',
             updateCurrencyPrompt: 'It looks like your workspace is currently set to a different currency than USD. Please click the button below to update your currency to USD now.',
@@ -3638,6 +3640,9 @@ export default {
             public_announce: 'Public Announce',
         },
     },
+    workspaceActions: {
+        renamedWorkspaceNameAction: ({oldName, newName}) => `updated the name of this workspace from ${oldName} to ${newName}`,
+    },
     roomMembersPage: {
         memberNotFound: 'Member not found. To invite a new member to the room, please use the invite button above.',
         notAuthorized: `You don't have access to this page. If you're trying to join this room, just ask a room member to add you. Something else? Reach out to ${CONST.EMAIL.CONCIERGE}`,
@@ -3855,11 +3860,14 @@ export default {
                 reimbursementDelayed: `processed the payment but it’s delayed by 1-2 more business days`,
                 selectedForRandomAudit: `randomly selected for review`,
                 selectedForRandomAuditMarkdown: `[randomly selected](https://help.expensify.com/articles/expensify-classic/reports/Set-a-random-report-audit-schedule) for review`,
-                share: ({to}: ShareParams) => `invited user ${to}`,
+                share: ({to}: ShareParams) => `invited member ${to}`,
                 unshare: ({to}: UnshareParams) => `removed user ${to}`,
                 stripePaid: ({amount, currency}: StripePaidParams) => `paid ${currency}${amount}`,
                 takeControl: `took control`,
                 unapproved: ({amount, currency}: UnapprovedParams) => `unapproved ${currency}${amount}`,
+                addEmployee: (email: string, role: string) => `added ${email} as ${role === 'user' ? 'member' : 'admin'}`,
+                updateRole: (email: string, currentRole: string, newRole: string) => `updated the role of ${email} from ${currentRole} to ${newRole}`,
+                removeMember: (email: string, role: string) => `removed ${role} ${email}`,
             },
         },
     },
@@ -3969,7 +3977,8 @@ export default {
     },
     teachersUnitePage: {
         teachersUnite: 'Teachers Unite',
-        joinExpensifyOrg: 'Join Expensify.org in eliminating injustice around the world and help teachers split their expenses for classrooms in need!',
+        joinExpensifyOrg:
+            'Join Expensify.org in eliminating injustice around the world. The current "Teachers Unite" campaign supports educators everywhere by splitting the costs of essential school supplies.',
         iKnowATeacher: 'I know a teacher',
         iAmATeacher: 'I am a teacher',
         getInTouch: 'Excellent! Please share their information so we can get in touch with them.',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index b91640abec15..abcd5afa0f3e 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -366,6 +366,7 @@ export default {
         filterLogs: 'Registros de filtrado',
         network: 'La red',
         reportID: 'ID del informe',
+        outstanding: 'Pendiente',
     },
     connectionComplete: {
         title: 'Conexión completa',
@@ -661,11 +662,9 @@ export default {
         cameraAccess: 'Se requiere acceso a la cámara para hacer fotos de los recibos.',
         cameraErrorTitle: 'Error en la cámara',
         locationAccessTitle: 'Permitir acceso a la ubicación',
-        locationAccessMessage:
-            'Usaremos tu ubicación para determinar con precisión la moneda y zona horaria predeterminadas. Puedes editar el acceso en la configuración de tu dispositivo en cualquier momento.',
-        locationErrorTitle: 'Habilitar ubicación en la configuración',
-        locationErrorMessage:
-            'Es necesario permitir el acceso a la ubicación para ayudar a determinar con precisión su moneda y zona horaria predeterminadas. Haz click en Configuración para actualizar los permisos.',
+        locationAccessMessage: 'El acceso a la ubicación nos ayuda a mantener tu zona horaria y moneda precisas dondequiera que vayas.',
+        locationErrorTitle: 'Permitir acceso a la ubicación',
+        locationErrorMessage: 'El acceso a la ubicación nos ayuda a mantener tu zona horaria y moneda precisas dondequiera que vayas.',
         cameraErrorMessage: 'Se ha producido un error al hacer una foto. Por favor, inténtalo de nuevo.',
         dropTitle: 'Suéltalo',
         dropMessage: 'Suelta tu archivo aquí',
@@ -819,9 +818,9 @@ export default {
             genericCreateInvoiceFailureMessage: 'Error inesperado al enviar la factura. Por favor, inténtalo de nuevo más tarde.',
             receiptDeleteFailureError: 'Error inesperado al borrar este recibo. Por favor, vuelve a intentarlo más tarde.',
             // eslint-disable-next-line rulesdir/use-periods-for-error-messages
-            receiptFailureMessage: 'El recibo no se subió. ',
-            // eslint-disable-next-line rulesdir/use-periods-for-error-messages
+            receiptFailureMessage: 'El recibo no se subió.',
             saveFileMessage: 'Guarda el archivo ',
+            // eslint-disable-next-line rulesdir/use-periods-for-error-messages
             loseFileMessage: 'o descarta este error y piérdelo.',
             genericDeleteFailureMessage: 'Error inesperado al eliminar este gasto. Por favor, inténtalo más tarde.',
             genericEditFailureMessage: 'Error inesperado al editar este gasto. Por favor, inténtalo más tarde.',
@@ -1017,7 +1016,7 @@ export default {
     initialSettingsPage: {
         about: 'Acerca de',
         aboutPage: {
-            description: 'La nueva Expensify está creada por una comunidad de desarrolladores de código abierto de todo el mundo. Ayúdanos a construir el futuro de Expensify.',
+            description: 'La Nueva Expensify está creada por una comunidad de desarrolladores de código abierto de todo el mundo. Ayúdanos a construir el futuro de Expensify.',
             appDownloadLinks: 'Enlaces para descargar la App',
             viewKeyboardShortcuts: 'Ver atajos de teclado',
             viewTheCode: 'Ver código',
@@ -1041,7 +1040,7 @@ export default {
             viewConsole: 'Ver la consola de depuración',
             debugConsole: 'Consola de depuración',
             description: 'Utilice las herramientas que aparecen a continuación para solucionar los problemas de Expensify. Si tiene algún problema, por favor',
-            submitBug: 'envíe un error',
+            submitBug: 'envíe un informe de error',
             confirmResetDescription: 'Todos los borradores no enviados se perderán, pero el resto de tus datos estarán a salvo.',
             resetAndRefresh: 'Restablecer y actualizar',
             clientSideLogging: 'Registro a nivel cliente',
@@ -1050,7 +1049,7 @@ export default {
             profileTrace: 'Traza de ejecución',
             releaseOptions: 'Opciones de publicación',
             testingPreferences: 'Preferencias para Tests',
-            useStagingServer: 'Usar Servidor “Staging”',
+            useStagingServer: 'Usar servidor “staging”',
             forceOffline: 'Forzar desconexión',
             simulatFailingNetworkRequests: 'Simular fallos en solicitudes de red',
             authenticationStatus: 'Estado de autenticación',
@@ -1302,7 +1301,7 @@ export default {
         delaySubmissionDescription: 'Retrasa la presentación de gastos en base a un calendario personalizado, o mantén esta opción desactivada para seguir viendo los gastos en tiempo real.',
         submissionFrequency: 'Frecuencia de envíos',
         submissionFrequencyDateOfMonth: 'Fecha del mes',
-        addApprovalsTitle: 'Requerir aprobaciones',
+        addApprovalsTitle: 'Aprobaciones',
         addApprovalButton: 'Añadir flujo de aprobación',
         addApprovalTip: 'Este flujo de trabajo por defecto se aplica a todos los miembros, a menos que exista un flujo de trabajo más específico',
         approver: 'Aprobador',
@@ -1732,7 +1731,7 @@ export default {
     bankAccount: {
         bankInfo: 'Información bancaria',
         confirmBankInfo: 'Confirmar información bancaria',
-        manuallyAdd: 'Añadir manualmente tu cuenta bancaria',
+        manuallyAdd: '¿Cuáles son los detalles de tu cuenta bancaria comercial?',
         letsDoubleCheck: 'Verifiquemos que todo esté correcto.',
         accountEnding: 'Cuenta terminada en',
         thisBankAccount: 'Esta cuenta bancaria se utilizará para pagos comerciales en tu espacio de trabajo',
@@ -1741,13 +1740,13 @@ export default {
         chooseAnAccountBelow: 'Elige una cuenta a continuación',
         addBankAccount: 'Añadir cuenta bancaria',
         chooseAnAccount: 'Elige una cuenta',
-        connectOnlineWithPlaid: 'Conéctate a Plaid online',
+        connectOnlineWithPlaid: 'Conectar con Plaid',
         connectManually: 'Conectar manualmente',
         desktopConnection: 'Para conectarse con Chase, Wells Fargo, Capital One o Bank of America, haz clic aquí para completar este proceso en un navegador.',
         yourDataIsSecure: 'Tus datos están seguros',
-        toGetStarted: 'Añade una cuenta bancaria y reembolsa gastos, emite tarjetas corporativas, y cobra y paga facturas todo desde un mismo lugar.',
+        toGetStarted: 'Conecta una cuenta bancaria para reembolsar gastos, emitir tarjetas corporativas, y cobrar y pagar facturas todo desde un mismo lugar.',
         plaidBodyCopy: 'Ofrezca a sus empleados una forma más sencilla de pagar - y recuperar - los gastos de la empresa.',
-        checkHelpLine: 'Tu número de ruta y número de cuenta se pueden encontrar en un cheque de la cuenta bancaria.',
+        checkHelpLine: 'Tus números de ruta y de cuenta se pueden encontrar en un cheque de la cuenta bancaria.',
         validateAccountError: {
             phrase1: '¡Un momento! Primero necesitas validar tu cuenta. Para hacerlo, ',
             phrase2: 'vuelve a iniciar sesión con un código mágico',
@@ -1757,37 +1756,36 @@ export default {
         hasPhoneLoginError:
             'Para añadir una cuenta bancaria verificada, asegúrate de que tu nombre de usuario principal sea un correo electrónico válido y vuelve a intentarlo. Puedes añadir tu número de teléfono como nombre de usuario secundario.',
         hasBeenThrottledError: 'Se ha producido un error al intentar añadir tu cuenta bancaria. Por favor, espera unos minutos e inténtalo de nuevo.',
-        hasCurrencyError:
-            '¡Ups! Parece que la moneda de tu espacio de trabajo está configurada en una moneda diferente a USD. Para continuar, por favor configúrala en USD e inténtalo nuevamente.',
+        hasCurrencyError: '¡Ups! Parece que la moneda de tu espacio de trabajo no está configurada en USD. Por favor, configúrala en USD e inténtalo nuevamente.',
         error: {
-            youNeedToSelectAnOption: 'Debes seleccionar una opción para continuar.',
-            noBankAccountAvailable: 'Lo sentimos, no hay ninguna cuenta bancaria disponible.',
-            noBankAccountSelected: 'Por favor, elige una cuenta bancaria.',
-            taxID: 'Por favor, introduce un número de identificación fiscal válido.',
+            youNeedToSelectAnOption: 'Debes seleccionar una opción para continuar',
+            noBankAccountAvailable: 'Lo sentimos, no hay ninguna cuenta bancaria disponible',
+            noBankAccountSelected: 'Por favor, elige una cuenta bancaria',
+            taxID: 'Por favor, introduce un número de identificación fiscal válido',
             website: 'Por favor, introduce un sitio web válido. El sitio web debe estar en minúsculas.',
             zipCode: `Formato de código postal incorrecto. Formato aceptable: ${CONST.COUNTRY_ZIP_REGEX_DATA.US.samples}`,
-            phoneNumber: 'Por favor, introduce un teléfono válido.',
-            companyName: 'Por favor, introduce un nombre comercial legal válido.',
-            addressCity: 'Por favor, introduce una ciudad válida.',
-            addressStreet: 'Por favor, introduce una calle de dirección válida que no sea un apartado postal.',
-            addressState: 'Por favor, selecciona un estado.',
-            incorporationDateFuture: 'La fecha de incorporación no puede ser futura.',
-            incorporationState: 'Por favor, selecciona una estado válido.',
-            industryCode: 'Por favor, introduce un código de clasificación de industria válido.',
-            restrictedBusiness: 'Por favor, confirma que la empresa no está en la lista de negocios restringidos.',
-            routingNumber: 'Por favor, introduce un número de ruta válido.',
-            accountNumber: 'Por favor, introduce un número de cuenta válido.',
-            routingAndAccountNumberCannotBeSame: 'El número de ruta y el número de cuenta no pueden ser iguales.',
-            companyType: 'Por favor, selecciona un tipo de compañía válido.',
+            phoneNumber: 'Por favor, introduce un teléfono válido',
+            companyName: 'Por favor, introduce un nombre comercial legal válido',
+            addressCity: 'Por favor, introduce una ciudad válida',
+            addressStreet: 'Por favor, introduce una calle de dirección válida que no sea un apartado postal',
+            addressState: 'Por favor, selecciona un estado',
+            incorporationDateFuture: 'La fecha de incorporación no puede ser futura',
+            incorporationState: 'Por favor, selecciona una estado válido',
+            industryCode: 'Por favor, introduce un código de clasificación de industria válido',
+            restrictedBusiness: 'Por favor, confirma que la empresa no está en la lista de negocios restringidos',
+            routingNumber: 'Por favor, introduce un número de ruta válido',
+            accountNumber: 'Por favor, introduce un número de cuenta válido',
+            routingAndAccountNumberCannotBeSame: 'Los números de ruta y de cuenta no pueden ser iguales',
+            companyType: 'Por favor, selecciona un tipo de compañía válido',
             tooManyAttempts:
                 'Debido a la gran cantidad de intentos de inicio de sesión, esta opción ha sido desactivada temporalmente durante 24 horas. Por favor, inténtalo de nuevo más tarde.',
-            address: 'Por favor, introduce una dirección válida.',
-            dob: 'Por favor, selecciona una fecha de nacimiento válida.',
-            age: 'Debe ser mayor de 18 años.',
-            ssnLast4: 'Por favor, introduce los últimos 4 dígitos del número de seguridad social.',
-            firstName: 'Por favor, introduce el nombre.',
-            lastName: 'Por favor, introduce los apellidos.',
-            noDefaultDepositAccountOrDebitCardAvailable: 'Por favor, añade una cuenta bancaria para depósitos o una tarjeta de débito.',
+            address: 'Por favor, introduce una dirección válida',
+            dob: 'Por favor, selecciona una fecha de nacimiento válida',
+            age: 'Debe ser mayor de 18 años',
+            ssnLast4: 'Por favor, introduce los últimos 4 dígitos del número de seguridad social',
+            firstName: 'Por favor, introduce el nombre',
+            lastName: 'Por favor, introduce los apellidos',
+            noDefaultDepositAccountOrDebitCardAvailable: 'Por favor, añade una cuenta bancaria para depósitos o una tarjeta de débito',
             validationAmounts: 'Los importes de validación que introduciste son incorrectos. Por favor, comprueba tu cuenta bancaria e inténtalo de nuevo.',
         },
     },
@@ -2131,6 +2129,7 @@ export default {
         viewTrip: 'Ver viaje',
         viewTripDetails: 'Ver detalles del viaje',
         trip: 'Viaje',
+        trips: 'Viajes',
         tripSummary: 'Resumen del viaje',
         departs: 'Sale',
         errorMessage: 'Ha ocurrido un error. Por favor, inténtalo mas tarde.',
@@ -3692,6 +3691,9 @@ export default {
             public_announce: 'Anuncio Público',
         },
     },
+    workspaceActions: {
+        renamedWorkspaceNameAction: ({oldName, newName}) => `actualizó el nombre de este espacio de trabajo de ${oldName} a ${newName}`,
+    },
     roomMembersPage: {
         memberNotFound: 'Miembro no encontrado. Para invitar a un nuevo miembro a la sala de chat, por favor, utiliza el botón invitar que está más arriba.',
         notAuthorized: `No tienes acceso a esta página. Si estás intentando unirte a esta sala, pide a un miembro de la sala que te añada. ¿Necesitas algo más? Comunícate con ${CONST.EMAIL.CONCIERGE}`,
@@ -3910,11 +3912,15 @@ export default {
                 reimbursementDelayed: `procesó el pago pero se retrasó entre 1 y 2 días hábiles más`,
                 selectedForRandomAudit: `seleccionado al azar para revisión`,
                 selectedForRandomAuditMarkdown: `[seleccionado al azar](https://help.expensify.com/articles/expensify-classic/reports/Set-a-random-report-audit-schedule) para revisión`,
-                share: ({to}: ShareParams) => `usuario invitado ${to}`,
+                share: ({to}: ShareParams) => `miembro invitado ${to}`,
                 unshare: ({to}: UnshareParams) => `usuario eliminado ${to}`,
                 stripePaid: ({amount, currency}: StripePaidParams) => `pagado ${currency}${amount}`,
                 takeControl: `tomó el control`,
                 unapproved: ({amount, currency}: UnapprovedParams) => `no aprobado ${currency}${amount}`,
+                addEmployee: (email: string, role: string) => `agregó a ${email} como ${role === 'user' ? 'miembro' : 'administrador'}`,
+                updateRole: (email: string, currentRole: string, newRole: string) =>
+                    `actualicé el rol ${email} de ${currentRole === 'user' ? 'miembro' : 'administrador'} a ${newRole === 'user' ? 'miembro' : 'administrador'}`,
+                removeMember: (email: string, role: string) => `eliminado ${role === 'user' ? 'miembro' : 'administrador'} ${email}`,
             },
         },
     },
diff --git a/src/libs/API/parameters/OpenCardDetailsPageParams.ts b/src/libs/API/parameters/OpenCardDetailsPageParams.ts
new file mode 100644
index 000000000000..e279326c8a82
--- /dev/null
+++ b/src/libs/API/parameters/OpenCardDetailsPageParams.ts
@@ -0,0 +1,6 @@
+type OpenCardDetailsPageParams = {
+    authToken: string;
+    cardID: number;
+};
+
+export default OpenCardDetailsPageParams;
diff --git a/src/libs/API/parameters/ToggleCardContinuousReconciliationParams.ts b/src/libs/API/parameters/ToggleCardContinuousReconciliationParams.ts
new file mode 100644
index 000000000000..7433418058bd
--- /dev/null
+++ b/src/libs/API/parameters/ToggleCardContinuousReconciliationParams.ts
@@ -0,0 +1,7 @@
+type ToggleCardContinuousReconciliationParams = {
+    workspaceAccountID: number;
+    shouldUseContinuousReconciliation: boolean;
+    expensifyCardContinuousReconciliationConnection?: string;
+};
+
+export default ToggleCardContinuousReconciliationParams;
diff --git a/src/libs/API/parameters/UpdateExpensifyCardLimitTypeParams.ts b/src/libs/API/parameters/UpdateExpensifyCardLimitTypeParams.ts
new file mode 100644
index 000000000000..8faafab82b8e
--- /dev/null
+++ b/src/libs/API/parameters/UpdateExpensifyCardLimitTypeParams.ts
@@ -0,0 +1,7 @@
+type UpdateExpensifyCardLimitTypeParams = {
+    authToken: string;
+    cardID: number;
+    limitType: string;
+};
+
+export default UpdateExpensifyCardLimitTypeParams;
diff --git a/src/libs/API/parameters/index.ts b/src/libs/API/parameters/index.ts
index fb6802577f1e..c95355dada31 100644
--- a/src/libs/API/parameters/index.ts
+++ b/src/libs/API/parameters/index.ts
@@ -275,3 +275,6 @@ export type {default as StartIssueNewCardFlowParams} from './StartIssueNewCardFl
 export type {default as ConfigureExpensifyCardsForPolicyParams} from './ConfigureExpensifyCardsForPolicyParams';
 export type {default as CreateExpensifyCardParams} from './CreateExpensifyCardParams';
 export type {default as UpdateExpensifyCardTitleParams} from './UpdateExpensifyCardTitleParams';
+export type {default as OpenCardDetailsPageParams} from './OpenCardDetailsPageParams';
+export type {default as ToggleCardContinuousReconciliationParams} from './ToggleCardContinuousReconciliationParams';
+export type {default as UpdateExpensifyCardLimitTypeParams} from './UpdateExpensifyCardLimitTypeParams';
diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts
index eb43bae52af0..cc3504ad89ab 100644
--- a/src/libs/API/types.ts
+++ b/src/libs/API/types.ts
@@ -33,6 +33,7 @@ const WRITE_COMMANDS = {
     ACTIVATE_PHYSICAL_EXPENSIFY_CARD: 'ActivatePhysicalExpensifyCard',
     UPDATE_EXPENSIFY_CARD_LIMIT: 'UpdateExpensifyCardLimit',
     UPDATE_EXPENSIFY_CARD_TITLE: 'UpdateExpensifyCardTitle',
+    UPDATE_EXPENSIFY_CARD_LIMIT_TYPE: 'UpdateExpensifyCardLimitType',
     CHRONOS_REMOVE_OOO_EVENT: 'Chronos_RemoveOOOEvent',
     MAKE_DEFAULT_PAYMENT_METHOD: 'MakeDefaultPaymentMethod',
     ADD_PAYMENT_CARD: 'AddPaymentCard',
@@ -332,6 +333,7 @@ const WRITE_COMMANDS = {
     CONFIGURE_EXPENSIFY_CARDS_FOR_POLICY: 'ConfigureExpensifyCardsForPolicy',
     CREATE_EXPENSIFY_CARD: 'CreateExpensifyCard',
     CREATE_ADMIN_ISSUED_VIRTUAL_CARD: 'CreateAdminIssuedVirtualCard',
+    TOGGLE_CARD_CONTINUOUS_RECONCILIATION: 'ToggleCardContinuousReconciliation',
 } as const;
 
 type WriteCommand = ValueOf<typeof WRITE_COMMANDS>;
@@ -356,6 +358,7 @@ type WriteCommandParameters = {
     [WRITE_COMMANDS.ACTIVATE_PHYSICAL_EXPENSIFY_CARD]: Parameters.ActivatePhysicalExpensifyCardParams;
     [WRITE_COMMANDS.UPDATE_EXPENSIFY_CARD_LIMIT]: Parameters.UpdateExpensifyCardLimitParams;
     [WRITE_COMMANDS.UPDATE_EXPENSIFY_CARD_TITLE]: Parameters.UpdateExpensifyCardTitleParams;
+    [WRITE_COMMANDS.UPDATE_EXPENSIFY_CARD_LIMIT_TYPE]: Parameters.UpdateExpensifyCardLimitTypeParams;
     [WRITE_COMMANDS.MAKE_DEFAULT_PAYMENT_METHOD]: Parameters.MakeDefaultPaymentMethodParams;
     [WRITE_COMMANDS.ADD_PAYMENT_CARD]: Parameters.AddPaymentCardParams;
     [WRITE_COMMANDS.ADD_PAYMENT_CARD_GBP]: Parameters.AddPaymentCardParams;
@@ -669,6 +672,7 @@ type WriteCommandParameters = {
     [WRITE_COMMANDS.CONFIGURE_EXPENSIFY_CARDS_FOR_POLICY]: Parameters.ConfigureExpensifyCardsForPolicyParams;
     [WRITE_COMMANDS.CREATE_EXPENSIFY_CARD]: Parameters.CreateExpensifyCardParams;
     [WRITE_COMMANDS.CREATE_ADMIN_ISSUED_VIRTUAL_CARD]: Omit<Parameters.CreateExpensifyCardParams, 'feedCountry'>;
+    [WRITE_COMMANDS.TOGGLE_CARD_CONTINUOUS_RECONCILIATION]: Parameters.ToggleCardContinuousReconciliationParams;
 };
 
 const READ_COMMANDS = {
@@ -724,6 +728,7 @@ const READ_COMMANDS = {
     OPEN_SUBSCRIPTION_PAGE: 'OpenSubscriptionPage',
     OPEN_DRAFT_DISTANCE_EXPENSE: 'OpenDraftDistanceExpense',
     START_ISSUE_NEW_CARD_FLOW: 'StartIssueNewCardFlow',
+    OPEN_CARD_DETAILS_PAGE: 'OpenCardDetailsPage',
 } as const;
 
 type ReadCommand = ValueOf<typeof READ_COMMANDS>;
@@ -781,6 +786,7 @@ type ReadCommandParameters = {
     [READ_COMMANDS.OPEN_SUBSCRIPTION_PAGE]: null;
     [READ_COMMANDS.OPEN_DRAFT_DISTANCE_EXPENSE]: null;
     [READ_COMMANDS.START_ISSUE_NEW_CARD_FLOW]: Parameters.StartIssueNewCardFlowParams;
+    [READ_COMMANDS.OPEN_CARD_DETAILS_PAGE]: Parameters.OpenCardDetailsPageParams;
 };
 
 const SIDE_EFFECT_REQUEST_COMMANDS = {
diff --git a/src/libs/AccountingUtils.ts b/src/libs/AccountingUtils.ts
new file mode 100644
index 000000000000..fe472752978a
--- /dev/null
+++ b/src/libs/AccountingUtils.ts
@@ -0,0 +1,27 @@
+import type {ValueOf} from 'type-fest';
+import CONST from '@src/CONST';
+import type {ConnectionName} from '@src/types/onyx/Policy';
+
+const ROUTE_NAME_MAPPING = {
+    [CONST.POLICY.CONNECTIONS.ROUTE.QBO]: CONST.POLICY.CONNECTIONS.NAME.QBO,
+    [CONST.POLICY.CONNECTIONS.ROUTE.XERO]: CONST.POLICY.CONNECTIONS.NAME.XERO,
+    [CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT]: CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT,
+    [CONST.POLICY.CONNECTIONS.ROUTE.NETSUITE]: CONST.POLICY.CONNECTIONS.NAME.NETSUITE,
+};
+
+const NAME_ROUTE_MAPPING = {
+    [CONST.POLICY.CONNECTIONS.NAME.QBO]: CONST.POLICY.CONNECTIONS.ROUTE.QBO,
+    [CONST.POLICY.CONNECTIONS.NAME.XERO]: CONST.POLICY.CONNECTIONS.ROUTE.XERO,
+    [CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT]: CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT,
+    [CONST.POLICY.CONNECTIONS.NAME.NETSUITE]: CONST.POLICY.CONNECTIONS.ROUTE.NETSUITE,
+};
+
+function getConnectionNameFromRouteParam(routeParam: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>) {
+    return ROUTE_NAME_MAPPING[routeParam];
+}
+
+function getRouteParamForConnection(connectionName: ConnectionName) {
+    return NAME_ROUTE_MAPPING[connectionName];
+}
+
+export {getConnectionNameFromRouteParam, getRouteParamForConnection};
diff --git a/src/libs/CardUtils.ts b/src/libs/CardUtils.ts
index a5dfe69bf40e..e0041dde9934 100644
--- a/src/libs/CardUtils.ts
+++ b/src/libs/CardUtils.ts
@@ -6,9 +6,11 @@ import CONST from '@src/CONST';
 import type {TranslationPaths} from '@src/languages/types';
 import type {OnyxValues} from '@src/ONYXKEYS';
 import ONYXKEYS from '@src/ONYXKEYS';
-import type {BankAccountList, Card, CardList} from '@src/types/onyx';
+import type {BankAccountList, Card, CardList, PersonalDetailsList, WorkspaceCardsList} from '@src/types/onyx';
 import {isEmptyObject} from '@src/types/utils/EmptyObject';
+import localeCompare from './LocaleCompare';
 import * as Localize from './Localize';
+import * as PersonalDetailsUtils from './PersonalDetailsUtils';
 
 let allCards: OnyxValues[typeof ONYXKEYS.CARD_LIST] = {};
 Onyx.connect({
@@ -166,6 +168,18 @@ function getEligibleBankAccountsForCard(bankAccountsList: OnyxEntry<BankAccountL
     return Object.values(bankAccountsList).filter((bankAccount) => bankAccount?.accountData?.type === CONST.BANK_ACCOUNT.TYPE.BUSINESS && bankAccount?.accountData?.allowDebit);
 }
 
+function sortCardsByCardholderName(cardsList: OnyxEntry<WorkspaceCardsList>, personalDetails: OnyxEntry<PersonalDetailsList>): Card[] {
+    return Object.values(cardsList ?? {}).sort((cardA: Card, cardB: Card) => {
+        const userA = personalDetails?.[cardA.accountID ?? '-1'] ?? {};
+        const userB = personalDetails?.[cardB.accountID ?? '-1'] ?? {};
+
+        const aName = PersonalDetailsUtils.getDisplayNameOrDefault(userA);
+        const bName = PersonalDetailsUtils.getDisplayNameOrDefault(userB);
+
+        return localeCompare(aName, bName);
+    });
+}
+
 export {
     isExpensifyCard,
     isCorporateCard,
@@ -180,4 +194,5 @@ export {
     getMCardNumberString,
     getTranslationKeyForLimitType,
     getEligibleBankAccountsForCard,
+    sortCardsByCardholderName,
 };
diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.tsx b/src/libs/Navigation/AppNavigator/AuthScreens.tsx
index 071b6d8270d7..4bbdac7b17b1 100644
--- a/src/libs/Navigation/AppNavigator/AuthScreens.tsx
+++ b/src/libs/Navigation/AppNavigator/AuthScreens.tsx
@@ -476,6 +476,12 @@ function AuthScreens({session, lastOpenedPublicRoomID, initialLastUpdateIDApplie
                         name={NAVIGATORS.ONBOARDING_MODAL_NAVIGATOR}
                         options={onboardingScreenOptions}
                         component={OnboardingModalNavigator}
+                        listeners={{
+                            focus: () => {
+                                Modal.setDisableDismissOnEscape(true);
+                            },
+                            beforeRemove: () => Modal.setDisableDismissOnEscape(false),
+                        }}
                     />
                     <RootStack.Screen
                         name={SCREENS.WORKSPACE_JOIN_USER}
diff --git a/src/libs/Navigation/AppNavigator/Navigators/OnboardingModalNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/OnboardingModalNavigator.tsx
index bd60b0a873d9..662910b3b28b 100644
--- a/src/libs/Navigation/AppNavigator/Navigators/OnboardingModalNavigator.tsx
+++ b/src/libs/Navigation/AppNavigator/Navigators/OnboardingModalNavigator.tsx
@@ -4,7 +4,6 @@ import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import NoDropZone from '@components/DragAndDrop/NoDropZone';
 import FocusTrapForScreens from '@components/FocusTrap/FocusTrapForScreen';
-import useDisableModalDismissOnEscape from '@hooks/useDisableModalDismissOnEscape';
 import useKeyboardShortcut from '@hooks/useKeyboardShortcut';
 import useOnboardingLayout from '@hooks/useOnboardingLayout';
 import useThemeStyles from '@hooks/useThemeStyles';
@@ -34,8 +33,6 @@ function OnboardingModalNavigator() {
     });
     const {isSmallScreenWidth} = useWindowDimensions();
 
-    useDisableModalDismissOnEscape();
-
     useEffect(() => {
         if (!hasCompletedGuidedSetupFlow) {
             return;
diff --git a/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx
index 44355cbbe955..646552c44055 100644
--- a/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx
+++ b/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx
@@ -1,7 +1,7 @@
 import type {StackCardInterpolationProps, StackScreenProps} from '@react-navigation/stack';
 import {createStackNavigator} from '@react-navigation/stack';
 import React, {useMemo, useRef} from 'react';
-import {View} from 'react-native';
+import {InteractionManager, View} from 'react-native';
 import NoDropZone from '@components/DragAndDrop/NoDropZone';
 import useStyleUtils from '@hooks/useStyleUtils';
 import useThemeStyles from '@hooks/useThemeStyles';
@@ -62,7 +62,11 @@ function RightModalNavigator({navigation, route}: RightModalNavigatorProps) {
                             ) {
                                 return;
                             }
-                            abandonReviewDuplicateTransactions();
+                            // Delay clearing review duplicate data till the RHP is completely closed
+                            // to avoid not found showing briefly in confirmation page when RHP is closing
+                            InteractionManager.runAfterInteractions(() => {
+                                abandonReviewDuplicateTransactions();
+                            });
                         },
                     }}
                     id={NAVIGATORS.RIGHT_MODAL_NAVIGATOR}
diff --git a/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/BottomTabBar.tsx b/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/BottomTabBar.tsx
index f023e94bec9b..a9df43ad5b64 100644
--- a/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/BottomTabBar.tsx
+++ b/src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/BottomTabBar.tsx
@@ -18,7 +18,7 @@ import Navigation, {navigationRef} from '@libs/Navigation/Navigation';
 import type {RootStackParamList, State} from '@libs/Navigation/types';
 import {isCentralPaneName} from '@libs/NavigationUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
-import {getCurrentSearchParams} from '@libs/SearchUtils';
+import * as SearchUtils from '@libs/SearchUtils';
 import type {BrickRoad} from '@libs/WorkspacesSettingsUtils';
 import {getChatTabBrickRoad} from '@libs/WorkspacesSettingsUtils';
 import BottomTabAvatar from '@pages/home/sidebar/BottomTabAvatar';
@@ -88,14 +88,14 @@ function BottomTabBar({selectedTab}: BottomTabBarProps) {
             return;
         }
         interceptAnonymousUser(() => {
-            const currentSearchParams = getCurrentSearchParams();
+            const currentSearchParams = SearchUtils.getCurrentSearchParams();
             if (currentSearchParams) {
                 const {q, ...rest} = currentSearchParams;
                 const policy = PolicyUtils.getPolicy(currentSearchParams?.policyIDs);
                 Navigation.navigate(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: q, ...rest, policyIDs: policy ? currentSearchParams?.policyIDs : undefined}));
                 return;
             }
-            Navigation.navigate(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: CONST.SEARCH.TAB.EXPENSE.ALL}));
+            Navigation.navigate(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: SearchUtils.buildCannedSearchQuery()}));
         });
     }, [selectedTab]);
 
diff --git a/src/libs/Navigation/AppNavigator/getRootNavigatorScreenOptions.ts b/src/libs/Navigation/AppNavigator/getRootNavigatorScreenOptions.ts
index 8beb0e696d91..e09f85936385 100644
--- a/src/libs/Navigation/AppNavigator/getRootNavigatorScreenOptions.ts
+++ b/src/libs/Navigation/AppNavigator/getRootNavigatorScreenOptions.ts
@@ -1,5 +1,4 @@
 import type {StackCardInterpolationProps, StackNavigationOptions} from '@react-navigation/stack';
-import type {ViewStyle} from 'react-native';
 import type {ThemeStyles} from '@styles/index';
 import type {StyleUtilsType} from '@styles/utils';
 import variables from '@styles/variables';
@@ -61,8 +60,7 @@ const getRootNavigatorScreenOptions: GetRootNavigatorScreenOptions = (isSmallScr
                 width: '100%',
                 top: 0,
                 left: 0,
-                // We need to guarantee that it covers BottomTabBar on web, but fixed position is not supported in react native.
-                position: 'fixed' as ViewStyle['position'],
+                position: 'fixed',
             },
         }),
         leftModalNavigator: {
diff --git a/src/libs/Navigation/linkTo/index.ts b/src/libs/Navigation/linkTo/index.ts
index d5a72db3a304..45178ef1adaf 100644
--- a/src/libs/Navigation/linkTo/index.ts
+++ b/src/libs/Navigation/linkTo/index.ts
@@ -123,6 +123,10 @@ export default function linkTo(navigation: NavigationContainerRef<RootStackParam
             // If the type is UP, we deeplinked into one of the RHP flows and we want to replace the current screen with the previous one in the flow
             // and at the same time we want the back button to go to the page we were before the deeplink
         } else if (type === CONST.NAVIGATION.TYPE.UP) {
+            if (!areParamsDifferent && isSideModalNavigator(lastRoute?.name) && topmostCentralPaneRoute?.name === targetName) {
+                dismissModal(navigation);
+                return;
+            }
             action.type = CONST.NAVIGATION.ACTION_TYPE.REPLACE;
 
             // If this action is navigating to ModalNavigator or FullScreenNavigator and the last route on the root navigator is not already opened Navigator then push
diff --git a/src/libs/Navigation/linkingConfig/CENTRAL_PANE_TO_RHP_MAPPING.ts b/src/libs/Navigation/linkingConfig/CENTRAL_PANE_TO_RHP_MAPPING.ts
index 2ce651eff9c9..add67e5b273b 100755
--- a/src/libs/Navigation/linkingConfig/CENTRAL_PANE_TO_RHP_MAPPING.ts
+++ b/src/libs/Navigation/linkingConfig/CENTRAL_PANE_TO_RHP_MAPPING.ts
@@ -19,6 +19,9 @@ const CENTRAL_PANE_TO_RHP_MAPPING: Partial<Record<CentralPaneName, string[]>> =
         SCREENS.SETTINGS.PROFILE.ADDRESS,
         SCREENS.SETTINGS.PROFILE.ADDRESS_COUNTRY,
         SCREENS.SETTINGS.SHARE_CODE,
+        SCREENS.SETTINGS.EXIT_SURVEY.REASON,
+        SCREENS.SETTINGS.EXIT_SURVEY.RESPONSE,
+        SCREENS.SETTINGS.EXIT_SURVEY.CONFIRM,
     ],
     [SCREENS.SETTINGS.PREFERENCES.ROOT]: [SCREENS.SETTINGS.PREFERENCES.PRIORITY_MODE, SCREENS.SETTINGS.PREFERENCES.LANGUAGE, SCREENS.SETTINGS.PREFERENCES.THEME],
     [SCREENS.SETTINGS.WALLET.ROOT]: [
diff --git a/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts b/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts
index 1e187330089f..611831544bdc 100644
--- a/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts
+++ b/src/libs/Navigation/linkingConfig/getAdaptedStateFromPath.ts
@@ -26,6 +26,9 @@ const RHP_SCREENS_OPENED_FROM_LHN = [
     SCREENS.SETTINGS.PROFILE.STATUS,
     SCREENS.SETTINGS.PREFERENCES.PRIORITY_MODE,
     SCREENS.MONEY_REQUEST.CREATE,
+    SCREENS.SETTINGS.EXIT_SURVEY.REASON,
+    SCREENS.SETTINGS.EXIT_SURVEY.RESPONSE,
+    SCREENS.SETTINGS.EXIT_SURVEY.CONFIRM,
 ] satisfies Screen[];
 
 type RHPScreenOpenedFromLHN = TupleToUnion<typeof RHP_SCREENS_OPENED_FROM_LHN>;
@@ -121,11 +124,7 @@ function getMatchingRootRouteForRHPRoute(route: NavigationPartialRoute): Navigat
 
             // If there is rhpNavigator in the state generated for backTo url, we want to get root route matching to this rhp screen.
             if (rhpNavigator && rhpNavigator.state) {
-                const isRHPinState = stateForBackTo.routes[0].name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR;
-
-                if (isRHPinState) {
-                    return getMatchingRootRouteForRHPRoute(findFocusedRoute(stateForBackTo) as NavigationPartialRoute);
-                }
+                return getMatchingRootRouteForRHPRoute(findFocusedRoute(stateForBackTo) as NavigationPartialRoute);
             }
 
             // If we know that backTo targets the root route (central pane or full screen) we want to use it.
diff --git a/src/libs/Navigation/switchPolicyID.ts b/src/libs/Navigation/switchPolicyID.ts
index 28de413b0904..a37ccb0c2506 100644
--- a/src/libs/Navigation/switchPolicyID.ts
+++ b/src/libs/Navigation/switchPolicyID.ts
@@ -4,6 +4,7 @@ import {getPathFromState} from '@react-navigation/native';
 import type {Writable} from 'type-fest';
 import getIsNarrowLayout from '@libs/getIsNarrowLayout';
 import {isCentralPaneName} from '@libs/NavigationUtils';
+import * as SearchUtils from '@libs/SearchUtils';
 import CONST from '@src/CONST';
 import type {Route} from '@src/ROUTES';
 import ROUTES from '@src/ROUTES';
@@ -84,7 +85,7 @@ export default function switchPolicyID(navigation: NavigationContainerRef<RootSt
     // Here's the configuration: src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx
     const isOpeningSearchFromBottomTab = !route && topmostCentralPaneRoute?.name === SCREENS.SEARCH.CENTRAL_PANE;
     if (isOpeningSearchFromBottomTab) {
-        newPath = ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: CONST.SEARCH.TAB.EXPENSE.ALL});
+        newPath = ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: SearchUtils.buildCannedSearchQuery()});
     }
     const stateFromPath = getStateFromPath(newPath as Route) as PartialState<NavigationState<RootStackParamList>>;
     const action: StackNavigationAction = getActionFromState(stateFromPath, linkingConfig.config);
diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts
index 8bd1c44568c4..b689f36d8a35 100644
--- a/src/libs/Navigation/types.ts
+++ b/src/libs/Navigation/types.ts
@@ -620,11 +620,11 @@ type SettingsNavigatorParamList = {
     };
     [SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION]: {
         policyID: string;
-        connection: ValueOf<typeof CONST.POLICY.CONNECTIONS.NAME>;
+        connection: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>;
     };
     [SCREENS.WORKSPACE.ACCOUNTING.RECONCILIATION_ACCOUNT_SETTINGS]: {
         policyID: string;
-        connection: ValueOf<typeof CONST.POLICY.CONNECTIONS.NAME>;
+        connection: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>;
     };
     [SCREENS.GET_ASSISTANCE]: {
         backTo: Routes;
@@ -1293,6 +1293,7 @@ type AuthScreensParamList = CentralPaneScreensParamList &
         [SCREENS.TRANSACTION_RECEIPT]: {
             reportID: string;
             transactionID: string;
+            readonly?: boolean;
         };
         [SCREENS.CONNECTION_COMPLETE]: undefined;
     };
diff --git a/src/libs/OptionsListUtils.ts b/src/libs/OptionsListUtils.ts
index f9d7c6f69375..98274e829001 100644
--- a/src/libs/OptionsListUtils.ts
+++ b/src/libs/OptionsListUtils.ts
@@ -221,6 +221,7 @@ type PreviewConfig = {showChatPreviewLine?: boolean; forcePolicyNamePreview?: bo
 type FilterOptionsConfig = Pick<GetOptionsConfig, 'sortByReportTypeInSearch' | 'canInviteUser' | 'selectedOptions' | 'excludeUnknownUsers' | 'excludeLogins' | 'maxRecentReportsToShow'> & {
     preferChatroomsOverThreads?: boolean;
     includeChatRoomsByParticipants?: boolean;
+    preferPolicyExpenseChat?: boolean;
 };
 
 type HasText = {
@@ -358,6 +359,12 @@ Onyx.connect({
     callback: (value) => (allReportsDraft = value),
 });
 
+let activePolicyID: OnyxEntry<string>;
+Onyx.connect({
+    key: ONYXKEYS.NVP_ACTIVE_POLICY_ID,
+    callback: (value) => (activePolicyID = value),
+});
+
 /**
  * Get the report or draft report given a reportID
  */
@@ -1616,11 +1623,15 @@ function createOptionFromReport(report: Report, personalDetails: OnyxEntry<Perso
  * @param searchValue - search string
  * @returns a sorted list of options
  */
-function orderOptions(options: ReportUtils.OptionData[], searchValue: string | undefined, {preferChatroomsOverThreads = false} = {}) {
+function orderOptions(options: ReportUtils.OptionData[], searchValue: string | undefined, {preferChatroomsOverThreads = false, preferPolicyExpenseChat = false} = {}) {
     return lodashOrderBy(
         options,
         [
             (option) => {
+                if (option.isPolicyExpenseChat && preferPolicyExpenseChat && option.policyID === activePolicyID) {
+                    return 0;
+                }
+
                 if (option.isSelfDM) {
                     return 0;
                 }
@@ -2058,11 +2069,14 @@ function getOptions(
     }
 
     // If we are prioritizing 1:1 chats in search, do it only once we started searching
-    if (sortByReportTypeInSearch && searchValue !== '') {
+    if (sortByReportTypeInSearch && (searchValue !== '' || !!action)) {
         // When sortByReportTypeInSearch is true, recentReports will be returned with all the reports including personalDetailsOptions in the correct Order.
-        recentReportOptions.push(...personalDetailsOptions);
-        personalDetailsOptions = [];
-        recentReportOptions = orderOptions(recentReportOptions, searchValue, {preferChatroomsOverThreads: true});
+        // If we're in money request flow, we only order the recent report option.
+        if (!action) {
+            recentReportOptions.push(...personalDetailsOptions);
+            personalDetailsOptions = [];
+        }
+        recentReportOptions = orderOptions(recentReportOptions, searchValue, {preferChatroomsOverThreads: true, preferPolicyExpenseChat: !!action});
     }
 
     return {
@@ -2171,6 +2185,7 @@ function getFilteredOptions(
     recentlyUsedPolicyReportFieldOptions: string[] = [],
     includeInvoiceRooms = false,
     action: IOUAction | undefined = undefined,
+    sortByReportTypeInSearch = false,
 ) {
     return getOptions(
         {reports, personalDetails},
@@ -2199,6 +2214,7 @@ function getFilteredOptions(
             recentlyUsedPolicyReportFieldOptions,
             includeInvoiceRooms,
             action,
+            sortByReportTypeInSearch,
         },
     );
 }
@@ -2423,6 +2439,7 @@ function filterOptions(options: Options, searchInputValue: string, config?: Filt
         excludeLogins = [],
         preferChatroomsOverThreads = false,
         includeChatRoomsByParticipants = false,
+        preferPolicyExpenseChat = false,
     } = config ?? {};
     if (searchInputValue.trim() === '' && maxRecentReportsToShow > 0) {
         return {...options, recentReports: options.recentReports.slice(0, maxRecentReportsToShow)};
@@ -2535,7 +2552,7 @@ function filterOptions(options: Options, searchInputValue: string, config?: Filt
 
     return {
         personalDetails,
-        recentReports: orderOptions(recentReports, searchValue, {preferChatroomsOverThreads}),
+        recentReports: orderOptions(recentReports, searchValue, {preferChatroomsOverThreads, preferPolicyExpenseChat}),
         userToInvite,
         currentUserOption: matchResults.currentUserOption,
         categoryOptions: [],
diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts
index a731fab4ae05..ba0d309fcad9 100644
--- a/src/libs/ReportActionsUtils.ts
+++ b/src/libs/ReportActionsUtils.ts
@@ -1594,6 +1594,60 @@ function getUpdateRoomDescriptionMessage(reportAction: ReportAction): string {
     return Localize.translateLocal('roomChangeLog.clearRoomDescription');
 }
 
+function isPolicyChangeLogAddEmployeeMessage(reportAction: OnyxInputOrEntry<ReportAction>): reportAction is ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_EMPLOYEE> {
+    return isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_EMPLOYEE);
+}
+
+function getPolicyChangeLogAddEmployeeMessage(reportAction: OnyxInputOrEntry<ReportAction>): string {
+    if (!isPolicyChangeLogAddEmployeeMessage(reportAction)) {
+        return '';
+    }
+
+    const originalMessage = getOriginalMessage(reportAction);
+    const email = originalMessage?.email ?? '';
+    const role = originalMessage?.role ?? '';
+    return Localize.translateLocal('report.actions.type.addEmployee', email, role);
+}
+
+function isPolicyChangeLogChangeRoleMessage(reportAction: OnyxInputOrEntry<ReportAction>): reportAction is ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_EMPLOYEE> {
+    return isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_EMPLOYEE);
+}
+
+function getPolicyChangeLogChangeRoleMessage(reportAction: OnyxInputOrEntry<ReportAction>): string {
+    if (!isPolicyChangeLogChangeRoleMessage(reportAction)) {
+        return '';
+    }
+    const originalMessage = getOriginalMessage(reportAction);
+    const email = originalMessage?.email ?? '';
+    const newRole = originalMessage?.newValue ?? '';
+    const oldRole = originalMessage?.oldValue ?? '';
+    return Localize.translateLocal('report.actions.type.updateRole', email, oldRole, newRole);
+}
+
+function isPolicyChangeLogDeleteMemberMessage(
+    reportAction: OnyxInputOrEntry<ReportAction>,
+): reportAction is ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_EMPLOYEE> {
+    return isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_EMPLOYEE);
+}
+
+function getPolicyChangeLogDeleteMemberMessage(reportAction: OnyxInputOrEntry<ReportAction>): string {
+    if (!isPolicyChangeLogDeleteMemberMessage(reportAction)) {
+        return '';
+    }
+    const originalMessage = getOriginalMessage(reportAction);
+    const email = originalMessage?.email ?? '';
+    const role = originalMessage?.role ?? '';
+    return Localize.translateLocal('report.actions.type.removeMember', email, role);
+}
+
+function getRenamedAction(reportAction: OnyxEntry<ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.RENAMED>>) {
+    const initialMessage = getOriginalMessage(reportAction);
+    return Localize.translateLocal('newRoomPage.renamedRoomAction', {
+        oldName: initialMessage?.oldName ?? '',
+        newName: initialMessage?.newName ?? '',
+    });
+}
+
 export {
     doesReportHaveVisibleActions,
     extractLinksFromMessageHtml,
@@ -1688,6 +1742,10 @@ export {
     getExportIntegrationMessageHTML,
     getUpdateRoomDescriptionMessage,
     didMessageMentionCurrentUser,
+    getPolicyChangeLogAddEmployeeMessage,
+    getPolicyChangeLogChangeRoleMessage,
+    getPolicyChangeLogDeleteMemberMessage,
+    getRenamedAction,
 };
 
 export type {LastVisibleMessage};
diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index 35b1aa10a833..14531e27a570 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -43,6 +43,7 @@ import type {
     UserWallet,
 } from '@src/types/onyx';
 import type {Participant} from '@src/types/onyx/IOU';
+import type {SelectedParticipant} from '@src/types/onyx/NewGroupChatDraft';
 import type {OriginalMessageExportedToIntegration} from '@src/types/onyx/OldDotAction';
 import type Onboarding from '@src/types/onyx/Onboarding';
 import type {Errors, Icon, PendingAction} from '@src/types/onyx/OnyxCommon';
@@ -2149,28 +2150,30 @@ function buildParticipantsFromAccountIDs(accountIDs: number[]): Participants {
 /**
  * Returns the report name if the report is a group chat
  */
-function getGroupChatName(participantAccountIDs?: number[], shouldApplyLimit = false, report?: OnyxEntry<Report>): string | undefined {
+function getGroupChatName(participants?: SelectedParticipant[], shouldApplyLimit = false, report?: OnyxEntry<Report>): string | undefined {
     // If we have a report always try to get the name from the report.
     if (report?.reportName) {
         return report.reportName;
     }
 
-    // Get participantAccountIDs from participants object
-    let participants = participantAccountIDs ?? Object.keys(report?.participants ?? {}).map(Number);
+    let participantAccountIDs = participants?.map((participant) => participant.accountID) ?? Object.keys(report?.participants ?? {}).map(Number);
     if (shouldApplyLimit) {
-        participants = participants.slice(0, 5);
+        participantAccountIDs = participantAccountIDs.slice(0, 5);
     }
-    const isMultipleParticipantReport = participants.length > 1;
+    const isMultipleParticipantReport = participantAccountIDs.length > 1;
 
     if (isMultipleParticipantReport) {
-        return participants
-            .map((participant) => getDisplayNameForParticipant(participant, isMultipleParticipantReport))
+        return participantAccountIDs
+            .map(
+                (participantAccountID, index) =>
+                    getDisplayNameForParticipant(participantAccountID, isMultipleParticipantReport) || LocalePhoneNumber.formatPhoneNumber(participants?.[index]?.login ?? ''),
+            )
             .sort((first, second) => localeCompare(first ?? '', second ?? ''))
             .filter(Boolean)
             .join(', ');
     }
 
-    return Localize.translateLocal('groupChat.defaultReportName', {displayName: getDisplayNameForParticipant(participants[0], false)});
+    return Localize.translateLocal('groupChat.defaultReportName', {displayName: getDisplayNameForParticipant(participantAccountIDs[0], false)});
 }
 
 function getParticipants(reportID: string) {
@@ -2947,8 +2950,9 @@ function canEditMoneyRequest(reportAction: OnyxInputOrEntry<ReportAction<typeof
     const moneyRequestReport = getReportOrDraftReport(String(moneyRequestReportID));
     const isRequestor = currentUserAccountID === reportAction?.actorAccountID;
 
+    const isSubmitted = isProcessingReport(moneyRequestReport);
     if (isIOUReport(moneyRequestReport)) {
-        return isProcessingReport(moneyRequestReport) && isRequestor;
+        return isSubmitted && isRequestor;
     }
 
     const policy = getPolicy(moneyRequestReport?.policyID ?? '-1');
@@ -2964,8 +2968,8 @@ function canEditMoneyRequest(reportAction: OnyxInputOrEntry<ReportAction<typeof
         return true;
     }
 
-    if (policy?.type === CONST.POLICY.TYPE.CORPORATE && moneyRequestReport && isCurrentUserSubmitter(moneyRequestReport.reportID)) {
-        const isForwarded = PolicyUtils.getSubmitToAccountID(policy, moneyRequestReport.ownerAccountID ?? 0) !== moneyRequestReport.managerID;
+    if (policy?.type === CONST.POLICY.TYPE.CORPORATE && moneyRequestReport && isSubmitted && isCurrentUserSubmitter(moneyRequestReport.reportID)) {
+        const isForwarded = PolicyUtils.getSubmitToAccountID(policy, moneyRequestReport.ownerAccountID ?? -1) !== moneyRequestReport.managerID;
         return !isForwarded;
     }
 
@@ -3012,7 +3016,7 @@ function canEditFieldOfMoneyRequest(reportAction: OnyxInputOrEntry<ReportAction>
         return false;
     }
 
-    const policy = getPolicy(moneyRequestReport?.reportID ?? '-1');
+    const policy = getPolicy(moneyRequestReport?.policyID);
     const isAdmin = isExpenseReport(moneyRequestReport) && policy?.role === CONST.POLICY.ROLE.ADMIN;
     const isManager = isExpenseReport(moneyRequestReport) && currentUserAccountID === moneyRequestReport?.managerID;
 
@@ -4409,6 +4413,12 @@ function getIOUForwardedMessage(reportID: string) {
     return Localize.translateLocal('iou.forwardedAmount', {amount: getFormattedAmount(reportID)});
 }
 
+function getWorkspaceNameUpdatedMessage(action: ReportAction) {
+    const {oldName, newName} = ReportActionsUtils.getOriginalMessage(action as ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_NAME>) ?? {};
+    const message = oldName && newName ? Localize.translateLocal('workspaceActions.renamedWorkspaceNameAction', {oldName, newName}) : ReportActionsUtils.getReportActionText(action);
+    return message;
+}
+
 /**
  * @param iouReportID - the report ID of the IOU report the action belongs to
  * @param type - IOUReportAction type. Can be oneOf(create, decline, cancel, pay, split)
@@ -5782,6 +5792,11 @@ function canAccessReport(report: OnyxEntry<Report>, policies: OnyxCollection<Pol
     return true;
 }
 
+// eslint-disable-next-line rulesdir/no-negated-variables
+function isReportNotFound(report: OnyxEntry<Report>): boolean {
+    return !!report?.errorFields?.notFound;
+}
+
 /**
  * Check if the report is the parent report of the currently viewed report or at least one child report has report action
  */
@@ -6233,7 +6248,7 @@ function parseReportRouteParams(route: string): ReportRouteParams {
     const pathSegments = parsingRoute.split('/');
 
     const reportIDSegment = pathSegments[1];
-    const hasRouteReportActionID = !Number.isNaN(Number(reportIDSegment));
+    const hasRouteReportActionID = !Number.isNaN(Number(pathSegments[2]));
 
     // Check for "undefined" or any other unwanted string values
     if (!reportIDSegment || reportIDSegment === 'undefined') {
@@ -7742,6 +7757,7 @@ export {
     buildParticipantsFromAccountIDs,
     buildTransactionThread,
     canAccessReport,
+    isReportNotFound,
     canAddTransaction,
     canDeleteTransaction,
     canBeAutoReimbursed,
@@ -7800,6 +7816,7 @@ export {
     getIOUReportActionMessage,
     getIOUApprovedMessage,
     getIOUForwardedMessage,
+    getWorkspaceNameUpdatedMessage,
     getIOUSubmittedMessage,
     getIcons,
     getIconsForParticipants,
diff --git a/src/libs/SearchUtils.ts b/src/libs/SearchUtils.ts
index 4d6f97b988c2..48af780eab5b 100644
--- a/src/libs/SearchUtils.ts
+++ b/src/libs/SearchUtils.ts
@@ -11,16 +11,7 @@ import type {SearchAdvancedFiltersForm} from '@src/types/form';
 import FILTER_KEYS from '@src/types/form/SearchAdvancedFiltersForm';
 import type * as OnyxTypes from '@src/types/onyx';
 import type SearchResults from '@src/types/onyx/SearchResults';
-import type {
-    ListItemDataType,
-    ListItemType,
-    SearchAccountDetails,
-    SearchDataTypes,
-    SearchPersonalDetails,
-    SearchPolicyDetails,
-    SearchReport,
-    SearchTransaction,
-} from '@src/types/onyx/SearchResults';
+import type {ListItemDataType, ListItemType, SearchDataTypes, SearchPersonalDetails, SearchReport, SearchTransaction} from '@src/types/onyx/SearchResults';
 import * as CurrencyUtils from './CurrencyUtils';
 import DateUtils from './DateUtils';
 import {translateLocal} from './Localize';
@@ -65,12 +56,12 @@ const operatorToSignMap = {
 function getTransactionItemCommonFormattedProperties(
     transactionItem: SearchTransaction,
     from: SearchPersonalDetails,
-    to: SearchAccountDetails,
+    to: SearchPersonalDetails,
 ): Pick<TransactionListItemType, 'formattedFrom' | 'formattedTo' | 'formattedTotal' | 'formattedMerchant' | 'date'> {
     const isExpenseReport = transactionItem.reportType === CONST.REPORT.TYPE.EXPENSE;
 
     const formattedFrom = from?.displayName ?? from?.login ?? '';
-    const formattedTo = to?.name ?? to?.displayName ?? to?.login ?? '';
+    const formattedTo = to?.displayName ?? to?.login ?? '';
     const formattedTotal = TransactionUtils.getAmount(transactionItem, isExpenseReport);
     const date = transactionItem?.modifiedCreated ? transactionItem.modifiedCreated : transactionItem?.created;
     const merchant = TransactionUtils.getMerchant(transactionItem);
@@ -85,23 +76,6 @@ function getTransactionItemCommonFormattedProperties(
     };
 }
 
-function isSearchDataType(type: string): type is SearchDataTypes {
-    const searchDataTypes: string[] = Object.values(CONST.SEARCH.DATA_TYPES);
-    return searchDataTypes.includes(type);
-}
-
-function getSearchType(search: OnyxTypes.SearchResults['search'] | undefined): SearchDataTypes | undefined {
-    if (!search) {
-        return undefined;
-    }
-
-    if (!isSearchDataType(search.type)) {
-        return undefined;
-    }
-
-    return search.type;
-}
-
 function getShouldShowMerchant(data: OnyxTypes.SearchResults['data']): boolean {
     return Object.values(data).some((item) => {
         const merchant = item.modifiedMerchant ? item.modifiedMerchant : item.merchant ?? '';
@@ -157,11 +131,8 @@ function getTransactionsSections(data: OnyxTypes.SearchResults['data'], metadata
     return Object.entries(data)
         .filter(([key]) => key.startsWith(ONYXKEYS.COLLECTION.TRANSACTION))
         .map(([, transactionItem]) => {
-            const isExpenseReport = transactionItem.reportType === CONST.REPORT.TYPE.EXPENSE;
             const from = data.personalDetailsList?.[transactionItem.accountID];
-            const to = isExpenseReport
-                ? (data[`${ONYXKEYS.COLLECTION.POLICY}${transactionItem.policyID}`] as SearchAccountDetails)
-                : (data.personalDetailsList?.[transactionItem.managerID] as SearchAccountDetails);
+            const to = data.personalDetailsList?.[transactionItem.managerID];
 
             const {formattedFrom, formattedTo, formattedTotal, formattedMerchant, date} = getTransactionItemCommonFormattedProperties(transactionItem, from, to);
 
@@ -184,11 +155,10 @@ function getTransactionsSections(data: OnyxTypes.SearchResults['data'], metadata
         });
 }
 
-function getIOUReportName(data: OnyxTypes.SearchResults['data'], reportItem: SearchTransaction & Record<string, SearchPersonalDetails> & SearchPolicyDetails & SearchReport) {
-    const payerPersonalDetails = data.personalDetailsList?.[reportItem.managerID] as SearchAccountDetails;
-    // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
-    const payerName = payerPersonalDetails?.name || payerPersonalDetails?.displayName || payerPersonalDetails?.login || translateLocal('common.hidden');
-    const formattedAmount = CurrencyUtils.convertToDisplayString(reportItem.total ?? 0, reportItem?.currency ?? CONST.CURRENCY.USD);
+function getIOUReportName(data: OnyxTypes.SearchResults['data'], reportItem: SearchReport) {
+    const payerPersonalDetails = data.personalDetailsList?.[reportItem.managerID ?? 0];
+    const payerName = payerPersonalDetails?.displayName ?? payerPersonalDetails?.login ?? translateLocal('common.hidden');
+    const formattedAmount = CurrencyUtils.convertToDisplayString(reportItem.total ?? 0, reportItem.currency ?? CONST.CURRENCY.USD);
     if (reportItem.action === CONST.SEARCH.ACTION_TYPES.VIEW) {
         return translateLocal('iou.payerOwesAmount', {
             payer: payerName,
@@ -217,30 +187,22 @@ function getReportSections(data: OnyxTypes.SearchResults['data'], metadata: Onyx
             const reportItem = {...data[key]};
             const reportKey = `${ONYXKEYS.COLLECTION.REPORT}${reportItem.reportID}`;
             const transactions = reportIDToTransactions[reportKey]?.transactions ?? [];
-            const isExpenseReport = reportItem.type === CONST.REPORT.TYPE.EXPENSE;
             const isIOUReport = reportItem.type === CONST.REPORT.TYPE.IOU;
 
-            const to = isExpenseReport
-                ? (data[`${ONYXKEYS.COLLECTION.POLICY}${reportItem.policyID}`] as SearchAccountDetails)
-                : (data.personalDetailsList?.[reportItem.managerID] as SearchAccountDetails);
-
             reportIDToTransactions[reportKey] = {
                 ...reportItem,
                 keyForList: reportItem.reportID,
                 from: data.personalDetailsList?.[reportItem.accountID],
-                to,
+                to: data.personalDetailsList?.[reportItem.managerID],
                 transactions,
                 reportName: isIOUReport ? getIOUReportName(data, reportItem) : reportItem.reportName,
             };
         } else if (key.startsWith(ONYXKEYS.COLLECTION.TRANSACTION)) {
             const transactionItem = {...data[key]};
-            const isExpenseReport = transactionItem.reportType === CONST.REPORT.TYPE.EXPENSE;
             const reportKey = `${ONYXKEYS.COLLECTION.REPORT}${transactionItem.reportID}`;
 
             const from = data.personalDetailsList?.[transactionItem.accountID];
-            const to = isExpenseReport
-                ? (data[`${ONYXKEYS.COLLECTION.POLICY}${transactionItem.policyID}`] as SearchAccountDetails)
-                : (data.personalDetailsList?.[transactionItem.managerID] as SearchAccountDetails);
+            const to = data.personalDetailsList?.[transactionItem.managerID];
 
             const {formattedFrom, formattedTo, formattedTotal, formattedMerchant, date} = getTransactionItemCommonFormattedProperties(transactionItem, from, to);
 
@@ -271,45 +233,16 @@ function getReportSections(data: OnyxTypes.SearchResults['data'], metadata: Onyx
     return Object.values(reportIDToTransactions);
 }
 
-function getListItem(type: SearchDataTypes, status: SearchStatus): ListItemType<typeof status> {
-    switch (type) {
-        case CONST.SEARCH.DATA_TYPES.TRANSACTION:
-        case CONST.SEARCH.DATA_TYPES.EXPENSE:
-        case CONST.SEARCH.DATA_TYPES.REPORT:
-        case CONST.SEARCH.DATA_TYPES.INVOICE:
-        case CONST.SEARCH.DATA_TYPES.TRIP:
-            return status === CONST.SEARCH.STATUS.EXPENSE.ALL ? TransactionListItem : ReportListItem;
-        default:
-            return TransactionListItem;
-    }
+function getListItem(status: SearchStatus): ListItemType<typeof status> {
+    return status === CONST.SEARCH.STATUS.EXPENSE.ALL ? TransactionListItem : ReportListItem;
 }
 
-function getSections(type: SearchDataTypes, status: SearchStatus, data: OnyxTypes.SearchResults['data'], metadata: OnyxTypes.SearchResults['search']) {
-    switch (type) {
-        case CONST.SEARCH.DATA_TYPES.TRANSACTION:
-        case CONST.SEARCH.DATA_TYPES.EXPENSE:
-        case CONST.SEARCH.DATA_TYPES.REPORT:
-        case CONST.SEARCH.DATA_TYPES.INVOICE:
-        case CONST.SEARCH.DATA_TYPES.TRIP:
-            return status === CONST.SEARCH.STATUS.EXPENSE.ALL ? getTransactionsSections(data, metadata) : getReportSections(data, metadata);
-        default:
-            return getTransactionsSections(data, metadata);
-    }
+function getSections(status: SearchStatus, data: OnyxTypes.SearchResults['data'], metadata: OnyxTypes.SearchResults['search']) {
+    return status === CONST.SEARCH.STATUS.EXPENSE.ALL ? getTransactionsSections(data, metadata) : getReportSections(data, metadata);
 }
 
-function getSortedSections(type: SearchDataTypes, status: SearchStatus, data: ListItemDataType<typeof status>, sortBy?: SearchColumnType, sortOrder?: SortOrder) {
-    switch (type) {
-        case CONST.SEARCH.DATA_TYPES.TRANSACTION:
-        case CONST.SEARCH.DATA_TYPES.EXPENSE:
-        case CONST.SEARCH.DATA_TYPES.REPORT:
-        case CONST.SEARCH.DATA_TYPES.INVOICE:
-        case CONST.SEARCH.DATA_TYPES.TRIP:
-            return status === CONST.SEARCH.STATUS.EXPENSE.ALL
-                ? getSortedTransactionData(data as TransactionListItemType[], sortBy, sortOrder)
-                : getSortedReportData(data as ReportListItemType[]);
-        default:
-            return getSortedTransactionData(data as TransactionListItemType[], sortBy, sortOrder);
-    }
+function getSortedSections(status: SearchStatus, data: ListItemDataType<typeof status>, sortBy?: SearchColumnType, sortOrder?: SortOrder) {
+    return status === CONST.SEARCH.STATUS.EXPENSE.ALL ? getSortedTransactionData(data as TransactionListItemType[], sortBy, sortOrder) : getSortedReportData(data as ReportListItemType[]);
 }
 
 function getQueryHash(query: string, policyID?: string, sortBy?: string, sortOrder?: string): number {
@@ -592,6 +525,10 @@ function getSearchHeaderTitle(queryJSON: SearchQueryJSON) {
     return title;
 }
 
+function buildCannedSearchQuery(type: SearchDataTypes = CONST.SEARCH.DATA_TYPES.EXPENSE, status: SearchStatus = CONST.SEARCH.STATUS.EXPENSE.ALL): SearchQueryString {
+    return normalizeQuery(`type:${type} status:${status}`);
+}
+
 export {
     buildQueryStringFromFilters,
     buildSearchQueryJSON,
@@ -601,7 +538,6 @@ export {
     getListItem,
     getQueryHash,
     getSearchHeaderTitle,
-    getSearchType,
     getSections,
     getShouldShowMerchant,
     getSortedSections,
@@ -610,5 +546,6 @@ export {
     isTransactionListItemType,
     normalizeQuery,
     shouldShowYear,
+    buildCannedSearchQuery,
     getExpenseTypeTranslationKey,
 };
diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts
index 9ce8feb26868..dedd608ce77d 100644
--- a/src/libs/SidebarUtils.ts
+++ b/src/libs/SidebarUtils.ts
@@ -395,8 +395,7 @@ function getOptionData({
         const lastActionName = lastAction?.actionName ?? report.lastActionType;
 
         if (ReportActionsUtils.isRenamedAction(lastAction)) {
-            const newName = ReportActionsUtils.getOriginalMessage(lastAction)?.newName ?? '';
-            result.alternateText = Localize.translate(preferredLocale, 'newRoomPage.roomRenamedTo', {newName});
+            result.alternateText = ReportActionsUtils.getRenamedAction(lastAction);
         } else if (ReportActionsUtils.isTaskAction(lastAction)) {
             result.alternateText = ReportUtils.formatReportLastMessageText(TaskUtils.getTaskReportActionMessage(lastAction).text);
         } else if (ReportActionsUtils.isInviteOrRemovedAction(lastAction)) {
@@ -420,12 +419,22 @@ function getOptionData({
             }
         } else if (ReportActionsUtils.isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.ROOM_CHANGE_LOG.UPDATE_ROOM_DESCRIPTION)) {
             result.alternateText = `${lastActorDisplayName} ${ReportActionsUtils.getUpdateRoomDescriptionMessage(lastAction)}`;
+        } else if (ReportActionsUtils.isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_NAME)) {
+            result.alternateText = ReportUtils.getWorkspaceNameUpdatedMessage(lastAction);
         } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.LEAVE_POLICY) {
             result.alternateText = Localize.translateLocal('workspace.invite.leftWorkspace');
         } else if (lastAction?.actionName !== CONST.REPORT.ACTIONS.TYPE.REPORT_PREVIEW && lastActorDisplayName && lastMessageTextFromReport) {
             result.alternateText = ReportUtils.formatReportLastMessageText(Parser.htmlToText(`${lastActorDisplayName}: ${lastMessageText}`));
         } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_TAG) {
             result.alternateText = PolicyUtils.getCleanedTagName(ReportActionsUtils.getReportActionMessage(lastAction)?.text ?? '');
+        } else if (lastAction && ReportActionsUtils.isOldDotReportAction(lastAction)) {
+            result.alternateText = ReportActionsUtils.getMessageOfOldDotReportAction(lastAction);
+        } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_EMPLOYEE) {
+            result.alternateText = ReportActionsUtils.getPolicyChangeLogAddEmployeeMessage(lastAction);
+        } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_EMPLOYEE) {
+            result.alternateText = ReportActionsUtils.getPolicyChangeLogChangeRoleMessage(lastAction);
+        } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_EMPLOYEE) {
+            result.alternateText = ReportActionsUtils.getPolicyChangeLogDeleteMemberMessage(lastAction);
         } else {
             result.alternateText =
                 lastMessageTextFromReport.length > 0
diff --git a/src/libs/TransactionUtils/index.ts b/src/libs/TransactionUtils/index.ts
index a865b78a9bbf..3aaf4476eb0b 100644
--- a/src/libs/TransactionUtils/index.ts
+++ b/src/libs/TransactionUtils/index.ts
@@ -393,7 +393,7 @@ function getOriginalAmount(transaction: Transaction): number {
 /**
  * Verify if the transaction is expecting the distance to be calculated on the server
  */
-function isFetchingWaypointsFromServer(transaction: OnyxEntry<Transaction>): boolean {
+function isFetchingWaypointsFromServer(transaction: OnyxInputOrEntry<Transaction>): boolean {
     return !!transaction?.pendingFields?.waypoints;
 }
 
@@ -753,7 +753,9 @@ function calculateAmountForUpdatedWaypointOrRate(
     policy: OnyxInputOrEntry<Policy>,
     isFromExpenseReport: boolean,
 ) {
-    if (isEmptyObject(transactionChanges?.routes?.route0?.geometry) && isEmptyObject(transactionChanges.customUnitRateID)) {
+    const hasModifiedRouteWithPendingWaypoints = !isEmptyObject(transactionChanges.waypoints) && isEmptyObject(transactionChanges?.routes?.route0?.geometry);
+    const hasModifiedRateWithPendingWaypoints = !!transactionChanges?.customUnitRateID && isFetchingWaypointsFromServer(transaction);
+    if (hasModifiedRouteWithPendingWaypoints || hasModifiedRateWithPendingWaypoints) {
         return {
             amount: CONST.IOU.DEFAULT_AMOUNT,
             modifiedAmount: CONST.IOU.DEFAULT_AMOUNT,
@@ -954,11 +956,6 @@ function compareDuplicateTransactionFields(transactionID: string): {keep: Partia
         return items.every((item) => lodashIsEqual(item?.comment, firstTransaction?.comment));
     }
 
-    // Helper function to check if all comments exist
-    function doAllCommentsExist(items: Array<OnyxEntry<Transaction>>, firstTransaction: OnyxEntry<Transaction>) {
-        return items.every((item) => !!item?.comment?.comment === !!firstTransaction?.comment?.comment);
-    }
-
     // Helper function to check if all fields are equal for a given key
     function areAllFieldsEqual(items: Array<OnyxEntry<Transaction>>, keyExtractor: (item: OnyxEntry<Transaction>) => string) {
         const firstTransaction = transactions[0];
@@ -981,10 +978,9 @@ function compareDuplicateTransactionFields(transactionID: string): {keep: Partia
 
             if (fieldName === 'description') {
                 const allCommentsAreEqual = areAllCommentsEqual(transactions, firstTransaction);
-                const allCommentsExist = doAllCommentsExist(transactions, firstTransaction);
                 const allCommentsAreEmpty = isFirstTransactionCommentEmptyObject && transactions.every((item) => item?.comment === undefined);
 
-                if (allCommentsAreEqual || allCommentsExist || allCommentsAreEmpty) {
+                if (allCommentsAreEqual || allCommentsAreEmpty) {
                     keep[fieldName] = firstTransaction?.comment?.comment ?? firstTransaction?.comment;
                 } else {
                     processChanges(fieldName, transactions, keys);
diff --git a/src/libs/actions/Card.ts b/src/libs/actions/Card.ts
index eaebb8fb318b..747df5d3998e 100644
--- a/src/libs/actions/Card.ts
+++ b/src/libs/actions/Card.ts
@@ -4,11 +4,13 @@ import type {ValueOf} from 'type-fest';
 import * as API from '@libs/API';
 import type {
     ActivatePhysicalExpensifyCardParams,
+    OpenCardDetailsPageParams,
     ReportVirtualExpensifyCardFraudParams,
     RequestReplacementExpensifyCardParams,
     RevealExpensifyCardDetailsParams,
     StartIssueNewCardFlowParams,
     UpdateExpensifyCardLimitParams,
+    UpdateExpensifyCardLimitTypeParams,
     UpdateExpensifyCardTitleParams,
 } from '@libs/API/parameters';
 import {READ_COMMANDS, SIDE_EFFECT_REQUEST_COMMANDS, WRITE_COMMANDS} from '@libs/API/types';
@@ -16,7 +18,8 @@ import * as ErrorUtils from '@libs/ErrorUtils';
 import * as NetworkStore from '@libs/Network/NetworkStore';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
-import type {ExpensifyCardDetails, IssueNewCardData, IssueNewCardStep} from '@src/types/onyx/Card';
+import type {CardLimitType, ExpensifyCardDetails, IssueNewCardData, IssueNewCardStep} from '@src/types/onyx/Card';
+import type {ConnectionName} from '@src/types/onyx/Policy';
 
 type ReplacementReason = 'damaged' | 'stolen';
 
@@ -314,7 +317,7 @@ function clearIssueNewCardFlow() {
     });
 }
 
-function updateExpensifyCardLimit(workspaceAccountID: number, cardID: number, newLimit: number, oldLimit?: number) {
+function updateExpensifyCardLimit(workspaceAccountID: number, cardID: number, newLimit: number, newAvailableSpend: number, oldLimit?: number, oldAvailableSpend?: number) {
     const authToken = NetworkStore.getAuthToken();
 
     if (!authToken) {
@@ -327,6 +330,7 @@ function updateExpensifyCardLimit(workspaceAccountID: number, cardID: number, ne
             key: `${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`,
             value: {
                 [cardID]: {
+                    availableSpend: newAvailableSpend,
                     nameValuePairs: {
                         unapprovedExpenseLimit: newLimit,
                     },
@@ -355,6 +359,7 @@ function updateExpensifyCardLimit(workspaceAccountID: number, cardID: number, ne
             key: `${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`,
             value: {
                 [cardID]: {
+                    availableSpend: oldAvailableSpend,
                     nameValuePairs: {
                         unapprovedExpenseLimit: oldLimit,
                     },
@@ -434,6 +439,66 @@ function updateExpensifyCardTitle(workspaceAccountID: number, cardID: number, ne
     API.write(WRITE_COMMANDS.UPDATE_EXPENSIFY_CARD_TITLE, parameters, {optimisticData, successData, failureData});
 }
 
+function updateExpensifyCardLimitType(workspaceAccountID: number, cardID: number, newLimitType: CardLimitType, oldLimitType?: CardLimitType) {
+    const authToken = NetworkStore.getAuthToken();
+
+    if (!authToken) {
+        return;
+    }
+
+    const optimisticData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`,
+            value: {
+                [cardID]: {
+                    nameValuePairs: {
+                        limitType: newLimitType,
+                    },
+                    isLoading: true,
+                    errors: null,
+                },
+            },
+        },
+    ];
+
+    const successData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`,
+            value: {
+                [cardID]: {
+                    isLoading: false,
+                },
+            },
+        },
+    ];
+
+    const failureData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`,
+            value: {
+                [cardID]: {
+                    nameValuePairs: {
+                        limitType: oldLimitType,
+                    },
+                    isLoading: false,
+                    errors: ErrorUtils.getMicroSecondOnyxErrorWithTranslationKey('common.genericErrorMessage'),
+                },
+            },
+        },
+    ];
+
+    const parameters: UpdateExpensifyCardLimitTypeParams = {
+        authToken,
+        cardID,
+        limitType: newLimitType,
+    };
+
+    API.write(WRITE_COMMANDS.UPDATE_EXPENSIFY_CARD_LIMIT_TYPE, parameters, {optimisticData, successData, failureData});
+}
+
 function startIssueNewCardFlow(policyID: string) {
     const parameters: StartIssueNewCardFlowParams = {
         policyID,
@@ -479,6 +544,79 @@ function issueExpensifyCard(policyID: string, feedCountry: string, data?: IssueN
     API.write(WRITE_COMMANDS.CREATE_ADMIN_ISSUED_VIRTUAL_CARD, parameters);
 }
 
+function openCardDetailsPage(cardID: number) {
+    const authToken = NetworkStore.getAuthToken();
+
+    if (!authToken) {
+        return;
+    }
+
+    const parameters: OpenCardDetailsPageParams = {
+        authToken,
+        cardID,
+    };
+
+    API.read(READ_COMMANDS.OPEN_CARD_DETAILS_PAGE, parameters);
+}
+
+function toggleContinuousReconciliation(workspaceAccountID: number, shouldUseContinuousReconciliation: boolean, connectionName: ConnectionName, oldConnectionName?: ConnectionName) {
+    const parameters = shouldUseContinuousReconciliation
+        ? {
+              workspaceAccountID,
+              shouldUseContinuousReconciliation,
+              expensifyCardContinuousReconciliationConnection: connectionName,
+          }
+        : {
+              workspaceAccountID,
+              shouldUseContinuousReconciliation,
+          };
+
+    const optimisticData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`,
+            value: shouldUseContinuousReconciliation,
+        },
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`,
+            value: connectionName,
+        },
+    ];
+
+    const successData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`,
+            value: shouldUseContinuousReconciliation,
+        },
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`,
+            value: connectionName,
+        },
+    ];
+
+    const failureData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`,
+            value: !shouldUseContinuousReconciliation,
+        },
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`,
+            value: oldConnectionName ?? null,
+        },
+    ];
+
+    API.write(WRITE_COMMANDS.TOGGLE_CARD_CONTINUOUS_RECONCILIATION, parameters, {
+        optimisticData,
+        successData,
+        failureData,
+    });
+}
+
 export {
     requestReplacementExpensifyCard,
     activatePhysicalExpensifyCard,
@@ -494,5 +632,8 @@ export {
     startIssueNewCardFlow,
     configureExpensifyCardsForPolicy,
     issueExpensifyCard,
+    openCardDetailsPage,
+    toggleContinuousReconciliation,
+    updateExpensifyCardLimitType,
 };
 export type {ReplacementReason};
diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts
index 89de7a76acf8..e84a14836efd 100644
--- a/src/libs/actions/IOU.ts
+++ b/src/libs/actions/IOU.ts
@@ -269,10 +269,10 @@ Onyx.connect({
     },
 });
 
-let primaryPolicyID: OnyxEntry<string>;
+let activePolicyID: OnyxEntry<string>;
 Onyx.connect({
     key: ONYXKEYS.NVP_ACTIVE_POLICY_ID,
-    callback: (value) => (primaryPolicyID = value),
+    callback: (value) => (activePolicyID = value),
 });
 
 /**
@@ -2524,11 +2524,13 @@ function getUpdateMoneyRequestParams(
     }
 
     // Step 3: Build the modified expense report actions
-    // We don't create a modified report action if we're updating the waypoints,
-    // since there isn't actually any optimistic data we can create for them and the report action is created on the server
-    // with the response from the MapBox API
+    // We don't create a modified report action if:
+    // - we're updating the waypoints
+    // - we're updating the distance rate while the waypoints are still pending
+    // In these cases, there isn't a valid optimistic mileage data we can use,
+    // and the report action is created on the server with the distance-related response from the MapBox API
     const updatedReportAction = ReportUtils.buildOptimisticModifiedExpenseReportAction(transactionThread, transaction, transactionChanges, isFromExpenseReport, policy);
-    if (!hasPendingWaypoints) {
+    if (!hasPendingWaypoints && !(hasModifiedDistanceRate && TransactionUtils.isFetchingWaypointsFromServer(transaction))) {
         params.reportActionID = updatedReportAction.reportActionID;
 
         optimisticData.push({
@@ -2806,7 +2808,7 @@ function getUpdateTrackExpenseParams(
     if (transaction && updatedTransaction && (hasPendingWaypoints || hasModifiedDistanceRate)) {
         updatedTransaction = {
             ...updatedTransaction,
-            ...TransactionUtils.calculateAmountForUpdatedWaypointOrRate(transaction, transactionChanges, policy, ReportUtils.isExpenseReport(transactionThread)),
+            ...TransactionUtils.calculateAmountForUpdatedWaypointOrRate(transaction, transactionChanges, policy, false),
         };
 
         // Delete the draft transaction when editing waypoints when the server responds successfully and there are no errors
@@ -2830,11 +2832,13 @@ function getUpdateTrackExpenseParams(
     }
 
     // Step 3: Build the modified expense report actions
-    // We don't create a modified report action if we're updating the waypoints,
-    // since there isn't actually any optimistic data we can create for them and the report action is created on the server
-    // with the response from the MapBox API
+    // We don't create a modified report action if:
+    // - we're updating the waypoints
+    // - we're updating the distance rate while the waypoints are still pending
+    // In these cases, there isn't a valid optimistic mileage data we can use,
+    // and the report action is created on the server with the distance-related response from the MapBox API
     const updatedReportAction = ReportUtils.buildOptimisticModifiedExpenseReportAction(transactionThread, transaction, transactionChanges, false, policy);
-    if (!hasPendingWaypoints) {
+    if (!hasPendingWaypoints && !(hasModifiedDistanceRate && TransactionUtils.isFetchingWaypointsFromServer(transaction))) {
         params.reportActionID = updatedReportAction.reportActionID;
 
         optimisticData.push({
@@ -3144,9 +3148,9 @@ function updateMoneyRequestDistanceRate(
     };
     const allReports = ReportConnection.getAllReports();
     const transactionThreadReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${transactionThreadReportID}`] ?? null;
-
+    const parentReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${transactionThreadReport?.parentReportID}`] ?? null;
     let data: UpdateMoneyRequestData;
-    if (ReportUtils.isTrackExpenseReport(transactionThreadReport)) {
+    if (ReportUtils.isTrackExpenseReport(transactionThreadReport) && ReportUtils.isSelfDM(parentReport)) {
         data = getUpdateTrackExpenseParams(transactionID, transactionThreadReportID, transactionChanges, true, policy);
     } else {
         data = getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, transactionChanges, policy, policyTagList, policyCategories, true);
@@ -6549,8 +6553,8 @@ function getPayMoneyRequestParams(
     const isInvoiceReport = ReportUtils.isInvoiceReport(iouReport);
     let chatReport = initialChatReport;
 
-    if (ReportUtils.isIndividualInvoiceRoom(chatReport) && payAsBusiness && primaryPolicyID) {
-        const existingB2BInvoiceRoom = ReportUtils.getInvoiceChatByParticipants(chatReport.policyID ?? '', primaryPolicyID);
+    if (ReportUtils.isIndividualInvoiceRoom(chatReport) && payAsBusiness && activePolicyID) {
+        const existingB2BInvoiceRoom = ReportUtils.getInvoiceChatByParticipants(chatReport.policyID ?? '', activePolicyID);
         if (existingB2BInvoiceRoom) {
             chatReport = existingB2BInvoiceRoom;
         }
@@ -6596,10 +6600,10 @@ function getPayMoneyRequestParams(
         lastMessageText: ReportActionsUtils.getReportActionText(optimisticIOUReportAction),
         lastMessageHtml: ReportActionsUtils.getReportActionHtml(optimisticIOUReportAction),
     };
-    if (ReportUtils.isIndividualInvoiceRoom(chatReport) && payAsBusiness && primaryPolicyID) {
+    if (ReportUtils.isIndividualInvoiceRoom(chatReport) && payAsBusiness && activePolicyID) {
         optimisticChatReport.invoiceReceiver = {
             type: CONST.REPORT.INVOICE_RECEIVER_TYPE.BUSINESS,
-            policyID: primaryPolicyID,
+            policyID: activePolicyID,
         };
     }
 
diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts
index d914e47e5204..d0913a2b0ac1 100644
--- a/src/libs/actions/Policy/Policy.ts
+++ b/src/libs/actions/Policy/Policy.ts
@@ -450,7 +450,7 @@ function setWorkspaceAutoReportingFrequency(policyID: string, frequency: ValueOf
 }
 
 function setWorkspaceAutoReportingMonthlyOffset(policyID: string, autoReportingOffset: number | ValueOf<typeof CONST.POLICY.AUTO_REPORTING_OFFSET>) {
-    const value = JSON.stringify({autoReportingOffset: autoReportingOffset.toString()});
+    const value = JSON.stringify({autoReportingOffset});
     const policy = getPolicy(policyID);
 
     const optimisticData: OnyxUpdate[] = [
@@ -1685,6 +1685,7 @@ function buildPolicyData(policyOwnerEmail = '', makeMeAdmin = false, policyName
                     addWorkspaceRoom: null,
                 },
                 pendingAction: null,
+                isOptimisticReport: false,
             },
         },
         {
@@ -1705,6 +1706,7 @@ function buildPolicyData(policyOwnerEmail = '', makeMeAdmin = false, policyName
                 },
                 pendingAction: null,
                 pendingChatMembers: [],
+                isOptimisticReport: false,
             },
         },
         {
@@ -1724,6 +1726,7 @@ function buildPolicyData(policyOwnerEmail = '', makeMeAdmin = false, policyName
                     addWorkspaceRoom: null,
                 },
                 pendingAction: null,
+                isOptimisticReport: false,
             },
         },
         {
diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts
index 1ab622adcdc7..2611dae20d7e 100644
--- a/src/libs/actions/Report.ts
+++ b/src/libs/actions/Report.ts
@@ -2304,7 +2304,9 @@ function navigateToConciergeChatAndDeleteReport(reportID: string, shouldPopToTop
     }
     Navigation.goBack(undefined, undefined, shouldPopToTop);
     navigateToConciergeChat();
-    deleteReport(reportID, shouldDeleteChildReports);
+    InteractionManager.runAfterInteractions(() => {
+        deleteReport(reportID, shouldDeleteChildReports);
+    });
 }
 
 /**
diff --git a/src/libs/actions/Task.ts b/src/libs/actions/Task.ts
index 84f00f898966..235fd45c3f60 100644
--- a/src/libs/actions/Task.ts
+++ b/src/libs/actions/Task.ts
@@ -839,6 +839,17 @@ function clearOutTaskInfoAndNavigate(reportID?: string, chatReport?: OnyxEntry<O
     Navigation.navigate(ROUTES.NEW_TASK_DETAILS);
 }
 
+/**
+ * Start out create task action quick action step
+ */
+function startOutCreateTaskQuickAction(reportID: string, targetAccountID: number) {
+    // The second parameter of clearOutTaskInfoAndNavigate is the chat report or DM report
+    // between the user and the person to whom the task is assigned.
+    // Since chatReportID isn't stored in NVP_QUICK_ACTION_GLOBAL_CREATE, we set
+    // it to undefined. This will make setAssigneeValue to search for the correct report.
+    clearOutTaskInfoAndNavigate(reportID, undefined, targetAccountID, true);
+}
+
 /**
  * Get the assignee data
  */
@@ -1162,6 +1173,7 @@ export {
     reopenTask,
     completeTask,
     clearOutTaskInfoAndNavigate,
+    startOutCreateTaskQuickAction,
     getAssignee,
     getShareDestination,
     deleteTask,
diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts
index c47c57d57466..70a66c709718 100644
--- a/src/libs/actions/connections/index.ts
+++ b/src/libs/actions/connections/index.ts
@@ -372,7 +372,10 @@ function getSynchronizationErrorMessage(policy: OnyxEntry<Policy>, connectionNam
     const syncError = Localize.translateLocal('workspace.accounting.syncError', connectionName);
     // NetSuite does not use the conventional lastSync object, so we need to check for lastErrorSyncDate
     if (connectionName === CONST.POLICY.CONNECTIONS.NAME.NETSUITE) {
-        if (!isSyncInProgress && !!policy?.connections?.[CONST.POLICY.CONNECTIONS.NAME.NETSUITE].lastErrorSyncDate) {
+        if (
+            !isSyncInProgress &&
+            (!!policy?.connections?.[CONST.POLICY.CONNECTIONS.NAME.NETSUITE].lastErrorSyncDate || policy?.connections?.[CONST.POLICY.CONNECTIONS.NAME.NETSUITE]?.verified === false)
+        ) {
             return syncError;
         }
         return;
diff --git a/src/pages/EnablePayments/AddBankAccount/SetupMethod.tsx b/src/pages/EnablePayments/AddBankAccount/SetupMethod.tsx
index 713c21ebc867..ed06d1aa1ed6 100644
--- a/src/pages/EnablePayments/AddBankAccount/SetupMethod.tsx
+++ b/src/pages/EnablePayments/AddBankAccount/SetupMethod.tsx
@@ -12,7 +12,7 @@ import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
 import getPlaidDesktopMessage from '@libs/getPlaidDesktopMessage';
 import * as BankAccounts from '@userActions/BankAccounts';
-import CONFIG from '@src/CONFIG';
+import * as Link from '@userActions/Link';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type {User} from '@src/types/onyx';
@@ -28,7 +28,6 @@ type SetupMethodOnyxProps = {
 type SetupMethodProps = SetupMethodOnyxProps;
 
 const plaidDesktopMessage = getPlaidDesktopMessage();
-const enablePayments = `${CONFIG.EXPENSIFY.NEW_EXPENSIFY_URL}${ROUTES.SETTINGS_ENABLE_PAYMENTS}`;
 
 function SetupMethod({isPlaidDisabled, user}: SetupMethodProps) {
     const styles = useThemeStyles();
@@ -46,7 +45,7 @@ function SetupMethod({isPlaidDisabled, user}: SetupMethodProps) {
                 </View>
                 {!!plaidDesktopMessage && (
                     <View style={[styles.mv3, styles.flexRow, styles.justifyContentBetween]}>
-                        <TextLink href={enablePayments}>{translate(plaidDesktopMessage)}</TextLink>
+                        <TextLink onPress={() => Link.openExternalLinkWithToken(ROUTES.SETTINGS_ENABLE_PAYMENTS)}>{translate(plaidDesktopMessage)}</TextLink>
                     </View>
                 )}
                 <Button
diff --git a/src/pages/GroupChatNameEditPage.tsx b/src/pages/GroupChatNameEditPage.tsx
index d1cfa8df6c9d..425e8a421cb2 100644
--- a/src/pages/GroupChatNameEditPage.tsx
+++ b/src/pages/GroupChatNameEditPage.tsx
@@ -44,11 +44,9 @@ function GroupChatNameEditPage({groupChatDraft, report}: GroupChatNameEditPagePr
     const {translate} = useLocalize();
     const {inputCallbackRef} = useAutoFocusInput();
 
-    // We will try to get the chatName from the report or draft depending on what flow we are in
-    const draftParticipantAccountIDs = useMemo(() => (groupChatDraft?.participants ?? []).map((participant) => participant.accountID), [groupChatDraft?.participants]);
     const existingReportName = useMemo(
-        () => (report ? ReportUtils.getGroupChatName(undefined, false, report) : ReportUtils.getGroupChatName(draftParticipantAccountIDs)),
-        [draftParticipantAccountIDs, report],
+        () => (report ? ReportUtils.getGroupChatName(undefined, false, report) : ReportUtils.getGroupChatName(groupChatDraft?.participants)),
+        [groupChatDraft?.participants, report],
     );
     // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
     const currentChatName = reportID ? existingReportName : groupChatDraft?.reportName || existingReportName;
diff --git a/src/pages/NewChatConfirmPage.tsx b/src/pages/NewChatConfirmPage.tsx
index f72850c8f7bd..d6b199def243 100644
--- a/src/pages/NewChatConfirmPage.tsx
+++ b/src/pages/NewChatConfirmPage.tsx
@@ -50,7 +50,6 @@ function NewChatConfirmPage({newGroupDraft, allPersonalDetails}: NewChatConfirmP
     const {translate} = useLocalize();
     const styles = useThemeStyles();
     const personalData = useCurrentUserPersonalDetails();
-    const participantAccountIDs = (newGroupDraft?.participants ?? []).map((participant) => participant.accountID);
     const selectedOptions = useMemo((): Participant[] => {
         if (!newGroupDraft?.participants) {
             return [];
@@ -61,7 +60,7 @@ function NewChatConfirmPage({newGroupDraft, allPersonalDetails}: NewChatConfirmP
         return options;
     }, [allPersonalDetails, newGroupDraft?.participants]);
 
-    const groupName = newGroupDraft?.reportName ? newGroupDraft?.reportName : ReportUtils.getGroupChatName(participantAccountIDs ?? []);
+    const groupName = newGroupDraft?.reportName ? newGroupDraft?.reportName : ReportUtils.getGroupChatName(newGroupDraft?.participants);
     const sections: ListItem[] = useMemo(
         () =>
             selectedOptions
diff --git a/src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx b/src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx
index e9d0887bdac7..a9c89705d913 100644
--- a/src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx
+++ b/src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx
@@ -1,12 +1,10 @@
 import {useIsFocused} from '@react-navigation/native';
-import React, {useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react';
+import React, {useCallback, useImperativeHandle, useRef} from 'react';
 import {View} from 'react-native';
 import {ScrollView} from 'react-native-gesture-handler';
 import {useOnyx} from 'react-native-onyx';
-import FormAlertWithSubmitButton from '@components/FormAlertWithSubmitButton';
+import FormHelpMessage from '@components/FormHelpMessage';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
-import Icon from '@components/Icon';
-import * as Expensicons from '@components/Icon/Expensicons';
 import * as Illustrations from '@components/Icon/Illustrations';
 import type {MenuItemProps} from '@components/MenuItem';
 import MenuItemList from '@components/MenuItemList';
@@ -24,7 +22,6 @@ import OnboardingRefManager from '@libs/OnboardingRefManager';
 import type {TOnboardingRef} from '@libs/OnboardingRefManager';
 import variables from '@styles/variables';
 import * as Welcome from '@userActions/Welcome';
-import type {OnboardingPurposeType} from '@src/CONST';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
@@ -43,51 +40,17 @@ function BaseOnboardingPurpose({shouldUseNativeStyles, shouldEnableMaxHeight, ro
     const styles = useThemeStyles();
     const {translate} = useLocalize();
     const {isMediumOrLargerScreenWidth} = useOnboardingLayout();
-    const [selectedPurpose, setSelectedPurpose] = useState<OnboardingPurposeType | undefined>(undefined);
     const {windowHeight} = useWindowDimensions();
     const {isSmallScreenWidth} = useResponsiveLayout();
 
     const theme = useTheme();
-    const [onboardingPurposeSelected, onboardingPurposeSelectedResult] = useOnyx(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED);
     const [onboardingErrorMessage, onboardingErrorMessageResult] = useOnyx(ONYXKEYS.ONBOARDING_ERROR_MESSAGE);
 
-    const PurposeFooterInstance = <OfflineIndicator />;
-
-    useEffect(() => {
-        setSelectedPurpose(onboardingPurposeSelected ?? undefined);
-    }, [onboardingPurposeSelected]);
-
     const maxHeight = shouldEnableMaxHeight ? windowHeight : undefined;
-
     const paddingHorizontal = isMediumOrLargerScreenWidth ? styles.ph8 : styles.ph5;
 
-    const selectedCheckboxIcon = useMemo(
-        () => (
-            <View style={[styles.popoverMenuIcon, styles.pointerEventsAuto]}>
-                <Icon
-                    src={Expensicons.Checkmark}
-                    fill={theme.success}
-                />
-            </View>
-        ),
-        [styles.pointerEventsAuto, styles.popoverMenuIcon, theme.success],
-    );
-
-    const saveAndNavigate = useCallback(() => {
-        if (selectedPurpose === undefined) {
-            return;
-        }
-
-        if (selectedPurpose === CONST.ONBOARDING_CHOICES.MANAGE_TEAM) {
-            Navigation.navigate(ROUTES.ONBOARDING_WORK.getRoute(route.params?.backTo));
-            return;
-        }
-        Navigation.navigate(ROUTES.ONBOARDING_PERSONAL_DETAILS.getRoute(route.params?.backTo));
-    }, [selectedPurpose, route]);
-
     const menuItems: MenuItemProps[] = Object.values(CONST.ONBOARDING_CHOICES).map((choice) => {
         const translationKey = `onboarding.purpose.${choice}` as const;
-        const isSelected = selectedPurpose === choice;
         return {
             key: translationKey,
             title: translate(translationKey),
@@ -96,32 +59,31 @@ function BaseOnboardingPurpose({shouldUseNativeStyles, shouldEnableMaxHeight, ro
             iconWidth: variables.menuIconSize,
             iconHeight: variables.menuIconSize,
             iconStyles: [styles.mh3],
-            wrapperStyle: [styles.purposeMenuItem, isSelected && styles.purposeMenuItemSelected],
+            wrapperStyle: [styles.purposeMenuItem],
             hoverAndPressStyle: [styles.purposeMenuItemSelected],
-            rightComponent: selectedCheckboxIcon,
-            shouldShowRightComponent: isSelected,
             numberOfLinesTitle: 0,
             onPress: () => {
                 Welcome.setOnboardingPurposeSelected(choice);
                 Welcome.setOnboardingErrorMessage('');
+
+                if (choice === CONST.ONBOARDING_CHOICES.MANAGE_TEAM) {
+                    Navigation.navigate(ROUTES.ONBOARDING_WORK.getRoute(route.params?.backTo));
+                    return;
+                }
+                Navigation.navigate(ROUTES.ONBOARDING_PERSONAL_DETAILS.getRoute(route.params?.backTo));
             },
-            focused: isSelected,
         };
     });
     const isFocused = useIsFocused();
 
     const handleOuterClick = useCallback(() => {
-        if (!selectedPurpose) {
-            Welcome.setOnboardingErrorMessage(translate('onboarding.purpose.errorSelection'));
-        } else {
-            Welcome.setOnboardingErrorMessage(translate('onboarding.purpose.errorContinue'));
-        }
-    }, [selectedPurpose, translate]);
+        Welcome.setOnboardingErrorMessage(translate('onboarding.purpose.errorSelection'));
+    }, [translate]);
 
     const onboardingLocalRef = useRef<TOnboardingRef>(null);
     useImperativeHandle(isFocused ? OnboardingRefManager.ref : onboardingLocalRef, () => ({handleOuterClick}), [handleOuterClick]);
 
-    if (isLoadingOnyxValue(onboardingPurposeSelectedResult, onboardingErrorMessageResult)) {
+    if (isLoadingOnyxValue(onboardingErrorMessageResult)) {
         return null;
     }
     return (
@@ -146,22 +108,10 @@ function BaseOnboardingPurpose({shouldUseNativeStyles, shouldEnableMaxHeight, ro
                             />
                         </View>
                     </ScrollView>
-                    <FormAlertWithSubmitButton
-                        enabledWhenOffline
-                        footerContent={isSmallScreenWidth && PurposeFooterInstance}
-                        buttonText={translate('common.continue')}
-                        onSubmit={() => {
-                            if (!selectedPurpose) {
-                                Welcome.setOnboardingErrorMessage(translate('onboarding.purpose.errorSelection'));
-                                return;
-                            }
-                            Welcome.setOnboardingErrorMessage('');
-                            saveAndNavigate();
-                        }}
-                        message={onboardingErrorMessage}
-                        isAlertVisible={!!onboardingErrorMessage}
-                        containerStyles={[styles.w100, styles.mb5, styles.mh0, paddingHorizontal]}
-                    />
+                    <View style={[styles.w100, styles.mb5, styles.mh0, paddingHorizontal]}>
+                        <FormHelpMessage message={onboardingErrorMessage} />
+                    </View>
+                    {isSmallScreenWidth && <OfflineIndicator />}
                 </View>
             )}
         </SafeAreaConsumer>
diff --git a/src/pages/ReimbursementAccount/BankAccountStep.tsx b/src/pages/ReimbursementAccount/BankAccountStep.tsx
index 689b646f465a..69e605878725 100644
--- a/src/pages/ReimbursementAccount/BankAccountStep.tsx
+++ b/src/pages/ReimbursementAccount/BankAccountStep.tsx
@@ -14,16 +14,14 @@ import ScrollView from '@components/ScrollView';
 import Section from '@components/Section';
 import Text from '@components/Text';
 import TextLink from '@components/TextLink';
+import ValidateAccountMessage from '@components/ValidateAccountMessage';
 import useLocalize from '@hooks/useLocalize';
 import useTheme from '@hooks/useTheme';
 import useThemeStyles from '@hooks/useThemeStyles';
 import getPlaidDesktopMessage from '@libs/getPlaidDesktopMessage';
-import Navigation from '@libs/Navigation/Navigation';
-import variables from '@styles/variables';
 import * as BankAccounts from '@userActions/BankAccounts';
 import * as Link from '@userActions/Link';
 import * as ReimbursementAccount from '@userActions/ReimbursementAccount';
-import * as Session from '@userActions/Session';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
@@ -38,9 +36,6 @@ type BankAccountStepOnyxProps = {
 
     /** If the plaid button has been disabled */
     isPlaidDisabled: OnyxEntry<boolean>;
-
-    /** Login list for the user that is signed in */
-    loginList: OnyxEntry<OnyxTypes.LoginList>;
 };
 
 type BankAccountStepProps = BankAccountStepOnyxProps & {
@@ -73,7 +68,6 @@ function BankAccountStep({
     receivedRedirectURI,
     reimbursementAccount,
     onBackButtonPress,
-    loginList,
     isPlaidDisabled = false,
 }: BankAccountStepProps) {
     const theme = useTheme();
@@ -86,7 +80,6 @@ function BankAccountStep({
     }
     const plaidDesktopMessage = getPlaidDesktopMessage();
     const bankAccountRoute = `${ROUTES.BANK_ACCOUNT_WITH_STEP_TO_OPEN.getRoute('new', policyID, ROUTES.WORKSPACE_INITIAL.getRoute(policyID))}`;
-    const loginNames = Object.keys(loginList ?? {});
 
     const removeExistingBankAccountDetails = () => {
         const bankAccountData: Partial<ReimbursementAccountForm> = {
@@ -168,35 +161,7 @@ function BankAccountStep({
                             />
                         </View>
                     </Section>
-                    {!user?.validated && (
-                        <View style={[styles.flexRow, styles.alignItemsCenter, styles.m4]}>
-                            <Icon
-                                src={Expensicons.Exclamation}
-                                fill={theme.danger}
-                            />
-
-                            <Text style={[styles.mutedTextLabel, styles.ml4, styles.flex1]}>
-                                {translate('bankAccount.validateAccountError.phrase1')}
-                                <TextLink
-                                    fontSize={variables.fontSizeLabel}
-                                    onPress={() => Session.signOutAndRedirectToSignIn()}
-                                >
-                                    {translate('bankAccount.validateAccountError.phrase2')}
-                                </TextLink>
-                                {translate('bankAccount.validateAccountError.phrase3')}
-                                <TextLink
-                                    fontSize={variables.fontSizeLabel}
-                                    onPress={() => {
-                                        const login = loginList?.[loginNames?.[0]] ?? {};
-                                        Navigation.navigate(ROUTES.SETTINGS_CONTACT_METHOD_DETAILS.getRoute(login?.partnerUserID ?? loginNames?.[0]));
-                                    }}
-                                >
-                                    {translate('bankAccount.validateAccountError.phrase4')}
-                                </TextLink>
-                                .
-                            </Text>
-                        </View>
-                    )}
+                    {!user?.validated && <ValidateAccountMessage />}
                     <View style={[styles.mv0, styles.mh5, styles.flexRow, styles.justifyContentBetween]}>
                         <TextLink href={CONST.PRIVACY_URL}>{translate('common.privacy')}</TextLink>
                         <PressableWithoutFeedback
@@ -230,7 +195,4 @@ export default withOnyx<BankAccountStepProps, BankAccountStepOnyxProps>({
     isPlaidDisabled: {
         key: ONYXKEYS.IS_PLAID_DISABLED,
     },
-    loginList: {
-        key: ONYXKEYS.LOGIN_LIST,
-    },
 })(BankAccountStep);
diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx
index de81d661cfff..9a6b306e9fb3 100644
--- a/src/pages/ReportDetailsPage.tsx
+++ b/src/pages/ReportDetailsPage.tsx
@@ -145,6 +145,10 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD
     // Get the active chat members by filtering out the pending members with delete action
     const activeChatMembers = participants.flatMap((accountID) => {
         const pendingMember = report?.pendingChatMembers?.findLast((member) => member.accountID === accountID.toString());
+        const detail = personalDetails?.[accountID];
+        if (!detail) {
+            return [];
+        }
         return !pendingMember || pendingMember.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE ? accountID : [];
     });
 
diff --git a/src/pages/Search/EmptySearchView.tsx b/src/pages/Search/EmptySearchView.tsx
index eaa6c13bcad6..88b2a38b3603 100644
--- a/src/pages/Search/EmptySearchView.tsx
+++ b/src/pages/Search/EmptySearchView.tsx
@@ -32,8 +32,6 @@ function EmptySearchView({type}: EmptySearchViewProps) {
                     buttonText: translate('search.searchResults.emptyTripResults.buttonText'),
                     buttonAction: () => Navigation.navigate(ROUTES.TRAVEL_MY_TRIPS),
                 };
-            case CONST.SEARCH.DATA_TYPES.TRANSACTION:
-            case CONST.SEARCH.DATA_TYPES.REPORT:
             case CONST.SEARCH.DATA_TYPES.EXPENSE:
             case CONST.SEARCH.DATA_TYPES.INVOICE:
             default:
diff --git a/src/pages/Search/SearchFiltersCategoryPage.tsx b/src/pages/Search/SearchFiltersCategoryPage.tsx
index da98599a785a..de2cc283e7d5 100644
--- a/src/pages/Search/SearchFiltersCategoryPage.tsx
+++ b/src/pages/Search/SearchFiltersCategoryPage.tsx
@@ -5,6 +5,7 @@ import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
 import SearchMultipleSelectionPicker from '@components/Search/SearchMultipleSelectionPicker';
 import useLocalize from '@hooks/useLocalize';
+import useSafePaddingBottomStyle from '@hooks/useSafePaddingBottomStyle';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@libs/Navigation/Navigation';
 import * as SearchActions from '@userActions/Search';
@@ -31,6 +32,7 @@ function SearchFiltersCategoryPage() {
     }, [allPolicyIDCategories, singlePolicyCategories]);
 
     const onSaveSelection = useCallback((values: string[]) => SearchActions.updateAdvancedFilters({category: values}), []);
+    const safePaddingBottomStyle = useSafePaddingBottomStyle();
 
     return (
         <ScreenWrapper
@@ -45,7 +47,7 @@ function SearchFiltersCategoryPage() {
                     Navigation.goBack(ROUTES.SEARCH_ADVANCED_FILTERS);
                 }}
             />
-            <View style={[styles.flex1]}>
+            <View style={[styles.flex1, safePaddingBottomStyle]}>
                 <SearchMultipleSelectionPicker
                     pickerTitle={translate('common.category')}
                     items={categoryItems}
diff --git a/src/pages/Search/SearchPage.tsx b/src/pages/Search/SearchPage.tsx
index e2495c02d44f..d5725c2d40a2 100644
--- a/src/pages/Search/SearchPage.tsx
+++ b/src/pages/Search/SearchPage.tsx
@@ -7,8 +7,7 @@ import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@libs/Navigation/Navigation';
 import type {AuthScreensParamList} from '@libs/Navigation/types';
-import {buildSearchQueryJSON} from '@libs/SearchUtils';
-import CONST from '@src/CONST';
+import * as SearchUtils from '@libs/SearchUtils';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
 
@@ -19,9 +18,8 @@ function SearchPage({route}: SearchPageProps) {
     const styles = useThemeStyles();
     const {policyIDs, q, isCustomQuery} = route.params;
 
-    const queryJSON = useMemo(() => buildSearchQueryJSON(q, policyIDs), [q, policyIDs]);
-
-    const handleOnBackButtonPress = () => Navigation.goBack(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: CONST.SEARCH.TAB.EXPENSE.ALL}));
+    const queryJSON = useMemo(() => SearchUtils.buildSearchQueryJSON(q, policyIDs), [q, policyIDs]);
+    const handleOnBackButtonPress = () => Navigation.goBack(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: SearchUtils.buildCannedSearchQuery()}));
 
     // On small screens this page is not displayed, the configuration is in the file: src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx
     // To avoid calling hooks in the Search component when this page isn't visible, we return null here.
diff --git a/src/pages/Search/SearchPageBottomTab.tsx b/src/pages/Search/SearchPageBottomTab.tsx
index 1b9e81c8a035..029407026dc8 100644
--- a/src/pages/Search/SearchPageBottomTab.tsx
+++ b/src/pages/Search/SearchPageBottomTab.tsx
@@ -12,13 +12,12 @@ import useThemeStyles from '@hooks/useThemeStyles';
 import {turnOffMobileSelectionMode} from '@libs/actions/MobileSelectionMode';
 import Navigation from '@libs/Navigation/Navigation';
 import type {AuthScreensParamList} from '@libs/Navigation/types';
-import {buildSearchQueryJSON} from '@libs/SearchUtils';
+import * as SearchUtils from '@libs/SearchUtils';
 import TopBar from '@navigation/AppNavigator/createCustomBottomTabNavigator/TopBar';
-import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import SCREENS from '@src/SCREENS';
-import SearchStatusMenu from './SearchStatusMenu';
+import SearchTypeMenu from './SearchTypeMenu';
 
 function SearchPageBottomTab() {
     const {translate} = useLocalize();
@@ -37,13 +36,13 @@ function SearchPageBottomTab() {
         const searchParams = activeCentralPaneRoute.params as AuthScreensParamList[typeof SCREENS.SEARCH.CENTRAL_PANE];
 
         return {
-            queryJSON: buildSearchQueryJSON(searchParams.q, searchParams.policyIDs),
+            queryJSON: SearchUtils.buildSearchQueryJSON(searchParams.q, searchParams.policyIDs),
             policyIDs: searchParams.policyIDs,
             isCustomQuery: searchParams.isCustomQuery,
         };
     }, [activeCentralPaneRoute]);
 
-    const handleOnBackButtonPress = () => Navigation.goBack(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: CONST.SEARCH.TAB.EXPENSE.ALL}));
+    const handleOnBackButtonPress = () => Navigation.goBack(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: SearchUtils.buildCannedSearchQuery()}));
 
     return (
         <ScreenWrapper
@@ -63,7 +62,7 @@ function SearchPageBottomTab() {
                             breadcrumbLabel={translate('common.search')}
                             shouldDisplaySearch={false}
                         />
-                        <SearchStatusMenu
+                        <SearchTypeMenu
                             isCustomQuery={isCustomQuery}
                             queryJSON={queryJSON}
                         />
diff --git a/src/pages/Search/SearchStatusMenu.tsx b/src/pages/Search/SearchTypeMenu.tsx
similarity index 57%
rename from src/pages/Search/SearchStatusMenu.tsx
rename to src/pages/Search/SearchTypeMenu.tsx
index 9fd812ead9a1..a2d84209114b 100644
--- a/src/pages/Search/SearchStatusMenu.tsx
+++ b/src/pages/Search/SearchTypeMenu.tsx
@@ -1,75 +1,69 @@
 import React from 'react';
 import {View} from 'react-native';
 import MenuItem from '@components/MenuItem';
-import type {SearchQueryJSON, SearchStatus} from '@components/Search/types';
+import type {SearchQueryJSON} from '@components/Search/types';
 import useLocalize from '@hooks/useLocalize';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useSingleExecution from '@hooks/useSingleExecution';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@libs/Navigation/Navigation';
-import {normalizeQuery} from '@libs/SearchUtils';
 import * as SearchUtils from '@libs/SearchUtils';
 import variables from '@styles/variables';
 import * as Expensicons from '@src/components/Icon/Expensicons';
 import CONST from '@src/CONST';
 import type {Route} from '@src/ROUTES';
 import ROUTES from '@src/ROUTES';
+import type {SearchDataTypes} from '@src/types/onyx/SearchResults';
 import type IconAsset from '@src/types/utils/IconAsset';
-import SearchStatusMenuNarrow from './SearchStatusMenuNarrow';
+import SearchTypeMenuNarrow from './SearchTypeMenuNarrow';
 
-type SearchStatusMenuProps = {
+type SearchTypeMenuProps = {
     queryJSON: SearchQueryJSON;
     isCustomQuery: boolean;
 };
 
-type SearchStatusMenuItem = {
+type SearchTypeMenuItem = {
     title: string;
-    status: SearchStatus;
+    type: SearchDataTypes;
     icon: IconAsset;
     route?: Route;
 };
 
-function SearchStatusMenu({queryJSON, isCustomQuery}: SearchStatusMenuProps) {
-    const {status} = queryJSON;
+function SearchTypeMenu({queryJSON, isCustomQuery}: SearchTypeMenuProps) {
+    const {type} = queryJSON;
     const styles = useThemeStyles();
     const {shouldUseNarrowLayout} = useResponsiveLayout();
     const {singleExecution} = useSingleExecution();
     const {translate} = useLocalize();
 
-    const statusMenuItems: SearchStatusMenuItem[] = [
+    const typeMenuItems: SearchTypeMenuItem[] = [
         {
             title: translate('common.expenses'),
-            status: CONST.SEARCH.STATUS.EXPENSE.ALL,
+            type: CONST.SEARCH.DATA_TYPES.EXPENSE,
             icon: Expensicons.Receipt,
-            route: ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: normalizeQuery(CONST.SEARCH.TAB.EXPENSE.ALL)}),
+            route: ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: SearchUtils.buildCannedSearchQuery()}),
         },
         {
-            title: translate('common.shared'),
-            status: CONST.SEARCH.STATUS.EXPENSE.SHARED,
-            icon: Expensicons.Send,
-            route: ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: normalizeQuery(CONST.SEARCH.TAB.EXPENSE.SHARED)}),
+            title: translate('workspace.common.invoices'),
+            type: CONST.SEARCH.DATA_TYPES.INVOICE,
+            icon: Expensicons.InvoiceGeneric,
+            route: ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.INVOICE, CONST.SEARCH.STATUS.INVOICE.ALL)}),
         },
         {
-            title: translate('common.drafts'),
-            status: CONST.SEARCH.STATUS.EXPENSE.DRAFTS,
-            icon: Expensicons.Pencil,
-            route: ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: normalizeQuery(CONST.SEARCH.TAB.EXPENSE.DRAFTS)}),
-        },
-        {
-            title: translate('common.finished'),
-            status: CONST.SEARCH.STATUS.EXPENSE.FINISHED,
-            icon: Expensicons.CheckCircle,
-            route: ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: normalizeQuery(CONST.SEARCH.TAB.EXPENSE.FINISHED)}),
+            title: translate('travel.trips'),
+            type: CONST.SEARCH.DATA_TYPES.TRIP,
+            icon: Expensicons.Suitcase,
+            route: ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: SearchUtils.buildCannedSearchQuery(CONST.SEARCH.DATA_TYPES.TRIP, CONST.SEARCH.STATUS.TRIP.ALL)}),
         },
     ];
-    const activeItemIndex = statusMenuItems.findIndex((item) => item.status === status);
+    const activeItemIndex = typeMenuItems.findIndex((item) => item.type === type);
 
     if (shouldUseNarrowLayout) {
         const title = isCustomQuery ? SearchUtils.getSearchHeaderTitle(queryJSON) : undefined;
 
         return (
-            <SearchStatusMenuNarrow
-                statusMenuItems={statusMenuItems}
+            <SearchTypeMenuNarrow
+                typeMenuItems={typeMenuItems}
                 activeItemIndex={activeItemIndex}
                 title={title}
             />
@@ -78,7 +72,7 @@ function SearchStatusMenu({queryJSON, isCustomQuery}: SearchStatusMenuProps) {
 
     return (
         <View style={[styles.pb4, styles.mh3, styles.mt3]}>
-            {statusMenuItems.map((item, index) => {
+            {typeMenuItems.map((item, index) => {
                 const onPress = singleExecution(() => Navigation.navigate(item.route));
 
                 return (
@@ -102,7 +96,7 @@ function SearchStatusMenu({queryJSON, isCustomQuery}: SearchStatusMenuProps) {
     );
 }
 
-SearchStatusMenu.displayName = 'SearchStatusMenu';
+SearchTypeMenu.displayName = 'SearchTypeMenu';
 
-export default SearchStatusMenu;
-export type {SearchStatusMenuItem};
+export default SearchTypeMenu;
+export type {SearchTypeMenuItem};
diff --git a/src/pages/Search/SearchStatusMenuNarrow.tsx b/src/pages/Search/SearchTypeMenuNarrow.tsx
similarity index 91%
rename from src/pages/Search/SearchStatusMenuNarrow.tsx
rename to src/pages/Search/SearchTypeMenuNarrow.tsx
index 8850b0fb2b0f..08c7852cb037 100644
--- a/src/pages/Search/SearchStatusMenuNarrow.tsx
+++ b/src/pages/Search/SearchTypeMenuNarrow.tsx
@@ -10,15 +10,15 @@ import useThemeStyles from '@hooks/useThemeStyles';
 import useWindowDimensions from '@hooks/useWindowDimensions';
 import Navigation from '@libs/Navigation/Navigation';
 import * as Expensicons from '@src/components/Icon/Expensicons';
-import type {SearchStatusMenuItem} from './SearchStatusMenu';
+import type {SearchTypeMenuItem} from './SearchTypeMenu';
 
-type SearchStatusMenuNarrowProps = {
-    statusMenuItems: SearchStatusMenuItem[];
+type SearchTypeMenuNarrowProps = {
+    typeMenuItems: SearchTypeMenuItem[];
     activeItemIndex: number;
     title?: string;
 };
 
-function SearchStatusMenuNarrow({statusMenuItems, activeItemIndex, title}: SearchStatusMenuNarrowProps) {
+function SearchTypeMenuNarrow({typeMenuItems, activeItemIndex, title}: SearchTypeMenuNarrowProps) {
     const theme = useTheme();
     const styles = useThemeStyles();
     const {singleExecution} = useSingleExecution();
@@ -30,7 +30,7 @@ function SearchStatusMenuNarrow({statusMenuItems, activeItemIndex, title}: Searc
     const openMenu = () => setIsPopoverVisible(true);
     const closeMenu = () => setIsPopoverVisible(false);
 
-    const popoverMenuItems = statusMenuItems.map((item, index) => {
+    const popoverMenuItems = typeMenuItems.map((item, index) => {
         const isSelected = title ? false : index === activeItemIndex;
 
         return {
@@ -105,6 +105,6 @@ function SearchStatusMenuNarrow({statusMenuItems, activeItemIndex, title}: Searc
     );
 }
 
-SearchStatusMenuNarrow.displayName = 'SearchStatusMenuNarrow';
+SearchTypeMenuNarrow.displayName = 'SearchTypeMenuNarrow';
 
-export default SearchStatusMenuNarrow;
+export default SearchTypeMenuNarrow;
diff --git a/src/pages/TransactionDuplicate/Confirmation.tsx b/src/pages/TransactionDuplicate/Confirmation.tsx
index 3c9b911a1cf5..96b32006675e 100644
--- a/src/pages/TransactionDuplicate/Confirmation.tsx
+++ b/src/pages/TransactionDuplicate/Confirmation.tsx
@@ -7,6 +7,7 @@ import {useOnyx} from 'react-native-onyx';
 import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView';
 import Button from '@components/Button';
 import FixedFooter from '@components/FixedFooter';
+import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import MoneyRequestView from '@components/ReportActionItem/MoneyRequestView';
 import ScreenWrapper from '@components/ScreenWrapper';
@@ -20,19 +21,22 @@ import type {TransactionDuplicateNavigatorParamList} from '@libs/Navigation/type
 import variables from '@styles/variables';
 import * as IOU from '@src/libs/actions/IOU';
 import * as ReportActionsUtils from '@src/libs/ReportActionsUtils';
+import * as ReportUtils from '@src/libs/ReportUtils';
 import * as TransactionUtils from '@src/libs/TransactionUtils';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
 import type {Transaction} from '@src/types/onyx';
+import {isEmptyObject} from '@src/types/utils/EmptyObject';
+import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue';
 
 function Confirmation() {
     const styles = useThemeStyles();
     const {translate} = useLocalize();
     const route = useRoute<RouteProp<TransactionDuplicateNavigatorParamList, typeof SCREENS.TRANSACTION_DUPLICATE.REVIEW>>();
-    const [reviewDuplicates] = useOnyx(ONYXKEYS.REVIEW_DUPLICATES);
+    const [reviewDuplicates, reviewDuplicatesResult] = useOnyx(ONYXKEYS.REVIEW_DUPLICATES);
     const transaction = useMemo(() => TransactionUtils.buildNewTransactionAfterReviewingDuplicates(reviewDuplicates), [reviewDuplicates]);
-    const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${route.params.threadReportID}`);
+    const [report, reportResult] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${route.params.threadReportID}`);
     const [reportActions] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${transaction?.reportID}`);
     const reportAction = Object.values(reportActions ?? {}).find(
         (action) => ReportActionsUtils.isMoneyRequestAction(action) && ReportActionsUtils.getOriginalMessage(action)?.IOUTransactionID === reviewDuplicates?.transactionID,
@@ -56,13 +60,27 @@ function Confirmation() {
         [report, reportAction],
     );
 
+    const reportTransactionID = TransactionUtils.getTransactionID(report?.reportID ?? '');
+    const doesTransactionBelongToReport = reviewDuplicates?.transactionID === reportTransactionID || reviewDuplicates?.duplicates.includes(reportTransactionID);
+
+    // eslint-disable-next-line rulesdir/no-negated-variables
+    const shouldShowNotFoundPage =
+        isEmptyObject(report) ||
+        !ReportUtils.isValidReport(report) ||
+        ReportUtils.isReportNotFound(report) ||
+        (reviewDuplicatesResult.status === 'loaded' && (!transaction?.transactionID || !doesTransactionBelongToReport));
+
+    if (isLoadingOnyxValue(reviewDuplicatesResult, reportResult)) {
+        return <FullScreenLoadingIndicator />;
+    }
+
     return (
         <ScreenWrapper
             testID={Confirmation.displayName}
             shouldShowOfflineIndicator
         >
             {({safeAreaPaddingBottomStyle}) => (
-                <FullPageNotFoundView shouldShow={!reviewDuplicates}>
+                <FullPageNotFoundView shouldShow={shouldShowNotFoundPage}>
                     <View style={[styles.flex1, safeAreaPaddingBottomStyle]}>
                         <HeaderWithBackButton title={translate('iou.reviewDuplicates')} />
                         <ScrollView>
diff --git a/src/pages/TransactionReceiptPage.tsx b/src/pages/TransactionReceiptPage.tsx
index 6129deb438de..9a59c15b589c 100644
--- a/src/pages/TransactionReceiptPage.tsx
+++ b/src/pages/TransactionReceiptPage.tsx
@@ -31,6 +31,7 @@ function TransactionReceipt({transaction, report, reportMetadata = {isLoadingIni
     const imageSource = tryResolveUrlFromApiRoot(receiptURIs.image ?? '');
 
     const isLocalFile = receiptURIs.isLocalFile;
+    const readonly = route.params.readonly ?? false;
 
     const parentReportAction = ReportActionUtils.getReportAction(report?.parentReportID ?? '-1', report?.parentReportActionID ?? '-1');
     const canEditReceipt = ReportUtils.canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.RECEIPT);
@@ -58,7 +59,7 @@ function TransactionReceipt({transaction, report, reportMetadata = {isLoadingIni
             isAuthTokenRequired={!isLocalFile}
             report={report}
             isReceiptAttachment
-            canEditReceipt={canEditReceipt}
+            canEditReceipt={canEditReceipt && !readonly}
             allowDownload={!isEReceipt}
             isTrackExpenseAction={isTrackExpenseAction}
             originalFileName={receiptURIs?.filename}
diff --git a/src/pages/WorkspaceSwitcherPage/index.tsx b/src/pages/WorkspaceSwitcherPage/index.tsx
index 1cbe1bd4cbcf..562f11aa5bc5 100644
--- a/src/pages/WorkspaceSwitcherPage/index.tsx
+++ b/src/pages/WorkspaceSwitcherPage/index.tsx
@@ -191,7 +191,8 @@ function WorkspaceSwitcherPage() {
                         textInputValue={searchTerm}
                         onChangeText={setSearchTerm}
                         headerMessage={headerMessage}
-                        listFooterContent={shouldShowCreateWorkspace ? WorkspaceCardCreateAWorkspaceInstance : null}
+                        listEmptyContent={WorkspaceCardCreateAWorkspaceInstance}
+                        shouldShowListEmptyContent={shouldShowCreateWorkspace}
                         initiallyFocusedOptionKey={activeWorkspaceID ?? CONST.WORKSPACE_SWITCHER.NAME}
                         showLoadingPlaceholder={fetchStatus.status === 'loading' || !didScreenTransitionEnd}
                     />
diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx
index 45826a873be9..709dbc1c0685 100644
--- a/src/pages/home/ReportScreen.tsx
+++ b/src/pages/home/ReportScreen.tsx
@@ -2,7 +2,7 @@ import {PortalHost} from '@gorhom/portal';
 import {useIsFocused} from '@react-navigation/native';
 import type {StackScreenProps} from '@react-navigation/stack';
 import lodashIsEqual from 'lodash/isEqual';
-import React, {memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState} from 'react';
+import React, {memo, useCallback, useEffect, useMemo, useRef, useState} from 'react';
 import type {FlatList, ViewStyle} from 'react-native';
 import {InteractionManager, View} from 'react-native';
 import type {OnyxEntry} from 'react-native-onyx';
@@ -50,6 +50,7 @@ import type * as OnyxTypes from '@src/types/onyx';
 import {isEmptyObject} from '@src/types/utils/EmptyObject';
 import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue';
 import HeaderView from './HeaderView';
+import ReportActionsListItemRenderer from './report/ReportActionsListItemRenderer';
 import ReportActionsView from './report/ReportActionsView';
 import ReportFooter from './report/ReportFooter';
 import type {ActionListContextType, ReactionListRef, ScrollPosition} from './ReportScreenContext';
@@ -260,13 +261,6 @@ function ReportScreen({route, currentReportID = '', navigation}: ReportScreenPro
     const [currentUserAccountID = -1] = useOnyx(ONYXKEYS.SESSION, {selector: (value) => value?.accountID});
     const {reportActions, linkedAction, sortedAllReportActions} = usePaginatedReportActions(report.reportID, reportActionIDFromRoute);
 
-    // Define here because reportActions are recalculated before mount, allowing data to display faster than useEffect can trigger.
-    // If we have cached reportActions, they will be shown immediately.
-    // We aim to display a loader first, then fetch relevant reportActions, and finally show them.
-    useLayoutEffect(() => {
-        setIsLinkingToMessage(!!reportActionIDFromRoute);
-    }, [route, reportActionIDFromRoute]);
-
     const [isBannerVisible, setIsBannerVisible] = useState(true);
     const [scrollPosition, setScrollPosition] = useState<ScrollPosition>({});
 
@@ -726,6 +720,17 @@ function ReportScreen({route, currentReportID = '', navigation}: ReportScreenPro
         // After creating the task report then navigating to task detail we don't have any report actions and the last read time is empty so We need to update the initial last read time when opening the task report detail.
         Report.readNewestAction(report.reportID);
     }, [report]);
+    const firstReportAction = reportActions[0];
+
+    const lastRoute = usePrevious(route);
+    const lastReportActionIDFromRoute = usePrevious(reportActionIDFromRoute);
+    // Define here because reportActions are recalculated before mount, allowing data to display faster than useEffect can trigger.
+    // If we have cached reportActions, they will be shown immediately.
+    // We aim to display a loader first, then fetch relevant reportActions, and finally show them.
+    if ((lastRoute !== route || lastReportActionIDFromRoute !== reportActionIDFromRoute) && isLinkingToMessage !== !!reportActionIDFromRoute) {
+        setIsLinkingToMessage(!!reportActionIDFromRoute);
+        return null;
+    }
 
     return (
         <ActionListContext.Provider value={actionListValue}>
@@ -794,7 +799,28 @@ function ReportScreen({route, currentReportID = '', navigation}: ReportScreenPro
                                 {/* Note: The ReportActionsSkeletonView should be allowed to mount even if the initial report actions are not loaded.
                                     If we prevent rendering the report while they are loading then
                                     we'll unnecessarily unmount the ReportActionsView which will clear the new marker lines initial state. */}
-                                {shouldShowSkeleton && <ReportActionsSkeletonView />}
+                                {shouldShowSkeleton && (
+                                    <>
+                                        <ReportActionsSkeletonView />
+                                        {!!firstReportAction && (
+                                            <ReportActionsListItemRenderer
+                                                reportAction={firstReportAction}
+                                                reportActions={reportActions}
+                                                parentReportAction={parentReportAction}
+                                                parentReportActionForTransactionThread={undefined}
+                                                transactionThreadReport={undefined}
+                                                index={0}
+                                                report={report}
+                                                displayAsGroup={false}
+                                                shouldHideThreadDividerLine
+                                                shouldDisplayNewMarker={false}
+                                                shouldDisplayReplyDivider={false}
+                                                isFirstVisibleReportAction
+                                                shouldUseThreadDividerLine={false}
+                                            />
+                                        )}
+                                    </>
+                                )}
 
                                 {isCurrentReportLoadedFromOnyx ? (
                                     <ReportFooter
diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx
index 8ed59037800c..cfba04fee23c 100644
--- a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx
+++ b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx
@@ -428,6 +428,8 @@ const ContextMenuActions: ContextMenuAction[] = [
                 } else if (ReportActionsUtils.isMemberChangeAction(reportAction)) {
                     const logMessage = ReportActionsUtils.getMemberChangeMessageFragment(reportAction).html ?? '';
                     setClipboardMessage(logMessage);
+                } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_NAME) {
+                    Clipboard.setString(ReportUtils.getWorkspaceNameUpdatedMessage(reportAction));
                 } else if (ReportActionsUtils.isReimbursementQueuedAction(reportAction)) {
                     Clipboard.setString(ReportUtils.getReimbursementQueuedActionMessage(reportAction, reportID, false));
                 } else if (ReportActionsUtils.isActionableMentionWhisper(reportAction)) {
@@ -435,6 +437,8 @@ const ContextMenuActions: ContextMenuAction[] = [
                     setClipboardMessage(mentionWhisperMessage);
                 } else if (ReportActionsUtils.isActionableTrackExpense(reportAction)) {
                     setClipboardMessage(CONST.ACTIONABLE_TRACK_EXPENSE_WHISPER_MESSAGE);
+                } else if (ReportActionsUtils.isRenamedAction(reportAction)) {
+                    setClipboardMessage(ReportActionsUtils.getRenamedAction(reportAction));
                 } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.SUBMITTED) {
                     const displayMessage = ReportUtils.getIOUSubmittedMessage(reportID);
                     Clipboard.setString(displayMessage);
@@ -460,6 +464,12 @@ const ContextMenuActions: ContextMenuAction[] = [
                     setClipboardMessage(ReportActionsUtils.getExportIntegrationMessageHTML(reportAction));
                 } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.ROOM_CHANGE_LOG.UPDATE_ROOM_DESCRIPTION) {
                     setClipboardMessage(ReportActionsUtils.getUpdateRoomDescriptionMessage(reportAction));
+                } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_EMPLOYEE) {
+                    setClipboardMessage(ReportActionsUtils.getPolicyChangeLogAddEmployeeMessage(reportAction));
+                } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_EMPLOYEE) {
+                    setClipboardMessage(ReportActionsUtils.getPolicyChangeLogChangeRoleMessage(reportAction));
+                } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_EMPLOYEE) {
+                    setClipboardMessage(ReportActionsUtils.getPolicyChangeLogDeleteMemberMessage(reportAction));
                 } else if (content) {
                     setClipboardMessage(
                         content.replace(/(<mention-user>)(.*?)(<\/mention-user>)/gi, (match, openTag: string, innerContent: string, closeTag: string): string => {
diff --git a/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.tsx b/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.tsx
index 5cfce625201e..50b424fc736b 100644
--- a/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.tsx
+++ b/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.tsx
@@ -242,6 +242,7 @@ function PopoverReportActionContextMenu(_props: unknown, ref: ForwardedRef<Repor
         reportIDRef.current = '-1';
         reportActionIDRef.current = '-1';
         originalReportIDRef.current = '-1';
+        setInstanceID('');
 
         onPopoverHide.current = runAndResetCallback(onPopoverHide.current);
         onPopoverHideActionCallback.current = runAndResetCallback(onPopoverHideActionCallback.current);
diff --git a/src/pages/home/report/ContextMenu/ReportActionContextMenu.ts b/src/pages/home/report/ContextMenu/ReportActionContextMenu.ts
index c8d952be0972..df500a967cfd 100644
--- a/src/pages/home/report/ContextMenu/ReportActionContextMenu.ts
+++ b/src/pages/home/report/ContextMenu/ReportActionContextMenu.ts
@@ -123,33 +123,37 @@ function showContextMenu(
     if (!contextMenuRef.current) {
         return;
     }
+    const show = () => {
+        contextMenuRef.current?.showContextMenu(
+            type,
+            event,
+            selection,
+            contextMenuAnchor,
+            reportID,
+            reportActionID,
+            originalReportID,
+            draftMessage,
+            onShow,
+            onHide,
+            isArchivedRoom,
+            isChronosReport,
+            isPinnedChat,
+            isUnreadChat,
+            disabledActions,
+            shouldCloseOnTarget,
+            setIsEmojiPickerActive,
+            isOverflowMenu,
+        );
+    };
+
     // If there is an already open context menu, close it first before opening
     // a new one.
     if (contextMenuRef.current.instanceID) {
-        hideContextMenu();
-        contextMenuRef.current.runAndResetOnPopoverHide();
+        hideContextMenu(false, show);
+        return;
     }
 
-    contextMenuRef.current.showContextMenu(
-        type,
-        event,
-        selection,
-        contextMenuAnchor,
-        reportID,
-        reportActionID,
-        originalReportID,
-        draftMessage,
-        onShow,
-        onHide,
-        isArchivedRoom,
-        isChronosReport,
-        isPinnedChat,
-        isUnreadChat,
-        disabledActions,
-        shouldCloseOnTarget,
-        setIsEmojiPickerActive,
-        isOverflowMenu,
-    );
+    show();
 }
 
 /**
diff --git a/src/pages/home/report/ReportActionItem.tsx b/src/pages/home/report/ReportActionItem.tsx
index 68ced63d12d0..f043610ed4bc 100644
--- a/src/pages/home/report/ReportActionItem.tsx
+++ b/src/pages/home/report/ReportActionItem.tsx
@@ -58,6 +58,7 @@ import * as Member from '@userActions/Policy/Member';
 import * as Report from '@userActions/Report';
 import * as ReportActions from '@userActions/ReportActions';
 import * as Session from '@userActions/Session';
+import * as Transaction from '@userActions/Transaction';
 import * as User from '@userActions/User';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
@@ -653,6 +654,14 @@ function ReportActionItem({
             children = <ReportActionItemBasicMessage message={ReportActionsUtils.getDismissedViolationMessageText(ReportActionsUtils.getOriginalMessage(action))} />;
         } else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_TAG) {
             children = <ReportActionItemBasicMessage message={PolicyUtils.getCleanedTagName(ReportActionsUtils.getReportActionMessage(action)?.text ?? '')} />;
+        } else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_NAME) {
+            children = <ReportActionItemBasicMessage message={ReportUtils.getWorkspaceNameUpdatedMessage(action)} />;
+        } else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_EMPLOYEE) {
+            children = <ReportActionItemBasicMessage message={ReportActionsUtils.getPolicyChangeLogAddEmployeeMessage(action)} />;
+        } else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_EMPLOYEE) {
+            children = <ReportActionItemBasicMessage message={ReportActionsUtils.getPolicyChangeLogChangeRoleMessage(action)} />;
+        } else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_EMPLOYEE) {
+            children = <ReportActionItemBasicMessage message={ReportActionsUtils.getPolicyChangeLogDeleteMemberMessage(action)} />;
         } else if (
             ReportActionsUtils.isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.CARD_ISSUED, CONST.REPORT.ACTIONS.TYPE.CARD_ISSUED_VIRTUAL, CONST.REPORT.ACTIONS.TYPE.CARD_MISSING_ADDRESS)
         ) {
@@ -660,11 +669,7 @@ function ReportActionItem({
         } else if (ReportActionsUtils.isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION)) {
             children = <ExportIntegration action={action} />;
         } else if (ReportActionsUtils.isRenamedAction(action)) {
-            const initialMessage = ReportActionsUtils.getOriginalMessage(action);
-            const message = translate('newRoomPage.renamedRoomAction', {
-                oldName: initialMessage?.oldName ?? '',
-                newName: initialMessage?.newName ?? '',
-            });
+            const message = ReportActionsUtils.getRenamedAction(action);
             children = <ReportActionItemBasicMessage message={message} />;
         } else {
             const hasBeenFlagged =
@@ -925,7 +930,13 @@ function ReportActionItem({
                             )}
                         >
                             <OfflineWithFeedback
-                                onClose={() => ReportActions.clearAllRelatedReportActionErrors(report.reportID, action)}
+                                onClose={() => {
+                                    const transactionID = ReportActionsUtils.isMoneyRequestAction(action) ? ReportActionsUtils.getOriginalMessage(action)?.IOUTransactionID : undefined;
+                                    if (transactionID) {
+                                        Transaction.clearError(transactionID);
+                                    }
+                                    ReportActions.clearAllRelatedReportActionErrors(report.reportID, action);
+                                }}
                                 // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
                                 pendingAction={
                                     draftMessage !== undefined ? undefined : action.pendingAction ?? (action.isOptimisticAction ? CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD : undefined)
diff --git a/src/pages/home/report/ReportActionsList.tsx b/src/pages/home/report/ReportActionsList.tsx
index cb3db91e7bc8..299af64310e1 100644
--- a/src/pages/home/report/ReportActionsList.tsx
+++ b/src/pages/home/report/ReportActionsList.tsx
@@ -363,12 +363,16 @@ function ReportActionsList({
         (isFromCurrentUser: boolean) => {
             // If a new comment is added and it's from the current user scroll to the bottom otherwise leave the user positioned where
             // they are now in the list.
-            if (!isFromCurrentUser || !hasNewestReportActionRef.current) {
+            if (!isFromCurrentUser) {
+                return;
+            }
+            if (!hasNewestReportActionRef.current) {
+                Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(report.reportID));
                 return;
             }
             InteractionManager.runAfterInteractions(() => reportScrollManager.scrollToBottom());
         },
-        [reportScrollManager],
+        [reportScrollManager, report.reportID],
     );
     useEffect(() => {
         // Why are we doing this, when in the cleanup of the useEffect we are already calling the unsubscribe function?
diff --git a/src/pages/home/report/ReportActionsView.tsx b/src/pages/home/report/ReportActionsView.tsx
index bc725d0f44b5..463bbe119514 100755
--- a/src/pages/home/report/ReportActionsView.tsx
+++ b/src/pages/home/report/ReportActionsView.tsx
@@ -10,7 +10,6 @@ import useInitialValue from '@hooks/useInitialValue';
 import useNetwork from '@hooks/useNetwork';
 import usePrevious from '@hooks/usePrevious';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
-import useWindowDimensions from '@hooks/useWindowDimensions';
 import DateUtils from '@libs/DateUtils';
 import getIsReportFullyVisible from '@libs/getIsReportFullyVisible';
 import type {AuthScreensParamList} from '@libs/Navigation/types';
@@ -76,9 +75,6 @@ type ReportActionsViewProps = ReportActionsViewOnyxProps & {
     transactionThreadReportID?: string | null;
 };
 
-const DIFF_BETWEEN_SCREEN_HEIGHT_AND_LIST = 120;
-const SPACER = 16;
-
 let listOldID = Math.round(Math.random() * 100);
 
 function ReportActionsView({
@@ -111,7 +107,6 @@ function ReportActionsView({
     const isFirstLinkedActionRender = useRef(true);
 
     const network = useNetwork();
-    const {windowHeight} = useWindowDimensions();
     const {shouldUseNarrowLayout} = useResponsiveLayout();
     const contentListHeight = useRef(0);
     const isFocused = useIsFocused();
@@ -322,8 +317,6 @@ function ReportActionsView({
         contentListHeight.current = h;
     }, []);
 
-    const checkIfContentSmallerThanList = useCallback(() => windowHeight - DIFF_BETWEEN_SCREEN_HEIGHT_AND_LIST - SPACER > contentListHeight.current, [windowHeight]);
-
     const handleReportActionPagination = useCallback(
         ({firstReportActionID}: {firstReportActionID: string}) => {
             // This function is a placeholder as the actual pagination is handled by visibleReportActions
@@ -392,10 +385,6 @@ function ReportActionsView({
 
     const loadNewerChats = useCallback(
         (force = false) => {
-            // Determines if loading older reports is necessary when the content is smaller than the list
-            // and there are fewer than 23 items, indicating we've reached the oldest message.
-            const isLoadingOlderReportsFirstNeeded = checkIfContentSmallerThanList() && reportActions.length > 23;
-
             if (
                 !force &&
                 (!reportActionID ||
@@ -412,18 +401,16 @@ function ReportActionsView({
 
             didLoadNewerChats.current = true;
 
-            if ((reportActionID && indexOfLinkedAction > -1 && !isLoadingOlderReportsFirstNeeded) || (!reportActionID && !isLoadingOlderReportsFirstNeeded)) {
+            if ((reportActionID && indexOfLinkedAction > -1) || !reportActionID) {
                 handleReportActionPagination({firstReportActionID: newestReportAction?.reportActionID});
             }
         },
         [
             isLoadingInitialReportActions,
             isLoadingNewerReportActions,
-            checkIfContentSmallerThanList,
             reportActionID,
             indexOfLinkedAction,
             handleReportActionPagination,
-            reportActions.length,
             newestReportAction,
             isFocused,
             hasLoadingNewerReportActionsError,
@@ -482,6 +469,7 @@ function ReportActionsView({
     if (!reportActions.length) {
         return null;
     }
+
     // AutoScroll is disabled when we do linking to a specific reportAction
     const shouldEnableAutoScroll = hasNewestReportAction && (!reportActionID || !isNavigatingToLinkedMessage);
     return (
diff --git a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx
index 8cad6d2fc45d..730fcdb6b636 100644
--- a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx
+++ b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx
@@ -268,10 +268,7 @@ function FloatingActionButtonAndPopover(
                 selectOption(() => IOU.startMoneyRequest(CONST.IOU.TYPE.PAY, quickActionReportID, CONST.IOU.REQUEST_TYPE.MANUAL, true), false);
                 return;
             case CONST.QUICK_ACTIONS.ASSIGN_TASK:
-                selectOption(
-                    () => Task.clearOutTaskInfoAndNavigate(isValidReport ? quickActionReportID : '', isValidReport ? quickActionReport : undefined, quickAction.targetAccountID ?? -1, true),
-                    false,
-                );
+                selectOption(() => Task.startOutCreateTaskQuickAction(isValidReport ? quickActionReportID : '', quickAction.targetAccountID ?? -1), false);
                 break;
             case CONST.QUICK_ACTIONS.TRACK_MANUAL:
                 selectOption(() => IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK, quickActionReportID, CONST.IOU.REQUEST_TYPE.MANUAL, true), false);
diff --git a/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx
index 89d4a0fc3664..3d2f85ef6c62 100644
--- a/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx
+++ b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx
@@ -17,11 +17,13 @@ import useDismissedReferralBanners from '@hooks/useDismissedReferralBanners';
 import useLocalize from '@hooks/useLocalize';
 import useNetwork from '@hooks/useNetwork';
 import usePermissions from '@hooks/usePermissions';
+import usePolicy from '@hooks/usePolicy';
 import useScreenWrapperTranstionStatus from '@hooks/useScreenWrapperTransitionStatus';
 import useThemeStyles from '@hooks/useThemeStyles';
 import * as DeviceCapabilities from '@libs/DeviceCapabilities';
 import Navigation from '@libs/Navigation/Navigation';
 import * as OptionsListUtils from '@libs/OptionsListUtils';
+import * as PolicyUtils from '@libs/PolicyUtils';
 import * as ReportUtils from '@libs/ReportUtils';
 import * as SubscriptionUtils from '@libs/SubscriptionUtils';
 import * as Policy from '@userActions/Policy/Policy';
@@ -64,6 +66,7 @@ function MoneyRequestParticipantsSelector({participants = CONST.EMPTY_ARRAY, onF
     const {didScreenTransitionEnd} = useScreenWrapperTranstionStatus();
     const [betas] = useOnyx(ONYXKEYS.BETAS);
     const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID);
+    const policy = usePolicy(activePolicyID);
     const [isSearchingForReports] = useOnyx(ONYXKEYS.IS_SEARCHING_FOR_REPORTS, {initWithStoredValues: false});
     const {options, areOptionsInitialized} = useOptionsList({
         shouldInitialize: didScreenTransitionEnd,
@@ -71,6 +74,7 @@ function MoneyRequestParticipantsSelector({participants = CONST.EMPTY_ARRAY, onF
     const cleanSearchTerm = useMemo(() => debouncedSearchTerm.trim().toLowerCase(), [debouncedSearchTerm]);
     const offlineMessage: string = isOffline ? `${translate('common.youAppearToBeOffline')} ${translate('search.resultsAreLimited')}` : '';
 
+    const isPaidGroupPolicy = useMemo(() => PolicyUtils.isPaidGroupPolicy(policy), [policy]);
     const isIOUSplit = iouType === CONST.IOU.TYPE.SPLIT;
     const isCategorizeOrShareAction = [CONST.IOU.ACTION.CATEGORIZE, CONST.IOU.ACTION.SHARE].some((option) => option === action);
 
@@ -124,6 +128,7 @@ function MoneyRequestParticipantsSelector({participants = CONST.EMPTY_ARRAY, onF
             undefined,
             iouType === CONST.IOU.TYPE.INVOICE,
             action,
+            isPaidGroupPolicy,
         );
 
         return optionList;
@@ -139,6 +144,7 @@ function MoneyRequestParticipantsSelector({participants = CONST.EMPTY_ARRAY, onF
         options.personalDetails,
         options.reports,
         participants,
+        isPaidGroupPolicy,
     ]);
 
     const chatOptions = useMemo(() => {
@@ -159,9 +165,10 @@ function MoneyRequestParticipantsSelector({participants = CONST.EMPTY_ARRAY, onF
             selectedOptions: participants as Participant[],
             excludeLogins: CONST.EXPENSIFY_EMAILS,
             maxRecentReportsToShow: CONST.IOU.MAX_RECENT_REPORTS_TO_SHOW,
+            preferPolicyExpenseChat: isPaidGroupPolicy,
         });
         return newOptions;
-    }, [areOptionsInitialized, defaultOptions, debouncedSearchTerm, participants]);
+    }, [areOptionsInitialized, defaultOptions, debouncedSearchTerm, participants, isPaidGroupPolicy]);
 
     /**
      * Returns the sections needed for the OptionsSelector
diff --git a/src/pages/settings/Security/TwoFactorAuth/Steps/CodesStep.tsx b/src/pages/settings/Security/TwoFactorAuth/Steps/CodesStep.tsx
index edda91d4a8ed..dd3d3b87a12f 100644
--- a/src/pages/settings/Security/TwoFactorAuth/Steps/CodesStep.tsx
+++ b/src/pages/settings/Security/TwoFactorAuth/Steps/CodesStep.tsx
@@ -1,3 +1,5 @@
+import type {RouteProp} from '@react-navigation/native';
+import {useRoute} from '@react-navigation/native';
 import React, {useEffect, useState} from 'react';
 import {ActivityIndicator, View} from 'react-native';
 import {withOnyx} from 'react-native-onyx';
@@ -10,13 +12,14 @@ import PressableWithDelayToggle from '@components/Pressable/PressableWithDelayTo
 import ScrollView from '@components/ScrollView';
 import Section from '@components/Section';
 import Text from '@components/Text';
+import ValidateAccountMessage from '@components/ValidateAccountMessage';
 import useLocalize from '@hooks/useLocalize';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useTheme from '@hooks/useTheme';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Clipboard from '@libs/Clipboard';
 import localFileDownload from '@libs/localFileDownload';
-import type {BackToParams} from '@libs/Navigation/types';
+import type {BackToParams, SettingsNavigatorParamList} from '@libs/Navigation/types';
 import StepWrapper from '@pages/settings/Security/TwoFactorAuth/StepWrapper/StepWrapper';
 import useTwoFactorAuthContext from '@pages/settings/Security/TwoFactorAuth/TwoFactorAuthContext/useTwoFactorAuth';
 import type {BaseTwoFactorAuthFormOnyxProps} from '@pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/types';
@@ -24,26 +27,30 @@ import * as Session from '@userActions/Session';
 import * as TwoFactorAuthActions from '@userActions/TwoFactorAuthActions';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
+import ROUTES from '@src/ROUTES';
+import type SCREENS from '@src/SCREENS';
 
 type CodesStepProps = BaseTwoFactorAuthFormOnyxProps & BackToParams;
 
-function CodesStep({account, backTo}: CodesStepProps) {
+function CodesStep({account, user, backTo}: CodesStepProps) {
     const theme = useTheme();
     const styles = useThemeStyles();
     const {translate} = useLocalize();
     const {isExtraSmallScreenWidth, isSmallScreenWidth} = useResponsiveLayout();
     const [error, setError] = useState('');
+    const isUserValidated = user?.validated;
+    const route = useRoute<RouteProp<SettingsNavigatorParamList, typeof SCREENS.SETTINGS.TWO_FACTOR_AUTH>>();
 
     const {setStep} = useTwoFactorAuthContext();
 
     useEffect(() => {
         // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
-        if (account?.requiresTwoFactorAuth || account?.recoveryCodes) {
+        if (account?.requiresTwoFactorAuth || account?.recoveryCodes || !isUserValidated) {
             return;
         }
         Session.toggleTwoFactorAuth(true);
         // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps -- We want to run this when component mounts
-    }, []);
+    }, [isUserValidated]);
 
     return (
         <StepWrapper
@@ -57,70 +64,73 @@ function CodesStep({account, backTo}: CodesStepProps) {
             onBackButtonPress={() => TwoFactorAuthActions.quitAndNavigateBack(backTo)}
         >
             <ScrollView contentContainerStyle={styles.flexGrow1}>
-                <Section
-                    title={translate('twoFactorAuth.keepCodesSafe')}
-                    icon={Illustrations.ShieldYellow}
-                    containerStyles={[styles.twoFactorAuthSection]}
-                    iconContainerStyles={[styles.ml6]}
-                >
-                    <View style={styles.mv3}>
-                        <Text>{translate('twoFactorAuth.codesLoseAccess')}</Text>
-                    </View>
-                    <View style={styles.twoFactorAuthCodesBox({isExtraSmallScreenWidth, isSmallScreenWidth})}>
-                        {account?.isLoading ? (
-                            <View style={styles.twoFactorLoadingContainer}>
-                                <ActivityIndicator color={theme.spinner} />
-                            </View>
-                        ) : (
-                            <>
-                                <View style={styles.twoFactorAuthCodesContainer}>
-                                    {!!account?.recoveryCodes &&
-                                        account?.recoveryCodes?.split(', ').map((code) => (
-                                            <Text
-                                                style={styles.twoFactorAuthCode}
-                                                key={code}
-                                            >
-                                                {code}
-                                            </Text>
-                                        ))}
+                {isUserValidated && (
+                    <Section
+                        title={translate('twoFactorAuth.keepCodesSafe')}
+                        icon={Illustrations.ShieldYellow}
+                        containerStyles={[styles.twoFactorAuthSection]}
+                        iconContainerStyles={[styles.ml6]}
+                    >
+                        <View style={styles.mv3}>
+                            <Text>{translate('twoFactorAuth.codesLoseAccess')}</Text>
+                        </View>
+                        <View style={styles.twoFactorAuthCodesBox({isExtraSmallScreenWidth, isSmallScreenWidth})}>
+                            {account?.isLoading ? (
+                                <View style={styles.twoFactorLoadingContainer}>
+                                    <ActivityIndicator color={theme.spinner} />
                                 </View>
-                                <View style={styles.twoFactorAuthCodesButtonsContainer}>
-                                    <PressableWithDelayToggle
-                                        text={translate('twoFactorAuth.copy')}
-                                        textChecked={translate('common.copied')}
-                                        icon={Expensicons.Copy}
-                                        inline={false}
-                                        onPress={() => {
-                                            Clipboard.setString(account?.recoveryCodes ?? '');
-                                            setError('');
-                                            TwoFactorAuthActions.setCodesAreCopied();
-                                        }}
-                                        styles={[styles.button, styles.buttonMedium, styles.twoFactorAuthCodesButton]}
-                                        textStyles={[styles.buttonMediumText]}
-                                        accessible={false}
-                                        tooltipText=""
-                                        tooltipTextChecked=""
-                                    />
-                                    <PressableWithDelayToggle
-                                        text={translate('common.download')}
-                                        icon={Expensicons.Download}
-                                        onPress={() => {
-                                            localFileDownload('two-factor-auth-codes', account?.recoveryCodes ?? '');
-                                            setError('');
-                                            TwoFactorAuthActions.setCodesAreCopied();
-                                        }}
-                                        inline={false}
-                                        styles={[styles.button, styles.buttonMedium, styles.twoFactorAuthCodesButton]}
-                                        textStyles={[styles.buttonMediumText]}
-                                        accessible={false}
-                                        tooltipText=""
-                                        tooltipTextChecked=""
-                                    />
-                                </View>
-                            </>
-                        )}
-                    </View>
-                </Section>
+                            ) : (
+                                <>
+                                    <View style={styles.twoFactorAuthCodesContainer}>
+                                        {!!account?.recoveryCodes &&
+                                            account?.recoveryCodes?.split(', ').map((code) => (
+                                                <Text
+                                                    style={styles.twoFactorAuthCode}
+                                                    key={code}
+                                                >
+                                                    {code}
+                                                </Text>
+                                            ))}
+                                    </View>
+                                    <View style={styles.twoFactorAuthCodesButtonsContainer}>
+                                        <PressableWithDelayToggle
+                                            text={translate('twoFactorAuth.copy')}
+                                            textChecked={translate('common.copied')}
+                                            icon={Expensicons.Copy}
+                                            inline={false}
+                                            onPress={() => {
+                                                Clipboard.setString(account?.recoveryCodes ?? '');
+                                                setError('');
+                                                TwoFactorAuthActions.setCodesAreCopied();
+                                            }}
+                                            styles={[styles.button, styles.buttonMedium, styles.twoFactorAuthCodesButton]}
+                                            textStyles={[styles.buttonMediumText]}
+                                            accessible={false}
+                                            tooltipText=""
+                                            tooltipTextChecked=""
+                                        />
+                                        <PressableWithDelayToggle
+                                            text={translate('common.download')}
+                                            icon={Expensicons.Download}
+                                            onPress={() => {
+                                                localFileDownload('two-factor-auth-codes', account?.recoveryCodes ?? '');
+                                                setError('');
+                                                TwoFactorAuthActions.setCodesAreCopied();
+                                            }}
+                                            inline={false}
+                                            styles={[styles.button, styles.buttonMedium, styles.twoFactorAuthCodesButton]}
+                                            textStyles={[styles.buttonMediumText]}
+                                            accessible={false}
+                                            tooltipText=""
+                                            tooltipTextChecked=""
+                                        />
+                                    </View>
+                                </>
+                            )}
+                        </View>
+                    </Section>
+                )}
+                {!isUserValidated && <ValidateAccountMessage backTo={ROUTES.SETTINGS_2FA.getRoute(route?.params?.backTo)} />}
                 <FixedFooter style={[styles.mtAuto, styles.pt5]}>
                     {!!error && (
                         <FormHelpMessage
@@ -132,6 +142,7 @@ function CodesStep({account, backTo}: CodesStepProps) {
                     <Button
                         success
                         large
+                        isDisabled={!isUserValidated}
                         text={translate('common.next')}
                         onPress={() => {
                             if (!account?.codesAreCopied) {
@@ -151,4 +162,7 @@ CodesStep.displayName = 'CodesStep';
 
 export default withOnyx<CodesStepProps, BaseTwoFactorAuthFormOnyxProps>({
     account: {key: ONYXKEYS.ACCOUNT},
+    user: {
+        key: ONYXKEYS.USER,
+    },
 })(CodesStep);
diff --git a/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/types.ts b/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/types.ts
index baac250a3d66..97510a2a3a29 100644
--- a/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/types.ts
+++ b/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/types.ts
@@ -1,9 +1,10 @@
 import type {ForwardedRef} from 'react';
 import type {OnyxEntry} from 'react-native-onyx';
-import type {Account} from '@src/types/onyx';
+import type {Account, User} from '@src/types/onyx';
 
 type BaseTwoFactorAuthFormOnyxProps = {
     account: OnyxEntry<Account>;
+    user?: OnyxEntry<User>;
 };
 
 type BaseTwoFactorAuthFormRef = {
diff --git a/src/pages/settings/Subscription/CardSection/CardSection.tsx b/src/pages/settings/Subscription/CardSection/CardSection.tsx
index 25a201bf6887..d90d3e839603 100644
--- a/src/pages/settings/Subscription/CardSection/CardSection.tsx
+++ b/src/pages/settings/Subscription/CardSection/CardSection.tsx
@@ -17,6 +17,7 @@ import * as User from '@libs/actions/User';
 import DateUtils from '@libs/DateUtils';
 import Navigation from '@libs/Navigation/Navigation';
 import {getPaymentMethodDescription} from '@libs/PaymentUtils';
+import * as SearchUtils from '@libs/SearchUtils';
 import * as SubscriptionUtils from '@libs/SubscriptionUtils';
 import * as Subscription from '@userActions/Subscription';
 import CONST from '@src/CONST';
@@ -148,7 +149,7 @@ function CardSection() {
                         wrapperStyle={styles.sectionMenuItemTopDescription}
                         title={translate('subscription.cardSection.viewPaymentHistory')}
                         titleStyle={styles.textStrong}
-                        onPress={() => Navigation.navigate(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: CONST.SEARCH.TAB.EXPENSE.ALL}))}
+                        onPress={() => Navigation.navigate(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: SearchUtils.buildCannedSearchQuery()}))}
                         hoverAndPressStyle={styles.hoveredComponentBG}
                     />
                 )}
diff --git a/src/pages/settings/Subscription/DisableAutoRenewSurveyPage/index.tsx b/src/pages/settings/Subscription/DisableAutoRenewSurveyPage/index.tsx
index 4895c119470c..655658363e87 100644
--- a/src/pages/settings/Subscription/DisableAutoRenewSurveyPage/index.tsx
+++ b/src/pages/settings/Subscription/DisableAutoRenewSurveyPage/index.tsx
@@ -8,6 +8,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@libs/Navigation/Navigation';
 import * as Subscription from '@userActions/Subscription';
 import type {FeedbackSurveyOptionID} from '@src/CONST';
+import ONYXKEYS from '@src/ONYXKEYS';
 
 function DisableAutoRenewSurveyPage() {
     const {translate} = useLocalize();
@@ -31,6 +32,7 @@ function DisableAutoRenewSurveyPage() {
             />
             <ScrollView contentContainerStyle={[styles.flexGrow1, styles.pt3]}>
                 <FeedbackSurvey
+                    formID={ONYXKEYS.FORMS.DISABLE_AUTO_RENEW_SURVEY_FORM}
                     title={translate('subscription.subscriptionSettings.helpUsImprove')}
                     description={translate('subscription.subscriptionSettings.whatsMainReason')}
                     onSubmit={handleSubmit}
diff --git a/src/pages/settings/Subscription/PaymentCard/ChangeBillingCurrency/index.tsx b/src/pages/settings/Subscription/PaymentCard/ChangeBillingCurrency/index.tsx
index 96aad062f9f9..5cb4e10c735f 100644
--- a/src/pages/settings/Subscription/PaymentCard/ChangeBillingCurrency/index.tsx
+++ b/src/pages/settings/Subscription/PaymentCard/ChangeBillingCurrency/index.tsx
@@ -1,4 +1,4 @@
-import React, {useCallback, useMemo} from 'react';
+import React, {useCallback, useEffect, useMemo} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import type {ValueOf} from 'type-fest';
@@ -7,6 +7,7 @@ import type {FormOnyxValues} from '@components/Form/types';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
 import useLocalize from '@hooks/useLocalize';
+import usePrevious from '@hooks/usePrevious';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@navigation/Navigation';
 import * as PaymentMethods from '@userActions/PaymentMethods';
@@ -19,11 +20,24 @@ function ChangeBillingCurrency() {
     const [fundList] = useOnyx(ONYXKEYS.FUND_LIST);
     const defaultCard = useMemo(() => Object.values(fundList ?? {}).find((card) => card.accountData?.additionalData?.isBillingCard), [fundList]);
 
-    const changeBillingCurrency = useCallback((currency?: ValueOf<typeof CONST.PAYMENT_CARD_CURRENCY>, values?: FormOnyxValues<typeof ONYXKEYS.FORMS.CHANGE_BILLING_CURRENCY_FORM>) => {
-        if (values?.securityCode) {
-            PaymentMethods.updateBillingCurrency(currency ?? CONST.PAYMENT_CARD_CURRENCY.USD, values.securityCode);
+    const [formData] = useOnyx(ONYXKEYS.FORMS.CHANGE_BILLING_CURRENCY_FORM);
+    const formDataComplete = formData?.isLoading === false && !formData.errors;
+    const prevIsLoading = usePrevious(formData?.isLoading);
+    const prevFormDataComplete = usePrevious(formDataComplete);
+
+    useEffect(() => {
+        if (!formDataComplete || prevFormDataComplete || !prevIsLoading) {
+            return;
         }
         Navigation.goBack();
+    }, [formDataComplete, prevFormDataComplete, prevIsLoading]);
+
+    const changeBillingCurrency = useCallback((currency?: ValueOf<typeof CONST.PAYMENT_CARD_CURRENCY>, values?: FormOnyxValues<typeof ONYXKEYS.FORMS.CHANGE_BILLING_CURRENCY_FORM>) => {
+        if (!values?.securityCode) {
+            Navigation.goBack();
+            return;
+        }
+        PaymentMethods.updateBillingCurrency(currency ?? CONST.PAYMENT_CARD_CURRENCY.USD, values.securityCode);
     }, []);
 
     return (
diff --git a/src/pages/settings/Subscription/RequestEarlyCancellationPage/index.tsx b/src/pages/settings/Subscription/RequestEarlyCancellationPage/index.tsx
index 4e691a57a48d..ab148f8d8edc 100644
--- a/src/pages/settings/Subscription/RequestEarlyCancellationPage/index.tsx
+++ b/src/pages/settings/Subscription/RequestEarlyCancellationPage/index.tsx
@@ -17,6 +17,7 @@ import * as Report from '@userActions/Report';
 import * as Subscription from '@userActions/Subscription';
 import type {CancellationType, FeedbackSurveyOptionID} from '@src/CONST';
 import CONST from '@src/CONST';
+import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 
 function RequestEarlyCancellationPage() {
@@ -98,6 +99,7 @@ function RequestEarlyCancellationPage() {
     const surveyContent = useMemo(
         () => (
             <FeedbackSurvey
+                formID={ONYXKEYS.FORMS.REQUEST_EARLY_CANCELLATION_FORM}
                 title={translate('subscription.subscriptionSettings.helpUsImprove')}
                 description={translate('subscription.requestEarlyCancellation.subtitle')}
                 onSubmit={handleSubmit}
diff --git a/src/pages/signin/EmailDeliveryFailurePage.tsx b/src/pages/signin/EmailDeliveryFailurePage.tsx
index 0a294e3a6b86..ff16af7dffd9 100644
--- a/src/pages/signin/EmailDeliveryFailurePage.tsx
+++ b/src/pages/signin/EmailDeliveryFailurePage.tsx
@@ -9,7 +9,7 @@ import TextLink from '@components/TextLink';
 import useKeyboardState from '@hooks/useKeyboardState';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import redirectToSignIn from '@userActions/SignInRedirect';
+import * as Session from '@userActions/Session';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import type {Credentials} from '@src/types/onyx';
@@ -74,7 +74,7 @@ function EmailDeliveryFailurePage({credentials}: EmailDeliveryFailurePageProps)
             </View>
             <View style={[styles.mv4, styles.flexRow, styles.justifyContentBetween, styles.alignItemsCenter]}>
                 <PressableWithFeedback
-                    onPress={() => redirectToSignIn()}
+                    onPress={() => Session.clearSignInData()}
                     role="button"
                     accessibilityLabel={translate('common.back')}
                     // disable hover dim for switch
diff --git a/src/pages/signin/SignInModal.tsx b/src/pages/signin/SignInModal.tsx
index 5bce895ab251..bad93b29f8af 100644
--- a/src/pages/signin/SignInModal.tsx
+++ b/src/pages/signin/SignInModal.tsx
@@ -1,4 +1,4 @@
-import React, {useEffect} from 'react';
+import React, {useEffect, useRef} from 'react';
 import type {OnyxEntry} from 'react-native-onyx';
 import {withOnyx} from 'react-native-onyx';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
@@ -12,6 +12,7 @@ import ONYXKEYS from '@src/ONYXKEYS';
 import SCREENS from '@src/SCREENS';
 import type {Session} from '@src/types/onyx';
 import SignInPage from './SignInPage';
+import type {SignInPageRef} from './SignInPage';
 
 type SignInModalOnyxProps = {
     session: OnyxEntry<Session>;
@@ -22,6 +23,7 @@ type SignInModalProps = SignInModalOnyxProps;
 function SignInModal({session}: SignInModalProps) {
     const theme = useTheme();
     const StyleUtils = useStyleUtils();
+    const siginPageRef = useRef<SignInPageRef | null>(null);
 
     useEffect(() => {
         const isAnonymousUser = session?.authTokenType === CONST.AUTH_TOKEN_TYPES.ANONYMOUS;
@@ -40,8 +42,19 @@ function SignInModal({session}: SignInModalProps) {
             shouldShowOfflineIndicator={false}
             testID={SignInModal.displayName}
         >
-            <HeaderWithBackButton onBackButtonPress={() => Navigation.goBack()} />
-            <SignInPage shouldEnableMaxHeight={false} />
+            <HeaderWithBackButton
+                onBackButtonPress={() => {
+                    if (!siginPageRef.current) {
+                        Navigation.goBack();
+                        return;
+                    }
+                    siginPageRef.current?.navigateBack();
+                }}
+            />
+            <SignInPage
+                shouldEnableMaxHeight={false}
+                ref={siginPageRef}
+            />
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/signin/SignInPage.tsx b/src/pages/signin/SignInPage.tsx
index 567612bb1aa6..729faae5e90b 100644
--- a/src/pages/signin/SignInPage.tsx
+++ b/src/pages/signin/SignInPage.tsx
@@ -1,5 +1,6 @@
 import {Str} from 'expensify-common';
-import React, {useEffect, useRef, useState} from 'react';
+import React, {forwardRef, useEffect, useImperativeHandle, useRef, useState} from 'react';
+import type {ForwardedRef, RefAttributes} from 'react';
 import {withOnyx} from 'react-native-onyx';
 import type {OnyxEntry} from 'react-native-onyx';
 import ColorSchemeWrapper from '@components/ColorSchemeWrapper';
@@ -34,6 +35,7 @@ import type {SignInPageLayoutRef} from './SignInPageLayout/types';
 import SignUpWelcomeForm from './SignUpWelcomeForm';
 import UnlinkLoginForm from './UnlinkLoginForm';
 import ValidateCodeForm from './ValidateCodeForm';
+import type {BaseValidateCodeFormRef} from './ValidateCodeForm/BaseValidateCodeForm';
 
 type SignInPageInnerOnyxProps = {
     /** The details about the account that the user is signing in with */
@@ -53,6 +55,10 @@ type SignInPageInnerProps = SignInPageInnerOnyxProps & {
     shouldEnableMaxHeight?: boolean;
 };
 
+type SignInPageRef = {
+    navigateBack: () => void;
+};
+
 type RenderOption = {
     shouldShowLoginForm: boolean;
     shouldShowEmailDeliveryFailurePage: boolean;
@@ -141,7 +147,7 @@ function getRenderOptions({
     };
 }
 
-function SignInPage({credentials, account, activeClients = [], preferredLocale, shouldEnableMaxHeight = true}: SignInPageInnerProps) {
+function SignInPage({credentials, account, activeClients = [], preferredLocale, shouldEnableMaxHeight = true}: SignInPageInnerProps, ref: ForwardedRef<SignInPageRef>) {
     const styles = useThemeStyles();
     const StyleUtils = useStyleUtils();
     const {translate, formatPhoneNumber} = useLocalize();
@@ -149,6 +155,8 @@ function SignInPage({credentials, account, activeClients = [], preferredLocale,
     const safeAreaInsets = useSafeAreaInsets();
     const signInPageLayoutRef = useRef<SignInPageLayoutRef>(null);
     const loginFormRef = useRef<InputHandle>(null);
+    const validateCodeFormRef = useRef<BaseValidateCodeFormRef>(null);
+
     /** This state is needed to keep track of if user is using recovery code instead of 2fa code,
      * and we need it here since welcome text(`welcomeText`) also depends on it */
     const [isUsingRecoveryCode, setIsUsingRecoveryCode] = useState(false);
@@ -262,6 +270,25 @@ function SignInPage({credentials, account, activeClients = [], preferredLocale,
         loginFormRef.current?.clearDataAndFocus();
     };
 
+    const navigateBack = () => {
+        if (
+            shouldShouldSignUpWelcomeForm ||
+            (!shouldShowAnotherLoginPageOpenedMessage && (shouldShowEmailDeliveryFailurePage || shouldShowUnlinkLoginForm || shouldShowChooseSSOOrMagicCode))
+        ) {
+            Session.clearSignInData();
+            return;
+        }
+
+        if (shouldShowValidateCodeForm) {
+            validateCodeFormRef.current?.clearSignInData();
+            return;
+        }
+
+        Navigation.goBack();
+    };
+    useImperativeHandle(ref, () => ({
+        navigateBack,
+    }));
     return (
         // Bottom SafeAreaView is removed so that login screen svg displays correctly on mobile.
         // The SVG should flow under the Home Indicator on iOS.
@@ -296,6 +323,7 @@ function SignInPage({credentials, account, activeClients = [], preferredLocale,
                         isVisible={!shouldShowAnotherLoginPageOpenedMessage}
                         isUsingRecoveryCode={isUsingRecoveryCode}
                         setIsUsingRecoveryCode={setIsUsingRecoveryCode}
+                        ref={validateCodeFormRef}
                     />
                 )}
                 {!shouldShowAnotherLoginPageOpenedMessage && (
@@ -312,14 +340,16 @@ function SignInPage({credentials, account, activeClients = [], preferredLocale,
 
 type SignInPageProps = SignInPageInnerProps;
 type SignInPageOnyxProps = SignInPageInnerOnyxProps;
+const SignInPageWithRef = forwardRef(SignInPage);
 
-function SignInPageThemeWrapper(props: SignInPageProps) {
+function SignInPageThemeWrapper(props: SignInPageProps, ref: ForwardedRef<SignInPageRef>) {
     return (
         <ThemeProvider theme={CONST.THEME.DARK}>
             <ThemeStylesProvider>
                 <ColorSchemeWrapper>
                     <CustomStatusBarAndBackground isNested />
-                    <SignInPage
+                    <SignInPageWithRef
+                        ref={ref}
                         // eslint-disable-next-line react/jsx-props-no-spreading
                         {...props}
                     />
@@ -331,7 +361,7 @@ function SignInPageThemeWrapper(props: SignInPageProps) {
 
 SignInPageThemeWrapper.displayName = 'SignInPage';
 
-export default withOnyx<SignInPageProps, SignInPageOnyxProps>({
+export default withOnyx<SignInPageProps & RefAttributes<SignInPageRef>, SignInPageOnyxProps>({
     account: {key: ONYXKEYS.ACCOUNT},
     credentials: {key: ONYXKEYS.CREDENTIALS},
     /**
@@ -345,4 +375,6 @@ export default withOnyx<SignInPageProps, SignInPageOnyxProps>({
     preferredLocale: {
         key: ONYXKEYS.NVP_PREFERRED_LOCALE,
     },
-})(SignInPageThemeWrapper);
+})(forwardRef(SignInPageThemeWrapper));
+
+export type {SignInPageRef};
diff --git a/src/pages/signin/SignUpWelcomeForm.tsx b/src/pages/signin/SignUpWelcomeForm.tsx
index 1d8010be14cb..68bb7d10796a 100644
--- a/src/pages/signin/SignUpWelcomeForm.tsx
+++ b/src/pages/signin/SignUpWelcomeForm.tsx
@@ -7,7 +7,6 @@ import useLocalize from '@hooks/useLocalize';
 import useNetwork from '@hooks/useNetwork';
 import useThemeStyles from '@hooks/useThemeStyles';
 import * as Session from '@userActions/Session';
-import redirectToSignIn from '@userActions/SignInRedirect';
 import ONYXKEYS from '@src/ONYXKEYS';
 import type {Account} from '@src/types/onyx';
 import ChangeExpensifyLoginLink from './ChangeExpensifyLoginLink';
@@ -38,11 +37,7 @@ function SignUpWelcomeForm({account}: SignUpWelcomeFormProps) {
                     pressOnEnter
                     style={[styles.mb2]}
                 />
-                <ChangeExpensifyLoginLink
-                    onPress={() => {
-                        redirectToSignIn();
-                    }}
-                />
+                <ChangeExpensifyLoginLink onPress={() => Session.clearSignInData()} />
             </View>
             <View style={[styles.mt4, styles.signInPageWelcomeTextContainer]}>
                 <Terms />
diff --git a/src/pages/signin/ValidateCodeForm/BaseValidateCodeForm.tsx b/src/pages/signin/ValidateCodeForm/BaseValidateCodeForm.tsx
index bf0be21adb97..f23b136c76d0 100755
--- a/src/pages/signin/ValidateCodeForm/BaseValidateCodeForm.tsx
+++ b/src/pages/signin/ValidateCodeForm/BaseValidateCodeForm.tsx
@@ -1,5 +1,6 @@
 import {useIsFocused} from '@react-navigation/native';
-import React, {useCallback, useEffect, useRef, useState} from 'react';
+import React, {forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState} from 'react';
+import type {ForwardedRef} from 'react';
 import {View} from 'react-native';
 import type {OnyxEntry} from 'react-native-onyx';
 import {withOnyx} from 'react-native-onyx';
@@ -51,11 +52,18 @@ type BaseValidateCodeFormProps = WithToggleVisibilityViewProps &
         autoComplete: 'sms-otp' | 'one-time-code';
     };
 
+type BaseValidateCodeFormRef = {
+    clearSignInData: () => void;
+};
+
 type ValidateCodeFormVariant = 'validateCode' | 'twoFactorAuthCode' | 'recoveryCode';
 
 type FormError = Partial<Record<ValidateCodeFormVariant, TranslationPaths>>;
 
-function BaseValidateCodeForm({account, credentials, session, autoComplete, isUsingRecoveryCode, setIsUsingRecoveryCode, isVisible}: BaseValidateCodeFormProps) {
+function BaseValidateCodeForm(
+    {account, credentials, session, autoComplete, isUsingRecoveryCode, setIsUsingRecoveryCode, isVisible}: BaseValidateCodeFormProps,
+    forwardedRef: ForwardedRef<BaseValidateCodeFormRef>,
+) {
     const styles = useThemeStyles();
     const StyleUtils = useStyleUtils();
     const {translate} = useLocalize();
@@ -168,21 +176,25 @@ function BaseValidateCodeForm({account, credentials, session, autoComplete, isUs
     /**
      * Clear local sign in states
      */
-    const clearLocalSignInData = () => {
+    const clearLocalSignInData = useCallback(() => {
         setTwoFactorAuthCode('');
         setFormError({});
         setValidateCode('');
         setIsUsingRecoveryCode(false);
         setRecoveryCode('');
-    };
+    }, [setIsUsingRecoveryCode]);
 
     /**
      * Clears local and Onyx sign in states
      */
-    const clearSignInData = () => {
+    const clearSignInData = useCallback(() => {
         clearLocalSignInData();
         SessionActions.clearSignInData();
-    };
+    }, [clearLocalSignInData]);
+
+    useImperativeHandle(forwardedRef, () => ({
+        clearSignInData,
+    }));
 
     useEffect(() => {
         if (!needToClearError) {
@@ -415,5 +427,7 @@ export default withToggleVisibilityView(
         account: {key: ONYXKEYS.ACCOUNT},
         credentials: {key: ONYXKEYS.CREDENTIALS},
         session: {key: ONYXKEYS.SESSION},
-    })(BaseValidateCodeForm),
+    })(forwardRef(BaseValidateCodeForm)),
 );
+
+export type {BaseValidateCodeFormRef};
diff --git a/src/pages/signin/ValidateCodeForm/index.android.tsx b/src/pages/signin/ValidateCodeForm/index.android.tsx
index 1edd17517539..1cb05a0470f0 100644
--- a/src/pages/signin/ValidateCodeForm/index.android.tsx
+++ b/src/pages/signin/ValidateCodeForm/index.android.tsx
@@ -1,11 +1,14 @@
-import React from 'react';
+import React, {forwardRef} from 'react';
+import type {ForwardedRef} from 'react';
 import BaseValidateCodeForm from './BaseValidateCodeForm';
+import type {BaseValidateCodeFormRef} from './BaseValidateCodeForm';
 import type ValidateCodeFormProps from './types';
 
-function ValidateCodeForm(props: ValidateCodeFormProps) {
+function ValidateCodeForm(props: ValidateCodeFormProps, ref: ForwardedRef<BaseValidateCodeFormRef>) {
     return (
         <BaseValidateCodeForm
             autoComplete="sms-otp"
+            ref={ref}
             /* eslint-disable-next-line react/jsx-props-no-spreading */
             {...props}
         />
@@ -14,4 +17,4 @@ function ValidateCodeForm(props: ValidateCodeFormProps) {
 
 ValidateCodeForm.displayName = 'ValidateCodeForm';
 
-export default ValidateCodeForm;
+export default forwardRef(ValidateCodeForm);
diff --git a/src/pages/signin/ValidateCodeForm/index.tsx b/src/pages/signin/ValidateCodeForm/index.tsx
index 8c1528ae7409..c656b049345e 100644
--- a/src/pages/signin/ValidateCodeForm/index.tsx
+++ b/src/pages/signin/ValidateCodeForm/index.tsx
@@ -1,11 +1,14 @@
-import React from 'react';
+import React, {forwardRef} from 'react';
+import type {ForwardedRef} from 'react';
 import BaseValidateCodeForm from './BaseValidateCodeForm';
+import type {BaseValidateCodeFormRef} from './BaseValidateCodeForm';
 import type ValidateCodeFormProps from './types';
 
-function ValidateCodeForm(props: ValidateCodeFormProps) {
+function ValidateCodeForm(props: ValidateCodeFormProps, ref: ForwardedRef<BaseValidateCodeFormRef>) {
     return (
         <BaseValidateCodeForm
             autoComplete="one-time-code"
+            ref={ref}
             /* eslint-disable-next-line react/jsx-props-no-spreading */
             {...props}
         />
@@ -14,4 +17,4 @@ function ValidateCodeForm(props: ValidateCodeFormProps) {
 
 ValidateCodeForm.displayName = 'ValidateCodeForm';
 
-export default ValidateCodeForm;
+export default forwardRef(ValidateCodeForm);
diff --git a/src/pages/tasks/NewTaskPage.tsx b/src/pages/tasks/NewTaskPage.tsx
index 48dafe2b7025..5510ce910b97 100644
--- a/src/pages/tasks/NewTaskPage.tsx
+++ b/src/pages/tasks/NewTaskPage.tsx
@@ -1,8 +1,9 @@
+import {useFocusEffect} from '@react-navigation/native';
 import type {StackScreenProps} from '@react-navigation/stack';
-import React, {useEffect, useMemo, useState} from 'react';
-import {View} from 'react-native';
-import {withOnyx} from 'react-native-onyx';
+import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
+import {InteractionManager, View} from 'react-native';
 import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
+import {withOnyx} from 'react-native-onyx';
 import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView';
 import FormAlertWithSubmitButton from '@components/FormAlertWithSubmitButton';
 import FormHelpMessage from '@components/FormHelpMessage';
@@ -14,6 +15,7 @@ import ScrollView from '@components/ScrollView';
 import useLocalize from '@hooks/useLocalize';
 import useStyledSafeAreaInsets from '@hooks/useStyledSafeAreaInsets';
 import useThemeStyles from '@hooks/useThemeStyles';
+import blurActiveElement from '@libs/Accessibility/blurActiveElement';
 import * as LocalePhoneNumber from '@libs/LocalePhoneNumber';
 import Navigation from '@libs/Navigation/Navigation';
 import type {NewTaskNavigatorParamList} from '@libs/Navigation/types';
@@ -21,6 +23,7 @@ import * as OptionsListUtils from '@libs/OptionsListUtils';
 import * as ReportUtils from '@libs/ReportUtils';
 import playSound, {SOUNDS} from '@libs/Sound';
 import * as TaskActions from '@userActions/Task';
+import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
@@ -59,6 +62,19 @@ function NewTaskPage({task, reports, personalDetails}: NewTaskPageProps) {
 
     const {paddingBottom} = useStyledSafeAreaInsets();
 
+    const confirmButtonRef = useRef<View>(null);
+    const focusTimeoutRef = useRef<NodeJS.Timeout | null>(null);
+    useFocusEffect(
+        useCallback(() => {
+            focusTimeoutRef.current = setTimeout(() => {
+                InteractionManager.runAfterInteractions(() => {
+                    blurActiveElement();
+                });
+            }, CONST.ANIMATED_TRANSITION);
+            return () => focusTimeoutRef.current && clearTimeout(focusTimeoutRef.current);
+        }, []),
+    );
+
     useEffect(() => {
         setErrorMessage('');
 
@@ -205,6 +221,7 @@ function NewTaskPage({task, reports, personalDetails}: NewTaskPageProps) {
                             message={errorMessage}
                             onSubmit={onSubmit}
                             enabledWhenOffline
+                            buttonRef={confirmButtonRef}
                             buttonText={translate('newTaskPage.confirmTask')}
                             containerStyles={[styles.mh0, styles.mt5, styles.flex1, styles.ph5, !paddingBottom ? styles.mb5 : null]}
                         />
diff --git a/src/pages/tasks/TaskAssigneeSelectorModal.tsx b/src/pages/tasks/TaskAssigneeSelectorModal.tsx
index 7404dff38937..8884a69debaa 100644
--- a/src/pages/tasks/TaskAssigneeSelectorModal.tsx
+++ b/src/pages/tasks/TaskAssigneeSelectorModal.tsx
@@ -2,7 +2,7 @@
 import type {RouteProp} from '@react-navigation/native';
 import {useRoute} from '@react-navigation/native';
 import React, {useCallback, useEffect, useMemo, useState} from 'react';
-import {View} from 'react-native';
+import {InteractionManager, View} from 'react-native';
 import {useOnyx, withOnyx} from 'react-native-onyx';
 import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
 import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView';
@@ -194,21 +194,24 @@ function TaskAssigneeSelectorModal({reports, task}: TaskAssigneeSelectorModalPro
                         undefined, // passing null as report because for editing task the report will be task details report page not the actual report where task was created
                         OptionsListUtils.isCurrentUser({...option, accountID: option?.accountID ?? -1, login: option?.login ?? ''}),
                     );
-
                     // Pass through the selected assignee
                     TaskActions.editTaskAssignee(report, session?.accountID ?? -1, option?.login ?? '', option?.accountID, assigneeChatReport);
                 }
-                Navigation.dismissModal(report.reportID);
+                InteractionManager.runAfterInteractions(() => {
+                    Navigation.dismissModal(report.reportID);
+                });
                 // If there's no report, we're creating a new task
             } else if (option.accountID) {
                 TaskActions.setAssigneeValue(
                     option?.login ?? '',
-                    option.accountID,
+                    option.accountID ?? -1,
                     task?.shareDestination ?? '',
                     undefined, // passing null as report is null in this condition
                     OptionsListUtils.isCurrentUser({...option, accountID: option?.accountID ?? -1, login: option?.login ?? undefined}),
                 );
-                Navigation.goBack(ROUTES.NEW_TASK);
+                InteractionManager.runAfterInteractions(() => {
+                    Navigation.goBack(ROUTES.NEW_TASK);
+                });
             }
         },
         [session?.accountID, task?.shareDestination, report],
diff --git a/src/pages/workspace/accounting/PolicyAccountingPage.tsx b/src/pages/workspace/accounting/PolicyAccountingPage.tsx
index ffde9cb25de0..9daec587d104 100644
--- a/src/pages/workspace/accounting/PolicyAccountingPage.tsx
+++ b/src/pages/workspace/accounting/PolicyAccountingPage.tsx
@@ -106,7 +106,7 @@ function accountingIntegrationData(
                 ),
                 onImportPagePress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_IMPORT.getRoute(policyID)),
                 onExportPagePress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_EXPORT.getRoute(policyID)),
-                onCardReconciliationPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO)),
+                onCardReconciliationPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.ROUTE.QBO)),
                 onAdvancedPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID)),
             };
         case CONST.POLICY.CONNECTIONS.NAME.XERO:
@@ -187,7 +187,7 @@ function accountingIntegrationData(
                         ? CONST.SAGE_INTACCT_CONFIG.NON_REIMBURSABLE_VENDOR
                         : CONST.SAGE_INTACCT_CONFIG.NON_REIMBURSABLE_CREDIT_CARD_VENDOR,
                 ],
-                onCardReconciliationPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT)),
+                onCardReconciliationPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT)),
                 onAdvancedPagePress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID)),
                 subscribedAdvancedSettings: [
                     CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC_ENABLED,
diff --git a/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx b/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
index 5d469baa11ca..c907095c4301 100644
--- a/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
+++ b/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
@@ -9,16 +9,19 @@ import Text from '@components/Text';
 import TextLink from '@components/TextLink';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
+import * as AccountingUtils from '@libs/AccountingUtils';
 import Navigation from '@navigation/Navigation';
 import type {SettingsNavigatorParamList} from '@navigation/types';
 import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
 import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
+import * as Card from '@userActions/Card';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
+import type {ConnectionName} from '@src/types/onyx/Policy';
 
 type CardReconciliationPageProps = WithPolicyConnectionsProps & StackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION>;
 
@@ -26,9 +29,11 @@ function CardReconciliationPage({policy, route}: CardReconciliationPageProps) {
     const styles = useThemeStyles();
     const {translate} = useLocalize();
 
-    const [reconciliationConnection] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${policy?.workspaceAccountID}`);
-    const [isContinuousReconciliationOn] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${policy?.workspaceAccountID}`);
-    const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${policy?.workspaceAccountID}`);
+    const workspaceAccountID = policy?.workspaceAccountID ?? -1;
+
+    const [isContinuousReconciliationOn] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`);
+    const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${workspaceAccountID}`);
+    const [currentConnectionName] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`);
     const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST);
 
     const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0;
@@ -36,28 +41,28 @@ function CardReconciliationPage({policy, route}: CardReconciliationPageProps) {
 
     const policyID = policy?.id ?? '-1';
     const {connection} = route.params;
-    const autoSync = !!policy?.connections?.[connection]?.config?.autoSync?.enabled;
+    const connectionName = AccountingUtils.getConnectionNameFromRouteParam(connection) as ConnectionName;
+    const autoSync = !!policy?.connections?.[connectionName]?.config?.autoSync?.enabled;
 
-    // eslint-disable-next-line rulesdir/prefer-early-return
-    const toggleContinuousReconciliation = () => {
-        if (!isContinuousReconciliationOn) {
+    const toggleContinuousReconciliation = (value: boolean) => {
+        Card.toggleContinuousReconciliation(workspaceAccountID, value, connectionName, currentConnectionName);
+        if (value) {
             Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS.getRoute(policyID, connection));
         }
-        // TODO: add API call when it's supported https://github.com/Expensify/Expensify/issues/407834
     };
 
     const navigateToAdvancedSettings = useCallback(() => {
         switch (connection) {
-            case CONST.POLICY.CONNECTIONS.NAME.QBO:
+            case CONST.POLICY.CONNECTIONS.ROUTE.QBO:
                 Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID));
                 break;
-            case CONST.POLICY.CONNECTIONS.NAME.XERO:
+            case CONST.POLICY.CONNECTIONS.ROUTE.XERO:
                 Navigation.navigate(ROUTES.POLICY_ACCOUNTING_XERO_ADVANCED.getRoute(policyID));
                 break;
-            case CONST.POLICY.CONNECTIONS.NAME.NETSUITE:
+            case CONST.POLICY.CONNECTIONS.ROUTE.NETSUITE:
                 Navigation.navigate(ROUTES.POLICY_ACCOUNTING_NETSUITE_ADVANCED.getRoute(policyID));
                 break;
-            case CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT:
+            case CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT:
                 Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID));
                 break;
             default:
@@ -98,10 +103,10 @@ function CardReconciliationPage({policy, route}: CardReconciliationPageProps) {
                             >
                                 {translate('workspace.accounting.autoSync').toLowerCase()}
                             </TextLink>{' '}
-                            {translate('common.conjunctionFor')} {CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connection]}
+                            {translate('common.conjunctionFor')} {CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName]}
                         </Text>
                     )}
-                    {!!reconciliationConnection && (
+                    {!!paymentBankAccountID && isContinuousReconciliationOn && (
                         <MenuItemWithTopDescription
                             style={styles.mt5}
                             title={bankAccountTitle}
diff --git a/src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx b/src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx
index 58b4107779f8..1d2468e2e4e4 100644
--- a/src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx
+++ b/src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx
@@ -8,6 +8,7 @@ import Text from '@components/Text';
 import TextLink from '@components/TextLink';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
+import * as AccountingUtils from '@libs/AccountingUtils';
 import {getLastFourDigits} from '@libs/BankAccountUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
 import Navigation from '@navigation/Navigation';
@@ -26,6 +27,7 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting
     const {translate} = useLocalize();
 
     const workspaceAccountID = PolicyUtils.getWorkspaceAccountID(policyID);
+    const connectionName = AccountingUtils.getConnectionNameFromRouteParam(connection);
 
     const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST);
     const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${workspaceAccountID}`);
@@ -58,7 +60,7 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting
             policyID={policyID}
             featureName={CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED}
             contentContainerStyle={[styles.flex1, styles.pb2]}
-            connectionName={connection}
+            connectionName={connectionName}
             shouldUseScrollView={false}
         >
             <Text style={[styles.textNormal, styles.mb5, styles.ph5]}>{translate('workspace.accounting.chooseReconciliationAccount.chooseBankAccount')}</Text>
diff --git a/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx b/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx
index 277a8bf235eb..c13538d45d4c 100644
--- a/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx
+++ b/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx
@@ -117,6 +117,8 @@ function PolicyDistanceRatesPage({
                         value.pendingFields?.rate ??
                         value.pendingFields?.enabled ??
                         value.pendingFields?.currency ??
+                        value.pendingFields?.taxRateExternalID ??
+                        value.pendingFields?.taxClaimablePercentage ??
                         (policy?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD ? policy?.pendingAction : undefined),
                     errors: value.errors ?? undefined,
                     rightElement: <ListItemRightCaretWithLabel labelText={value.enabled ? translate('workspace.common.enabled') : translate('workspace.common.disabled')} />,
diff --git a/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx
index c63b5c13d270..b42dcb406ada 100644
--- a/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx
+++ b/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx
@@ -52,26 +52,35 @@ function WorkspaceEditCardLimitPage({route}: WorkspaceEditCardLimitPageProps) {
         }
     }, [card?.nameValuePairs?.limitType]);
 
-    const updateCardLimit = (newLimit: string) => {
+    const getNewAvailableSpend = (newLimit: number) => {
+        const currentLimit = card?.nameValuePairs?.unapprovedExpenseLimit ?? 0;
+        const currentSpend = currentLimit - (card?.availableSpend ?? 0);
+
+        return newLimit - currentSpend;
+    };
+
+    const goBack = useCallback(() => Navigation.goBack(ROUTES.WORKSPACE_EXPENSIFY_CARD_DETAILS.getRoute(policyID, cardID)), [policyID, cardID]);
+
+    const updateCardLimit = (newLimit: number) => {
+        const newAvailableSpend = getNewAvailableSpend(newLimit);
+
         setIsConfirmModalVisible(false);
 
-        Card.updateExpensifyCardLimit(workspaceAccountID, Number(cardID), Number(newLimit) * 100, card?.nameValuePairs?.unapprovedExpenseLimit);
+        Card.updateExpensifyCardLimit(workspaceAccountID, Number(cardID), newLimit, newAvailableSpend, card?.nameValuePairs?.unapprovedExpenseLimit, card?.availableSpend);
 
-        Navigation.goBack();
+        goBack();
     };
 
     const submit = (values: FormOnyxValues<typeof ONYXKEYS.FORMS.EDIT_EXPENSIFY_CARD_LIMIT_FORM>) => {
-        const currentLimit = card?.nameValuePairs?.unapprovedExpenseLimit ?? 0;
-        const currentSpend = currentLimit - (card?.availableSpend ?? 0);
         const newLimit = Number(values[INPUT_IDS.LIMIT]) * 100;
-        const newAvailableSpend = newLimit - currentSpend;
+        const newAvailableSpend = getNewAvailableSpend(newLimit);
 
         if (newAvailableSpend <= 0) {
             setIsConfirmModalVisible(true);
             return;
         }
 
-        updateCardLimit(values[INPUT_IDS.LIMIT]);
+        updateCardLimit(newLimit);
     };
 
     const validate = useCallback(
@@ -101,7 +110,7 @@ function WorkspaceEditCardLimitPage({route}: WorkspaceEditCardLimitPageProps) {
             >
                 <HeaderWithBackButton
                     title={translate('workspace.expensifyCard.cardLimit')}
-                    onBackButtonPress={() => Navigation.goBack(ROUTES.WORKSPACE_EXPENSIFY_CARD_DETAILS.getRoute(policyID, cardID))}
+                    onBackButtonPress={goBack}
                 />
                 <FormProvider
                     formID={ONYXKEYS.FORMS.EDIT_EXPENSIFY_CARD_LIMIT_FORM}
@@ -126,7 +135,7 @@ function WorkspaceEditCardLimitPage({route}: WorkspaceEditCardLimitPageProps) {
                             <ConfirmModal
                                 title={translate('workspace.expensifyCard.changeCardLimit')}
                                 isVisible={isConfirmModalVisible}
-                                onConfirm={() => updateCardLimit(inputValues[INPUT_IDS.LIMIT])}
+                                onConfirm={() => updateCardLimit(Number(inputValues[INPUT_IDS.LIMIT]) * 100)}
                                 onCancel={() => setIsConfirmModalVisible(false)}
                                 prompt={translate(getPromptTextKey, CurrencyUtils.convertToDisplayString(Number(inputValues[INPUT_IDS.LIMIT]) * 100, CONST.CURRENCY.USD))}
                                 confirmText={translate('workspace.expensifyCard.changeLimit')}
diff --git a/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitTypePage.tsx b/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitTypePage.tsx
index 390c434692d7..3394cb08f5fd 100644
--- a/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitTypePage.tsx
+++ b/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitTypePage.tsx
@@ -17,6 +17,7 @@ import * as PolicyUtils from '@libs/PolicyUtils';
 import Navigation from '@navigation/Navigation';
 import type {SettingsNavigatorParamList} from '@navigation/types';
 import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
+import * as Card from '@userActions/Card';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
@@ -48,6 +49,8 @@ function WorkspaceEditCardLimitTypePage({route}: WorkspaceEditCardLimitTypePageP
     const [typeSelected, setTypeSelected] = useState(initialLimitType);
     const [isConfirmModalVisible, setIsConfirmModalVisible] = useState(false);
 
+    const goBack = useCallback(() => Navigation.goBack(ROUTES.WORKSPACE_EXPENSIFY_CARD_DETAILS.getRoute(policyID, cardID)), [policyID, cardID]);
+
     const fetchCardLimitTypeData = useCallback(() => {
         Policy.openPolicyEditCardLimitTypePage(policyID, Number(cardID));
     }, [policyID, cardID]);
@@ -55,7 +58,11 @@ function WorkspaceEditCardLimitTypePage({route}: WorkspaceEditCardLimitTypePageP
     useFocusEffect(fetchCardLimitTypeData);
 
     const updateCardLimitType = () => {
-        // TODO: add API call when it's supported https://github.com/Expensify/Expensify/issues/407833
+        setIsConfirmModalVisible(false);
+
+        Card.updateExpensifyCardLimitType(workspaceAccountID, Number(cardID), typeSelected, card?.nameValuePairs?.limitType);
+
+        goBack();
     };
 
     const submit = () => {
@@ -146,7 +153,7 @@ function WorkspaceEditCardLimitTypePage({route}: WorkspaceEditCardLimitTypePageP
             >
                 <HeaderWithBackButton
                     title={translate('workspace.card.issueNewCard.limitType')}
-                    onBackButtonPress={() => Navigation.goBack(ROUTES.WORKSPACE_EXPENSIFY_CARD_DETAILS.getRoute(policyID, cardID))}
+                    onBackButtonPress={goBack}
                 />
                 <FullPageOfflineBlockingView>
                     <SelectionList
diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage.tsx
index 7c5b26ff180a..510a7a778100 100644
--- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage.tsx
+++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage.tsx
@@ -1,5 +1,5 @@
 import type {StackScreenProps} from '@react-navigation/stack';
-import React, {useState} from 'react';
+import React, {useCallback, useEffect, useState} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import ExpensifyCardImage from '@assets/images/expensify-card.svg';
@@ -14,6 +14,7 @@ import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
 import ScreenWrapper from '@components/ScreenWrapper';
 import ScrollView from '@components/ScrollView';
 import useLocalize from '@hooks/useLocalize';
+import useNetwork from '@hooks/useNetwork';
 import useTheme from '@hooks/useTheme';
 import useThemeStyles from '@hooks/useThemeStyles';
 import * as CardUtils from '@libs/CardUtils';
@@ -24,6 +25,7 @@ import * as PolicyUtils from '@libs/PolicyUtils';
 import Navigation from '@navigation/Navigation';
 import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
 import variables from '@styles/variables';
+import * as Card from '@userActions/Card';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
@@ -43,7 +45,6 @@ function WorkspaceExpensifyCardDetailsPage({route}: WorkspaceExpensifyCardDetail
     const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST);
     const [cardsList] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`);
 
-    // TODO: add an API call to load the card details data: https://github.com/Expensify/App/issues/47231
     const card = cardsList?.[cardID];
     const cardholder = personalDetails?.[card?.accountID ?? -1];
     const isVirtual = !!card?.nameValuePairs?.isVirtual;
@@ -52,6 +53,14 @@ function WorkspaceExpensifyCardDetailsPage({route}: WorkspaceExpensifyCardDetail
     const displayName = PersonalDetailsUtils.getDisplayNameOrDefault(cardholder);
     const translationForLimitType = CardUtils.getTranslationKeyForLimitType(card?.nameValuePairs?.limitType);
 
+    const fetchCardDetails = useCallback(() => {
+        Card.openCardDetailsPage(Number(cardID));
+    }, [cardID]);
+
+    const {isOffline} = useNetwork({onReconnect: fetchCardDetails});
+
+    useEffect(() => fetchCardDetails(), [fetchCardDetails]);
+
     const deactivateCard = () => {
         setIsDeactivateModalVisible(false);
 
@@ -111,6 +120,7 @@ function WorkspaceExpensifyCardDetailsPage({route}: WorkspaceExpensifyCardDetail
                                 title={formattedAvailableSpendAmount}
                                 interactive={false}
                                 titleStyle={styles.newKansasLarge}
+                                containerStyle={isOffline ? styles.buttonOpacityDisabled : null}
                             />
                             <MenuItemWithTopDescription
                                 description={translate('workspace.expensifyCard.cardLimit')}
diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx
index 769e94c4ecc4..c27d5a7168ba 100644
--- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx
+++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx
@@ -15,8 +15,7 @@ import useLocalize from '@hooks/useLocalize';
 import usePolicy from '@hooks/usePolicy';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useThemeStyles from '@hooks/useThemeStyles';
-import localeCompare from '@libs/LocaleCompare';
-import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils';
+import * as CardUtils from '@libs/CardUtils';
 import Navigation from '@navigation/Navigation';
 import type {FullScreenNavigatorParamList} from '@navigation/types';
 import CONST from '@src/CONST';
@@ -48,17 +47,7 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa
 
     const policyCurrency = useMemo(() => policy?.outputCurrency ?? CONST.CURRENCY.USD, [policy]);
 
-    const sortedCards = useMemo(
-        () =>
-            Object.values(cardsList ?? {}).sort((cardA: Card, cardB: Card) => {
-                const userA = personalDetails?.[cardA.accountID ?? '-1'] ?? {};
-                const userB = personalDetails?.[cardB.accountID ?? '-1'] ?? {};
-                const aName = PersonalDetailsUtils.getDisplayNameOrDefault(userA);
-                const bName = PersonalDetailsUtils.getDisplayNameOrDefault(userB);
-                return localeCompare(aName, bName);
-            }),
-        [cardsList, personalDetails],
-    );
+    const sortedCards = useMemo(() => CardUtils.sortCardsByCardholderName(cardsList, personalDetails), [cardsList, personalDetails]);
 
     const getHeaderButtons = () => (
         <View style={[styles.w100, styles.flexRow, styles.gap2, shouldUseNarrowLayout && styles.mb3]}>
diff --git a/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx
index 815c3dedeb1b..b75226ed4636 100644
--- a/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx
+++ b/src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx
@@ -13,6 +13,7 @@ import Text from '@components/Text';
 import TextLink from '@components/TextLink';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
+import * as AccountingUtils from '@libs/AccountingUtils';
 import {getLastFourDigits} from '@libs/BankAccountUtils';
 import * as CardUtils from '@libs/CardUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
@@ -25,6 +26,7 @@ import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
 import type {BankName} from '@src/types/onyx/Bank';
+import type {ConnectionName} from '@src/types/onyx/Policy';
 
 type WorkspaceSettlementAccountPageProps = StackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.EXPENSIFY_CARD_SETTINGS_ACCOUNT>;
 
@@ -39,6 +41,9 @@ function WorkspaceSettlementAccountPage({route}: WorkspaceSettlementAccountPageP
     const [isUsedContinuousReconciliation] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`);
     const [reconciliationConnection] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`);
 
+    const connectionName = reconciliationConnection ?? '';
+    const connectionParam = AccountingUtils.getRouteParamForConnection(connectionName as ConnectionName);
+
     const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0;
     const paymentBankAccountNumber = bankAccountsList?.[paymentBankAccountID.toString()]?.accountData?.accountNumber ?? '';
 
@@ -97,7 +102,7 @@ function WorkspaceSettlementAccountPage({route}: WorkspaceSettlementAccountPageP
                     {isUsedContinuousReconciliation && (
                         <Text style={[styles.mh5, styles.mb6]}>
                             <Text>{translate('workspace.expensifyCard.settlementAccountInfoPt1')}</Text>{' '}
-                            <TextLink onPress={() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS.getRoute(policyID, reconciliationConnection))}>
+                            <TextLink onPress={() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS.getRoute(policyID, connectionParam))}>
                                 {translate('workspace.expensifyCard.reconciliationAccount')}
                             </TextLink>{' '}
                             <Text>{`(${CONST.MASKED_PAN_PREFIX}${getLastFourDigits(paymentBankAccountNumber)}) `}</Text>
diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
index f89dc736069a..2474029c3971 100644
--- a/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
+++ b/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
@@ -57,6 +57,7 @@ function WorkspaceMemberDetailsRoleSelectionModal({isVisible, items, onRoleChang
                         sections={[{data: items}]}
                         ListItem={RadioListItem}
                         onSelectRow={onRoleChange}
+                        isAlternateTextMultilineSupported
                         shouldSingleExecuteRowSelect
                         initiallyFocusedOptionKey={items.find((item) => item.isSelected)?.keyForList}
                     />
diff --git a/src/pages/workspace/tags/WorkspaceEditTagsPage.tsx b/src/pages/workspace/tags/WorkspaceEditTagsPage.tsx
index 55df353912ad..972506e31be1 100644
--- a/src/pages/workspace/tags/WorkspaceEditTagsPage.tsx
+++ b/src/pages/workspace/tags/WorkspaceEditTagsPage.tsx
@@ -42,9 +42,12 @@ function WorkspaceEditTagsPage({route, policyTags}: WorkspaceEditTagsPageProps)
             if (!values[INPUT_IDS.POLICY_TAGS_NAME] && values[INPUT_IDS.POLICY_TAGS_NAME].trim() === '') {
                 errors[INPUT_IDS.POLICY_TAGS_NAME] = translate('common.error.fieldRequired');
             }
+            if (policyTags && Object.values(policyTags).find((tag) => tag.orderWeight !== route.params.orderWeight && tag.name === values[INPUT_IDS.POLICY_TAGS_NAME])) {
+                errors[INPUT_IDS.POLICY_TAGS_NAME] = translate('workspace.tags.existingTagError');
+            }
             return errors;
         },
-        [translate],
+        [translate, policyTags, route.params.orderWeight],
     );
 
     const updateTaglistName = useCallback(
diff --git a/src/pages/workspace/workflows/WorkspaceAutoReportingMonthlyOffsetPage.tsx b/src/pages/workspace/workflows/WorkspaceAutoReportingMonthlyOffsetPage.tsx
index 7401586db9fd..a9f96061ec0a 100644
--- a/src/pages/workspace/workflows/WorkspaceAutoReportingMonthlyOffsetPage.tsx
+++ b/src/pages/workspace/workflows/WorkspaceAutoReportingMonthlyOffsetPage.tsx
@@ -15,6 +15,7 @@ import withPolicy from '@pages/workspace/withPolicy';
 import type {WithPolicyOnyxProps} from '@pages/workspace/withPolicy';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
+import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
 import {isEmptyObject} from '@src/types/utils/EmptyObject';
 
@@ -67,7 +68,7 @@ function WorkspaceAutoReportingMonthlyOffsetPage({policy, route}: WorkspaceAutoR
 
     const onSelectDayOfMonth = (item: WorkspaceAutoReportingMonthlyOffsetPageItem) => {
         Policy.setWorkspaceAutoReportingMonthlyOffset(policy?.id ?? '-1', item.isNumber ? parseInt(item.keyForList, 10) : (item.keyForList as AutoReportingOffsetKeys));
-        Navigation.goBack();
+        Navigation.goBack(ROUTES.WORKSPACE_WORKFLOWS_AUTOREPORTING_FREQUENCY.getRoute(policy?.id ?? ''));
     };
 
     return (
@@ -87,7 +88,7 @@ function WorkspaceAutoReportingMonthlyOffsetPage({policy, route}: WorkspaceAutoR
                 >
                     <HeaderWithBackButton
                         title={translate('workflowsPage.submissionFrequency')}
-                        onBackButtonPress={Navigation.goBack}
+                        onBackButtonPress={() => Navigation.goBack(ROUTES.WORKSPACE_WORKFLOWS_AUTOREPORTING_FREQUENCY.getRoute(policy?.id ?? ''))}
                     />
 
                     <SelectionList
diff --git a/src/styles/index.ts b/src/styles/index.ts
index fe65e48bc4a1..918c7927852b 100644
--- a/src/styles/index.ts
+++ b/src/styles/index.ts
@@ -4253,7 +4253,7 @@ const styles = (theme: ThemeColors) =>
         tabText: (isSelected: boolean) =>
             ({
                 marginLeft: 8,
-                ...(isSelected ? FontUtils.fontFamily.platform.EXP_NEUE_BOLD : FontUtils.fontFamily.platform.EXP_NEUE),
+                ...FontUtils.fontFamily.platform.EXP_NEUE_BOLD,
                 color: isSelected ? theme.text : theme.textSupporting,
                 lineHeight: variables.lineHeightNormal,
                 fontSize: variables.fontSizeNormal,
diff --git a/src/styles/utils/display.ts b/src/styles/utils/display.ts
index 82b8c87b0980..0f0166e135c9 100644
--- a/src/styles/utils/display.ts
+++ b/src/styles/utils/display.ts
@@ -23,31 +23,27 @@ export default {
      * Web-only style.
      */
     dInline: {
-        // NOTE: asserting "display" to a valid type, because it isn't possible to augment "display".
-        display: 'inline' as ViewStyle['display'],
+        display: 'inline',
     },
 
     /**
      * Web-only style.
      */
     dInlineFlex: {
-        // NOTE: asserting "display" to a valid type, because it isn't possible to augment "display".
-        display: 'inline-flex' as ViewStyle['display'],
+        display: 'inline-flex',
     },
 
     /**
      * Web-only style.
      */
     dBlock: {
-        // NOTE: asserting "display" to a valid type, because it isn't possible to augment "display".
-        display: 'block' as ViewStyle['display'],
+        display: 'block',
     },
 
     /**
      * Web-only style.
      */
     dGrid: {
-        // NOTE: asserting "display" to a valid type, because it isn't possible to augment "display".
-        display: 'grid' as ViewStyle['display'],
+        display: 'grid',
     },
 } satisfies Record<string, ViewStyle>;
diff --git a/src/styles/utils/generators/ReportActionContextMenuStyleUtils.ts b/src/styles/utils/generators/ReportActionContextMenuStyleUtils.ts
index b3f3a816d09a..1894f95a44c1 100644
--- a/src/styles/utils/generators/ReportActionContextMenuStyleUtils.ts
+++ b/src/styles/utils/generators/ReportActionContextMenuStyleUtils.ts
@@ -20,8 +20,7 @@ const getMiniWrapperStyle = (theme: ThemeColors, styles: ThemeStyles): ViewStyle
         borderWidth: 1,
         borderColor: theme.border,
         // In Safari, when welcome messages use a code block (triple backticks), they would overlap the context menu below when there is no scrollbar without the transform style.
-        // NOTE: asserting "transform" to a valid type, because it isn't possible to augment "transform".
-        transform: 'translateZ(0)' as unknown as ViewStyle['transform'],
+        transform: 'translateZ(0)',
     },
 ];
 
diff --git a/src/styles/utils/index.ts b/src/styles/utils/index.ts
index ed76abd484d0..56dd9a583c9a 100644
--- a/src/styles/utils/index.ts
+++ b/src/styles/utils/index.ts
@@ -1,5 +1,5 @@
 import {StyleSheet} from 'react-native';
-import type {AnimatableNumericValue, Animated, ColorValue, DimensionValue, ImageStyle, PressableStateCallbackType, StyleProp, TextStyle, ViewStyle} from 'react-native';
+import type {AnimatableNumericValue, Animated, ColorValue, ImageStyle, PressableStateCallbackType, StyleProp, TextStyle, ViewStyle} from 'react-native';
 import type {OnyxEntry} from 'react-native-onyx';
 import type {EdgeInsets} from 'react-native-safe-area-context';
 import type {ValueOf} from 'type-fest';
@@ -342,7 +342,6 @@ function getSafeAreaMargins(insets?: EdgeInsets): ViewStyle {
     return {marginBottom: (insets?.bottom ?? 0) * variables.safeInsertPercentage};
 }
 
-// NOTE: asserting some web style properties to a valid type, because it isn't possible to augment them.
 function getZoomSizingStyle(
     isZoomed: boolean,
     imgWidth: number,
@@ -356,23 +355,23 @@ function getZoomSizingStyle(
     if (isLoading || imgWidth === 0 || imgHeight === 0) {
         return undefined;
     }
-    const top = `${Math.max((containerHeight - imgHeight) / 2, 0)}px` as DimensionValue;
-    const left = `${Math.max((containerWidth - imgWidth) / 2, 0)}px` as DimensionValue;
+    const top = `${Math.max((containerHeight - imgHeight) / 2, 0)}px`;
+    const left = `${Math.max((containerWidth - imgWidth) / 2, 0)}px`;
 
     // Return different size and offset style based on zoomScale and isZoom.
     if (isZoomed) {
         // When both width and height are smaller than container(modal) size, set the height by multiplying zoomScale if it is zoomed in.
         if (zoomScale >= 1) {
             return {
-                height: `${imgHeight * zoomScale}px` as DimensionValue,
-                width: `${imgWidth * zoomScale}px` as DimensionValue,
+                height: `${imgHeight * zoomScale}px`,
+                width: `${imgWidth * zoomScale}px`,
             };
         }
 
         // If image height and width are bigger than container size, display image with original size because original size is bigger and position absolute.
         return {
-            height: `${imgHeight}px` as DimensionValue,
-            width: `${imgWidth}px` as DimensionValue,
+            height: `${imgHeight}px`,
+            width: `${imgWidth}px`,
             top,
             left,
         };
@@ -381,8 +380,8 @@ function getZoomSizingStyle(
     // If image is not zoomed in and image size is smaller than container size, display with original size based on offset and position absolute.
     if (zoomScale > 1) {
         return {
-            height: `${imgHeight}px` as DimensionValue,
-            width: `${imgWidth}px` as DimensionValue,
+            height: `${imgHeight}px`,
+            width: `${imgWidth}px`,
             top,
             left,
         };
@@ -390,11 +389,11 @@ function getZoomSizingStyle(
 
     // If image is bigger than container size, display full image in the screen with scaled size (fit by container size) and position absolute.
     // top, left offset should be different when displaying long or wide image.
-    const scaledTop = `${Math.max((containerHeight - imgHeight * zoomScale) / 2, 0)}px` as DimensionValue;
-    const scaledLeft = `${Math.max((containerWidth - imgWidth * zoomScale) / 2, 0)}px` as DimensionValue;
+    const scaledTop = `${Math.max((containerHeight - imgHeight * zoomScale) / 2, 0)}px`;
+    const scaledLeft = `${Math.max((containerWidth - imgWidth * zoomScale) / 2, 0)}px`;
     return {
-        height: `${imgHeight * zoomScale}px` as DimensionValue,
-        width: `${imgWidth * zoomScale}px` as DimensionValue,
+        height: `${imgHeight * zoomScale}px`,
+        width: `${imgWidth * zoomScale}px`,
         top: scaledTop,
         left: scaledLeft,
     };
@@ -538,6 +537,8 @@ function getButtonStyleWithIcon(
     }
 }
 
+type MarginPaddingValue = ViewStyle['marginTop' | 'marginBottom' | 'paddingTop' | 'paddingBottom'];
+
 /**
  * Combine margin/padding with safe area inset
  *
@@ -545,10 +546,14 @@ function getButtonStyleWithIcon(
  * @param safeAreaValue - safe area inset
  * @param shouldAddSafeAreaValue - indicator whether safe area inset should be applied
  */
-function getCombinedSpacing(modalContainerValue: DimensionValue | undefined, safeAreaValue: number, shouldAddSafeAreaValue: boolean): number | DimensionValue | undefined {
+function getCombinedSpacing(modalContainerValue: MarginPaddingValue, safeAreaValue: number, shouldAddSafeAreaValue: boolean): MarginPaddingValue {
     // modalContainerValue can only be added to safe area inset if it's a number, otherwise it's returned as is
-    if (typeof modalContainerValue === 'number' || !modalContainerValue) {
-        return (modalContainerValue ?? 0) + (shouldAddSafeAreaValue ? safeAreaValue : 0);
+    if (typeof modalContainerValue === 'number') {
+        return modalContainerValue + (shouldAddSafeAreaValue ? safeAreaValue : 0);
+    }
+
+    if (!modalContainerValue) {
+        return shouldAddSafeAreaValue ? safeAreaValue : 0;
     }
 
     return modalContainerValue;
@@ -563,10 +568,10 @@ type ModalPaddingStylesParams = {
     safeAreaPaddingBottom: number;
     safeAreaPaddingLeft: number;
     safeAreaPaddingRight: number;
-    modalContainerStyleMarginTop: DimensionValue | undefined;
-    modalContainerStyleMarginBottom: DimensionValue | undefined;
-    modalContainerStylePaddingTop: DimensionValue | undefined;
-    modalContainerStylePaddingBottom: DimensionValue | undefined;
+    modalContainerStyleMarginTop: MarginPaddingValue;
+    modalContainerStyleMarginBottom: MarginPaddingValue;
+    modalContainerStylePaddingTop: MarginPaddingValue;
+    modalContainerStylePaddingBottom: MarginPaddingValue;
     insets: EdgeInsets;
 };
 
@@ -964,8 +969,7 @@ function getCheckboxPressableStyle(borderRadius = 6): ViewStyle {
     return {
         justifyContent: 'center',
         alignItems: 'center',
-        // eslint-disable-next-line object-shorthand
-        borderRadius: borderRadius,
+        borderRadius,
     };
 }
 
@@ -1311,8 +1315,7 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({
         borderWidth: 2,
         justifyContent: 'center',
         alignItems: 'center',
-        // eslint-disable-next-line object-shorthand
-        borderRadius: borderRadius,
+        borderRadius,
     }),
 
     /**
@@ -1338,13 +1341,13 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({
     /**
      * Get the style for the AM and PM buttons in the TimePicker
      */
-    getStatusAMandPMButtonStyle: (amPmValue: string): {styleForAM: ViewStyle; styleForPM: ViewStyle} => {
+    getStatusAMandPMButtonStyle: (amPmValue: string): {styleForAM: StyleProp<ViewStyle>; styleForPM: StyleProp<ViewStyle>} => {
         const computedStyleForAM: ViewStyle = amPmValue !== CONST.TIME_PERIOD.AM ? {backgroundColor: theme.componentBG} : {};
         const computedStyleForPM: ViewStyle = amPmValue !== CONST.TIME_PERIOD.PM ? {backgroundColor: theme.componentBG} : {};
 
         return {
-            styleForAM: [styles.timePickerWidth100, computedStyleForAM] as unknown as ViewStyle,
-            styleForPM: [styles.timePickerWidth100, computedStyleForPM] as unknown as ViewStyle,
+            styleForAM: [styles.timePickerWidth100, computedStyleForAM],
+            styleForPM: [styles.timePickerWidth100, computedStyleForPM],
         };
     },
 
diff --git a/src/styles/utils/overflowAuto/index.ts b/src/styles/utils/overflowAuto/index.ts
index 670a0b9643eb..db55b65b8949 100644
--- a/src/styles/utils/overflowAuto/index.ts
+++ b/src/styles/utils/overflowAuto/index.ts
@@ -1,12 +1,10 @@
-import type {ViewStyle} from 'react-native';
 import type OverflowAutoStyles from './types';
 
 /**
  * Web-only style.
  */
 const overflowAuto: OverflowAutoStyles = {
-    // NOTE: asserting "overflow" to a valid type, because it isn't possible to augment "overflow".
-    overflow: 'auto' as ViewStyle['overflow'],
+    overflow: 'auto',
 };
 
 export default overflowAuto;
diff --git a/src/styles/utils/positioning.ts b/src/styles/utils/positioning.ts
index cbfa8875b9ad..c4affba653ac 100644
--- a/src/styles/utils/positioning.ts
+++ b/src/styles/utils/positioning.ts
@@ -15,8 +15,7 @@ export default {
      * Web-only style.
      */
     pFixed: {
-        // NOTE: asserting "position" to a valid type, because it isn't possible to augment "position".
-        position: 'fixed' as ViewStyle['position'],
+        position: 'fixed',
     },
 
     t0: {
diff --git a/src/styles/utils/spacing.ts b/src/styles/utils/spacing.ts
index 5b416f5a120e..25e11cdf4f89 100644
--- a/src/styles/utils/spacing.ts
+++ b/src/styles/utils/spacing.ts
@@ -664,4 +664,12 @@ export default {
     rowGap4: {
         rowGap: 16,
     },
+
+    minHeight5: {
+        minHeight: 20,
+    },
+
+    minHeight65: {
+        minHeight: 260,
+    },
 } satisfies Record<string, ViewStyle>;
diff --git a/src/types/form/FeedbackSurveyForm.ts b/src/types/form/FeedbackSurveyForm.ts
new file mode 100644
index 000000000000..b8cd68fd6630
--- /dev/null
+++ b/src/types/form/FeedbackSurveyForm.ts
@@ -0,0 +1,19 @@
+import type {ValueOf} from 'type-fest';
+import type {FeedbackSurveyOptionID} from '@src/CONST';
+import type Form from './Form';
+
+const INPUT_IDS = {
+    REASON: 'reason',
+    NOTE: 'note',
+} as const;
+
+type FeedbackSurveyForm = Form<
+    ValueOf<typeof INPUT_IDS>,
+    {
+        [INPUT_IDS.REASON]: FeedbackSurveyOptionID;
+        [INPUT_IDS.NOTE]: string;
+    }
+>;
+
+export type {FeedbackSurveyForm};
+export default INPUT_IDS;
diff --git a/src/types/form/index.ts b/src/types/form/index.ts
index 00e23bad68f3..61d3e9918164 100644
--- a/src/types/form/index.ts
+++ b/src/types/form/index.ts
@@ -5,6 +5,7 @@ export type {DisplayNameForm} from './DisplayNameForm';
 export type {EditTaskForm} from './EditTaskForm';
 export type {ExitSurveyReasonForm} from './ExitSurveyReasonForm';
 export type {ExitSurveyResponseForm} from './ExitSurveyResponseForm';
+export type {FeedbackSurveyForm} from './FeedbackSurveyForm';
 export type {GetPhysicalCardForm} from './GetPhysicalCardForm';
 export type {HomeAddressForm} from './HomeAddressForm';
 export type {IKnowTeacherForm} from './IKnowTeacherForm';
diff --git a/src/types/modules/react-native-web.d.ts b/src/types/modules/react-native-web.d.ts
deleted file mode 100644
index f7db951eadad..000000000000
--- a/src/types/modules/react-native-web.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/* eslint-disable import/prefer-default-export */
-/* eslint-disable @typescript-eslint/consistent-type-definitions */
-declare module 'react-native-web' {
-    class Clipboard {
-        static isAvailable(): boolean;
-        static getString(): Promise<string>;
-        static setString(text: string): boolean;
-    }
-
-    export {Clipboard};
-}
diff --git a/src/types/modules/react-native.d.ts b/src/types/modules/react-native.d.ts
index 87628fded0cc..44ac6c243aa8 100644
--- a/src/types/modules/react-native.d.ts
+++ b/src/types/modules/react-native.d.ts
@@ -1,12 +1,5 @@
-/* eslint-disable @typescript-eslint/naming-convention */
-
-/* eslint-disable @typescript-eslint/no-empty-interface */
-
 /* eslint-disable @typescript-eslint/consistent-type-definitions */
-// eslint-disable-next-line no-restricted-imports
-import type {CSSProperties, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, PointerEventHandler, TouchEventHandler, UIEventHandler, WheelEventHandler} from 'react';
-import 'react-native';
-import type {GestureResponderEvent, LayoutRectangle, NativeSyntheticEvent, TargetedEvent} from 'react-native';
+import type {TargetedEvent} from 'react-native';
 import type {BootSplashModule} from '@libs/BootSplash/types';
 import type {EnvironmentCheckerModule} from '@libs/Environment/betaChecker/types';
 import type StartupTimer from '@libs/StartupTimer/types';
@@ -22,360 +15,6 @@ type RNTextInputResetModule = {
 };
 
 declare module 'react-native' {
-    // <------ REACT NATIVE WEB (0.19.12) ------>
-    // Extracted from react-native-web, packages/react-native-web/src/exports/View/types.js
-    type idRef = string;
-    type idRefList = idRef | idRef[];
-
-    // https://necolas.github.io/react-native-web/docs/accessibility/#accessibility-props-api
-    // Extracted from react-native-web, packages/react-native-web/src/exports/View/types.js
-    interface AccessibilityProps {
-        'aria-activedescendant'?: idRef;
-        'aria-atomic'?: boolean;
-        'aria-autocomplete'?: 'none' | 'list' | 'inline' | 'both';
-        'aria-busy'?: boolean;
-        'aria-checked'?: boolean | 'mixed';
-        'aria-colcount'?: number;
-        'aria-colindex'?: number;
-        'aria-colspan'?: number;
-        'aria-controls'?: idRef;
-        'aria-current'?: boolean | 'page' | 'step' | 'location' | 'date' | 'time';
-        'aria-describedby'?: idRef;
-        'aria-details'?: idRef;
-        'aria-disabled'?: boolean;
-        'aria-errormessage'?: idRef;
-        'aria-expanded'?: boolean;
-        'aria-flowto'?: idRef;
-        'aria-haspopup'?: 'dialog' | 'grid' | 'listbox' | 'menu' | 'tree' | false;
-        'aria-hidden'?: boolean;
-        'aria-invalid'?: boolean;
-        'aria-keyshortcuts'?: string;
-        'aria-label'?: string;
-        'aria-labelledby'?: idRef;
-        'aria-level'?: number;
-        'aria-live'?: 'assertive' | 'off' | 'polite';
-        'aria-modal'?: boolean;
-        'aria-multiline'?: boolean;
-        'aria-multiselectable'?: boolean;
-        'aria-orientation'?: 'horizontal' | 'vertical';
-        'aria-owns'?: idRef;
-        'aria-placeholder'?: string;
-        'aria-posinset'?: number;
-        'aria-pressed'?: boolean | 'mixed';
-        'aria-readonly'?: boolean;
-        'aria-required'?: boolean;
-        'aria-roledescription'?: string;
-        'aria-rowcount'?: number;
-        'aria-rowindex'?: number;
-        'aria-rowspan'?: number;
-        'aria-selected'?: boolean;
-        'aria-setsize'?: number;
-        'aria-sort'?: 'ascending' | 'descending' | 'none' | 'other';
-        'aria-valuemax'?: number;
-        'aria-valuemin'?: number;
-        'aria-valuenow'?: number;
-        'aria-valuetext'?: string;
-
-        // @deprecated
-        accessibilityActiveDescendant?: idRef;
-        accessibilityAtomic?: boolean;
-        accessibilityAutoComplete?: 'none' | 'list' | 'inline' | 'both';
-        accessibilityBusy?: boolean;
-        accessibilityChecked?: boolean | 'mixed';
-        accessibilityColumnCount?: number;
-        accessibilityColumnIndex?: number;
-        accessibilityColumnSpan?: number;
-        accessibilityControls?: idRefList;
-        accessibilityCurrent?: boolean | 'page' | 'step' | 'location' | 'date' | 'time';
-        accessibilityDescribedBy?: idRefList;
-        accessibilityDetails?: idRef;
-        accessibilityDisabled?: boolean;
-        accessibilityErrorMessage?: idRef;
-        accessibilityExpanded?: boolean;
-        accessibilityFlowTo?: idRefList;
-        accessibilityHasPopup?: 'dialog' | 'grid' | 'listbox' | 'menu' | 'tree' | false;
-        accessibilityHidden?: boolean;
-        accessibilityInvalid?: boolean;
-        accessibilityKeyShortcuts?: string[];
-        accessibilityLabel?: string;
-        accessibilityLabelledBy?: idRef;
-        accessibilityLevel?: number;
-        accessibilityLiveRegion?: 'assertive' | 'none' | 'polite';
-        accessibilityModal?: boolean;
-        accessibilityMultiline?: boolean;
-        accessibilityMultiSelectable?: boolean;
-        accessibilityOrientation?: 'horizontal' | 'vertical';
-        accessibilityOwns?: idRefList;
-        accessibilityPlaceholder?: string;
-        accessibilityPosInSet?: number;
-        accessibilityPressed?: boolean | 'mixed';
-        accessibilityReadOnly?: boolean;
-        accessibilityRequired?: boolean;
-        accessibilityRoleDescription?: string;
-        accessibilityRowCount?: number;
-        accessibilityRowIndex?: number;
-        accessibilityRowSpan?: number;
-        accessibilitySelected?: boolean;
-        accessibilitySetSize?: number;
-        accessibilitySort?: 'ascending' | 'descending' | 'none' | 'other';
-        accessibilityValueMax?: number;
-        accessibilityValueMin?: number;
-        accessibilityValueNow?: number;
-        accessibilityValueText?: string;
-    }
-
-    // https://necolas.github.io/react-native-web/docs/interactions/#pointerevent-props-api
-    // Extracted properties from react-native-web, packages/react-native-web/src/exports/View/types.js and packages/react-native-web/src/modules/forwardedProps/index.js
-    // Extracted types from @types/react, index.d.ts
-    interface ClickProps {
-        onClick?: MouseEventHandler;
-        onAuxClick?: MouseEventHandler;
-        onContextMenu?: MouseEventHandler;
-        onGotPointerCapture?: PointerEventHandler;
-        onLostPointerCapture?: PointerEventHandler;
-        onPointerCancel?: PointerEventHandler;
-        onPointerDown?: PointerEventHandler;
-        onPointerEnter?: PointerEventHandler;
-        onPointerMove?: PointerEventHandler;
-        onPointerLeave?: PointerEventHandler;
-        onPointerOut?: PointerEventHandler;
-        onPointerOver?: PointerEventHandler;
-        onPointerUp?: PointerEventHandler;
-        onScroll?: UIEventHandler;
-        onWheel?: WheelEventHandler;
-    }
-
-    // https://necolas.github.io/react-native-web/docs/interactions/#focusevent-props-api
-    // Extracted properties from react-native-web, packages/react-native-web/src/exports/View/types.js and packages/react-native-web/src/modules/forwardedProps/index.js
-    // Extracted types from @types/react, index.d.ts
-    interface FocusProps {
-        onBlur?: FocusEventHandler;
-        onFocus?: FocusEventHandler;
-    }
-
-    // https://necolas.github.io/react-native-web/docs/interactions/#keyboardevent-props-api
-    // Extracted properties from react-native-web, packages/react-native-web/src/exports/View/types.js and packages/react-native-web/src/modules/forwardedProps/index.js
-    // Extracted types from @types/react, index.d.ts
-    interface KeyboardProps {
-        onKeyDown?: KeyboardEventHandler;
-        onKeyDownCapture?: KeyboardEventHandler;
-        onKeyUp?: KeyboardEventHandler;
-        onKeyUpCapture?: KeyboardEventHandler;
-    }
-
-    // Extracted properties from react-native-web, packages/react-native-web/src/exports/View/types.js and packages/react-native-web/src/modules/forwardedProps/index.js
-    // Extracted types from @types/react, index.d.ts
-    interface MouseProps {
-        onMouseDown?: MouseEventHandler;
-        onMouseEnter?: MouseEventHandler;
-        onMouseLeave?: MouseEventHandler;
-        onMouseMove?: MouseEventHandler;
-        onMouseOver?: MouseEventHandler;
-        onMouseOut?: MouseEventHandler;
-        onMouseUp?: MouseEventHandler;
-    }
-
-    // Extracted properties from react-native-web, packages/react-native-web/src/exports/View/types.js and packages/react-native-web/src/modules/forwardedProps/index.js
-    // Extracted types from @types/react, index.d.ts
-    interface TouchProps {
-        onTouchCancel?: TouchEventHandler;
-        onTouchCancelCapture?: TouchEventHandler;
-        onTouchEnd?: TouchEventHandler;
-        onTouchEndCapture?: TouchEventHandler;
-        onTouchMove?: TouchEventHandler;
-        onTouchMoveCapture?: TouchEventHandler;
-        onTouchStart?: TouchEventHandler;
-        onTouchStartCapture?: TouchEventHandler;
-    }
-
-    // https://necolas.github.io/react-native-web/docs/interactions/#responderevent-props-api
-    // Extracted from react-native-web, packages/react-native-web/src/modules/useResponderEvents/ResponderTouchHistoryStore.js
-    type TouchRecord = {
-        currentPageX: number;
-        currentPageY: number;
-        currentTimeStamp: number;
-        previousPageX: number;
-        previousPageY: number;
-        previousTimeStamp: number;
-        startPageX: number;
-        startPageY: number;
-        startTimeStamp: number;
-        touchActive: boolean;
-    };
-
-    // https://necolas.github.io/react-native-web/docs/interactions/#responderevent-props-api
-    // Extracted from react-native-web, packages/react-native-web/src/modules/useResponderEvents/ResponderTouchHistoryStore.js
-    type TouchHistory = Readonly<{
-        indexOfSingleActiveTouch: number;
-        mostRecentTimeStamp: number;
-        numberActiveTouches: number;
-        touchBank: TouchRecord[];
-    }>;
-
-    // https://necolas.github.io/react-native-web/docs/interactions/#responderevent-props-api
-    // Extracted from react-native-web, packages/react-native-web/src/modules/useResponderEvents/createResponderEvent.js
-    type ResponderEvent = {
-        bubbles: boolean;
-        cancelable: boolean;
-        currentTarget?: unknown; // changed from "any" to "unknown"
-        defaultPrevented?: boolean;
-        dispatchConfig: {
-            registrationName?: string;
-            phasedRegistrationNames?: {
-                bubbled: string;
-                captured: string;
-            };
-        };
-        eventPhase?: number;
-        isDefaultPrevented: () => boolean;
-        isPropagationStopped: () => boolean;
-        isTrusted?: boolean;
-        preventDefault: () => void;
-        stopPropagation: () => void;
-        nativeEvent: TouchEvent;
-        persist: () => void;
-        target?: unknown; // changed from "any" to "unknown"
-        timeStamp: number;
-        touchHistory: TouchHistory;
-    };
-
-    // https://necolas.github.io/react-native-web/docs/interactions/#responderevent-props-api
-    // Extracted from react-native-web, packages/react-native-web/src/modules/useResponderEvents/ResponderSystem.js
-    interface ResponderProps {
-        // Direct responder events dispatched directly to responder. Do not bubble.
-        onResponderEnd?: (e: ResponderEvent) => void;
-        onResponderGrant?: (e: ResponderEvent) => void | boolean;
-        onResponderMove?: (e: ResponderEvent) => void;
-        onResponderRelease?: (e: ResponderEvent) => void;
-        onResponderReject?: (e: ResponderEvent) => void;
-        onResponderStart?: (e: ResponderEvent) => void;
-        onResponderTerminate?: (e: ResponderEvent) => void;
-        onResponderTerminationRequest?: (e: ResponderEvent) => boolean;
-
-        // On pointer down, should this element become the responder?
-        onStartShouldSetResponder?: (e: ResponderEvent) => boolean;
-        onStartShouldSetResponderCapture?: (e: ResponderEvent) => boolean;
-
-        // On pointer move, should this element become the responder?
-        onMoveShouldSetResponder?: (e: ResponderEvent) => boolean;
-        onMoveShouldSetResponderCapture?: (e: ResponderEvent) => boolean;
-
-        // On scroll, should this element become the responder? Do no bubble
-        onScrollShouldSetResponder?: (e: ResponderEvent) => boolean;
-        onScrollShouldSetResponderCapture?: (e: ResponderEvent) => boolean;
-
-        // On text selection change, should this element become the responder?
-        onSelectionChangeShouldSetResponder?: (e: ResponderEvent) => boolean;
-        onSelectionChangeShouldSetResponderCapture?: (e: ResponderEvent) => boolean;
-    }
-
-    // @ts-expect-error We override this type in order to provide "target" to onLayout event.
-    type LayoutChangeEvent = NativeSyntheticEvent<{layout: LayoutRectangle; target?: unknown}>;
-
-    interface EventProps extends ClickProps, FocusProps, KeyboardProps, MouseProps, TouchProps, ResponderProps {}
-
-    /**
-     * Shared props
-     * Extracted from react-native-web, packages/react-native-web/src/exports/View/types.js
-     */
-    interface WebSharedProps extends AccessibilityProps, EventProps {
-        dataSet?: Record<string, unknown>;
-        href?: string;
-        hrefAttrs?: {
-            download?: boolean;
-            rel?: string;
-            target?: string;
-        };
-        tabIndex?: 0 | -1;
-        lang?: string;
-    }
-
-    /**
-     * View
-     * Extracted from react-native-web, packages/react-native-web/src/exports/View/types.js
-     */
-    interface WebViewProps extends WebSharedProps {
-        dir?: 'ltr' | 'rtl';
-    }
-    interface ViewProps extends WebViewProps {}
-
-    /**
-     * Text
-     * Extracted from react-native-web, packages/react-native-web/src/exports/Text/types.js
-     */
-    interface WebTextProps extends WebSharedProps {
-        dir?: 'auto' | 'ltr' | 'rtl';
-    }
-    interface TextProps extends WebTextProps {}
-
-    /**
-     * TextInput
-     * Extracted from react-native-web, packages/react-native-web/src/exports/TextInput/types.js
-     */
-    interface WebTextInputProps extends WebSharedProps {
-        dir?: 'auto' | 'ltr' | 'rtl';
-        disabled?: boolean;
-    }
-    interface TextInputProps extends WebTextInputProps {}
-
-    /**
-     * Image
-     * Extracted from react-native-web, packages/react-native-web/src/exports/Image/types.js
-     */
-    interface WebImageProps extends WebSharedProps {
-        dir?: 'ltr' | 'rtl';
-        draggable?: boolean;
-    }
-    interface ImageProps extends WebImageProps {}
-
-    /**
-     * ScrollView
-     * Extracted from react-native-web, packages/react-native-web/src/exports/ScrollView/ScrollViewBase.js
-     */
-    interface WebScrollViewProps extends WebSharedProps {}
-    interface ScrollViewProps extends WebScrollViewProps {}
-
-    /**
-     * Pressable
-     */
-    // https://necolas.github.io/react-native-web/docs/pressable/#interactionstate
-    // Extracted from react-native-web, packages/react-native-web/src/exports/Pressable/index.js
-    interface WebPressableStateCallbackType {
-        readonly focused: boolean;
-        readonly hovered: boolean;
-        readonly pressed: boolean;
-    }
-    interface PressableStateCallbackType extends WebPressableStateCallbackType {}
-
-    // Extracted from react-native-web, packages/react-native-web/src/exports/Pressable/index.js
-    interface WebPressableProps extends WebSharedProps {
-        /** Duration (in milliseconds) from `onPressStart` is called after pointerdown. */
-        delayPressIn?: number;
-        /** Duration (in milliseconds) from `onPressEnd` is called after pointerup. */
-        delayPressOut?: number;
-        /** Called when a touch is moving, after `onPressIn`. */
-        onPressMove?: (event: GestureResponderEvent) => void;
-    }
-    interface PressableProps extends WebPressableProps {}
-
-    /**
-     * Styles
-     */
-    // We extend CSSProperties (alias to "csstype" library) which provides all CSS style properties for Web,
-    // but properties that are already defined on RN won't be overrided / augmented.
-    interface WebStyle extends CSSProperties {
-        // https://necolas.github.io/react-native-web/docs/styling/#non-standard-properties
-        // Exclusive to react-native-web, "pointerEvents" already included on RN
-        animationKeyframes?: string | Record<string, ViewStyle>;
-        writingDirection?: 'auto' | 'ltr' | 'rtl';
-        enableBackground?: string;
-    }
-
-    interface ViewStyle extends WebStyle {}
-    interface TextStyle extends WebStyle {}
-    interface ImageStyle extends WebStyle {}
-    // <------ REACT NATIVE WEB (0.19.12) ------>
-
     interface TextInputFocusEventData extends TargetedEvent {
         text: string;
         eventCount: number;
@@ -408,6 +47,7 @@ declare module 'react-native' {
     namespace Animated {
         interface AnimatedInterpolation<OutputT extends number | string> extends AnimatedWithChildren {
             interpolate(config: InterpolationConfigType): AnimatedInterpolation<OutputT>;
+            // eslint-disable-next-line @typescript-eslint/naming-convention
             __getValue: () => OutputT;
         }
     }
diff --git a/src/types/onyx/Card.ts b/src/types/onyx/Card.ts
index e8f0ec8186e6..24640df9e2da 100644
--- a/src/types/onyx/Card.ts
+++ b/src/types/onyx/Card.ts
@@ -95,6 +95,9 @@ type CardList = Record<string, Card>;
 /** Issue new card flow steps */
 type IssueNewCardStep = ValueOf<typeof CONST.EXPENSIFY_CARD.STEP>;
 
+/** Card spending limit type */
+type CardLimitType = ValueOf<typeof CONST.EXPENSIFY_CARD.LIMIT_TYPES>;
+
 /** Data required to be sent to issue a new card */
 type IssueNewCardData = {
     /** The email address of the cardholder */
@@ -104,7 +107,7 @@ type IssueNewCardData = {
     cardType: ValueOf<typeof CONST.EXPENSIFY_CARD.CARD_TYPE>;
 
     /** Card spending limit type */
-    limitType: ValueOf<typeof CONST.EXPENSIFY_CARD.LIMIT_TYPES>;
+    limitType: CardLimitType;
 
     /** Card spending limit */
     limit: number;
@@ -129,4 +132,4 @@ type IssueNewCard = {
 type WorkspaceCardsList = Record<string, Card>;
 
 export default Card;
-export type {ExpensifyCardDetails, CardList, IssueNewCard, IssueNewCardStep, IssueNewCardData, WorkspaceCardsList};
+export type {ExpensifyCardDetails, CardList, IssueNewCard, IssueNewCardStep, IssueNewCardData, WorkspaceCardsList, CardLimitType};
diff --git a/src/types/onyx/ExpensifyCardSettings.ts b/src/types/onyx/ExpensifyCardSettings.ts
index e5846e1bcab6..05c6667e7c05 100644
--- a/src/types/onyx/ExpensifyCardSettings.ts
+++ b/src/types/onyx/ExpensifyCardSettings.ts
@@ -3,13 +3,13 @@ import type * as OnyxCommon from './OnyxCommon';
 /** Model of Expensify card settings for a workspace */
 type ExpensifyCardSettings = OnyxCommon.OnyxValueWithOfflineFeedback<{
     /** Sum of all posted Expensify Card transactions */
-    currentBalance: number;
+    currentBalance?: number;
 
     /** Remaining limit for Expensify Cards on the workspace */
-    remainingLimit: number;
+    remainingLimit?: number;
 
     /** The total amount of cash back earned thus far */
-    earnedCashback: number;
+    earnedCashback?: number;
 
     /** The date of the last settlement */
     monthlySettlementDate: Date;
diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts
index 3cbc4de2e028..8bcd5932bfc6 100644
--- a/src/types/onyx/OriginalMessage.ts
+++ b/src/types/onyx/OriginalMessage.ts
@@ -245,8 +245,26 @@ type OriginalMessageChangeLog = {
     /** ID of the report */
     reportID?: number;
 
+    /** Old name of the workspace */
+    oldName?: string;
+
+    /** New name of the workspace */
+    newName?: string;
+
+    /** Email of user */
+    email?: string;
+
+    /** Role of user */
+    role?: string;
+
     /** When was it last modified */
     lastModified?: string;
+
+    /** New role of user */
+    newValue?: string;
+
+    /** Old role of user */
+    oldValue?: string;
 };
 
 /** Model of `join policy changelog` report action */
diff --git a/src/types/onyx/SearchResults.ts b/src/types/onyx/SearchResults.ts
index 86797d3c0fa1..e67b5b30f1d6 100644
--- a/src/types/onyx/SearchResults.ts
+++ b/src/types/onyx/SearchResults.ts
@@ -14,13 +14,6 @@ type ListItemType<T extends SearchStatus> = T extends typeof CONST.SEARCH.STATUS
 /** Model of search list item data type */
 type ListItemDataType<T extends SearchStatus> = T extends typeof CONST.SEARCH.STATUS.EXPENSE.ALL ? TransactionListItemType[] : ReportListItemType[];
 
-/** Model of search result section */
-type SectionsType<T extends SearchDataTypes> = T extends typeof CONST.SEARCH.DATA_TYPES.TRANSACTION
-    ? TransactionListItemType[]
-    : T extends typeof CONST.SEARCH.DATA_TYPES.REPORT
-    ? ReportListItemType[]
-    : never;
-
 /** Model of columns to show for search results */
 type ColumnsToShow = {
     /** Whether the category column should be shown */
@@ -39,7 +32,10 @@ type SearchResultsInfo = {
     offset: number;
 
     /** Type of search */
-    type: string;
+    type: SearchDataTypes;
+
+    /** The status filter for the current search */
+    status: SearchStatus;
 
     /** Whether the user can fetch more search results */
     hasMoreResults: boolean;
@@ -66,18 +62,6 @@ type SearchPersonalDetails = {
     login?: string;
 };
 
-/** Model of policy details search result */
-type SearchPolicyDetails = {
-    /** ID of the policy */
-    id: string;
-
-    /** Policy avatar URL */
-    avatarURL: string;
-
-    /** Policy name */
-    name: string;
-};
-
 /** The action that can be performed for the transaction */
 type SearchTransactionAction = ValueOf<typeof CONST.SEARCH.ACTION_TYPES>;
 
@@ -225,9 +209,6 @@ type SearchTransaction = {
     isFromOneTransactionReport?: boolean;
 };
 
-/** Model of account details search result */
-type SearchAccountDetails = Partial<SearchPolicyDetails & SearchPersonalDetails>;
-
 /** Types of searchable transactions */
 type SearchTransactionType = ValueOf<typeof CONST.SEARCH.TRANSACTION_TYPE>;
 
@@ -237,7 +218,7 @@ type SearchResults = {
     search: SearchResultsInfo;
 
     /** Search results data */
-    data: Record<string, SearchTransaction & Record<string, SearchPersonalDetails>> & Record<string, SearchPolicyDetails> & Record<string, SearchReport>;
+    data: Record<string, SearchTransaction & Record<string, SearchPersonalDetails>> & Record<string, SearchReport>;
 
     /** Whether search data is being fetched from server */
     isLoading?: boolean;
@@ -245,16 +226,4 @@ type SearchResults = {
 
 export default SearchResults;
 
-export type {
-    ListItemType,
-    ListItemDataType,
-    SearchTransaction,
-    SearchTransactionType,
-    SearchTransactionAction,
-    SearchPersonalDetails,
-    SearchPolicyDetails,
-    SearchAccountDetails,
-    SearchDataTypes,
-    SearchReport,
-    SectionsType,
-};
+export type {ListItemType, ListItemDataType, SearchTransaction, SearchTransactionType, SearchTransactionAction, SearchPersonalDetails, SearchDataTypes, SearchReport};
diff --git a/tsconfig.json b/tsconfig.json
index c0a588f47a64..572d16798b1e 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,7 +3,7 @@
     "extends": "expo/tsconfig.base",
     "compilerOptions": {
         "module": "commonjs",
-        "types": ["react-native", "jest"],
+        "types": ["react-native", "react-native-web", "jest"],
         "lib": ["DOM", "DOM.Iterable", "ESNext"],
         "isolatedModules": true,
         "strict": true,

From 97df3fd11eae3fd081ef35e41c4da421504a3153 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Thu, 22 Aug 2024 11:05:58 +0700
Subject: [PATCH 07/16] prevent auditor from editing room description

---
 src/libs/ReportUtils.ts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index e7bb9a1bb97c..9f81fcafaec0 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -7017,7 +7017,8 @@ function canEditReportDescription(report: OnyxEntry<Report>, policy: OnyxEntry<P
         isChatRoom(report) &&
         !isChatThread(report) &&
         !isEmpty(policy) &&
-        hasParticipantInArray(report, [currentUserAccountID ?? 0])
+        hasParticipantInArray(report, [currentUserAccountID ?? 0]) &&
+        !isOnlyAllowedToComment(report)
     );
 }
 

From 59abfac9db3a8e3bce18fa964de6c860fe45b29c Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Fri, 23 Aug 2024 09:26:13 +0700
Subject: [PATCH 08/16] update icon and rename isOnlyAllowedToComment

---
 assets/images/user-eye.svg                   | 12 ++++++++++++
 src/components/Icon/Expensicons.ts           |  2 ++
 src/libs/ReportUtils.ts                      |  8 ++++----
 src/libs/actions/Task.ts                     |  2 +-
 src/pages/workspace/WorkspaceMembersPage.tsx |  2 +-
 5 files changed, 20 insertions(+), 6 deletions(-)
 create mode 100644 assets/images/user-eye.svg

diff --git a/assets/images/user-eye.svg b/assets/images/user-eye.svg
new file mode 100644
index 000000000000..2265b4892ded
--- /dev/null
+++ b/assets/images/user-eye.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 20 20">
+  <defs>
+    <style>
+      .cls-1 {
+        fill-rule: evenodd;
+        stroke-width: 0px;
+      }
+    </style>
+  </defs>
+  <path class="cls-1" d="M13.56,5.56c0,1.96-1.59,3.56-3.56,3.56s-3.56-1.59-3.56-3.56,1.59-3.56,3.56-3.56,3.56,1.59,3.56,3.56ZM8.91,17.86s.08.09.13.14h-4.81c-1.42,0-2.22-.44-2.22-1.78,0-3.56,4-6.22,8-6.22,1.17,0,2.35.23,3.42.64-1.78.33-3.37,1.22-4.51,2.49-1.21,1.36-1.21,3.37,0,4.73ZM10.35,14.4c1.1-1.32,2.78-2.15,4.65-2.15s3.56.83,4.65,2.15c.46.56.46,1.4,0,1.96-1.1,1.32-2.78,2.15-4.65,2.15s-3.56-.83-4.65-2.15c-.46-.56-.46-1.4,0-1.96ZM11.12,15.16c.5-.61,1.17-1.09,1.94-1.4-.35.44-.57,1-.57,1.62s.21,1.18.57,1.62c-.77-.31-1.44-.8-1.94-1.4-.1-.12-.1-.31,0-.43ZM18.88,15.59c-.5.61-1.17,1.09-1.94,1.4.35-.44.57-1,.57-1.62s-.21-1.18-.57-1.62c.77.31,1.44.8,1.94,1.4.1.12.1.31,0,.43Z"/>
+</svg>
\ No newline at end of file
diff --git a/src/components/Icon/Expensicons.ts b/src/components/Icon/Expensicons.ts
index ea33af302670..635d0a728422 100644
--- a/src/components/Icon/Expensicons.ts
+++ b/src/components/Icon/Expensicons.ts
@@ -191,6 +191,7 @@ import Workspace from '@assets/images/workspace-default-avatar.svg';
 import Wrench from '@assets/images/wrench.svg';
 import Clear from '@assets/images/x-circle.svg';
 import Zoom from '@assets/images/zoom.svg';
+import UserEye from '@assets/images/user-eye.svg';
 
 export {
     ActiveRoomAvatar,
@@ -386,4 +387,5 @@ export {
     Filters,
     CalendarSolid,
     Filter,
+    UserEye,
 };
diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index 9f81fcafaec0..f439bb93b108 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -1403,7 +1403,7 @@ function isJoinRequestInAdminRoom(report: OnyxEntry<Report>): boolean {
  * Checks if the user can only comment in the provided report (auditor role)
  */
 
-function isOnlyAllowedToComment(report: OnyxEntry<Report>): boolean {
+function isAuditor(report: OnyxEntry<Report>): boolean {
     if (Array.isArray(report?.permissions) && report?.permissions.length > 0) {
         return report?.permissions?.includes(CONST.REPORT.PERMISSIONS.AUDITOR);
     }
@@ -1431,7 +1431,7 @@ function canWriteInReport(report: OnyxEntry<Report>): boolean {
  * Checks if the current user is allowed to comment on the given report.
  */
 function isAllowedToComment(report: OnyxEntry<Report>): boolean {
-    if (isOnlyAllowedToComment(report)) {
+    if (isAuditor(report)) {
         return true;
     }
 
@@ -7018,7 +7018,7 @@ function canEditReportDescription(report: OnyxEntry<Report>, policy: OnyxEntry<P
         !isChatThread(report) &&
         !isEmpty(policy) &&
         hasParticipantInArray(report, [currentUserAccountID ?? 0]) &&
-        !isOnlyAllowedToComment(report)
+        !isAuditor(report)
     );
 }
 
@@ -8024,7 +8024,7 @@ export {
     getArchiveReason,
     getApprovalChain,
     isIndividualInvoiceRoom,
-    isOnlyAllowedToComment,
+    isAuditor,
 };
 
 export type {
diff --git a/src/libs/actions/Task.ts b/src/libs/actions/Task.ts
index 734d21241d8c..18a1797b6044 100644
--- a/src/libs/actions/Task.ts
+++ b/src/libs/actions/Task.ts
@@ -1133,7 +1133,7 @@ function canModifyTask(taskReport: OnyxEntry<OnyxTypes.Report>, sessionAccountID
         return true;
     }
 
-    if (!ReportUtils.canWriteInReport(taskReport) || ReportUtils.isOnlyAllowedToComment(taskReport)) {
+    if (!ReportUtils.canWriteInReport(taskReport) || ReportUtils.isAuditor(taskReport)) {
         return false;
     }
 
diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index 1109c5157425..0ed2bd7b3a5a 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -498,7 +498,7 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
         const auditorOption = {
             text: translate('workspace.people.makeAuditor'),
             value: CONST.POLICY.MEMBERS_BULK_ACTION_TYPES.MAKE_AUDITOR,
-            icon: Expensicons.User,
+            icon: Expensicons.UserEye,
             onSelected: () => changeUserRole(CONST.POLICY.ROLE.AUDITOR),
         };
 

From 429cac3e488bbe25f786ece8a80c803f80d97490 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Fri, 23 Aug 2024 09:46:54 +0700
Subject: [PATCH 09/16] fix linting

---
 src/components/Icon/Expensicons.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/Icon/Expensicons.ts b/src/components/Icon/Expensicons.ts
index 662ce7309f0c..17799324583b 100644
--- a/src/components/Icon/Expensicons.ts
+++ b/src/components/Icon/Expensicons.ts
@@ -182,6 +182,7 @@ import Unlock from '@assets/images/unlock.svg';
 import UploadAlt from '@assets/images/upload-alt.svg';
 import Upload from '@assets/images/upload.svg';
 import UserCheck from '@assets/images/user-check.svg';
+import UserEye from '@assets/images/user-eye.svg';
 import User from '@assets/images/user.svg';
 import Users from '@assets/images/users.svg';
 import VolumeHigh from '@assets/images/volume-high.svg';
@@ -192,7 +193,6 @@ import Workspace from '@assets/images/workspace-default-avatar.svg';
 import Wrench from '@assets/images/wrench.svg';
 import Clear from '@assets/images/x-circle.svg';
 import Zoom from '@assets/images/zoom.svg';
-import UserEye from '@assets/images/user-eye.svg';
 
 export {
     ActiveRoomAvatar,

From e5fb2b724a41de5bbc6144cde0cd3951c83e3bb1 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Fri, 23 Aug 2024 22:24:10 +0700
Subject: [PATCH 10/16] add Auditor badge

---
 src/pages/workspace/WorkspaceMembersPage.tsx | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index 1109c5157425..0eed09ce67af 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -335,9 +335,12 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
 
             const isOwner = policy?.owner === details.login;
             const isAdmin = policyEmployee.role === CONST.POLICY.ROLE.ADMIN;
+            const isAuditor = policyEmployee.role === CONST.POLICY.ROLE.AUDITOR;
             let roleBadge = null;
             if (isOwner || isAdmin) {
                 roleBadge = <Badge text={isOwner ? translate('common.owner') : translate('common.admin')} />;
+            } else if (isAuditor) {
+                roleBadge = <Badge text={translate('common.auditor')} />
             }
 
             result.push({
@@ -506,10 +509,6 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
         const hasAtLeaseOneNoneMemberRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.USER);
         const hasAtLeaseOneNoneAdminRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.ADMIN);
 
-        if (hasAtLeaseOneNonAuditorRole) {
-            options.push(auditorOption);
-        }
-
         if (hasAtLeaseOneNoneMemberRole) {
             options.push(memberOption);
         }
@@ -518,6 +517,10 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
             options.push(adminOption);
         }
 
+        if (hasAtLeaseOneNonAuditorRole) {
+            options.push(auditorOption);
+        }
+
         return options;
     };
 

From 32c5d747e7fab0ecf14f6ca94a357b0625ce9fd0 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Sat, 24 Aug 2024 17:27:23 +0700
Subject: [PATCH 11/16] fix lint

---
 src/pages/workspace/WorkspaceMembersPage.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index 201cd972d282..d322d1c007b4 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -340,7 +340,7 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
             if (isOwner || isAdmin) {
                 roleBadge = <Badge text={isOwner ? translate('common.owner') : translate('common.admin')} />;
             } else if (isAuditor) {
-                roleBadge = <Badge text={translate('common.auditor')} />
+                roleBadge = <Badge text={translate('common.auditor')} />;
             }
 
             result.push({

From 3a64f8269e3467a7f1854a452e30fa39faa46557 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Fri, 6 Sep 2024 10:57:11 +0700
Subject: [PATCH 12/16] address review comment

---
 src/languages/en.ts                              |  4 ++--
 src/languages/es.ts                              |  4 ++--
 src/libs/ReportUtils.ts                          |  2 +-
 src/libs/actions/Policy/Member.ts                |  5 +++--
 src/libs/actions/Task.ts                         |  2 +-
 src/pages/workspace/WorkspaceMembersPage.tsx     | 16 +++++++++-------
 .../WorkspaceMemberDetailsRoleSelectionModal.tsx |  5 +++--
 7 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/src/languages/en.ts b/src/languages/en.ts
index 3a96dcfd2fac..065e88017775 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -2218,8 +2218,8 @@ export default {
             existingConnections: 'Existing connections',
             lastSyncDate: (connectionName: string, formattedDate: string) => `${connectionName} - Last synced ${formattedDate}`,
             memberAlternateText: 'Members can submit and approve reports.',
-            adminAlternateText: 'Auditors can view and comment on reports.',
-            auditorAlternateText: 'Admins have full edit access to all reports and workspace settings.',
+            adminAlternateText: 'Admins have full edit access to all reports and workspace settings.',
+            auditorAlternateText: 'Auditors can view and comment on reports.',
             roleName: (role?: string): string => {
                 switch (role) {
                     case CONST.POLICY.ROLE.ADMIN:
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 79407690735b..292f7cf622b3 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -2251,8 +2251,8 @@ export default {
             lastSyncDate: (connectionName: string, formattedDate: string) => `${connectionName} - Última sincronización ${formattedDate}`,
             topLevel: 'Nivel superior',
             memberAlternateText: 'Los miembros pueden presentar y aprobar informes.',
-            adminAlternateText: 'Los auditores pueden ver y comentar los informes.',
-            auditorAlternateText: 'Los administradores tienen acceso total para editar todos los informes y la configuración del área de trabajo.',
+            adminAlternateText: 'Los administradores tienen acceso total para editar todos los informes y la configuración del área de trabajo.',
+            auditorAlternateText: 'Los auditores pueden ver y comentar los informes.',
             roleName: (role?: string): string => {
                 switch (role) {
                     case CONST.POLICY.ROLE.ADMIN:
diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index 0cd1630575c9..654d700ee3da 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -1394,7 +1394,7 @@ function isJoinRequestInAdminRoom(report: OnyxEntry<Report>): boolean {
 }
 
 /**
- * Checks if the user can only comment in the provided report (auditor role)
+ * Checks if the user has auditor permission in the provided report
  */
 
 function isAuditor(report: OnyxEntry<Report>): boolean {
diff --git a/src/libs/actions/Policy/Member.ts b/src/libs/actions/Policy/Member.ts
index babd38c23651..2ebf56dca386 100644
--- a/src/libs/actions/Policy/Member.ts
+++ b/src/libs/actions/Policy/Member.ts
@@ -1,5 +1,6 @@
 import type {NullishDeep, OnyxCollection, OnyxCollectionInputValue, OnyxEntry, OnyxUpdate} from 'react-native-onyx';
 import Onyx from 'react-native-onyx';
+import type {ValueOf} from 'type-fest';
 import * as API from '@libs/API';
 import type {
     AddMembersToWorkspaceParams,
@@ -41,7 +42,7 @@ type NewCustomUnit = {
 type WorkspaceMembersRoleData = {
     accountID: number;
     email: string;
-    role: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR;
+    role: ValueOf<typeof CONST.POLICY.ROLE>
 };
 
 const allPolicies: OnyxCollection<Policy> = {};
@@ -407,7 +408,7 @@ function removeMembers(accountIDs: number[], policyID: string) {
     API.write(WRITE_COMMANDS.DELETE_MEMBERS_FROM_WORKSPACE, params, {optimisticData, successData, failureData});
 }
 
-function updateWorkspaceMembersRole(policyID: string, accountIDs: number[], newRole: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR) {
+function updateWorkspaceMembersRole(policyID: string, accountIDs: number[], newRole: ValueOf<typeof CONST.POLICY.ROLE>) {
     const previousEmployeeList = {...allPolicies?.[policyID]?.employeeList};
     const memberRoles: WorkspaceMembersRoleData[] = accountIDs.reduce((result: WorkspaceMembersRoleData[], accountID: number) => {
         if (!allPersonalDetails?.[accountID]?.login) {
diff --git a/src/libs/actions/Task.ts b/src/libs/actions/Task.ts
index 18a1797b6044..536f9ef9eff1 100644
--- a/src/libs/actions/Task.ts
+++ b/src/libs/actions/Task.ts
@@ -1132,7 +1132,7 @@ function canModifyTask(taskReport: OnyxEntry<OnyxTypes.Report>, sessionAccountID
     if (sessionAccountID === getTaskOwnerAccountID(taskReport) || sessionAccountID === getTaskAssigneeAccountID(taskReport)) {
         return true;
     }
-
+    // Check if you're allowed to modify the task - anyone that has write access to the report can modify the task, except auditor
     if (!ReportUtils.canWriteInReport(taskReport) || ReportUtils.isAuditor(taskReport)) {
         return false;
     }
diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index 08a9929a0a57..d1f5a7f96382 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -3,6 +3,7 @@ import type {StackScreenProps} from '@react-navigation/stack';
 import lodashIsEqual from 'lodash/isEqual';
 import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
 import type {TextInput} from 'react-native';
+import type {ValueOf} from 'type-fest';
 import {InteractionManager, View} from 'react-native';
 import type {OnyxEntry} from 'react-native-onyx';
 import {useOnyx} from 'react-native-onyx';
@@ -49,6 +50,7 @@ import type {WithPolicyAndFullscreenLoadingProps} from './withPolicyAndFullscree
 import withPolicyAndFullscreenLoading from './withPolicyAndFullscreenLoading';
 import WorkspacePageWithSections from './WorkspacePageWithSections';
 
+
 type WorkspaceMembersPageProps = WithPolicyAndFullscreenLoadingProps & WithCurrentUserPersonalDetailsProps & StackScreenProps<FullScreenNavigatorParamList, typeof SCREENS.WORKSPACE.MEMBERS>;
 
 /**
@@ -453,7 +455,7 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
         return <View style={[styles.peopleRow, styles.userSelectNone, styles.ph9, styles.pv3, styles.pb5]}>{header}</View>;
     };
 
-    const changeUserRole = (role: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR) => {
+    const changeUserRole = (role: ValueOf<typeof CONST.POLICY.ROLE>) => {
         if (!isEmptyObject(errors)) {
             return;
         }
@@ -506,19 +508,19 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
             onSelected: () => changeUserRole(CONST.POLICY.ROLE.AUDITOR),
         };
 
-        const hasAtLeaseOneNonAuditorRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.AUDITOR);
-        const hasAtLeaseOneNoneMemberRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.USER);
-        const hasAtLeaseOneNoneAdminRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.ADMIN);
+        const hasAtLeastOneNonAuditorRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.AUDITOR);
+        const hasAtLeastOneNoneMemberRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.USER);
+        const hasAtLeastOneNoneAdminRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.ADMIN);
 
-        if (hasAtLeaseOneNoneMemberRole) {
+        if (hasAtLeastOneNoneMemberRole) {
             options.push(memberOption);
         }
 
-        if (hasAtLeaseOneNoneAdminRole) {
+        if (hasAtLeastOneNoneAdminRole) {
             options.push(adminOption);
         }
 
-        if (hasAtLeaseOneNonAuditorRole) {
+        if (hasAtLeastOneNonAuditorRole) {
             options.push(auditorOption);
         }
 
diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
index 2474029c3971..47930660b00e 100644
--- a/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
+++ b/src/pages/workspace/members/WorkspaceMemberDetailsRoleSelectionModal.tsx
@@ -1,5 +1,6 @@
 import React from 'react';
 import {View} from 'react-native';
+import type {ValueOf} from 'type-fest';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import Modal from '@components/Modal';
 import ScreenWrapper from '@components/ScreenWrapper';
@@ -10,11 +11,11 @@ import useThemeStyles from '@hooks/useThemeStyles';
 import CONST from '@src/CONST';
 
 type ListItemType = {
-    value: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR;
+    value: ValueOf<typeof CONST.POLICY.ROLE>;
     text: string;
     alternateText: string;
     isSelected: boolean;
-    keyForList: typeof CONST.POLICY.ROLE.ADMIN | typeof CONST.POLICY.ROLE.USER | typeof CONST.POLICY.ROLE.AUDITOR;
+    keyForList: ValueOf<typeof CONST.POLICY.ROLE>;
 };
 
 type WorkspaceMemberDetailsPageProps = {

From b286926d4771a3efa3928468d559192c9c1b7ff6 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Fri, 6 Sep 2024 11:20:09 +0700
Subject: [PATCH 13/16] address lint

---
 src/libs/actions/Policy/Member.ts            | 2 +-
 src/pages/workspace/WorkspaceMembersPage.tsx | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/libs/actions/Policy/Member.ts b/src/libs/actions/Policy/Member.ts
index 2ebf56dca386..146562990ca0 100644
--- a/src/libs/actions/Policy/Member.ts
+++ b/src/libs/actions/Policy/Member.ts
@@ -42,7 +42,7 @@ type NewCustomUnit = {
 type WorkspaceMembersRoleData = {
     accountID: number;
     email: string;
-    role: ValueOf<typeof CONST.POLICY.ROLE>
+    role: ValueOf<typeof CONST.POLICY.ROLE>;
 };
 
 const allPolicies: OnyxCollection<Policy> = {};
diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index d1f5a7f96382..c261215ffd1f 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -3,10 +3,10 @@ import type {StackScreenProps} from '@react-navigation/stack';
 import lodashIsEqual from 'lodash/isEqual';
 import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
 import type {TextInput} from 'react-native';
-import type {ValueOf} from 'type-fest';
 import {InteractionManager, View} from 'react-native';
 import type {OnyxEntry} from 'react-native-onyx';
 import {useOnyx} from 'react-native-onyx';
+import type {ValueOf} from 'type-fest';
 import Badge from '@components/Badge';
 import Button from '@components/Button';
 import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu';
@@ -50,7 +50,6 @@ import type {WithPolicyAndFullscreenLoadingProps} from './withPolicyAndFullscree
 import withPolicyAndFullscreenLoading from './withPolicyAndFullscreenLoading';
 import WorkspacePageWithSections from './WorkspacePageWithSections';
 
-
 type WorkspaceMembersPageProps = WithPolicyAndFullscreenLoadingProps & WithCurrentUserPersonalDetailsProps & StackScreenProps<FullScreenNavigatorParamList, typeof SCREENS.WORKSPACE.MEMBERS>;
 
 /**

From 5109afa0d9f42657f544e9acbf0157e6196c70fc Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Sat, 7 Sep 2024 21:02:42 +0700
Subject: [PATCH 14/16] address comment

---
 src/libs/ReportUtils.ts  | 1 -
 src/libs/actions/Task.ts | 4 ++--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index 2f4a56bdab73..ba15b8d5ed28 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -1395,7 +1395,6 @@ function isJoinRequestInAdminRoom(report: OnyxEntry<Report>): boolean {
 /**
  * Checks if the user has auditor permission in the provided report
  */
-
 function isAuditor(report: OnyxEntry<Report>): boolean {
     if (Array.isArray(report?.permissions) && report?.permissions.length > 0) {
         return report?.permissions?.includes(CONST.REPORT.PERMISSIONS.AUDITOR);
diff --git a/src/libs/actions/Task.ts b/src/libs/actions/Task.ts
index fb5226506911..b75270b95507 100644
--- a/src/libs/actions/Task.ts
+++ b/src/libs/actions/Task.ts
@@ -1116,7 +1116,7 @@ function getTaskOwnerAccountID(taskReport: OnyxEntry<OnyxTypes.Report>): number
 }
 
 /**
- * Check if you're allowed to modify the task - anyone that has write access to the report can modify the task
+ * Check if you're allowed to modify the task - anyone that has write access to the report can modify the task, except auditor
  */
 function canModifyTask(taskReport: OnyxEntry<OnyxTypes.Report>, sessionAccountID: number): boolean {
     if (ReportUtils.isCanceledTaskReport(taskReport)) {
@@ -1132,7 +1132,7 @@ function canModifyTask(taskReport: OnyxEntry<OnyxTypes.Report>, sessionAccountID
     if (sessionAccountID === getTaskOwnerAccountID(taskReport) || sessionAccountID === getTaskAssigneeAccountID(taskReport)) {
         return true;
     }
-    // Check if you're allowed to modify the task - anyone that has write access to the report can modify the task, except auditor
+
     if (!ReportUtils.canWriteInReport(taskReport) || ReportUtils.isAuditor(taskReport)) {
         return false;
     }

From 1d6aecc487a3df3305720c839da9ea5b67374f8b Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Tue, 10 Sep 2024 10:21:15 +0700
Subject: [PATCH 15/16] address comment

---
 src/pages/workspace/WorkspaceMembersPage.tsx | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx
index c261215ffd1f..64f57086ebb8 100644
--- a/src/pages/workspace/WorkspaceMembersPage.tsx
+++ b/src/pages/workspace/WorkspaceMembersPage.tsx
@@ -508,14 +508,14 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson
         };
 
         const hasAtLeastOneNonAuditorRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.AUDITOR);
-        const hasAtLeastOneNoneMemberRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.USER);
-        const hasAtLeastOneNoneAdminRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.ADMIN);
+        const hasAtLeastOneNonMemberRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.USER);
+        const hasAtLeastOneNonAdminRole = selectedEmployeesRoles.some((role) => role !== CONST.POLICY.ROLE.ADMIN);
 
-        if (hasAtLeastOneNoneMemberRole) {
+        if (hasAtLeastOneNonMemberRole) {
             options.push(memberOption);
         }
 
-        if (hasAtLeastOneNoneAdminRole) {
+        if (hasAtLeastOneNonAdminRole) {
             options.push(adminOption);
         }
 

From e6bd7aaf56a7c4b6965ed9406fa7c48b408bc1f2 Mon Sep 17 00:00:00 2001
From: Hans <visaocuoitroi193@gmail.com>
Date: Fri, 13 Sep 2024 15:12:41 +0700
Subject: [PATCH 16/16] update isAudiot func

---
 src/libs/ReportUtils.ts | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index b78427eced05..5dcc12dae178 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -1419,15 +1419,15 @@ function isJoinRequestInAdminRoom(report: OnyxEntry<Report>): boolean {
  * Checks if the user has auditor permission in the provided report
  */
 function isAuditor(report: OnyxEntry<Report>): boolean {
-    if (Array.isArray(report?.permissions) && report?.permissions.length > 0) {
-        return report?.permissions?.includes(CONST.REPORT.PERMISSIONS.AUDITOR);
-    }
-
     if (report?.policyID) {
         const policy = getPolicy(report.policyID);
         return PolicyUtils.isPolicyAuditor(policy);
     }
 
+    if (Array.isArray(report?.permissions) && report?.permissions.length > 0) {
+        return report?.permissions?.includes(CONST.REPORT.PERMISSIONS.AUDITOR);
+    }
+
     return false;
 }
 
