Skip to content

Commit

Permalink
manually add ~ alias to all previous absolute imports in frontend
Browse files Browse the repository at this point in the history
  • Loading branch information
DaoDaoNoCode committed Feb 22, 2023
1 parent 35e4587 commit dd2cb43
Show file tree
Hide file tree
Showing 47 changed files with 87 additions and 81 deletions.
2 changes: 1 addition & 1 deletion frontend/src/__tests__/notebookControllerUtils.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { usernameTranslate } from 'utilities/notebookControllerUtils';
import { usernameTranslate } from '~/utilities/notebookControllerUtils';

const validUnameRegex = new RegExp('^[a-z]{1}[a-z0-9-]{1,62}$');

Expand Down
8 changes: 4 additions & 4 deletions frontend/src/api/network/inferenceServices.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import {
k8sListResource,
k8sUpdateResource,
} from '@openshift/dynamic-plugin-sdk-utils';
import { InferenceServiceModel } from 'api/models';
import { InferenceServiceKind, K8sStatus } from 'k8sTypes';
import { CreatingInferenceServiceObject } from 'pages/modelServing/screens/types';
import { translateDisplayNameForK8s } from 'pages/projects/utils';
import { InferenceServiceModel } from '~/api/models';
import { InferenceServiceKind, K8sStatus } from '~/k8sTypes';
import { CreatingInferenceServiceObject } from '~/pages/modelServing/screens/types';
import { translateDisplayNameForK8s } from '~/pages/projects/utils';
import { getModelServingProjects } from './projects';

const assembleInferenceService = (
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/api/network/notebooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { ROOT_MOUNT_PATH } from '~/pages/projects/pvc/const';
import { translateDisplayNameForK8s } from '~/pages/projects/utils';
import { assemblePodSpecOptions } from './utils';
import { getTolerationPatch, TolerationChanges } from '~/utilities/tolerations';
import { mergeK8sQueryParams } from 'api/apiMergeUtils';
import { mergeK8sQueryParams } from '~/api/apiMergeUtils';

const assembleNotebook = (data: StartNotebookData, username: string): NotebookKind => {
const {
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/api/network/roleBindings.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { k8sCreateResource, k8sGetResource } from '@openshift/dynamic-plugin-sdk-utils';
import { getModelRoleBinding, getModelServiceAccountName } from 'pages/modelServing/utils';
import { getModelRoleBinding, getModelServiceAccountName } from '~/pages/modelServing/utils';
import { RoleBindingKind } from '~/k8sTypes';
import { RoleBindingModel } from '~/api/models';

Expand Down
2 changes: 1 addition & 1 deletion frontend/src/api/network/secrets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { SecretModel } from '~/api/models';
import { genRandomChars } from '~/utilities/string';
import { translateDisplayNameForK8s } from '~/pages/projects/utils';
import { getModelServiceAccountName } from '~/pages/modelServing/utils';
import { mergeK8sQueryParams } from 'api/apiMergeUtils';
import { mergeK8sQueryParams } from '~/api/apiMergeUtils';

export const DATA_CONNECTION_PREFIX = 'aws-connection';

Expand Down
2 changes: 1 addition & 1 deletion frontend/src/api/network/serviceAccounts.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { k8sCreateResource } from '@openshift/dynamic-plugin-sdk-utils';
import { getModelServiceAccountName } from 'pages/modelServing/utils';
import { getModelServiceAccountName } from '~/pages/modelServing/utils';
import { ServiceAccountModel } from '~/api/models';
import { ServiceAccountKind } from '~/k8sTypes';

Expand Down
8 changes: 4 additions & 4 deletions frontend/src/api/network/servingRuntimes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import {
} from '@openshift/dynamic-plugin-sdk-utils';
import { ServingRuntimeModel } from '~/api/models';
import { ConfigMapKind, ServingRuntimeKind } from '~/k8sTypes';
import { CreatingServingRuntimeObject } from 'pages/modelServing/screens/types';
import { getModelServingRuntimeName } from 'pages/modelServing/utils';
import { CreatingServingRuntimeObject } from '~/pages/modelServing/screens/types';
import { getModelServingRuntimeName } from '~/pages/modelServing/utils';
import { getModelServingProjects } from './projects';
import { assemblePodSpecOptions } from './utils';
import { ContainerResources } from '~/types';
import { getDefaultServingRuntime } from 'pages/modelServing/screens/projects/utils';
import { DEFAULT_MODEL_SERVING_TEMPLATE } from 'pages/modelServing/screens/const';
import { getDefaultServingRuntime } from '~/pages/modelServing/screens/projects/utils';
import { DEFAULT_MODEL_SERVING_TEMPLATE } from '~/pages/modelServing/screens/const';

const assembleServingRuntime = (
data: CreatingServingRuntimeObject,
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/FormGroupSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
HintBody,
} from '@patternfly/react-core';
import { MultiSelection } from './MultiSelection';
import { GroupsConfigField, MenuItemStatus } from 'pages/groupSettings/groupTypes';
import { GroupsConfigField, MenuItemStatus } from '~/pages/groupSettings/groupTypes';

type FormGroupSettingsProps = {
title: string;
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/MultiSelection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
SelectOption,
SelectVariant,
} from '@patternfly/react-core';
import { MenuItemStatus } from 'pages/groupSettings/groupTypes';
import { MenuItemStatus } from '~/pages/groupSettings/groupTypes';

type MultiSelectionProps = {
value: MenuItemStatus[];
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/SupportedAppTitle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react';
import { Button, CardTitle, Tooltip } from '@patternfly/react-core';
import { OdhApplication } from '~/types';
import { isRedHatSupported } from '~/utilities/utils';
import { ODH_PRODUCT_NAME } from 'utilities/const';
import { ODH_PRODUCT_NAME } from '~/utilities/const';

type SupportedAppTitleProps = {
odhApp: OdhApplication;
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/BYONImages/BYONImagesTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import {
IAction,
} from '@patternfly/react-table';
import { CubesIcon, SearchIcon } from '@patternfly/react-icons';
import { BYONImage } from 'types';
import { BYONImage } from '~/types';
import { ImportImageModal } from './ImportImageModal';
import { relativeTime } from '~/utilities/time';
import './BYONImagesTable.scss';
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/BYONImages/DeleteBYONImageModal.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { Button, Modal, ModalVariant } from '@patternfly/react-core';
import { deleteBYONImage } from '~/services/imagesService';
import { BYONImage } from 'types';
import { BYONImage } from '~/types';
export type ImportImageModalProps = {
isOpen: boolean;
image: BYONImage;
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/BYONImages/ImportImageModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
} from '@patternfly/react-core';
import { Caption, TableComposable, Tbody, Thead, Th, Tr } from '@patternfly/react-table';
import { importBYONImage } from '~/services/imagesService';
import { ResponseStatus, BYONImagePackage } from 'types';
import { ResponseStatus, BYONImagePackage } from '~/types';
import { EditStepTableRow } from './EditStepTableRow';
import { CubesIcon, ExclamationCircleIcon, PlusCircleIcon } from '@patternfly/react-icons';
import { addNotification } from '~/redux/actions/actions';
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/BYONImages/UpdateImageModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { Caption, TableComposable, Tbody, Thead, Th, Tr } from '@patternfly/reac
import { CubesIcon, ExclamationCircleIcon, PlusCircleIcon } from '@patternfly/react-icons';
import { updateBYONImage } from '~/services/imagesService';
import { EditStepTableRow } from './EditStepTableRow';
import { BYONImage, BYONImagePackage } from 'types';
import { BYONImage, BYONImagePackage } from '~/types';
import { addNotification } from '~/redux/actions/actions';
import { useAppDispatch } from '~/redux/hooks';

Expand Down
7 changes: 4 additions & 3 deletions frontend/src/pages/groupSettings/GroupSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ import {
} from '@patternfly/react-core';
import ApplicationsPage from '~/pages/ApplicationsPage';
import { GroupsConfigField, MenuItemStatus } from './groupTypes';
import { useWatchGroups } from 'utilities/useWatchGroups';
import { FormGroupSettings } from 'components/FormGroupSettings';
import { useWatchGroups } from '~/utilities/useWatchGroups';
import { FormGroupSettings } from '~/components/FormGroupSettings';
import { isGroupEmpty } from '~/utilities/utils';

import './GroupSettings.scss';
import { isGroupEmpty } from 'utilities/utils';

const GroupSettings: React.FC = () => {
const {
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/learningCenter/ProviderTypeFilters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import FilterSidePanelCategoryItem from '~/components/FilterSidePanelCategoryIte
import { removeQueryArgument, setQueryArgument } from '~/utilities/router';
import { PROVIDER_TYPE_FILTER_KEY } from './const';
import { useQueryFilters } from './useQueryFilters';
import { ODH_PRODUCT_NAME } from 'utilities/const';
import { ODH_PRODUCT_NAME } from '~/utilities/const';

type ProviderTypeFiltersProps = {
docApps: OdhDocument[];
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/modelServing/screens/const.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ServingRuntimeKind } from 'k8sTypes';
import { ServingRuntimeKind } from '~/k8sTypes';
import { ServingRuntimeSize, TimeframeStepType, TimeframeTimeType, TimeframeTitle } from './types';

export const DEFAULT_MODEL_SERVER_SIZES: ServingRuntimeSize[] = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import InferenceServiceEndpoint from './InferenceServiceEndpoint';
import InferenceServiceProject from './InferenceServiceProject';
import InferenceServiceStatus from './InferenceServiceStatus';
import { Link } from 'react-router-dom';
import useModelMetricsEnabled from 'pages/modelServing/useModelMetricsEnabled';
import useModelMetricsEnabled from '~/pages/modelServing/useModelMetricsEnabled';

type InferenceServiceTableRowProps = {
obj: InferenceServiceKind;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
DescriptionListGroup,
DescriptionListTerm,
} from '@patternfly/react-core';
import { InferenceServiceKind } from 'k8sTypes';
import { InferenceServiceKind } from '~/k8sTypes';

type InternalServicePopoverContentProps = {
inferenceService: InferenceServiceKind;
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/modelServing/screens/metrics/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { SelectOptionObject } from '@patternfly/react-core';
import { TimeframeTitle } from '~/pages/modelServing/screens/types';
import { InferenceServiceKind } from '~/k8sTypes';
import { ModelServingMetricType } from './ModelServingMetricsContext';
import { DashboardConfig } from 'types';
import { DashboardConfig } from '~/types';

export const isModelMetricsEnabled = (
dashboardNamespace: string,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import {
StackItem,
TextInput,
} from '@patternfly/react-core';
import { DataConnection, UpdateObjectAtPropAndValue } from 'pages/projects/types';
import { DataConnection, UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import { CreatingInferenceServiceObject } from '~/pages/modelServing/screens/types';
import { getDataConnectionDisplayName } from 'pages/projects/screens/detail/data-connections/utils';
import { getDataConnectionDisplayName } from '~/pages/projects/screens/detail/data-connections/utils';
import './DataConnectionExistingField.scss';

type DataConnectionExistingFieldType = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import {
StackItem,
TextInput,
} from '@patternfly/react-core';
import { DataConnection, UpdateObjectAtPropAndValue } from 'pages/projects/types';
import { DataConnection, UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import {
CreatingInferenceServiceObject,
InferenceServiceStorageType,
} from '~/pages/modelServing/screens/types';
import AWSField from 'pages/projects/dataConnections/AWSField';
import useDataConnections from 'pages/projects/screens/detail/data-connections/useDataConnections';
import AWSField from '~/pages/projects/dataConnections/AWSField';
import useDataConnections from '~/pages/projects/screens/detail/data-connections/useDataConnections';
import '~/pages/projects/screens/detail/storage/ManageStorageModal.scss';
import DataConnectionExistingField from './DataConnectionExistingField';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Alert, FormGroup, Select, SelectOption, Skeleton } from '@patternfly/react-core';
import useModelServingProjects from './useModelServingProjects';
import { getProjectDisplayName } from 'pages/projects/utils';
import { getProjectDisplayName } from '~/pages/projects/utils';

type ExistingProjectFieldProps = {
fieldId: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as React from 'react';
import { Alert, FormGroup, Select, SelectOption, Skeleton } from '@patternfly/react-core';
import { UpdateObjectAtPropAndValue } from 'pages/projects/types';
import { UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import { CreatingInferenceServiceObject } from '~/pages/modelServing/screens/types';
import useModelFramework from './useModelFramework';
import { SupportedModelFormats } from 'k8sTypes';
import { SupportedModelFormats } from '~/k8sTypes';

type InferenceServiceFrameworkSectionProps = {
data: CreatingInferenceServiceObject;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,18 @@ import {
} from '@patternfly/react-core';
import { useCreateInferenceServiceObject } from '~/pages/modelServing/screens/projects/utils';
import InferenceServiceFrameworkSection from './InferenceServiceFrameworkSection';
import { assembleSecret, createInferenceService, createSecret, updateInferenceService } from 'api';
import { InferenceServiceKind, ProjectKind, SecretKind, ServingRuntimeKind } from 'k8sTypes';
import {
assembleSecret,
createInferenceService,
createSecret,
updateInferenceService,
} from '~/api';
import { InferenceServiceKind, ProjectKind, SecretKind, ServingRuntimeKind } from '~/k8sTypes';
import ProjectSection from './ProjectSection';
import { DataConnection } from 'pages/projects/types';
import { DataConnection } from '~/pages/projects/types';
import DataConnectionSection from './DataConnectionSection';
import { InferenceServiceStorageType } from '~/pages/modelServing/screens/types';
import { isAWSValid } from 'pages/projects/screens/spawner/spawnerUtils';
import { isAWSValid } from '~/pages/projects/screens/spawner/spawnerUtils';

type ManageInferenceServiceModalProps = {
isOpen: boolean;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import * as React from 'react';
import { FormGroup, Text } from '@patternfly/react-core';
import { CreatingInferenceServiceObject } from '~/pages/modelServing/screens/types';
import { UpdateObjectAtPropAndValue } from 'pages/projects/types';
import { getProjectDisplayName } from 'pages/projects/utils';
import { listServingRuntimes } from 'api';
import ExistingProjectField from 'pages/modelServing/screens/projects/InferenceServiceModal/ExistingProjectField';
import { InferenceServiceKind, ProjectKind } from 'k8sTypes';
import { UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import { getProjectDisplayName } from '~/pages/projects/utils';
import { listServingRuntimes } from '~/api';
import ExistingProjectField from '~/pages/modelServing/screens/projects/InferenceServiceModal/ExistingProjectField';
import { InferenceServiceKind, ProjectKind } from '~/k8sTypes';
import { defaultInferenceService } from '~/pages/modelServing/screens/projects/utils';

type ProjectSectionType = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getServingRuntime } from 'api';
import { SupportedModelFormats } from 'k8sTypes';
import { getServingRuntime } from '~/api';
import { SupportedModelFormats } from '~/k8sTypes';
import * as React from 'react';

const useModelFramework = (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getModelServingProjectsAvailable } from 'api';
import { ProjectKind } from 'k8sTypes';
import { getModelServingProjectsAvailable } from '~/api';
import { ProjectKind } from '~/k8sTypes';
import * as React from 'react';

const useModelServingProjects = (): [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import { allSettledPromises } from '~/utilities/allSettledPromises';
import ServingRuntimeReplicaSection from './ServingRuntimeReplicaSection';
import ServingRuntimeSizeSection from './ServingRuntimeSizeSection';
import ServingRuntimeTokenSection from './ServingRuntimeTokenSection';
import { translateDisplayNameForK8s } from 'pages/projects/utils';
import { translateDisplayNameForK8s } from '~/pages/projects/utils';
import { requestsUnderLimits, resourcesArePositive } from '~/pages/modelServing/utils';

type ManageServingRuntimeModalProps = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import * as React from 'react';
import { FormGroup, FormSection, NumberInput } from '@patternfly/react-core';
import { UpdateObjectAtPropAndValue } from 'pages/projects/types';
import { UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import { CreatingServingRuntimeObject } from '~/pages/modelServing/screens/types';
import { isHTMLInputElement, normalizeBetween } from 'utilities/utils';
import { isHTMLInputElement, normalizeBetween } from '~/utilities/utils';

type ServingRuntimeReplicaSectionProps = {
data: CreatingServingRuntimeObject;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from 'react';
import { FormGroup, Grid } from '@patternfly/react-core';
import IndentSection from 'pages/projects/components/IndentSection';
import { UpdateObjectAtPropAndValue } from 'pages/projects/types';
import IndentSection from '~/pages/projects/components/IndentSection';
import { UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import { CreatingServingRuntimeObject } from '~/pages/modelServing/screens/types';
import { ContainerResourceAttributes, ContainerResources } from '~/types';
import CPUField from '~/components/CPUField';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
Stack,
StackItem,
} from '@patternfly/react-core';
import { UpdateObjectAtPropAndValue } from 'pages/projects/types';
import { UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import {
CreatingServingRuntimeObject,
ServingRuntimeSize,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import {
TextInput,
ValidatedOptions,
} from '@patternfly/react-core';
import { UpdateObjectAtPropAndValue } from 'pages/projects/types';
import { UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import {
CreatingServingRuntimeObject,
ServingRuntimeToken,
} from '~/pages/modelServing/screens/types';
import { ExclamationCircleIcon, MinusCircleIcon } from '@patternfly/react-icons';
import { translateDisplayNameForK8s } from 'pages/projects/utils';
import { translateDisplayNameForK8s } from '~/pages/projects/utils';

type ServingRuntimeTokenInputProps = {
data: CreatingServingRuntimeObject;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import {
Stack,
StackItem,
} from '@patternfly/react-core';
import IndentSection from 'pages/projects/components/IndentSection';
import { UpdateObjectAtPropAndValue } from 'pages/projects/types';
import IndentSection from '~/pages/projects/components/IndentSection';
import { UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import { CreatingServingRuntimeObject } from '~/pages/modelServing/screens/types';
import { PlusCircleIcon } from '@patternfly/react-icons';
import ServingRuntimeTokenInput from './ServingRuntimeTokenInput';
Expand Down
16 changes: 8 additions & 8 deletions frontend/src/pages/modelServing/screens/projects/utils.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import * as React from 'react';
import * as _ from 'lodash';
import { ConfigMapKind, InferenceServiceKind, SecretKind, ServingRuntimeKind } from 'k8sTypes';
import { UpdateObjectAtPropAndValue } from 'pages/projects/types';
import useGenericObjectState from 'utilities/useGenericObjectState';
import { ConfigMapKind, InferenceServiceKind, SecretKind, ServingRuntimeKind } from '~/k8sTypes';
import { UpdateObjectAtPropAndValue } from '~/pages/projects/types';
import useGenericObjectState from '~/utilities/useGenericObjectState';
import {
CreatingInferenceServiceObject,
CreatingServingRuntimeObject,
InferenceServiceStorageType,
ServingRuntimeSize,
} from '~/pages/modelServing/screens/types';
import { ContainerResourceAttributes, DashboardConfig, GpuSettingString } from 'types';
import { ContainerResourceAttributes, DashboardConfig, GpuSettingString } from '~/types';
import {
DEFAULT_MODEL_SERVER_SIZES,
DEFAULT_MODEL_SERVING_TEMPLATE,
} from '~/pages/modelServing/screens/const';
import { useAppContext } from 'app/AppContext';
import { useDeepCompareMemoize } from 'utilities/useDeepCompareMemoize';
import { EMPTY_AWS_SECRET_DATA } from 'pages/projects/dataConnections/const';
import { getDisplayNameFromK8sResource } from 'pages/projects/utils';
import { useAppContext } from '~/app/AppContext';
import { useDeepCompareMemoize } from '~/utilities/useDeepCompareMemoize';
import { EMPTY_AWS_SECRET_DATA } from '~/pages/projects/dataConnections/const';
import { getDisplayNameFromK8sResource } from '~/pages/projects/utils';
import YAML from 'yaml';
import { ProjectDetailsContext } from '~/pages/projects/ProjectDetailsContext';

Expand Down
Loading

0 comments on commit dd2cb43

Please sign in to comment.